let s be State of SCM+FSA ; :: according to SCM_HALT:def 3 :: thesis: ( Initialized (I ';' J) c= s implies for k being Element of NAT holds (Comput (ProgramPart s),s,k) . (intloc 0 ) = 1 )
A1: Initialized (I ';' J) = (I ';' J) +* (((intloc 0 ) .--> 1) +* (Start-At 0 ,SCM+FSA )) by FUNCT_4:15;
A2: Initialized I c= s +* (Initialized I) by FUNCT_4:26;
assume A3: Initialized (I ';' J) c= s ; :: thesis: for k being Element of NAT holds (Comput (ProgramPart s),s,k) . (intloc 0 ) = 1
then A4: s +* (Initialized (I ';' J)) = s by FUNCT_4:79;
((intloc 0 ) .--> 1) +* (Start-At 0 ,SCM+FSA ) c= (I ';' J) +* (((intloc 0 ) .--> 1) +* (Start-At 0 ,SCM+FSA )) by FUNCT_4:26;
then A5: ((intloc 0 ) .--> 1) +* (Start-At 0 ,SCM+FSA ) c= s by A3, A1, XBOOLE_1:1;
s +* (Initialized (I ';' J)) = (s +* (I ';' J)) +* (((intloc 0 ) .--> 1) +* (Start-At 0 ,SCM+FSA )) by A1, FUNCT_4:15
.= (s +* (((intloc 0 ) .--> 1) +* (Start-At 0 ,SCM+FSA ))) +* (I ';' J) by Th19
.= s +* (I ';' J) by A5, FUNCT_4:79 ;
then A6: s = s +* (I ';' J) by A3, FUNCT_4:79;
per cases ( ProgramPart (s +* (Initialized I)) halts_on s +* (Initialized I) or not ProgramPart (s +* (Initialized I)) halts_on s +* (Initialized I) ) ;
suppose A7: ProgramPart (s +* (Initialized I)) halts_on s +* (Initialized I) ; :: thesis: for k being Element of NAT holds (Comput (ProgramPart s),s,k) . (intloc 0 ) = 1
let k be Element of NAT ; :: thesis: (Comput (ProgramPart s),s,k) . (intloc 0 ) = 1
A8: s +* (Initialized I) = s +* (I +* (((intloc 0 ) .--> 1) +* (Start-At 0 ,SCM+FSA ))) by FUNCT_4:15
.= (s +* I) +* (((intloc 0 ) .--> 1) +* (Start-At 0 ,SCM+FSA )) by FUNCT_4:15
.= (s +* (((intloc 0 ) .--> 1) +* (Start-At 0 ,SCM+FSA ))) +* I by Th19
.= s +* I by A5, FUNCT_4:79 ;
hereby :: thesis: verum
per cases ( k <= LifeSpan (ProgramPart (s +* (Initialized I))),(s +* (Initialized I)) or k > LifeSpan (ProgramPart (s +* (Initialized I))),(s +* (Initialized I)) ) ;
suppose A10: k > LifeSpan (ProgramPart (s +* (Initialized I))),(s +* (Initialized I)) ; :: thesis: (Comput (ProgramPart s),s,k) . (intloc 0 ) = 1
set LS = LifeSpan (ProgramPart (s +* (Initialized I))),(s +* (Initialized I));
consider p being Element of NAT such that
A11: k = (LifeSpan (ProgramPart (s +* (Initialized I))),(s +* (Initialized I))) + p and
A12: 1 <= p by A10, FINSEQ_4:99;
consider r being Nat such that
A13: p = 1 + r by A12, NAT_1:10;
reconsider r = r as Element of NAT by ORDINAL1:def 13;
set Rr = Comput (ProgramPart ((Result (ProgramPart (s +* I)),(s +* I)) +* (Initialized J))),((Result (ProgramPart (s +* I)),(s +* I)) +* (Initialized J)),r;
set Sr = Start-At ((IC (Comput (ProgramPart ((Result (ProgramPart (s +* I)),(s +* I)) +* (Initialized J))),((Result (ProgramPart (s +* I)),(s +* I)) +* (Initialized J)),r)) + (card I)),SCM+FSA ;
Initialized J c= (Result (ProgramPart (s +* I)),(s +* I)) +* (Initialized J) by FUNCT_4:26;
then A14: (Comput (ProgramPart ((Result (ProgramPart (s +* I)),(s +* I)) +* (Initialized J))),((Result (ProgramPart (s +* I)),(s +* I)) +* (Initialized J)),r) . (intloc 0 ) = 1 by Def3;
( dom (Start-At ((IC (Comput (ProgramPart ((Result (ProgramPart (s +* I)),(s +* I)) +* (Initialized J))),((Result (ProgramPart (s +* I)),(s +* I)) +* (Initialized J)),r)) + (card I)),SCM+FSA ) = {(IC SCM+FSA )} & intloc 0 <> IC SCM+FSA ) by FUNCOP_1:19, SCMFSA_2:81;
then not intloc 0 in dom (Start-At ((IC (Comput (ProgramPart ((Result (ProgramPart (s +* I)),(s +* I)) +* (Initialized J))),((Result (ProgramPart (s +* I)),(s +* I)) +* (Initialized J)),r)) + (card I)),SCM+FSA ) by TARSKI:def 1;
then A15: ((Comput (ProgramPart ((Result (ProgramPart (s +* I)),(s +* I)) +* (Initialized J))),((Result (ProgramPart (s +* I)),(s +* I)) +* (Initialized J)),r) +* (Start-At ((IC (Comput (ProgramPart ((Result (ProgramPart (s +* I)),(s +* I)) +* (Initialized J))),((Result (ProgramPart (s +* I)),(s +* I)) +* (Initialized J)),r)) + (card I)),SCM+FSA )) . (intloc 0 ) = (Comput (ProgramPart ((Result (ProgramPart (s +* I)),(s +* I)) +* (Initialized J))),((Result (ProgramPart (s +* I)),(s +* I)) +* (Initialized J)),r) . (intloc 0 ) by FUNCT_4:12;
(Comput (ProgramPart ((Result (ProgramPart (s +* I)),(s +* I)) +* (Initialized J))),((Result (ProgramPart (s +* I)),(s +* I)) +* (Initialized J)),r) +* (Start-At ((IC (Comput (ProgramPart ((Result (ProgramPart (s +* I)),(s +* I)) +* (Initialized J))),((Result (ProgramPart (s +* I)),(s +* I)) +* (Initialized J)),r)) + (card I)),SCM+FSA ), Comput (ProgramPart (s +* (I ';' J))),(s +* (I ';' J)),(((LifeSpan (ProgramPart (s +* (Initialized I))),(s +* (Initialized I))) + 1) + r) equal_outside NAT by A3, A7, A8, Th26;
hence (Comput (ProgramPart s),s,k) . (intloc 0 ) = 1 by A6, A11, A13, A14, A15, SCMFSA10:92; :: thesis: verum
end;
end;
end;
end;
suppose A16: not ProgramPart (s +* (Initialized I)) halts_on s +* (Initialized I) ; :: thesis: for k being Element of NAT holds (Comput (ProgramPart s),s,k) . (intloc 0 ) = 1
end;
end;