let P be Instruction-Sequence of SCM+FSA; for s being State of SCM+FSA
for I being Program of
for a being read-write Int-Location st I is_closed_on s,P & I is_halting_on s,P & s . a = 0 holds
( IC (Comput ((P +* (while=0 (a,I))),(Initialize s),((LifeSpan ((P +* I),(Initialize s))) + 3))) = 0 & ( for k being Element of NAT st k <= (LifeSpan ((P +* I),(Initialize s))) + 3 holds
IC (Comput ((P +* (while=0 (a,I))),(Initialize s),k)) in dom (while=0 (a,I)) ) )
set D = Int-Locations \/ FinSeq-Locations;
let s be State of SCM+FSA; for I being Program of
for a being read-write Int-Location st I is_closed_on s,P & I is_halting_on s,P & s . a = 0 holds
( IC (Comput ((P +* (while=0 (a,I))),(Initialize s),((LifeSpan ((P +* I),(Initialize s))) + 3))) = 0 & ( for k being Element of NAT st k <= (LifeSpan ((P +* I),(Initialize s))) + 3 holds
IC (Comput ((P +* (while=0 (a,I))),(Initialize s),k)) in dom (while=0 (a,I)) ) )
let I be Program of ; for a being read-write Int-Location st I is_closed_on s,P & I is_halting_on s,P & s . a = 0 holds
( IC (Comput ((P +* (while=0 (a,I))),(Initialize s),((LifeSpan ((P +* I),(Initialize s))) + 3))) = 0 & ( for k being Element of NAT st k <= (LifeSpan ((P +* I),(Initialize s))) + 3 holds
IC (Comput ((P +* (while=0 (a,I))),(Initialize s),k)) in dom (while=0 (a,I)) ) )
let a be read-write Int-Location ; ( I is_closed_on s,P & I is_halting_on s,P & s . a = 0 implies ( IC (Comput ((P +* (while=0 (a,I))),(Initialize s),((LifeSpan ((P +* I),(Initialize s))) + 3))) = 0 & ( for k being Element of NAT st k <= (LifeSpan ((P +* I),(Initialize s))) + 3 holds
IC (Comput ((P +* (while=0 (a,I))),(Initialize s),k)) in dom (while=0 (a,I)) ) ) )
assume A1:
I is_closed_on s,P
; ( not I is_halting_on s,P or not s . a = 0 or ( IC (Comput ((P +* (while=0 (a,I))),(Initialize s),((LifeSpan ((P +* I),(Initialize s))) + 3))) = 0 & ( for k being Element of NAT st k <= (LifeSpan ((P +* I),(Initialize s))) + 3 holds
IC (Comput ((P +* (while=0 (a,I))),(Initialize s),k)) in dom (while=0 (a,I)) ) ) )
set sI = Initialize s;
set PI = P +* I;
set s1 = Initialize s;
set P1 = P +* (while=0 (a,I));
defpred S1[ Nat] means ( $1 <= LifeSpan ((P +* I),(Initialize s)) implies ( IC (Comput ((P +* (while=0 (a,I))),(Initialize s),(1 + $1))) = (IC (Comput ((P +* I),(Initialize s),$1))) + 4 & DataPart (Comput ((P +* (while=0 (a,I))),(Initialize s),(1 + $1))) = DataPart (Comput ((P +* I),(Initialize s),$1)) ) );
assume A3:
I is_halting_on s,P
; ( not s . a = 0 or ( IC (Comput ((P +* (while=0 (a,I))),(Initialize s),((LifeSpan ((P +* I),(Initialize s))) + 3))) = 0 & ( for k being Element of NAT st k <= (LifeSpan ((P +* I),(Initialize s))) + 3 holds
IC (Comput ((P +* (while=0 (a,I))),(Initialize s),k)) in dom (while=0 (a,I)) ) ) )
A4:
now let k be
Element of
NAT ;
( S1[k] implies S1[k + 1] )assume A5:
S1[
k]
;
S1[k + 1]now A6:
k + 0 < k + 1
by XREAL_1:6;
assume
k + 1
<= LifeSpan (
(P +* I),
(Initialize s))
;
( IC (Comput ((P +* (while=0 (a,I))),(Initialize s),((1 + k) + 1))) = (IC (Comput ((P +* I),(Initialize s),(k + 1)))) + 4 & DataPart (Comput ((P +* (while=0 (a,I))),(Initialize s),((1 + k) + 1))) = DataPart (Comput ((P +* I),(Initialize s),(k + 1))) )then
k < LifeSpan (
(P +* I),
(Initialize s))
by A6, XXREAL_0:2;
hence
(
IC (Comput ((P +* (while=0 (a,I))),(Initialize s),((1 + k) + 1))) = (IC (Comput ((P +* I),(Initialize s),(k + 1)))) + 4 &
DataPart (Comput ((P +* (while=0 (a,I))),(Initialize s),((1 + k) + 1))) = DataPart (Comput ((P +* I),(Initialize s),(k + 1))) )
by A1, A3, A5, Th19;
verum end; hence
S1[
k + 1]
;
verum end;
reconsider l = LifeSpan ((P +* I),(Initialize s)) as Element of NAT ;
set loc4 = (card I) + 4;
set i = a =0_goto 4;
set s2 = Comput ((P +* (while=0 (a,I))),(Initialize s),1);
IC in dom (Start-At (0,SCM+FSA))
by MEMSTR_0:15;
then A8: IC (Initialize s) =
IC (Start-At (0,SCM+FSA))
by FUNCT_4:13
.=
0
by FUNCOP_1:72
;
not a in dom (Start-At (0,SCM+FSA))
by SCMFSA_2:102;
then A9:
(Initialize s) . a = s . a
by FUNCT_4:11;
assume A10:
s . a = 0
; ( IC (Comput ((P +* (while=0 (a,I))),(Initialize s),((LifeSpan ((P +* I),(Initialize s))) + 3))) = 0 & ( for k being Element of NAT st k <= (LifeSpan ((P +* I),(Initialize s))) + 3 holds
IC (Comput ((P +* (while=0 (a,I))),(Initialize s),k)) in dom (while=0 (a,I)) ) )
A11:
0 in dom (while=0 (a,I))
by Th10;
A12:
(P +* (while=0 (a,I))) /. (IC (Initialize s)) = (P +* (while=0 (a,I))) . (IC (Initialize s))
by PBOOLE:143;
(P +* (while=0 (a,I))) . 0 =
(while=0 (a,I)) . 0
by A11, FUNCT_4:13
.=
a =0_goto 4
by Th11
;
then A13:
CurInstr ((P +* (while=0 (a,I))),(Initialize s)) = a =0_goto 4
by A8, A12;
A14: Comput ((P +* (while=0 (a,I))),(Initialize s),(0 + 1)) =
Following ((P +* (while=0 (a,I))),(Comput ((P +* (while=0 (a,I))),(Initialize s),0)))
by EXTPRO_1:3
.=
Following ((P +* (while=0 (a,I))),(Initialize s))
by EXTPRO_1:2
.=
Exec ((a =0_goto 4),(Initialize s))
by A13
;
then
( ( for c being Int-Location holds (Comput ((P +* (while=0 (a,I))),(Initialize s),1)) . c = (Initialize s) . c ) & ( for f being FinSeq-Location holds (Comput ((P +* (while=0 (a,I))),(Initialize s),1)) . f = (Initialize s) . f ) )
by SCMFSA_2:70;
then A15: DataPart (Comput ((P +* (while=0 (a,I))),(Initialize s),1)) =
DataPart (Initialize s)
by SCMFSA6A:7
.=
DataPart (Initialize s)
;
A16:
IC (Comput ((P +* (while=0 (a,I))),(Initialize s),1)) = 4
by A10, A14, A9, SCMFSA_2:70;
A17:
S1[ 0 ]
proof
assume
0 <= LifeSpan (
(P +* I),
(Initialize s))
;
( IC (Comput ((P +* (while=0 (a,I))),(Initialize s),(1 + 0))) = (IC (Comput ((P +* I),(Initialize s),0))) + 4 & DataPart (Comput ((P +* (while=0 (a,I))),(Initialize s),(1 + 0))) = DataPart (Comput ((P +* I),(Initialize s),0)) )
A18:
IC in dom (Start-At (0,SCM+FSA))
by MEMSTR_0:15;
IC (Comput ((P +* I),(Initialize s),0)) =
IC (Initialize s)
by EXTPRO_1:2
.=
IC (Start-At (0,SCM+FSA))
by A18, FUNCT_4:13
.=
0
by FUNCOP_1:72
;
hence
(
IC (Comput ((P +* (while=0 (a,I))),(Initialize s),(1 + 0))) = (IC (Comput ((P +* I),(Initialize s),0))) + 4 &
DataPart (Comput ((P +* (while=0 (a,I))),(Initialize s),(1 + 0))) = DataPart (Comput ((P +* I),(Initialize s),0)) )
by A16, A15, EXTPRO_1:2;
verum
end;
A19:
for k being Element of NAT holds S1[k]
from NAT_1:sch 1(A17, A4);
set s4 = Comput ((P +* (while=0 (a,I))),(Initialize s),(((1 + (LifeSpan ((P +* I),(Initialize s)))) + 1) + 1));
set s3 = Comput ((P +* (while=0 (a,I))),(Initialize s),((1 + (LifeSpan ((P +* I),(Initialize s)))) + 1));
A20:
(card I) + 4 in dom (while=0 (a,I))
by Th13;
set s2 = Comput ((P +* (while=0 (a,I))),(Initialize s),(1 + (LifeSpan ((P +* I),(Initialize s)))));
S1[l]
by A19;
then A21:
CurInstr ((P +* (while=0 (a,I))),(Comput ((P +* (while=0 (a,I))),(Initialize s),(1 + (LifeSpan ((P +* I),(Initialize s))))))) = goto ((card I) + 4)
by A1, A3, Th20;
A22: Comput ((P +* (while=0 (a,I))),(Initialize s),((1 + (LifeSpan ((P +* I),(Initialize s)))) + 1)) =
Following ((P +* (while=0 (a,I))),(Comput ((P +* (while=0 (a,I))),(Initialize s),(1 + (LifeSpan ((P +* I),(Initialize s)))))))
by EXTPRO_1:3
.=
Exec ((goto ((card I) + 4)),(Comput ((P +* (while=0 (a,I))),(Initialize s),(1 + (LifeSpan ((P +* I),(Initialize s)))))))
by A21
;
A23:
IC (Comput ((P +* (while=0 (a,I))),(Initialize s),((1 + (LifeSpan ((P +* I),(Initialize s)))) + 1))) = (card I) + 4
by A22, SCMFSA_2:69;
A24:
(P +* (while=0 (a,I))) /. (IC (Comput ((P +* (while=0 (a,I))),(Initialize s),((1 + (LifeSpan ((P +* I),(Initialize s)))) + 1)))) = (P +* (while=0 (a,I))) . (IC (Comput ((P +* (while=0 (a,I))),(Initialize s),((1 + (LifeSpan ((P +* I),(Initialize s)))) + 1))))
by PBOOLE:143;
(P +* (while=0 (a,I))) . ((card I) + 4) =
(while=0 (a,I)) . ((card I) + 4)
by A20, FUNCT_4:13
.=
goto 0
by Th21
;
then A25:
CurInstr ((P +* (while=0 (a,I))),(Comput ((P +* (while=0 (a,I))),(Initialize s),((1 + (LifeSpan ((P +* I),(Initialize s)))) + 1)))) = goto 0
by A23, A24;
A26: Comput ((P +* (while=0 (a,I))),(Initialize s),(((1 + (LifeSpan ((P +* I),(Initialize s)))) + 1) + 1)) =
Following ((P +* (while=0 (a,I))),(Comput ((P +* (while=0 (a,I))),(Initialize s),((1 + (LifeSpan ((P +* I),(Initialize s)))) + 1))))
by EXTPRO_1:3
.=
Exec ((goto 0),(Comput ((P +* (while=0 (a,I))),(Initialize s),((1 + (LifeSpan ((P +* I),(Initialize s)))) + 1))))
by A25
;
A27:
IC (Comput ((P +* (while=0 (a,I))),(Initialize s),(((1 + (LifeSpan ((P +* I),(Initialize s)))) + 1) + 1))) = 0
by A26, SCMFSA_2:69;
hence
IC (Comput ((P +* (while=0 (a,I))),(Initialize s),((LifeSpan ((P +* I),(Initialize s))) + 3))) = 0
; for k being Element of NAT st k <= (LifeSpan ((P +* I),(Initialize s))) + 3 holds
IC (Comput ((P +* (while=0 (a,I))),(Initialize s),k)) in dom (while=0 (a,I))
A28:
(((LifeSpan ((P +* I),(Initialize s))) + 1) + 1) + 1 = (LifeSpan ((P +* I),(Initialize s))) + (2 + 1)
;
A29:
now let k be
Element of
NAT ;
( k <= (LifeSpan ((P +* I),(Initialize s))) + 3 & k <> 0 implies IC (Comput ((P +* (while=0 (a,I))),(Initialize s),b1)) in dom (while=0 (a,I)) )assume A30:
k <= (LifeSpan ((P +* I),(Initialize s))) + 3
;
( k <> 0 implies IC (Comput ((P +* (while=0 (a,I))),(Initialize s),b1)) in dom (while=0 (a,I)) )assume
k <> 0
;
IC (Comput ((P +* (while=0 (a,I))),(Initialize s),b1)) in dom (while=0 (a,I))then consider n being
Nat such that A31:
k = n + 1
by NAT_1:6;
(
k <= (LifeSpan ((P +* I),(Initialize s))) + 1 or
k >= ((LifeSpan ((P +* I),(Initialize s))) + 1) + 1 )
by NAT_1:13;
then A32:
(
k <= (LifeSpan ((P +* I),(Initialize s))) + 1 or
k = ((LifeSpan ((P +* I),(Initialize s))) + 1) + 1 or
k > ((LifeSpan ((P +* I),(Initialize s))) + 1) + 1 )
by XXREAL_0:1;
reconsider n =
n as
Element of
NAT by ORDINAL1:def 12;
per cases
( k <= (LifeSpan ((P +* I),(Initialize s))) + 1 or k = ((LifeSpan ((P +* I),(Initialize s))) + 1) + 1 or k >= (LifeSpan ((P +* I),(Initialize s))) + 3 )
by A28, A32, NAT_1:13;
suppose
k <= (LifeSpan ((P +* I),(Initialize s))) + 1
;
IC (Comput ((P +* (while=0 (a,I))),(Initialize s),b1)) in dom (while=0 (a,I))then
n <= LifeSpan (
(P +* I),
(Initialize s))
by A31, XREAL_1:6;
then A33:
IC (Comput ((P +* (while=0 (a,I))),(Initialize s),(1 + n))) = (IC (Comput ((P +* I),(Initialize s),n))) + 4
by A19;
reconsider m =
IC (Comput ((P +* I),(Initialize s),n)) as
Element of
NAT ;
m in dom I
by A1, SCMFSA7B:def 6;
then
m < card I
by AFINSQ_1:66;
then A34:
m + 4
< (card I) + 6
by XREAL_1:8;
card (while=0 (a,I)) = (card I) + 6
by Th4;
hence
IC (Comput ((P +* (while=0 (a,I))),(Initialize s),k)) in dom (while=0 (a,I))
by A31, A33, A34, AFINSQ_1:66;
verum end; end; end;
now let k be
Element of
NAT ;
( k <= (LifeSpan ((P +* I),(Initialize s))) + 3 implies IC (Comput ((P +* (while=0 (a,I))),(Initialize s),b1)) in dom (while=0 (a,I)) )assume A35:
k <= (LifeSpan ((P +* I),(Initialize s))) + 3
;
IC (Comput ((P +* (while=0 (a,I))),(Initialize s),b1)) in dom (while=0 (a,I)) end;
hence
for k being Element of NAT st k <= (LifeSpan ((P +* I),(Initialize s))) + 3 holds
IC (Comput ((P +* (while=0 (a,I))),(Initialize s),k)) in dom (while=0 (a,I))
; verum