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 Th76:
  PrimRec = Union PrimRec-Approximation
proof
  set prd = PrimRec-Approximation;
  defpred p[Nat] means prd.$1 c= PrimRec;
A1: now
    let m being Nat such that
A2: p[m];
    thus p[m+1]
    proof
      set mcocl = {f*<:F:> where f is Element of HFuncs NAT, F is
with_the_same_arity Element of (HFuncs NAT)*: f in prd.m & arity f = len F &
      rng F c= prd.m};
      set mprcl = {g where g is Element of HFuncs NAT: ex f1,f2 being Element
      of HFuncs NAT, i being Element of NAT st f1 in prd.m & f2 in prd.m & g
      is_primitive-recursively_expressed_by f1,f2,i};
      let x be object;
A3:   prd.(m+1) = (PR-closure (prd.m)) \/ (composition-closure (prd.m))
      by Def20;
      assume
A4:   x in prd.(m+1);
      per cases by A4,A3,XBOOLE_0:def 3;
      suppose
A5:     x in PR-closure (prd.m);
        thus thesis
        proof
          per cases by A5,XBOOLE_0:def 3;
          suppose
            x in prd.m;
            hence thesis by A2;
          end;
          suppose
A6:         x in mprcl;
A7:         PrimRec is primitive-recursion_closed by Def14;
            ex g being Element of HFuncs NAT st x = g & ex f1,f2 being
Element of HFuncs NAT, i being Element of NAT st f1 in prd.m & f2 in prd. m & g
            is_primitive-recursively_expressed_by f1,f2,i by A6;
            hence thesis by A2,A7;
          end;
        end;
      end;
      suppose
A8:     x in composition-closure (prd.m);
        thus thesis
        proof
          per cases by A8,XBOOLE_0:def 3;
          suppose
            x in prd.m;
            hence thesis by A2;
          end;
          suppose
A9:         x in mcocl;
A10:        PrimRec is composition_closed by Def14;
            consider f being Element of HFuncs NAT, F being
            with_the_same_arity Element of (HFuncs NAT)* such that
A11:        x = f*<:F:> and
A12:        f in prd.m and
A13:        arity f = len F and
A14:        rng F c= prd.m by A9;
            rng F c= PrimRec by A2,A14,XBOOLE_1:1;
            hence thesis by A2,A11,A12,A13,A10;
          end;
        end;
      end;
    end;
  end;
A15: p[0]
  proof
    let x be object;
    assume
A16: x in prd.0;
    prd.0 = {0 const 0, 1 succ 1} \/ {n proj i where n,i is Element of NAT
    : 1 <= i & i <= n} by Def20;
    then
A17: x in {0 const 0, 1 succ 1} or x in {n proj i where n,i is Element of
    NAT: 1 <= i & i <= n} by A16,XBOOLE_0:def 3;
    per cases by A17,TARSKI:def 2;
    suppose
      x = 0 const 0;
      hence thesis by Def14;
    end;
    suppose
      x = 1 succ 1;
      hence thesis by Def14;
    end;
    suppose
      x in {n proj i where n,i is Element of NAT: 1 <= i & i <= n};
      then ex n, i being Element of NAT st x = n proj i & 1 <= i & i <= n;
      hence thesis by Def14;
    end;
  end;
A18: for k being Nat holds p[k] from NAT_1:sch 2(A15, A1);
A19: Union prd c= PrimRec
  proof
    let x be object;
    assume that
A20: x in Union prd and
A21: not x in PrimRec;
    consider X being set such that
A22: x in X and
A23: X in rng prd by A20,TARSKI:def 4;
    consider m being object such that
A24: m in dom prd and
A25: prd.m = X by A23,FUNCT_1:def 3;
    reconsider m as Element of NAT by A24;
    prd.m c= PrimRec by A18;
    hence contradiction by A21,A22,A25;
  end;
  PrimRec c= Union prd by Th73,Th75;
  hence thesis by A19,XBOOLE_0:def 10;
end;
