Catalan numbers #
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_centralBinom_div: The explicit formula for the Catalan number using the central binomial coefficient,catalan n = Nat.centralBinom n / (n + 1).treesOfNumNodesEq_card_eq_catalan: The number of binary trees withninternal nodes iscatalan n
Implementation details #
The proof of catalan_eq_centralBinom_div follows https://math.stackexchange.com/questions/3304415
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.
@[reducible, inline]
Given two finsets, find all trees that can be formed with left child in a and right child in b
Equations
- Tree.pairwiseNode a b = Finset.map { toFun := fun (x : Tree Unit × Tree Unit) => Tree.node () x.1 x.2, inj' := Tree.pairwiseNode._proof_1 } (a ×ˢ b)
Instances For
theorem Tree.treesOfNumNodesEq_succ (n : ℕ) :
treesOfNumNodesEq (n + 1) = (Finset.antidiagonal n).biUnion fun (ij : ℕ × ℕ) => pairwiseNode (treesOfNumNodesEq ij.1) (treesOfNumNodesEq ij.2)
@[simp]