reserve x for set,
  i for Instruction of SCM+FSA,
  a,b for Int-Location,
  f for FinSeq-Location,
  l, l1 for Nat,
  s,s1,s2 for State of SCM+FSA,
  P,P1,P2 for Instruction-Sequence of SCM+FSA;

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