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;
reserve x for set;
reserve l,l1,loc for Nat;
reserve l1,l2 for Nat,
  i1,i2 for Instruction of SCMPDS;
reserve l for Nat;

theorem
  for I being shiftable Program of SCMPDS,k1,k2 be Integer,a be
  Int_position st card I + k2 >= 0 holds I ';' (a,k1)<=0_goto k2 is shiftable
proof
  let I be shiftable Program of SCMPDS,k1,k2 be Integer,a be Int_position;
  set ii= (a,k1)<=0_goto k2, J= Load ii;
  set Ig=I ';' ii;
  assume
A1: card I + k2 >= 0;
  now
    set D = {l+card I where l is Nat: l in dom J };
    let n,i such that
A2:  n in dom Ig and
A3: i=Ig.( n);
    dom Shift(J,card I) = D by VALUED_1:def 12;
    then
A4: dom Ig = dom I \/ D by FUNCT_4:def 1;
    per cases by A2,A4,XBOOLE_0:def 3;
    suppose
A5:    n in dom I;
      then I. n=i by A3,AFINSQ_1:def 3;
      hence InsCode i <> 1 & InsCode i <> 3 & i valid_at n by A5,Def9;
    end;
    suppose
       n in D;
      then consider l being Nat such that
A6:   n = l+card I and
A7:   l in dom J;
      dom J = {  0 } by FUNCOP_1:13;
      then
A8:    l =  0 by A7,TARSKI:def 1;
      then
A9:   ii =J. l
        .=i by A3,A6,A7,AFINSQ_1:def 3;
      hence InsCode i <> 1 & InsCode i <> 3;
      thus i valid_at n by A1,A6,A8,A9;
    end;
  end;
  hence thesis;
end;
