let s1, s2 be State of SCMPDS ; :: thesis: for n, m being Element of NAT
for i being Instruction of SCMPDS st IC s1 = inspos 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 = inspos 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 = inspos 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 = inspos m
and
A2:
i valid_at m
and
A3:
InsCode i <> 1
and
A4:
InsCode i <> 3
and
A5:
(IC s1) + n = IC s2
and
A6:
DataPart s1 = DataPart s2
; :: thesis: ( (IC (Exec i,s1)) + n = IC (Exec i,s2) & DataPart (Exec i,s1) = DataPart (Exec i,s2) )
reconsider k1 = IC s1 as Element of NAT by ORDINAL1:def 13;
A8:
(Next (IC s1)) + n = Next (IC s2)
by A5;
set Ci = InsCode i;
A9:
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 A10:
not
InsCode i in {0 ,1,4,5,6}
by ENUMSET1:def 3;
then
IC (Exec i,s1) = Next (IC s1)
by Th6;
hence
(IC (Exec i,s1)) + n = IC (Exec i,s2)
by A8, A10, 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, A4, 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 A12:
(
i = goto k1 &
m + k1 >= 0 )
by A2, Def11;
IC (Exec i,s1) = ICplusConst s1,
k1
by A12, SCMPDS_2:66;
hence (IC (Exec i,s1)) + n =
ICplusConst s2,
k1
by A1, A5, A12, Th82
.=
IC (Exec i,s2)
by A12, SCMPDS_2:66
;
:: thesis: DataPart (Exec i,s1) = DataPart (Exec i,s2)thus
DataPart (Exec i,s1) = DataPart (Exec i,s2)
by A13, 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 A19:
(
i = a,
k1 <>0_goto k2 &
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 A21:
s1 . (DataLoc (s1 . a),k1) <> 0
;
:: thesis: (IC (Exec i,s1)) + n = IC (Exec i,s2)then A22:
s2 . (DataLoc (s2 . a),k1) <> 0
by A11;
IC (Exec i,s1) = ICplusConst s1,
k2
by A19, A21, SCMPDS_2:67;
hence (IC (Exec i,s1)) + n =
ICplusConst s2,
k2
by A1, A5, A19, Th82
.=
IC (Exec i,s2)
by A19, A22, SCMPDS_2:67
;
:: thesis: verum end; end;
end; thus
DataPart (Exec i,s1) = DataPart (Exec i,s2)
by A20, 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 A25:
(
i = a,
k1 <=0_goto k2 &
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 A27:
s1 . (DataLoc (s1 . a),k1) <= 0
;
:: thesis: (IC (Exec i,s1)) + n = IC (Exec i,s2)then A28:
s2 . (DataLoc (s2 . a),k1) <= 0
by A11;
IC (Exec i,s1) = ICplusConst s1,
k2
by A25, A27, SCMPDS_2:68;
hence (IC (Exec i,s1)) + n =
ICplusConst s2,
k2
by A1, A5, A25, Th82
.=
IC (Exec i,s2)
by A25, A28, SCMPDS_2:68
;
:: thesis: verum end; end;
end; thus
DataPart (Exec i,s1) = DataPart (Exec i,s2)
by A26, 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 A31:
(
i = a,
k1 >=0_goto k2 &
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 A33:
s1 . (DataLoc (s1 . a),k1) >= 0
;
:: thesis: (IC (Exec i,s1)) + n = IC (Exec i,s2)then A34:
s2 . (DataLoc (s2 . a),k1) >= 0
by A11;
IC (Exec i,s1) = ICplusConst s1,
k2
by A31, A33, SCMPDS_2:69;
hence (IC (Exec i,s1)) + n =
ICplusConst s2,
k2
by A1, A5, A31, Th82
.=
IC (Exec i,s2)
by A31, A34, SCMPDS_2:69
;
:: thesis: verum end; end;
end; thus
DataPart (Exec i,s1) = DataPart (Exec i,s2)
by A32, Th23;
:: thesis: verum end; suppose A37:
InsCode i = 7
;
:: 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 A38:
i = a,
k1 := k2
by SCMPDS_2:42;
thus
(IC (Exec i,s1)) + n = IC (Exec i,s2)
by A9, A37;
:: thesis: DataPart (Exec i,s1) = DataPart (Exec i,s2)thus
DataPart (Exec i,s1) = DataPart (Exec i,s2)
by A39, Th23;
:: thesis: verum end; suppose A44:
InsCode i = 8
;
:: 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 A45:
i = AddTo a,
k1,
k2
by SCMPDS_2:43;
A46:
now let b be
Int_position ;
:: thesis: (Exec i,s1) . b1 = (Exec i,s2) . b1per cases
( DataLoc (s1 . a),k1 = b or DataLoc (s1 . a),k1 <> b )
;
suppose A47:
DataLoc (s1 . a),
k1 = b
;
:: thesis: (Exec i,s1) . b1 = (Exec i,s2) . b1then A48:
DataLoc (s2 . a),
k1 = b
by A6, Th23;
thus (Exec i,s1) . b =
(s1 . (DataLoc (s1 . a),k1)) + k2
by A45, A47, SCMPDS_2:60
.=
(s2 . (DataLoc (s2 . a),k1)) + k2
by A11
.=
(Exec i,s2) . b
by A45, A48, SCMPDS_2:60
;
:: thesis: verum end; end; end; thus
(IC (Exec i,s1)) + n = IC (Exec i,s2)
by A9, A44;
:: thesis: DataPart (Exec i,s1) = DataPart (Exec i,s2)thus
DataPart (Exec i,s1) = DataPart (Exec i,s2)
by A46, Th23;
:: thesis: verum end; suppose A51:
InsCode i = 9
;
:: thesis: ( (IC (Exec i,s1)) + n = IC (Exec i,s2) & DataPart (Exec i,s1) = DataPart (Exec i,s2) )then consider a,
b being
Int_position ,
k1,
k2 being
Integer such that A52:
i = AddTo a,
k1,
b,
k2
by SCMPDS_2:44;
A53:
now let c be
Int_position ;
:: thesis: (Exec i,s1) . b1 = (Exec i,s2) . b1per 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) . b1then A55:
DataLoc (s2 . a),
k1 = c
by A6, Th23;
thus (Exec i,s1) . c =
(s1 . (DataLoc (s1 . a),k1)) + (s1 . (DataLoc (s1 . b),k2))
by A52, A54, SCMPDS_2:61
.=
(s2 . (DataLoc (s2 . a),k1)) + (s1 . (DataLoc (s1 . b),k2))
by A11
.=
(s2 . (DataLoc (s2 . a),k1)) + (s2 . (DataLoc (s2 . b),k2))
by A11
.=
(Exec i,s2) . c
by A52, A55, SCMPDS_2:61
;
:: thesis: verum end; end; end; thus
(IC (Exec i,s1)) + n = IC (Exec i,s2)
by A9, A51;
:: thesis: DataPart (Exec i,s1) = DataPart (Exec i,s2)thus
DataPart (Exec i,s1) = DataPart (Exec i,s2)
by A53, Th23;
:: thesis: verum end; suppose A58:
InsCode i = 10
;
:: thesis: ( (IC (Exec i,s1)) + n = IC (Exec i,s2) & DataPart (Exec i,s1) = DataPart (Exec i,s2) )then consider a,
b being
Int_position ,
k1,
k2 being
Integer such that A59:
i = SubFrom a,
k1,
b,
k2
by SCMPDS_2:45;
A60:
now let c be
Int_position ;
:: thesis: (Exec i,s1) . b1 = (Exec i,s2) . b1per cases
( DataLoc (s1 . a),k1 = c or DataLoc (s1 . a),k1 <> c )
;
suppose A61:
DataLoc (s1 . a),
k1 = c
;
:: thesis: (Exec i,s1) . b1 = (Exec i,s2) . b1then A62:
DataLoc (s2 . a),
k1 = c
by A6, Th23;
thus (Exec i,s1) . c =
(s1 . (DataLoc (s1 . a),k1)) - (s1 . (DataLoc (s1 . b),k2))
by A59, A61, SCMPDS_2:62
.=
(s2 . (DataLoc (s2 . a),k1)) - (s1 . (DataLoc (s1 . b),k2))
by A11
.=
(s2 . (DataLoc (s2 . a),k1)) - (s2 . (DataLoc (s2 . b),k2))
by A11
.=
(Exec i,s2) . c
by A59, A62, SCMPDS_2:62
;
:: thesis: verum end; end; end; thus
(IC (Exec i,s1)) + n = IC (Exec i,s2)
by A9, A58;
:: thesis: DataPart (Exec i,s1) = DataPart (Exec i,s2)thus
DataPart (Exec i,s1) = DataPart (Exec i,s2)
by A60, Th23;
:: thesis: verum end; suppose A65:
InsCode i = 11
;
:: thesis: ( (IC (Exec i,s1)) + n = IC (Exec i,s2) & DataPart (Exec i,s1) = DataPart (Exec i,s2) )then consider a,
b being
Int_position ,
k1,
k2 being
Integer such that A66:
i = MultBy a,
k1,
b,
k2
by SCMPDS_2:46;
A67:
now let c be
Int_position ;
:: thesis: (Exec i,s1) . b1 = (Exec i,s2) . b1per cases
( DataLoc (s1 . a),k1 = c or DataLoc (s1 . a),k1 <> c )
;
suppose A68:
DataLoc (s1 . a),
k1 = c
;
:: thesis: (Exec i,s1) . b1 = (Exec i,s2) . b1then A69:
DataLoc (s2 . a),
k1 = c
by A6, Th23;
thus (Exec i,s1) . c =
(s1 . (DataLoc (s1 . a),k1)) * (s1 . (DataLoc (s1 . b),k2))
by A66, A68, SCMPDS_2:63
.=
(s2 . (DataLoc (s2 . a),k1)) * (s1 . (DataLoc (s1 . b),k2))
by A11
.=
(s2 . (DataLoc (s2 . a),k1)) * (s2 . (DataLoc (s2 . b),k2))
by A11
.=
(Exec i,s2) . c
by A66, A69, SCMPDS_2:63
;
:: thesis: verum end; end; end; thus
(IC (Exec i,s1)) + n = IC (Exec i,s2)
by A9, A65;
:: thesis: DataPart (Exec i,s1) = DataPart (Exec i,s2)thus
DataPart (Exec i,s1) = DataPart (Exec i,s2)
by A67, Th23;
:: thesis: verum end; suppose A72:
InsCode i = 12
;
:: thesis: ( (IC (Exec i,s1)) + n = IC (Exec i,s2) & DataPart (Exec i,s1) = DataPart (Exec i,s2) )then consider a,
b being
Int_position ,
k1,
k2 being
Integer such that A73:
i = Divide a,
k1,
b,
k2
by SCMPDS_2:47;
A74:
now let c be
Int_position ;
:: thesis: (Exec i,s1) . b1 = (Exec i,s2) . b1per cases
( DataLoc (s1 . b),k2 = c or DataLoc (s1 . b),k2 <> c )
;
suppose A75:
DataLoc (s1 . b),
k2 = c
;
:: thesis: (Exec i,s1) . b1 = (Exec i,s2) . b1then A76:
DataLoc (s2 . b),
k2 = c
by A6, Th23;
thus (Exec i,s1) . c =
(s1 . (DataLoc (s1 . a),k1)) mod (s1 . (DataLoc (s1 . b),k2))
by A73, A75, SCMPDS_2:64
.=
(s2 . (DataLoc (s2 . a),k1)) mod (s1 . (DataLoc (s1 . b),k2))
by A11
.=
(s2 . (DataLoc (s2 . a),k1)) mod (s2 . (DataLoc (s2 . b),k2))
by A11
.=
(Exec i,s2) . c
by A73, A76, SCMPDS_2:64
;
:: thesis: verum end; suppose A77:
DataLoc (s1 . b),
k2 <> c
;
:: thesis: (Exec i,s1) . b1 = (Exec i,s2) . b1then A78:
DataLoc (s2 . b),
k2 <> c
by A6, Th23;
hereby :: thesis: verum
per cases
( DataLoc (s1 . a),k1 <> c or DataLoc (s1 . a),k1 = c )
;
suppose A79:
DataLoc (s1 . a),
k1 <> c
;
:: thesis: (Exec i,s1) . c = (Exec i,s2) . cthen A80:
DataLoc (s2 . a),
k1 <> c
by A6, Th23;
thus (Exec i,s1) . c =
s1 . c
by A73, A77, A79, SCMPDS_2:64
.=
s2 . c
by A6, Th23
.=
(Exec i,s2) . c
by A73, A78, A80, SCMPDS_2:64
;
:: thesis: verum end; suppose A81:
DataLoc (s1 . a),
k1 = c
;
:: thesis: (Exec i,s1) . c = (Exec i,s2) . cthen A82:
DataLoc (s2 . a),
k1 = c
by A6, Th23;
thus (Exec i,s1) . c =
(s1 . (DataLoc (s1 . a),k1)) div (s1 . (DataLoc (s1 . b),k2))
by A73, A77, A81, SCMPDS_2:64
.=
(s2 . (DataLoc (s2 . a),k1)) div (s1 . (DataLoc (s1 . b),k2))
by A11
.=
(s2 . (DataLoc (s2 . a),k1)) div (s2 . (DataLoc (s2 . b),k2))
by A11
.=
(Exec i,s2) . c
by A73, A78, A82, SCMPDS_2:64
;
:: thesis: verum end; end;
end; end; end; end; thus
(IC (Exec i,s1)) + n = IC (Exec i,s2)
by A9, A72;
:: thesis: DataPart (Exec i,s1) = DataPart (Exec i,s2)thus
DataPart (Exec i,s1) = DataPart (Exec i,s2)
by A74, Th23;
:: thesis: verum end; suppose A83:
InsCode i = 13
;
:: thesis: ( (IC (Exec i,s1)) + n = IC (Exec i,s2) & DataPart (Exec i,s1) = DataPart (Exec i,s2) )then consider a,
b being
Int_position ,
k1,
k2 being
Integer such that A84:
i = a,
k1 := b,
k2
by SCMPDS_2:48;
A85:
now let c be
Int_position ;
:: thesis: (Exec i,s1) . b1 = (Exec i,s2) . b1per cases
( DataLoc (s1 . a),k1 = c or DataLoc (s1 . a),k1 <> c )
;
suppose A86:
DataLoc (s1 . a),
k1 = c
;
:: thesis: (Exec i,s1) . b1 = (Exec i,s2) . b1then A87:
DataLoc (s2 . a),
k1 = c
by A6, Th23;
thus (Exec i,s1) . c =
s1 . (DataLoc (s1 . b),k2)
by A84, A86, SCMPDS_2:59
.=
s2 . (DataLoc (s2 . b),k2)
by A11
.=
(Exec i,s2) . c
by A84, A87, SCMPDS_2:59
;
:: thesis: verum end; end; end; thus
(IC (Exec i,s1)) + n = IC (Exec i,s2)
by A9, A83;
:: thesis: DataPart (Exec i,s1) = DataPart (Exec i,s2)thus
DataPart (Exec i,s1) = DataPart (Exec i,s2)
by A85, Th23;
:: thesis: verum end; end;