reserve S for 1-sorted,
  i for Element of NAT,
  p for FinSequence,
  X for set;

theorem
  card (singletons X) = card X
proof
  defpred P[object,object] means $1 in X & $2 = {$1};
A1: for x being object st x in X holds ex y being object st P[x,y];
  consider f being Function such that
A2: dom f = X and
A3: for x being object st x in X holds P[x,f.x] from CLASSES1:sch 1(A1);
A4: rng f = singletons(X)
  proof
    thus rng f c= singletons(X)
    proof
      let y be object;
      assume y in rng f;
      then consider x being object such that
A5:   x in dom f and
A6:   y = f.x by FUNCT_1:def 3;
A7:   f.x = {x} by A2,A3,A5;
      then reconsider fx = f.x as Subset of X by A2,A5,ZFMISC_1:31;
      fx is 1-element by A7;
      hence thesis by A6;
    end;
    let y be object such that
A8: y in singletons(X);
    reconsider X as non empty set by A8;
 ex z being Subset of X st y = z & z is 1-element by A8;
    then reconsider y as 1-element Subset of X;
    consider x being Element of X such that
A9: y = {x} by CARD_1:65;
    y = f.x by A3,A9;
    hence thesis by A2,FUNCT_1:3;
  end;
  f is one-to-one
  proof
    let x1,x2 be object such that
A10: x1 in dom f & x2 in dom f and
A11: f.x1 = f.x2;
    ( P[x1,f.x1])& P[x2,f.x2] by A2,A3,A10;
    hence thesis by A11,ZFMISC_1:3;
  end;
  then X,singletons(X) are_equipotent by A2,A4,WELLORD2:def 4;
  hence thesis by CARD_1:5;
end;
