let s be State of SCM+FSA; :: thesis: for I being Program of SCM+FSA st I is_closed_on s & I is_halting_on s holds
for m being Element of NAT st m < LifeSpan ((ProgramPart (s +* (I +* (Start-At (0,SCM+FSA))))),(s +* (I +* (Start-At (0,SCM+FSA))))) holds
CurInstr ((ProgramPart (Comput ((ProgramPart (s +* (I +* (Start-At (0,SCM+FSA))))),(s +* (I +* (Start-At (0,SCM+FSA)))),m))),(Comput ((ProgramPart (s +* (I +* (Start-At (0,SCM+FSA))))),(s +* (I +* (Start-At (0,SCM+FSA)))),m))) = CurInstr ((ProgramPart (Comput ((ProgramPart (s +* ((loop I) +* (Start-At (0,SCM+FSA))))),(s +* ((loop I) +* (Start-At (0,SCM+FSA)))),m))),(Comput ((ProgramPart (s +* ((loop I) +* (Start-At (0,SCM+FSA))))),(s +* ((loop I) +* (Start-At (0,SCM+FSA)))),m)))

let I be Program of SCM+FSA; :: thesis: ( I is_closed_on s & I is_halting_on s implies for m being Element of NAT st m < LifeSpan ((ProgramPart (s +* (I +* (Start-At (0,SCM+FSA))))),(s +* (I +* (Start-At (0,SCM+FSA))))) holds
CurInstr ((ProgramPart (Comput ((ProgramPart (s +* (I +* (Start-At (0,SCM+FSA))))),(s +* (I +* (Start-At (0,SCM+FSA)))),m))),(Comput ((ProgramPart (s +* (I +* (Start-At (0,SCM+FSA))))),(s +* (I +* (Start-At (0,SCM+FSA)))),m))) = CurInstr ((ProgramPart (Comput ((ProgramPart (s +* ((loop I) +* (Start-At (0,SCM+FSA))))),(s +* ((loop I) +* (Start-At (0,SCM+FSA)))),m))),(Comput ((ProgramPart (s +* ((loop I) +* (Start-At (0,SCM+FSA))))),(s +* ((loop I) +* (Start-At (0,SCM+FSA)))),m))) )

set s1 = s +* (I +* (Start-At (0,SCM+FSA)));
set s2 = s +* ((loop I) +* (Start-At (0,SCM+FSA)));
assume that
A1: I is_closed_on s and
A2: I is_halting_on s ; :: thesis: for m being Element of NAT st m < LifeSpan ((ProgramPart (s +* (I +* (Start-At (0,SCM+FSA))))),(s +* (I +* (Start-At (0,SCM+FSA))))) holds
CurInstr ((ProgramPart (Comput ((ProgramPart (s +* (I +* (Start-At (0,SCM+FSA))))),(s +* (I +* (Start-At (0,SCM+FSA)))),m))),(Comput ((ProgramPart (s +* (I +* (Start-At (0,SCM+FSA))))),(s +* (I +* (Start-At (0,SCM+FSA)))),m))) = CurInstr ((ProgramPart (Comput ((ProgramPart (s +* ((loop I) +* (Start-At (0,SCM+FSA))))),(s +* ((loop I) +* (Start-At (0,SCM+FSA)))),m))),(Comput ((ProgramPart (s +* ((loop I) +* (Start-At (0,SCM+FSA))))),(s +* ((loop I) +* (Start-At (0,SCM+FSA)))),m)))

let m be Element of NAT ; :: thesis: ( m < LifeSpan ((ProgramPart (s +* (I +* (Start-At (0,SCM+FSA))))),(s +* (I +* (Start-At (0,SCM+FSA))))) implies CurInstr ((ProgramPart (Comput ((ProgramPart (s +* (I +* (Start-At (0,SCM+FSA))))),(s +* (I +* (Start-At (0,SCM+FSA)))),m))),(Comput ((ProgramPart (s +* (I +* (Start-At (0,SCM+FSA))))),(s +* (I +* (Start-At (0,SCM+FSA)))),m))) = CurInstr ((ProgramPart (Comput ((ProgramPart (s +* ((loop I) +* (Start-At (0,SCM+FSA))))),(s +* ((loop I) +* (Start-At (0,SCM+FSA)))),m))),(Comput ((ProgramPart (s +* ((loop I) +* (Start-At (0,SCM+FSA))))),(s +* ((loop I) +* (Start-At (0,SCM+FSA)))),m))) )
A3: IC (Comput ((ProgramPart (s +* (I +* (Start-At (0,SCM+FSA))))),(s +* (I +* (Start-At (0,SCM+FSA)))),m)) in dom I by A1, SCMFSA7B:def 7;
then A4: IC (Comput ((ProgramPart (s +* (I +* (Start-At (0,SCM+FSA))))),(s +* (I +* (Start-At (0,SCM+FSA)))),m)) in dom (loop I) by FUNCT_4:105;
A5: I c= I +* (Start-At (0,SCM+FSA)) by SCMFSA8A:9;
Y: (ProgramPart (Comput ((ProgramPart (s +* (I +* (Start-At (0,SCM+FSA))))),(s +* (I +* (Start-At (0,SCM+FSA)))),m))) /. (IC (Comput ((ProgramPart (s +* (I +* (Start-At (0,SCM+FSA))))),(s +* (I +* (Start-At (0,SCM+FSA)))),m))) = (Comput ((ProgramPart (s +* (I +* (Start-At (0,SCM+FSA))))),(s +* (I +* (Start-At (0,SCM+FSA)))),m)) . (IC (Comput ((ProgramPart (s +* (I +* (Start-At (0,SCM+FSA))))),(s +* (I +* (Start-At (0,SCM+FSA)))),m))) by COMPOS_1:38;
TX1: ProgramPart (s +* (I +* (Start-At (0,SCM+FSA)))) = ProgramPart (Comput ((ProgramPart (s +* (I +* (Start-At (0,SCM+FSA))))),(s +* (I +* (Start-At (0,SCM+FSA)))),m)) by AMI_1:123;
I +* (Start-At (0,SCM+FSA)) c= s +* (I +* (Start-At (0,SCM+FSA))) by FUNCT_4:26;
then I c= s +* (I +* (Start-At (0,SCM+FSA))) by A5, XBOOLE_1:1;
then I c= Comput ((ProgramPart (s +* (I +* (Start-At (0,SCM+FSA))))),(s +* (I +* (Start-At (0,SCM+FSA)))),m) by AMI_1:81;
then A6: CurInstr ((ProgramPart (s +* (I +* (Start-At (0,SCM+FSA))))),(Comput ((ProgramPart (s +* (I +* (Start-At (0,SCM+FSA))))),(s +* (I +* (Start-At (0,SCM+FSA)))),m))) = I . (IC (Comput ((ProgramPart (s +* (I +* (Start-At (0,SCM+FSA))))),(s +* (I +* (Start-At (0,SCM+FSA)))),m))) by A3, Y, TX1, GRFUNC_1:8;
A7: loop I c= (loop I) +* (Start-At (0,SCM+FSA)) by SCMFSA8A:9;
(loop I) +* (Start-At (0,SCM+FSA)) c= s +* ((loop I) +* (Start-At (0,SCM+FSA))) by FUNCT_4:26;
then loop I c= s +* ((loop I) +* (Start-At (0,SCM+FSA))) by A7, XBOOLE_1:1;
then A8: loop I c= Comput ((ProgramPart (s +* ((loop I) +* (Start-At (0,SCM+FSA))))),(s +* ((loop I) +* (Start-At (0,SCM+FSA)))),m) by AMI_1:81;
assume A9: m < LifeSpan ((ProgramPart (s +* (I +* (Start-At (0,SCM+FSA))))),(s +* (I +* (Start-At (0,SCM+FSA))))) ; :: thesis: CurInstr ((ProgramPart (Comput ((ProgramPart (s +* (I +* (Start-At (0,SCM+FSA))))),(s +* (I +* (Start-At (0,SCM+FSA)))),m))),(Comput ((ProgramPart (s +* (I +* (Start-At (0,SCM+FSA))))),(s +* (I +* (Start-At (0,SCM+FSA)))),m))) = CurInstr ((ProgramPart (Comput ((ProgramPart (s +* ((loop I) +* (Start-At (0,SCM+FSA))))),(s +* ((loop I) +* (Start-At (0,SCM+FSA)))),m))),(Comput ((ProgramPart (s +* ((loop I) +* (Start-At (0,SCM+FSA))))),(s +* ((loop I) +* (Start-At (0,SCM+FSA)))),m)))
Z: (ProgramPart (Comput ((ProgramPart (s +* ((loop I) +* (Start-At (0,SCM+FSA))))),(s +* ((loop I) +* (Start-At (0,SCM+FSA)))),m))) /. (IC (Comput ((ProgramPart (s +* ((loop I) +* (Start-At (0,SCM+FSA))))),(s +* ((loop I) +* (Start-At (0,SCM+FSA)))),m))) = (Comput ((ProgramPart (s +* ((loop I) +* (Start-At (0,SCM+FSA))))),(s +* ((loop I) +* (Start-At (0,SCM+FSA)))),m)) . (IC (Comput ((ProgramPart (s +* ((loop I) +* (Start-At (0,SCM+FSA))))),(s +* ((loop I) +* (Start-At (0,SCM+FSA)))),m))) by COMPOS_1:38;
ProgramPart (s +* (I +* (Start-At (0,SCM+FSA)))) halts_on s +* (I +* (Start-At (0,SCM+FSA))) by A2, SCMFSA7B:def 8;
then I . (IC (Comput ((ProgramPart (s +* (I +* (Start-At (0,SCM+FSA))))),(s +* (I +* (Start-At (0,SCM+FSA)))),m))) <> halt SCM+FSA by A9, A6, EXTPRO_1:def 14;
then I . (IC (Comput ((ProgramPart (s +* (I +* (Start-At (0,SCM+FSA))))),(s +* (I +* (Start-At (0,SCM+FSA)))),m))) = (loop I) . (IC (Comput ((ProgramPart (s +* (I +* (Start-At (0,SCM+FSA))))),(s +* (I +* (Start-At (0,SCM+FSA)))),m))) by FUNCT_4:111;
hence CurInstr ((ProgramPart (Comput ((ProgramPart (s +* (I +* (Start-At (0,SCM+FSA))))),(s +* (I +* (Start-At (0,SCM+FSA)))),m))),(Comput ((ProgramPart (s +* (I +* (Start-At (0,SCM+FSA))))),(s +* (I +* (Start-At (0,SCM+FSA)))),m))) = (Comput ((ProgramPart (s +* ((loop I) +* (Start-At (0,SCM+FSA))))),(s +* ((loop I) +* (Start-At (0,SCM+FSA)))),m)) . (IC (Comput ((ProgramPart (s +* (I +* (Start-At (0,SCM+FSA))))),(s +* (I +* (Start-At (0,SCM+FSA)))),m))) by A8, A4, A6, TX1, GRFUNC_1:8
.= CurInstr ((ProgramPart (Comput ((ProgramPart (s +* ((loop I) +* (Start-At (0,SCM+FSA))))),(s +* ((loop I) +* (Start-At (0,SCM+FSA)))),m))),(Comput ((ProgramPart (s +* ((loop I) +* (Start-At (0,SCM+FSA))))),(s +* ((loop I) +* (Start-At (0,SCM+FSA)))),m))) by A1, A2, A9, Th109, Z, COMPOS_1:24 ;
:: thesis: verum