let s be State of SCM+FSA; :: thesis: for I being parahalting 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 parahalting 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: I +* (Start-At (0,SCM+FSA)) c= s by Th8;
A3: ProgramPart s halts_on s by A1, EXTPRO_1:def 10;
A4: 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 A5: k <= LifeSpan ((ProgramPart s),s) ; :: thesis: Comput ((ProgramPart s),s,k), Comput ((ProgramPart (s +* (Directed I))),(s +* (Directed I)),k) equal_outside NAT
A6: for n being Element of NAT st S1[n] holds
S1[n + 1]
proof
A7: Directed I c= I ';' I by SCMFSA6A:55;
let n be Element of NAT ; :: thesis: ( S1[n] implies S1[n + 1] )
A8: dom I c= dom (I ';' I) by SCMFSA6A:56;
assume A9: ( 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]
T: ProgramPart (s +* (Directed I)) = ProgramPart (Comput ((ProgramPart (s +* (Directed I))),(s +* (Directed I)),n)) by AMI_1:123;
A10: 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 (Comput ((ProgramPart (s +* (Directed I))),(s +* (Directed I)),n))),(Comput ((ProgramPart (s +* (Directed I))),(s +* (Directed I)),n)))),(Comput ((ProgramPart (s +* (Directed I))),(s +* (Directed I)),n))) by T ;
T: ProgramPart (s +* (I ';' I)) = ProgramPart (Comput ((ProgramPart (s +* (I ';' I))),(s +* (I ';' I)),n)) by AMI_1:123;
A11: 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 (Comput ((ProgramPart (s +* (I ';' I))),(s +* (I ';' I)),n))),(Comput ((ProgramPart (s +* (I ';' I))),(s +* (I ';' I)),n)))),(Comput ((ProgramPart (s +* (I ';' I))),(s +* (I ';' I)),n))) by T ;
A12: n <= n + 1 by NAT_1:12;
assume A13: 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 A14: IC (Comput ((ProgramPart (s +* (I ';' I))),(s +* (I ';' I)),n)) = IC (Comput ((ProgramPart (s +* (Directed I))),(s +* (Directed I)),n)) by A9, A12, COMPOS_1:24, XXREAL_0:2;
n <= k by A13, A12, XXREAL_0:2;
then n <= LifeSpan ((ProgramPart s),s) by A5, XXREAL_0:2;
then IC (Comput ((ProgramPart s),s,n)) = IC (Comput ((ProgramPart (s +* (I ';' I))),(s +* (I ';' I)),n)) by A3, A2, Th36, COMPOS_1:24;
then A15: IC (Comput ((ProgramPart (s +* (I ';' I))),(s +* (I ';' I)),n)) in dom I by A2, Def2;
then A16: IC (Comput ((ProgramPart (s +* (Directed I))),(s +* (Directed I)),n)) in dom (Directed I) by A14, FUNCT_4:105;
Y: (ProgramPart (Comput ((ProgramPart (s +* (Directed I))),(s +* (Directed I)),n))) /. (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 COMPOS_1:38;
A17: CurInstr ((ProgramPart (Comput ((ProgramPart (s +* (Directed I))),(s +* (Directed I)),n))),(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 A16, FUNCT_4:14 ;
Y: (ProgramPart (Comput ((ProgramPart (s +* (I ';' I))),(s +* (I ';' I)),n))) /. (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 COMPOS_1:38;
CurInstr ((ProgramPart (Comput ((ProgramPart (s +* (I ';' I))),(s +* (I ';' I)),n))),(Comput ((ProgramPart (s +* (I ';' I))),(s +* (I ';' I)),n))) = (s +* (I ';' I)) . (IC (Comput ((ProgramPart (s +* (I ';' I))),(s +* (I ';' I)),n))) by Y, AMI_1:54
.= (I ';' I) . (IC (Comput ((ProgramPart (s +* (I ';' I))),(s +* (I ';' I)),n))) by A8, A15, FUNCT_4:14
.= (Directed I) . (IC (Comput ((ProgramPart (s +* (I ';' I))),(s +* (I ';' I)),n))) by A7, A14, A16, 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 A9, A13, A12, A14, A17, A11, A10, 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 A18: S1[ 0 ] by FUNCT_7:28;
for n being Element of NAT holds S1[n] from NAT_1:sch 1(A18, A6);
then A19: 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 A3, A2, A5, Th36;
hence Comput ((ProgramPart s),s,k), Comput ((ProgramPart (s +* (Directed I))),(s +* (Directed I)),k) equal_outside NAT by A19, FUNCT_7:29; :: thesis: verum
end;
hereby :: thesis: verum
let k be Element of NAT ; :: thesis: ( k <= LifeSpan ((ProgramPart s),s) implies not 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));
A20: ( IC (Comput ((ProgramPart s),s,k)) in dom I & dom I = dom (Directed I) ) by A2, Def2, FUNCT_4:105;
then A21: (Directed I) . (IC (Comput ((ProgramPart s),s,k))) in rng (Directed I) by FUNCT_1:def 5;
Y: (ProgramPart (Comput ((ProgramPart (s +* (Directed I))),(s +* (Directed I)),k))) /. (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 COMPOS_1:38;
TX: ProgramPart (s +* (Directed I)) = ProgramPart (Comput ((ProgramPart (s +* (Directed I))),(s +* (Directed I)),k)) by AMI_1:123;
assume k <= LifeSpan ((ProgramPart s),s) ; :: thesis: not 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 A4, COMPOS_1:24;
then A22: 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, TX, AMI_1:54
.= (Directed I) . (IC (Comput ((ProgramPart s),s,k))) by A20, 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 A22, A21, SCMFSA6A:18; :: thesis: verum
end;