let i be Instruction of SCM+FSA; :: thesis: for s1, s2 being State of SCM+FSA st DataPart s1 = DataPart s2 holds
DataPart (Exec (i,s1)) = DataPart (Exec (i,s2))

let s1, s2 be State of SCM+FSA; :: thesis: ( DataPart s1 = DataPart s2 implies DataPart (Exec (i,s1)) = DataPart (Exec (i,s2)) )
assume A1: DataPart s1 = DataPart s2 ; :: thesis: DataPart (Exec (i,s1)) = DataPart (Exec (i,s2))
set l = i;
A2: dom (Exec (i,s1)) = the carrier of SCM+FSA by PARTFUN1:def 2;
then A3: dom (Exec (i,s1)) = dom (Exec (i,s2)) by PARTFUN1:def 2;
A4: dom ((Exec (i,s1)) | (Data-Locations )) = Data-Locations by A2, RELAT_1:62;
A5: dom (Exec (i,s2)) = the carrier of SCM+FSA by PARTFUN1:def 2;
then A6: dom ((Exec (i,s2)) | (Data-Locations )) = Data-Locations by RELAT_1:62;
not not InsCode i = 0 & ... & not InsCode i = 12 by NAT_1:60, SCMFSA_2:16;
per cases then ( InsCode i = 0 or InsCode i = 1 or InsCode i = 2 or InsCode i = 3 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 ) ;
suppose InsCode i = 0 ; :: thesis: DataPart (Exec (i,s1)) = DataPart (Exec (i,s2))
end;
suppose InsCode i = 1 ; :: thesis: DataPart (Exec (i,s1)) = DataPart (Exec (i,s2))
then consider db, da being Int-Location such that
A8: i = db := da by SCMFSA_2:30;
A9: for x being object st x in (Data-Locations ) \ {db} holds
((Exec (i,s1)) | ((Data-Locations ) \ {db})) . x = ((Exec (i,s2)) | ((Data-Locations ) \ {db})) . x
proof
let x be object ; :: thesis: ( x in (Data-Locations ) \ {db} implies ((Exec (i,s1)) | ((Data-Locations ) \ {db})) . x = ((Exec (i,s2)) | ((Data-Locations ) \ {db})) . x )
assume A10: x in (Data-Locations ) \ {db} ; :: thesis: ((Exec (i,s1)) | ((Data-Locations ) \ {db})) . x = ((Exec (i,s2)) | ((Data-Locations ) \ {db})) . x
then A11: x in Data-Locations by XBOOLE_0:def 5;
A12: not x in {db} by A10, XBOOLE_0:def 5;
per cases ( x in Int-Locations or x in FinSeq-Locations ) by A11, SCMFSA_2:100, XBOOLE_0:def 3;
suppose x in Int-Locations ; :: thesis: ((Exec (i,s1)) | ((Data-Locations ) \ {db})) . x = ((Exec (i,s2)) | ((Data-Locations ) \ {db})) . x
then reconsider a = x as Int-Location by AMI_2:def 16;
A13: a <> db by A12, TARSKI:def 1;
thus ((Exec (i,s1)) | ((Data-Locations ) \ {db})) . x = (Exec (i,s1)) . a by A10, FUNCT_1:49
.= s1 . a by A8, A13, SCMFSA_2:63
.= (DataPart s1) . a by A11, FUNCT_1:49
.= s2 . a by A1, A11, FUNCT_1:49
.= (Exec (i,s2)) . a by A8, A13, SCMFSA_2:63
.= ((Exec (i,s2)) | ((Data-Locations ) \ {db})) . x by A10, FUNCT_1:49 ; :: thesis: verum
end;
suppose x in FinSeq-Locations ; :: thesis: ((Exec (i,s1)) | ((Data-Locations ) \ {db})) . x = ((Exec (i,s2)) | ((Data-Locations ) \ {db})) . x
then reconsider a = x as FinSeq-Location by SCMFSA_2:def 5;
thus ((Exec (i,s1)) | ((Data-Locations ) \ {db})) . x = (Exec (i,s1)) . a by A10, FUNCT_1:49
.= s1 . a by A8, SCMFSA_2:63
.= (DataPart s1) . a by A11, FUNCT_1:49
.= s2 . a by A1, A11, FUNCT_1:49
.= (Exec (i,s2)) . a by A8, SCMFSA_2:63
.= ((Exec (i,s2)) | ((Data-Locations ) \ {db})) . x by A10, FUNCT_1:49 ; :: thesis: verum
end;
end;
end;
A14: dom ((Exec (i,s2)) | ((Data-Locations ) \ {db})) = (Data-Locations ) \ {db} by A5, RELAT_1:62;
dom ((Exec (i,s1)) | ((Data-Locations ) \ {db})) = (Data-Locations ) \ {db} by A2, RELAT_1:62;
then A15: (Exec (i,s1)) | ((Data-Locations ) \ {db}) = (Exec (i,s2)) | ((Data-Locations ) \ {db}) by A14, A9, FUNCT_1:2;
db in Int-Locations by AMI_2:def 16;
then db in Data-Locations by SCMFSA_2:100, XBOOLE_0:def 3;
then A16: Data-Locations = (Data-Locations ) \/ {db} by ZFMISC_1:40
.= ((Data-Locations ) \ {db}) \/ {db} by XBOOLE_1:39 ;
A17: (Exec (i,s2)) . db = s2 . da by A8, SCMFSA_2:63;
A18: (Exec (i,s1)) . db = s1 . da by A8, SCMFSA_2:63;
da in Int-Locations by AMI_2:def 16;
then A19: da in Data-Locations by SCMFSA_2:100, XBOOLE_0:def 3;
then s1 . da = (DataPart s1) . da by FUNCT_1:49
.= s2 . da by A1, A19, FUNCT_1:49 ;
then (Exec (i,s1)) | {db} = (Exec (i,s2)) | {db} by A3, A18, A17, GRFUNC_1:29;
hence DataPart (Exec (i,s1)) = DataPart (Exec (i,s2)) by A16, A15, RELAT_1:150; :: thesis: verum
end;
suppose InsCode i = 2 ; :: thesis: DataPart (Exec (i,s1)) = DataPart (Exec (i,s2))
then consider db, da being Int-Location such that
A20: i = AddTo (db,da) by SCMFSA_2:31;
A21: for x being object st x in (Data-Locations ) \ {db} holds
((Exec (i,s1)) | ((Data-Locations ) \ {db})) . x = ((Exec (i,s2)) | ((Data-Locations ) \ {db})) . x
proof
let x be object ; :: thesis: ( x in (Data-Locations ) \ {db} implies ((Exec (i,s1)) | ((Data-Locations ) \ {db})) . x = ((Exec (i,s2)) | ((Data-Locations ) \ {db})) . x )
assume A22: x in (Data-Locations ) \ {db} ; :: thesis: ((Exec (i,s1)) | ((Data-Locations ) \ {db})) . x = ((Exec (i,s2)) | ((Data-Locations ) \ {db})) . x
then A23: x in Data-Locations by XBOOLE_0:def 5;
A24: not x in {db} by A22, XBOOLE_0:def 5;
per cases ( x in Int-Locations or x in FinSeq-Locations ) by A23, SCMFSA_2:100, XBOOLE_0:def 3;
suppose x in Int-Locations ; :: thesis: ((Exec (i,s1)) | ((Data-Locations ) \ {db})) . x = ((Exec (i,s2)) | ((Data-Locations ) \ {db})) . x
then reconsider a = x as Int-Location by AMI_2:def 16;
A25: a <> db by A24, TARSKI:def 1;
thus ((Exec (i,s1)) | ((Data-Locations ) \ {db})) . x = (Exec (i,s1)) . a by A22, FUNCT_1:49
.= s1 . a by A20, A25, SCMFSA_2:64
.= (DataPart s1) . a by A23, FUNCT_1:49
.= s2 . a by A1, A23, FUNCT_1:49
.= (Exec (i,s2)) . a by A20, A25, SCMFSA_2:64
.= ((Exec (i,s2)) | ((Data-Locations ) \ {db})) . x by A22, FUNCT_1:49 ; :: thesis: verum
end;
suppose x in FinSeq-Locations ; :: thesis: ((Exec (i,s1)) | ((Data-Locations ) \ {db})) . x = ((Exec (i,s2)) | ((Data-Locations ) \ {db})) . x
then reconsider a = x as FinSeq-Location by SCMFSA_2:def 5;
thus ((Exec (i,s1)) | ((Data-Locations ) \ {db})) . x = (Exec (i,s1)) . a by A22, FUNCT_1:49
.= s1 . a by A20, SCMFSA_2:64
.= (DataPart s1) . a by A23, FUNCT_1:49
.= s2 . a by A1, A23, FUNCT_1:49
.= (Exec (i,s2)) . a by A20, SCMFSA_2:64
.= ((Exec (i,s2)) | ((Data-Locations ) \ {db})) . x by A22, FUNCT_1:49 ; :: thesis: verum
end;
end;
end;
A26: dom ((Exec (i,s2)) | ((Data-Locations ) \ {db})) = (Data-Locations ) \ {db} by A5, RELAT_1:62;
dom ((Exec (i,s1)) | ((Data-Locations ) \ {db})) = (Data-Locations ) \ {db} by A2, RELAT_1:62;
then A27: (Exec (i,s1)) | ((Data-Locations ) \ {db}) = (Exec (i,s2)) | ((Data-Locations ) \ {db}) by A26, A21, FUNCT_1:2;
db in Int-Locations by AMI_2:def 16;
then db in Data-Locations by SCMFSA_2:100, XBOOLE_0:def 3;
then A28: Data-Locations = (Data-Locations ) \/ {db} by ZFMISC_1:40
.= ((Data-Locations ) \ {db}) \/ {db} by XBOOLE_1:39 ;
A29: (Exec (i,s2)) . db = (s2 . db) + (s2 . da) by A20, SCMFSA_2:64;
A30: (Exec (i,s1)) . db = (s1 . db) + (s1 . da) by A20, SCMFSA_2:64;
db in Int-Locations by AMI_2:def 16;
then A31: db in Data-Locations by SCMFSA_2:100, XBOOLE_0:def 3;
then A32: s1 . db = (DataPart s1) . db by FUNCT_1:49
.= s2 . db by A1, A31, FUNCT_1:49 ;
da in Int-Locations by AMI_2:def 16;
then A33: da in Data-Locations by SCMFSA_2:100, XBOOLE_0:def 3;
then s1 . da = (DataPart s1) . da by FUNCT_1:49
.= s2 . da by A1, A33, FUNCT_1:49 ;
then (Exec (i,s1)) | {db} = (Exec (i,s2)) | {db} by A3, A30, A29, A32, GRFUNC_1:29;
hence DataPart (Exec (i,s1)) = DataPart (Exec (i,s2)) by A28, A27, RELAT_1:150; :: thesis: verum
end;
suppose InsCode i = 3 ; :: thesis: DataPart (Exec (i,s1)) = DataPart (Exec (i,s2))
then consider db, da being Int-Location such that
A34: i = SubFrom (db,da) by SCMFSA_2:32;
A35: for x being object st x in (Data-Locations ) \ {db} holds
((Exec (i,s1)) | ((Data-Locations ) \ {db})) . x = ((Exec (i,s2)) | ((Data-Locations ) \ {db})) . x
proof
let x be object ; :: thesis: ( x in (Data-Locations ) \ {db} implies ((Exec (i,s1)) | ((Data-Locations ) \ {db})) . x = ((Exec (i,s2)) | ((Data-Locations ) \ {db})) . x )
assume A36: x in (Data-Locations ) \ {db} ; :: thesis: ((Exec (i,s1)) | ((Data-Locations ) \ {db})) . x = ((Exec (i,s2)) | ((Data-Locations ) \ {db})) . x
then A37: x in Data-Locations by XBOOLE_0:def 5;
A38: not x in {db} by A36, XBOOLE_0:def 5;
per cases ( x in Int-Locations or x in FinSeq-Locations ) by A37, SCMFSA_2:100, XBOOLE_0:def 3;
suppose x in Int-Locations ; :: thesis: ((Exec (i,s1)) | ((Data-Locations ) \ {db})) . x = ((Exec (i,s2)) | ((Data-Locations ) \ {db})) . x
then reconsider a = x as Int-Location by AMI_2:def 16;
A39: a <> db by A38, TARSKI:def 1;
thus ((Exec (i,s1)) | ((Data-Locations ) \ {db})) . x = (Exec (i,s1)) . a by A36, FUNCT_1:49
.= s1 . a by A34, A39, SCMFSA_2:65
.= (DataPart s1) . a by A37, FUNCT_1:49
.= s2 . a by A1, A37, FUNCT_1:49
.= (Exec (i,s2)) . a by A34, A39, SCMFSA_2:65
.= ((Exec (i,s2)) | ((Data-Locations ) \ {db})) . x by A36, FUNCT_1:49 ; :: thesis: verum
end;
suppose x in FinSeq-Locations ; :: thesis: ((Exec (i,s1)) | ((Data-Locations ) \ {db})) . x = ((Exec (i,s2)) | ((Data-Locations ) \ {db})) . x
then reconsider a = x as FinSeq-Location by SCMFSA_2:def 5;
thus ((Exec (i,s1)) | ((Data-Locations ) \ {db})) . x = (Exec (i,s1)) . a by A36, FUNCT_1:49
.= s1 . a by A34, SCMFSA_2:65
.= (DataPart s1) . a by A37, FUNCT_1:49
.= s2 . a by A1, A37, FUNCT_1:49
.= (Exec (i,s2)) . a by A34, SCMFSA_2:65
.= ((Exec (i,s2)) | ((Data-Locations ) \ {db})) . x by A36, FUNCT_1:49 ; :: thesis: verum
end;
end;
end;
A40: dom ((Exec (i,s2)) | ((Data-Locations ) \ {db})) = (Data-Locations ) \ {db} by A5, RELAT_1:62;
dom ((Exec (i,s1)) | ((Data-Locations ) \ {db})) = (Data-Locations ) \ {db} by A2, RELAT_1:62;
then A41: (Exec (i,s1)) | ((Data-Locations ) \ {db}) = (Exec (i,s2)) | ((Data-Locations ) \ {db}) by A40, A35, FUNCT_1:2;
db in Int-Locations by AMI_2:def 16;
then db in Data-Locations by SCMFSA_2:100, XBOOLE_0:def 3;
then A42: Data-Locations = (Data-Locations ) \/ {db} by ZFMISC_1:40
.= ((Data-Locations ) \ {db}) \/ {db} by XBOOLE_1:39 ;
A43: (Exec (i,s2)) . db = (s2 . db) - (s2 . da) by A34, SCMFSA_2:65;
A44: (Exec (i,s1)) . db = (s1 . db) - (s1 . da) by A34, SCMFSA_2:65;
db in Int-Locations by AMI_2:def 16;
then A45: db in Data-Locations by SCMFSA_2:100, XBOOLE_0:def 3;
then A46: s1 . db = (DataPart s1) . db by FUNCT_1:49
.= s2 . db by A1, A45, FUNCT_1:49 ;
da in Int-Locations by AMI_2:def 16;
then A47: da in Data-Locations by SCMFSA_2:100, XBOOLE_0:def 3;
then s1 . da = (DataPart s1) . da by FUNCT_1:49
.= s2 . da by A1, A47, FUNCT_1:49 ;
then (Exec (i,s1)) | {db} = (Exec (i,s2)) | {db} by A3, A44, A43, A46, GRFUNC_1:29;
hence DataPart (Exec (i,s1)) = DataPart (Exec (i,s2)) by A42, A41, RELAT_1:150; :: thesis: verum
end;
suppose InsCode i = 4 ; :: thesis: DataPart (Exec (i,s1)) = DataPart (Exec (i,s2))
then consider db, da being Int-Location such that
A48: i = MultBy (db,da) by SCMFSA_2:33;
A49: for x being object st x in (Data-Locations ) \ {db} holds
((Exec (i,s1)) | ((Data-Locations ) \ {db})) . x = ((Exec (i,s2)) | ((Data-Locations ) \ {db})) . x
proof
let x be object ; :: thesis: ( x in (Data-Locations ) \ {db} implies ((Exec (i,s1)) | ((Data-Locations ) \ {db})) . x = ((Exec (i,s2)) | ((Data-Locations ) \ {db})) . x )
assume A50: x in (Data-Locations ) \ {db} ; :: thesis: ((Exec (i,s1)) | ((Data-Locations ) \ {db})) . x = ((Exec (i,s2)) | ((Data-Locations ) \ {db})) . x
then A51: x in Data-Locations by XBOOLE_0:def 5;
A52: not x in {db} by A50, XBOOLE_0:def 5;
per cases ( x in Int-Locations or x in FinSeq-Locations ) by A51, SCMFSA_2:100, XBOOLE_0:def 3;
suppose x in Int-Locations ; :: thesis: ((Exec (i,s1)) | ((Data-Locations ) \ {db})) . x = ((Exec (i,s2)) | ((Data-Locations ) \ {db})) . x
then reconsider a = x as Int-Location by AMI_2:def 16;
A53: a <> db by A52, TARSKI:def 1;
thus ((Exec (i,s1)) | ((Data-Locations ) \ {db})) . x = (Exec (i,s1)) . a by A50, FUNCT_1:49
.= s1 . a by A48, A53, SCMFSA_2:66
.= (DataPart s1) . a by A51, FUNCT_1:49
.= s2 . a by A1, A51, FUNCT_1:49
.= (Exec (i,s2)) . a by A48, A53, SCMFSA_2:66
.= ((Exec (i,s2)) | ((Data-Locations ) \ {db})) . x by A50, FUNCT_1:49 ; :: thesis: verum
end;
suppose x in FinSeq-Locations ; :: thesis: ((Exec (i,s1)) | ((Data-Locations ) \ {db})) . x = ((Exec (i,s2)) | ((Data-Locations ) \ {db})) . x
then reconsider a = x as FinSeq-Location by SCMFSA_2:def 5;
thus ((Exec (i,s1)) | ((Data-Locations ) \ {db})) . x = (Exec (i,s1)) . a by A50, FUNCT_1:49
.= s1 . a by A48, SCMFSA_2:66
.= (DataPart s1) . a by A51, FUNCT_1:49
.= s2 . a by A1, A51, FUNCT_1:49
.= (Exec (i,s2)) . a by A48, SCMFSA_2:66
.= ((Exec (i,s2)) | ((Data-Locations ) \ {db})) . x by A50, FUNCT_1:49 ; :: thesis: verum
end;
end;
end;
A54: dom ((Exec (i,s2)) | ((Data-Locations ) \ {db})) = (Data-Locations ) \ {db} by A5, RELAT_1:62;
dom ((Exec (i,s1)) | ((Data-Locations ) \ {db})) = (Data-Locations ) \ {db} by A2, RELAT_1:62;
then A55: (Exec (i,s1)) | ((Data-Locations ) \ {db}) = (Exec (i,s2)) | ((Data-Locations ) \ {db}) by A54, A49, FUNCT_1:2;
db in Int-Locations by AMI_2:def 16;
then db in Data-Locations by SCMFSA_2:100, XBOOLE_0:def 3;
then A56: Data-Locations = (Data-Locations ) \/ {db} by ZFMISC_1:40
.= ((Data-Locations ) \ {db}) \/ {db} by XBOOLE_1:39 ;
A57: (Exec (i,s2)) . db = (s2 . db) * (s2 . da) by A48, SCMFSA_2:66;
A58: (Exec (i,s1)) . db = (s1 . db) * (s1 . da) by A48, SCMFSA_2:66;
db in Int-Locations by AMI_2:def 16;
then A59: db in Data-Locations by SCMFSA_2:100, XBOOLE_0:def 3;
then A60: s1 . db = (DataPart s1) . db by FUNCT_1:49
.= s2 . db by A1, A59, FUNCT_1:49 ;
da in Int-Locations by AMI_2:def 16;
then A61: da in Data-Locations by SCMFSA_2:100, XBOOLE_0:def 3;
then s1 . da = (DataPart s1) . da by FUNCT_1:49
.= s2 . da by A1, A61, FUNCT_1:49 ;
then (Exec (i,s1)) | {db} = (Exec (i,s2)) | {db} by A3, A58, A57, A60, GRFUNC_1:29;
hence DataPart (Exec (i,s1)) = DataPart (Exec (i,s2)) by A56, A55, RELAT_1:150; :: thesis: verum
end;
suppose InsCode i = 5 ; :: thesis: DataPart (Exec (i,s1)) = DataPart (Exec (i,s2))
then consider db, da being Int-Location such that
A62: i = Divide (db,da) by SCMFSA_2:34;
hereby :: thesis: verum
per cases ( da <> db or da = db ) ;
suppose A63: da <> db ; :: thesis: DataPart (Exec (i,s1)) = DataPart (Exec (i,s2))
A64: for x being object st x in (Data-Locations ) \ {db,da} holds
((Exec (i,s1)) | ((Data-Locations ) \ {db,da})) . x = ((Exec (i,s2)) | ((Data-Locations ) \ {db,da})) . x
proof
let x be object ; :: thesis: ( x in (Data-Locations ) \ {db,da} implies ((Exec (i,s1)) | ((Data-Locations ) \ {db,da})) . x = ((Exec (i,s2)) | ((Data-Locations ) \ {db,da})) . x )
assume A65: x in (Data-Locations ) \ {db,da} ; :: thesis: ((Exec (i,s1)) | ((Data-Locations ) \ {db,da})) . x = ((Exec (i,s2)) | ((Data-Locations ) \ {db,da})) . x
then A66: x in Data-Locations by XBOOLE_0:def 5;
A67: not x in {db,da} by A65, XBOOLE_0:def 5;
per cases ( x in Int-Locations or x in FinSeq-Locations ) by A66, SCMFSA_2:100, XBOOLE_0:def 3;
suppose x in Int-Locations ; :: thesis: ((Exec (i,s1)) | ((Data-Locations ) \ {db,da})) . x = ((Exec (i,s2)) | ((Data-Locations ) \ {db,da})) . x
then reconsider a = x as Int-Location by AMI_2:def 16;
A68: a <> da by A67, TARSKI:def 2;
A69: a <> db by A67, TARSKI:def 2;
thus ((Exec (i,s1)) | ((Data-Locations ) \ {db,da})) . x = (Exec (i,s1)) . a by A65, FUNCT_1:49
.= s1 . a by A62, A68, A69, SCMFSA_2:67
.= (DataPart s1) . a by A66, FUNCT_1:49
.= s2 . a by A1, A66, FUNCT_1:49
.= (Exec (i,s2)) . a by A62, A68, A69, SCMFSA_2:67
.= ((Exec (i,s2)) | ((Data-Locations ) \ {db,da})) . x by A65, FUNCT_1:49 ; :: thesis: verum
end;
suppose x in FinSeq-Locations ; :: thesis: ((Exec (i,s1)) | ((Data-Locations ) \ {db,da})) . x = ((Exec (i,s2)) | ((Data-Locations ) \ {db,da})) . x
then reconsider a = x as FinSeq-Location by SCMFSA_2:def 5;
thus ((Exec (i,s1)) | ((Data-Locations ) \ {db,da})) . x = (Exec (i,s1)) . a by A65, FUNCT_1:49
.= s1 . a by A62, SCMFSA_2:67
.= (DataPart s1) . a by A66, FUNCT_1:49
.= s2 . a by A1, A66, FUNCT_1:49
.= (Exec (i,s2)) . a by A62, SCMFSA_2:67
.= ((Exec (i,s2)) | ((Data-Locations ) \ {db,da})) . x by A65, FUNCT_1:49 ; :: thesis: verum
end;
end;
end;
A70: dom ((Exec (i,s2)) | ((Data-Locations ) \ {db,da})) = (Data-Locations ) \ {db,da} by A5, RELAT_1:62;
dom ((Exec (i,s1)) | ((Data-Locations ) \ {db,da})) = (Data-Locations ) \ {db,da} by A2, RELAT_1:62;
then A71: (Exec (i,s1)) | ((Data-Locations ) \ {db,da}) = (Exec (i,s2)) | ((Data-Locations ) \ {db,da}) by A70, A64, FUNCT_1:2;
A72: (Exec (i,s2)) . da = (s2 . db) mod (s2 . da) by A62, SCMFSA_2:67;
db in Int-Locations by AMI_2:def 16;
then A73: db in Data-Locations by SCMFSA_2:100, XBOOLE_0:def 3;
then A74: s1 . db = (DataPart s1) . db by FUNCT_1:49
.= s2 . db by A1, A73, FUNCT_1:49 ;
da in Int-Locations by AMI_2:def 16;
then A75: da in Data-Locations by SCMFSA_2:100, XBOOLE_0:def 3;
db in Int-Locations by AMI_2:def 16;
then db in Data-Locations by SCMFSA_2:100, XBOOLE_0:def 3;
then A76: Data-Locations = (Data-Locations ) \/ {db,da} by A75, ZFMISC_1:42
.= ((Data-Locations ) \ {db,da}) \/ {db,da} by XBOOLE_1:39 ;
A77: (Exec (i,s1)) . da = (s1 . db) mod (s1 . da) by A62, SCMFSA_2:67;
A78: (Exec (i,s2)) . db = (s2 . db) div (s2 . da) by A62, A63, SCMFSA_2:67;
A79: (Exec (i,s1)) . db = (s1 . db) div (s1 . da) by A62, A63, SCMFSA_2:67;
da in Int-Locations by AMI_2:def 16;
then A80: da in Data-Locations by SCMFSA_2:100, XBOOLE_0:def 3;
then s1 . da = (DataPart s1) . da by FUNCT_1:49
.= s2 . da by A1, A80, FUNCT_1:49 ;
then (Exec (i,s1)) | {db,da} = (Exec (i,s2)) | {db,da} by A3, A79, A77, A78, A72, A74, GRFUNC_1:30;
hence DataPart (Exec (i,s1)) = DataPart (Exec (i,s2)) by A76, A71, RELAT_1:150; :: thesis: verum
end;
suppose A81: da = db ; :: thesis: DataPart (Exec (i,s1)) = DataPart (Exec (i,s2))
A82: for x being object st x in (Data-Locations ) \ {db} holds
((Exec (i,s1)) | ((Data-Locations ) \ {db})) . x = ((Exec (i,s2)) | ((Data-Locations ) \ {db})) . x
proof
let x be object ; :: thesis: ( x in (Data-Locations ) \ {db} implies ((Exec (i,s1)) | ((Data-Locations ) \ {db})) . x = ((Exec (i,s2)) | ((Data-Locations ) \ {db})) . x )
assume A83: x in (Data-Locations ) \ {db} ; :: thesis: ((Exec (i,s1)) | ((Data-Locations ) \ {db})) . x = ((Exec (i,s2)) | ((Data-Locations ) \ {db})) . x
then A84: x in Data-Locations by XBOOLE_0:def 5;
A85: not x in {db} by A83, XBOOLE_0:def 5;
per cases ( x in Int-Locations or x in FinSeq-Locations ) by A84, SCMFSA_2:100, XBOOLE_0:def 3;
suppose x in Int-Locations ; :: thesis: ((Exec (i,s1)) | ((Data-Locations ) \ {db})) . x = ((Exec (i,s2)) | ((Data-Locations ) \ {db})) . x
then reconsider a = x as Int-Location by AMI_2:def 16;
A86: a <> db by A85, TARSKI:def 1;
thus ((Exec (i,s1)) | ((Data-Locations ) \ {db})) . x = (Exec (i,s1)) . a by A83, FUNCT_1:49
.= s1 . a by A62, A81, A86, SCMFSA_2:68
.= (DataPart s1) . a by A84, FUNCT_1:49
.= s2 . a by A1, A84, FUNCT_1:49
.= (Exec (i,s2)) . a by A62, A81, A86, SCMFSA_2:68
.= ((Exec (i,s2)) | ((Data-Locations ) \ {db})) . x by A83, FUNCT_1:49 ; :: thesis: verum
end;
suppose x in FinSeq-Locations ; :: thesis: ((Exec (i,s1)) | ((Data-Locations ) \ {db})) . x = ((Exec (i,s2)) | ((Data-Locations ) \ {db})) . x
then reconsider a = x as FinSeq-Location by SCMFSA_2:def 5;
thus ((Exec (i,s1)) | ((Data-Locations ) \ {db})) . x = (Exec (i,s1)) . a by A83, FUNCT_1:49
.= s1 . a by A62, A81, SCMFSA_2:68
.= (s1 | (Data-Locations )) . a by A84, FUNCT_1:49
.= s2 . a by A1, A84, FUNCT_1:49
.= (Exec (i,s2)) . a by A62, A81, SCMFSA_2:68
.= ((Exec (i,s2)) | ((Data-Locations ) \ {db})) . x by A83, FUNCT_1:49 ; :: thesis: verum
end;
end;
end;
A87: dom ((Exec (i,s2)) | ((Data-Locations ) \ {db})) = (Data-Locations ) \ {db} by A5, RELAT_1:62;
dom ((Exec (i,s1)) | ((Data-Locations ) \ {db})) = (Data-Locations ) \ {db} by A2, RELAT_1:62;
then A88: (Exec (i,s1)) | ((Data-Locations ) \ {db}) = (Exec (i,s2)) | ((Data-Locations ) \ {db}) by A87, A82, FUNCT_1:2;
db in Int-Locations by AMI_2:def 16;
then db in Data-Locations by SCMFSA_2:100, XBOOLE_0:def 3;
then A89: Data-Locations = (Data-Locations ) \/ {db} by ZFMISC_1:40
.= ((Data-Locations ) \ {db}) \/ {db} by XBOOLE_1:39 ;
A90: (Exec (i,s2)) . db = (s2 . db) mod (s2 . da) by A62, A81, SCMFSA_2:68;
A91: (Exec (i,s1)) . db = (s1 . db) mod (s1 . da) by A62, A81, SCMFSA_2:68;
db in Int-Locations by AMI_2:def 16;
then A92: db in Data-Locations by SCMFSA_2:100, XBOOLE_0:def 3;
then A93: s1 . db = (DataPart s1) . db by FUNCT_1:49
.= s2 . db by A1, A92, FUNCT_1:49 ;
da in Int-Locations by AMI_2:def 16;
then A94: da in Data-Locations by SCMFSA_2:100, XBOOLE_0:def 3;
then s1 . da = (DataPart s1) . da by FUNCT_1:49
.= s2 . da by A1, A94, FUNCT_1:49 ;
then (Exec (i,s1)) | {db} = (Exec (i,s2)) | {db} by A3, A91, A90, A93, GRFUNC_1:29;
hence DataPart (Exec (i,s1)) = DataPart (Exec (i,s2)) by A89, A88, RELAT_1:150; :: thesis: verum
end;
end;
end;
end;
suppose InsCode i = 6 ; :: thesis: DataPart (Exec (i,s1)) = DataPart (Exec (i,s2))
then A95: ex l1 being Nat st i = goto l1 by SCMFSA_2:35;
for x being object st x in Data-Locations holds
(DataPart (Exec (i,s1))) . x = (DataPart (Exec (i,s2))) . x
proof
let x be object ; :: thesis: ( x in Data-Locations implies (DataPart (Exec (i,s1))) . x = (DataPart (Exec (i,s2))) . x )
assume A96: x in Data-Locations ; :: thesis: (DataPart (Exec (i,s1))) . x = (DataPart (Exec (i,s2))) . x
per cases ( x in Int-Locations or x in FinSeq-Locations ) by A96, SCMFSA_2:100, XBOOLE_0:def 3;
suppose x in Int-Locations ; :: thesis: (DataPart (Exec (i,s1))) . x = (DataPart (Exec (i,s2))) . x
then reconsider a = x as Int-Location by AMI_2:def 16;
thus (DataPart (Exec (i,s1))) . x = (Exec (i,s1)) . a by A96, FUNCT_1:49
.= s1 . a by A95, SCMFSA_2:69
.= (DataPart s1) . a by A96, FUNCT_1:49
.= s2 . a by A1, A96, FUNCT_1:49
.= (Exec (i,s2)) . a by A95, SCMFSA_2:69
.= (DataPart (Exec (i,s2))) . x by A96, FUNCT_1:49 ; :: thesis: verum
end;
suppose x in FinSeq-Locations ; :: thesis: (DataPart (Exec (i,s1))) . x = (DataPart (Exec (i,s2))) . x
then reconsider a = x as FinSeq-Location by SCMFSA_2:def 5;
thus (DataPart (Exec (i,s1))) . x = (Exec (i,s1)) . a by A96, FUNCT_1:49
.= s1 . a by A95, SCMFSA_2:69
.= (DataPart s1) . a by A96, FUNCT_1:49
.= s2 . a by A1, A96, FUNCT_1:49
.= (Exec (i,s2)) . a by A95, SCMFSA_2:69
.= (DataPart (Exec (i,s2))) . x by A96, FUNCT_1:49 ; :: thesis: verum
end;
end;
end;
hence DataPart (Exec (i,s1)) = DataPart (Exec (i,s2)) by A4, A6, FUNCT_1:2; :: thesis: verum
end;
suppose InsCode i = 7 ; :: thesis: DataPart (Exec (i,s1)) = DataPart (Exec (i,s2))
then A97: ex l1 being Nat ex a being Int-Location st i = a =0_goto l1 by SCMFSA_2:36;
for x being object st x in Data-Locations holds
(DataPart (Exec (i,s1))) . x = (DataPart (Exec (i,s2))) . x
proof
let x be object ; :: thesis: ( x in Data-Locations implies (DataPart (Exec (i,s1))) . x = (DataPart (Exec (i,s2))) . x )
assume A98: x in Data-Locations ; :: thesis: (DataPart (Exec (i,s1))) . x = (DataPart (Exec (i,s2))) . x
per cases ( x in Int-Locations or x in FinSeq-Locations ) by A98, SCMFSA_2:100, XBOOLE_0:def 3;
suppose x in Int-Locations ; :: thesis: (DataPart (Exec (i,s1))) . x = (DataPart (Exec (i,s2))) . x
then reconsider a = x as Int-Location by AMI_2:def 16;
thus (DataPart (Exec (i,s1))) . x = (Exec (i,s1)) . a by A98, FUNCT_1:49
.= s1 . a by A97, SCMFSA_2:70
.= (DataPart s1) . a by A98, FUNCT_1:49
.= s2 . a by A1, A98, FUNCT_1:49
.= (Exec (i,s2)) . a by A97, SCMFSA_2:70
.= (DataPart (Exec (i,s2))) . x by A98, FUNCT_1:49 ; :: thesis: verum
end;
suppose x in FinSeq-Locations ; :: thesis: (DataPart (Exec (i,s1))) . x = (DataPart (Exec (i,s2))) . x
then reconsider a = x as FinSeq-Location by SCMFSA_2:def 5;
thus (DataPart (Exec (i,s1))) . x = (Exec (i,s1)) . a by A98, FUNCT_1:49
.= s1 . a by A97, SCMFSA_2:70
.= (DataPart s1) . a by A98, FUNCT_1:49
.= s2 . a by A1, A98, FUNCT_1:49
.= (Exec (i,s2)) . a by A97, SCMFSA_2:70
.= (DataPart (Exec (i,s2))) . x by A98, FUNCT_1:49 ; :: thesis: verum
end;
end;
end;
hence DataPart (Exec (i,s1)) = DataPart (Exec (i,s2)) by A4, A6, FUNCT_1:2; :: thesis: verum
end;
suppose InsCode i = 8 ; :: thesis: DataPart (Exec (i,s1)) = DataPart (Exec (i,s2))
then A99: ex l1 being Nat ex a being Int-Location st i = a >0_goto l1 by SCMFSA_2:37;
for x being object st x in Data-Locations holds
(DataPart (Exec (i,s1))) . x = (DataPart (Exec (i,s2))) . x
proof
let x be object ; :: thesis: ( x in Data-Locations implies (DataPart (Exec (i,s1))) . x = (DataPart (Exec (i,s2))) . x )
assume A100: x in Data-Locations ; :: thesis: (DataPart (Exec (i,s1))) . x = (DataPart (Exec (i,s2))) . x
per cases ( x in Int-Locations or x in FinSeq-Locations ) by A100, SCMFSA_2:100, XBOOLE_0:def 3;
suppose x in Int-Locations ; :: thesis: (DataPart (Exec (i,s1))) . x = (DataPart (Exec (i,s2))) . x
then reconsider a = x as Int-Location by AMI_2:def 16;
thus (DataPart (Exec (i,s1))) . x = (Exec (i,s1)) . a by A100, FUNCT_1:49
.= s1 . a by A99, SCMFSA_2:71
.= (DataPart s1) . a by A100, FUNCT_1:49
.= s2 . a by A1, A100, FUNCT_1:49
.= (Exec (i,s2)) . a by A99, SCMFSA_2:71
.= (DataPart (Exec (i,s2))) . x by A100, FUNCT_1:49 ; :: thesis: verum
end;
suppose x in FinSeq-Locations ; :: thesis: (DataPart (Exec (i,s1))) . x = (DataPart (Exec (i,s2))) . x
then reconsider a = x as FinSeq-Location by SCMFSA_2:def 5;
thus (DataPart (Exec (i,s1))) . x = (Exec (i,s1)) . a by A100, FUNCT_1:49
.= s1 . a by A99, SCMFSA_2:71
.= (DataPart s1) . a by A100, FUNCT_1:49
.= s2 . a by A1, A100, FUNCT_1:49
.= (Exec (i,s2)) . a by A99, SCMFSA_2:71
.= (DataPart (Exec (i,s2))) . x by A100, FUNCT_1:49 ; :: thesis: verum
end;
end;
end;
hence DataPart (Exec (i,s1)) = DataPart (Exec (i,s2)) by A4, A6, FUNCT_1:2; :: thesis: verum
end;
suppose InsCode i = 9 ; :: thesis: DataPart (Exec (i,s1)) = DataPart (Exec (i,s2))
then consider da, db being Int-Location, fa being FinSeq-Location such that
A101: i = db := (fa,da) by SCMFSA_2:38;
A102: for x being object st x in (Data-Locations ) \ {db} holds
((Exec (i,s1)) | ((Data-Locations ) \ {db})) . x = ((Exec (i,s2)) | ((Data-Locations ) \ {db})) . x
proof
let x be object ; :: thesis: ( x in (Data-Locations ) \ {db} implies ((Exec (i,s1)) | ((Data-Locations ) \ {db})) . x = ((Exec (i,s2)) | ((Data-Locations ) \ {db})) . x )
assume A103: x in (Data-Locations ) \ {db} ; :: thesis: ((Exec (i,s1)) | ((Data-Locations ) \ {db})) . x = ((Exec (i,s2)) | ((Data-Locations ) \ {db})) . x
then A104: x in Data-Locations by XBOOLE_0:def 5;
A105: not x in {db} by A103, XBOOLE_0:def 5;
per cases ( x in Int-Locations or x in FinSeq-Locations ) by A104, SCMFSA_2:100, XBOOLE_0:def 3;
suppose x in Int-Locations ; :: thesis: ((Exec (i,s1)) | ((Data-Locations ) \ {db})) . x = ((Exec (i,s2)) | ((Data-Locations ) \ {db})) . x
then reconsider a = x as Int-Location by AMI_2:def 16;
A106: a <> db by A105, TARSKI:def 1;
thus ((Exec (i,s1)) | ((Data-Locations ) \ {db})) . x = (Exec (i,s1)) . a by A103, FUNCT_1:49
.= s1 . a by A101, A106, SCMFSA_2:72
.= (DataPart s1) . a by A104, FUNCT_1:49
.= s2 . a by A1, A104, FUNCT_1:49
.= (Exec (i,s2)) . a by A101, A106, SCMFSA_2:72
.= ((Exec (i,s2)) | ((Data-Locations ) \ {db})) . x by A103, FUNCT_1:49 ; :: thesis: verum
end;
suppose x in FinSeq-Locations ; :: thesis: ((Exec (i,s1)) | ((Data-Locations ) \ {db})) . x = ((Exec (i,s2)) | ((Data-Locations ) \ {db})) . x
then reconsider a = x as FinSeq-Location by SCMFSA_2:def 5;
thus ((Exec (i,s1)) | ((Data-Locations ) \ {db})) . x = (Exec (i,s1)) . a by A103, FUNCT_1:49
.= s1 . a by A101, SCMFSA_2:72
.= (DataPart s1) . a by A104, FUNCT_1:49
.= s2 . a by A1, A104, FUNCT_1:49
.= (Exec (i,s2)) . a by A101, SCMFSA_2:72
.= ((Exec (i,s2)) | ((Data-Locations ) \ {db})) . x by A103, FUNCT_1:49 ; :: thesis: verum
end;
end;
end;
A107: dom ((Exec (i,s2)) | ((Data-Locations ) \ {db})) = (Data-Locations ) \ {db} by A5, RELAT_1:62;
dom ((Exec (i,s1)) | ((Data-Locations ) \ {db})) = (Data-Locations ) \ {db} by A2, RELAT_1:62;
then A108: (Exec (i,s1)) | ((Data-Locations ) \ {db}) = (Exec (i,s2)) | ((Data-Locations ) \ {db}) by A107, A102, FUNCT_1:2;
db in Int-Locations by AMI_2:def 16;
then db in Data-Locations by SCMFSA_2:100, XBOOLE_0:def 3;
then A109: Data-Locations = (Data-Locations ) \/ {db} by ZFMISC_1:40
.= ((Data-Locations ) \ {db}) \/ {db} by XBOOLE_1:39 ;
A110: ex k2 being Nat st
( k2 = |.(s2 . da).| & (Exec (i,s2)) . db = (s2 . fa) /. k2 ) by A101, SCMFSA_2:72;
A111: ex k1 being Nat st
( k1 = |.(s1 . da).| & (Exec (i,s1)) . db = (s1 . fa) /. k1 ) by A101, SCMFSA_2:72;
fa in FinSeq-Locations by SCMFSA_2:def 5;
then A112: fa in Data-Locations by SCMFSA_2:100, XBOOLE_0:def 3;
then A113: s1 . fa = (DataPart s1) . fa by FUNCT_1:49
.= s2 . fa by A1, A112, FUNCT_1:49 ;
da in Int-Locations by AMI_2:def 16;
then A114: da in Data-Locations by SCMFSA_2:100, XBOOLE_0:def 3;
then s1 . da = (DataPart s1) . da by FUNCT_1:49
.= s2 . da by A1, A114, FUNCT_1:49 ;
then (Exec (i,s1)) | {db} = (Exec (i,s2)) | {db} by A3, A111, A110, A113, GRFUNC_1:29;
hence DataPart (Exec (i,s1)) = DataPart (Exec (i,s2)) by A109, A108, RELAT_1:150; :: thesis: verum
end;
suppose InsCode i = 10 ; :: thesis: DataPart (Exec (i,s1)) = DataPart (Exec (i,s2))
then consider da, db being Int-Location, fa being FinSeq-Location such that
A115: i = (fa,da) := db by SCMFSA_2:39;
A116: for x being object st x in (Data-Locations ) \ {fa} holds
((Exec (i,s1)) | ((Data-Locations ) \ {fa})) . x = ((Exec (i,s2)) | ((Data-Locations ) \ {fa})) . x
proof
let x be object ; :: thesis: ( x in (Data-Locations ) \ {fa} implies ((Exec (i,s1)) | ((Data-Locations ) \ {fa})) . x = ((Exec (i,s2)) | ((Data-Locations ) \ {fa})) . x )
assume A117: x in (Data-Locations ) \ {fa} ; :: thesis: ((Exec (i,s1)) | ((Data-Locations ) \ {fa})) . x = ((Exec (i,s2)) | ((Data-Locations ) \ {fa})) . x
then A118: x in Data-Locations by XBOOLE_0:def 5;
A119: not x in {fa} by A117, XBOOLE_0:def 5;
per cases ( x in Int-Locations or x in FinSeq-Locations ) by A118, SCMFSA_2:100, XBOOLE_0:def 3;
suppose x in Int-Locations ; :: thesis: ((Exec (i,s1)) | ((Data-Locations ) \ {fa})) . x = ((Exec (i,s2)) | ((Data-Locations ) \ {fa})) . x
then reconsider a = x as Int-Location by AMI_2:def 16;
thus ((Exec (i,s1)) | ((Data-Locations ) \ {fa})) . x = (Exec (i,s1)) . a by A117, FUNCT_1:49
.= s1 . a by A115, SCMFSA_2:73
.= (DataPart s1) . a by A118, FUNCT_1:49
.= s2 . a by A1, A118, FUNCT_1:49
.= (Exec (i,s2)) . a by A115, SCMFSA_2:73
.= ((Exec (i,s2)) | ((Data-Locations ) \ {fa})) . x by A117, FUNCT_1:49 ; :: thesis: verum
end;
suppose x in FinSeq-Locations ; :: thesis: ((Exec (i,s1)) | ((Data-Locations ) \ {fa})) . x = ((Exec (i,s2)) | ((Data-Locations ) \ {fa})) . x
then reconsider a = x as FinSeq-Location by SCMFSA_2:def 5;
A120: a <> fa by A119, TARSKI:def 1;
thus ((Exec (i,s1)) | ((Data-Locations ) \ {fa})) . x = (Exec (i,s1)) . a by A117, FUNCT_1:49
.= s1 . a by A115, A120, SCMFSA_2:73
.= (DataPart s1) . a by A118, FUNCT_1:49
.= s2 . a by A1, A118, FUNCT_1:49
.= (Exec (i,s2)) . a by A115, A120, SCMFSA_2:73
.= ((Exec (i,s2)) | ((Data-Locations ) \ {fa})) . x by A117, FUNCT_1:49 ; :: thesis: verum
end;
end;
end;
A121: dom ((Exec (i,s2)) | ((Data-Locations ) \ {fa})) = (Data-Locations ) \ {fa} by A5, RELAT_1:62;
dom ((Exec (i,s1)) | ((Data-Locations ) \ {fa})) = (Data-Locations ) \ {fa} by A2, RELAT_1:62;
then A122: (Exec (i,s1)) | ((Data-Locations ) \ {fa}) = (Exec (i,s2)) | ((Data-Locations ) \ {fa}) by A121, A116, FUNCT_1:2;
fa in FinSeq-Locations by SCMFSA_2:def 5;
then fa in Data-Locations by SCMFSA_2:100, XBOOLE_0:def 3;
then A123: Data-Locations = (Data-Locations ) \/ {fa} by ZFMISC_1:40
.= ((Data-Locations ) \ {fa}) \/ {fa} by XBOOLE_1:39 ;
fa in FinSeq-Locations by SCMFSA_2:def 5;
then A124: fa in Data-Locations by SCMFSA_2:100, XBOOLE_0:def 3;
then A125: s1 . fa = (DataPart s1) . fa by FUNCT_1:49
.= s2 . fa by A1, A124, FUNCT_1:49 ;
db in Int-Locations by AMI_2:def 16;
then A126: db in Data-Locations by SCMFSA_2:100, XBOOLE_0:def 3;
then A127: s1 . db = (DataPart s1) . db by FUNCT_1:49
.= s2 . db by A1, A126, FUNCT_1:49 ;
A128: ex k2 being Nat st
( k2 = |.(s2 . da).| & (Exec (i,s2)) . fa = (s2 . fa) +* (k2,(s2 . db)) ) by A115, SCMFSA_2:73;
A129: ex k1 being Nat st
( k1 = |.(s1 . da).| & (Exec (i,s1)) . fa = (s1 . fa) +* (k1,(s1 . db)) ) by A115, SCMFSA_2:73;
da in Int-Locations by AMI_2:def 16;
then A130: da in Data-Locations by SCMFSA_2:100, XBOOLE_0:def 3;
then s1 . da = (DataPart s1) . da by FUNCT_1:49
.= s2 . da by A1, A130, FUNCT_1:49 ;
then (Exec (i,s1)) | {fa} = (Exec (i,s2)) | {fa} by A3, A129, A128, A127, A125, GRFUNC_1:29;
hence DataPart (Exec (i,s1)) = DataPart (Exec (i,s2)) by A123, A122, RELAT_1:150; :: thesis: verum
end;
suppose InsCode i = 11 ; :: thesis: DataPart (Exec (i,s1)) = DataPart (Exec (i,s2))
then consider da being Int-Location, fa being FinSeq-Location such that
A131: i = da :=len fa by SCMFSA_2:40;
A132: for x being object st x in (Data-Locations ) \ {da} holds
((Exec (i,s1)) | ((Data-Locations ) \ {da})) . x = ((Exec (i,s2)) | ((Data-Locations ) \ {da})) . x
proof
let x be object ; :: thesis: ( x in (Data-Locations ) \ {da} implies ((Exec (i,s1)) | ((Data-Locations ) \ {da})) . x = ((Exec (i,s2)) | ((Data-Locations ) \ {da})) . x )
assume A133: x in (Data-Locations ) \ {da} ; :: thesis: ((Exec (i,s1)) | ((Data-Locations ) \ {da})) . x = ((Exec (i,s2)) | ((Data-Locations ) \ {da})) . x
then A134: x in Data-Locations by XBOOLE_0:def 5;
A135: not x in {da} by A133, XBOOLE_0:def 5;
per cases ( x in Int-Locations or x in FinSeq-Locations ) by A134, SCMFSA_2:100, XBOOLE_0:def 3;
suppose x in Int-Locations ; :: thesis: ((Exec (i,s1)) | ((Data-Locations ) \ {da})) . x = ((Exec (i,s2)) | ((Data-Locations ) \ {da})) . x
then reconsider a = x as Int-Location by AMI_2:def 16;
A136: a <> da by A135, TARSKI:def 1;
thus ((Exec (i,s1)) | ((Data-Locations ) \ {da})) . x = (Exec (i,s1)) . a by A133, FUNCT_1:49
.= s1 . a by A131, A136, SCMFSA_2:74
.= (DataPart s1) . a by A134, FUNCT_1:49
.= s2 . a by A1, A134, FUNCT_1:49
.= (Exec (i,s2)) . a by A131, A136, SCMFSA_2:74
.= ((Exec (i,s2)) | ((Data-Locations ) \ {da})) . x by A133, FUNCT_1:49 ; :: thesis: verum
end;
suppose x in FinSeq-Locations ; :: thesis: ((Exec (i,s1)) | ((Data-Locations ) \ {da})) . x = ((Exec (i,s2)) | ((Data-Locations ) \ {da})) . x
then reconsider a = x as FinSeq-Location by SCMFSA_2:def 5;
thus ((Exec (i,s1)) | ((Data-Locations ) \ {da})) . x = (Exec (i,s1)) . a by A133, FUNCT_1:49
.= s1 . a by A131, SCMFSA_2:74
.= (DataPart s1) . a by A134, FUNCT_1:49
.= s2 . a by A1, A134, FUNCT_1:49
.= (Exec (i,s2)) . a by A131, SCMFSA_2:74
.= ((Exec (i,s2)) | ((Data-Locations ) \ {da})) . x by A133, FUNCT_1:49 ; :: thesis: verum
end;
end;
end;
da in Int-Locations by AMI_2:def 16;
then da in Data-Locations by SCMFSA_2:100, XBOOLE_0:def 3;
then A137: Data-Locations = (Data-Locations ) \/ {da} by ZFMISC_1:40
.= ((Data-Locations ) \ {da}) \/ {da} by XBOOLE_1:39 ;
fa in FinSeq-Locations by SCMFSA_2:def 5;
then A138: fa in Data-Locations by SCMFSA_2:100, XBOOLE_0:def 3;
then s1 . fa = (s1 | (Data-Locations )) . fa by FUNCT_1:49
.= s2 . fa by A1, A138, FUNCT_1:49 ;
then (Exec (i,s1)) . da = len (s2 . fa) by A131, SCMFSA_2:74
.= (Exec (i,s2)) . da by A131, SCMFSA_2:74 ;
then A139: (Exec (i,s1)) | {da} = (Exec (i,s2)) | {da} by A2, A5, GRFUNC_1:29;
A140: dom ((Exec (i,s2)) | ((Data-Locations ) \ {da})) = (Data-Locations ) \ {da} by A5, RELAT_1:62;
dom ((Exec (i,s1)) | ((Data-Locations ) \ {da})) = (Data-Locations ) \ {da} by A2, RELAT_1:62;
then (Exec (i,s1)) | ((Data-Locations ) \ {da}) = (Exec (i,s2)) | ((Data-Locations ) \ {da}) by A140, A132, FUNCT_1:2;
hence DataPart (Exec (i,s1)) = DataPart (Exec (i,s2)) by A137, A139, RELAT_1:150; :: thesis: verum
end;
suppose InsCode i = 12 ; :: thesis: DataPart (Exec (i,s1)) = DataPart (Exec (i,s2))
then consider da being Int-Location, fa being FinSeq-Location such that
A141: i = fa :=<0,...,0> da by SCMFSA_2:41;
set l = i;
A142: dom ((Exec (i,s2)) | ((Data-Locations ) \ {fa})) = (Data-Locations ) \ {fa} by A5, RELAT_1:62;
A143: ex k2 being Nat st
( k2 = |.(s2 . da).| & (Exec (i,s2)) . fa = k2 |-> 0 ) by A141, SCMFSA_2:75;
A144: ex k1 being Nat st
( k1 = |.(s1 . da).| & (Exec (i,s1)) . fa = k1 |-> 0 ) by A141, SCMFSA_2:75;
A145: for x being object st x in (Data-Locations ) \ {fa} holds
((Exec (i,s1)) | ((Data-Locations ) \ {fa})) . x = ((Exec (i,s2)) | ((Data-Locations ) \ {fa})) . x
proof
let x be object ; :: thesis: ( x in (Data-Locations ) \ {fa} implies ((Exec (i,s1)) | ((Data-Locations ) \ {fa})) . x = ((Exec (i,s2)) | ((Data-Locations ) \ {fa})) . x )
assume A146: x in (Data-Locations ) \ {fa} ; :: thesis: ((Exec (i,s1)) | ((Data-Locations ) \ {fa})) . x = ((Exec (i,s2)) | ((Data-Locations ) \ {fa})) . x
then A147: x in Data-Locations by XBOOLE_0:def 5;
A148: not x in {fa} by A146, XBOOLE_0:def 5;
per cases ( x in Int-Locations or x in FinSeq-Locations ) by A147, SCMFSA_2:100, XBOOLE_0:def 3;
suppose x in Int-Locations ; :: thesis: ((Exec (i,s1)) | ((Data-Locations ) \ {fa})) . x = ((Exec (i,s2)) | ((Data-Locations ) \ {fa})) . x
then reconsider a = x as Int-Location by AMI_2:def 16;
thus ((Exec (i,s1)) | ((Data-Locations ) \ {fa})) . x = (Exec (i,s1)) . a by A146, FUNCT_1:49
.= s1 . a by A141, SCMFSA_2:75
.= (DataPart s1) . a by A147, FUNCT_1:49
.= s2 . a by A1, A147, FUNCT_1:49
.= (Exec (i,s2)) . a by A141, SCMFSA_2:75
.= ((Exec (i,s2)) | ((Data-Locations ) \ {fa})) . x by A146, FUNCT_1:49 ; :: thesis: verum
end;
suppose x in FinSeq-Locations ; :: thesis: ((Exec (i,s1)) | ((Data-Locations ) \ {fa})) . x = ((Exec (i,s2)) | ((Data-Locations ) \ {fa})) . x
then reconsider a = x as FinSeq-Location by SCMFSA_2:def 5;
A149: a <> fa by A148, TARSKI:def 1;
thus ((Exec (i,s1)) | ((Data-Locations ) \ {fa})) . x = (Exec (i,s1)) . a by A146, FUNCT_1:49
.= s1 . a by A141, A149, SCMFSA_2:75
.= (DataPart s1) . a by A147, FUNCT_1:49
.= s2 . a by A1, A147, FUNCT_1:49
.= (Exec (i,s2)) . a by A141, A149, SCMFSA_2:75
.= ((Exec (i,s2)) | ((Data-Locations ) \ {fa})) . x by A146, FUNCT_1:49 ; :: thesis: verum
end;
end;
end;
dom ((Exec (i,s1)) | ((Data-Locations ) \ {fa})) = (Data-Locations ) \ {fa} by A2, RELAT_1:62;
then A150: (Exec (i,s1)) | ((Data-Locations ) \ {fa}) = (Exec (i,s2)) | ((Data-Locations ) \ {fa}) by A142, A145, FUNCT_1:2;
fa in FinSeq-Locations by SCMFSA_2:def 5;
then fa in Data-Locations by SCMFSA_2:100, XBOOLE_0:def 3;
then A151: Data-Locations = (Data-Locations ) \/ {fa} by ZFMISC_1:40
.= ((Data-Locations ) \ {fa}) \/ {fa} by XBOOLE_1:39 ;
da in Int-Locations by AMI_2:def 16;
then A152: da in Data-Locations by SCMFSA_2:100, XBOOLE_0:def 3;
then s1 . da = (DataPart s1) . da by FUNCT_1:49
.= s2 . da by A1, A152, FUNCT_1:49 ;
then (Exec (i,s1)) | {fa} = (Exec (i,s2)) | {fa} by A3, A144, A143, GRFUNC_1:29;
hence DataPart (Exec (i,s1)) = DataPart (Exec (i,s2)) by A151, A150, RELAT_1:150; :: thesis: verum
end;
end;