let s be State of SCMPDS; :: thesis: for P being the Instructions of SCMPDS -valued ManySortedSet of NAT
for I being halt-free Program of SCMPDS
for J being shiftable Program of SCMPDS st I is_closed_on s,P & I is_halting_on s,P & J is_closed_on IExec (I,P,s),P & J is_halting_on IExec (I,P,s),P holds
IExec ((I ';' J),P,s) = IncIC ((IExec (J,P,(IExec (I,P,s)))),(card I))

let P be the Instructions of SCMPDS -valued ManySortedSet of NAT ; :: thesis: for I being halt-free Program of SCMPDS
for J being shiftable Program of SCMPDS st I is_closed_on s,P & I is_halting_on s,P & J is_closed_on IExec (I,P,s),P & J is_halting_on IExec (I,P,s),P holds
IExec ((I ';' J),P,s) = IncIC ((IExec (J,P,(IExec (I,P,s)))),(card I))

let I be halt-free Program of SCMPDS; :: thesis: for J being shiftable Program of SCMPDS st I is_closed_on s,P & I is_halting_on s,P & J is_closed_on IExec (I,P,s),P & J is_halting_on IExec (I,P,s),P holds
IExec ((I ';' J),P,s) = IncIC ((IExec (J,P,(IExec (I,P,s)))),(card I))

let J be shiftable Program of SCMPDS; :: thesis: ( I is_closed_on s,P & I is_halting_on s,P & J is_closed_on IExec (I,P,s),P & J is_halting_on IExec (I,P,s),P implies IExec ((I ';' J),P,s) = IncIC ((IExec (J,P,(IExec (I,P,s)))),(card I)) )
set ps = s | NAT;
set IJ = I ';' J;
set s1 = Initialize s;
set P1 = P +* (stop I);
set m1 = LifeSpan ((P +* (stop I)),(Initialize s));
set s2 = Initialize s;
set P2 = P +* (stop (I ';' J));
set s3 = Initialize (Comput ((P +* (stop I)),(Initialize s),(LifeSpan ((P +* (stop I)),(Initialize s)))));
set P3 = (P +* (stop I)) +* (stop J);
set m3 = LifeSpan (((P +* (stop I)) +* (stop J)),(Initialize (Comput ((P +* (stop I)),(Initialize s),(LifeSpan ((P +* (stop I)),(Initialize s)))))));
set sE = IExec (I,P,s);
assume that
A2: I is_closed_on s,P and
A3: I is_halting_on s,P and
A4: J is_closed_on IExec (I,P,s),P and
A5: J is_halting_on IExec (I,P,s),P ; :: thesis: IExec ((I ';' J),P,s) = IncIC ((IExec (J,P,(IExec (I,P,s)))),(card I))
A6: DataPart (Comput ((P +* (stop (I ';' J))),(Initialize s),(LifeSpan ((P +* (stop I)),(Initialize s))))) = DataPart (Initialize (Comput ((P +* (stop I)),(Initialize s),(LifeSpan ((P +* (stop I)),(Initialize s)))))) by A2, A3, A4, A5, Lm1;
J is_closed_on Comput ((P +* (stop I)),(Initialize s),(LifeSpan ((P +* (stop I)),(Initialize s)))),P +* (stop I) by A3, A4, A5, Th42;
then A7: J is_closed_on Initialize (Comput ((P +* (stop I)),(Initialize s),(LifeSpan ((P +* (stop I)),(Initialize s))))),(P +* (stop I)) +* (stop J) by SCMPDS_6:38;
A8: stop J c= (P +* (stop I)) +* (stop J) by FUNCT_4:26;
B8: Start-At (0,SCMPDS) c= Initialize (Comput ((P +* (stop I)),(Initialize s),(LifeSpan ((P +* (stop I)),(Initialize s))))) by FUNCT_4:26;
A9: Shift ((stop J),(card I)) c= P +* (stop (I ';' J)) by A2, A3, A4, A5, Lm1;
A10: IC (Comput ((P +* (stop (I ';' J))),(Initialize s),(LifeSpan ((P +* (stop I)),(Initialize s))))) = card I by A2, A3, A4, A5, Lm1;
then A11: IC (Comput ((P +* (stop (I ';' J))),(Comput ((P +* (stop (I ';' J))),(Initialize s),(LifeSpan ((P +* (stop I)),(Initialize s))))),(LifeSpan (((P +* (stop I)) +* (stop J)),(Initialize (Comput ((P +* (stop I)),(Initialize s),(LifeSpan ((P +* (stop I)),(Initialize s)))))))))) = (IC (Comput (((P +* (stop I)) +* (stop J)),(Initialize (Comput ((P +* (stop I)),(Initialize s),(LifeSpan ((P +* (stop I)),(Initialize s)))))),(LifeSpan (((P +* (stop I)) +* (stop J)),(Initialize (Comput ((P +* (stop I)),(Initialize s),(LifeSpan ((P +* (stop I)),(Initialize s))))))))))) + (card I) by A8, B8, A6, A9, A7, SCMPDS_6:45;
A12: DataPart (Comput ((P +* (stop (I ';' J))),(Comput ((P +* (stop (I ';' J))),(Initialize s),(LifeSpan ((P +* (stop I)),(Initialize s))))),(LifeSpan (((P +* (stop I)) +* (stop J)),(Initialize (Comput ((P +* (stop I)),(Initialize s),(LifeSpan ((P +* (stop I)),(Initialize s)))))))))) = DataPart (Comput (((P +* (stop I)) +* (stop J)),(Initialize (Comput ((P +* (stop I)),(Initialize s),(LifeSpan ((P +* (stop I)),(Initialize s)))))),(LifeSpan (((P +* (stop I)) +* (stop J)),(Initialize (Comput ((P +* (stop I)),(Initialize s),(LifeSpan ((P +* (stop I)),(Initialize s)))))))))) by A8, B8, A10, A6, A9, A7, SCMPDS_6:45;
set R1 = Initialize (IExec (I,P,s));
set R2 = Initialize (Result ((P +* (stop I)),(Initialize s)));
A17: dom (s | NAT) = (dom s) /\ NAT by RELAT_1:90
.= (({(IC )} \/ SCM-Data-Loc) \/ NAT) /\ NAT by SCMPDS_4:19
.= NAT by XBOOLE_1:21 ;
B18: stop J c= P +* (stop J) by FUNCT_4:26;
B19: stop J c= (P +* (stop I)) +* (stop J) by FUNCT_4:26;
NPP (Comput ((P +* (stop I)),(Initialize s),(LifeSpan ((P +* (stop I)),(Initialize s))))) = NPP ((Comput ((P +* (stop I)),(Initialize s),(LifeSpan ((P +* (stop I)),(Initialize s))))) +* (s | NAT)) by COMPOS_1:236;
then A20: NPP (Comput ((P +* (stop I)),(Initialize s),(LifeSpan ((P +* (stop I)),(Initialize s))))) = NPP ((Comput ((P +* (stop I)),(Initialize s),(LifeSpan ((P +* (stop I)),(Initialize s))))) +* (s | NAT)) ;
A22: P +* (stop I) halts_on Initialize s by A3, SCMPDS_6:def 3;
then A23: Initialize (Comput ((P +* (stop I)),(Initialize s),(LifeSpan ((P +* (stop I)),(Initialize s))))) = Initialize (Result ((P +* (stop I)),(Initialize s))) by EXTPRO_1:23;
A24: DataPart (IExec (I,P,s)) = DataPart (Initialize (IExec (I,P,s))) by COMPOS_1:80;
then A25: J is_closed_on Initialize (IExec (I,P,s)),P +* (stop J) by A4, A5, SCMPDS_6:37;
A26: J is_halting_on Initialize (IExec (I,P,s)),P +* (stop J) by A4, A5, A24, SCMPDS_6:37;
X1: Start-At (0,SCMPDS) c= Initialize (IExec (I,P,s)) by FUNCT_4:26;
X2: Start-At (0,SCMPDS) c= Initialize (Result ((P +* (stop I)),(Initialize s))) by FUNCT_4:26;
Result ((P +* (stop I)),(Initialize s)) = Comput ((P +* (stop I)),(Initialize s),(LifeSpan ((P +* (stop I)),(Initialize s)))) by A22, EXTPRO_1:23;
then NPP ((Result ((P +* (stop I)),(Initialize s))) +* (s | NAT)) = NPP (Result ((P +* (stop I)),(Initialize s))) by A20;
then NPP (IExec (I,P,s)) = NPP (Result ((P +* (stop I)),(Initialize s))) ;
then NPP (Initialize (IExec (I,P,s))) = NPP (Initialize (Result ((P +* (stop I)),(Initialize s)))) by COMPOS_1:81;
then NPP (Result ((P +* (stop J)),(Initialize (IExec (I,P,s))))) = NPP (Result (((P +* (stop I)) +* (stop J)),(Initialize (Result ((P +* (stop I)),(Initialize s)))))) by X1, X2, B18, B19, A25, A26, Th28;
then NPP (Result (((P +* (stop I)) +* (stop J)),(Initialize (Result ((P +* (stop I)),(Initialize s)))))) = NPP (Result ((P +* (stop J)),(Initialize (IExec (I,P,s))))) ;
then A27: IC (Result (((P +* (stop I)) +* (stop J)),(Initialize (Result ((P +* (stop I)),(Initialize s)))))) = IC (Result ((P +* (stop J)),(Initialize (IExec (I,P,s))))) by COMPOS_1:230;
A29: (IExec (I,P,s)) | NAT = s | NAT by PBOOLE:157;
I ';' J is_halting_on s,P by A2, A3, A4, A5, Th43;
then A30: P +* (stop (I ';' J)) halts_on Initialize s by SCMPDS_6:def 3;
J is_halting_on Comput ((P +* (stop I)),(Initialize s),(LifeSpan ((P +* (stop I)),(Initialize s)))),P +* (stop I) by A3, A4, A5, Th42;
then A31: (P +* (stop I)) +* (stop J) halts_on Initialize (Comput ((P +* (stop I)),(Initialize s),(LifeSpan ((P +* (stop I)),(Initialize s))))) by SCMPDS_6:def 3;
SS: Start-At (0,SCMPDS) c= Initialize (Comput ((P +* (stop I)),(Initialize s),(LifeSpan ((P +* (stop I)),(Initialize s))))) by FUNCT_4:26;
IExec (I,P,s) = (Comput ((P +* (stop I)),(Initialize s),(LifeSpan ((P +* (stop I)),(Initialize s))))) +* (s | NAT) by A22, EXTPRO_1:23;
then NPP (IExec (I,P,s)) = NPP (Comput ((P +* (stop I)),(Initialize s),(LifeSpan ((P +* (stop I)),(Initialize s))))) by A20;
then TT: NPP (Initialize (IExec (I,P,s))) = NPP (Initialize (Comput ((P +* (stop I)),(Initialize s),(LifeSpan ((P +* (stop I)),(Initialize s)))))) by COMPOS_1:81;
NPP (Result ((P +* (stop J)),(Initialize (IExec (I,P,s))))) = NPP (Result (((P +* (stop I)) +* (stop J)),(Initialize (Comput ((P +* (stop I)),(Initialize s),(LifeSpan ((P +* (stop I)),(Initialize s)))))))) by X1, B18, B19, A25, A26, Th28, SS, TT;
then NPP (Result ((P +* (stop J)),(Initialize (IExec (I,P,s))))) = NPP (Result (((P +* (stop I)) +* (stop J)),(Initialize (Comput ((P +* (stop I)),(Initialize s),(LifeSpan ((P +* (stop I)),(Initialize s)))))))) ;
then (Result ((P +* (stop J)),(Initialize (IExec (I,P,s))))) +* (s | NAT) = (Result (((P +* (stop I)) +* (stop J)),(Initialize (Comput ((P +* (stop I)),(Initialize s),(LifeSpan ((P +* (stop I)),(Initialize s)))))))) +* (s | NAT) by A17, COMPOS_1:238;
then A32: IExec (J,P,(IExec (I,P,s))) = (Comput (((P +* (stop I)) +* (stop J)),(Initialize (Comput ((P +* (stop I)),(Initialize s),(LifeSpan ((P +* (stop I)),(Initialize s)))))),(LifeSpan (((P +* (stop I)) +* (stop J)),(Initialize (Comput ((P +* (stop I)),(Initialize s),(LifeSpan ((P +* (stop I)),(Initialize s)))))))))) +* (s | NAT) by A31, A29, EXTPRO_1:23;
A34: Result ((P +* (stop I)),(Initialize s)) = Comput ((P +* (stop I)),(Initialize s),(LifeSpan ((P +* (stop I)),(Initialize s)))) by A22, EXTPRO_1:23;
A35: IC (IExec ((I ';' J),P,s)) = IC (Result ((P +* (stop (I ';' J))),(Initialize s))) by SCMPDS_5:22
.= IC (Comput ((P +* (stop (I ';' J))),(Initialize s),(LifeSpan ((P +* (stop (I ';' J))),(Initialize s))))) by A30, EXTPRO_1:23
.= IC (Comput ((P +* (stop (I ';' J))),(Initialize s),((LifeSpan ((P +* (stop I)),(Initialize s))) + (LifeSpan (((P +* (stop I)) +* (stop J)),(Initialize (Comput ((P +* (stop I)),(Initialize s),(LifeSpan ((P +* (stop I)),(Initialize s))))))))))) by A2, A3, A4, A5, A23, Lm1
.= (IC (Comput (((P +* (stop I)) +* (stop J)),(Initialize (Comput ((P +* (stop I)),(Initialize s),(LifeSpan ((P +* (stop I)),(Initialize s)))))),(LifeSpan (((P +* (stop I)) +* (stop J)),(Initialize (Comput ((P +* (stop I)),(Initialize s),(LifeSpan ((P +* (stop I)),(Initialize s))))))))))) + (card I) by A11, EXTPRO_1:5
.= (IC (Result (((P +* (stop I)) +* (stop J)),(Initialize (Comput ((P +* (stop I)),(Initialize s),(LifeSpan ((P +* (stop I)),(Initialize s))))))))) + (card I) by A31, EXTPRO_1:23
.= (IC (Result (((P +* (stop I)) +* (stop J)),(Initialize (Result ((P +* (stop I)),(Initialize s))))))) + (card I) by A34
.= (IC (IExec (J,P,(IExec (I,P,s))))) + (card I) by A27, SCMPDS_5:22 ;
IExec ((I ';' J),P,s) = (Comput ((P +* (stop (I ';' J))),(Initialize s),(LifeSpan ((P +* (stop (I ';' J))),(Initialize s))))) +* (s | NAT) by A30, EXTPRO_1:23
.= (Comput ((P +* (stop (I ';' J))),(Initialize s),((LifeSpan ((P +* (stop I)),(Initialize s))) + (LifeSpan (((P +* (stop I)) +* (stop J)),(Initialize (Comput ((P +* (stop I)),(Initialize s),(LifeSpan ((P +* (stop I)),(Initialize s))))))))))) +* (s | NAT) by A2, A3, A4, A5, A23, Lm1 ;
then A36: DataPart (IExec ((I ';' J),P,s)) = DataPart (Comput ((P +* (stop (I ';' J))),(Initialize s),((LifeSpan ((P +* (stop I)),(Initialize s))) + (LifeSpan (((P +* (stop I)) +* (stop J)),(Initialize (Comput ((P +* (stop I)),(Initialize s),(LifeSpan ((P +* (stop I)),(Initialize s))))))))))) by A17, AMI_2:29, FUNCT_4:76, SCMPDS_2:100
.= DataPart (Comput (((P +* (stop I)) +* (stop J)),(Initialize (Comput ((P +* (stop I)),(Initialize s),(LifeSpan ((P +* (stop I)),(Initialize s)))))),(LifeSpan (((P +* (stop I)) +* (stop J)),(Initialize (Comput ((P +* (stop I)),(Initialize s),(LifeSpan ((P +* (stop I)),(Initialize s)))))))))) by A12, EXTPRO_1:5
.= DataPart (IExec (J,P,(IExec (I,P,s)))) by A17, A32, AMI_2:29, FUNCT_4:76, SCMPDS_2:100 ;
hereby :: thesis: verum
reconsider l = (IC (IExec (J,P,(IExec (I,P,s))))) + (card I) as Element of NAT ;
A37: dom (Start-At (l,SCMPDS)) = {(IC )} by FUNCOP_1:19;
A38: now
let x be set ; :: thesis: ( x in dom (IExec ((I ';' J),P,s)) implies (IExec ((I ';' J),P,s)) . b1 = ((IExec (J,P,(IExec (I,P,s)))) +* (Start-At (((IC (IExec (J,P,(IExec (I,P,s))))) + (card I)),SCMPDS))) . b1 )
assume A39: x in dom (IExec ((I ';' J),P,s)) ; :: thesis: (IExec ((I ';' J),P,s)) . b1 = ((IExec (J,P,(IExec (I,P,s)))) +* (Start-At (((IC (IExec (J,P,(IExec (I,P,s))))) + (card I)),SCMPDS))) . b1
per cases ( x is Int_position or x = IC or x is Element of NAT ) by A39, SCMPDS_4:20;
suppose A40: x is Int_position ; :: thesis: (IExec ((I ';' J),P,s)) . b1 = ((IExec (J,P,(IExec (I,P,s)))) +* (Start-At (((IC (IExec (J,P,(IExec (I,P,s))))) + (card I)),SCMPDS))) . b1
then x <> IC by SCMPDS_2:52;
then A41: not x in dom (Start-At (l,SCMPDS)) by A37, TARSKI:def 1;
(IExec ((I ';' J),P,s)) . x = (IExec (J,P,(IExec (I,P,s)))) . x by A36, A40, SCMPDS_4:23;
hence (IExec ((I ';' J),P,s)) . x = ((IExec (J,P,(IExec (I,P,s)))) +* (Start-At (((IC (IExec (J,P,(IExec (I,P,s))))) + (card I)),SCMPDS))) . x by A41, FUNCT_4:12; :: thesis: verum
end;
suppose A42: x = IC ; :: thesis: (IExec ((I ';' J),P,s)) . b1 = ((IExec (J,P,(IExec (I,P,s)))) +* (Start-At (((IC (IExec (J,P,(IExec (I,P,s))))) + (card I)),SCMPDS))) . b1
then x in {(IC )} by TARSKI:def 1;
then A43: x in dom (Start-At (l,SCMPDS)) by FUNCOP_1:19;
thus (IExec ((I ';' J),P,s)) . x = (Start-At (l,SCMPDS)) . (IC ) by A35, A42, FUNCOP_1:87
.= ((IExec (J,P,(IExec (I,P,s)))) +* (Start-At (((IC (IExec (J,P,(IExec (I,P,s))))) + (card I)),SCMPDS))) . x by A42, A43, FUNCT_4:14 ; :: thesis: verum
end;
suppose A44: x is Element of NAT ; :: thesis: (IExec ((I ';' J),P,s)) . b1 = ((IExec (J,P,(IExec (I,P,s)))) +* (Start-At (((IC (IExec (J,P,(IExec (I,P,s))))) + (card I)),SCMPDS))) . b1
then x <> IC by COMPOS_1:3;
then A45: not x in dom (Start-At (l,SCMPDS)) by A37, TARSKI:def 1;
(IExec ((I ';' J),P,s)) | NAT = s | NAT by PBOOLE:157
.= (IExec (J,P,(IExec (I,P,s)))) | NAT by A29, PBOOLE:157 ;
then (IExec ((I ';' J),P,s)) . x = (IExec (J,P,(IExec (I,P,s)))) . x by A44, COMPOS_1:127;
hence (IExec ((I ';' J),P,s)) . x = ((IExec (J,P,(IExec (I,P,s)))) +* (Start-At (((IC (IExec (J,P,(IExec (I,P,s))))) + (card I)),SCMPDS))) . x by A45, FUNCT_4:12; :: thesis: verum
end;
end;
end;
dom (IExec ((I ';' J),P,s)) = the carrier of SCMPDS by PARTFUN1:def 4
.= dom ((IExec (J,P,(IExec (I,P,s)))) +* (Start-At (((IC (IExec (J,P,(IExec (I,P,s))))) + (card I)),SCMPDS))) by PARTFUN1:def 4 ;
hence IExec ((I ';' J),P,s) = IncIC ((IExec (J,P,(IExec (I,P,s)))),(card I)) by A38, FUNCT_1:9; :: thesis: verum
end;