let s be 0 -started State of SCMPDS; :: thesis: for I being parahalting Program of SCMPDS
for k being Element of NAT st I c= s & k <= LifeSpan ((ProgramPart (s +* (stop I))),(s +* (stop I))) holds
Comput ((ProgramPart s),s,k), Comput ((ProgramPart (s +* (stop I))),(s +* (stop I)),k) equal_outside NAT

let I be parahalting Program of SCMPDS; :: thesis: for k being Element of NAT st I c= s & k <= LifeSpan ((ProgramPart (s +* (stop I))),(s +* (stop I))) holds
Comput ((ProgramPart s),s,k), Comput ((ProgramPart (s +* (stop I))),(s +* (stop I)),k) equal_outside NAT

let k be Element of NAT ; :: thesis: ( I c= s & k <= LifeSpan ((ProgramPart (s +* (stop I))),(s +* (stop I))) implies Comput ((ProgramPart s),s,k), Comput ((ProgramPart (s +* (stop I))),(s +* (stop I)),k) equal_outside NAT )
set m = LifeSpan ((ProgramPart (s +* (stop I))),(s +* (stop I)));
assume that
A1: I c= s and
A2: k <= LifeSpan ((ProgramPart (s +* (stop I))),(s +* (stop I))) ; :: thesis: Comput ((ProgramPart s),s,k), Comput ((ProgramPart (s +* (stop I))),(s +* (stop I)),k) equal_outside NAT
set s2 = s +* (stop I);
defpred S1[ Element of NAT ] means ( $1 <= LifeSpan ((ProgramPart (s +* (stop I))),(s +* (stop I))) implies Comput ((ProgramPart s),s,$1), Comput ((ProgramPart (s +* (stop I))),(s +* (stop I)),$1) equal_outside NAT );
A4: s = s +* I by A1, FUNCT_4:79;
A5: now
let k be Element of NAT ; :: thesis: ( S1[k] implies S1[k + 1] )
assume A6: S1[k] ; :: thesis: S1[k + 1]
now
A7: Comput ((ProgramPart (s +* (stop I))),(s +* (stop I)),(k + 1)) = Following ((ProgramPart (s +* (stop I))),(Comput ((ProgramPart (s +* (stop I))),(s +* (stop I)),k))) by EXTPRO_1:4
.= Exec ((CurInstr ((ProgramPart (s +* (stop I))),(Comput ((ProgramPart (s +* (stop I))),(s +* (stop I)),k)))),(Comput ((ProgramPart (s +* (stop I))),(s +* (stop I)),k))) ;
A8: Comput ((ProgramPart s),s,(k + 1)) = Following ((ProgramPart s),(Comput ((ProgramPart s),s,k))) by EXTPRO_1:4
.= Exec ((CurInstr ((ProgramPart s),(Comput ((ProgramPart s),s,k)))),(Comput ((ProgramPart s),s,k))) ;
A9: k < k + 1 by XREAL_1:31;
assume A10: k + 1 <= LifeSpan ((ProgramPart (s +* (stop I))),(s +* (stop I))) ; :: thesis: Comput ((ProgramPart s),s,(k + 1)), Comput ((ProgramPart (s +* (stop I))),(s +* (stop I)),(k + 1)) equal_outside NAT
then B11: k < LifeSpan ((ProgramPart (s +* (stop I))),(s +* (stop I))) by A9, XXREAL_0:2;
then IC (Comput ((ProgramPart (s +* (stop I))),(s +* (stop I)),k)) in dom I by Th28;
then A12: IC (Comput ((ProgramPart (s +* (stop I))),(s +* (stop I)),k)) in dom (stop I) by FUNCT_4:13;
XX: IC (Comput ((ProgramPart (s +* (stop I))),(s +* (stop I)),k)) in dom I by B11, Th28;
IC (Comput ((ProgramPart s),s,k)) = IC (Comput ((ProgramPart (s +* (stop I))),(s +* (stop I)),k)) by A6, A10, A9, COMPOS_1:24, XXREAL_0:2;
then CurInstr ((ProgramPart s),(Comput ((ProgramPart s),s,k))) = s . (IC (Comput ((ProgramPart (s +* (stop I))),(s +* (stop I)),k))) by COMPOS_1:38
.= I . (IC (Comput ((ProgramPart (s +* (stop I))),(s +* (stop I)),k))) by A4, B11, Th28, FUNCT_4:14
.= (stop I) . (IC (Comput ((ProgramPart (s +* (stop I))),(s +* (stop I)),k))) by XX, AFINSQ_1:def 4
.= (s +* (stop I)) . (IC (Comput ((ProgramPart (s +* (stop I))),(s +* (stop I)),k))) by A12, FUNCT_4:14
.= CurInstr ((ProgramPart (s +* (stop I))),(Comput ((ProgramPart (s +* (stop I))),(s +* (stop I)),k))) by COMPOS_1:38 ;
hence Comput ((ProgramPart s),s,(k + 1)), Comput ((ProgramPart (s +* (stop I))),(s +* (stop I)),(k + 1)) equal_outside NAT by A6, A10, A9, A8, A7, SCMPDS_4:15, XXREAL_0:2; :: thesis: verum
end;
hence S1[k + 1] ; :: thesis: verum
end;
A13: S1[ 0 ]
proof
assume 0 <= LifeSpan ((ProgramPart (s +* (stop I))),(s +* (stop I))) ; :: thesis: Comput ((ProgramPart s),s,0), Comput ((ProgramPart (s +* (stop I))),(s +* (stop I)),0) equal_outside NAT
A14: Comput ((ProgramPart (s +* (stop I))),(s +* (stop I)),0) = s +* (stop I) by EXTPRO_1:3;
Comput ((ProgramPart s),s,0) = s by EXTPRO_1:3;
hence Comput ((ProgramPart s),s,0), Comput ((ProgramPart (s +* (stop I))),(s +* (stop I)),0) equal_outside NAT by A14, FUNCT_7:132; :: thesis: verum
end;
for k being Element of NAT holds S1[k] from NAT_1:sch 1(A13, A5);
hence Comput ((ProgramPart s),s,k), Comput ((ProgramPart (s +* (stop I))),(s +* (stop I)),k) equal_outside NAT by A2; :: thesis: verum