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 Th47:
  Exec(SubFrom(a,k1,b,k2), s).IC SCMPDS = IC s + 1 & Exec(SubFrom
(a,k1,b,k2), s).DataLoc(s.a,k1) = s.DataLoc(s.a,k1) - s.DataLoc(s.b,k2) & for c
  st c <> DataLoc(s.a,k1) holds Exec(SubFrom(a,k1,b,k2),s).c = s.c
proof
  reconsider S = s as SCM-State by CARD_3:107;
  reconsider da = a,db=b as Element of SCM-Data-Loc by AMI_2:def 16;
  reconsider I = SubFrom(a,k1,b,k2) as Element of SCMPDS-Instr;
  set A2=Address_Add(S,I P41address,I P43const), A4=Address_Add(S,I P42address
  ,I P44const), S1 = SCM-Chg(S, A2, S.A2-S.A4);
  reconsider i = 10 as Element of Segm 15 by NAT_1:44;
A1: I = [ i,{}, <*da,db,k1,k2*>];
  then
A2: I P42address = db & I P44const = k2 by SCMPDS_I:7;
A3: InsCode(I) = 10;
A4: Exec(SubFrom(a,k1,b,k2), s) = SCM-Exec-Res(I,S) by SCMPDS_1:def 23
    .= (SCM-Chg(S1, IC S + 1)) by A3,SCMPDS_1:def 22;
  hence Exec(SubFrom(a,k1,b,k2), s).IC SCMPDS = IC s + 1 by Th1,AMI_2:11;
A5: I P41address = da & I P43const = k1 by A1,SCMPDS_I:7;
  hence Exec(SubFrom(a,k1,b,k2), s).DataLoc(s.a,k1) = S1.A2 by A4,AMI_2:12
    .= s.DataLoc(s.a,k1) - s.DataLoc(s.b,k2) by A5,A2,AMI_2:15;
  let c;
  reconsider mn = c as Element of SCM-Data-Loc by AMI_2:def 16;
  assume
A6: c <> DataLoc(s.a,k1);
  thus Exec(SubFrom(a,k1,b,k2), s).c = S1.mn by A4,AMI_2:12
    .= s.c by A5,A6,AMI_2:16;
end;
