set A = NAT ;
let s be State of SCM+FSA ; :: thesis: for I being good Program of SCM+FSA 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 ) )
let I be good Program of SCM+FSA ; :: thesis: ( 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 )));
set a = intloc 0 ;
assume
I is_halting_on Initialize s
; :: thesis: ( 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:
(Initialize s) +* (I +* (Start-At (insloc 0 ))) is halting
by SCMFSA7B:def 8;
assume A2:
I is_closed_on Initialize s
; :: thesis: ( (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 ) )
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 );
A3:
S1[ 0 ]
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(A3, A5);
then
not intloc 0 in (dom s) /\ NAT
by XBOOLE_0:def 4;
then A10:
( intloc 0 in dom (Result ((Initialize s) +* (I +* (Start-At (insloc 0 ))))) & not intloc 0 in dom (s | NAT ) )
by RELAT_1:90, SCMFSA_2:66;
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
;
:: thesis: 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; :: thesis: verum