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;

theorem Th19:
 for P1,P2 being Instruction-Sequence of SCMPDS
  st  s1 =  s2 & I c= P1 & I c= P2 & (for m st m < n
  holds IC (Comput(P2,s2,m)) in dom I)
 for m st m <= n
holds
   Comput(P1,s1,m) =  Comput(P2,s2,m)
proof
 let P1,P2 be Instruction-Sequence of SCMPDS;
  assume that
A1:  s1 =  s2 and
A2: I c= P1 and
A3: I c= P2 and
A4: for m st m < n holds IC(Comput(P2,s2,m)) in dom I;
  defpred X[Nat] means $1 <= n implies
    Comput(P1,s1,$1) =  Comput(P2,s2,$1);
A5: for m st X[m] holds X[m+1]
  proof
    let m such that
A6: m <= n implies
     Comput(P1,s1,m) =  Comput(P2,s2,m);
A7: Comput(P2,s2,m+1) = Following(P2,Comput(P2,s2,m)) by EXTPRO_1:3
      .= Exec(CurInstr(P2,Comput(P2,s2,m)),Comput(P2,s2,m));
A8: Comput(P1,s1,m+1) = Following(P1,Comput(P1,s1,m)) by EXTPRO_1:3
      .= Exec(CurInstr(P1,Comput(P1,s1,m)),Comput(P1,s1,m));
    assume
A9: m+1 <= n;
A10: IC(Comput(P2,s2,m)) in dom I by A4,A9,NAT_1:13;
    CurInstr(P1,Comput(P1,s1,m))
     = P1.IC(Comput(P1,s1,m)) by PBOOLE:143
      .= I.IC(Comput(P1,s1,m)) by A2,A10,A9,A6,GRFUNC_1:2,NAT_1:13
      .= P2.IC(Comput(P2,s2,m)) by A3,A10,A9,A6,GRFUNC_1:2,NAT_1:13
      .= CurInstr(P2,Comput(P2,s2,m)) by PBOOLE:143;
    hence thesis by A6,A8,A7,A9,NAT_1:13;
  end;
  Comput(P1,s1,0) =  Comput(P2,s2,0) by A1;
  then
A11: X[0];
  thus for m holds X[m] from NAT_1:sch 2(A11,A5);
end;
