reserve x, x1, x2, y, X, D for set,
  i, j, k, l, m, n, N for Nat,
  p, q for XFinSequence of NAT,
  q9 for XFinSequence,
  pd, qd for XFinSequence of D;
reserve pN, qN for Element of NAT^omega;

theorem
  card {pN:dom pN = 2*n & pN is dominated_by_0} = (2*n) choose n
proof
  set D=bool ({0,1}^omega);
  set 2n=2*n;
  defpred P[set,set] means for i st i=$1 holds $2=Domin_0(2n,i);
  set Z={pN:dom pN = 2* n & pN is dominated_by_0};
A1: for k st k in Segm(n+1) ex x be Element of D st P[k,x]
  proof
    let k such that
    k in Segm(n+1);
    reconsider Z=Domin_0(2n,k) as Element of D;
    take Z;
    thus thesis;
  end;
  consider r be XFinSequence of D such that
A2: dom r= Segm(n+1) & for k st k in Segm(n+1) holds P[k,r.k]
from STIRL2_1:sch 5(A1);
A3: Z c= union rng r
  proof
    let x be object;
    assume x in Z;
    then consider pN such that
A4: x=pN and
A5: dom pN = 2n & pN is dominated_by_0;
    pN in Domin_0(2*n,Sum pN) by A5,Th20;
    then 2*Sum pN <= 2n by Th22;
    then 1/2*(2*Sum pN)<= 1/2*(2 * n) by XREAL_1:64;
    then Sum pN < n+1 by NAT_1:13;
    then
A6: Sum pN in Segm(n+1) by NAT_1:44;
    then r.(Sum pN)=Domin_0(2n,Sum pN) by A2;
    then
A7: pN in r.(Sum pN) by A5,Th20;
    r.(Sum pN) in rng r by A2,A6,FUNCT_1:3;
    hence thesis by A4,A7,TARSKI:def 4;
  end;
A8: union rng r c= Z
  proof
    let x be object;
    assume x in union rng r;
    then consider y such that
A9: x in y and
A10: y in rng r by TARSKI:def 4;
    consider i be object such that
A11: i in dom r and
A12: y = r.i by A10,FUNCT_1:def 3;
    reconsider i as Nat by A11;
    y=Domin_0(2n,i) by A2,A11,A12;
    then consider p such that
A13: p=x & p is dominated_by_0 & dom p = 2n and
    Sum p = i by A9,Def2;
    p in NAT^omega by AFINSQ_1:def 7;
    hence thesis by A13;
  end;
A14: for i,j be Nat            st i in dom r & j in dom r & i<>j holds r.i
  misses r.j
  proof
    let i,j be Nat            such that
A15: i in dom r and
A16: j in dom r and
A17: i<>j;
    assume r.i meets r.j;
    then r.i/\r.j<>{};
    then consider x being object such that
A18: x in r.i/\r.j by XBOOLE_0:def 1;
A19: x in r.j by A18,XBOOLE_0:def 4;
    r.j=Domin_0(2n,j) by A2,A16;
    then
A20: ex q st q = x & q is dominated_by_0 & dom q = 2*n & Sum q = j by A19,Def2;
A21: x in r.i by A18,XBOOLE_0:def 4;
    r.i=Domin_0(2n,i) by A2,A15;
    then ex p st p = x & p is dominated_by_0 & dom p = 2n & Sum p = i by A21
,Def2;
    hence thesis by A17,A20;
  end;
A22: for i st i in dom r holds r.i is finite
  proof
    let i;
    assume i in dom r;
    then r.i=Domin_0(2n,i) by A2;
    hence thesis;
  end;
  consider Cardr be XFinSequence of NAT such that
A23: dom Cardr = dom r and
A24: for i st i in dom Cardr holds Cardr.i=card (r.i) and
A25: card union rng r = Sum(Cardr) by A22,A14,STIRL2_1:66;
A26: n < dom Cardr & Cardr|(n+1)= Cardr by A2,A23,NAT_1:13;
  defpred Q[Nat] means $1 <len Cardr implies Sum(Cardr|($1+1))=(2n choose $1);
A27: Q[0]
  proof
    0 in Segm(n+1) by NAT_1:44;
    then r.0=Domin_0(2n,0) by A2;
    then
A28: card (r.0)=1 by Th24;
A29: 0 in Segm 1 by NAT_1:44;
    assume
A30: 0 <len Cardr;
    then 1<=len Cardr by NAT_1:14;
    then
A31: Segm 1 c= Segm len Cardr by NAT_1:39;
    then
A32: len (Cardr|1)=1 by RELAT_1:62;
    dom (Cardr|1)=1 by A31,RELAT_1:62;
    then (Cardr|1).0=Cardr.0 by A29,FUNCT_1:47;
    then
A33: Cardr|1=<%Cardr.0%> by A32,AFINSQ_1:34;
    0 in len Cardr by A30,AFINSQ_1:86;
    then Cardr.0 = card (r.0) by A24;
    then Sum (Cardr|1)=1 by A33,A28,AFINSQ_2:53;
    hence thesis by NEWTON:19;
  end;
A34: for i st Q[i] holds Q[i+1]
  proof
    let i such that
A35: Q[i];
    set i1=i+1;
    assume
A36: i+1< len Cardr;
    then
A37: i1 in dom Cardr by AFINSQ_1:86;
    then
A38: Sum (Cardr|i1) + Cardr.i1 = Sum (Cardr|(i1+1)) & Cardr.i1=card(r.i1)
    by A24,AFINSQ_2:65;
    i1 <=n by A2,A23,A36,NAT_1:13;
    then
A39: 2*i1<=2n by XREAL_1:64;
    r.i1=Domin_0(2n,i1) by A2,A23,A37;
    then
    Sum(Cardr|(i1+1))=(2n choose i)+((2n choose i1)-(2n choose i)) by A35,A36
,A38,A39,Th28,NAT_1:13;
    hence thesis;
  end;
  for i holds Q[i] from NAT_1:sch 2(A27,A34);
  then Sum(Cardr)=(2n choose n) by A26;
  hence thesis by A25,A3,A8,XBOOLE_0:def 10;
end;
