let s1, s2 be State of ; :: thesis: for I being Program of st I is_closed_on s1 & I is_halting_on s1 & Initialized (stop I) c= s1 & Initialized (stop I) c= s2 & ex k being Element of NAT st Computation s1,k,s2 equal_outside NAT holds
Result s1, Result s2 equal_outside NAT

let I be Program of ; :: thesis: ( I is_closed_on s1 & I is_halting_on s1 & Initialized (stop I) c= s1 & Initialized (stop I) c= s2 & ex k being Element of NAT st Computation s1,k,s2 equal_outside NAT implies Result s1, Result s2 equal_outside NAT )
set pI = stop I;
set IsI = Initialized (stop I);
assume A1: I is_closed_on s1 ; :: thesis: ( not I is_halting_on s1 or not Initialized (stop I) c= s1 or not Initialized (stop I) c= s2 or for k being Element of NAT holds not Computation s1,k,s2 equal_outside NAT or Result s1, Result s2 equal_outside NAT )
assume A2: I is_halting_on s1 ; :: thesis: ( not Initialized (stop I) c= s1 or not Initialized (stop I) c= s2 or for k being Element of NAT holds not Computation s1,k,s2 equal_outside NAT or Result s1, Result s2 equal_outside NAT )
assume A3: Initialized (stop I) c= s1 ; :: thesis: ( not Initialized (stop I) c= s2 or for k being Element of NAT holds not Computation s1,k,s2 equal_outside NAT or Result s1, Result s2 equal_outside NAT )
then A4: s1 = s1 +* (Initialized (stop I)) by FUNCT_4:79;
then A5: ProgramPart s1 halts_on s1 by A2, SCMPDS_6:def 3;
then consider n being Element of NAT such that
A6: CurInstr (Computation s1,n) = halt SCMPDS by AMI_1:146;
assume Initialized (stop I) c= s2 ; :: thesis: ( for k being Element of NAT holds not Computation s1,k,s2 equal_outside NAT or Result s1, Result s2 equal_outside NAT )
then A7: s2 = s2 +* (Initialized (stop I)) by FUNCT_4:79;
given k being Element of NAT such that A8: Computation s1,k,s2 equal_outside NAT ; :: thesis: Result s1, Result s2 equal_outside NAT
set s3 = Computation s1,k;
A9: IC SCMPDS in dom (Computation s1,k) by AMI_1:94;
stop I c= Initialized (stop I) by SCMPDS_4:9;
then stop I c= s1 by A3, XBOOLE_1:1;
then A10: stop I c= Computation s1,k by AMI_1:86;
IC (Computation s1,k) = IC (s2 +* (Initialized (stop I))) by A8, A7, AMI_1:121
.= inspos 0 by SCMPDS_6:21 ;
then (IC SCMPDS ) .--> (inspos 0 ) c= Computation s1,k by A9, FUNCOP_1:88;
then (stop I) +* (Start-At (inspos 0 )) c= Computation s1,k by A10, FUNCT_4:92;
then A11: Computation s1,k = (Computation s1,k) +* (Initialized (stop I)) by FUNCT_4:79;
A12: now end;
CurInstr (Computation (Computation s1,k),n) = CurInstr (Computation s1,(k + n)) by AMI_1:51
.= CurInstr (Computation s1,n) by A6, AMI_1:52, NAT_1:11 ;
then ProgramPart (Computation s1,k) halts_on Computation s1,k by A6, AMI_1:146;
then A13: I is_halting_on Computation s1,k by A11, SCMPDS_6:def 3;
A14: DataPart (Computation s1,k) = DataPart s2 by A8, SCMPDS_6:4;
consider k being Element of NAT such that
A15: CurInstr (Computation s1,k) = halt SCMPDS by A5, AMI_1:146;
A16: s1 . (IC (Computation s1,k)) = halt SCMPDS by A15, AMI_1:54;
I is_closed_on Computation s1,k by A11, A12, SCMPDS_6:def 2;
then Result (Computation s1,k), Result s2 equal_outside NAT by A7, A14, A11, A13, Th29;
hence Result s1, Result s2 equal_outside NAT by A16, AMI_1:57; :: thesis: verum