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 (Comput (ProgramPart (s +* (Directed I))),(s +* (Directed I)),k)),(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 (Comput (ProgramPart (s +* (Directed I))),(s +* (Directed I)),k)),(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 (Comput (ProgramPart (s +* (Directed I))),(s +* (Directed I)),k)),(Comput (ProgramPart (s +* (Directed I))),(s +* (Directed I)),k) <> halt SCM+FSA

then A2: ProgramPart s halts_on s by AMI_1:def 26;
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] )
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]
T: ProgramPart (s +* (Directed I)) = ProgramPart (Comput (ProgramPart (s +* (Directed I))),(s +* (Directed I)),n) by AMI_1:123;
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 AMI_1:14
.= 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;
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 AMI_1:14
.= 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 ;
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 (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;
Z: (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;
A16: 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 A15, FUNCT_4:14 ;
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 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 AMI_1:13;
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;
hereby :: thesis: verum
let k be Element of NAT ; :: thesis: ( k <= LifeSpan (ProgramPart s),s implies not CurInstr (ProgramPart (Comput (ProgramPart (s +* (Directed I))),(s +* (Directed I)),k)),(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;
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;
assume k <= LifeSpan (ProgramPart s),s ; :: thesis: not CurInstr (ProgramPart (Comput (ProgramPart (s +* (Directed I))),(s +* (Directed I)),k)),(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 (Comput (ProgramPart (s +* (Directed I))),(s +* (Directed I)),k)),(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 (Comput (ProgramPart (s +* (Directed I))),(s +* (Directed I)),k)),(Comput (ProgramPart (s +* (Directed I))),(s +* (Directed I)),k) = halt SCM+FSA ; :: thesis: contradiction
hence contradiction by A21, A20, SCMFSA6A:18; :: thesis: verum
end;