reserve i, j, k, c, m, n for Nat,
  a, x, y, z, X, Y for set,
  D, E for non empty set,
  R for Relation,
  f, g for Function,
  p, q for FinSequence;
reserve f1, f2 for non empty homogeneous to-naturals NAT*-defined Function,
  e1, e2 for homogeneous to-naturals NAT*-defined Function,
  p for Element of (arity f1+1)-tuples_on NAT;
reserve P for primitive-recursively_closed non empty Subset of HFuncs NAT;

theorem Th68:
  n const c in P
proof
  defpred p[Nat] means 0 const $1 in P;
  defpred r[Nat] means for c being Nat holds $1 const c in P;
A1: P is composition_closed by Def14;
A2: for i be Nat st p[i] holds p[i+1]
  proof
    reconsider 1succ1 = 1 succ 1 as quasi_total Element of HFuncs NAT by Th28;
    let i be Nat;
A3: (1 succ 1) in P by Def14;
A4: <*>NAT is Element of 0-tuples_on NAT by FINSEQ_2:131;
    then
A5: (0 const i).{} = i;
    reconsider 0consti = 0 const i as Element of HFuncs NAT by Th27;
    set F = <*0 const i*>;
    <*0consti*> is FinSequence of HFuncs NAT;
    then reconsider F as with_the_same_arity FinSequence of HFuncs NAT;
    assume 0 const i in P;
    then
A6: {0 const i} c= P by ZFMISC_1:31;
A7: arity (1 succ 1) = len F by FINSEQ_1:39;
A8: rng F = {0 const i} by FINSEQ_1:39;
    reconsider i1=i as Element of NAT by ORDINAL1:def 12;
    now
      let h be Element of HFuncs NAT;
      assume h in rng F;
      then h = 0 const i1 by A8,TARSKI:def 1;
      hence h is quasi_total by Th28;
    end;
    then reconsider
    g = (1succ1)*<:F:> as quasi_total Element of HFuncs NAT by A7,Th45;
A9: arity (0 const (i+1)) = 0;
A10: (0 const (i+1)).{} = i+1 by A4;
A11: dom (1 succ 1) = 1-tuples_on NAT by Def7;
A12: arity (0 const i1) = 0;
 dom (0 const i1) = 0 -tuples_on NAT;
    then
A14: <:F:>.{} = <*i*> by A4,A5,FINSEQ_3:141;
    reconsider ii= <*i1*> as Element of 1-tuples_on NAT by FINSEQ_2:131;
A15: dom <:<*0 const i*>:> = dom (0 const i) by FINSEQ_3:141;
    then g.{} = (1 succ 1).(<:F:>.{}) by A4,FUNCT_1:13;
    then
A16: g.{} = (ii.1)+1 by A14,Def7
      .= i1+1;
 dom (0 const i) = 0-tuples_on NAT;
    then <:<*0 const i*>:>.{} = ii by A4,A5,FINSEQ_3:141;
    then
A18: {} in dom g by A4,A15,A11,FUNCT_1:11;
    0 const i in rng F by A8,TARSKI:def 1;
    then arity F = 0 by A12,Def4;
    then arity g = 0 by A18,Th43,RELAT_1:38;
    then 0 const (i+1) = (1 succ 1)*<:<*0 const i*>:> by A9,A10,A18,A16,Th47,
RELAT_1:38;
    hence thesis by A1,A6,A8,A3,A7;
  end;
A19: P is primitive-recursion_closed by Def14;
A20: now
    let n be Nat such that
A21: r[n];
    thus r[n+1]
    proof
      let i;
      reconsider i,nn=n as Element of NAT by ORDINAL1:def 12;
      set g=(nn+1) const i, f1=nn const i,j=n+1,f2=(nn+2) proj (nn+2);
A23:  n+(1+1) = j+1;
      then 1 <= n+2 by NAT_1:11;
      then
A24:  f2 in P by Def14;
A26:  dom f2 = (n+2)-tuples_on NAT by Th35;
A30:  g is_primitive-recursively_expressed_by f1,f2,n+1
      proof
        take m = arity g;
        thus dom g c= m-tuples_on NAT;
        thus j >= 1 & j <= m by NAT_1:11;
        thus (arity f1)+1 = m & m+1 = arity f2;
        let p be FinSequence of NAT;
        assume len p = m;
        then
A31:    p is Element of j-tuples_on NAT by FINSEQ_2:92;
A32:    j >= 1 by NAT_1:11;
        hence p+*(j,0) in dom g implies Del(p,j) in dom f1 by A31,Th9;
        thus Del(p,j) in dom f1 implies p+*(j,0) in dom g by A31,A32,Lm7;
        f1.Del(p,j) = i by A31,A32,Th9,FUNCOP_1:7;
        hence p+*(j,0) in dom g implies g.(p+*(j,0)) = f1.Del(p,j)
          by FUNCOP_1:7;
        let m be Nat;
         reconsider mm=m as Element of NAT by ORDINAL1:def 12;
A33:    p+*(j,mm) in j-tuples_on NAT by A31,A32,Lm7;
        then
A34:    (p+*(j,mm))^<*i*> is Tuple of n+2, NAT by A23; then
A35:    (p+*(j,m))^<*i*> is Element of (n+2)-tuples_on NAT by FINSEQ_2:131;
        hereby
          hereby
            assume p+*(j,m+1) in dom g;
             p+*(j,mm) in dom g by A31,A32,Lm7;
            hence p+*(j,m) in dom g;
            g.(p+*(j,mm)) = i by A31,A32,Lm7,FUNCOP_1:7;
            hence (p+*(j,m))^<*g.(p+*(j,m))*> in dom f2
             by A26,A34,FINSEQ_2:131;
          end;
          thus p+*(j,m) in dom g & (p+*(j,m))^<*g.(p+*(j,m))*> in dom f2
          implies p+*(j,m+1) in dom g by A31,A32,Lm7;
        end;
        assume p+*(j,m+1) in dom g;
        len (p+*(j,m)) = j by A33,CARD_1:def 7;
        then
A36:    ((p+*(j,m))^<*i*>).(j+1) = i by FINSEQ_1:42;
        thus g.(p+*(j,m+1)) = i by A31,A32,Lm7,FUNCOP_1:7
          .= f2.((p+*(j,m))^<*i*>) by A36,A35,Th37
          .= f2.((p+*(j,mm))^<*g.(p+*(j,mm))*>) by A31,A32,Lm7,FUNCOP_1:7
          .= f2.((p+*(j,m))^<*g.(p+*(j,m))*>);
      end;
A37:  f1 in P by A21;
      (n+1) const i is Element of HFuncs NAT by Th27;
      hence thesis by A19,A30,A37,A24;
    end;
  end;
A38: p[0] by Def14;
  for i being Nat holds p[i] from NAT_1:sch 2(A38,A2);
  then
A39: r[0];
  for n being Nat holds r[n] from NAT_1:sch 2(A39,A20);
  hence thesis;
end;
