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 Th3:
  for i holds {p: (p.i-'1)! + 1 mod p.i = 0 & p.i > 1}
     is diophantine Subset of n -xtuples_of NAT
proof
  defpred P[Nat,Nat,natural object,Nat,Nat,Nat] means
     1*$3,0*$4 are_congruent_mod 1*$4;
  deffunc F(Nat,Nat,Nat) = ($2 -' 1)!+1;
  A1: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:21;
  A2: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 Th2;
  A3: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(A1,A2);
  let i;
  defpred Q1[XFinSequence of NAT] means
    1*(($1.i-'1)!+1),0*$1.i are_congruent_mod 1*$1.i;
  defpred Q2[XFinSequence of NAT] means $1.i > 1;
  defpred Q12[XFinSequence of NAT] means Q1[$1] & Q2[$1];
  A4:{q: Q1[q]} is diophantine Subset of n -xtuples_of NAT by A3;
  A5:{q: Q2[q]} is diophantine Subset of n -xtuples_of NAT by Th1;
  A6:{q: Q1[q] & Q2[q]} is diophantine Subset of n -xtuples_of NAT
    from HILB10_3:sch 3(A4,A5);
  defpred R[XFinSequence of NAT] means ($1.i-'1)! + 1 mod $1.i = 0 & $1.i > 1;
  A7:Q12[q] iff R[q]
  proof
    hereby assume A8:Q12[q];
      then ((q.i-'1)!+1) mod q.i = 0 mod q.i by NAT_D:64;
      hence R[q] by A8;
    end;
    assume A9: R[q];
    then ((q.i-'1)!+1) mod q.i = 0 mod q.i;
    hence Q12[q] by A9,NAT_D:64;
  end;
  {q: Q12[q]} = {r: R[r]} from HILB10_3:sch 2(A7);
  hence thesis by A6;
end;
