reserve X for set;
reserve UN for Universe;

theorem Th63:
  for X being non empty set ex f being Function st dom f = NAT &
  (for n being Nat holds f.n = n-tuples_on X) & union rng f = X*
  proof
    let X be non empty set;
    defpred P[object,object] means ex n be Nat st $1 = n & $2 = n-tuples_on X;
A1: for x,y1,y2 be object st x in NAT & P[x,y1] & P[x,y2] holds y1 = y2;
A2: for x be object st x in NAT ex y be object st P[x,y]
    proof
      let x be object;
      assume x in NAT;
      then reconsider z = x as Nat;
      take z-tuples_on X;
      thus thesis;
    end;
    consider f be Function such that
A3: dom f = NAT and
A4: for x be object st x in NAT holds P[x,f.x] from FUNCT_1:sch 2(A1,A2);
A5: for n be Nat holds f.n = n-tuples_on X
    proof
      let n be Nat;
      P[n,f.n] by A4,ORDINAL1:def 12;
      hence thesis;
    end;
    union rng f = X*
    proof
      now
        now
          let x be object;
          assume x in union rng f;
          then consider y be set such that
A6:       x in y and
A7:       y in rng f by TARSKI:def 4;
          consider z be object such that
A8:       z in dom f and
A9:       y = f.z by A7,FUNCT_1:def 3;
          reconsider z as Nat by A3,A8;
A10:      x in z-tuples_on X by A5,A6,A9;
          z-tuples_on X c= X * by FINSEQ_2:90;
          hence x in X * by A10;
        end;
        hence union rng f c= X *;
        now
          let x be object;
          assume x in X*;
          then consider n be Nat such that
A11:      x in n-tuples_on X by Th62;
          n-tuples_on X in rng f
          proof
A12:        n in dom f by A3,ORDINAL1:def 12;
            f.n = n-tuples_on X by A5;
            hence thesis by A12,FUNCT_1:def 3;
          end;
          hence x in union rng f by A11,TARSKI:def 4;
        end;
        hence X* c= union rng f;
      end;
      hence thesis;
    end;
    hence thesis by A3,A5;
  end;
