reserve l, m, n for Nat,
  i,j,k for Instruction of SCMPDS,
  I,J,K for Program of SCMPDS,
  p,q,r for PartState of SCMPDS;
reserve a,b,c for Int_position,
  s,s1,s2 for State of SCMPDS,
  k1,k2 for Integer;

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: (the carrier of SCMPDS) = {IC SCMPDS } \/ SCM-Data-Loc
      by SCMPDS_2:84,STRUCT_0:4
    .= {IC SCMPDS } \/ SCM-Data-Loc;
A4: dom(s2|(dom s2)) = dom s2 /\ (dom s2) by RELAT_1:61
    .= dom s2
    .= {IC SCMPDS } \/ SCM-Data-Loc by A3,PARTFUN1:def 2;
A5: dom(s1|(dom s1)) = dom s1 /\ (dom s1) by RELAT_1:61
    .= dom s1
    .= {IC SCMPDS } \/ SCM-Data-Loc by A3,PARTFUN1:def 2;
A6: s1|(dom s1) =  s1 & s2|(dom s2) =  s2 by RELAT_1:69;
  now
    let x be object;
    assume
A7: x in {IC SCMPDS } \/ SCM-Data-Loc;
    per cases by A7,XBOOLE_0:def 3;
    suppose
      x in {IC SCMPDS};
      then
A8:   x = IC SCMPDS by TARSKI:def 1;
      hence (s1|(dom s1)).x = IC s1 by A5,A7,FUNCT_1:47
        .= (s2|(dom s2)).x by A1,A4,A7,A8,FUNCT_1:47;
    end;
    suppose
      x in SCM-Data-Loc;
      then
A9:   x is Int_position by AMI_2:def 16;
      thus (s1|(dom s1)).x = s1.x by A5,A7,FUNCT_1:47
        .= s2.x by A2,A9
        .= (s2|(dom s2)).x by A4,A7,FUNCT_1:47;
    end;
  end;
  hence  s1 =  s2 by A6,A5,A4,FUNCT_1:2;
end;
