let s be State of SCM+FSA; :: thesis: for I being InitHalting Program of SCM+FSA st Initialized I c= s holds
for k being Element of NAT st k <= LifeSpan ((ProgramPart s),s) holds
CurInstr ((ProgramPart (s +* (Directed I))),(Comput ((ProgramPart (s +* (Directed I))),(s +* (Directed I)),k))) <> halt SCM+FSA

set A = NAT ;
let I be InitHalting Program of SCM+FSA; :: thesis: ( Initialized I c= s implies for k being Element of NAT st k <= LifeSpan ((ProgramPart s),s) holds
CurInstr ((ProgramPart (s +* (Directed I))),(Comput ((ProgramPart (s +* (Directed I))),(s +* (Directed I)),k))) <> halt SCM+FSA )

set s2 = s +* (Directed I);
set m = LifeSpan ((ProgramPart s),s);
assume A1: Initialized I c= s ; :: thesis: for k being Element of NAT st k <= LifeSpan ((ProgramPart s),s) holds
CurInstr ((ProgramPart (s +* (Directed I))),(Comput ((ProgramPart (s +* (Directed I))),(s +* (Directed I)),k))) <> halt SCM+FSA

then A2: ProgramPart s halts_on s by EXTPRO_1:def 10;
A3: now
set s1 = s +* (I ';' I);
let k be Element of NAT ; :: thesis: ( k <= LifeSpan ((ProgramPart s),s) implies Comput ((ProgramPart s),s,k), Comput ((ProgramPart (s +* (Directed I))),(s +* (Directed I)),k) equal_outside NAT )
defpred S1[ Nat] means ( $1 <= k implies Comput ((ProgramPart (s +* (I ';' I))),(s +* (I ';' I)),$1), Comput ((ProgramPart (s +* (Directed I))),(s +* (Directed I)),$1) equal_outside NAT );
assume A4: k <= LifeSpan ((ProgramPart s),s) ; :: thesis: Comput ((ProgramPart s),s,k), Comput ((ProgramPart (s +* (Directed I))),(s +* (Directed I)),k) equal_outside NAT
A5: for n being Element of NAT st S1[n] holds
S1[n + 1]
proof
A6: Directed I c= I ';' I by SCMFSA6A:55;
let n be Element of NAT ; :: thesis: ( S1[n] implies S1[n + 1] )
T1: ProgramPart (s +* (I ';' I)) = ProgramPart (Comput ((ProgramPart (s +* (I ';' I))),(s +* (I ';' I)),n)) by AMI_1:123;
T2: ProgramPart (s +* (Directed I)) = ProgramPart (Comput ((ProgramPart (s +* (Directed I))),(s +* (Directed I)),n)) by AMI_1:123;
A7: dom I c= dom (I ';' I) by SCMFSA6A:56;
assume A8: ( n <= k implies Comput ((ProgramPart (s +* (I ';' I))),(s +* (I ';' I)),n), Comput ((ProgramPart (s +* (Directed I))),(s +* (Directed I)),n) equal_outside NAT ) ; :: thesis: S1[n + 1]
A9: Comput ((ProgramPart (s +* (Directed I))),(s +* (Directed I)),(n + 1)) = Following ((ProgramPart (s +* (Directed I))),(Comput ((ProgramPart (s +* (Directed I))),(s +* (Directed I)),n))) by EXTPRO_1:4
.= Exec ((CurInstr ((ProgramPart (s +* (Directed I))),(Comput ((ProgramPart (s +* (Directed I))),(s +* (Directed I)),n)))),(Comput ((ProgramPart (s +* (Directed I))),(s +* (Directed I)),n))) ;
A10: Comput ((ProgramPart (s +* (I ';' I))),(s +* (I ';' I)),(n + 1)) = Following ((ProgramPart (s +* (I ';' I))),(Comput ((ProgramPart (s +* (I ';' I))),(s +* (I ';' I)),n))) by EXTPRO_1:4
.= Exec ((CurInstr ((ProgramPart (s +* (I ';' I))),(Comput ((ProgramPart (s +* (I ';' I))),(s +* (I ';' I)),n)))),(Comput ((ProgramPart (s +* (I ';' I))),(s +* (I ';' I)),n))) ;
A11: n <= n + 1 by NAT_1:12;
assume A12: n + 1 <= k ; :: thesis: Comput ((ProgramPart (s +* (I ';' I))),(s +* (I ';' I)),(n + 1)), Comput ((ProgramPart (s +* (Directed I))),(s +* (Directed I)),(n + 1)) equal_outside NAT
then A13: IC (Comput ((ProgramPart (s +* (I ';' I))),(s +* (I ';' I)),n)) = IC (Comput ((ProgramPart (s +* (Directed I))),(s +* (Directed I)),n)) by A8, A11, COMPOS_1:24, XXREAL_0:2;
n <= k by A12, A11, XXREAL_0:2;
then n <= LifeSpan ((ProgramPart s),s) by A4, XXREAL_0:2;
then IC (Comput ((ProgramPart s),s,n)) = IC (Comput ((ProgramPart (s +* (I ';' I))),(s +* (I ';' I)),n)) by A1, A2, Th18, COMPOS_1:24;
then A14: IC (Comput ((ProgramPart (s +* (I ';' I))),(s +* (I ';' I)),n)) in dom I by A1, Def1;
then A15: IC (Comput ((ProgramPart (s +* (Directed I))),(s +* (Directed I)),n)) in dom (Directed I) by A13, FUNCT_4:105;
Y: (ProgramPart (s +* (Directed I))) /. (IC (Comput ((ProgramPart (s +* (Directed I))),(s +* (Directed I)),n))) = (Comput ((ProgramPart (s +* (Directed I))),(s +* (Directed I)),n)) . (IC (Comput ((ProgramPart (s +* (Directed I))),(s +* (Directed I)),n))) by T2, COMPOS_1:38;
Z: (ProgramPart (s +* (I ';' I))) /. (IC (Comput ((ProgramPart (s +* (I ';' I))),(s +* (I ';' I)),n))) = (Comput ((ProgramPart (s +* (I ';' I))),(s +* (I ';' I)),n)) . (IC (Comput ((ProgramPart (s +* (I ';' I))),(s +* (I ';' I)),n))) by T1, COMPOS_1:38;
A16: CurInstr ((ProgramPart (s +* (Directed I))),(Comput ((ProgramPart (s +* (Directed I))),(s +* (Directed I)),n))) = (s +* (Directed I)) . (IC (Comput ((ProgramPart (s +* (Directed I))),(s +* (Directed I)),n))) by Y, AMI_1:54
.= (Directed I) . (IC (Comput ((ProgramPart (s +* (Directed I))),(s +* (Directed I)),n))) by A15, FUNCT_4:14 ;
CurInstr ((ProgramPart (s +* (I ';' I))),(Comput ((ProgramPart (s +* (I ';' I))),(s +* (I ';' I)),n))) = (s +* (I ';' I)) . (IC (Comput ((ProgramPart (s +* (I ';' I))),(s +* (I ';' I)),n))) by Z, AMI_1:54
.= (I ';' I) . (IC (Comput ((ProgramPart (s +* (I ';' I))),(s +* (I ';' I)),n))) by A7, A14, FUNCT_4:14
.= (Directed I) . (IC (Comput ((ProgramPart (s +* (I ';' I))),(s +* (I ';' I)),n))) by A6, A13, A15, GRFUNC_1:8 ;
hence Comput ((ProgramPart (s +* (I ';' I))),(s +* (I ';' I)),(n + 1)), Comput ((ProgramPart (s +* (Directed I))),(s +* (Directed I)),(n + 1)) equal_outside NAT by A8, A12, A11, A13, A16, A10, A9, SCMFSA6A:32, XXREAL_0:2; :: thesis: verum
end;
( Comput ((ProgramPart (s +* (I ';' I))),(s +* (I ';' I)),0) = s +* (I ';' I) & Comput ((ProgramPart (s +* (Directed I))),(s +* (Directed I)),0) = s +* (Directed I) ) by EXTPRO_1:3;
then Comput ((ProgramPart (s +* (Directed I))),(s +* (Directed I)),0), Comput ((ProgramPart (s +* (I ';' I))),(s +* (I ';' I)),0) equal_outside NAT by FUNCT_7:107, FUNCT_7:133;
then A17: S1[ 0 ] by FUNCT_7:28;
for n being Element of NAT holds S1[n] from NAT_1:sch 1(A17, A5);
then A18: Comput ((ProgramPart (s +* (I ';' I))),(s +* (I ';' I)),k), Comput ((ProgramPart (s +* (Directed I))),(s +* (Directed I)),k) equal_outside NAT ;
Comput ((ProgramPart s),s,k), Comput ((ProgramPart (s +* (I ';' I))),(s +* (I ';' I)),k) equal_outside NAT by A1, A2, A4, Th18;
hence Comput ((ProgramPart s),s,k), Comput ((ProgramPart (s +* (Directed I))),(s +* (Directed I)),k) equal_outside NAT by A18, FUNCT_7:29; :: thesis: verum
end;
let k be Element of NAT ; :: thesis: ( k <= LifeSpan ((ProgramPart s),s) implies CurInstr ((ProgramPart (s +* (Directed I))),(Comput ((ProgramPart (s +* (Directed I))),(s +* (Directed I)),k))) <> halt SCM+FSA )
set lk = IC (Comput ((ProgramPart s),s,k));
A19: ( IC (Comput ((ProgramPart s),s,k)) in dom I & dom I = dom (Directed I) ) by A1, Def1, FUNCT_4:105;
then A20: (Directed I) . (IC (Comput ((ProgramPart s),s,k))) in rng (Directed I) by FUNCT_1:def 5;
Tk: ProgramPart (s +* (Directed I)) = ProgramPart (Comput ((ProgramPart (s +* (Directed I))),(s +* (Directed I)),k)) by AMI_1:123;
Y: (ProgramPart (s +* (Directed I))) /. (IC (Comput ((ProgramPart (s +* (Directed I))),(s +* (Directed I)),k))) = (Comput ((ProgramPart (s +* (Directed I))),(s +* (Directed I)),k)) . (IC (Comput ((ProgramPart (s +* (Directed I))),(s +* (Directed I)),k))) by Tk, COMPOS_1:38;
assume k <= LifeSpan ((ProgramPart s),s) ; :: thesis: CurInstr ((ProgramPart (s +* (Directed I))),(Comput ((ProgramPart (s +* (Directed I))),(s +* (Directed I)),k))) <> halt SCM+FSA
then IC (Comput ((ProgramPart s),s,k)) = IC (Comput ((ProgramPart (s +* (Directed I))),(s +* (Directed I)),k)) by A3, COMPOS_1:24;
then A21: CurInstr ((ProgramPart (s +* (Directed I))),(Comput ((ProgramPart (s +* (Directed I))),(s +* (Directed I)),k))) = (s +* (Directed I)) . (IC (Comput ((ProgramPart s),s,k))) by Y, AMI_1:54
.= (Directed I) . (IC (Comput ((ProgramPart s),s,k))) by A19, FUNCT_4:14 ;
assume CurInstr ((ProgramPart (s +* (Directed I))),(Comput ((ProgramPart (s +* (Directed I))),(s +* (Directed I)),k))) = halt SCM+FSA ; :: thesis: contradiction
hence contradiction by A21, A20, SCMFSA6A:18; :: thesis: verum