reserve i,j for Nat;
reserve i,j for Nat,
  x for variable,
  l for quasi-loci;
reserve C for initialized ConstructorSignature,
  c for constructor OperSymbol of C;

theorem Th31:
  for X being finite Subset of Vars ex l st rng l = varcl X
  proof
    let X be finite Subset of Vars;
    reconsider Y = varcl X as finite Subset of Vars by ABCMIZ_1:24;
    defpred R[set, set] means $1 in $2`1;
A1: for x,y being set st x in Y & y in Y & R[x,y] holds not R[y,x]
    proof
      let x,y be set such that
A2:   x in Y & y in Y & R[x,y] & R[y,x];
      x in Vars by A2; then
      consider A being Subset of Vars, j being Element of NAT such that
A3:   x = [varcl A, j] & A is finite by ABCMIZ_1:18;
      y in Vars by A2; then
      consider B being Subset of Vars, k being Element of NAT such that
A4:   y = [varcl B, k] & B is finite by ABCMIZ_1:18;
A5:   y in varcl A & x in varcl B by A2,A3,A4;
A6:   varcl A in {varcl A} & varcl B in {varcl B} by TARSKI:def 1;
      {varcl A} in x & {varcl B} in y by A4,A3,TARSKI:def 2;
      hence thesis by A5,A6,XREGULAR:10;
    end;
A7: for x,y,z being set st x in Y & y in Y & z in Y & R[x,y] & R[y,z]
    holds R[x,z]
    proof
      let x,y,z be set such that
A8:   x in Y & y in Y & z in Y & R[x,y] & R[y,z];
      y in Vars by A8; then
      consider B being Subset of Vars, k being Element of NAT such that
A9:   y = [varcl B, k] & B is finite by ABCMIZ_1:18;
      z in Vars by A8; then
      consider C being Subset of Vars, j being Element of NAT such that
A10:   z = [varcl C, j] & C is finite by ABCMIZ_1:18;
A11:   z`1 = varcl C & y`1 = varcl B by A10,A9; then
      varcl B c= varcl C by A8,A9,ABCMIZ_1:def 1;
      hence R[x,z] by A11,A8;
    end;
    consider l being one-to-one FinSequence such that
A12: rng l = Y and
A13: for i,j st i in dom l & j in dom l & R[l.i, l.j] holds i < j
    from Numeration(A1,A7);
    reconsider l as one-to-one FinSequence of Vars by A12,FINSEQ_1:def 4;
    now let i be Nat, x be variable; assume
A14:   i in dom l & x = l.i;
      let y be variable; assume
A15:   y in vars x;
      x in Vars; then
      consider A being Subset of Vars, j being Element of NAT such that
A16:   x = [varcl A, j] & A is finite by ABCMIZ_1:18;
      x in rng l & vars x = varcl A by A14,A16,FUNCT_1:def 3; then
      vars x c= Y by A12,A16,ABCMIZ_1:def 1; then
      consider a being object such that
A17:   a in dom l & y = l.a by A12,A15,FUNCT_1:def 3;
      reconsider a as Nat by A17;
      take a;
      thus a in dom l & a < i & y = l.a by A13,A14,A15,A17;
    end; then
    reconsider l as quasi-loci by ABCMIZ_1:30;
    take l;
    thus rng l = varcl X by A12;
  end;
