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
: then
th 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)
. -
treesOfNodesEq_card_eq_catalan
: The number of binary trees withn
internal 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.
theorem
catalan_succ'
(n : ℕ)
:
catalan (n + 1) = Finset.sum (Finset.Nat.antidiagonal n) fun ij => catalan ij.fst * catalan ij.snd
A Finset of all trees with n
nodes. See mem_treesOfNodesEq
Equations
- One or more equations did not get rendered due to their size.
- Tree.treesOfNumNodesEq 0 = {Tree.nil}
Instances For
theorem
Tree.treesOfNumNodesEq_succ
(n : ℕ)
:
Tree.treesOfNumNodesEq (n + 1) = Finset.biUnion (Finset.Nat.antidiagonal n) fun ij =>
Tree.pairwiseNode (Tree.treesOfNumNodesEq ij.fst) (Tree.treesOfNumNodesEq ij.snd)
@[simp]
theorem
Tree.mem_treesOfNumNodesEq
{x : Tree Unit}
{n : ℕ}
:
x ∈ Tree.treesOfNumNodesEq n ↔ Tree.numNodes x = n
@[simp]