let m, n be Element of NAT ; :: thesis: for s, s1 being State of SCMPDS
for J being parahalting shiftable Program of SCMPDS st s = Comput (ProgramPart (s1 +* (Initialize (stop J)))),(s1 +* (Initialize (stop J))),m holds
Exec (CurInstr (ProgramPart s),s),(s +* (Start-At ((IC s) + n),SCMPDS )) = (Following (ProgramPart s),s) +* (Start-At ((IC (Following (ProgramPart s),s)) + n),SCMPDS )

let s, s1 be State of SCMPDS ; :: thesis: for J being parahalting shiftable Program of SCMPDS st s = Comput (ProgramPart (s1 +* (Initialize (stop J)))),(s1 +* (Initialize (stop J))),m holds
Exec (CurInstr (ProgramPart s),s),(s +* (Start-At ((IC s) + n),SCMPDS )) = (Following (ProgramPart s),s) +* (Start-At ((IC (Following (ProgramPart s),s)) + n),SCMPDS )

let J be parahalting shiftable Program of SCMPDS ; :: thesis: ( s = Comput (ProgramPart (s1 +* (Initialize (stop J)))),(s1 +* (Initialize (stop J))),m implies Exec (CurInstr (ProgramPart s),s),(s +* (Start-At ((IC s) + n),SCMPDS )) = (Following (ProgramPart s),s) +* (Start-At ((IC (Following (ProgramPart s),s)) + n),SCMPDS ) )
set pJ = stop J;
set IsJ = Initialize (stop J);
set s2 = s1 +* (Initialize (stop J));
set i = CurInstr (ProgramPart s),s;
set ss = s +* (Start-At ((IC s) + n),SCMPDS );
reconsider k = IC s as Element of NAT ;
reconsider Nl = succ (IC s) as Element of NAT ;
A1: succ (IC (s +* (Start-At ((IC s) + n),SCMPDS ))) = (k + n) + 1 by FUNCT_4:121
.= IC ((Exec (CurInstr (ProgramPart s),s),s) +* (Start-At (Nl + n),SCMPDS )) by FUNCT_4:121 ;
A2: Initialize (stop J) c= s1 +* (Initialize (stop J)) by FUNCT_4:26;
assume A3: s = Comput (ProgramPart (s1 +* (Initialize (stop J)))),(s1 +* (Initialize (stop J))),m ; :: thesis: Exec (CurInstr (ProgramPart s),s),(s +* (Start-At ((IC s) + n),SCMPDS )) = (Following (ProgramPart s),s) +* (Start-At ((IC (Following (ProgramPart s),s)) + n),SCMPDS )
then A4: IC s in dom (stop J) by A2, SCMPDS_4:def 9;
reconsider n1 = IC s as Element of NAT ;
set IEn = (IC (Exec (CurInstr (ProgramPart s),s),s)) + n;
A5: IC (s +* (Start-At ((IC s) + n),SCMPDS )) = (IC s) + n by FUNCT_4:121;
A6: now
let d be Element of NAT ; :: thesis: (Exec (CurInstr (ProgramPart s),s),(s +* (Start-At ((IC s) + n),SCMPDS ))) . d = ((Exec (CurInstr (ProgramPart s),s),s) +* (Start-At ((IC (Exec (CurInstr (ProgramPart s),s),s)) + n),SCMPDS )) . d
thus (Exec (CurInstr (ProgramPart s),s),(s +* (Start-At ((IC s) + n),SCMPDS ))) . d = (s +* (Start-At ((IC s) + n),SCMPDS )) . d by AMI_1:def 13
.= s . d by COMPOS_1:20
.= (Exec (CurInstr (ProgramPart s),s),s) . d by AMI_1:def 13
.= ((Exec (CurInstr (ProgramPart s),s),s) +* (Start-At ((IC (Exec (CurInstr (ProgramPart s),s),s)) + n),SCMPDS )) . d by COMPOS_1:20 ; :: thesis: verum
end;
Y: (ProgramPart s) /. (IC s) = s . (IC s) by COMPOS_1:38;
stop J c= s by A3, A2, AMI_1:81, SCMPDS_4:57;
then A7: CurInstr (ProgramPart s),s = (stop J) . n1 by A4, Y, GRFUNC_1:8;
then A8: InsCode (CurInstr (ProgramPart s),s) <> 1 by A4, SCMPDS_4:def 12;
A9: CurInstr (ProgramPart s),s valid_at n1 by A4, A7, SCMPDS_4:def 12;
A10: InsCode (CurInstr (ProgramPart s),s) <> 3 by A4, A7, SCMPDS_4:def 12;
per cases ( InsCode (CurInstr (ProgramPart s),s) = 0 or InsCode (CurInstr (ProgramPart s),s) = 2 or InsCode (CurInstr (ProgramPart s),s) = 4 or InsCode (CurInstr (ProgramPart s),s) = 5 or InsCode (CurInstr (ProgramPart s),s) = 6 or InsCode (CurInstr (ProgramPart s),s) = 7 or InsCode (CurInstr (ProgramPart s),s) = 8 or InsCode (CurInstr (ProgramPart s),s) = 9 or InsCode (CurInstr (ProgramPart s),s) = 10 or InsCode (CurInstr (ProgramPart s),s) = 11 or InsCode (CurInstr (ProgramPart s),s) = 12 or InsCode (CurInstr (ProgramPart s),s) = 13 ) by A8, A10, NAT_1:38, SCMPDS_2:15;
suppose InsCode (CurInstr (ProgramPart s),s) = 0 ; :: thesis: Exec (CurInstr (ProgramPart s),s),(s +* (Start-At ((IC s) + n),SCMPDS )) = (Following (ProgramPart s),s) +* (Start-At ((IC (Following (ProgramPart s),s)) + n),SCMPDS )
then consider k1 being Integer such that
A12: CurInstr (ProgramPart s),s = goto k1 and
A13: n1 + k1 >= 0 by A9, SCMPDS_4:def 11;
A14: IC (Exec (CurInstr (ProgramPart s),s),s) = ICplusConst s,k1 by A12, SCMPDS_2:66;
A15: now
let b be Int_position ; :: thesis: (Exec (CurInstr (ProgramPart s),s),(s +* (Start-At ((IC s) + n),SCMPDS ))) . b = ((Exec (CurInstr (ProgramPart s),s),s) +* (Start-At ((IC (Exec (CurInstr (ProgramPart s),s),s)) + n),SCMPDS )) . b
thus (Exec (CurInstr (ProgramPart s),s),(s +* (Start-At ((IC s) + n),SCMPDS ))) . b = (s +* (Start-At ((IC s) + n),SCMPDS )) . b by A12, SCMPDS_2:66
.= s . b by SCMPDS_3:14
.= (Exec (CurInstr (ProgramPart s),s),s) . b by A12, SCMPDS_2:66
.= ((Exec (CurInstr (ProgramPart s),s),s) +* (Start-At ((IC (Exec (CurInstr (ProgramPart s),s),s)) + n),SCMPDS )) . b by SCMPDS_3:14 ; :: thesis: verum
end;
IC (Exec (CurInstr (ProgramPart s),s),(s +* (Start-At ((IC s) + n),SCMPDS ))) = ICplusConst (s +* (Start-At ((IC s) + n),SCMPDS )),k1 by A12, SCMPDS_2:66
.= (IC (Exec (CurInstr (ProgramPart s),s),s)) + n by A5, A13, A14, SCMPDS_4:82
.= IC ((Exec (CurInstr (ProgramPart s),s),s) +* (Start-At ((IC (Exec (CurInstr (ProgramPart s),s),s)) + n),SCMPDS )) by FUNCT_4:121 ;
hence Exec (CurInstr (ProgramPart s),s),(s +* (Start-At ((IC s) + n),SCMPDS )) = (Following (ProgramPart s),s) +* (Start-At ((IC (Following (ProgramPart s),s)) + n),SCMPDS ) by A6, A15, SCMPDS_2:54; :: thesis: verum
end;
suppose InsCode (CurInstr (ProgramPart s),s) = 2 ; :: thesis: Exec (CurInstr (ProgramPart s),s),(s +* (Start-At ((IC s) + n),SCMPDS )) = (Following (ProgramPart s),s) +* (Start-At ((IC (Following (ProgramPart s),s)) + n),SCMPDS )
then consider a being Int_position , k1 being Integer such that
A16: CurInstr (ProgramPart s),s = a := k1 by SCMPDS_2:37;
A17: now
let b be Int_position ; :: thesis: (Exec (CurInstr (ProgramPart s),s),(s +* (Start-At ((IC s) + n),SCMPDS ))) . b1 = ((Exec (CurInstr (ProgramPart s),s),s) +* (Start-At ((IC (Exec (CurInstr (ProgramPart s),s),s)) + n),SCMPDS )) . b1
per cases ( a = b or a <> b ) ;
suppose A18: a = b ; :: thesis: (Exec (CurInstr (ProgramPart s),s),(s +* (Start-At ((IC s) + n),SCMPDS ))) . b1 = ((Exec (CurInstr (ProgramPart s),s),s) +* (Start-At ((IC (Exec (CurInstr (ProgramPart s),s),s)) + n),SCMPDS )) . b1
hence (Exec (CurInstr (ProgramPart s),s),(s +* (Start-At ((IC s) + n),SCMPDS ))) . b = k1 by A16, SCMPDS_2:57
.= (Exec (CurInstr (ProgramPart s),s),s) . b by A16, A18, SCMPDS_2:57
.= ((Exec (CurInstr (ProgramPart s),s),s) +* (Start-At ((IC (Exec (CurInstr (ProgramPart s),s),s)) + n),SCMPDS )) . b by SCMPDS_3:14 ;
:: thesis: verum
end;
suppose A19: a <> b ; :: thesis: (Exec (CurInstr (ProgramPart s),s),(s +* (Start-At ((IC s) + n),SCMPDS ))) . b1 = ((Exec (CurInstr (ProgramPart s),s),s) +* (Start-At ((IC (Exec (CurInstr (ProgramPart s),s),s)) + n),SCMPDS )) . b1
hence (Exec (CurInstr (ProgramPart s),s),(s +* (Start-At ((IC s) + n),SCMPDS ))) . b = (s +* (Start-At ((IC s) + n),SCMPDS )) . b by A16, SCMPDS_2:57
.= s . b by SCMPDS_3:14
.= (Exec (CurInstr (ProgramPart s),s),s) . b by A16, A19, SCMPDS_2:57
.= ((Exec (CurInstr (ProgramPart s),s),s) +* (Start-At ((IC (Exec (CurInstr (ProgramPart s),s),s)) + n),SCMPDS )) . b by SCMPDS_3:14 ;
:: thesis: verum
end;
end;
end;
IC (Exec (CurInstr (ProgramPart s),s),s) = Nl by A16, SCMPDS_2:57;
then IC (Exec (CurInstr (ProgramPart s),s),(s +* (Start-At ((IC s) + n),SCMPDS ))) = IC ((Exec (CurInstr (ProgramPart s),s),s) +* (Start-At ((IC (Exec (CurInstr (ProgramPart s),s),s)) + n),SCMPDS )) by A1, A16, SCMPDS_2:57;
hence Exec (CurInstr (ProgramPart s),s),(s +* (Start-At ((IC s) + n),SCMPDS )) = (Following (ProgramPart s),s) +* (Start-At ((IC (Following (ProgramPart s),s)) + n),SCMPDS ) by A6, A17, SCMPDS_2:54; :: thesis: verum
end;
suppose InsCode (CurInstr (ProgramPart s),s) = 4 ; :: thesis: Exec (CurInstr (ProgramPart s),s),(s +* (Start-At ((IC s) + n),SCMPDS )) = (Following (ProgramPart s),s) +* (Start-At ((IC (Following (ProgramPart s),s)) + n),SCMPDS )
then consider a being Int_position , k1, k2 being Integer such that
A20: CurInstr (ProgramPart s),s = a,k1 <>0_goto k2 and
A21: n1 + k2 >= 0 by A9, SCMPDS_4:def 11;
A22: now
per cases ( s . (DataLoc (s . a),k1) <> 0 or s . (DataLoc (s . a),k1) = 0 ) ;
suppose A23: s . (DataLoc (s . a),k1) <> 0 ; :: thesis: IC (Exec (CurInstr (ProgramPart s),s),(s +* (Start-At ((IC s) + n),SCMPDS ))) = IC ((Exec (CurInstr (ProgramPart s),s),s) +* (Start-At ((IC (Exec (CurInstr (ProgramPart s),s),s)) + n),SCMPDS ))
then A24: IC (Exec (CurInstr (ProgramPart s),s),s) = ICplusConst s,k2 by A20, SCMPDS_2:67;
(s +* (Start-At ((IC s) + n),SCMPDS )) . (DataLoc (s . a),k1) <> 0 by A23, SCMPDS_3:14;
then (s +* (Start-At ((IC s) + n),SCMPDS )) . (DataLoc ((s +* (Start-At ((IC s) + n),SCMPDS )) . a),k1) <> 0 by SCMPDS_3:14;
hence IC (Exec (CurInstr (ProgramPart s),s),(s +* (Start-At ((IC s) + n),SCMPDS ))) = ICplusConst (s +* (Start-At ((IC s) + n),SCMPDS )),k2 by A20, SCMPDS_2:67
.= (IC (Exec (CurInstr (ProgramPart s),s),s)) + n by A5, A21, A24, SCMPDS_4:82
.= IC ((Exec (CurInstr (ProgramPart s),s),s) +* (Start-At ((IC (Exec (CurInstr (ProgramPart s),s),s)) + n),SCMPDS )) by FUNCT_4:121 ;
:: thesis: verum
end;
suppose A25: s . (DataLoc (s . a),k1) = 0 ; :: thesis: IC (Exec (CurInstr (ProgramPart s),s),(s +* (Start-At ((IC s) + n),SCMPDS ))) = IC ((Exec (CurInstr (ProgramPart s),s),s) +* (Start-At ((IC (Exec (CurInstr (ProgramPart s),s),s)) + n),SCMPDS ))
then (s +* (Start-At ((IC s) + n),SCMPDS )) . (DataLoc (s . a),k1) = 0 by SCMPDS_3:14;
then A26: (s +* (Start-At ((IC s) + n),SCMPDS )) . (DataLoc ((s +* (Start-At ((IC s) + n),SCMPDS )) . a),k1) = 0 by SCMPDS_3:14;
IC (Exec (CurInstr (ProgramPart s),s),s) = Nl by A20, A25, SCMPDS_2:67;
hence IC (Exec (CurInstr (ProgramPart s),s),(s +* (Start-At ((IC s) + n),SCMPDS ))) = IC ((Exec (CurInstr (ProgramPart s),s),s) +* (Start-At ((IC (Exec (CurInstr (ProgramPart s),s),s)) + n),SCMPDS )) by A1, A20, A26, SCMPDS_2:67; :: thesis: verum
end;
end;
end;
now
let b be Int_position ; :: thesis: (Exec (CurInstr (ProgramPart s),s),(s +* (Start-At ((IC s) + n),SCMPDS ))) . b = ((Exec (CurInstr (ProgramPart s),s),s) +* (Start-At ((IC (Exec (CurInstr (ProgramPart s),s),s)) + n),SCMPDS )) . b
thus (Exec (CurInstr (ProgramPart s),s),(s +* (Start-At ((IC s) + n),SCMPDS ))) . b = (s +* (Start-At ((IC s) + n),SCMPDS )) . b by A20, SCMPDS_2:67
.= s . b by SCMPDS_3:14
.= (Exec (CurInstr (ProgramPart s),s),s) . b by A20, SCMPDS_2:67
.= ((Exec (CurInstr (ProgramPart s),s),s) +* (Start-At ((IC (Exec (CurInstr (ProgramPart s),s),s)) + n),SCMPDS )) . b by SCMPDS_3:14 ; :: thesis: verum
end;
hence Exec (CurInstr (ProgramPart s),s),(s +* (Start-At ((IC s) + n),SCMPDS )) = (Following (ProgramPart s),s) +* (Start-At ((IC (Following (ProgramPart s),s)) + n),SCMPDS ) by A6, A22, SCMPDS_2:54; :: thesis: verum
end;
suppose InsCode (CurInstr (ProgramPart s),s) = 5 ; :: thesis: Exec (CurInstr (ProgramPart s),s),(s +* (Start-At ((IC s) + n),SCMPDS )) = (Following (ProgramPart s),s) +* (Start-At ((IC (Following (ProgramPart s),s)) + n),SCMPDS )
then consider a being Int_position , k1, k2 being Integer such that
A27: CurInstr (ProgramPart s),s = a,k1 <=0_goto k2 and
A28: n1 + k2 >= 0 by A9, SCMPDS_4:def 11;
A29: now
per cases ( s . (DataLoc (s . a),k1) <= 0 or s . (DataLoc (s . a),k1) > 0 ) ;
suppose A30: s . (DataLoc (s . a),k1) <= 0 ; :: thesis: IC (Exec (CurInstr (ProgramPart s),s),(s +* (Start-At ((IC s) + n),SCMPDS ))) = IC ((Exec (CurInstr (ProgramPart s),s),s) +* (Start-At ((IC (Exec (CurInstr (ProgramPart s),s),s)) + n),SCMPDS ))
then A31: IC (Exec (CurInstr (ProgramPart s),s),s) = ICplusConst s,k2 by A27, SCMPDS_2:68;
(s +* (Start-At ((IC s) + n),SCMPDS )) . (DataLoc (s . a),k1) <= 0 by A30, SCMPDS_3:14;
then (s +* (Start-At ((IC s) + n),SCMPDS )) . (DataLoc ((s +* (Start-At ((IC s) + n),SCMPDS )) . a),k1) <= 0 by SCMPDS_3:14;
hence IC (Exec (CurInstr (ProgramPart s),s),(s +* (Start-At ((IC s) + n),SCMPDS ))) = ICplusConst (s +* (Start-At ((IC s) + n),SCMPDS )),k2 by A27, SCMPDS_2:68
.= (IC (Exec (CurInstr (ProgramPart s),s),s)) + n by A5, A28, A31, SCMPDS_4:82
.= IC ((Exec (CurInstr (ProgramPart s),s),s) +* (Start-At ((IC (Exec (CurInstr (ProgramPart s),s),s)) + n),SCMPDS )) by FUNCT_4:121 ;
:: thesis: verum
end;
suppose A32: s . (DataLoc (s . a),k1) > 0 ; :: thesis: IC (Exec (CurInstr (ProgramPart s),s),(s +* (Start-At ((IC s) + n),SCMPDS ))) = IC ((Exec (CurInstr (ProgramPart s),s),s) +* (Start-At ((IC (Exec (CurInstr (ProgramPart s),s),s)) + n),SCMPDS ))
then (s +* (Start-At ((IC s) + n),SCMPDS )) . (DataLoc (s . a),k1) > 0 by SCMPDS_3:14;
then A33: (s +* (Start-At ((IC s) + n),SCMPDS )) . (DataLoc ((s +* (Start-At ((IC s) + n),SCMPDS )) . a),k1) > 0 by SCMPDS_3:14;
IC (Exec (CurInstr (ProgramPart s),s),s) = Nl by A27, A32, SCMPDS_2:68;
hence IC (Exec (CurInstr (ProgramPart s),s),(s +* (Start-At ((IC s) + n),SCMPDS ))) = IC ((Exec (CurInstr (ProgramPart s),s),s) +* (Start-At ((IC (Exec (CurInstr (ProgramPart s),s),s)) + n),SCMPDS )) by A1, A27, A33, SCMPDS_2:68; :: thesis: verum
end;
end;
end;
now
let b be Int_position ; :: thesis: (Exec (CurInstr (ProgramPart s),s),(s +* (Start-At ((IC s) + n),SCMPDS ))) . b = ((Exec (CurInstr (ProgramPart s),s),s) +* (Start-At ((IC (Exec (CurInstr (ProgramPart s),s),s)) + n),SCMPDS )) . b
thus (Exec (CurInstr (ProgramPart s),s),(s +* (Start-At ((IC s) + n),SCMPDS ))) . b = (s +* (Start-At ((IC s) + n),SCMPDS )) . b by A27, SCMPDS_2:68
.= s . b by SCMPDS_3:14
.= (Exec (CurInstr (ProgramPart s),s),s) . b by A27, SCMPDS_2:68
.= ((Exec (CurInstr (ProgramPart s),s),s) +* (Start-At ((IC (Exec (CurInstr (ProgramPart s),s),s)) + n),SCMPDS )) . b by SCMPDS_3:14 ; :: thesis: verum
end;
hence Exec (CurInstr (ProgramPart s),s),(s +* (Start-At ((IC s) + n),SCMPDS )) = (Following (ProgramPart s),s) +* (Start-At ((IC (Following (ProgramPart s),s)) + n),SCMPDS ) by A6, A29, SCMPDS_2:54; :: thesis: verum
end;
suppose InsCode (CurInstr (ProgramPart s),s) = 6 ; :: thesis: Exec (CurInstr (ProgramPart s),s),(s +* (Start-At ((IC s) + n),SCMPDS )) = (Following (ProgramPart s),s) +* (Start-At ((IC (Following (ProgramPart s),s)) + n),SCMPDS )
then consider a being Int_position , k1, k2 being Integer such that
A34: CurInstr (ProgramPart s),s = a,k1 >=0_goto k2 and
A35: n1 + k2 >= 0 by A9, SCMPDS_4:def 11;
A36: now
per cases ( s . (DataLoc (s . a),k1) >= 0 or s . (DataLoc (s . a),k1) < 0 ) ;
suppose A37: s . (DataLoc (s . a),k1) >= 0 ; :: thesis: IC (Exec (CurInstr (ProgramPart s),s),(s +* (Start-At ((IC s) + n),SCMPDS ))) = IC ((Exec (CurInstr (ProgramPart s),s),s) +* (Start-At ((IC (Exec (CurInstr (ProgramPart s),s),s)) + n),SCMPDS ))
then A38: IC (Exec (CurInstr (ProgramPart s),s),s) = ICplusConst s,k2 by A34, SCMPDS_2:69;
(s +* (Start-At ((IC s) + n),SCMPDS )) . (DataLoc (s . a),k1) >= 0 by A37, SCMPDS_3:14;
then (s +* (Start-At ((IC s) + n),SCMPDS )) . (DataLoc ((s +* (Start-At ((IC s) + n),SCMPDS )) . a),k1) >= 0 by SCMPDS_3:14;
hence IC (Exec (CurInstr (ProgramPart s),s),(s +* (Start-At ((IC s) + n),SCMPDS ))) = ICplusConst (s +* (Start-At ((IC s) + n),SCMPDS )),k2 by A34, SCMPDS_2:69
.= (IC (Exec (CurInstr (ProgramPart s),s),s)) + n by A5, A35, A38, SCMPDS_4:82
.= IC ((Exec (CurInstr (ProgramPart s),s),s) +* (Start-At ((IC (Exec (CurInstr (ProgramPart s),s),s)) + n),SCMPDS )) by FUNCT_4:121 ;
:: thesis: verum
end;
suppose A39: s . (DataLoc (s . a),k1) < 0 ; :: thesis: IC (Exec (CurInstr (ProgramPart s),s),(s +* (Start-At ((IC s) + n),SCMPDS ))) = IC ((Exec (CurInstr (ProgramPart s),s),s) +* (Start-At ((IC (Exec (CurInstr (ProgramPart s),s),s)) + n),SCMPDS ))
then (s +* (Start-At ((IC s) + n),SCMPDS )) . (DataLoc (s . a),k1) < 0 by SCMPDS_3:14;
then A40: (s +* (Start-At ((IC s) + n),SCMPDS )) . (DataLoc ((s +* (Start-At ((IC s) + n),SCMPDS )) . a),k1) < 0 by SCMPDS_3:14;
IC (Exec (CurInstr (ProgramPart s),s),s) = Nl by A34, A39, SCMPDS_2:69;
hence IC (Exec (CurInstr (ProgramPart s),s),(s +* (Start-At ((IC s) + n),SCMPDS ))) = IC ((Exec (CurInstr (ProgramPart s),s),s) +* (Start-At ((IC (Exec (CurInstr (ProgramPart s),s),s)) + n),SCMPDS )) by A1, A34, A40, SCMPDS_2:69; :: thesis: verum
end;
end;
end;
now
let b be Int_position ; :: thesis: (Exec (CurInstr (ProgramPart s),s),(s +* (Start-At ((IC s) + n),SCMPDS ))) . b = ((Exec (CurInstr (ProgramPart s),s),s) +* (Start-At ((IC (Exec (CurInstr (ProgramPart s),s),s)) + n),SCMPDS )) . b
thus (Exec (CurInstr (ProgramPart s),s),(s +* (Start-At ((IC s) + n),SCMPDS ))) . b = (s +* (Start-At ((IC s) + n),SCMPDS )) . b by A34, SCMPDS_2:69
.= s . b by SCMPDS_3:14
.= (Exec (CurInstr (ProgramPart s),s),s) . b by A34, SCMPDS_2:69
.= ((Exec (CurInstr (ProgramPart s),s),s) +* (Start-At ((IC (Exec (CurInstr (ProgramPart s),s),s)) + n),SCMPDS )) . b by SCMPDS_3:14 ; :: thesis: verum
end;
hence Exec (CurInstr (ProgramPart s),s),(s +* (Start-At ((IC s) + n),SCMPDS )) = (Following (ProgramPart s),s) +* (Start-At ((IC (Following (ProgramPart s),s)) + n),SCMPDS ) by A6, A36, SCMPDS_2:54; :: thesis: verum
end;
suppose InsCode (CurInstr (ProgramPart s),s) = 7 ; :: thesis: Exec (CurInstr (ProgramPart s),s),(s +* (Start-At ((IC s) + n),SCMPDS )) = (Following (ProgramPart s),s) +* (Start-At ((IC (Following (ProgramPart s),s)) + n),SCMPDS )
then consider a being Int_position , k1, k2 being Integer such that
A41: CurInstr (ProgramPart s),s = a,k1 := k2 by SCMPDS_2:42;
A42: now
let b be Int_position ; :: thesis: (Exec (CurInstr (ProgramPart s),s),(s +* (Start-At ((IC s) + n),SCMPDS ))) . b1 = ((Exec (CurInstr (ProgramPart s),s),s) +* (Start-At ((IC (Exec (CurInstr (ProgramPart s),s),s)) + n),SCMPDS )) . b1
per cases ( DataLoc ((s +* (Start-At ((IC s) + n),SCMPDS )) . a),k1 = b or DataLoc ((s +* (Start-At ((IC s) + n),SCMPDS )) . a),k1 <> b ) ;
suppose A43: DataLoc ((s +* (Start-At ((IC s) + n),SCMPDS )) . a),k1 = b ; :: thesis: (Exec (CurInstr (ProgramPart s),s),(s +* (Start-At ((IC s) + n),SCMPDS ))) . b1 = ((Exec (CurInstr (ProgramPart s),s),s) +* (Start-At ((IC (Exec (CurInstr (ProgramPart s),s),s)) + n),SCMPDS )) . b1
then A44: DataLoc (s . a),k1 = b by SCMPDS_3:14;
thus (Exec (CurInstr (ProgramPart s),s),(s +* (Start-At ((IC s) + n),SCMPDS ))) . b = k2 by A41, A43, SCMPDS_2:58
.= (Exec (CurInstr (ProgramPart s),s),s) . b by A41, A44, SCMPDS_2:58
.= ((Exec (CurInstr (ProgramPart s),s),s) +* (Start-At ((IC (Exec (CurInstr (ProgramPart s),s),s)) + n),SCMPDS )) . b by SCMPDS_3:14 ; :: thesis: verum
end;
suppose A45: DataLoc ((s +* (Start-At ((IC s) + n),SCMPDS )) . a),k1 <> b ; :: thesis: (Exec (CurInstr (ProgramPart s),s),(s +* (Start-At ((IC s) + n),SCMPDS ))) . b1 = ((Exec (CurInstr (ProgramPart s),s),s) +* (Start-At ((IC (Exec (CurInstr (ProgramPart s),s),s)) + n),SCMPDS )) . b1
then A46: DataLoc (s . a),k1 <> b by SCMPDS_3:14;
thus (Exec (CurInstr (ProgramPart s),s),(s +* (Start-At ((IC s) + n),SCMPDS ))) . b = (s +* (Start-At ((IC s) + n),SCMPDS )) . b by A41, A45, SCMPDS_2:58
.= s . b by SCMPDS_3:14
.= (Exec (CurInstr (ProgramPart s),s),s) . b by A41, A46, SCMPDS_2:58
.= ((Exec (CurInstr (ProgramPart s),s),s) +* (Start-At ((IC (Exec (CurInstr (ProgramPart s),s),s)) + n),SCMPDS )) . b by SCMPDS_3:14 ; :: thesis: verum
end;
end;
end;
IC (Exec (CurInstr (ProgramPart s),s),s) = Nl by A41, SCMPDS_2:58;
then IC (Exec (CurInstr (ProgramPart s),s),(s +* (Start-At ((IC s) + n),SCMPDS ))) = IC ((Exec (CurInstr (ProgramPart s),s),s) +* (Start-At ((IC (Exec (CurInstr (ProgramPart s),s),s)) + n),SCMPDS )) by A1, A41, SCMPDS_2:58;
hence Exec (CurInstr (ProgramPart s),s),(s +* (Start-At ((IC s) + n),SCMPDS )) = (Following (ProgramPart s),s) +* (Start-At ((IC (Following (ProgramPart s),s)) + n),SCMPDS ) by A6, A42, SCMPDS_2:54; :: thesis: verum
end;
suppose InsCode (CurInstr (ProgramPart s),s) = 8 ; :: thesis: Exec (CurInstr (ProgramPart s),s),(s +* (Start-At ((IC s) + n),SCMPDS )) = (Following (ProgramPart s),s) +* (Start-At ((IC (Following (ProgramPart s),s)) + n),SCMPDS )
then consider a being Int_position , k1, k2 being Integer such that
A47: CurInstr (ProgramPart s),s = AddTo a,k1,k2 by SCMPDS_2:43;
A48: now
let b be Int_position ; :: thesis: (Exec (CurInstr (ProgramPart s),s),(s +* (Start-At ((IC s) + n),SCMPDS ))) . b1 = ((Exec (CurInstr (ProgramPart s),s),s) +* (Start-At ((IC (Exec (CurInstr (ProgramPart s),s),s)) + n),SCMPDS )) . b1
per cases ( DataLoc ((s +* (Start-At ((IC s) + n),SCMPDS )) . a),k1 = b or DataLoc ((s +* (Start-At ((IC s) + n),SCMPDS )) . a),k1 <> b ) ;
suppose A49: DataLoc ((s +* (Start-At ((IC s) + n),SCMPDS )) . a),k1 = b ; :: thesis: (Exec (CurInstr (ProgramPart s),s),(s +* (Start-At ((IC s) + n),SCMPDS ))) . b1 = ((Exec (CurInstr (ProgramPart s),s),s) +* (Start-At ((IC (Exec (CurInstr (ProgramPart s),s),s)) + n),SCMPDS )) . b1
then A50: DataLoc (s . a),k1 = b by SCMPDS_3:14;
thus (Exec (CurInstr (ProgramPart s),s),(s +* (Start-At ((IC s) + n),SCMPDS ))) . b = ((s +* (Start-At ((IC s) + n),SCMPDS )) . b) + k2 by A47, A49, SCMPDS_2:60
.= (s . b) + k2 by SCMPDS_3:14
.= (Exec (CurInstr (ProgramPart s),s),s) . b by A47, A50, SCMPDS_2:60
.= ((Exec (CurInstr (ProgramPart s),s),s) +* (Start-At ((IC (Exec (CurInstr (ProgramPart s),s),s)) + n),SCMPDS )) . b by SCMPDS_3:14 ; :: thesis: verum
end;
suppose A51: DataLoc ((s +* (Start-At ((IC s) + n),SCMPDS )) . a),k1 <> b ; :: thesis: (Exec (CurInstr (ProgramPart s),s),(s +* (Start-At ((IC s) + n),SCMPDS ))) . b1 = ((Exec (CurInstr (ProgramPart s),s),s) +* (Start-At ((IC (Exec (CurInstr (ProgramPart s),s),s)) + n),SCMPDS )) . b1
then A52: DataLoc (s . a),k1 <> b by SCMPDS_3:14;
thus (Exec (CurInstr (ProgramPart s),s),(s +* (Start-At ((IC s) + n),SCMPDS ))) . b = (s +* (Start-At ((IC s) + n),SCMPDS )) . b by A47, A51, SCMPDS_2:60
.= s . b by SCMPDS_3:14
.= (Exec (CurInstr (ProgramPart s),s),s) . b by A47, A52, SCMPDS_2:60
.= ((Exec (CurInstr (ProgramPart s),s),s) +* (Start-At ((IC (Exec (CurInstr (ProgramPart s),s),s)) + n),SCMPDS )) . b by SCMPDS_3:14 ; :: thesis: verum
end;
end;
end;
IC (Exec (CurInstr (ProgramPart s),s),s) = Nl by A47, SCMPDS_2:60;
then IC (Exec (CurInstr (ProgramPart s),s),(s +* (Start-At ((IC s) + n),SCMPDS ))) = IC ((Exec (CurInstr (ProgramPart s),s),s) +* (Start-At ((IC (Exec (CurInstr (ProgramPart s),s),s)) + n),SCMPDS )) by A1, A47, SCMPDS_2:60;
hence Exec (CurInstr (ProgramPart s),s),(s +* (Start-At ((IC s) + n),SCMPDS )) = (Following (ProgramPart s),s) +* (Start-At ((IC (Following (ProgramPart s),s)) + n),SCMPDS ) by A6, A48, SCMPDS_2:54; :: thesis: verum
end;
suppose InsCode (CurInstr (ProgramPart s),s) = 9 ; :: thesis: Exec (CurInstr (ProgramPart s),s),(s +* (Start-At ((IC s) + n),SCMPDS )) = (Following (ProgramPart s),s) +* (Start-At ((IC (Following (ProgramPart s),s)) + n),SCMPDS )
then consider a, b being Int_position , k1, k2 being Integer such that
A53: CurInstr (ProgramPart s),s = AddTo a,k1,b,k2 by SCMPDS_2:44;
A54: now
let c be Int_position ; :: thesis: (Exec (CurInstr (ProgramPart s),s),(s +* (Start-At ((IC s) + n),SCMPDS ))) . b1 = ((Exec (CurInstr (ProgramPart s),s),s) +* (Start-At ((IC (Exec (CurInstr (ProgramPart s),s),s)) + n),SCMPDS )) . b1
per cases ( DataLoc ((s +* (Start-At ((IC s) + n),SCMPDS )) . a),k1 = c or DataLoc ((s +* (Start-At ((IC s) + n),SCMPDS )) . a),k1 <> c ) ;
suppose A55: DataLoc ((s +* (Start-At ((IC s) + n),SCMPDS )) . a),k1 = c ; :: thesis: (Exec (CurInstr (ProgramPart s),s),(s +* (Start-At ((IC s) + n),SCMPDS ))) . b1 = ((Exec (CurInstr (ProgramPart s),s),s) +* (Start-At ((IC (Exec (CurInstr (ProgramPart s),s),s)) + n),SCMPDS )) . b1
then A56: DataLoc (s . a),k1 = c by SCMPDS_3:14;
A57: (s +* (Start-At ((IC s) + n),SCMPDS )) . (DataLoc ((s +* (Start-At ((IC s) + n),SCMPDS )) . b),k2) = s . (DataLoc ((s +* (Start-At ((IC s) + n),SCMPDS )) . b),k2) by SCMPDS_3:14
.= s . (DataLoc (s . b),k2) by SCMPDS_3:14 ;
(s +* (Start-At ((IC s) + n),SCMPDS )) . (DataLoc ((s +* (Start-At ((IC s) + n),SCMPDS )) . a),k1) = s . (DataLoc ((s +* (Start-At ((IC s) + n),SCMPDS )) . a),k1) by SCMPDS_3:14
.= s . (DataLoc (s . a),k1) by SCMPDS_3:14 ;
hence (Exec (CurInstr (ProgramPart s),s),(s +* (Start-At ((IC s) + n),SCMPDS ))) . c = (s . (DataLoc (s . a),k1)) + (s . (DataLoc (s . b),k2)) by A53, A55, A57, SCMPDS_2:61
.= (Exec (CurInstr (ProgramPart s),s),s) . c by A53, A56, SCMPDS_2:61
.= ((Exec (CurInstr (ProgramPart s),s),s) +* (Start-At ((IC (Exec (CurInstr (ProgramPart s),s),s)) + n),SCMPDS )) . c by SCMPDS_3:14 ;
:: thesis: verum
end;
suppose A58: DataLoc ((s +* (Start-At ((IC s) + n),SCMPDS )) . a),k1 <> c ; :: thesis: (Exec (CurInstr (ProgramPart s),s),(s +* (Start-At ((IC s) + n),SCMPDS ))) . b1 = ((Exec (CurInstr (ProgramPart s),s),s) +* (Start-At ((IC (Exec (CurInstr (ProgramPart s),s),s)) + n),SCMPDS )) . b1
then A59: DataLoc (s . a),k1 <> c by SCMPDS_3:14;
thus (Exec (CurInstr (ProgramPart s),s),(s +* (Start-At ((IC s) + n),SCMPDS ))) . c = (s +* (Start-At ((IC s) + n),SCMPDS )) . c by A53, A58, SCMPDS_2:61
.= s . c by SCMPDS_3:14
.= (Exec (CurInstr (ProgramPart s),s),s) . c by A53, A59, SCMPDS_2:61
.= ((Exec (CurInstr (ProgramPart s),s),s) +* (Start-At ((IC (Exec (CurInstr (ProgramPart s),s),s)) + n),SCMPDS )) . c by SCMPDS_3:14 ; :: thesis: verum
end;
end;
end;
IC (Exec (CurInstr (ProgramPart s),s),s) = Nl by A53, SCMPDS_2:61;
then IC (Exec (CurInstr (ProgramPart s),s),(s +* (Start-At ((IC s) + n),SCMPDS ))) = IC ((Exec (CurInstr (ProgramPart s),s),s) +* (Start-At ((IC (Exec (CurInstr (ProgramPart s),s),s)) + n),SCMPDS )) by A1, A53, SCMPDS_2:61;
hence Exec (CurInstr (ProgramPart s),s),(s +* (Start-At ((IC s) + n),SCMPDS )) = (Following (ProgramPart s),s) +* (Start-At ((IC (Following (ProgramPart s),s)) + n),SCMPDS ) by A6, A54, SCMPDS_2:54; :: thesis: verum
end;
suppose InsCode (CurInstr (ProgramPart s),s) = 10 ; :: thesis: Exec (CurInstr (ProgramPart s),s),(s +* (Start-At ((IC s) + n),SCMPDS )) = (Following (ProgramPart s),s) +* (Start-At ((IC (Following (ProgramPart s),s)) + n),SCMPDS )
then consider a, b being Int_position , k1, k2 being Integer such that
A60: CurInstr (ProgramPart s),s = SubFrom a,k1,b,k2 by SCMPDS_2:45;
A61: now
let c be Int_position ; :: thesis: (Exec (CurInstr (ProgramPart s),s),(s +* (Start-At ((IC s) + n),SCMPDS ))) . b1 = ((Exec (CurInstr (ProgramPart s),s),s) +* (Start-At ((IC (Exec (CurInstr (ProgramPart s),s),s)) + n),SCMPDS )) . b1
per cases ( DataLoc ((s +* (Start-At ((IC s) + n),SCMPDS )) . a),k1 = c or DataLoc ((s +* (Start-At ((IC s) + n),SCMPDS )) . a),k1 <> c ) ;
suppose A62: DataLoc ((s +* (Start-At ((IC s) + n),SCMPDS )) . a),k1 = c ; :: thesis: (Exec (CurInstr (ProgramPart s),s),(s +* (Start-At ((IC s) + n),SCMPDS ))) . b1 = ((Exec (CurInstr (ProgramPart s),s),s) +* (Start-At ((IC (Exec (CurInstr (ProgramPart s),s),s)) + n),SCMPDS )) . b1
then A63: DataLoc (s . a),k1 = c by SCMPDS_3:14;
A64: (s +* (Start-At ((IC s) + n),SCMPDS )) . (DataLoc ((s +* (Start-At ((IC s) + n),SCMPDS )) . b),k2) = s . (DataLoc ((s +* (Start-At ((IC s) + n),SCMPDS )) . b),k2) by SCMPDS_3:14
.= s . (DataLoc (s . b),k2) by SCMPDS_3:14 ;
(s +* (Start-At ((IC s) + n),SCMPDS )) . (DataLoc ((s +* (Start-At ((IC s) + n),SCMPDS )) . a),k1) = s . (DataLoc ((s +* (Start-At ((IC s) + n),SCMPDS )) . a),k1) by SCMPDS_3:14
.= s . (DataLoc (s . a),k1) by SCMPDS_3:14 ;
hence (Exec (CurInstr (ProgramPart s),s),(s +* (Start-At ((IC s) + n),SCMPDS ))) . c = (s . (DataLoc (s . a),k1)) - (s . (DataLoc (s . b),k2)) by A60, A62, A64, SCMPDS_2:62
.= (Exec (CurInstr (ProgramPart s),s),s) . c by A60, A63, SCMPDS_2:62
.= ((Exec (CurInstr (ProgramPart s),s),s) +* (Start-At ((IC (Exec (CurInstr (ProgramPart s),s),s)) + n),SCMPDS )) . c by SCMPDS_3:14 ;
:: thesis: verum
end;
suppose A65: DataLoc ((s +* (Start-At ((IC s) + n),SCMPDS )) . a),k1 <> c ; :: thesis: (Exec (CurInstr (ProgramPart s),s),(s +* (Start-At ((IC s) + n),SCMPDS ))) . b1 = ((Exec (CurInstr (ProgramPart s),s),s) +* (Start-At ((IC (Exec (CurInstr (ProgramPart s),s),s)) + n),SCMPDS )) . b1
then A66: DataLoc (s . a),k1 <> c by SCMPDS_3:14;
thus (Exec (CurInstr (ProgramPart s),s),(s +* (Start-At ((IC s) + n),SCMPDS ))) . c = (s +* (Start-At ((IC s) + n),SCMPDS )) . c by A60, A65, SCMPDS_2:62
.= s . c by SCMPDS_3:14
.= (Exec (CurInstr (ProgramPart s),s),s) . c by A60, A66, SCMPDS_2:62
.= ((Exec (CurInstr (ProgramPart s),s),s) +* (Start-At ((IC (Exec (CurInstr (ProgramPart s),s),s)) + n),SCMPDS )) . c by SCMPDS_3:14 ; :: thesis: verum
end;
end;
end;
IC (Exec (CurInstr (ProgramPart s),s),s) = Nl by A60, SCMPDS_2:62;
then IC (Exec (CurInstr (ProgramPart s),s),(s +* (Start-At ((IC s) + n),SCMPDS ))) = IC ((Exec (CurInstr (ProgramPart s),s),s) +* (Start-At ((IC (Exec (CurInstr (ProgramPart s),s),s)) + n),SCMPDS )) by A1, A60, SCMPDS_2:62;
hence Exec (CurInstr (ProgramPart s),s),(s +* (Start-At ((IC s) + n),SCMPDS )) = (Following (ProgramPart s),s) +* (Start-At ((IC (Following (ProgramPart s),s)) + n),SCMPDS ) by A6, A61, SCMPDS_2:54; :: thesis: verum
end;
suppose InsCode (CurInstr (ProgramPart s),s) = 11 ; :: thesis: Exec (CurInstr (ProgramPart s),s),(s +* (Start-At ((IC s) + n),SCMPDS )) = (Following (ProgramPart s),s) +* (Start-At ((IC (Following (ProgramPart s),s)) + n),SCMPDS )
then consider a, b being Int_position , k1, k2 being Integer such that
A67: CurInstr (ProgramPart s),s = MultBy a,k1,b,k2 by SCMPDS_2:46;
A68: now
let c be Int_position ; :: thesis: (Exec (CurInstr (ProgramPart s),s),(s +* (Start-At ((IC s) + n),SCMPDS ))) . b1 = ((Exec (CurInstr (ProgramPart s),s),s) +* (Start-At ((IC (Exec (CurInstr (ProgramPart s),s),s)) + n),SCMPDS )) . b1
per cases ( DataLoc ((s +* (Start-At ((IC s) + n),SCMPDS )) . a),k1 = c or DataLoc ((s +* (Start-At ((IC s) + n),SCMPDS )) . a),k1 <> c ) ;
suppose A69: DataLoc ((s +* (Start-At ((IC s) + n),SCMPDS )) . a),k1 = c ; :: thesis: (Exec (CurInstr (ProgramPart s),s),(s +* (Start-At ((IC s) + n),SCMPDS ))) . b1 = ((Exec (CurInstr (ProgramPart s),s),s) +* (Start-At ((IC (Exec (CurInstr (ProgramPart s),s),s)) + n),SCMPDS )) . b1
then A70: DataLoc (s . a),k1 = c by SCMPDS_3:14;
A71: (s +* (Start-At ((IC s) + n),SCMPDS )) . (DataLoc ((s +* (Start-At ((IC s) + n),SCMPDS )) . b),k2) = s . (DataLoc ((s +* (Start-At ((IC s) + n),SCMPDS )) . b),k2) by SCMPDS_3:14
.= s . (DataLoc (s . b),k2) by SCMPDS_3:14 ;
(s +* (Start-At ((IC s) + n),SCMPDS )) . (DataLoc ((s +* (Start-At ((IC s) + n),SCMPDS )) . a),k1) = s . (DataLoc ((s +* (Start-At ((IC s) + n),SCMPDS )) . a),k1) by SCMPDS_3:14
.= s . (DataLoc (s . a),k1) by SCMPDS_3:14 ;
hence (Exec (CurInstr (ProgramPart s),s),(s +* (Start-At ((IC s) + n),SCMPDS ))) . c = (s . (DataLoc (s . a),k1)) * (s . (DataLoc (s . b),k2)) by A67, A69, A71, SCMPDS_2:63
.= (Exec (CurInstr (ProgramPart s),s),s) . c by A67, A70, SCMPDS_2:63
.= ((Exec (CurInstr (ProgramPart s),s),s) +* (Start-At ((IC (Exec (CurInstr (ProgramPart s),s),s)) + n),SCMPDS )) . c by SCMPDS_3:14 ;
:: thesis: verum
end;
suppose A72: DataLoc ((s +* (Start-At ((IC s) + n),SCMPDS )) . a),k1 <> c ; :: thesis: (Exec (CurInstr (ProgramPart s),s),(s +* (Start-At ((IC s) + n),SCMPDS ))) . b1 = ((Exec (CurInstr (ProgramPart s),s),s) +* (Start-At ((IC (Exec (CurInstr (ProgramPart s),s),s)) + n),SCMPDS )) . b1
then A73: DataLoc (s . a),k1 <> c by SCMPDS_3:14;
thus (Exec (CurInstr (ProgramPart s),s),(s +* (Start-At ((IC s) + n),SCMPDS ))) . c = (s +* (Start-At ((IC s) + n),SCMPDS )) . c by A67, A72, SCMPDS_2:63
.= s . c by SCMPDS_3:14
.= (Exec (CurInstr (ProgramPart s),s),s) . c by A67, A73, SCMPDS_2:63
.= ((Exec (CurInstr (ProgramPart s),s),s) +* (Start-At ((IC (Exec (CurInstr (ProgramPart s),s),s)) + n),SCMPDS )) . c by SCMPDS_3:14 ; :: thesis: verum
end;
end;
end;
IC (Exec (CurInstr (ProgramPart s),s),s) = Nl by A67, SCMPDS_2:63;
then IC (Exec (CurInstr (ProgramPart s),s),(s +* (Start-At ((IC s) + n),SCMPDS ))) = IC ((Exec (CurInstr (ProgramPart s),s),s) +* (Start-At ((IC (Exec (CurInstr (ProgramPart s),s),s)) + n),SCMPDS )) by A1, A67, SCMPDS_2:63;
hence Exec (CurInstr (ProgramPart s),s),(s +* (Start-At ((IC s) + n),SCMPDS )) = (Following (ProgramPart s),s) +* (Start-At ((IC (Following (ProgramPart s),s)) + n),SCMPDS ) by A6, A68, SCMPDS_2:54; :: thesis: verum
end;
suppose InsCode (CurInstr (ProgramPart s),s) = 12 ; :: thesis: Exec (CurInstr (ProgramPart s),s),(s +* (Start-At ((IC s) + n),SCMPDS )) = (Following (ProgramPart s),s) +* (Start-At ((IC (Following (ProgramPart s),s)) + n),SCMPDS )
then consider a, b being Int_position , k1, k2 being Integer such that
A74: CurInstr (ProgramPart s),s = Divide a,k1,b,k2 by SCMPDS_2:47;
A75: now
let c be Int_position ; :: thesis: (Exec (CurInstr (ProgramPart s),s),(s +* (Start-At ((IC s) + n),SCMPDS ))) . b1 = ((Exec (CurInstr (ProgramPart s),s),s) +* (Start-At ((IC (Exec (CurInstr (ProgramPart s),s),s)) + n),SCMPDS )) . b1
A76: (s +* (Start-At ((IC s) + n),SCMPDS )) . (DataLoc ((s +* (Start-At ((IC s) + n),SCMPDS )) . a),k1) = s . (DataLoc ((s +* (Start-At ((IC s) + n),SCMPDS )) . a),k1) by SCMPDS_3:14
.= s . (DataLoc (s . a),k1) by SCMPDS_3:14 ;
A77: (s +* (Start-At ((IC s) + n),SCMPDS )) . (DataLoc ((s +* (Start-At ((IC s) + n),SCMPDS )) . b),k2) = s . (DataLoc ((s +* (Start-At ((IC s) + n),SCMPDS )) . b),k2) by SCMPDS_3:14
.= s . (DataLoc (s . b),k2) by SCMPDS_3:14 ;
per cases ( DataLoc ((s +* (Start-At ((IC s) + n),SCMPDS )) . b),k2 = c or DataLoc ((s +* (Start-At ((IC s) + n),SCMPDS )) . b),k2 <> c ) ;
suppose A78: DataLoc ((s +* (Start-At ((IC s) + n),SCMPDS )) . b),k2 = c ; :: thesis: (Exec (CurInstr (ProgramPart s),s),(s +* (Start-At ((IC s) + n),SCMPDS ))) . b1 = ((Exec (CurInstr (ProgramPart s),s),s) +* (Start-At ((IC (Exec (CurInstr (ProgramPart s),s),s)) + n),SCMPDS )) . b1
then A79: DataLoc (s . b),k2 = c by SCMPDS_3:14;
thus (Exec (CurInstr (ProgramPart s),s),(s +* (Start-At ((IC s) + n),SCMPDS ))) . c = (s . (DataLoc (s . a),k1)) mod (s . (DataLoc (s . b),k2)) by A74, A76, A77, A78, SCMPDS_2:64
.= (Exec (CurInstr (ProgramPart s),s),s) . c by A74, A79, SCMPDS_2:64
.= ((Exec (CurInstr (ProgramPart s),s),s) +* (Start-At ((IC (Exec (CurInstr (ProgramPart s),s),s)) + n),SCMPDS )) . c by SCMPDS_3:14 ; :: thesis: verum
end;
suppose A80: DataLoc ((s +* (Start-At ((IC s) + n),SCMPDS )) . b),k2 <> c ; :: thesis: (Exec (CurInstr (ProgramPart s),s),(s +* (Start-At ((IC s) + n),SCMPDS ))) . b1 = ((Exec (CurInstr (ProgramPart s),s),s) +* (Start-At ((IC (Exec (CurInstr (ProgramPart s),s),s)) + n),SCMPDS )) . b1
then A81: DataLoc (s . b),k2 <> c by SCMPDS_3:14;
hereby :: thesis: verum
per cases ( DataLoc ((s +* (Start-At ((IC s) + n),SCMPDS )) . a),k1 <> c or DataLoc ((s +* (Start-At ((IC s) + n),SCMPDS )) . a),k1 = c ) ;
suppose A82: DataLoc ((s +* (Start-At ((IC s) + n),SCMPDS )) . a),k1 <> c ; :: thesis: (Exec (CurInstr (ProgramPart s),s),(s +* (Start-At ((IC s) + n),SCMPDS ))) . c = ((Exec (CurInstr (ProgramPart s),s),s) +* (Start-At ((IC (Exec (CurInstr (ProgramPart s),s),s)) + n),SCMPDS )) . c
then A83: DataLoc (s . a),k1 <> c by SCMPDS_3:14;
thus (Exec (CurInstr (ProgramPart s),s),(s +* (Start-At ((IC s) + n),SCMPDS ))) . c = (s +* (Start-At ((IC s) + n),SCMPDS )) . c by A74, A80, A82, SCMPDS_2:64
.= s . c by SCMPDS_3:14
.= (Exec (CurInstr (ProgramPart s),s),s) . c by A74, A81, A83, SCMPDS_2:64
.= ((Exec (CurInstr (ProgramPart s),s),s) +* (Start-At ((IC (Exec (CurInstr (ProgramPart s),s),s)) + n),SCMPDS )) . c by SCMPDS_3:14 ; :: thesis: verum
end;
suppose A84: DataLoc ((s +* (Start-At ((IC s) + n),SCMPDS )) . a),k1 = c ; :: thesis: (Exec (CurInstr (ProgramPart s),s),(s +* (Start-At ((IC s) + n),SCMPDS ))) . c = ((Exec (CurInstr (ProgramPart s),s),s) +* (Start-At ((IC (Exec (CurInstr (ProgramPart s),s),s)) + n),SCMPDS )) . c
then A85: DataLoc (s . a),k1 = c by SCMPDS_3:14;
thus (Exec (CurInstr (ProgramPart s),s),(s +* (Start-At ((IC s) + n),SCMPDS ))) . c = (s . (DataLoc (s . a),k1)) div (s . (DataLoc (s . b),k2)) by A74, A76, A77, A80, A84, SCMPDS_2:64
.= (Exec (CurInstr (ProgramPart s),s),s) . c by A74, A81, A85, SCMPDS_2:64
.= ((Exec (CurInstr (ProgramPart s),s),s) +* (Start-At ((IC (Exec (CurInstr (ProgramPart s),s),s)) + n),SCMPDS )) . c by SCMPDS_3:14 ; :: thesis: verum
end;
end;
end;
end;
end;
end;
IC (Exec (CurInstr (ProgramPart s),s),s) = Nl by A74, SCMPDS_2:64;
then IC (Exec (CurInstr (ProgramPart s),s),(s +* (Start-At ((IC s) + n),SCMPDS ))) = IC ((Exec (CurInstr (ProgramPart s),s),s) +* (Start-At ((IC (Exec (CurInstr (ProgramPart s),s),s)) + n),SCMPDS )) by A1, A74, SCMPDS_2:64;
hence Exec (CurInstr (ProgramPart s),s),(s +* (Start-At ((IC s) + n),SCMPDS )) = (Following (ProgramPart s),s) +* (Start-At ((IC (Following (ProgramPart s),s)) + n),SCMPDS ) by A6, A75, SCMPDS_2:54; :: thesis: verum
end;
suppose InsCode (CurInstr (ProgramPart s),s) = 13 ; :: thesis: Exec (CurInstr (ProgramPart s),s),(s +* (Start-At ((IC s) + n),SCMPDS )) = (Following (ProgramPart s),s) +* (Start-At ((IC (Following (ProgramPart s),s)) + n),SCMPDS )
then consider a, b being Int_position , k1, k2 being Integer such that
A86: CurInstr (ProgramPart s),s = a,k1 := b,k2 by SCMPDS_2:48;
A87: now
let c be Int_position ; :: thesis: (Exec (CurInstr (ProgramPart s),s),(s +* (Start-At ((IC s) + n),SCMPDS ))) . b1 = ((Exec (CurInstr (ProgramPart s),s),s) +* (Start-At ((IC (Exec (CurInstr (ProgramPart s),s),s)) + n),SCMPDS )) . b1
per cases ( DataLoc ((s +* (Start-At ((IC s) + n),SCMPDS )) . a),k1 = c or DataLoc ((s +* (Start-At ((IC s) + n),SCMPDS )) . a),k1 <> c ) ;
suppose A88: DataLoc ((s +* (Start-At ((IC s) + n),SCMPDS )) . a),k1 = c ; :: thesis: (Exec (CurInstr (ProgramPart s),s),(s +* (Start-At ((IC s) + n),SCMPDS ))) . b1 = ((Exec (CurInstr (ProgramPart s),s),s) +* (Start-At ((IC (Exec (CurInstr (ProgramPart s),s),s)) + n),SCMPDS )) . b1
then A89: DataLoc (s . a),k1 = c by SCMPDS_3:14;
thus (Exec (CurInstr (ProgramPart s),s),(s +* (Start-At ((IC s) + n),SCMPDS ))) . c = (s +* (Start-At ((IC s) + n),SCMPDS )) . (DataLoc ((s +* (Start-At ((IC s) + n),SCMPDS )) . b),k2) by A86, A88, SCMPDS_2:59
.= s . (DataLoc ((s +* (Start-At ((IC s) + n),SCMPDS )) . b),k2) by SCMPDS_3:14
.= s . (DataLoc (s . b),k2) by SCMPDS_3:14
.= (Exec (CurInstr (ProgramPart s),s),s) . c by A86, A89, SCMPDS_2:59
.= ((Exec (CurInstr (ProgramPart s),s),s) +* (Start-At ((IC (Exec (CurInstr (ProgramPart s),s),s)) + n),SCMPDS )) . c by SCMPDS_3:14 ; :: thesis: verum
end;
suppose A90: DataLoc ((s +* (Start-At ((IC s) + n),SCMPDS )) . a),k1 <> c ; :: thesis: (Exec (CurInstr (ProgramPart s),s),(s +* (Start-At ((IC s) + n),SCMPDS ))) . b1 = ((Exec (CurInstr (ProgramPart s),s),s) +* (Start-At ((IC (Exec (CurInstr (ProgramPart s),s),s)) + n),SCMPDS )) . b1
then A91: DataLoc (s . a),k1 <> c by SCMPDS_3:14;
thus (Exec (CurInstr (ProgramPart s),s),(s +* (Start-At ((IC s) + n),SCMPDS ))) . c = (s +* (Start-At ((IC s) + n),SCMPDS )) . c by A86, A90, SCMPDS_2:59
.= s . c by SCMPDS_3:14
.= (Exec (CurInstr (ProgramPart s),s),s) . c by A86, A91, SCMPDS_2:59
.= ((Exec (CurInstr (ProgramPart s),s),s) +* (Start-At ((IC (Exec (CurInstr (ProgramPart s),s),s)) + n),SCMPDS )) . c by SCMPDS_3:14 ; :: thesis: verum
end;
end;
end;
IC (Exec (CurInstr (ProgramPart s),s),s) = Nl by A86, SCMPDS_2:59;
then IC (Exec (CurInstr (ProgramPart s),s),(s +* (Start-At ((IC s) + n),SCMPDS ))) = IC ((Exec (CurInstr (ProgramPart s),s),s) +* (Start-At ((IC (Exec (CurInstr (ProgramPart s),s),s)) + n),SCMPDS )) by A1, A86, SCMPDS_2:59;
hence Exec (CurInstr (ProgramPart s),s),(s +* (Start-At ((IC s) + n),SCMPDS )) = (Following (ProgramPart s),s) +* (Start-At ((IC (Following (ProgramPart s),s)) + n),SCMPDS ) by A6, A87, SCMPDS_2:54; :: thesis: verum
end;
end;