reserve k,n,m for Nat,
  A,B,C for Ordinal,
  X for set,
  x,y,z for object;
reserve f,g,h,fx for Function,
  K,M,N for Cardinal,
  phi,psi for
  Ordinal-Sequence;

theorem
  X <> {} implies card { Y where Y is Subset of X: card Y in M } c= M*`
  exp(card X,M)
proof
  set Z = { Y where Y is Subset of X: card Y in M };
  X,card X are_equipotent by CARD_1:def 2;
  then consider f such that
A1: f is one-to-one and
A2: dom f = X and
A3: rng f = card X by WELLORD2:def 4;
  defpred P[object,object] means
  ex X be set, A be Ordinal, phi be Ordinal-Sequence st
    X = $1 & $2 = [A,phi] &
  dom phi = M & phi|A is increasing & rng (phi|A) = f.:X &
  for B st A c= B & B in M holds phi.B = {};
A4: for x being object st x in Z ex y being object st P[x,y]
  proof
    deffunc f(set) = {};
    let x be object;
     reconsider xx = x as set by TARSKI:1;
    set A = order_type_of RelIncl (f.:xx);
    consider xi2 being Ordinal-Sequence such that
A5: dom xi2 = M -^ A & for B st B in M -^ A holds xi2.B = f(B) from
    ORDINAL2:sch 3;
    assume x in Z;
    then
A6: ex Y being Subset of X st x = Y & card Y in M;
    consider xi1 being Ordinal-Sequence such that
    xi1 = canonical_isomorphism_of (RelIncl A, RelIncl (f.:xx)) and
A7: xi1 is increasing and
A8: dom xi1 = A and
A9: rng xi1 = f.:xx by A3,Th5,RELAT_1:111;
    set phi = xi1^xi2;
    take y = [A,phi];
    take xx, A, phi;
    thus xx = x;
    card (f.:xx) = card A by A3,Th7,RELAT_1:111;
    then card A in M by A6,CARD_1:67,ORDINAL1:12;
    then A in M by CARD_3:44;
    then A c= M by ORDINAL1:def 2;
    then A+^( M -^ A) = M by ORDINAL3:def 5;
    hence y = [A,phi] & dom phi = M & phi|A is increasing &
     rng (phi|A) = f.:xx
    by A7,A8,A9,A5,Th12,ORDINAL4:def 1;
    let B;
    assume that
A10: A c= B and
A11: B in M;
A12: B-^A in M-^A by A10,A11,ORDINAL3:53;
    B = A+^(B-^A) by A10,ORDINAL3:def 5;
    then phi.B = xi2.(B-^A) by A8,A5,A12,ORDINAL4:def 1;
    hence thesis by A5,A12;
  end;
  consider g such that
A13: dom g = Z &
  for x being object st x in Z holds P[x,g.x] from CLASSES1:sch 1(A4);
  assume
A14: X <> {};
  rng g c= [:M,Funcs(M,card X):]
  proof
    let x be object;
    assume x in rng g;
    then consider y being object such that
A15: y in dom g and
A16: x = g.y by FUNCT_1:def 3;
    consider yy being set, A being Ordinal, phi being Ordinal-Sequence
    such that
A17:  yy = y and
A18: x = [A,phi] and
A19: dom phi = M and
A20: phi|A is increasing and
A21: rng (phi|A) = f.:yy and
A22: for B st A c= B & B in M holds phi.B = {} by A13,A15,A16;
A23: ex Y being Subset of X st y = Y & card Y in M by A13,A15;
    rng phi c= card X
    proof
      let x be object;
      assume x in rng phi;
      then consider z being object such that
A24:  z in dom phi and
A25:  x = phi.z by FUNCT_1:def 3;
      reconsider z as Ordinal by A24;
      z in A or A c= z by ORDINAL1:16;
      then x in f.:yy & f.:yy c= card X or x = {} by A3,A19,A21,A22,A24,A25,
FUNCT_1:50,RELAT_1:111;
      hence thesis by A14,ORDINAL3:8;
    end;
    then
A26: phi in Funcs(M,card X) by A19,FUNCT_2:def 2;
A27: A c= M or M c= A;
    phi|A is one-to-one by A20,Th11;
    then dom (phi|A),f.:yy are_equipotent by A21,WELLORD2:def 4;
    then card dom (phi|A) = card (f.:yy) by CARD_1:5;
    then card dom (phi|A) in M by A23,CARD_1:67,ORDINAL1:12,A17;
    then
A28: dom (phi|A) in M by CARD_3:44;
    then dom (phi|A) <> M;
    then A in M by A19,A28,A27,RELAT_1:62,68;
    hence thesis by A18,A26,ZFMISC_1:87;
  end;
  then
A29: card rng g c= card [:M,Funcs(M,card X):] by CARD_1:11;
  g is one-to-one
  proof
    let x,y be object;
    assume that
A30: x in dom g and
A31: y in dom g and
A32: g.x = g.y;
    consider yy being set, A2 be Ordinal, phi2 be Ordinal-Sequence such that
A33:  yy = y and
A34: g.y = [A2,phi2] and
    dom phi2 = M and
    phi2|A2 is increasing and
A35: rng (phi2|A2) = f.:yy and
    for B st A2 c= B & B in M holds phi2.B = {} by A13,A31;
    consider xx being set, A1 be Ordinal, phi1 be Ordinal-Sequence such that
A36: xx = x and
A37: g.x = [A1,phi1] and
    dom phi1 = M and
    phi1|A1 is increasing and
A38: rng (phi1|A1) = f.:xx and
    for B st A1 c= B & B in M holds phi1.B = {} by A13,A30;
A39: A1 = A2 & phi1 = phi2 by A32,A37,A34,XTUPLE_0:1;
A40: ex Y being Subset of X st x = Y & card Y in M by A13,A30;
   xx = yy
   proof
    thus xx c= yy
    proof
      let z be object;
      assume
A41:  z in xx;
      then f.z in f.:xx by A2,A40,FUNCT_1:def 6,A36;
      then ex x1 being object st x1 in dom f & x1 in yy & f.z = f.x1
by A38,A35,A39
,FUNCT_1:def 6;
      hence thesis by A1,A2,A40,A41,A36;
    end;
    let z be object;
A42: ex Y being Subset of X st y = Y & card Y in M by A13,A31;
    assume
A43: z in yy;
    then f.z in f.:yy by A2,A42,FUNCT_1:def 6,A33;
    then
    ex x1 being object st x1 in dom f & x1 in xx & f.z = f.x1 by A38,A35,A39,
FUNCT_1:def 6;
    hence thesis by A1,A2,A42,A43,A33;
   end;
   hence thesis by A33,A36;
  end;
  then
A44: Z,rng g are_equipotent by A13,WELLORD2:def 4;
  card [:M,Funcs(M,card X):] = card [:M,card Funcs(M,card X):] by CARD_2:7
    .= M*`card Funcs(M,card X) by CARD_2:def 2
    .= M*`exp(card X,M) by CARD_2:def 3;
  hence thesis by A44,A29,CARD_1:5;
end;
