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;

theorem
  1 <= i & i <= arity f1+1 implies for g being Element of HFuncs NAT st
  g is_primitive-recursively_expressed_by f1,f2,i holds g = primrec(f1,f2,i)
proof
  assume that
A1: i >= 1 and
A2: i <= arity f1+1;
  let g be Element of HFuncs NAT;
  set n = arity f1+1, h = primrec(f1,f2,i);
  given n9 being Element of NAT such that
A3: dom g c= n9-tuples_on NAT and
  i >= 1 and
  i <= n9 and
A4: (arity f1)+1 = n9 and
  n9+1 = arity f2 and
A5: for p being FinSequence of NAT st len p = n9 holds (p+*(i,0) in dom
g iff Del(p,i) in dom f1) & (p+*(i,0) in dom g implies g.(p+*(i,0)) = f1.Del(p,
i)) & for n being Nat holds (p+*(i,n+1) in dom g iff p+*(i,n) in dom
g & (p+*(i,n))^<*g.(p+*(i,n))*> in dom f2) & (p+*(i,n+1) in dom g implies g.(p
  +*(i,n+1)) = f2.((p+*(i,n))^<*g.(p+*(i,n))*>));
A6: now
    let p be Element of n-tuples_on NAT;
    defpred p[Nat] means (p+*(i,$1) in dom g iff p+*(i,$1) in dom h
    ) & (p+*(i,$1) in dom g implies g.(p+*(i,$1)) = h.(p+*(i,$1)));
    set k = p/.i;
A7: p = p+*(i,k) by FUNCT_7:38;
A8: len p = n by CARD_1:def 7;
    then
A9: i in dom p by A1,A2,FINSEQ_3:25;
A10: for m be Nat st p[m] holds p[m+1]
    proof
      let m being Nat such that
A11:  p+*(i,m) in dom g iff p+*(i,m) in dom h and
A12:  p+*(i,m) in dom g implies g.(p+*(i,m)) = h.(p+*(i,m));
      p+*(i,m+1) in dom g iff p+*(i,m) in dom g & (p+*(i,m))^<*g.(p+*(i,m
      ))*> in dom f2 by A4,A5,A8;
      hence p+*(i,m+1) in dom g iff p+*(i,m+1) in dom h by A9,A11,A12,Lm6;
A13:  p+*(i,m+1) in dom h iff p+*(i,m) in dom h & (p+*(i,m))^<*h.(p+*(i,m
      ))*> in dom f2 by A9,Lm6;
      assume
A14:  p+*(i,m+1) in dom g;
      then g.(p+*(i,m+1)) = f2.((p+*(i,m))^<*g.(p+*(i,m))*>) by A4,A5,A8;
      hence thesis by A4,A5,A8,A9,A11,A12,A13,A14,Lm6;
    end;
A15: p+*(i,0) in dom h iff Del(p,i) in dom f1 by A9,Lm6;
    then
    p+*(i,0) in dom g implies g.(p+*(i,0)) = f1.Del(p,i) & h.(p+*(i,0)) =
    f1.Del(p,i) by A4,A5,A8,A9,Lm6;
    then
A16: p[0] by A4,A5,A8,A15;
    for m being Nat holds p[m] from NAT_1:sch 2(A16,A10);
    hence (p in dom g iff p in dom h) & (p in dom g implies g.p = h.p) by A7;
  end;
A17: dom h c= n-tuples_on NAT by Th55;
  then
A18: dom g = dom h by A3,A4,A6;
  for x being object st x in dom h holds g.x = h.x by A17,A6;
  hence thesis by A18;
end;
