Narayana numbers and polynomials
DefinitionNarayana number#✓fully proved
For positive integers \(n\) and \(k\), the Narayana number \(N(n, k)\) is the natural number \(\lfloor \binom{n}{k}\binom{n}{k-1} / n \rfloor\).
def narayana (n k : {n : ℕ // 0 < n}) : ℕ :=
(Nat.choose n.val k.val * Nat.choose n.val (k.val - 1)) / n.val
TheoremDefining formula for the Narayana number#✓fully proved
For positive integers \(n\) and \(k\), the Narayana number \(N(n, k)\) satisfies \(N(n, k) = \lfloor \binom{n}{k}\binom{n}{k-1} / n \rfloor\).
theorem narayana_eq (n k : {n : ℕ // 0 < n}) :
narayana n k
= (Nat.choose n.val k.val * Nat.choose n.val (k.val - 1)) / n.val
def narayana (n k : {n : ℕ // 0 < n}) : ℕ :=
(Nat.choose n.val k.val * Nat.choose n.val (k.val - 1)) / n.val
MathlibExt/Combinatorics/Enumerative/NarayanaNumber.lean:24
Uses 1
TheoremSecond formula for the Narayana number#✓fully proved
For positive integers \(n\) and \(k\), the Narayana number \(N(n, k)\) satisfies \(N(n, k) = \lfloor \binom{n-1}{k-1}\binom{n}{k-1} / k \rfloor\).
theorem narayana_eq_second (n k : {n : ℕ // 0 < n}) :
narayana n k
= (Nat.choose (n.val - 1) (k.val - 1) * Nat.choose n.val (k.val - 1))
/ k.val
def narayana (n k : {n : ℕ // 0 < n}) : ℕ :=
(Nat.choose n.val k.val * Nat.choose n.val (k.val - 1)) / n.val
MathlibExt/Combinatorics/Enumerative/NarayanaNumber.lean:24
Uses 1
DefinitionNarayana polynomial coefficients#✓fully proved
The Narayana polynomial coefficients are the natural numbers \(a(n, k)\), for natural numbers \(n\) and \(k\), given by \(a(0, 0) = 1\), \(a(0, k) = 0\) for \(k \ge 1\), \(a(n, 0) = 0\) for \(n \ge 1\), and \(a(n, k) = N(n, k)\) for \(n, k \ge 1\), where \(N(n, k)\) is the Narayana number. So row zero is \(1\) and every positive row has zero constant term.
def narayanaPolynomialCoeff : ℕ → ℕ → ℕ
| 0, 0 => 1
| 0, _ + 1 => 0
| _ + 1, 0 => 0
| n + 1, k + 1 => narayana ⟨n + 1, Nat.succ_pos n⟩ ⟨k + 1, Nat.succ_pos k⟩
def narayana (n k : {n : ℕ // 0 < n}) : ℕ :=
(Nat.choose n.val k.val * Nat.choose n.val (k.val - 1)) / n.val
MathlibExt/Combinatorics/Enumerative/NarayanaNumber.lean:24
Uses 1 · Used by 2
TheoremNarayana polynomial coefficients at positive indices#✓fully proved
For all natural numbers \(n\) and \(k\), the Narayana polynomial coefficient in row \(n + 1\) and degree \(k + 1\) equals the Narayana number \(N(n + 1, k + 1)\).
This holds by definition.
theorem narayanaPolynomialCoeff_succ_succ (n k : ℕ) :
narayanaPolynomialCoeff (n + 1) (k + 1) =
narayana ⟨n + 1, Nat.succ_pos n⟩ ⟨k + 1, Nat.succ_pos k⟩
def narayanaPolynomialCoeff : ℕ → ℕ → ℕ
| 0, 0 => 1
| 0, _ + 1 => 0
| _ + 1, 0 => 0
| n + 1, k + 1 => narayana ⟨n + 1, Nat.succ_pos n⟩ ⟨k + 1, Nat.succ_pos k⟩
MathlibExt/Combinatorics/Enumerative/NarayanaPolynomial.lean:34
def narayana (n k : {n : ℕ // 0 < n}) : ℕ :=
(Nat.choose n.val k.val * Nat.choose n.val (k.val - 1)) / n.val
MathlibExt/Combinatorics/Enumerative/NarayanaNumber.lean:24
Uses 2
DefinitionNarayana polynomials#✓fully proved
For a semiring \(R\) and a natural number \(n\), the \(n\)-th Narayana polynomial is
where \(a(n, k)\) is the Narayana polynomial coefficient, taken in \(R\). Since \(a(0, 0) = 1\) and, for \(n \ge 1\), \(a(n, 0) = 0\) and \(a(n, k)\) is the Narayana number \(N(n, k)\) for \(k \ge 1\), the first polynomials are \(N_0 = 1\), \(N_1 = X\), \(N_2 = X^2 + X\) and \(N_3 = X^3 + 3X^2 + X\).
noncomputable def narayanaPolynomial (R : Type*) [Semiring R] (n : ℕ) : Polynomial R :=
∑ k ∈ Finset.range (n + 1),
Polynomial.C (narayanaPolynomialCoeff n k : R) * Polynomial.X ^ k
def narayanaPolynomialCoeff : ℕ → ℕ → ℕ
| 0, 0 => 1
| 0, _ + 1 => 0
| _ + 1, 0 => 0
| n + 1, k + 1 => narayana ⟨n + 1, Nat.succ_pos n⟩ ⟨k + 1, Nat.succ_pos k⟩
MathlibExt/Combinatorics/Enumerative/NarayanaPolynomial.lean:34
Uses 1
Loading dependency explorer…
The dependency explorer needs JavaScript and its graph data.