reserve a, b for Int_position,
  i for Instruction of SCMPDS,
  l for Element of NAT,
  k, k1, k2 for Integer;

theorem Th4:
  NIC(return a,l) = {k where k is Nat: k > 1}
proof
  set s = the State of SCMPDS;
  set X = {k where k is Nat: k > 1};
  set i = return a;
  hereby
    let x be object;
    assume x in NIC(i,l);
    then consider s being Element of product the_Values_of SCMPDS
    such that
A1: x = IC Exec(i,s) and
    IC s = l;
    reconsider k = x as Element of NAT by A1;
A2: (|.s.DataLoc(s.a,1).| )+2 >= 0+2 by XREAL_1:6;
    k >= 1+1 by A2,A1,SCMPDS_2:58,SCMPDS_I:def 14;
    then k > 1 by NAT_1:13;
    hence x in X;
  end;
  let x be object;
   set I = i;
  reconsider n = l as Element of NAT;
  assume x in X;
  then consider k being Nat such that
A3: x = k and
A4: k > 1;
  reconsider k2 = k - 2 as Element of NAT by A4,Lm2;
  reconsider u = the n-started State of SCMPDS
     as Element of product the_Values_of SCMPDS by CARD_3:107;
A5: IC u = n by MEMSTR_0:def 11;
  a in SCM-Data-Loc by AMI_2:def 16;
  then consider j being Nat such that
A6: a = [1,j] by AMI_2:23;
  set t = [1,j+1];
  t in SCM-Data-Loc by AMI_2:24;
  then reconsider t1 = t as Int_position by AMI_2:def 16;
A7: DataLoc(j,1) = [1,|.j+1.|]
    .= t by ABSVALUE:def 1;
  set g = (a,t1)-->(j,k2);
  reconsider v = u +* g
     as Element of product the_Values_of SCMPDS by CARD_3:107;
A8: dom g = {a,t} by FUNCT_4:62;
  j <> j+1;
  then
A9: a <> t by A6,XTUPLE_0:1;
  then
A10: v.a = j by FUNCT_4:84;
  a <> IC SCMPDS & t1 <> IC SCMPDS by SCMPDS_2:43;
  then
A11: not IC SCMPDS in dom g by A8,TARSKI:def 2;
A12: IC v = l by A5,A11,FUNCT_4:11;
A13: v.t = k2 by A9,FUNCT_4:84;
  x = ((k2 ) + 2) by A3
    .= (|.v.DataLoc(j,1).| ) + 2 by A13,A7,ABSVALUE:def 1
    .= IC Exec(i,v) by A10,SCMPDS_2:58,SCMPDS_I:def 14;
  hence thesis by A12;
end;
