let D be non empty set ; for f being BinominativeFunction of D
for p, r being PartialPredicate of D st f coincides_with p & dom p c= dom f & <*(PP_and (r,p)),f,p*> is SFHT of D holds
<*p,(PP_while (r,f)),(PP_and ((PP_not r),p))*> is SFHT of D
let f be BinominativeFunction of D; for p, r being PartialPredicate of D st f coincides_with p & dom p c= dom f & <*(PP_and (r,p)),f,p*> is SFHT of D holds
<*p,(PP_while (r,f)),(PP_and ((PP_not r),p))*> is SFHT of D
let p, r be PartialPredicate of D; ( f coincides_with p & dom p c= dom f & <*(PP_and (r,p)),f,p*> is SFHT of D implies <*p,(PP_while (r,f)),(PP_and ((PP_not r),p))*> is SFHT of D )
set a = PP_and (r,p);
set F = PP_while (r,f);
set q = PP_and ((PP_not r),p);
assume that
A1:
f coincides_with p
and
A2:
dom p c= dom f
and
A3:
<*(PP_and (r,p)),f,p*> is SFHT of D
; <*p,(PP_while (r,f)),(PP_and ((PP_not r),p))*> is SFHT of D
A4:
dom (PP_and (r,p)) = { d where d is Element of D : ( ( d in dom r & r . d = FALSE ) or ( d in dom p & p . d = FALSE ) or ( d in dom r & r . d = TRUE & d in dom p & p . d = TRUE ) ) }
by PARTPR_1:16;
for d being Element of D st d in dom p & p . d = TRUE & d in dom (PP_while (r,f)) & (PP_while (r,f)) . d in dom (PP_and ((PP_not r),p)) holds
(PP_and ((PP_not r),p)) . ((PP_while (r,f)) . d) = TRUE
proof
let d be
Element of
D;
( d in dom p & p . d = TRUE & d in dom (PP_while (r,f)) & (PP_while (r,f)) . d in dom (PP_and ((PP_not r),p)) implies (PP_and ((PP_not r),p)) . ((PP_while (r,f)) . d) = TRUE )
assume that A5:
d in dom p
and A6:
p . d = TRUE
and A7:
d in dom (PP_while (r,f))
and A8:
(PP_while (r,f)) . d in dom (PP_and ((PP_not r),p))
;
(PP_and ((PP_not r),p)) . ((PP_while (r,f)) . d) = TRUE
consider n being
Nat such that A9:
for
i being
Nat st
i <= n - 1 holds
(
d in dom (r * (iter (f,i))) &
(r * (iter (f,i))) . d = TRUE )
and A10:
d in dom (r * (iter (f,n)))
and A11:
(r * (iter (f,n))) . d = FALSE
and A12:
(PP_while (r,f)) . d = (iter (f,n)) . d
by A7, PARTPR_2:def 15;
reconsider I =
iter (
f,
n) as
BinominativeFunction of
D by FUNCT_7:86;
A13:
d in dom I
by A10, FUNCT_1:11;
A14:
(r * I) . d = r . (I . d)
by A10, FUNCT_1:12;
per cases
( ( (PP_while (r,f)) . d in dom (PP_not r) & (PP_not r) . ((PP_while (r,f)) . d) = FALSE ) or ( (PP_while (r,f)) . d in dom (PP_not r) & (PP_not r) . ((PP_while (r,f)) . d) = TRUE & (PP_while (r,f)) . d in dom p & p . ((PP_while (r,f)) . d) = TRUE ) or ( (PP_while (r,f)) . d in dom p & p . ((PP_while (r,f)) . d) = FALSE ) )
by A8, PARTPR_1:17;
suppose that A15:
(PP_while (r,f)) . d in dom p
and A16:
p . ((PP_while (r,f)) . d) = FALSE
;
(PP_and ((PP_not r),p)) . ((PP_while (r,f)) . d) = TRUE
for
i being
Nat st
i <= n &
d in dom (iter (f,i)) &
(iter (f,i)) . d in dom p holds
p . ((iter (f,i)) . d) = TRUE
proof
defpred S1[
Nat]
means ( $1
<= n implies for
i being
Nat st
i <= $1 holds
(
(iter (f,i)) . d in dom p &
d in dom (iter (f,i)) &
p . ((iter (f,i)) . d) = TRUE ) );
A17:
S1[
0 ]
proof
assume
0 <= n
;
for i being Nat st i <= 0 holds
( (iter (f,i)) . d in dom p & d in dom (iter (f,i)) & p . ((iter (f,i)) . d) = TRUE )
let i be
Nat;
( i <= 0 implies ( (iter (f,i)) . d in dom p & d in dom (iter (f,i)) & p . ((iter (f,i)) . d) = TRUE ) )
assume A18:
i <= 0
;
( (iter (f,i)) . d in dom p & d in dom (iter (f,i)) & p . ((iter (f,i)) . d) = TRUE )
A19:
i = 0
by A18, NAT_1:3;
A20:
iter (
f,
0)
= id (field f)
by FUNCT_7:68;
dom f c= field f
by XBOOLE_1:7;
hence
(
(iter (f,i)) . d in dom p &
d in dom (iter (f,i)) &
p . ((iter (f,i)) . d) = TRUE )
by A2, A5, A6, A19, A20, FUNCT_1:18;
verum
end;
A21:
for
k being
Nat st
S1[
k] holds
S1[
k + 1]
proof
let k be
Nat;
( S1[k] implies S1[k + 1] )
assume that A22:
S1[
k]
and A23:
k + 1
<= n
;
for i being Nat st i <= k + 1 holds
( (iter (f,i)) . d in dom p & d in dom (iter (f,i)) & p . ((iter (f,i)) . d) = TRUE )
let i be
Nat;
( i <= k + 1 implies ( (iter (f,i)) . d in dom p & d in dom (iter (f,i)) & p . ((iter (f,i)) . d) = TRUE ) )
assume A24:
i <= k + 1
;
( (iter (f,i)) . d in dom p & d in dom (iter (f,i)) & p . ((iter (f,i)) . d) = TRUE )
A25:
k <= k + 1
by NAT_1:11;
per cases
( i <= k or i = k + 1 )
by A24, NAT_1:8;
suppose A26:
i = k + 1
;
( (iter (f,i)) . d in dom p & d in dom (iter (f,i)) & p . ((iter (f,i)) . d) = TRUE )set DD =
(iter (f,k)) . d;
A27:
(k + 1) - 1
<= n - 1
by A23, XREAL_1:9;
A28:
d in dom (r * (iter (f,k)))
by A9, A27;
then A29:
d in dom (iter (f,k))
by FUNCT_1:11;
iter (
f,
k) is
BinominativeFunction of
D
by FUNCT_7:86;
then reconsider DD =
(iter (f,k)) . d as
Element of
D by A29, PARTFUN1:4;
A30:
DD in dom p
by A22, A23, A25, XXREAL_0:2;
(r * (iter (f,k))) . d = TRUE
by A9, A27;
then A31:
r . DD = TRUE
by A29, FUNCT_1:13;
A32:
DD in dom r
by A28, FUNCT_1:11;
A33:
p . DD = TRUE
by A22, A23, A25, XXREAL_0:2;
A34:
DD in dom (PP_and (r,p))
by A4, A30, A31, A32, A33;
A35:
(PP_and (r,p)) . DD = TRUE
by A30, A31, A32, A33, PARTPR_1:18;
A36:
iter (
f,
(k + 1))
= f * (iter (f,k))
by FUNCT_7:71;
A37:
f . DD = (f * (iter (f,k))) . d
by A29, FUNCT_1:13;
hence
(iter (f,i)) . d in dom p
by A1, A22, A23, A25, A26, A36, XXREAL_0:2;
( d in dom (iter (f,i)) & p . ((iter (f,i)) . d) = TRUE )thus
d in dom (iter (f,i))
by A2, A26, A29, A30, A36, FUNCT_1:11;
p . ((iter (f,i)) . d) = TRUE thus
p . ((iter (f,i)) . d) = TRUE
by A1, A3, A2, A26, A30, A34, A35, A37, A36, Th11;
verum end; end;
end;
for
k being
Nat holds
S1[
k]
from NAT_1:sch 2(A17, A21);
hence
for
i being
Nat st
i <= n &
d in dom (iter (f,i)) &
(iter (f,i)) . d in dom p holds
p . ((iter (f,i)) . d) = TRUE
;
verum
end; hence
(PP_and ((PP_not r),p)) . ((PP_while (r,f)) . d) = TRUE
by A12, A13, A15, A16;
verum end; end;
end;
then
<*p,(PP_while (r,f)),(PP_and ((PP_not r),p))*> in SFHTs D
;
hence
<*p,(PP_while (r,f)),(PP_and ((PP_not r),p))*> is SFHT of D
; verum