reserve x for set,
  m,n for Nat,
  a,b for Int_position,
  i,j,k for Instruction of SCMPDS,
  s,s1,s2 for State of SCMPDS,
  k1,k2 for Integer,
  loc,l for Nat,
  I,J,K for Program of SCMPDS;
reserve P,P1,P2,Q for Instruction-Sequence of SCMPDS;

theorem Th29: ::SCMPDS_5:46
  for s being 0-started State of SCMPDS
  for I being halt-free Program of SCMPDS,j being parahalting
  shiftable Instruction of SCMPDS st I is_closed_on s,P & I is_halting_on s,P
   holds
  IExec(I ';' j,P,s).a = Exec(j, IExec(I,P,s)).a
proof
  let s be 0-started State of SCMPDS;
  let I be halt-free Program of SCMPDS,j be parahalting shiftable
  Instruction of SCMPDS;
  assume that
A1: I is_closed_on s,P and
A2: I is_halting_on s,P;
  set Mj = Load j;
A3: a in SCM-Data-Loc by AMI_2:def 16;
  for a holds (Initialize IExec(I,P,s)).a
  =IExec(I,P,s).a by SCMPDS_5:15;
  then
A4: DataPart Initialize IExec(I,P,s)
 = DataPart IExec(I,P,s) by SCMPDS_4:8;
A5: Mj is_halting_on IExec(I,P,s),P by SCMPDS_6:21;
  Mj is_closed_on IExec(I,P,s),P by SCMPDS_6:20;
  hence IExec(I ';' j,P,s).a = IExec(Mj,P,Initialize IExec(I,P,s)).a
   by A1,A2,A5,Th28
    .= Exec(j, Initialize IExec(I,P,s)).a by SCMPDS_5:40
    .= (DataPart Exec(j, Initialize IExec(I,P,s))).a
     by A3,FUNCT_1:49,SCMPDS_2:84
    .= (DataPart Exec(j, IExec(I,P,s))).a by A4,SCMPDS_5:39
    .= Exec(j, IExec(I,P,s)).a by A3,FUNCT_1:49,SCMPDS_2:84;
end;
