set a = intloc 0 ;
let s be State of ; for I being good Program of st I is_halting_on Initialize s & I is_closed_on Initialize s holds
( (IExec I,s) . (intloc 0 ) = 1 & ( for k being Element of NAT holds (Computation ((Initialize s) +* (I +* (Start-At (insloc 0 )))),k) . (intloc 0 ) = 1 ) )
set A = NAT ;
let I be good Program of ; ( I is_halting_on Initialize s & I is_closed_on Initialize s implies ( (IExec I,s) . (intloc 0 ) = 1 & ( for k being Element of NAT holds (Computation ((Initialize s) +* (I +* (Start-At (insloc 0 )))),k) . (intloc 0 ) = 1 ) ) )
set s0 = Initialize s;
set s1 = (Initialize s) +* (I +* (Start-At (insloc 0 )));
defpred S1[ Element of NAT ] means for n being Element of NAT st n <= $1 holds
(Computation ((Initialize s) +* (I +* (Start-At (insloc 0 )))),n) . (intloc 0 ) = (Initialize s) . (intloc 0 );
assume
I is_halting_on Initialize s
; ( not I is_closed_on Initialize s or ( (IExec I,s) . (intloc 0 ) = 1 & ( for k being Element of NAT holds (Computation ((Initialize s) +* (I +* (Start-At (insloc 0 )))),k) . (intloc 0 ) = 1 ) ) )
then A1:
ProgramPart ((Initialize s) +* (I +* (Start-At (insloc 0 )))) halts_on (Initialize s) +* (I +* (Start-At (insloc 0 )))
by SCMFSA7B:def 8;
A2:
S1[ 0 ]
assume A4:
I is_closed_on Initialize s
; ( (IExec I,s) . (intloc 0 ) = 1 & ( for k being Element of NAT holds (Computation ((Initialize s) +* (I +* (Start-At (insloc 0 )))),k) . (intloc 0 ) = 1 ) )
A5:
for k being Element of NAT st S1[k] holds
S1[k + 1]
A7:
for k being Element of NAT holds S1[k]
from NAT_1:sch 1(A2, A5);
then
not intloc 0 in (dom s) /\ NAT
by XBOOLE_0:def 4;
then A10:
not intloc 0 in dom (s | NAT )
by RELAT_1:90;
s +* (Initialized I) = (Initialize s) +* (I +* (Start-At (insloc 0 )))
by SCMFSA8A:13;
hence (IExec I,s) . (intloc 0 ) =
((Result ((Initialize s) +* (I +* (Start-At (insloc 0 ))))) +* (s | NAT )) . (intloc 0 )
by SCMFSA6B:def 1
.=
(Result ((Initialize s) +* (I +* (Start-At (insloc 0 ))))) . (intloc 0 )
by A10, FUNCT_4:12
.=
(Computation ((Initialize s) +* (I +* (Start-At (insloc 0 )))),(LifeSpan ((Initialize s) +* (I +* (Start-At (insloc 0 )))))) . (intloc 0 )
by A1, AMI_1:122
.=
1
by A8
;
for k being Element of NAT holds (Computation ((Initialize s) +* (I +* (Start-At (insloc 0 )))),k) . (intloc 0 ) = 1
thus
for k being Element of NAT holds (Computation ((Initialize s) +* (I +* (Start-At (insloc 0 )))),k) . (intloc 0 ) = 1
by A8; verum