let s be State of SCMPDS ; :: thesis: for I, J being Program of SCMPDS
for k being Element of NAT st I c= J & I is_closed_on s & I is_halting_on s & k <= LifeSpan (s +* (Initialized (stop I))) holds
Computation (s +* (Initialized J)),k, Computation (s +* (Initialized (stop I))),k equal_outside NAT

let I, J be Program of SCMPDS ; :: thesis: for k being Element of NAT st I c= J & I is_closed_on s & I is_halting_on s & k <= LifeSpan (s +* (Initialized (stop I))) holds
Computation (s +* (Initialized J)),k, Computation (s +* (Initialized (stop I))),k equal_outside NAT

let k be Element of NAT ; :: thesis: ( I c= J & I is_closed_on s & I is_halting_on s & k <= LifeSpan (s +* (Initialized (stop I))) implies Computation (s +* (Initialized J)),k, Computation (s +* (Initialized (stop I))),k equal_outside NAT )
set IsI = Initialized (stop I);
set IL = NAT ;
set m = LifeSpan (s +* (Initialized (stop I)));
assume that
A1: I c= J and
A2: I is_closed_on s and
A3: I is_halting_on s and
A4: k <= LifeSpan (s +* (Initialized (stop I))) ; :: thesis: Computation (s +* (Initialized J)),k, Computation (s +* (Initialized (stop I))),k equal_outside NAT
set iJ = Initialized J;
set s1 = s +* (Initialized J);
set s2 = s +* (Initialized (stop I));
defpred S1[ Element of NAT ] means ( $1 <= LifeSpan (s +* (Initialized (stop I))) implies Computation (s +* (Initialized J)),$1, Computation (s +* (Initialized (stop I))),$1 equal_outside NAT );
A5: dom I c= dom J by A1, GRFUNC_1:8;
A6: S1[ 0 ]
proof end;
A8: now
let k be Element of NAT ; :: thesis: ( S1[k] implies S1[k + 1] )
assume A9: S1[k] ; :: thesis: S1[k + 1]
now
assume A10: k + 1 <= LifeSpan (s +* (Initialized (stop I))) ; :: thesis: Computation (s +* (Initialized J)),(k + 1), Computation (s +* (Initialized (stop I))),(k + 1) equal_outside NAT
A11: k < k + 1 by XREAL_1:31;
then k < LifeSpan (s +* (Initialized (stop I))) by A10, XXREAL_0:2;
then A12: IC (Computation (s +* (Initialized (stop I))),k) in dom I by A2, A3, SCMPDS_6:40;
then A13: IC (Computation (s +* (Initialized (stop I))),k) in dom (stop I) by FUNCT_4:13;
A14: CurInstr (Computation (s +* (Initialized J)),k) = (Computation (s +* (Initialized J)),k) . (IC (Computation (s +* (Initialized (stop I))),k)) by A9, A10, A11, AMI_1:121, XXREAL_0:2
.= (s +* (Initialized J)) . (IC (Computation (s +* (Initialized (stop I))),k)) by AMI_1:54
.= J . (IC (Computation (s +* (Initialized (stop I))),k)) by A5, A12, Th10
.= I . (IC (Computation (s +* (Initialized (stop I))),k)) by A1, A12, GRFUNC_1:8
.= (stop I) . (IC (Computation (s +* (Initialized (stop I))),k)) by A12, SCMPDS_4:37
.= (s +* (Initialized (stop I))) . (IC (Computation (s +* (Initialized (stop I))),k)) by A13, Th10
.= CurInstr (Computation (s +* (Initialized (stop I))),k) by AMI_1:54 ;
A15: Computation (s +* (Initialized J)),(k + 1) = Following (Computation (s +* (Initialized J)),k) by AMI_1:14
.= Exec (CurInstr (Computation (s +* (Initialized J)),k)),(Computation (s +* (Initialized J)),k) ;
Computation (s +* (Initialized (stop I))),(k + 1) = Following (Computation (s +* (Initialized (stop I))),k) by AMI_1:14
.= Exec (CurInstr (Computation (s +* (Initialized (stop I))),k)),(Computation (s +* (Initialized (stop I))),k) ;
hence Computation (s +* (Initialized J)),(k + 1), Computation (s +* (Initialized (stop I))),(k + 1) equal_outside NAT by A9, A10, A11, A14, A15, SCMPDS_4:15, XXREAL_0:2; :: thesis: verum
end;
hence S1[k + 1] ; :: thesis: verum
end;
for k being Element of NAT holds S1[k] from NAT_1:sch 1(A6, A8);
hence Computation (s +* (Initialized J)),k, Computation (s +* (Initialized (stop I))),k equal_outside NAT by A4; :: thesis: verum