Binomial coefficients #
This file defines binomial coefficients and proves simple lemmas (i.e. those not requiring more imports).
Main definition and results #
Nat.choose: binomial coefficients, defined inductivelyNat.choose_eq_factorial_div_factorial: a proof thatchoose n k = n! / (k! * (n - k)!)Nat.choose_symm: symmetry of binomial coefficientsNat.choose_le_succ_of_lt_half_left:choose n kis increasing for small values ofkNat.choose_le_middle:choose n ris maximised whenrisn/2Nat.descFactorial_eq_factorial_mul_choose: Relates binomial coefficients to the descending factorial. This is used to proveNat.choose_le_powand variants. We provide similar statements for the ascending factorial.Nat.multichoose: whereaschoosecounts combinations,multichoosecounts multicombinations. The fact that this is indeed the correct counting function for multisets is proved inSym.card_sym_eq_multichooseinData.Sym.Card.Nat.multichoose_eq: a proof thatmultichoose n k = (n + k - 1).choose k. This is central to the "stars and bars" technique in informal mathematics, where we switch between counting multisets of sizekover an alphabet of sizento counting strings ofkelements ("stars") separated byn-1dividers ("bars"). SeeData.Sym.Cardfor more detail.
Tags #
binomial coefficient, combination, multicombination, stars and bars
Inequalities #
Show that Nat.choose is increasing for small values of the right argument.
Inequalities about increasing the first argument #
Multichoose #
Whereas choose n k is the number of subsets of cardinality k from a type of cardinality n,
multichoose n k is the number of multisets of cardinality k from a type of cardinality n.
Alternatively, whereas choose n k counts the number of combinations,
i.e. ways to select k items (up to permutation) from n items without replacement,
multichoose n k counts the number of multicombinations,
i.e. ways to select k items (up to permutation) from n items with replacement.
Note that multichoose is not the multinomial coefficient, although it can be computed
in terms of multinomial coefficients. For details see https://mathworld.wolfram.com/Multichoose.html
TODO: Prove that choose (-n) k = (-1)^k * multichoose n k,
where choose is the generalized binomial coefficient.
https://github.com/leanprover-community/mathlib/pull/15072#issuecomment-1171415738
multichoose n k is the number of multisets of cardinality k from a type of cardinality n.