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 Th1:
  InsCode i in {0,1,4,5,6,14} or Exec(i,s).IC SCMPDS = IC s + 1
proof
  assume
A1: not InsCode i in {0,1,4,5,6,14};
A2: InsCode i = 0 or ... or InsCode i = 14 by SCMPDS_2:6;
  per cases by A2,A1,ENUMSET1:def 4;
  suppose
    InsCode i = 2;
    then ex a,k1 st i = a:=k1 by SCMPDS_2:28;
    hence thesis by SCMPDS_2:45;
  end;
  suppose
    InsCode i = 3;
    then ex a,k1 st i = saveIC(a,k1) by SCMPDS_2:29;
    hence thesis by SCMPDS_2:59;
  end;
  suppose
    InsCode i = 7;
    then ex a,k1,k2 st i = (a,k1) := k2 by SCMPDS_2:33;
    hence thesis by SCMPDS_2:46;
  end;
  suppose
    InsCode i = 8;
    then ex a,k1,k2 st i = AddTo(a,k1,k2) by SCMPDS_2:34;
    hence thesis by SCMPDS_2:48;
  end;
  suppose
    InsCode i = 9;
    then ex a,b,k1,k2 st i = AddTo(a,k1,b,k2) by SCMPDS_2:35;
    hence thesis by SCMPDS_2:49;
  end;
  suppose
    InsCode i = 10;
    then ex a,b,k1,k2 st i = SubFrom(a,k1,b,k2) by SCMPDS_2:36;
    hence thesis by SCMPDS_2:50;
  end;
  suppose
    InsCode i = 11;
    then ex a,b,k1,k2 st i = MultBy(a,k1,b,k2) by SCMPDS_2:37;
    hence thesis by SCMPDS_2:51;
  end;
  suppose
    InsCode i = 12;
    then ex a,b,k1,k2 st i = Divide(a,k1,b,k2) by SCMPDS_2:38;
    hence thesis by SCMPDS_2:52;
  end;
  suppose
    InsCode i = 13;
    then ex a,b,k1,k2 st i = (a,k1):=(b,k2) by SCMPDS_2:39;
    hence thesis by SCMPDS_2:47;
  end;
end;
