let I be Program of SCM+FSA ; :: thesis: for s being State of SCM+FSA st I is_closed_on Initialize s & I is_halting_on Initialize s holds
( IC (Computation (s +* (Initialized (I ';' (Stop SCM+FSA )))),((LifeSpan (s +* (Initialized I))) + 1)) = insloc (card I) & DataPart (Computation (s +* (Initialized I)),(LifeSpan (s +* (Initialized I)))) = DataPart (Computation (s +* (Initialized (I ';' (Stop SCM+FSA )))),((LifeSpan (s +* (Initialized I))) + 1)) & s +* (Initialized (I ';' (Stop SCM+FSA ))) is halting & LifeSpan (s +* (Initialized (I ';' (Stop SCM+FSA )))) = (LifeSpan (s +* (Initialized I))) + 1 )
let s be State of SCM+FSA ; :: thesis: ( I is_closed_on Initialize s & I is_halting_on Initialize s implies ( IC (Computation (s +* (Initialized (I ';' (Stop SCM+FSA )))),((LifeSpan (s +* (Initialized I))) + 1)) = insloc (card I) & DataPart (Computation (s +* (Initialized I)),(LifeSpan (s +* (Initialized I)))) = DataPart (Computation (s +* (Initialized (I ';' (Stop SCM+FSA )))),((LifeSpan (s +* (Initialized I))) + 1)) & s +* (Initialized (I ';' (Stop SCM+FSA ))) is halting & LifeSpan (s +* (Initialized (I ';' (Stop SCM+FSA )))) = (LifeSpan (s +* (Initialized I))) + 1 ) )
assume A1:
I is_closed_on Initialize s
; :: thesis: ( not I is_halting_on Initialize s or ( IC (Computation (s +* (Initialized (I ';' (Stop SCM+FSA )))),((LifeSpan (s +* (Initialized I))) + 1)) = insloc (card I) & DataPart (Computation (s +* (Initialized I)),(LifeSpan (s +* (Initialized I)))) = DataPart (Computation (s +* (Initialized (I ';' (Stop SCM+FSA )))),((LifeSpan (s +* (Initialized I))) + 1)) & s +* (Initialized (I ';' (Stop SCM+FSA ))) is halting & LifeSpan (s +* (Initialized (I ';' (Stop SCM+FSA )))) = (LifeSpan (s +* (Initialized I))) + 1 ) )
assume A2:
I is_halting_on Initialize s
; :: thesis: ( IC (Computation (s +* (Initialized (I ';' (Stop SCM+FSA )))),((LifeSpan (s +* (Initialized I))) + 1)) = insloc (card I) & DataPart (Computation (s +* (Initialized I)),(LifeSpan (s +* (Initialized I)))) = DataPart (Computation (s +* (Initialized (I ';' (Stop SCM+FSA )))),((LifeSpan (s +* (Initialized I))) + 1)) & s +* (Initialized (I ';' (Stop SCM+FSA ))) is halting & LifeSpan (s +* (Initialized (I ';' (Stop SCM+FSA )))) = (LifeSpan (s +* (Initialized I))) + 1 )
set s1 = s +* (Initialized I);
set s2 = s +* (Initialized (I ';' (Stop SCM+FSA )));
I ';' (Stop SCM+FSA ) c= Initialized (I ';' (Stop SCM+FSA ))
by SCMFSA6A:26;
then A3:
dom (I ';' (Stop SCM+FSA )) c= dom (Initialized (I ';' (Stop SCM+FSA )))
by GRFUNC_1:8;
card (I ';' (Stop SCM+FSA )) = (card I) + 1
by Th17, SCMFSA6A:61;
then
card I < card (I ';' (Stop SCM+FSA ))
by NAT_1:13;
then A4:
insloc (card I) in dom (I ';' (Stop SCM+FSA ))
by SCMFSA6A:15;
A5:
dom (ProgramPart (Stop SCM+FSA )) = dom (Stop SCM+FSA )
by AMI_1:105;
then
insloc (0 + (card I)) in { (m + (card I)) where m is Element of NAT : m in dom (ProgramPart (Stop SCM+FSA )) }
by Th16;
then A6:
insloc (0 + (card I)) in dom (ProgramPart (Relocated (Stop SCM+FSA ),(card I)))
by SCMFSA_5:3;
A7:
ProgramPart (Relocated (Stop SCM+FSA ),(card I)) c= Relocated (Stop SCM+FSA ),(card I)
by RELAT_1:88;
A8:
( DataPart (Computation (s +* (Initialized (Directed I))),((LifeSpan (s +* (Initialized I))) + 1)) = DataPart (Computation (s +* (Initialized (I ';' (Stop SCM+FSA )))),((LifeSpan (s +* (Initialized I))) + 1)) & IC (Computation (s +* (Initialized (Directed I))),((LifeSpan (s +* (Initialized I))) + 1)) = IC (Computation (s +* (Initialized (I ';' (Stop SCM+FSA )))),((LifeSpan (s +* (Initialized I))) + 1)) )
by A1, A2, Th43;
hence
( IC (Computation (s +* (Initialized (I ';' (Stop SCM+FSA )))),((LifeSpan (s +* (Initialized I))) + 1)) = insloc (card I) & DataPart (Computation (s +* (Initialized I)),(LifeSpan (s +* (Initialized I)))) = DataPart (Computation (s +* (Initialized (I ';' (Stop SCM+FSA )))),((LifeSpan (s +* (Initialized I))) + 1)) )
by A1, A2, Th45; :: thesis: ( s +* (Initialized (I ';' (Stop SCM+FSA ))) is halting & LifeSpan (s +* (Initialized (I ';' (Stop SCM+FSA )))) = (LifeSpan (s +* (Initialized I))) + 1 )
A9: (s +* (Initialized (I ';' (Stop SCM+FSA )))) . (insloc (card I)) =
(Initialized (I ';' (Stop SCM+FSA ))) . (insloc (card I))
by A3, A4, FUNCT_4:14
.=
(I ';' (Stop SCM+FSA )) . (insloc (card I))
by A4, SCMFSA6A:50
.=
(ProgramPart (Relocated (Stop SCM+FSA ),(card I))) . (insloc (card I))
by A6, FUNCT_4:14
.=
(Relocated (Stop SCM+FSA ),(card I)) . (insloc (0 + (card I)))
by A6, A7, GRFUNC_1:8
.=
IncAddr (halt SCM+FSA ),(card I)
by A5, Th16A, SCMFSA_5:7, SCMNORM:2
.=
halt SCM+FSA
by SCMFSA_4:8
;
A10: CurInstr (Computation (s +* (Initialized (I ';' (Stop SCM+FSA )))),((LifeSpan (s +* (Initialized I))) + 1)) =
(Computation (s +* (Initialized (I ';' (Stop SCM+FSA )))),((LifeSpan (s +* (Initialized I))) + 1)) . (insloc (card I))
by A1, A2, A8, Th45
.=
halt SCM+FSA
by A9, AMI_1:54
;
hence A11:
s +* (Initialized (I ';' (Stop SCM+FSA ))) is halting
by AMI_1:def 20; :: thesis: LifeSpan (s +* (Initialized (I ';' (Stop SCM+FSA )))) = (LifeSpan (s +* (Initialized I))) + 1
then
for k being Element of NAT st CurInstr (Computation (s +* (Initialized (I ';' (Stop SCM+FSA )))),k) = halt SCM+FSA holds
(LifeSpan (s +* (Initialized I))) + 1 <= k
;
hence
LifeSpan (s +* (Initialized (I ';' (Stop SCM+FSA )))) = (LifeSpan (s +* (Initialized I))) + 1
by A10, A11, AMI_1:def 46; :: thesis: verum