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: thenth 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 withninternal 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}