Documentation

Mathlib.Combinatorics.Enumerative.Catalan

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 #

Main results #

Implementation details #

The proof of catalan_eq_centralBinom_div follows https://math.stackexchange.com/questions/3304415

TODO #

@[irreducible]
def catalan :

The recursive definition of the sequence of Catalan numbers: catalan (n + 1) = ∑ i : Fin n.succ, catalan i * catalan (n - i)

Instances For
    @[simp]
    theorem catalan_zero :
    catalan 0 = 1
    theorem catalan_succ (n : ) :
    catalan (n + 1) = i : Fin n.succ, catalan i * catalan (n - i)
    theorem catalan_succ' (n : ) :
    catalan (n + 1) = ijFinset.antidiagonal n, catalan ij.1 * catalan ij.2
    @[simp]
    theorem catalan_one :
    catalan 1 = 1
    @[reducible, inline]
    abbrev Tree.pairwiseNode (a b : Finset (Tree Unit)) :
    Finset (Tree Unit)

    Given two finsets, find all trees that can be formed with left child in a and right child in b

    Instances For
      @[irreducible]
      def Tree.treesOfNumNodesEq :
      Finset (Tree Unit)

      A Finset of all trees with n nodes. See mem_treesOfNodesEq

      Instances For
        @[simp]
        theorem Tree.mem_treesOfNumNodesEq {x : Tree Unit} {n : } :
        x treesOfNumNodesEq n x.numNodes = n
        @[simp]
        theorem Tree.coe_treesOfNumNodesEq (n : ) :
        (treesOfNumNodesEq n) = {x : Tree Unit | x.numNodes = n}