reserve X,Y,Z,x,y,y1,y2 for set,
  D for non empty set,
  k,n,n1,n2,m2,m1 for Nat,

  L,K,M,N for Cardinal,
  f,g for Function;
reserve r for Real;
reserve p,q for FinSequence,
  k,m,n,n1,n2,n3 for Nat;

theorem
  omega c= card (D*)
proof
  defpred P[object,object] means ex p st $1 = p & $2 = len p;
A1: {} in D* & len {} = 0 by FINSEQ_1:49;
A2: for x being object st x in D* ex y being object st P[x,y]
  proof
    let x be object;
    assume x in D*;
    then reconsider p = x as Element of (D*);
    reconsider p as FinSequence;
    reconsider y = len p as set;
    take y,p;
    thus thesis;
  end;
  consider f such that
A3: dom f = D* &
for x being object st x in D* holds P[x,f.x] from CLASSES1:sch 1(A2);
  defpred P[Nat] means $1 in f.:(D*);
A4: for n being Nat holds P[n] implies P[n+1]
  proof
    set y = the Element of D;
    let n be Nat;
    assume n in f.:(D*);
    then consider x being object such that
A5: x in dom f and
A6: x in D* and
A7: n = f.x by FUNCT_1:def 6;
    consider p such that
A8: x = p and
A9: n = len p by A3,A5,A7;
    reconsider p as FinSequence of D by A6,A8,FINSEQ_1:def 11;
A10: len (p^<*y*>) = n+len <*y*> by A9,FINSEQ_1:22
      .= n+1 by FINSEQ_1:40;
A11: p^<*y*> in D* by FINSEQ_1:def 11;
    then ex q being FinSequence st p^<*y*> = q & f.(p^<*y*>) = len q by A3;
    hence thesis by A3,A11,A10,FUNCT_1:def 6;
  end;
  ex p st {} = p & f.{} = len p by A3,FINSEQ_1:49;
  then
A12: P[0] by A3,A1,FUNCT_1:def 6;
A13: for n being Nat holds P[n] from NAT_1:sch 2(A12,A4);
  NAT c= f.:(D*)
  by A13;
  hence thesis by CARD_1:47,66;
end;
