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

theorem Th19:
  varcl Vars = Vars 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;
  defpred P[Nat] means varcl(V.$1) = V.$1;
  now
    let x,y;
    assume [x,y] in V.0;
    then ex i being Element of NAT st [x,y] = [{}, i] by A2;
    then x = {} by XTUPLE_0:1;
    hence x c= V.0;
  end;
  then
A4: varcl (V.0) c= V.0 by Def1;
  V.0 c= varcl (V.0) by Def1;
  then
A5: P[ 0] by A4,XBOOLE_0:def 10;
A6: now
    let i;
    assume
A7: P[i];
    reconsider i9 = i as Element of NAT by ORDINAL1:def 12;
A8: V.(i+1) = {[varcl A, j] where A is Subset of V.i, j is Element of NAT:
    A is finite} by A3;
    now
      let x,y;
      assume [x,y] in V.(i+1);
      then consider A being Subset of V.i, j being Element of NAT such that
A9:   [x,y] = [varcl A, j] and A is finite by A8;
      x = varcl A by A9,XTUPLE_0:1;
      then
A10:  x c= V.i by A7,Th9;
      V.i9 c= V.(i9+1) by A2,A3,Th14,NAT_1:11;
      hence x c= V.(i+1) by A10;
    end;
    then
A11: varcl (V.(i+1)) c= V.(i+1) by Def1;
    V.(i+1) c= varcl (V.(i+1)) by Def1;
    hence P[i+1] by A11,XBOOLE_0:def 10;
  end;
A12: P[i] from NAT_1:sch 2(A5,A6);
  A13: varcl
 Vars = union the set of all varcl a where a is Element of rng V
  by A1,Th10;
  thus
  now
    let x be object;
    assume x in varcl Vars;
    then consider Y such that
A14: x in Y and
A15: Y in the set of all varcl a where a is Element of rng V
    by A13,TARSKI:def 4;
    consider a being Element of rng V such that
A16: Y = varcl a by A15;
    consider i being object such that
A17: i in dom V and
A18: a = V.i by FUNCT_1:def 3;
    reconsider i as Element of NAT by A17;
    varcl (V.i) = a by A12,A18;
    hence x in Vars by A1,A14,A16,A17,A18,CARD_5:2;
  end;
  thus thesis by Def1;
end;
