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:38, SCMPDS_2:15;
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:66;
hence (IC (Exec i,s1)) + n = ICplusConst s2,k1 by A1, A4, A11, Th82
.= IC (Exec i,s2) by A10, SCMPDS_2:66 ;
:: 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:66
.= s2 . a by A5, Th23
.= (Exec i,s2) . a by A10, SCMPDS_2:66 ; :: 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:37;
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:57
.= (Exec i,s2) . b by A13, A14, SCMPDS_2:57 ;
:: 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:57
.= s2 . b by A5, Th23
.= (Exec i,s2) . b by A13, A15, SCMPDS_2:57 ;
:: 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:67;
hence (IC (Exec i,s1)) + n = ICplusConst s2,k2 by A1, A4, A17, Th82
.= IC (Exec i,s2) by A16, A19, SCMPDS_2:67 ;
:: 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:67;
hence (IC (Exec i,s1)) + n = IC (Exec i,s2) by A7, A16, SCMPDS_2:67; :: 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:67
.= s2 . a by A5, Th23
.= (Exec i,s2) . a by A16, SCMPDS_2:67 ; :: 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:68;
hence (IC (Exec i,s1)) + n = ICplusConst s2,k2 by A1, A4, A21, Th82
.= IC (Exec i,s2) by A20, A23, SCMPDS_2:68 ;
:: 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:68;
hence (IC (Exec i,s1)) + n = IC (Exec i,s2) by A7, A20, SCMPDS_2:68; :: 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:68
.= s2 . a by A5, Th23
.= (Exec i,s2) . a by A20, SCMPDS_2:68 ; :: 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:69;
hence (IC (Exec i,s1)) + n = ICplusConst s2,k2 by A1, A4, A25, Th82
.= IC (Exec i,s2) by A24, A27, SCMPDS_2:69 ;
:: 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:69;
hence (IC (Exec i,s1)) + n = IC (Exec i,s2) by A7, A24, SCMPDS_2:69; :: 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:69
.= s2 . a by A5, Th23
.= (Exec i,s2) . a by A24, SCMPDS_2:69 ; :: 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:42;
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:58
.= (Exec i,s2) . b by A29, A31, SCMPDS_2:58 ; :: 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:58
.= s2 . b by A5, Th23
.= (Exec i,s2) . b by A29, A33, SCMPDS_2:58 ; :: 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:43;
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:60
.= (s2 . (DataLoc (s2 . a),k1)) + k2 by A6
.= (Exec i,s2) . b by A35, A37, SCMPDS_2:60 ; :: 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:60
.= s2 . b by A5, Th23
.= (Exec i,s2) . b by A35, A39, SCMPDS_2:60 ; :: 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:44;
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:61
.= (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:61 ; :: 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:61
.= s2 . c by A5, Th23
.= (Exec i,s2) . c by A41, A45, SCMPDS_2:61 ; :: 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:45;
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:62
.= (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:62 ; :: 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:62
.= s2 . c by A5, Th23
.= (Exec i,s2) . c by A47, A51, SCMPDS_2:62 ; :: 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:46;
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:63
.= (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:63 ; :: 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:63
.= s2 . c by A5, Th23
.= (Exec i,s2) . c by A53, A57, SCMPDS_2:63 ; :: 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:47;
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:64
.= (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:64 ; :: 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:64
.= s2 . c by A5, Th23
.= (Exec i,s2) . c by A59, A63, A65, SCMPDS_2:64 ; :: 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:64
.= (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:64 ; :: 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:48;
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:59
.= s2 . (DataLoc (s2 . b),k2) by A6
.= (Exec i,s2) . c by A69, A71, SCMPDS_2:59 ; :: 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:59
.= s2 . c by A5, Th23
.= (Exec i,s2) . c by A69, A73, SCMPDS_2:59 ; :: thesis: verum
end;
end;
end;
hence DataPart (Exec i,s1) = DataPart (Exec i,s2) by Th23; :: thesis: verum
end;
end;