reserve i,j,n,n1,n2,m,k,l,u for Nat,
        r,r1,r2 for Real,
        x,y for Integer,
        a,b for non trivial Nat,
        F for XFinSequence,
        cF,cF1,cF2 for complex-valued XFinSequence,
        c,c1,c2 for Complex;
reserve x,y,x1,u,w for Nat;
reserve n,m,k for Nat,
        p,q for n-element XFinSequence of NAT,
        i1,i2,i3,i4,i5,i6 for Element of n,
        a,b,d,f for Integer;

theorem
  for i,n1,n2,n,i1 holds {p: p.i1 = Product (i+((p/^n1) | n2))}
  is diophantine Subset of n -xtuples_of NAT
proof
  let i,n1,n2;
  defpred P[Nat] means
    for n st $1 +n1 <= n for i1 holds{p: p.i1 = Product (i+((p/^n1) | $1))}
      is diophantine Subset of n -xtuples_of NAT;
A1:  P[0]
  proof
    let n; assume 0 +n1 <= n;
    let i1;
    defpred Q1[XFinSequence of NAT] means $1.i1 = Product (i+(($1/^n1) | 0));
    defpred Q2[XFinSequence of NAT] means $1.i1 = 1;
A2: for p holds Q1[p] iff Q2[p] by Th4;
    {p : Q1[p]} = {q :Q2[q]} from HILB10_3:sch 2(A2);
    hence thesis by HILB10_3:14;
  end;
A3: P[m] implies P[m+1]
  proof
    assume
A4:   P[m];
    let n such that
A5:   m+1 +n1 <= n;
    set m1=m+1,X=n+1;
    let i1;
    m < m1 by NAT_1:13;
    then n1 + m < n1 + m1 by XREAL_1:8;
    then
A6:   n1 + m < n by A5,XXREAL_0:2;
    then n1+m in Segm n by NAT_1:44;
    then reconsider n1m=n1+m as Element of n;
A7: n < X by NAT_1:13;
    then n in Segm X by NAT_1:44;
    then reconsider N=n,I1=i1,N1M=n1m as Element of X by HILB10_3:2;
    defpred P[XFinSequence of NAT] means $1.N = Product (i+(($1/^n1) | m));
    defpred Q[XFinSequence of NAT] means $1.I1 = (1*$1.N1M + i)*($1.N);
    n1+m <= X by A6,NAT_1:13;
    then
A8: {p where p is X-element XFinSequence of NAT:P[p]}
      is diophantine Subset of X -xtuples_of NAT by A4;
A9: {p where p is X-element XFinSequence of NAT:Q[p]}
      is diophantine Subset of X -xtuples_of NAT by Th25;
    set PQ={p where p is X-element XFinSequence of NAT:P[p]&Q[p]};
A10:PQ is diophantine Subset of X -xtuples_of NAT from HILB10_3:sch 3(A8,A9);
    set PQr = {p|n where  p is X-element XFinSequence of NAT: p in PQ};
    set S={p: p.i1 = Product (i+((p/^n1) | m1))};
A11:  PQr is diophantine Subset of n -xtuples_of NAT by HILB10_3:5,A7,A10;
A12:  n1 <= n1 + m1 <= n by A5,NAT_1:11;
    then
A13:  n-'n1 = n-n1 by XXREAL_0:2,XREAL_1:233;
A14:  m1 <= n-n1 by A5,XREAL_1:19;
    m<m+1 by NAT_1:13;
    then
A15:  Segm m c= Segm m1 & m in Segm m1 by NAT_1:39,44;
A16:  S c= PQr
    proof
      let y be object;
      assume y in S;
      then consider p such that
A17:    y=p & p.i1 = Product (i+((p/^n1) | m1));
A18:    len p=n by CARD_1:def 7;
      then
A19:    len (p/^n1) >= m1 by A14,A13,AFINSQ_2:def 2;
      then len ((p/^n1) | m1)=m1 by AFINSQ_1:54;
      then
A20:    (p/^n1) | m1 = (((p/^n1) | m1)|m) ^<%((p/^n1) | m1).m%> by AFINSQ_1:56;
      ((p/^n1) | m1)|m= (p/^n1)|m & ((p/^n1) | m1).m =
        (p/^n1).m & m in dom (p/^n1) by A19,AFINSQ_1:53, RELAT_1:74,A15;
      then (p/^n1) | m1 = ((p/^n1)|m) ^<%p.n1m%> by A20,AFINSQ_2:def 2;
      then i+((p/^n1) | m1) = (i+((p/^n1)|m)) ^(i+<%p.n1m%>) by Th8
        .= (i+((p/^n1)|m)) ^<%i+p.n1m%> by Th9;
      then
A21:    Product(i+((p/^n1) | m1)) =
        Product(i+((p/^n1) | m)) * Product<%i+p.n1m%> by Th7
        .= Product(i+((p/^n1) | m))* (i+p.n1m) by Th5;
      reconsider P=Product(i+((p/^n1) |m)) as Element of NAT
        by ORDINAL1:def 12;
      reconsider pP = p^<%P%> as X-element XFinSequence of NAT;
A22:    len (p/^n1) >m by A19,NAT_1:13;
A23:    (pP/^n1)|m = ((p/^n1)^<%P%>)|m by Th10,A18,A12,XXREAL_0:2
          .= (p/^n1)|m by AFINSQ_1:58,A22;
A24:    pP|n = p by A18,AFINSQ_1:57;
A25:    pP.I1 = p.i1 & pP.N1M = p.n1m by A5,A24,HILB10_3:4;
      P[pP] & Q[pP] by A23,A25,A21,A18,AFINSQ_1:36,A17;
      then pP in PQ;
      hence thesis by A17,A24;
    end;
    PQr c= S
    proof
      let y be object; assume y in PQr;
      then consider pP be X-element XFinSequence of NAT such that
A26:    y=pP|n & pP in PQ;
A27:  ex q be X-element XFinSequence of NAT st pP=q & P[q] & Q[q] by A26;
A28:  len pP=X by CARD_1:def 7;
A29:  len (pP|n) = n by CARD_1:def 7;
      set p=pP|n;
A30:  len (p/^n1) >= m1 by A14,A13,A29,AFINSQ_2:def 2;
      then len ((p/^n1) | m1)=m1 by AFINSQ_1:54;
      then
A31:    (p/^n1) | m1 = (((p/^n1) | m1)|m) ^<%((p/^n1) | m1).m%>
        by AFINSQ_1:56;
      ((p/^n1) | m1)|m= (p/^n1)|m & ((p/^n1) | m1).m = (p/^n1).m
        & m in dom (p/^n1) by A30,AFINSQ_1:53,RELAT_1:74,A15;
      then (p/^n1) | m1 = ((p/^n1)|m) ^<%p.n1m%> by A31,AFINSQ_2:def 2;
      then i+((p/^n1) | m1) = (i+((p/^n1)|m)) ^(i+<%p.n1m%>) by Th8
        .= (i+((p/^n1)|m)) ^<%i+p.n1m%> by Th9;
      then
A32:    Product(i+((p/^n1) | m1)) =
          Product(i+((p/^n1) | m)) * Product<%i+p.n1m%> by Th7
        .= Product(i+((p/^n1) | m))* (i+p.n1m) by Th5;
      set P = Product(i+((p/^n1) | m));
A33:  pP = p ^<%pP.n%> by A28,AFINSQ_1:56;
A34:  len (p/^n1) >m by A30,NAT_1:13;
A35:  (pP/^n1)|m = ((p/^n1)^<%pP.n%>)|m by A33,Th10,A29,A12,XXREAL_0:2
        .= (p/^n1)|m by AFINSQ_1:58,A34;
      pP.I1 = p.i1 & pP.N1M = p.n1m by A5,HILB10_3:4;
      hence thesis by A26,A35,A32,A27;
    end;
    hence thesis by A11,A16,XBOOLE_0:def 10;
  end;
  A36: P[m] from NAT_1:sch 2(A1,A3);
  let n,i1;
  per cases;
  suppose n1+n2 <= n;
    hence thesis by A36;
  end;
  suppose n1+n2 > n;
    then
A37:  n-n1 < n2 by XREAL_1:19;
    per cases;
    suppose
A38:    n1 >=n;
      defpred Q1[XFinSequence of NAT] means
        $1.i1 = Product (i+(($1/^n1) |n2));
      defpred Q2[XFinSequence of NAT] means $1.i1 = 1;
A39:  for p holds Q1[p] iff Q2[p]
      proof
        let p;
        len p = n by CARD_1:def 7;
        then p/^n1={} by A38,AFINSQ_2:6;
        then i+((p/^n1) | n2) ={};
        hence thesis by Th4;
      end;
      {p:Q1[p]} = {q:Q2[q]} from HILB10_3:sch 2(A39);
      hence thesis by HILB10_3:14;
    end;
    suppose
A40:    n1 < n;
      then reconsider N = n-n1 as Nat by NAT_1:21;
      defpred Q1[XFinSequence of NAT] means
        $1.i1 = Product (i+(($1/^n1) |n2));
      defpred Q2[XFinSequence of NAT] means
        $1.i1 = Product (i+(($1/^n1) | N));
A41:  for p holds Q1[p] iff Q2[p]
      proof
        let p;
        len p = n by CARD_1:def 7;
        then len (p/^n1) = n-n1 by A40,AFINSQ_2:7;
        hence thesis by A37,AFINSQ_1:52;
      end;
A42:  {p:Q1[p]} = {q:Q2[q]} from HILB10_3:sch 2(A41);
      n1+N=n;
      hence thesis by A42,A36;
    end;
  end;
end;
