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
  [-].<*i,j*> = i -' j
proof
  set F = <*2 proj 2*>;
  set g = [pred]*<:F:>;
  rng F c= PrimRec
  proof
    let x be object;
    assume x in rng F;
    then x in {2 proj 2} by FINSEQ_1:39;
    then x = 2 proj 2 by TARSKI:def 1;
    hence thesis by Def14;
  end;
  then reconsider F as with_the_same_arity FinSequence of PrimRec
  by FINSEQ_1:def 4;
  defpred p[Nat] means [-].<*i,$1*> = i -' $1;
A1: for i, j holds g.<*i,0*> = 0 & g.<*i,j+1*> = j
  proof
    let i, j;
    reconsider i1 = i, j1 = j as Element of NAT by ORDINAL1:def 12;
    reconsider i0 = <*i1,0*> as Element of 2-tuples_on NAT by FINSEQ_2:101;
    reconsider ij = <*i1,j1+1*> as Element of 2-tuples_on NAT by FINSEQ_2:101;
A2: dom (2 proj 2) = 2-tuples_on NAT by Th35;
A3: dom <:F:> = dom (2 proj 2) by FINSEQ_3:141;
    hence g.<*i,0*> = [pred].(<:F:>.i0) by A2,FUNCT_1:13
      .= [pred].<*(2 proj 2).i0*> by A2,FINSEQ_3:141
      .= [pred].<*i0.2*> by Th37
      .= 0 by Th88;
    thus g.<*i,j+1*> = [pred].(<:F:>.ij) by A3,A2,FUNCT_1:13
      .= [pred].<*(2 proj 2).ij*> by A2,FINSEQ_3:141
      .= [pred].<*ij.2*> by Th37
      .= j by Th88;
  end;
A4: now
    let j be Nat;
    assume
A5: p[j];
A6: now
      per cases by NAT_1:6;
      suppose
A7:     i-'j = 0;
        then i <= j by NAT_D:36;
        then i < j+1 by NAT_1:13;
        then
A8:     i-(j+1) < 0 by XREAL_1:49;
        thus g.<*i,i-'j*> = 0 by A1,A7
          .= i-'(j+1) by A8,XREAL_0:def 2;
      end;
      suppose
        ex k being Nat st i-'j = k+1;
        then consider k being Nat such that
A9:     i-'j = k+1;
        reconsider k as Element of NAT by ORDINAL1:def 12;
        i - j = k+1 by A9,XREAL_0:def 2;
        then
A10:    i-(j+1) = k;
        thus g.<*i,i-'j*> = k by A1,A9
          .= i-'(j+1) by A10,XREAL_0:def 2;
      end;
    end;
    reconsider jj=j as Element of NAT by ORDINAL1:def 12;
    [-].<*i,jj+1*> =((1,2)->(1,?,2) g).<*i,jj,[-].<*i,jj*>*> by Th80
      .= i-'(jj+1) by A5,A6,Th82;
    hence p[j+1];
  end;
    reconsider i as Element of NAT by ORDINAL1:def 12;
  reconsider ii = <*i*> as Element of 1-tuples_on NAT by FINSEQ_2:98;
  [-].<*i,0*> = (1 proj 1).<*i*> by Th78
    .= ii.1 by Th37
    .= i+0-'0 by NAT_D:34
    .= i-'0;
  then
A11: p[0];
  for j being Nat holds p[j] from NAT_1:sch 2(A11, A4);
  hence thesis;
end;
