let p be Instruction-Sequence of SCM+FSA; for s being State of SCM+FSA
for a being read-write Int-Location
for I being Program of SCM+FSA st I is_closed_on s,p & I is_halting_on s,p & s . a > 0 holds
DataPart (Comput ((p +* (while>0 (a,I))),(Initialize s),((LifeSpan ((p +* I),(Initialize s))) + 3))) = DataPart (Comput ((p +* I),(Initialize s),(LifeSpan ((p +* I),(Initialize s)))))
let s be State of SCM+FSA; for a being read-write Int-Location
for I being Program of SCM+FSA st I is_closed_on s,p & I is_halting_on s,p & s . a > 0 holds
DataPart (Comput ((p +* (while>0 (a,I))),(Initialize s),((LifeSpan ((p +* I),(Initialize s))) + 3))) = DataPart (Comput ((p +* I),(Initialize s),(LifeSpan ((p +* I),(Initialize s)))))
let a be read-write Int-Location ; for I being Program of SCM+FSA st I is_closed_on s,p & I is_halting_on s,p & s . a > 0 holds
DataPart (Comput ((p +* (while>0 (a,I))),(Initialize s),((LifeSpan ((p +* I),(Initialize s))) + 3))) = DataPart (Comput ((p +* I),(Initialize s),(LifeSpan ((p +* I),(Initialize s)))))
let I be Program of SCM+FSA; ( I is_closed_on s,p & I is_halting_on s,p & s . a > 0 implies DataPart (Comput ((p +* (while>0 (a,I))),(Initialize s),((LifeSpan ((p +* I),(Initialize s))) + 3))) = DataPart (Comput ((p +* I),(Initialize s),(LifeSpan ((p +* I),(Initialize s))))) )
assume that
A1:
( I is_closed_on s,p & I is_halting_on s,p )
and
A2:
s . a > 0
; DataPart (Comput ((p +* (while>0 (a,I))),(Initialize s),((LifeSpan ((p +* I),(Initialize s))) + 3))) = DataPart (Comput ((p +* I),(Initialize s),(LifeSpan ((p +* I),(Initialize s)))))
set sI = Initialize s;
set pI = p +* I;
set s1 = Initialize s;
set p1 = p +* (while>0 (a,I));
A3:
while>0 (a,I) c= p +* (while>0 (a,I))
by FUNCT_4:25;
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)) ) );
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, A5, SCMFSA_9:39;
verum end; hence
S1[
k + 1]
;
verum end;
set i = a >0_goto 4;
set s2 = Comput ((p +* (while>0 (a,I))),(Initialize s),1);
set p2 = p +* (while>0 (a,I));
B7:
IC in dom (Start-At (0,SCM+FSA))
by MEMSTR_0:15;
A8: IC (Initialize s) =
IC (Start-At (0,SCM+FSA))
by B7, 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;
set loc4 = (card I) + 4;
A10:
(p +* (while>0 (a,I))) /. (IC (Initialize s)) = (p +* (while>0 (a,I))) . (IC (Initialize s))
by PBOOLE:143;
0 in dom (while>0 (a,I))
by SCMFSA_9:10;
then (p +* (while>0 (a,I))) . 0 =
(while>0 (a,I)) . 0
by FUNCT_4:13
.=
a >0_goto 4
by SCMFSA_9:11
;
then A11:
CurInstr ((p +* (while>0 (a,I))),(Initialize s)) = a >0_goto 4
by A8, A10;
A12: 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 A11
;
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:71;
then A13: DataPart (Comput ((p +* (while>0 (a,I))),(Initialize s),1)) =
DataPart (Initialize s)
by SCMFSA6A:7
.=
DataPart (Initialize s)
;
A14:
IC (Comput ((p +* (while>0 (a,I))),(Initialize s),1)) = 4
by A2, A12, A9, SCMFSA_2:71;
A15:
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)) )
B16:
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 B16, 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 A14, A13, EXTPRO_1:2;
verum
end;
for k being Element of NAT holds S1[k]
from NAT_1:sch 1(A15, A4);
then A17:
S1[ LifeSpan ((p +* I),(Initialize s))]
;
set s4 = Comput ((p +* (while>0 (a,I))),(Initialize s),(((1 + (LifeSpan ((p +* I),(Initialize s)))) + 1) + 1));
set p4 = p +* (while>0 (a,I));
set s3 = Comput ((p +* (while>0 (a,I))),(Initialize s),((1 + (LifeSpan ((p +* I),(Initialize s)))) + 1));
set p3 = p +* (while>0 (a,I));
A18:
(card I) + 4 in dom (while>0 (a,I))
by SCMFSA_9:33;
set s2 = Comput ((p +* (while>0 (a,I))),(Initialize s),(1 + (LifeSpan ((p +* I),(Initialize s)))));
A19:
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, A17, SCMFSA_9:40;
A20: 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 A19
;
then A21:
( ( for c being Int-Location holds (Comput ((p +* (while>0 (a,I))),(Initialize s),((1 + (LifeSpan ((p +* I),(Initialize s)))) + 1))) . c = (Comput ((p +* (while>0 (a,I))),(Initialize s),(1 + (LifeSpan ((p +* I),(Initialize s)))))) . c ) & ( for f being FinSeq-Location holds (Comput ((p +* (while>0 (a,I))),(Initialize s),((1 + (LifeSpan ((p +* I),(Initialize s)))) + 1))) . f = (Comput ((p +* (while>0 (a,I))),(Initialize s),(1 + (LifeSpan ((p +* I),(Initialize s)))))) . f ) )
by SCMFSA_2:69;
A22: (p +* (while>0 (a,I))) . ((card I) + 4) =
(while>0 (a,I)) . ((card I) + 4)
by A18, A3, GRFUNC_1:2
.=
goto 0
by SCMFSA_9:41
;
A23:
(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;
IC (Comput ((p +* (while>0 (a,I))),(Initialize s),((1 + (LifeSpan ((p +* I),(Initialize s)))) + 1))) = (card I) + 4
by A20, SCMFSA_2:69;
then A24:
CurInstr ((p +* (while>0 (a,I))),(Comput ((p +* (while>0 (a,I))),(Initialize s),((1 + (LifeSpan ((p +* I),(Initialize s)))) + 1)))) = goto 0
by A22, A23;
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 A24
;
then
( ( for c being Int-Location holds (Comput ((p +* (while>0 (a,I))),(Initialize s),(((1 + (LifeSpan ((p +* I),(Initialize s)))) + 1) + 1))) . c = (Comput ((p +* (while>0 (a,I))),(Initialize s),((1 + (LifeSpan ((p +* I),(Initialize s)))) + 1))) . c ) & ( for f being FinSeq-Location holds (Comput ((p +* (while>0 (a,I))),(Initialize s),(((1 + (LifeSpan ((p +* I),(Initialize s)))) + 1) + 1))) . f = (Comput ((p +* (while>0 (a,I))),(Initialize s),((1 + (LifeSpan ((p +* I),(Initialize s)))) + 1))) . f ) )
by SCMFSA_2:69;
hence DataPart (Comput ((p +* (while>0 (a,I))),(Initialize s),((LifeSpan ((p +* I),(Initialize s))) + 3))) =
DataPart (Comput ((p +* (while>0 (a,I))),(Initialize s),((1 + (LifeSpan ((p +* I),(Initialize s)))) + 1)))
by SCMFSA6A:7
.=
DataPart (Comput ((p +* I),(Initialize s),(LifeSpan ((p +* I),(Initialize s)))))
by A17, A21, SCMFSA6A:7
;
verum