let i be Instruction of SCMPDS ; :: thesis: for s1, s2 being State of SCMPDS st DataPart s1 = DataPart s2 & InsCode i <> 3 holds
DataPart (Exec i,s1) = DataPart (Exec i,s2)
let s1, s2 be State of SCMPDS ; :: thesis: ( DataPart s1 = DataPart s2 & InsCode i <> 3 implies DataPart (Exec i,s1) = DataPart (Exec i,s2) )
assume A1:
( DataPart s1 = DataPart s2 & InsCode i <> 3 )
; :: thesis: DataPart (Exec i,s1) = DataPart (Exec i,s2)
per cases
( InsCode i = 0 or InsCode i = 1 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 A1, NAT_1:38, SCMPDS_2:15;
suppose
InsCode i = 8
;
:: thesis: DataPart (Exec i,s1) = DataPart (Exec i,s2)then consider a being
Int_position ,
k1,
k2 being
Integer such that A17:
i = AddTo a,
k1,
k2
by SCMPDS_2:43;
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 A18:
DataLoc (s1 . a),
k1 = b
;
:: thesis: (Exec i,s1) . b1 = (Exec i,s2) . b1then A19:
DataLoc (s2 . a),
k1 = b
by A1, SCMPDS_4:23;
thus (Exec i,s1) . b =
(s1 . (DataLoc (s1 . a),k1)) + k2
by A17, A18, SCMPDS_2:60
.=
(s2 . (DataLoc (s2 . a),k1)) + k2
by A1, SCMPDS_3:3
.=
(Exec i,s2) . b
by A17, A19, SCMPDS_2:60
;
:: thesis: verum end; end; end; hence
DataPart (Exec i,s1) = DataPart (Exec i,s2)
by SCMPDS_4:23;
:: thesis: verum end; suppose
InsCode i = 9
;
:: thesis: DataPart (Exec i,s1) = DataPart (Exec i,s2)then consider a,
b being
Int_position ,
k1,
k2 being
Integer such that A22:
i = AddTo a,
k1,
b,
k2
by SCMPDS_2:44;
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 A23:
DataLoc (s1 . a),
k1 = c
;
:: thesis: (Exec i,s1) . b1 = (Exec i,s2) . b1then A24:
DataLoc (s2 . a),
k1 = c
by A1, SCMPDS_4:23;
thus (Exec i,s1) . c =
(s1 . (DataLoc (s1 . a),k1)) + (s1 . (DataLoc (s1 . b),k2))
by A22, A23, SCMPDS_2:61
.=
(s2 . (DataLoc (s2 . a),k1)) + (s1 . (DataLoc (s1 . b),k2))
by A1, SCMPDS_3:3
.=
(s2 . (DataLoc (s2 . a),k1)) + (s2 . (DataLoc (s2 . b),k2))
by A1, SCMPDS_3:3
.=
(Exec i,s2) . c
by A22, A24, SCMPDS_2:61
;
:: thesis: verum end; end; end; hence
DataPart (Exec i,s1) = DataPart (Exec i,s2)
by SCMPDS_4:23;
:: thesis: verum end; suppose
InsCode i = 10
;
:: thesis: DataPart (Exec i,s1) = DataPart (Exec i,s2)then consider a,
b being
Int_position ,
k1,
k2 being
Integer such that A27:
i = SubFrom a,
k1,
b,
k2
by SCMPDS_2:45;
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 A28:
DataLoc (s1 . a),
k1 = c
;
:: thesis: (Exec i,s1) . b1 = (Exec i,s2) . b1then A29:
DataLoc (s2 . a),
k1 = c
by A1, SCMPDS_4:23;
thus (Exec i,s1) . c =
(s1 . (DataLoc (s1 . a),k1)) - (s1 . (DataLoc (s1 . b),k2))
by A27, A28, SCMPDS_2:62
.=
(s2 . (DataLoc (s2 . a),k1)) - (s1 . (DataLoc (s1 . b),k2))
by A1, SCMPDS_3:3
.=
(s2 . (DataLoc (s2 . a),k1)) - (s2 . (DataLoc (s2 . b),k2))
by A1, SCMPDS_3:3
.=
(Exec i,s2) . c
by A27, A29, SCMPDS_2:62
;
:: thesis: verum end; end; end; hence
DataPart (Exec i,s1) = DataPart (Exec i,s2)
by SCMPDS_4:23;
:: thesis: verum end; suppose
InsCode i = 11
;
:: thesis: DataPart (Exec i,s1) = DataPart (Exec i,s2)then consider a,
b being
Int_position ,
k1,
k2 being
Integer such that A32:
i = MultBy a,
k1,
b,
k2
by SCMPDS_2:46;
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 A33:
DataLoc (s1 . a),
k1 = c
;
:: thesis: (Exec i,s1) . b1 = (Exec i,s2) . b1then A34:
DataLoc (s2 . a),
k1 = c
by A1, SCMPDS_4:23;
thus (Exec i,s1) . c =
(s1 . (DataLoc (s1 . a),k1)) * (s1 . (DataLoc (s1 . b),k2))
by A32, A33, SCMPDS_2:63
.=
(s2 . (DataLoc (s2 . a),k1)) * (s1 . (DataLoc (s1 . b),k2))
by A1, SCMPDS_3:3
.=
(s2 . (DataLoc (s2 . a),k1)) * (s2 . (DataLoc (s2 . b),k2))
by A1, SCMPDS_3:3
.=
(Exec i,s2) . c
by A32, A34, SCMPDS_2:63
;
:: thesis: verum end; end; end; hence
DataPart (Exec i,s1) = DataPart (Exec i,s2)
by SCMPDS_4:23;
:: thesis: verum end; suppose
InsCode i = 12
;
:: thesis: DataPart (Exec i,s1) = DataPart (Exec i,s2)then consider a,
b being
Int_position ,
k1,
k2 being
Integer such that A37:
i = Divide a,
k1,
b,
k2
by SCMPDS_2:47;
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 A38:
DataLoc (s1 . b),
k2 = c
;
:: thesis: (Exec i,s1) . b1 = (Exec i,s2) . b1then A39:
DataLoc (s2 . b),
k2 = c
by A1, SCMPDS_4:23;
thus (Exec i,s1) . c =
(s1 . (DataLoc (s1 . a),k1)) mod (s1 . (DataLoc (s1 . b),k2))
by A37, A38, SCMPDS_2:64
.=
(s2 . (DataLoc (s2 . a),k1)) mod (s1 . (DataLoc (s1 . b),k2))
by A1, SCMPDS_3:3
.=
(s2 . (DataLoc (s2 . a),k1)) mod (s2 . (DataLoc (s2 . b),k2))
by A1, SCMPDS_3:3
.=
(Exec i,s2) . c
by A37, A39, SCMPDS_2:64
;
:: thesis: verum end; suppose A40:
DataLoc (s1 . b),
k2 <> c
;
:: thesis: (Exec i,s1) . b1 = (Exec i,s2) . b1then A41:
DataLoc (s2 . b),
k2 <> c
by A1, SCMPDS_4:23;
hereby :: thesis: verum
per cases
( DataLoc (s1 . a),k1 <> c or DataLoc (s1 . a),k1 = c )
;
suppose A42:
DataLoc (s1 . a),
k1 <> c
;
:: thesis: (Exec i,s1) . c = (Exec i,s2) . cthen A43:
DataLoc (s2 . a),
k1 <> c
by A1, SCMPDS_4:23;
thus (Exec i,s1) . c =
s1 . c
by A37, A40, A42, SCMPDS_2:64
.=
s2 . c
by A1, SCMPDS_4:23
.=
(Exec i,s2) . c
by A37, A41, A43, SCMPDS_2:64
;
:: thesis: verum end; suppose A44:
DataLoc (s1 . a),
k1 = c
;
:: thesis: (Exec i,s1) . c = (Exec i,s2) . cthen A45:
DataLoc (s2 . a),
k1 = c
by A1, SCMPDS_4:23;
thus (Exec i,s1) . c =
(s1 . (DataLoc (s1 . a),k1)) div (s1 . (DataLoc (s1 . b),k2))
by A37, A40, A44, SCMPDS_2:64
.=
(s2 . (DataLoc (s2 . a),k1)) div (s1 . (DataLoc (s1 . b),k2))
by A1, SCMPDS_3:3
.=
(s2 . (DataLoc (s2 . a),k1)) div (s2 . (DataLoc (s2 . b),k2))
by A1, SCMPDS_3:3
.=
(Exec i,s2) . c
by A37, A41, A45, SCMPDS_2:64
;
:: thesis: verum end; end;
end; end; end; end; hence
DataPart (Exec i,s1) = DataPart (Exec i,s2)
by SCMPDS_4:23;
:: thesis: verum end; suppose
InsCode i = 13
;
:: thesis: DataPart (Exec i,s1) = DataPart (Exec i,s2)then consider a,
b being
Int_position ,
k1,
k2 being
Integer such that A46:
i = a,
k1 := b,
k2
by SCMPDS_2:48;
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 A47:
DataLoc (s1 . a),
k1 = c
;
:: thesis: (Exec i,s1) . b1 = (Exec i,s2) . b1then A48:
DataLoc (s2 . a),
k1 = c
by A1, SCMPDS_4:23;
thus (Exec i,s1) . c =
s1 . (DataLoc (s1 . b),k2)
by A46, A47, SCMPDS_2:59
.=
s2 . (DataLoc (s2 . b),k2)
by A1, SCMPDS_3:3
.=
(Exec i,s2) . c
by A46, A48, SCMPDS_2:59
;
:: thesis: verum end; end; end; hence
DataPart (Exec i,s1) = DataPart (Exec i,s2)
by SCMPDS_4:23;
:: thesis: verum end; end;