reserve x for set,
  k for Element of NAT;
reserve s for State of SCMPDS;
reserve d1,d2,d3,d4,d5 for Element of SCM-Data-Loc,
  k1,k2,k3,k4,k5,k6 for Integer;
reserve I for Instruction of SCMPDS;
reserve a,b,c for Int_position;

theorem
  for s1,s2 being State of SCMPDS st IC s1 = IC s2
   & (for a being Int_position holds s1.a = s2.a)
   holds s1 = s2
proof
  let s1,s2 be State of SCMPDS such that
A1: IC(s1) = IC(s2) and
A2: for a being Int_position holds s1.a = s2.a;
A3: dom s1 = the carrier of SCMPDS by PARTFUN1:def 2;
A4: dom s2 = the carrier of SCMPDS by PARTFUN1:def 2;
A5: now
    let x be object;
    assume x in SCM-Memory;
    then
A6: x in {IC SCMPDS} \/ SCM-Data-Loc by Th1;
    per cases by A6,XBOOLE_0:def 3;
    suppose
      x in {IC SCMPDS};
      then x = IC SCMPDS by TARSKI:def 1;
      hence s1.x = s2.x by A1;
    end;
    suppose
      x in SCM-Data-Loc;
      then x is Int_position by AMI_2:def 16;
      hence s1.x = s2.x by A2;
    end;
  end;
  SCM-Memory = dom s1 by A3;
  hence thesis by A4,A5,FUNCT_1:2;
end;
