Catalan numbers #
THIS FILE IS SYNCHRONIZED WITH MATHLIB4. Any changes to this file require a corresponding PR to mathlib4.
The Catalan numbers (http://oeis.org/A000108) are probably the most ubiquitous sequence of integers in mathematics. They enumerate several important objects like binary trees, Dyck paths, and triangulations of convex polygons.
Main definitions #
catalan n
: then
th Catalan number, defined recursively ascatalan (n + 1) = ∑ i : fin n.succ, catalan i * catalan (n - i)
.
Main results #
-
catalan_eq_central_binom_div
: The explicit formula for the Catalan number using the central binomial coefficient,catalan n = nat.central_binom n / (n + 1)
. -
trees_of_nodes_eq_card_eq_catalan
: The number of binary trees withn
internal nodes iscatalan n
Implementation details #
The proof of catalan_eq_central_binom_div
follows
https://math.stackexchange.com/questions/3304415/catalan-numbers-algebraic-proof-of-the-recurrence-relation
TODO #
- Prove that the Catalan numbers enumerate many interesting objects.
- Provide the many variants of Catalan numbers, e.g. associated to complex reflection groups, Fuss-Catalan, etc.
Given two finsets, find all trees that can be formed with
left child in a
and right child in b
A finset of all trees with n
nodes. See mem_trees_of_nodes_eq
Equations
- tree.trees_of_num_nodes_eq (n + 1) = (finset.nat.antidiagonal n).attach.bUnion (λ (ijh : {x // x ∈ finset.nat.antidiagonal n}), tree.pairwise_node (tree.trees_of_num_nodes_eq ijh.val.fst) (tree.trees_of_num_nodes_eq ijh.val.snd))
- tree.trees_of_num_nodes_eq 0 = {tree.nil}