reserve i for Nat,
  j for Element of NAT,
  X,Y,x,y,z for set;

theorem Th18:
  Vars = {[varcl A, j] where A is Subset of Vars, j is Element of NAT:
  A is finite}
proof consider V being ManySortedSet of NAT such that
A1: Vars = Union V and
A2: V.0 = the set of all [{}, i] where i is Element of NAT and
A3: for n being Nat holds V.(n+1) =
  {[varcl A, j] where A is Subset of V.n, j is Element of NAT: A is finite}
  by Def2;
  set X = {[varcl A, j] where A is Subset of Vars, j is Element of NAT:
  A is finite};
A4: dom V = NAT by PARTFUN1:def 2;
  defpred P[Nat] means V.$1 c= X;
A5: P[ 0]
  proof
    let x be object;
    assume
A6: x in V.0;
A7: {} c= Vars;
    ex i being Element of NAT st x = [{}, i] by A2,A6;
    hence thesis by A7,Th8;
  end;
A8: now
    let i be Nat;
    assume P[i];
A9: V.(i+1) = {[varcl A, j] where A is Subset of V.i, j is Element of NAT:
    A is finite} by A3;
    thus P[i+1]
    proof
      let x be object;
      assume x in V.(i+1);
      then consider A being Subset of V.i, j being Element of NAT such that
A10:  x = [varcl A, j] and
A11:  A is finite by A9;
      reconsider ii=i as Element of NAT by ORDINAL1:def 12;
      V.ii in rng V by A4,FUNCT_1:def 3;
      then V.i c= Vars by A1,ZFMISC_1:74;
      then A c= Vars;
      hence thesis by A10,A11;
    end;
  end;
A12: for i being Nat holds P[i] from NAT_1:sch 2(A5,A8);
  now
    let x;
    assume x in rng V;
    then ex y being object st y in NAT & x = V.y by A4,FUNCT_1:def 3;
    hence x c= X by A12;
  end;
  hence Vars c= X by A1,ZFMISC_1:76;
  let x be object;
  assume x in X;
  then ex A being Subset of Vars, j being Element of NAT st
  x = [varcl A, j] & A is finite;
  hence thesis by Th17;
end;
