reserve n for Nat,
        i,j,i1,i2,i3,i4,i5,i6 for Element of n,
        p,q,r for n-element XFinSequence of NAT;

theorem Th2:
   for i,j holds {p: p.i = (p.j-'1)! + 1}
      is diophantine Subset of n -xtuples_of NAT
proof
  A1:for n,i1,i2 holds
    {p: p.i1 = p.i2-'1} is diophantine Subset of n -xtuples_of NAT
  proof
    let n,i1,i2;
    defpred Q[XFinSequence of NAT] means 1* $1.i1 = 1* $1.i2-' 1;
    defpred R[XFinSequence of NAT] means $1.i1 = $1.i2-' 1;
    A2:Q[q] iff R[q];
    {q: Q[q]} = {r: R[r]} from HILB10_3:sch 2(A2);
    hence thesis by HILB10_3:20;
  end;
  A3:for n,i1,i2 holds
    {p: p.i1 = (p.i2-' 1)!} is diophantine Subset of n -xtuples_of NAT
  proof
    defpred P[Nat,Nat,natural object,Nat,Nat,Nat] means $4  = ($3)!;
    deffunc F(Nat,Nat,Nat) = $2-'1;
    A4:for n,i1,i2,i3,i4,i5,i6 holds {p: P[p.i1,p.i2,p.i3,p.i4,p.i5,p.i6]}
      is diophantine Subset of n -xtuples_of NAT by HILB10_4:32;
    A5:for n,i1,i2,i3,i4 holds {p: F(p.i1,p.i2,p.i3) = p.i4}
      is diophantine Subset of n -xtuples_of NAT by A1;
    for n,i1,i2,i3,i4,i5 holds
       {p:P[p.i1,p.i2,F(p.i3,p.i4,p.i5),p.i3,p.i4,p.i5]}
       is diophantine Subset of n -xtuples_of NAT from HILB10_3:sch 4(A4,A5);
    hence thesis;
  end;
  defpred P[Nat,Nat,natural object,Nat,Nat,Nat] means $4  = 1*$3+1;
  deffunc F(Nat,Nat,Nat) = ($2 -' 1)!;
  A6:for n,i1,i2,i3,i4,i5,i6 holds {p: P[p.i1,p.i2,p.i3,p.i4,p.i5,p.i6]}
    is diophantine Subset of n -xtuples_of NAT by HILB10_3:15;
  A7:for n,i1,i2,i3,i4 holds {p: F(p.i1,p.i2,p.i3) = p.i4}
    is diophantine Subset of n -xtuples_of NAT by A3;
  A8: for n,i1,i2,i3,i4,i5 holds
    {p:P[p.i1,p.i2,F(p.i3,p.i4,p.i5),p.i3,p.i4,p.i5]}
    is diophantine Subset of n -xtuples_of NAT from HILB10_3:sch 4(A6,A7);
  let i1,i2;
  defpred Q[XFinSequence of NAT] means $1.i1  = 1*(($1.i2-'1)!)+1;
  defpred R[XFinSequence of NAT] means $1.i1  = ($1.i2-'1)!+1;
   A9:Q[q] iff R[q];
  {q: Q[q]} = {r: R[r]} from HILB10_3:sch 2(A9);
  hence thesis by A8;
end;
