let s1, s2 be State of SCMPDS; :: thesis: for n, m being Element of NAT
for i being Instruction of SCMPDS st IC s1 = m & i valid_at m & InsCode i <> 1 & InsCode i <> 3 & (IC s1) + n = IC s2 & DataPart s1 = DataPart s2 holds
( (IC (Exec (i,s1))) + n = IC (Exec (i,s2)) & DataPart (Exec (i,s1)) = DataPart (Exec (i,s2)) )

let n, m be Element of NAT ; :: thesis: for i being Instruction of SCMPDS st IC s1 = m & i valid_at m & InsCode i <> 1 & InsCode i <> 3 & (IC s1) + n = IC s2 & DataPart s1 = DataPart s2 holds
( (IC (Exec (i,s1))) + n = IC (Exec (i,s2)) & DataPart (Exec (i,s1)) = DataPart (Exec (i,s2)) )

let i be Instruction of SCMPDS; :: thesis: ( IC s1 = m & i valid_at m & InsCode i <> 1 & InsCode i <> 3 & (IC s1) + n = IC s2 & DataPart s1 = DataPart s2 implies ( (IC (Exec (i,s1))) + n = IC (Exec (i,s2)) & DataPart (Exec (i,s1)) = DataPart (Exec (i,s2)) ) )
assume that
A1: IC s1 = m and
A2: i valid_at m and
A3: ( InsCode i <> 1 & InsCode i <> 3 ) and
A4: (IC s1) + n = IC s2 and
A5: DataPart s1 = DataPart s2 ; :: thesis: ( (IC (Exec (i,s1))) + n = IC (Exec (i,s2)) & DataPart (Exec (i,s1)) = DataPart (Exec (i,s2)) )
A6: now
let a be Int_position ; :: thesis: for k1 being Integer holds s1 . (DataLoc ((s1 . a),k1)) = s2 . (DataLoc ((s2 . a),k1))
let k1 be Integer; :: thesis: s1 . (DataLoc ((s1 . a),k1)) = s2 . (DataLoc ((s2 . a),k1))
thus s1 . (DataLoc ((s1 . a),k1)) = s1 . (DataLoc ((s2 . a),k1)) by A5, Th23
.= s2 . (DataLoc ((s2 . a),k1)) by A5, Th23 ; :: thesis: verum
end;
reconsider k1 = IC s1 as Element of NAT ;
set Ci = InsCode i;
A7: (succ (IC s1)) + n = succ (IC s2) by A4;
A8: now
assume ( InsCode i <> 0 & InsCode i <> 1 & InsCode i <> 4 & InsCode i <> 5 & InsCode i <> 6 ) ; :: thesis: (IC (Exec (i,s1))) + n = IC (Exec (i,s2))
then A9: not InsCode i in {0,1,4,5,6} by ENUMSET1:def 3;
then IC (Exec (i,s1)) = succ (IC s1) by Th6;
hence (IC (Exec (i,s1))) + n = IC (Exec (i,s2)) by A7, A9, Th6; :: thesis: verum
end;
per cases ( InsCode i = 0 or InsCode i = 2 or InsCode i = 4 or InsCode i = 5 or InsCode i = 6 or InsCode i = 7 or InsCode i = 8 or InsCode i = 9 or InsCode i = 10 or InsCode i = 11 or InsCode i = 12 or InsCode i = 13 ) by A3, NAT_1:37, SCMPDS_2:6;
suppose InsCode i = 0 ; :: thesis: ( (IC (Exec (i,s1))) + n = IC (Exec (i,s2)) & DataPart (Exec (i,s1)) = DataPart (Exec (i,s2)) )
then consider k1 being Integer such that
A10: i = goto k1 and
A11: m + k1 >= 0 by A2, Def11;
IC (Exec (i,s1)) = ICplusConst (s1,k1) by A10, SCMPDS_2:54;
hence (IC (Exec (i,s1))) + n = ICplusConst (s2,k1) by A1, A4, A11, Th82
.= IC (Exec (i,s2)) by A10, SCMPDS_2:54 ;
:: thesis: DataPart (Exec (i,s1)) = DataPart (Exec (i,s2))
now
let a be Int_position ; :: thesis: (Exec (i,s1)) . a = (Exec (i,s2)) . a
thus (Exec (i,s1)) . a = s1 . a by A10, SCMPDS_2:54
.= s2 . a by A5, Th23
.= (Exec (i,s2)) . a by A10, SCMPDS_2:54 ; :: thesis: verum
end;
hence DataPart (Exec (i,s1)) = DataPart (Exec (i,s2)) by Th23; :: thesis: verum
end;
suppose A12: InsCode i = 2 ; :: thesis: ( (IC (Exec (i,s1))) + n = IC (Exec (i,s2)) & DataPart (Exec (i,s1)) = DataPart (Exec (i,s2)) )
hence (IC (Exec (i,s1))) + n = IC (Exec (i,s2)) by A8; :: thesis: DataPart (Exec (i,s1)) = DataPart (Exec (i,s2))
consider a being Int_position , k1 being Integer such that
A13: i = a := k1 by A12, SCMPDS_2:28;
now
let b be Int_position ; :: thesis: (Exec (i,s1)) . b1 = (Exec (i,s2)) . b1
per cases ( a = b or a <> b ) ;
suppose A14: a = b ; :: thesis: (Exec (i,s1)) . b1 = (Exec (i,s2)) . b1
hence (Exec (i,s1)) . b = k1 by A13, SCMPDS_2:45
.= (Exec (i,s2)) . b by A13, A14, SCMPDS_2:45 ;
:: thesis: verum
end;
suppose A15: a <> b ; :: thesis: (Exec (i,s1)) . b1 = (Exec (i,s2)) . b1
hence (Exec (i,s1)) . b = s1 . b by A13, SCMPDS_2:45
.= s2 . b by A5, Th23
.= (Exec (i,s2)) . b by A13, A15, SCMPDS_2:45 ;
:: thesis: verum
end;
end;
end;
hence DataPart (Exec (i,s1)) = DataPart (Exec (i,s2)) by Th23; :: thesis: verum
end;
suppose InsCode i = 4 ; :: thesis: ( (IC (Exec (i,s1))) + n = IC (Exec (i,s2)) & DataPart (Exec (i,s1)) = DataPart (Exec (i,s2)) )
then consider a being Int_position , k1, k2 being Integer such that
A16: i = (a,k1) <>0_goto k2 and
A17: m + k2 >= 0 by A2, Def11;
hereby :: thesis: DataPart (Exec (i,s1)) = DataPart (Exec (i,s2))
per cases ( s1 . (DataLoc ((s1 . a),k1)) <> 0 or s1 . (DataLoc ((s1 . a),k1)) = 0 ) ;
suppose A18: s1 . (DataLoc ((s1 . a),k1)) <> 0 ; :: thesis: (IC (Exec (i,s1))) + n = IC (Exec (i,s2))
then A19: s2 . (DataLoc ((s2 . a),k1)) <> 0 by A6;
IC (Exec (i,s1)) = ICplusConst (s1,k2) by A16, A18, SCMPDS_2:55;
hence (IC (Exec (i,s1))) + n = ICplusConst (s2,k2) by A1, A4, A17, Th82
.= IC (Exec (i,s2)) by A16, A19, SCMPDS_2:55 ;
:: thesis: verum
end;
suppose s1 . (DataLoc ((s1 . a),k1)) = 0 ; :: thesis: (IC (Exec (i,s1))) + n = IC (Exec (i,s2))
then ( s2 . (DataLoc ((s2 . a),k1)) = 0 & IC (Exec (i,s1)) = succ (IC s1) ) by A6, A16, SCMPDS_2:55;
hence (IC (Exec (i,s1))) + n = IC (Exec (i,s2)) by A7, A16, SCMPDS_2:55; :: thesis: verum
end;
end;
end;
now
let a be Int_position ; :: thesis: (Exec (i,s1)) . a = (Exec (i,s2)) . a
thus (Exec (i,s1)) . a = s1 . a by A16, SCMPDS_2:55
.= s2 . a by A5, Th23
.= (Exec (i,s2)) . a by A16, SCMPDS_2:55 ; :: thesis: verum
end;
hence DataPart (Exec (i,s1)) = DataPart (Exec (i,s2)) by Th23; :: thesis: verum
end;
suppose InsCode i = 5 ; :: thesis: ( (IC (Exec (i,s1))) + n = IC (Exec (i,s2)) & DataPart (Exec (i,s1)) = DataPart (Exec (i,s2)) )
then consider a being Int_position , k1, k2 being Integer such that
A20: i = (a,k1) <=0_goto k2 and
A21: m + k2 >= 0 by A2, Def11;
hereby :: thesis: DataPart (Exec (i,s1)) = DataPart (Exec (i,s2))
per cases ( s1 . (DataLoc ((s1 . a),k1)) <= 0 or s1 . (DataLoc ((s1 . a),k1)) > 0 ) ;
suppose A22: s1 . (DataLoc ((s1 . a),k1)) <= 0 ; :: thesis: (IC (Exec (i,s1))) + n = IC (Exec (i,s2))
then A23: s2 . (DataLoc ((s2 . a),k1)) <= 0 by A6;
IC (Exec (i,s1)) = ICplusConst (s1,k2) by A20, A22, SCMPDS_2:56;
hence (IC (Exec (i,s1))) + n = ICplusConst (s2,k2) by A1, A4, A21, Th82
.= IC (Exec (i,s2)) by A20, A23, SCMPDS_2:56 ;
:: thesis: verum
end;
suppose s1 . (DataLoc ((s1 . a),k1)) > 0 ; :: thesis: (IC (Exec (i,s1))) + n = IC (Exec (i,s2))
then ( s2 . (DataLoc ((s2 . a),k1)) > 0 & IC (Exec (i,s1)) = succ (IC s1) ) by A6, A20, SCMPDS_2:56;
hence (IC (Exec (i,s1))) + n = IC (Exec (i,s2)) by A7, A20, SCMPDS_2:56; :: thesis: verum
end;
end;
end;
now
let a be Int_position ; :: thesis: (Exec (i,s1)) . a = (Exec (i,s2)) . a
thus (Exec (i,s1)) . a = s1 . a by A20, SCMPDS_2:56
.= s2 . a by A5, Th23
.= (Exec (i,s2)) . a by A20, SCMPDS_2:56 ; :: thesis: verum
end;
hence DataPart (Exec (i,s1)) = DataPart (Exec (i,s2)) by Th23; :: thesis: verum
end;
suppose InsCode i = 6 ; :: thesis: ( (IC (Exec (i,s1))) + n = IC (Exec (i,s2)) & DataPart (Exec (i,s1)) = DataPart (Exec (i,s2)) )
then consider a being Int_position , k1, k2 being Integer such that
A24: i = (a,k1) >=0_goto k2 and
A25: m + k2 >= 0 by A2, Def11;
hereby :: thesis: DataPart (Exec (i,s1)) = DataPart (Exec (i,s2))
per cases ( s1 . (DataLoc ((s1 . a),k1)) >= 0 or s1 . (DataLoc ((s1 . a),k1)) < 0 ) ;
suppose A26: s1 . (DataLoc ((s1 . a),k1)) >= 0 ; :: thesis: (IC (Exec (i,s1))) + n = IC (Exec (i,s2))
then A27: s2 . (DataLoc ((s2 . a),k1)) >= 0 by A6;
IC (Exec (i,s1)) = ICplusConst (s1,k2) by A24, A26, SCMPDS_2:57;
hence (IC (Exec (i,s1))) + n = ICplusConst (s2,k2) by A1, A4, A25, Th82
.= IC (Exec (i,s2)) by A24, A27, SCMPDS_2:57 ;
:: thesis: verum
end;
suppose s1 . (DataLoc ((s1 . a),k1)) < 0 ; :: thesis: (IC (Exec (i,s1))) + n = IC (Exec (i,s2))
then ( s2 . (DataLoc ((s2 . a),k1)) < 0 & IC (Exec (i,s1)) = succ (IC s1) ) by A6, A24, SCMPDS_2:57;
hence (IC (Exec (i,s1))) + n = IC (Exec (i,s2)) by A7, A24, SCMPDS_2:57; :: thesis: verum
end;
end;
end;
now
let a be Int_position ; :: thesis: (Exec (i,s1)) . a = (Exec (i,s2)) . a
thus (Exec (i,s1)) . a = s1 . a by A24, SCMPDS_2:57
.= s2 . a by A5, Th23
.= (Exec (i,s2)) . a by A24, SCMPDS_2:57 ; :: thesis: verum
end;
hence DataPart (Exec (i,s1)) = DataPart (Exec (i,s2)) by Th23; :: thesis: verum
end;
suppose A28: InsCode i = 7 ; :: thesis: ( (IC (Exec (i,s1))) + n = IC (Exec (i,s2)) & DataPart (Exec (i,s1)) = DataPart (Exec (i,s2)) )
hence (IC (Exec (i,s1))) + n = IC (Exec (i,s2)) by A8; :: thesis: DataPart (Exec (i,s1)) = DataPart (Exec (i,s2))
consider a being Int_position , k1, k2 being Integer such that
A29: i = (a,k1) := k2 by A28, SCMPDS_2:33;
now
let b be Int_position ; :: thesis: (Exec (i,s1)) . b1 = (Exec (i,s2)) . b1
per cases ( DataLoc ((s1 . a),k1) = b or DataLoc ((s1 . a),k1) <> b ) ;
suppose A30: DataLoc ((s1 . a),k1) = b ; :: thesis: (Exec (i,s1)) . b1 = (Exec (i,s2)) . b1
then A31: DataLoc ((s2 . a),k1) = b by A5, Th23;
thus (Exec (i,s1)) . b = k2 by A29, A30, SCMPDS_2:46
.= (Exec (i,s2)) . b by A29, A31, SCMPDS_2:46 ; :: thesis: verum
end;
suppose A32: DataLoc ((s1 . a),k1) <> b ; :: thesis: (Exec (i,s1)) . b1 = (Exec (i,s2)) . b1
then A33: DataLoc ((s2 . a),k1) <> b by A5, Th23;
thus (Exec (i,s1)) . b = s1 . b by A29, A32, SCMPDS_2:46
.= s2 . b by A5, Th23
.= (Exec (i,s2)) . b by A29, A33, SCMPDS_2:46 ; :: thesis: verum
end;
end;
end;
hence DataPart (Exec (i,s1)) = DataPart (Exec (i,s2)) by Th23; :: thesis: verum
end;
suppose A34: InsCode i = 8 ; :: thesis: ( (IC (Exec (i,s1))) + n = IC (Exec (i,s2)) & DataPart (Exec (i,s1)) = DataPart (Exec (i,s2)) )
hence (IC (Exec (i,s1))) + n = IC (Exec (i,s2)) by A8; :: thesis: DataPart (Exec (i,s1)) = DataPart (Exec (i,s2))
consider a being Int_position , k1, k2 being Integer such that
A35: i = AddTo (a,k1,k2) by A34, SCMPDS_2:34;
now
let b be Int_position ; :: thesis: (Exec (i,s1)) . b1 = (Exec (i,s2)) . b1
per cases ( DataLoc ((s1 . a),k1) = b or DataLoc ((s1 . a),k1) <> b ) ;
suppose A36: DataLoc ((s1 . a),k1) = b ; :: thesis: (Exec (i,s1)) . b1 = (Exec (i,s2)) . b1
then A37: DataLoc ((s2 . a),k1) = b by A5, Th23;
thus (Exec (i,s1)) . b = (s1 . (DataLoc ((s1 . a),k1))) + k2 by A35, A36, SCMPDS_2:48
.= (s2 . (DataLoc ((s2 . a),k1))) + k2 by A6
.= (Exec (i,s2)) . b by A35, A37, SCMPDS_2:48 ; :: thesis: verum
end;
suppose A38: DataLoc ((s1 . a),k1) <> b ; :: thesis: (Exec (i,s1)) . b1 = (Exec (i,s2)) . b1
then A39: DataLoc ((s2 . a),k1) <> b by A5, Th23;
thus (Exec (i,s1)) . b = s1 . b by A35, A38, SCMPDS_2:48
.= s2 . b by A5, Th23
.= (Exec (i,s2)) . b by A35, A39, SCMPDS_2:48 ; :: thesis: verum
end;
end;
end;
hence DataPart (Exec (i,s1)) = DataPart (Exec (i,s2)) by Th23; :: thesis: verum
end;
suppose A40: InsCode i = 9 ; :: thesis: ( (IC (Exec (i,s1))) + n = IC (Exec (i,s2)) & DataPart (Exec (i,s1)) = DataPart (Exec (i,s2)) )
hence (IC (Exec (i,s1))) + n = IC (Exec (i,s2)) by A8; :: thesis: DataPart (Exec (i,s1)) = DataPart (Exec (i,s2))
consider a, b being Int_position , k1, k2 being Integer such that
A41: i = AddTo (a,k1,b,k2) by A40, SCMPDS_2:35;
now
let c be Int_position ; :: thesis: (Exec (i,s1)) . b1 = (Exec (i,s2)) . b1
per cases ( DataLoc ((s1 . a),k1) = c or DataLoc ((s1 . a),k1) <> c ) ;
suppose A42: DataLoc ((s1 . a),k1) = c ; :: thesis: (Exec (i,s1)) . b1 = (Exec (i,s2)) . b1
then A43: DataLoc ((s2 . a),k1) = c by A5, Th23;
thus (Exec (i,s1)) . c = (s1 . (DataLoc ((s1 . a),k1))) + (s1 . (DataLoc ((s1 . b),k2))) by A41, A42, SCMPDS_2:49
.= (s2 . (DataLoc ((s2 . a),k1))) + (s1 . (DataLoc ((s1 . b),k2))) by A6
.= (s2 . (DataLoc ((s2 . a),k1))) + (s2 . (DataLoc ((s2 . b),k2))) by A6
.= (Exec (i,s2)) . c by A41, A43, SCMPDS_2:49 ; :: thesis: verum
end;
suppose A44: DataLoc ((s1 . a),k1) <> c ; :: thesis: (Exec (i,s1)) . b1 = (Exec (i,s2)) . b1
then A45: DataLoc ((s2 . a),k1) <> c by A5, Th23;
thus (Exec (i,s1)) . c = s1 . c by A41, A44, SCMPDS_2:49
.= s2 . c by A5, Th23
.= (Exec (i,s2)) . c by A41, A45, SCMPDS_2:49 ; :: thesis: verum
end;
end;
end;
hence DataPart (Exec (i,s1)) = DataPart (Exec (i,s2)) by Th23; :: thesis: verum
end;
suppose A46: InsCode i = 10 ; :: thesis: ( (IC (Exec (i,s1))) + n = IC (Exec (i,s2)) & DataPart (Exec (i,s1)) = DataPart (Exec (i,s2)) )
hence (IC (Exec (i,s1))) + n = IC (Exec (i,s2)) by A8; :: thesis: DataPart (Exec (i,s1)) = DataPart (Exec (i,s2))
consider a, b being Int_position , k1, k2 being Integer such that
A47: i = SubFrom (a,k1,b,k2) by A46, SCMPDS_2:36;
now
let c be Int_position ; :: thesis: (Exec (i,s1)) . b1 = (Exec (i,s2)) . b1
per cases ( DataLoc ((s1 . a),k1) = c or DataLoc ((s1 . a),k1) <> c ) ;
suppose A48: DataLoc ((s1 . a),k1) = c ; :: thesis: (Exec (i,s1)) . b1 = (Exec (i,s2)) . b1
then A49: DataLoc ((s2 . a),k1) = c by A5, Th23;
thus (Exec (i,s1)) . c = (s1 . (DataLoc ((s1 . a),k1))) - (s1 . (DataLoc ((s1 . b),k2))) by A47, A48, SCMPDS_2:50
.= (s2 . (DataLoc ((s2 . a),k1))) - (s1 . (DataLoc ((s1 . b),k2))) by A6
.= (s2 . (DataLoc ((s2 . a),k1))) - (s2 . (DataLoc ((s2 . b),k2))) by A6
.= (Exec (i,s2)) . c by A47, A49, SCMPDS_2:50 ; :: thesis: verum
end;
suppose A50: DataLoc ((s1 . a),k1) <> c ; :: thesis: (Exec (i,s1)) . b1 = (Exec (i,s2)) . b1
then A51: DataLoc ((s2 . a),k1) <> c by A5, Th23;
thus (Exec (i,s1)) . c = s1 . c by A47, A50, SCMPDS_2:50
.= s2 . c by A5, Th23
.= (Exec (i,s2)) . c by A47, A51, SCMPDS_2:50 ; :: thesis: verum
end;
end;
end;
hence DataPart (Exec (i,s1)) = DataPart (Exec (i,s2)) by Th23; :: thesis: verum
end;
suppose A52: InsCode i = 11 ; :: thesis: ( (IC (Exec (i,s1))) + n = IC (Exec (i,s2)) & DataPart (Exec (i,s1)) = DataPart (Exec (i,s2)) )
hence (IC (Exec (i,s1))) + n = IC (Exec (i,s2)) by A8; :: thesis: DataPart (Exec (i,s1)) = DataPart (Exec (i,s2))
consider a, b being Int_position , k1, k2 being Integer such that
A53: i = MultBy (a,k1,b,k2) by A52, SCMPDS_2:37;
now
let c be Int_position ; :: thesis: (Exec (i,s1)) . b1 = (Exec (i,s2)) . b1
per cases ( DataLoc ((s1 . a),k1) = c or DataLoc ((s1 . a),k1) <> c ) ;
suppose A54: DataLoc ((s1 . a),k1) = c ; :: thesis: (Exec (i,s1)) . b1 = (Exec (i,s2)) . b1
then A55: DataLoc ((s2 . a),k1) = c by A5, Th23;
thus (Exec (i,s1)) . c = (s1 . (DataLoc ((s1 . a),k1))) * (s1 . (DataLoc ((s1 . b),k2))) by A53, A54, SCMPDS_2:51
.= (s2 . (DataLoc ((s2 . a),k1))) * (s1 . (DataLoc ((s1 . b),k2))) by A6
.= (s2 . (DataLoc ((s2 . a),k1))) * (s2 . (DataLoc ((s2 . b),k2))) by A6
.= (Exec (i,s2)) . c by A53, A55, SCMPDS_2:51 ; :: thesis: verum
end;
suppose A56: DataLoc ((s1 . a),k1) <> c ; :: thesis: (Exec (i,s1)) . b1 = (Exec (i,s2)) . b1
then A57: DataLoc ((s2 . a),k1) <> c by A5, Th23;
thus (Exec (i,s1)) . c = s1 . c by A53, A56, SCMPDS_2:51
.= s2 . c by A5, Th23
.= (Exec (i,s2)) . c by A53, A57, SCMPDS_2:51 ; :: thesis: verum
end;
end;
end;
hence DataPart (Exec (i,s1)) = DataPart (Exec (i,s2)) by Th23; :: thesis: verum
end;
suppose A58: InsCode i = 12 ; :: thesis: ( (IC (Exec (i,s1))) + n = IC (Exec (i,s2)) & DataPart (Exec (i,s1)) = DataPart (Exec (i,s2)) )
hence (IC (Exec (i,s1))) + n = IC (Exec (i,s2)) by A8; :: thesis: DataPart (Exec (i,s1)) = DataPart (Exec (i,s2))
consider a, b being Int_position , k1, k2 being Integer such that
A59: i = Divide (a,k1,b,k2) by A58, SCMPDS_2:38;
now
let c be Int_position ; :: thesis: (Exec (i,s1)) . b1 = (Exec (i,s2)) . b1
per cases ( DataLoc ((s1 . b),k2) = c or DataLoc ((s1 . b),k2) <> c ) ;
suppose A60: DataLoc ((s1 . b),k2) = c ; :: thesis: (Exec (i,s1)) . b1 = (Exec (i,s2)) . b1
then A61: DataLoc ((s2 . b),k2) = c by A5, Th23;
thus (Exec (i,s1)) . c = (s1 . (DataLoc ((s1 . a),k1))) mod (s1 . (DataLoc ((s1 . b),k2))) by A59, A60, SCMPDS_2:52
.= (s2 . (DataLoc ((s2 . a),k1))) mod (s1 . (DataLoc ((s1 . b),k2))) by A6
.= (s2 . (DataLoc ((s2 . a),k1))) mod (s2 . (DataLoc ((s2 . b),k2))) by A6
.= (Exec (i,s2)) . c by A59, A61, SCMPDS_2:52 ; :: thesis: verum
end;
suppose A62: DataLoc ((s1 . b),k2) <> c ; :: thesis: (Exec (i,s1)) . b1 = (Exec (i,s2)) . b1
then A63: DataLoc ((s2 . b),k2) <> c by A5, Th23;
hereby :: thesis: verum
per cases ( DataLoc ((s1 . a),k1) <> c or DataLoc ((s1 . a),k1) = c ) ;
suppose A64: DataLoc ((s1 . a),k1) <> c ; :: thesis: (Exec (i,s1)) . c = (Exec (i,s2)) . c
then A65: DataLoc ((s2 . a),k1) <> c by A5, Th23;
thus (Exec (i,s1)) . c = s1 . c by A59, A62, A64, SCMPDS_2:52
.= s2 . c by A5, Th23
.= (Exec (i,s2)) . c by A59, A63, A65, SCMPDS_2:52 ; :: thesis: verum
end;
suppose A66: DataLoc ((s1 . a),k1) = c ; :: thesis: (Exec (i,s1)) . c = (Exec (i,s2)) . c
then A67: DataLoc ((s2 . a),k1) = c by A5, Th23;
thus (Exec (i,s1)) . c = (s1 . (DataLoc ((s1 . a),k1))) div (s1 . (DataLoc ((s1 . b),k2))) by A59, A62, A66, SCMPDS_2:52
.= (s2 . (DataLoc ((s2 . a),k1))) div (s1 . (DataLoc ((s1 . b),k2))) by A6
.= (s2 . (DataLoc ((s2 . a),k1))) div (s2 . (DataLoc ((s2 . b),k2))) by A6
.= (Exec (i,s2)) . c by A59, A63, A67, SCMPDS_2:52 ; :: thesis: verum
end;
end;
end;
end;
end;
end;
hence DataPart (Exec (i,s1)) = DataPart (Exec (i,s2)) by Th23; :: thesis: verum
end;
suppose A68: InsCode i = 13 ; :: thesis: ( (IC (Exec (i,s1))) + n = IC (Exec (i,s2)) & DataPart (Exec (i,s1)) = DataPart (Exec (i,s2)) )
hence (IC (Exec (i,s1))) + n = IC (Exec (i,s2)) by A8; :: thesis: DataPart (Exec (i,s1)) = DataPart (Exec (i,s2))
consider a, b being Int_position , k1, k2 being Integer such that
A69: i = (a,k1) := (b,k2) by A68, SCMPDS_2:39;
now
let c be Int_position ; :: thesis: (Exec (i,s1)) . b1 = (Exec (i,s2)) . b1
per cases ( DataLoc ((s1 . a),k1) = c or DataLoc ((s1 . a),k1) <> c ) ;
suppose A70: DataLoc ((s1 . a),k1) = c ; :: thesis: (Exec (i,s1)) . b1 = (Exec (i,s2)) . b1
then A71: DataLoc ((s2 . a),k1) = c by A5, Th23;
thus (Exec (i,s1)) . c = s1 . (DataLoc ((s1 . b),k2)) by A69, A70, SCMPDS_2:47
.= s2 . (DataLoc ((s2 . b),k2)) by A6
.= (Exec (i,s2)) . c by A69, A71, SCMPDS_2:47 ; :: thesis: verum
end;
suppose A72: DataLoc ((s1 . a),k1) <> c ; :: thesis: (Exec (i,s1)) . b1 = (Exec (i,s2)) . b1
then A73: DataLoc ((s2 . a),k1) <> c by A5, Th23;
thus (Exec (i,s1)) . c = s1 . c by A69, A72, SCMPDS_2:47
.= s2 . c by A5, Th23
.= (Exec (i,s2)) . c by A69, A73, SCMPDS_2:47 ; :: thesis: verum
end;
end;
end;
hence DataPart (Exec (i,s1)) = DataPart (Exec (i,s2)) by Th23; :: thesis: verum
end;
end;