The Littlewood-Richardson Rule #
This file formalizes the Littlewood-Richardson rule for Schur polynomials, following the presentation in the Algebraic Combinatorics textbook.
The Littlewood-Richardson rule is one of the most famous results in the theory of symmetric polynomials. It provides a combinatorial formula for expanding the product of Schur polynomials as a sum of Schur polynomials: $$s_\nu \cdot s_{\lambda/\mu} = \sum_{T} s_{\nu + \operatorname{cont}(T)}$$ where the sum is over all ν-Yamanouchi semistandard tableaux T of shape λ/μ.
Main definitions #
NPartition: An N-partition is a weakly decreasing N-tuple of natural numberscontentTableau: The content of a tableau (counting occurrences of each entry)colGeq: Restriction of a tableau to columns ≥ jIsYamanouchi: A semistandard tableau is ν-Yamanouchi if certain conditions holdalternant: The alternant polynomial a_αschurPoly: The Schur polynomial s_λ (via the Jacobi-Trudi formula)skewSchurPoly: The skew Schur polynomial s_{λ/μ}
Main results #
littlewoodRichardson: Zelevinsky's generalized Littlewood-Richardson rule (thm.sf.lr-zy)stembridgeLemma: Stembridge's lemma (lem.sf.stemb-lem)schurPoly_eq_alternant_div: Theorem relating Schur polynomials to alternants (thm.sf.schur-symm (b))
Indexing Convention #
This file uses 1-indexed columns for skew Young diagrams, matching the textbook convention:
- A cell (i, j) is in Y(λ/μ) iff μ_i < j ≤ λ_i
- Column indices start at 1 (the first column is j = 1)
This differs from SchurBasics.lean which uses 0-indexed columns (Mathlib convention):
- A cell (i, j) is in Y(λ/μ) iff μ_i ≤ j < λ_i
- Column indices start at 0 (the first column is j = 0)
The bijection (i, j) ↔ (i, j+1) converts between the conventions.
See SchurBasics.skewCellEquiv and SchurBasics.mem_skewYoungDiagram_iff_mem_LR_shifted
for explicit equivalences.
References #
- [Stembridge, A concise proof of the Littlewood-Richardson rule][Stembr02]
- [Grinberg-Reiner, Hopf algebras in Combinatorics][GriRei]
Tags #
Littlewood-Richardson rule, Schur polynomial, Yamanouchi tableau, symmetric polynomial
N-partitions and N-tuples #
An N-partition is a weakly decreasing N-tuple of natural numbers.
We use Fin N → ℕ to represent N-tuples.
The IsNPartition predicate is defined in NPartition.lean and re-exported here
for backwards compatibility.
An N-partition is a weakly decreasing N-tuple of natural numbers. (Used throughout the source)
This is an alias for the canonical definition in NPartition.lean.
Equations
Instances For
The zero N-tuple (0, 0, ..., 0). (def.sf.tuple-addition (a))
Note: This is definitionally equal to (0 : Fin N → ℕ) via Mathlib's Pi.instZero.
Equations
Instances For
Addition of N-tuples, defined entrywise. (def.sf.tuple-addition (b))
Note: This is definitionally equal to (· + ·) on Fin N → ℕ via Mathlib's Pi.instAdd.
Equations
- AlgebraicCombinatorics.addTuple α β = α + β
Instances For
Subtraction of N-tuples, defined entrywise. Note: result is in ℤ. (def.sf.tuple-addition (b))
Equations
- AlgebraicCombinatorics.subTuple α β i = ↑(α i) - ↑(β i)
Instances For
API for def.sf.tuple-addition #
The following lemmas establish the basic properties of N-tuple arithmetic as stated in Definition def.sf.tuple-addition:
- (a) The zero N-tuple 0 = (0, 0, ..., 0)
- (b) Addition α + β and subtraction α - β are entrywise operations
Key properties (from the source text):
- "The addition operation + is associative and commutative"
- "The N-tuple 0 is its neutral element"
- "The subtraction operation − undoes +"
Part (a): The zero N-tuple #
The zero tuple is an N-partition (trivially weakly decreasing).
This is an alias for isNPartition_zero from NPartition.lean.
Part (b): Entrywise operations #
Algebraic properties of addition #
Subtraction undoes addition #
Interaction with N-partitions #
The sum of two N-partitions is an N-partition.
This is an alias for IsNPartition.add from NPartition.lean.
The staircase partition ρ = (N-1, N-2, ..., 1, 0).
Equations
- AlgebraicCombinatorics.rho N i = N - 1 - ↑i
Instances For
ρ is an N-partition when N > 0.
The ρ vector is strictly decreasing
The ρ vector is weakly decreasing
Tableaux and their content #
We work with semistandard Young tableaux. The content of a tableau counts how many times each value appears.
Indexing Convention #
This file uses 1-indexed columns for skew Young diagrams:
- A cell (i, j) is in Y(λ/μ) iff μ_i < j ≤ λ_i
- Column indices start at 1 (the first column is j = 1)
- This matches the textbook convention
SchurBasics.lean uses 0-indexed columns:
- A cell (i, j) is in Y(λ/μ) iff μ_i ≤ j < λ_i
- Column indices start at 0 (the first column is j = 0)
- This follows Mathlib/programming convention
Conversion: The bijection (i, j) ↔ (i, j+1) transforms between conventions.
See SchurBasics.skewCellEquiv and SchurBasics.mem_skewYoungDiagram_iff_mem_LR_shifted
for the explicit equivalences and conversion lemmas.
The skew Young diagram Y(lam/mu) as a set of cells. A cell (i,j) is in Y(lam/mu) if mu_i < j ≤ lam_i.
This is the Set version with 1-indexed columns (textbook convention).
The first column is j = 1, not j = 0.
For the canonical Finset version with 0-indexed columns, see:
NPartition.skewYoungDiagramin NPartition.lean (canonical, no[NeZero N]required)skewYoungDiagramin SchurBasics.lean (duplicate, requires[NeZero N])
Comparison:
- Here: (i, j) ∈ Y(λ/μ) iff μ_i < j ≤ λ_i (1-indexed)
- NPartition/SchurBasics: (i, j) ∈ Y(λ/μ) iff μ_i ≤ j < λ_i (0-indexed)
The bijection between them is: (i, j) here ↔ (i, j-1) in NPartition/SchurBasics.
See SchurBasics.mem_skewYoungDiagram_iff_mem_LR_shifted for the conversion lemma.
Equations
Instances For
Decidability of membership in the skew Young diagram.
Equations
- AlgebraicCombinatorics.skewYoungDiagram_decidable lam mu c = inferInstanceAs (Decidable (mu c.1 < c.2 ∧ c.2 ≤ lam c.1))
Definition (def.sf.content): The content of a tableau T is the N-tuple counting occurrences of each value.
For a tableau T of shape λ/μ, we define the content of T to be the N-tuple (a₁, a₂, ..., a_N), where aᵢ = (# of i's in T) = (# of boxes c of T such that T(c) = i).
We denote this N-tuple by cont(T).
Example: If N=5, then cont([[1,1,2],[4]]) = (2,1,0,1,0).
Key property (eq.def.sf.content.xT=): x_T = x^(cont(T)) for any tableau T. (Both sides equal ∏ᵢ xᵢ^(# of i's in T).)
Equations
Instances For
Equations
- AlgebraicCombinatorics.termCont = Lean.ParserDescr.node `AlgebraicCombinatorics.termCont 1024 (Lean.ParserDescr.symbol "cont")
Instances For
Content API lemmas (def.sf.content) #
The sum of content entries equals the number of cells in the tableau. (∑ᵢ cont(T)ᵢ = |Y(λ/μ)|)
This follows from the fact that content partitions the cells by their entries.
If two tableaux have the same cells with value i (i.e., T' c = i ↔ T c = i for all c), then they have the same content at i. This is useful for proving that transformations that don't affect certain values preserve the content at those values.
x^α = ∏ᵢ xᵢ^(αᵢ) for an N-tuple α.
This is an alias for AlgebraicCombinatorics.SymmetricFunctions.monomialExp from MonomialSymmetric.lean.
The two definitions are identical: both equal ∏ i, X i ^ α i.
See also: xPow_eq_monomialExp for the equivalence lemma.
Instances For
xPow equals monomialExp (definitional equality).
This lemma witnesses that the two definitions are the same:
xPow α = ∏ i, X i ^ α i(from LittlewoodRichardson.lean)monomialExp α = ∏ i, X i ^ α i(from MonomialSymmetric.lean)
Column restriction of tableaux (def.sf.col-tab) #
Definition (def.sf.col-tab): Let λ and μ be two N-partitions. Let T be a tableau of shape λ/μ. Let j be a positive integer. Then, col_{≥j}(T) means the restriction of T to columns j, j+1, j+2, ... (that is, the result of removing the first j-1 columns from T).
Formally speaking, this means the restriction of the map T to the set {(u,v) ∈ Y(λ/μ) | v ≥ j}.
Note: col_{≥1}(T) = T for any tableau T.
The restriction of a tableau to columns ≥ j. (def.sf.col-tab)
For a tableau T of shape λ/μ, colGeq T j is the restriction of T to the cells
in columns j, j+1, j+2, ... This is the formal definition of col_{≥j}(T).
The domain is {(u,v) ∈ Y(λ/μ) | v ≥ j}, and the function returns T(u,v) for each such cell.
Instances For
col_{≥j}(T) at cell c equals T at cell c. (def.sf.col-tab)
This is the defining property: the restriction to columns ≥ j simply returns the same value as T at each cell.
Every cell in a skew Young diagram has column ≥ 1.
This is because cells (i,j) in Y(λ/μ) satisfy μ_i < j, and μ_i ≥ 0, so j ≥ 1. This is why col_{≥1}(T) has the same domain as T.
The embedding from the domain of T to the domain of col_{≥1}(T).
Since every cell in Y(λ/μ) has column ≥ 1, this is a natural inclusion.
Equations
Instances For
The projection from the domain of col_{≥1}(T) to the domain of T.
Equations
Instances For
The domain of col_{≥1}(T) is equivalent to the domain of T.
This formalizes the note "col_{≥1}(T) = T for any tableau T" from the source: the two functions have equivalent domains and agree on corresponding elements.
Equations
- AlgebraicCombinatorics.equivColGeqOne = { toFun := AlgebraicCombinatorics.embedColGeqOne, invFun := AlgebraicCombinatorics.embedFromColGeqOne, left_inv := ⋯, right_inv := ⋯ }
Instances For
col_{≥1}(T) = T (as functions, up to domain equivalence).
This is the formal statement of "Note that col_{≥1}(T) = T for any tableau T" from the source text.
The embedding from the domain of col_{≥k}(T) to the domain of col_{≥j}(T) when j ≤ k.
Equations
- AlgebraicCombinatorics.embedColGeq hjk c = ⟨↑c, ⋯⟩
Instances For
The domain of col_{≥j}(T) is empty when j exceeds all column indices in the diagram.
This corresponds to the example in the source text where col_{≥5}(T) = (empty tableau) when the tableau has no columns ≥ 5.
Yamanouchi tableaux #
A semistandard tableau T is ν-Yamanouchi if ν + cont(col_{≥j}(T)) is an N-partition for every positive integer j.
A semistandard tableau T of shape λ/μ is ν-Yamanouchi if for each positive integer j, the N-tuple ν + cont(col_{≥j}(T)) is an N-partition (i.e., weakly decreasing).
Definition (def.sf.yamanouchi): Let λ, μ, ν be three N-partitions. A semistandard tableau T of shape λ/μ is said to be ν-Yamanouchi if for each positive integer j, the N-tuple ν + cont(col_{≥j}T) ∈ ℕ^N is an N-partition (i.e., weakly decreasing).
Key properties:
- The condition ensures that as we process the tableau column by column from right to left, starting with tally ν, the running tally always remains weakly decreasing.
- For j = 1, we get that ν + cont(T) is an N-partition (see
IsYamanouchi.isNPartition_add_content). - A 0-Yamanouchi tableau (also called a "ballot tableau") has content that is itself an N-partition.
Voting interpretation (rmk.sf.yamanouchi.votes): Think of each entry i in T as a vote for candidate i. Starting with tally ν and counting votes column by column from right to left, the tally must remain weakly decreasing at every step. Since columns have distinct entries (strictly increasing), no candidate gains more than one vote at a time.
Equations
Instances For
API lemmas for IsYamanouchi #
A ν-Yamanouchi tableau is semistandard.
For a ν-Yamanouchi tableau T and any j > 0, ν + cont(col_{≥j}(T)) is an N-partition.
Constructing a Yamanouchi tableau from its components.
A cell in the skew diagram has column index ≥ 1 (since column indices start from 1 in the standard convention where column j contains cells with c.2 = j).
The type of cells in the skew diagram with column ≥ 1 is equivalent to the full diagram.
Equations
- One or more equations did not get rendered due to their size.
Instances For
col_{≥1}(T) = T, i.e., the content of col_{≥1}(T) equals the content of T. This is because all cells in the skew diagram have column index ≥ 1.
For semistandard tableaux, contentColGeq T j i ≤ contentColGeq T (j+1) i + 1. This is because adding column j can add at most 1 cell with entry i (since columns are strictly increasing in semistandard tableaux).
Key property: For a ν-Yamanouchi tableau T, ν + cont(T) is an N-partition. This is the j=1 case of the Yamanouchi condition, and is essential for the Littlewood-Richardson rule since it ensures the output partitions are valid.
The zero N-tuple is an N-partition.
This is an alias for isNPartition_zero from NPartition.lean.
Adding two N-partitions gives an N-partition.
This is an alias for IsNPartition.add from NPartition.lean.
A 0-Yamanouchi tableau (ballot tableau) has content that is itself an N-partition.
Voting metaphor for Yamanouchi condition #
The Yamanouchi condition can be understood through a voting metaphor (rmk.sf.yamanouchi.votes):
- Each entry i in T is a vote for candidate i
- We count votes column by column, from right to left
- Starting with tally ν, after processing each column, the tally must remain weakly decreasing
- Key observation: no candidate gains more than one vote at a time (since columns have distinct entries)
Alternants and Schur polynomials #
The alternant a_α = ∑{σ ∈ S_N} sign(σ) · x^(σ·α). Here σ·α means (α{σ(1)}, α_{σ(2)}, ..., α_{σ(N)}).
Equivalence with SchurBasics.alternant:
This sum-based definition equals the determinant-based definition in
alternant (from SchurBasics.lean). See alternant_eq_det for the proof
that this equals det(alternantMatrix α).
Equations
- AlgebraicCombinatorics.alternant α = ∑ σ : Equiv.Perm (Fin N), Equiv.Perm.sign σ • AlgebraicCombinatorics.xPow (α ∘ ⇑σ)
Instances For
The Vandermonde determinant: a_ρ = ∏_{i<j} (xᵢ - xⱼ). (eq.def.sf.alternants.arho=vdm)
Equations
- AlgebraicCombinatorics.vandermonde = ∏ i : Fin N, ∏ j : Fin N, if i < j then MvPolynomial.X i - MvPolynomial.X j else 1
Instances For
Helper lemmas for alternant_rho_eq_vandermonde #
Matrix whose determinant equals the alternant. Entry (i, j) is x_j^{α_i}.
Equations
- AlgebraicCombinatorics.alternantMatrix α = Matrix.of fun (i j : Fin N) => MvPolynomial.X j ^ α i
Instances For
The sum-based alternant definition equals the determinant of the alternant matrix.
This establishes the equivalence:
∑ σ : Perm (Fin N), sign(σ) • x^(α ∘ σ) = det(x_j^{α_i})
The determinant-based definition is used in SchurBasics.lean (see alternant there),
while this file uses the sum-based definition. This theorem proves they are equal.
a_ρ equals the Vandermonde determinant.
Regular elements and cancellation #
This section formalizes Definition def.cring.reg from the source material.
Definition (def.cring.reg) #
Let L be a commutative ring. Let a ∈ L. The element a of L is said to be regular if and only if every x ∈ L satisfying ax = 0 satisfies x = 0.
Regular elements are also called "non-zero-divisors" or "cancellable" elements.
Connection to Mathlib #
In Mathlib, the relevant concepts are:
IsLeftRegular a: left multiplication byais injective (i.e.,a * x = a * y → x = y)IsRightRegular a: right multiplication byais injectiveIsRegular a: both left and right regular
The textbook definition (ax = 0 → x = 0) is equivalent to IsLeftRegular in any ring.
In a commutative ring, IsLeftRegular and IsRightRegular are equivalent, so
IsRegular is equivalent to either one.
The key equivalence is isLeftRegular_iff_right_eq_zero_of_mul from Mathlib:
IsLeftRegular r ↔ ∀ x, r * x = 0 → x = 0
Definition (def.cring.reg): An element a of a commutative ring L is regular
if and only if every x ∈ L satisfying a * x = 0 satisfies x = 0.
This is the textbook definition. We show it's equivalent to Mathlib's IsLeftRegular.
In commutative rings, this is also equivalent to IsRegular and IsRightRegular.
Equations
- AlgebraicCombinatorics.IsRegularElement a = ∀ (x : L), a * x = 0 → x = 0
Instances For
The textbook definition of regular is equivalent to Mathlib's IsLeftRegular.
In a commutative ring, IsRegularElement is equivalent to IsRightRegular.
In a commutative ring, IsRegularElement is equivalent to Mathlib's IsRegular.
IsRegularElement is equivalent to membership in nonZeroDivisorsLeft.
In a commutative ring, IsRegularElement is equivalent to membership in nonZeroDivisors.
Regular elements are non-zero in a nontrivial ring.
Zero is not regular in a nontrivial ring.
Units are regular.
One is regular.
The product of regular elements is regular.
Lemma (lem.cring.reg.cancel): Regular elements can be cancelled. Let L be a commutative ring. Let a, u, v ∈ L be such that a is regular. Assume that au = av. Then u = v.
Variant of the cancellation lemma using subtraction.
Regular elements can be cancelled (using Mathlib's IsRegular). (lem.cring.reg.cancel)
This is a direct consequence of IsLeftRegular (injectivity of left multiplication).
The Vandermonde polynomial is non-zero (in a polynomial ring over an integral domain).
The alternant a_ρ is a regular element of the polynomial ring. (lem.sf.arho-reg)
Note: This requires R to be an integral domain. In a non-integral domain, the polynomial ring has zero divisors and regularity may fail.
Schur polynomials #
The monomial x_T = ∏_i x_i^(# of i's in T) for a tableau T. By definition, this equals x^(cont(T)).
Equations
Instances For
Equation (eq.def.sf.content.xT=): The monomial x_T equals x^(cont(T)).
This is the key property of the content: both sides equal ∏ᵢ xᵢ^(# of i's in T).
This is definitional since monomialTableau is defined as xPow (contentTableau T).
Finiteness of tableaux #
The set of semistandard tableaux of any fixed shape is finite, since entries are bounded by N and the shape is finite. Similarly, the set of Yamanouchi tableaux is finite.
IsSemistandard is decidable since it's a conjunction of foralls over finite types.
The type of all tableaux of a given shape is finite. This follows from the fact that entries are in Fin N and the shape is finite.
Equations
The type of semistandard tableaux of a given shape is finite. This follows from the fact that entries are bounded by N and the shape is finite.
The skew Schur polynomial s_{lam/mu}. Defined as a sum over semistandard tableaux of shape lam/mu: s_{lam/mu} = ∑_{T semistandard of shape lam/mu} x^(cont(T))
Note: This is a finite sum since there are finitely many semistandard tableaux of any given shape (entries are bounded by N).
Relationship to Other Definitions #
This project has two skew Schur polynomial definitions with different design tradeoffs:
| Definition | File | Input | Ring | Use case |
|---|---|---|---|---|
AlgebraicCombinatorics.skewSchurPoly (this) | LittlewoodRichardson.lean | Fin N → ℕ | generic R | Littlewood-Richardson rule, generic rings |
skewSchurPoly | SchurBasics.lean | NPartition N | ℤ | Proofs using skew diagrams, symmetry |
When to use which:
- Use this definition when you need a generic coefficient ring
R, when working with the Littlewood-Richardson rule, or when you have an unbundledFin N → ℕ. - Use
SchurBasics.skewSchurPolywhen working with skew Young diagrams, SSYT fillings as explicit structures, or proving symmetry properties. It requires[NeZero N]and uses integer coefficients.
Equivalence: See SSYTEquiv.lean for the bridge between these definitions.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The Schur polynomial s_lam for an N-partition lam. Defined as s_{lam/0}, i.e., the skew Schur polynomial with empty inner shape.
Relationship to Other Definitions #
This project has two Schur polynomial definitions with different design tradeoffs:
| Definition | File | Input | Ring | Use case |
|---|---|---|---|---|
AlgebraicCombinatorics.schurPoly (this) | LittlewoodRichardson.lean | Fin N → ℕ | generic R | Littlewood-Richardson rule, generic rings |
schurPoly | SchurBasics.lean | NPartition N | ℤ | Proofs using Young diagrams, symmetry |
When to use which:
- Use this definition when you need a generic coefficient ring
R, when working with the Littlewood-Richardson rule, or when you have an unbundledFin N → ℕ. - Use
SchurBasics.schurPolywhen working with Young diagrams, SSYT fillings as explicit structures, or proving symmetry properties. It requires[NeZero N]and uses integer coefficients.
Equivalence: The two definitions agree when the partition is valid. See:
SSYTEquiv.schurPoly_eq_schur: relatesSchurBasics.schurPolytoSymmetricFunctions.schurschurPoly_eq_AC_schurPoly: relatesSchurBasics.schurPolyto this definition
Equations
Instances For
The type of Yamanouchi tableaux of a given shape is finite. This follows from the finiteness of tableaux (Yamanouchi tableaux are a subset).
Equations
- AlgebraicCombinatorics.yamanouchiTableau_fintype lam mu nu = ⋯.fintype
Bender-Knuth Involutions #
The Bender-Knuth involutions are key tools for proving properties of Schur polynomials. For each k ∈ [N-1], the k-th Bender-Knuth involution BK_k is a bijection on semistandard tableaux that swaps certain k's and (k+1)'s while preserving the SSYT property.
Definition #
For a semistandard tableau T and k ∈ [N-1], the Bender-Knuth involution BK_k works as follows:
- For each row i, consider the cells containing k or k+1
- Partition these cells into "free" and "forced" based on column constraints:
- A cell with value k is "forced" if the cell above it has value k
- A cell with value k+1 is "forced" if the cell below it has value k+1
- All other k's and (k+1)'s are "free"
- In each row, swap the free k's with the free (k+1)'s
Key Properties #
- Involution: BK_k ∘ BK_k = id
- Preserves SSYT: If T is semistandard, so is BK_k(T)
- Content change: cont(BK_k(T)) differs from cont(T) by swapping entries k and k+1
- Monomial change: x_{BK_k(T)} = s_k · x_T where s_k swaps x_k and x_{k+1}
References #
- [Stanley, EC2, Section 7.10]
- [Fulton, Young Tableaux, Section 4.3]
- [Bender-Knuth, "Enumeration of plane partitions", 1972]
Helper function for swapping adjacent values #
Swapping k and k+1 reverses their order.
A cell containing k is "k-forced" if there's a k+1 directly BELOW it in the same column. This means the k and the k+1 below it form a "pair" that won't be swapped by BK_k.
Note: The original (incorrect) definition said "k above k", but in a semistandard tableau, entries strictly increase down columns, so you can't have the same value in vertically adjacent cells. The correct definition is: k is paired with k+1 below it.
Equations
- One or more equations did not get rendered due to their size.
Instances For
A cell containing k+1 is "(k+1)-forced" if there's a k directly ABOVE it in the same column. This means the k above and this k+1 form a "pair" that won't be swapped by BK_k.
Note: The original (incorrect) definition said "k+1 below k+1", but in a semistandard tableau, entries strictly increase down columns. The correct definition is: k+1 is paired with k above it.
Equations
- One or more equations did not get rendered due to their size.
Instances For
A cell containing k or k+1 is "free" if it is not forced. Free cells can be swapped by the Bender-Knuth involution.
Equations
- AlgebraicCombinatorics.isFreeCell T k hk c = (T c = k ∧ ¬AlgebraicCombinatorics.isForcedK T k hk c ∨ T c = ⟨↑k + 1, hk⟩ ∧ ¬AlgebraicCombinatorics.isForcedKSucc T k hk c)
Instances For
Count of free k's in row i with column strictly less than j. Used for the parenthesis-matching algorithm in Bender-Knuth.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Count of free k's in row i with column at most j. Used for the parenthesis-matching algorithm in Bender-Knuth.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Count of free (k+1)'s in row i with column at most j. Used for the parenthesis-matching algorithm in Bender-Knuth.
Equations
- One or more equations did not get rendered due to their size.
Instances For
A free k at position c is "unmatched" in the parenthesis-matching sense.
The Bender-Knuth involution uses a parenthesis-matching algorithm:
- Read free entries left-to-right in each row
- Each free (k+1) matches with the nearest unmatched free k to its left
- Unmatched entries get swapped
A free k is unmatched iff at its position, the cumulative count of free k's exceeds the TOTAL count of free (k+1)'s in the row. In other words, there aren't enough (k+1)'s in the entire row to match all the k's up to this position.
This definition correctly implements the standard parenthesis-matching algorithm:
- Unmatched k's are exactly those at positions where there's an "excess" of k's
- These are the rightmost free k's that don't have a (k+1) to match with
Note: We compare freeKCountUpTo(c) with freeKSuccCount (total), not freeKSuccCountUpTo(c), because a k can match with any (k+1) to its right, not just (k+1)'s up to its position.
Equations
- One or more equations did not get rendered due to their size.
Instances For
A free (k+1) at position c is "unmatched" in the parenthesis-matching sense.
In the BK involution on a semistandard row with a free k's followed by b free (k+1)'s:
- If b > a: the LEFTMOST (b-a) free (k+1)'s are unmatched → become k
- If a ≥ b: all free (k+1)'s are matched (paired with the rightmost b free k's)
A free (k+1) at position c is unmatched iff it's among the leftmost (b-a) free (k+1)'s, i.e., the cumulative count of free (k+1)'s up to c is at most (b-a).
Equivalently: freeKSuccCountUpTo(c) + freeKCount ≤ freeKSuccCount
This marks the LEFTMOST excess (k+1)'s as unmatched, which is correct for the BK involution. The matched pairs are: leftmost min(a,b) k's paired with rightmost min(a,b) (k+1)'s.
Note: The previous (incorrect) definition used freeKSuccCountUpTo > freeKCountUpTo,
which marked RIGHTMOST (k+1)'s as unmatched — the wrong polarity.
Equations
- One or more equations did not get rendered due to their size.
Instances For
A matched free k is a free k that is not unmatched. In the parenthesis-matching algorithm, these are the k's that get paired with (k+1)'s.
Equations
- AlgebraicCombinatorics.isMatchedFreeK T k hk c = (T c = k ∧ ¬AlgebraicCombinatorics.isForcedK T k hk c ∧ ¬AlgebraicCombinatorics.isUnmatchedFreeK T k hk c)
Instances For
A matched free (k+1) is a free (k+1) that is not unmatched. In the parenthesis-matching algorithm, these are the (k+1)'s that get paired with k's.
Equations
- AlgebraicCombinatorics.isMatchedFreeKSucc T k hk c = (T c = ⟨↑k + 1, hk⟩ ∧ ¬AlgebraicCombinatorics.isForcedKSucc T k hk c ∧ ¬AlgebraicCombinatorics.isUnmatchedFreeKSucc T k hk c)
Instances For
The Bender-Knuth involution BK_k on semistandard tableaux.
This involution swaps UNMATCHED free k's with UNMATCHED free (k+1)'s in each row, using a parenthesis-matching algorithm that preserves semistandardness.
Algorithm (for each row independently):
- Identify all "free" entries (k's not paired with k+1 below, (k+1)'s not paired with k above)
- Read free entries left-to-right, matching each (k+1) with nearest unmatched k to its left
- Swap only the UNMATCHED entries: unmatched k → k+1, unmatched (k+1) → k
Why this preserves row-weak ordering:
- Matched pairs don't change
- Unmatched k's (which become k+1) are always to the RIGHT of all matched (k+1)'s
- Unmatched (k+1)'s (which become k) are always to the LEFT of all matched k's
Key theorem: This is an involution that preserves semistandardness and swaps the counts of k and k+1 in the content.
Note: The naive cell-by-cell swap (swapping ALL free entries) is INCORRECT because adjacent free k and free (k+1) would become (k+1, k), violating row-weak ordering. The parenthesis-matching ensures only non-adjacent free entries get swapped.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Forced k cells remain forced after Bender-Knuth.
Forced (k+1) cells remain forced after Bender-Knuth.
Key lemmas for benderKnuth_involutive #
The proof of involutivity requires showing that the matching structure is preserved under BK. The key insights are:
Matching symmetry: If a free k at position c is matched with a free (k+1) at position c', then after BK, both stay as their original values (k and k+1).
Unmatched symmetry: An unmatched free k becomes an unmatched free (k+1) in T', and an unmatched free (k+1) becomes an unmatched free k in T'.
Row-weak preservation: In each row, the ordering of entries is preserved because:
- Unmatched (k+1)'s (→ k) are to the LEFT of matched entries
- Unmatched k's (→ k+1) are to the RIGHT of matched entries
Column-strict preservation: Forced pairs stay together, and free cells in the same column have the same matching status (since they're in the same row).
Partner functions for forced cells #
Forced k cells and forced (k+1) cells come in pairs: each forced k has exactly one forced (k+1) directly below it, and vice versa. These helper functions extract the partner cell, which is useful for proving the content swap property.
Free k cells and column ordering #
The following section documents the structure needed to prove matchedFreeK_card_eq_matchedFreeKSucc_card.
Key insight: Free k cells in a given row can be ordered by column. If we denote the columns of free k cells in row i as c₁ < c₂ < ... < cₘ, then:
freeKCountUpTo(cⱼ) = jfor each j (by definition of freeKCountUpTo)- A free k cell at column cⱼ is matched iff
freeKCountUpTo(cⱼ) ≤ freeKSuccCount, i.e.,j ≤ n - There are
min(m, n)such cells
The formal proof requires:
- Showing that free k columns in row i form a finset S
- Using
S.orderEmbOfFinto establish the bijection withFin m - Showing that
freeKCountUpToat the j-th column equals j+1 (viacount_le_nth_smallest) - Applying
matched_position_countto count matched cells
The helper lemmas count_le_nth_smallest and matched_position_count provide the counting
infrastructure. The remaining work is to formalize the bijection between free k cells and
their position in the column ordering.
Free (k+1) cells and column ordering #
Similar to the free k cell infrastructure, we define helpers for free (k+1) cells.
The key difference is that for free (k+1) cells, the matched condition involves
freeKCountBefore rather than freeKSuccCount.
Per-row count swap lemmas for Bender-Knuth #
These lemmas establish that applying Bender-Knuth swaps the counts of free k's and free (k+1)'s in each row. This is the key fact needed to prove that matched cells stay matched after BK.
A matched free k stays as k after BK, and remains matched in T'. This is the key lemma for proving that BK(BK(T)) = T for matched cells.
Definition reminder: A free k at position c is unmatched iff
freeKCountUpTo(c.col) > freeKSuccCount (total in row). This compares the
cumulative count of k's up to c with the TOTAL count of (k+1)'s in the row.
In a semistandard row with a free k's followed by b free (k+1)'s:
- The j-th free k has
freeKCountUpTo = j - It's unmatched iff
j > b, i.e., the rightmost(a - b)free k's are unmatched - The leftmost
min(a, b)free k's are matched
So matched free k's DO exist when b > 0 (there are free (k+1)'s in the row).
Proof strategy:
- freeKCountUpTo T' c.col = freeKCountUpTo T c.col (by
matched_k_propagates_left, all free k's at columns ≤ c.col are matched, so they stay as k in T') - freeKCountUpTo T c.col ≤ freeKCount T (cumulative ≤ total)
- freeKSuccCount T' = freeKCount T (count swap under BK)
- Combining: freeKCountUpTo T' c.col ≤ freeKCount T = freeKSuccCount T'
Row-weak preservation for Bender-Knuth: T' c₁ ≤ T' c₂ when c₁.col < c₂.col in the same row.
The key insight is:
- Unmatched free k's are the RIGHTMOST free k's (when a > b)
- Unmatched free (k+1)'s are the LEFTMOST free (k+1)'s (when b > a)
After BK:
- Rightmost k's become k+1 (moving to the right of remaining k's)
- Leftmost (k+1)'s become k (moving to the left of remaining (k+1)'s)
This preserves row-weak ordering because the new k's are to the LEFT of remaining (k+1)'s.
Proof strategy: Case analysis on what T c₁ and T c₂ are, using:
not_unmatched_k_and_unmatched_kSucc: Can't have unmatched k left of unmatched k+1matched_k_propagates_left: If c₂ is matched k, then c₁ (to the left) is also matchedmatched_kSucc_propagates_right: If c₁ is matched k+1, then c₂ (to the right) is also matched
Column-strict preservation for Bender-Knuth involution.
This lemma proves that BK preserves column-strict ordering when lam and mu are N-partitions. The key insight is that if T c₁ = k and T c₂ = k+1 in the same column with c₁.row < c₂.row, then by the partition property (columns are contiguous), c₁ and c₂ must be adjacent. Adjacent cells with k above and k+1 below form a forced pair, which is unchanged by BK.
This lemma resolves the column-strict sorry in benderKnuth_involutive when partition hypotheses are available.
The Bender-Knuth involution preserves semistandardness.
The Bender-Knuth involution is an involution for N-partitions.
This is a version of benderKnuth_involutive that uses the partition hypotheses
to prove column-strict preservation via benderKnuth_column_strict.
Content swap proof structure #
The key insight for benderKnuth_content_swap is:
Decomposition of cells by type:
{c | T c = k}={forced k}⊔{free k}{c | T c = k+1}={forced (k+1)}⊔{free (k+1)}
Forced pairs bijection:
Forced k and forced (k+1) cells are in bijection: each forced k cell has a unique
(k+1) directly below it, and vice versa. So |forced k| = |forced (k+1)|.
Free cell transformation by BK: In each row with m free k's and n free (k+1)'s:
- min(m,n) pairs are "matched" (paired by parenthesis matching)
- max(0, m-n) free k's are "unmatched" → become (k+1)
- max(0, n-m) free (k+1)'s are "unmatched" → become k
- After BK: new free k count = n, new free (k+1) count = m
Content swap:
cont(T')_k = |forced k| + |new free k|
= |forced k| + Σ_rows (free (k+1) count in row)
= |forced (k+1)| + |free (k+1)|
= cont(T)_{k+1}
Similarly for cont(T')_{k+1} = cont(T)_k.
The content of BK_k(T) differs from cont(T) by swapping entries k and k+1. Specifically: cont(BK_k(T))k = cont(T){k+1} and cont(BK_k(T))_{k+1} = cont(T)_k, while cont(BK_k(T))_i = cont(T)_i for i ≠ k, k+1.
This is the key property that makes Bender-Knuth involutions useful for proving symmetry of Schur polynomials.
The monomial x_{BK_k(T)} equals s_k · x_T, where s_k swaps x_k and x_{k+1}. This follows from benderKnuth_content_swap.
Stembridge's Involution for Non-Yamanouchi Tableaux #
For Stembridge's lemma, we need a sign-reversing involution on non-Yamanouchi tableaux. Given a tableau T that is not ν-Yamanouchi:
- Find the largest "violator" column j (where ν + cont(col_{≥j}(T)) fails to be a partition)
- Find the smallest "misstep" index k (where the partition condition fails)
- Apply Bender-Knuth BK_k to columns 1, ..., j-1
This involution has the property that the paired tableaux contribute opposite signs to the alternant sum, causing them to cancel.
Decidability of isPartitionAtColumn.
Equations
The set of columns where ν + cont(col_{≥j}(T)) fails to be a partition.
Note: We use maxCol + 2 in the range to ensure that j = maxCol + 1 is included.
This is important because for j > maxCol, contentColGeq T j = 0, so we're checking
if nu itself is an N-partition. Without this, the lemma
violatorColumns_nonempty_of_not_yamanouchi would fail when nu is not an N-partition
but nu + contentColGeq T j is an N-partition for all j ≤ maxCol.
Equations
- AlgebraicCombinatorics.violatorColumns nu T = {j ∈ Finset.range (Finset.univ.sup lam + 2) | j > 0 ∧ ¬AlgebraicCombinatorics.isPartitionAtColumn nu T j}
Instances For
Find the largest column j where ν + cont(col_{≥j}(T)) fails to be an N-partition.
Returns none if T is ν-Yamanouchi (i.e., no such column exists).
Equations
- AlgebraicCombinatorics.findViolatorColumn nu T = if h : (AlgebraicCombinatorics.violatorColumns nu T).Nonempty then some ((AlgebraicCombinatorics.violatorColumns nu T).max' h) else none
Instances For
Decidability of isMisstep.
Equations
The set of misstep indices for a tuple α.
Equations
- AlgebraicCombinatorics.misstepSet α = {k : Fin N | AlgebraicCombinatorics.isMisstep α k}
Instances For
Find the smallest index k where α_k < α_{k+1}. Returns none if α is a partition.
Equations
- AlgebraicCombinatorics.findFirstMisstep α = if h : (AlgebraicCombinatorics.misstepSet α).Nonempty then some ((AlgebraicCombinatorics.misstepSet α).min' h) else none
Instances For
Find the smallest index k where ν + cont(col_{≥j}(T)) fails the partition condition. That is, find k such that (ν + cont(col_{≥j}(T)))k < (ν + cont(col{≥j}(T)))_{k+1}.
Equations
Instances For
Prefix-restricted count functions for benderKnuthPrefixMatching #
The following definitions compute matching for the Bender-Knuth involution restricted
to a column prefix (columns < j). This infrastructure is used by benderKnuthPrefixMatching
to correctly preserve row-weak ordering.
Key insight: When applying BK_k to columns < j only, the matching should be computed using only the free entries in columns < j, not the entire row. This ensures that unmatched entries are at the k/(k+1) boundary within the prefix.
Count of free k's in row i restricted to columns < j.
This is an alias for freeKCountBefore for use in the prefix-matching context.
Equations
- AlgebraicCombinatorics.freeKCountPrefix T i k hk j = AlgebraicCombinatorics.freeKCountBefore T i k hk j
Instances For
Count of free k's in row i with column ≤ col, restricted to columns < j. Used for the parenthesis-matching algorithm in benderKnuthPrefixMatching.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Count of free (k+1)'s in row i with column ≤ col, restricted to columns < j. Used for the parenthesis-matching algorithm in benderKnuthPrefixMatching.
Equations
- One or more equations did not get rendered due to their size.
Instances For
A free k at position c is "unmatched" within the column prefix (columns < j).
This is the prefix-restricted version of isUnmatchedFreeK. The matching is computed
using only free entries in columns < j, not the entire row.
A free k is unmatched in the prefix iff at its position, the cumulative count of free k's (in the prefix) exceeds the TOTAL count of free (k+1)'s (in the prefix).
Usage: Used by benderKnuthPrefixMatching to correctly preserve row-weak ordering.
Equations
- One or more equations did not get rendered due to their size.
Instances For
A free (k+1) at position c is "unmatched" within the column prefix (columns < j).
This is the prefix-restricted version of isUnmatchedFreeKSucc. The matching is computed
using only free entries in columns < j, not the entire row.
A free (k+1) is unmatched in the prefix iff it's among the leftmost excess (k+1)'s, i.e., the cumulative count of free (k+1)'s up to c plus the total free k count is at most the total free (k+1) count (all counts restricted to the prefix).
Usage: Used by benderKnuthPrefixMatching to correctly preserve row-weak ordering.
Equations
- One or more equations did not get rendered due to their size.
Instances For
A matched free k in the prefix (columns < j) is a free k that is not unmatched. In the parenthesis-matching algorithm restricted to the prefix, these are the k's that get paired with (k+1)'s.
Equations
- AlgebraicCombinatorics.isMatchedFreeKPrefix T k hk j c = ((↑c).2 < j ∧ T c = k ∧ ¬AlgebraicCombinatorics.isForcedK T k hk c ∧ ¬AlgebraicCombinatorics.isUnmatchedFreeKPrefix T k hk j c)
Instances For
A matched free (k+1) in the prefix (columns < j) is a free (k+1) that is not unmatched. In the parenthesis-matching algorithm restricted to the prefix, these are the (k+1)'s that get paired with k's.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Cardinality lemmas for prefix-restricted matching #
These lemmas establish cardinalities of matched/unmatched cells in the prefix,
analogous to matchedFreeK_row_card and unmatchedFreeK_row_card for the full-row version.
Key results:
matchedFreeKPrefix_row_card: #{matched free k's in row i, prefix} = min(m, n)unmatchedFreeKPrefix_row_card: #{unmatched free k's in row i, prefix} = m - min(m, n)matchedFreeKSuccPrefix_row_card: #{matched free (k+1)'s in row i, prefix} = min(m, n)unmatchedFreeKSuccPrefix_row_card: #{unmatched free (k+1)'s in row i, prefix} = n - min(m, n)
where m = freeKCountPrefix T i k hk j and n = freeKSuccCountPrefix T i k hk j.
These are the prefix-restricted versions of the lemmas at lines 3244-3550.
Helper lemmas for prefix-restricted matching #
These lemmas establish key properties of isUnmatchedFreeKPrefix and isUnmatchedFreeKSuccPrefix
that are used by benderKnuthPrefixMatching_row_weak_stembridge and related proofs.
Key insight: In the prefix-restricted matching:
- Unmatched free k's are the RIGHTMOST excess free k's (after matching with free (k+1)'s)
- Unmatched free (k+1)'s are the LEFTMOST excess free (k+1)'s
This means if c₁ is unmatched free k and c₂ is unmatched free (k+1) in the same row, then c₁.col > c₂.col (c₁ is to the right of c₂). This is crucial for row-weak preservation.
Cross-boundary case analysis for benderKnuthPrefixMatching #
The following lemma addresses the "cross-boundary" case in benderKnuthPrefixMatching_row_weak_stembridge:
when c₁ is in the prefix (col < j) and c₂ is in the suffix (col ≥ j).
Problem: If c₁ is unmatched free k in the prefix and T c₂ = k in the suffix, then after transformation: T' c₁ = k+1 > k = T' c₂, violating row-weak.
Key insight: In the Stembridge involution, j is chosen as the largest violator column. This means ν + cont(col_{≥j}(T)) is NOT a partition, but ν + cont(col_{≥j+1}(T)) IS a partition. The misstep index k is chosen such that (ν + cont(col_{≥j}(T)))k < (ν + cont(col{≥j}(T)))_{k+1}.
This structure constrains what values can appear in which columns, potentially ruling out the problematic cross-boundary case.
Column j has no k entries at max violator.
When j is the MAX violator column and k is the misstep index for α = ν + cont(col_{≥j}(T)), column j contains no cells with entry k. This is expressed as: contentColGeq T j k = contentColGeq T (j + 1) k
Context: In the Stembridge involution:
- j is a violator column (α = ν + cont(col_{≥j}(T)) is not a partition)
- j is the LARGEST violator (β = ν + cont(col_{≥j+1}(T)) IS a partition)
- k is the smallest misstep index (α k < α (k+1))
Proof idea:
- From misstep: α k < α (k+1), i.e., ν k + cont(col_{≥j}) k < ν (k+1) + cont(col_{≥j}) (k+1)
- From β partition: β (k+1) ≤ β k, i.e., ν (k+1) + cont(col_{≥j+1}) (k+1) ≤ ν k + cont(col_{≥j+1}) k
- From semistandard: cont(col_{≥j}) i ≤ cont(col_{≥j+1}) i + 1 (at most 1 entry per column)
- From monotonicity: cont(col_{≥j+1}) i ≤ cont(col_{≥j}) i
- Combining these constraints forces cont(col_{≥j}) k = cont(col_{≥j+1}) k
Apply the Bender-Knuth involution BK_k to columns < j of a tableau (matching-based version).
This definition uses isUnmatchedFreeKPrefix and isUnmatchedFreeKSuccPrefix
(which compute matching restricted to columns < j) instead of simple free conditions.
This is the correct definition that preserves row-weak ordering.
The matching-based conditions ensure that only unmatched free entries are swapped,
preserving the row-weak property. See benderKnuthPrefixMatching_row_weak_stembridge below.
Equations
- One or more equations did not get rendered due to their size.
Instances For
benderKnuthPrefixMatching agrees with the original tableau on columns ≥ j.
Count swap lemmas for benderKnuthPrefixMatching #
After applying benderKnuthPrefixMatching, the counts of free k's and free (k+1)'s swap.
These are the prefix-restricted versions of freeKCount_benderKnuth and freeKSuccCount_benderKnuth.
Key results (now proved):
freeKCountPrefix_benderKnuthPrefixMatching: freeKCountPrefix T' = freeKSuccCountPrefix TfreeKSuccCountPrefix_benderKnuthPrefixMatching: freeKSuccCountPrefix T' = freeKCountPrefix T
These lemmas, combined with the cardinality lemmas in the previous section, are used in
benderKnuthPrefixMatching_involutive_stembridge.
benderKnuthPrefixMatching preserves semistandardness in the Stembridge involution context.
This combines benderKnuthPrefixMatching_row_weak_stembridge and
benderKnuthPrefixMatching_column_strict to show that the resulting tableau is semistandard.
The Stembridge context hypotheses (nu, hj_pos, hbeta, hk_misstep) are needed for the row-weak part to handle the cross-boundary case.
benderKnuthPrefixMatching preserves contentColGeq for columns >= j. Since benderKnuthPrefixMatching only modifies cells in columns < j, the content in columns >= j is unchanged.
benderKnuthPrefixMatching preserves contentColGeq for all j' >= j. This generalizes benderKnuthPrefixMatching_contentColGeq to any column >= j.
benderKnuthPrefixMatching preserves contentTableau for indices i ≠ k, k+1. This is because the transformation only swaps k ↔ k+1 entries.
Helper lemmas for the involution proof #
The following helper lemmas establish the counting arguments needed to prove
benderKnuthPrefixMatching_involutive_stembridge. The key insight is that
the counts swap under the transformation:
These lemmas are analogous to unmatched_k_becomes_unmatched_kSucc' for the
full-row version, but restricted to the prefix (columns < j).
benderKnuthPrefixMatching is an involution in the Stembridge context.
This theorem proves that applying benderKnuthPrefixMatching twice returns the original
tableau, when the Stembridge context hypotheses are satisfied.
Proof strategy: The key insight is that the matching-based conditions are symmetric:
- If c is unmatched free k in T, then T' c = k+1, and c becomes unmatched free (k+1) in T'
- If c is unmatched free (k+1) in T, then T' c = k, and c becomes unmatched free k in T'
- Forced cells and cells outside the prefix are unchanged
The matching counts are preserved because:
- freeKCountPrefix T' = freeKSuccCountPrefix T (unmatched k's become k+1's)
- freeKSuccCountPrefix T' = freeKCountPrefix T (unmatched k+1's become k's)
- The matching structure is exactly reversed
Note: This requires the Stembridge context hypotheses to ensure the result is
semistandard, which is needed for the second application of benderKnuthPrefixMatching.
Helper lemmas for Stembridge's involution #
The following lemmas establish the key properties needed for defining and proving properties of Stembridge's involution.
If α is not an N-partition, then there exists a misstep index.
A semistandard tableau T is not ν-Yamanouchi iff it's not semistandard or there exists j > 0 such that ν + cont(col_{≥j}(T)) is not an N-partition.
For a semistandard tableau T that is not ν-Yamanouchi, the violator columns set is nonempty.
The misstep set is nonempty when the tuple is not a partition.
Any column in violatorColumns is positive (j > 0).
When j is the max violator column, j+1 gives an N-partition (or is out of range). This is the key hypothesis needed for benderKnuthPrefixMatching_involutive_stembridge.
Note: This lemma requires hnu : IsNPartition nu to handle the edge case where
j = maxCol + 1 and contentColGeq T (j+1) = 0. In that case, we need to show
IsNPartition nu, which is given by hypothesis.
Stembridge's involution on non-Yamanouchi tableaux. For T not ν-Yamanouchi:
- Let j = findViolatorColumn ν T (largest column where ν + cont(col_{≥j}(T)) is not a partition)
- Let k = findMisstepIndex ν T j (smallest index where the partition condition fails)
- Apply BK_k to columns 1, ..., j-1 of T using benderKnuthPrefixMatching
This involution pairs non-Yamanouchi tableaux such that their alternant contributions cancel.
Key insight: The violator column j and misstep index k are the same for T and T' because benderKnuthPrefixMatching leaves columns ≥ j unchanged. This ensures the involution is well-defined and pairs tableaux correctly.
Implementation note: We use the helper functions findViolatorColumn and findMisstepIndex to extract j and k, then apply benderKnuthPrefixMatching. The proofs that these functions return valid values (Some j, Some k) follow from the non-Yamanouchi assumption.
Implementation: Uses violatorColumns_nonempty_of_not_yamanouchi to find j,
misstepSet_nonempty_of_not_partition to find k, then applies benderKnuthPrefixMatching k j T.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Matching-based Stembridge involution #
The stembridgeInvolutionMatching definition is an alternative to stembridgeInvolution that
explicitly requires partition hypotheses. Both use benderKnuthPrefixMatching internally.
Port status: Complete. (The port to matching-based BK was completed and old code removed.)
stembridgeInvolutionMatching: Definition using matching-based BK ✓- Involutivity: Uses
benderKnuthPrefixMatching_involutive_stembridgewhich is sorry-free
Key difference from stembridgeInvolution:
- Requires
hlam : IsNPartition lam,hmu : IsNPartition mu, andhnu : IsNPartition nuparameters - Uses matching-based conditions to determine which cells to swap
Stembridge's involution using matching-based Bender-Knuth (version with explicit partition hypotheses).
This version of the Stembridge involution explicitly requires partition hypotheses for
lam, mu, and nu. The matching-based approach correctly preserves row-weak
ordering by only swapping unmatched free entries.
Parameters:
hlam,hmu: Partition hypotheses needed for the matching-based BK to preserve semistandardnesshnu: Partition hypothesis for ν (needed to prove β is a partition when j is max violator)nu: The ν parameter for the Yamanouchi conditionT: Input semistandard tableauhnotYam: Proof that T is not ν-Yamanouchi
Implementation: Same as stembridgeInvolution, but uses benderKnuthPrefixMatching
in the final step.
Equations
- One or more equations did not get rendered due to their size.
Instances For
stembridgeInvolutionMatching preserves semistandardness.
stembridgeInvolutionMatching is an involution on non-Yamanouchi tableaux.
This theorem uses benderKnuthPrefixMatching_involutive_stembridge which is
sorry-free.
stembridgeInvolutionMatching preserves the content in columns ≥ j.
Stembridge's involution is an involution on non-Yamanouchi tableaux.
Proof outline:
Let T' = stembridgeInvolution ν T. The involution is defined as:
- Let j = findViolatorColumn ν T (largest column where ν + cont(col_{≥j}(T)) is not a partition)
- Let k = findMisstepIndex ν T j (smallest index where the partition condition fails)
- Apply BK_k to columns 1, ..., j-1 of T
To prove T' is semistandard:
- BK_k preserves semistandardness (benderKnuthPrefixMatching_semistandard_stembridge)
- The column restriction and recombination preserve semistandardness
To prove T' is not Yamanouchi:
- The violator column j and misstep index k are the same for T and T'
- This is because BK_k only affects columns < j, not columns ≥ j
To prove stembridgeInvolution T' = T:
- BK_k is an involution (benderKnuthPrefixMatching_involutive_stembridge)
- Applying BK_k twice to columns 1, ..., j-1 returns the original
Stembridge's involution preserves semistandardness.
Stembridge's involution maps non-Yamanouchi to non-Yamanouchi.
The prefix content swap lemma: the count of k's in the prefix of T' equals the count of k+1's in the prefix of T, where T' = benderKnuthPrefixMatching.
This is the key lemma for proving the content transposition property.
Proof strategy:
- prefix k in T' = (forced k in prefix of T) + (free k in prefix of T')
- prefix k' in T = (forced k' in prefix of T) + (free k' in prefix of T)
- By forced bijection: #{forced k in prefix} = #{forced k' in prefix}
- By count swap: #{free k in prefix of T'} = #{free k' in prefix of T}
- Therefore: prefix k in T' = prefix k' in T
The Stembridge involution changes the content in such a way that ν + cont(T') + ρ differs from ν + cont(T) + ρ by a transposition.
Specifically, if T' = stembridgeInvolution ν T, then there exist indices k ≠ k' such that ν + cont(T') + ρ = (ν + cont(T) + ρ) ∘ swap(k, k').
This is the key property that enables the sign-reversing argument: the Stembridge involution applies BK_k to a prefix of T, which swaps the counts of k and k+1 in that prefix. Combined with the specific choice of the misstep index k, this results in the full expression being related by a transposition.
The key sign-reversing property: the alternant contributions of T and its image under Stembridge's involution are negatives of each other.
This is because cont(T') differs from cont(T) by swapping entries k and k+1, and by alternant_swap, this negates the alternant.
If the Stembridge involution has a fixed point, then the alternant is zero.
This is the key lemma that allows us to use Finset.sum_involution:
we only need the involution to be fixed-point free when the alternant is non-zero.
Proof: If T' = T, then by stembridgeInvolution_content_transposition:
f = f ∘ swap k k'wheref = nu + contentTableau T + rho Nandk ≠ k'- This means
f(k) = f(k'), sofhas repeated entries - By
alternant_eq_zero_of_repeated, the alternant is zero.
Stembridge's involution has no fixed points on non-Yamanouchi tableaux when the alternant is non-zero.
Proof strategy: The contrapositive of stembridgeInvolution_fixed_point_implies_alternant_zero.
If T' = T, then the alternant is zero, so if the alternant is non-zero, then T' ≠ T.
Note: The unconditional version (without the alternant hypothesis) would require
a detailed analysis of the Bender-Knuth structure, showing that the prefix content
cannot be exactly balanced for non-Yamanouchi tableaux. For the application in
alternant_sum_non_yamanouchi_eq_zero, the conditional version suffices.
The type of non-Yamanouchi semistandard tableaux is finite.
Equations
The skew Schur polynomial is symmetric when lam and mu are N-partitions.
This follows from Bender-Knuth involutions: for each adjacent transposition (k, k+1), the Bender-Knuth involution BK_k gives a bijection on semistandard tableaux that swaps the content entries k and k+1. Since adjacent transpositions generate the symmetric group, this proves skewSchurPoly is invariant under all permutations.
The partition hypotheses are required for benderKnuth_involutive_partition.
The key expansion identity: alternant α * skewSchurPoly = ∑_T alternant (α + cont(T)).
This identity is the core of Stembridge's proof. It follows from:
- The symmetry of skewSchurPoly (invariant under variable permutations)
- The fact that alternant α = ∑_σ sign(σ) · x^(α ∘ σ)
- For symmetric p: alternant α * p = ∑_σ sign(σ) · rename σ⁻¹ (x^α * p)
The proof uses Bender-Knuth involutions to establish the symmetry of skewSchurPoly.
The alternant sum over all semistandard tableaux equals the sum over Yamanouchi tableaux plus the sum over non-Yamanouchi tableaux.
The sum over non-Yamanouchi tableaux is zero (they cancel in pairs via the involution).
Main theorems #
Stembridge's Lemma (lem.sf.stemb-lem): The key technical lemma for proving the Littlewood-Richardson rule.
For N-partitions lam, mu, nu: a_{nu+ρ} · s_{lam/mu} = ∑{T nu-Yamanouchi of shape lam/mu} a{nu + cont(T) + ρ}
The sum on the RHS is over all nu-Yamanouchi semistandard tableaux T of shape lam/mu. Note: The sum is finite since there are finitely many semistandard tableaux of any shape.
Proof Strategy (from Stembridge 1997) #
The proof uses a sign-reversing involution on non-Yamanouchi tableaux:
Step 1: Express the LHS using the alternant definition and symmetry of skewSchurPoly:
a_{ν+ρ} · s_{λ/μ} = ∑_{σ ∈ S_N} (-1)^σ · σ(x^{ν+ρ}) · s_{λ/μ}
= ∑_{σ ∈ S_N} (-1)^σ · σ(x^{ν+ρ} · s_{λ/μ}) (since s_{λ/μ} is symmetric)
Step 2: Expand s_{λ/μ} as a sum over semistandard tableaux:
= ∑_{T ∈ SSYT(λ/μ)} ∑_{σ ∈ S_N} (-1)^σ · x^{σ(ν+cont(T)+ρ)}
= ∑_{T ∈ SSYT(λ/μ)} a_{ν+cont(T)+ρ}
Step 3: Define a sign-reversing involution on non-Yamanouchi tableaux: For T not ν-Yamanouchi:
- Let j be the largest "violator" column (where ν + cont(col≥j T) fails to be a partition)
- Let k be the smallest "misstep" index (where the partition condition fails)
- Apply the Bender-Knuth involution β_k to columns 1, ..., j-1 of T
- This gives T* with cont(T*) obtained from cont(T) by swapping entries k and k+1
Step 4: Show the involution is sign-reversing: Since cont(T*) differs from cont(T) by swapping entries k and k+1:
a_{ν+cont(T*)+ρ} = -a_{ν+cont(T)+ρ} (by alternant_swap)
Step 5: Conclude that non-Yamanouchi tableaux cancel in pairs.
Dependencies #
This proof requires:
skewSchurPolyto be properly defined as ∑_{T ∈ SSYT} x^{cont(T)}alternant_swap: swapping two entries negates the alternantalternant_eq_zero_of_repeated: equal entries give zero alternant- Bender-Knuth involutions β_k on tableaux
- Properties of the involution (sign-reversing, fixed-point free on non-Yamanouchi)
Reference: [Stembridge, A concise proof of the Littlewood-Richardson rule, 2002]
Lemma (lem.sf.tab-greater-i): In a semistandard tableau of shape lam, the entry at position (i,j) is at least i.
This follows from the strict increase down columns: for any cell (i, j) in the diagram, all cells (0, j), (1, j), ..., (i-1, j) are also in the diagram (since lam is weakly decreasing), and the entries strictly increase down the column, giving T(i, j) ≥ i.
The minimalistic tableau T₀ of shape lam has entry i in row i. (Defined in the proof of thm.sf.schur-symm (b))
Equations
- AlgebraicCombinatorics.minimalisticTableau lam c = (↑c).1
Instances For
The minimalistic tableau is semistandard.
The minimalistic tableau is 0-Yamanouchi. (Observation 1 in proof)
The key insight is that for the minimalistic tableau, contentColGeq T j at row i counts cells (i, k) where j ≤ k ≤ lam i. This count equals lam i + 1 - j. Since lam is weakly decreasing (an N-partition), so is this count, hence 0 + contentColGeq T j is also weakly decreasing, i.e., an N-partition.
The content of the minimalistic tableau equals lam. This follows from contentColGeq_one_eq_contentTableau and contentColGeq_minimalisticTableau: contentTableau T₀ = contentColGeq T₀ 1, and contentColGeq T₀ 1 i = lam i + 1 - 1 = lam i.
Helper: for 0-Yamanouchi T of shape lam/0, the entry at the rightmost cell of row i equals i. This is the key to proving uniqueness.
The minimalistic tableau is the unique 0-Yamanouchi semistandard tableau of shape lam/0. (Observation 2 in proof)
Theorem (thm.sf.schur-symm (b)): The fundamental relation between Schur polynomials and alternants: a_{lam+ρ} = a_ρ · s_lam.
Proof Strategy #
The proof derives this from Stembridge's Lemma by setting μ = 0 and ν = 0:
- By Stembridge's Lemma: a_{0+ρ} · s_{λ/0} = ∑{T 0-Yamanouchi} a{0+cont(T)+ρ}
- The only 0-Yamanouchi semistandard tableau of shape λ/0 is the minimalistic tableau T₀ (where each row i contains only i's).
- The content of T₀ equals λ.
- Therefore: a_ρ · s_λ = a_{λ+ρ}
This is equivalent to: a_{λ+ρ} = a_ρ · s_λ.
Zelevinsky's generalized Littlewood-Richardson rule (thm.sf.lr-zy):
For N-partitions lam, mu, nu: s_nu · s_{lam/mu} = ∑{T nu-Yamanouchi of shape lam/mu} s{nu + cont(T)}
This expresses the product of a Schur polynomial with a skew Schur polynomial as a sum of Schur polynomials. Setting mu = 0 gives the classical Littlewood-Richardson rule for products of two Schur polynomials.
Note: For each nu-Yamanouchi tableau T, the tuple nu + cont(T) is automatically an N-partition (this follows from the definition of Yamanouchi with j=1).
Proof Strategy (from the textbook) #
The proof derives thm.sf.lr-zy from Stembridge's Lemma (lem.sf.stemb-lem):
Step 1: By Theorem thm.sf.schur-symm (b) applied to ν instead of λ: a_{ν+ρ} = a_ρ · s_ν
Step 2: By Stembridge's Lemma (lem.sf.stemb-lem): a_{ν+ρ} · s_{λ/μ} = ∑{T ν-Yamanouchi} a{ν+cont(T)+ρ}
Step 3: For each ν-Yamanouchi tableau T, ν+cont(T) is an N-partition (by the j=1 case of the Yamanouchi condition), so by thm.sf.schur-symm (b): a_{ν+cont(T)+ρ} = a_ρ · s_{ν+cont(T)}
Step 4: Substituting Steps 1 and 3 into Step 2: a_ρ · s_ν · s_{λ/μ} = a_ρ · ∑{T ν-Yamanouchi} s{ν+cont(T)}
Step 5: Since a_ρ is regular (lem.sf.arho-reg), we can cancel it (using lem.cring.reg.cancel) to obtain: s_ν · s_{λ/μ} = ∑{T ν-Yamanouchi} s{ν+cont(T)}
This completes the proof.
Examples #
The Littlewood-Richardson coefficients #
The coefficients c(nu, lam, omega) appearing in the expansion s_nu · s_lam = ∑_omega c(nu, lam, omega) · s_omega are called the Littlewood-Richardson coefficients. They have deep connections to representation theory: they are the multiplicities in the tensor product decomposition V_nu ⊗ V_lam ≅ ⊕_omega V_omega^{c(nu,lam,omega)} of irreducible polynomial representations of GL_N(ℂ).
The Littlewood-Richardson coefficient c(nu, lam, omega) counts the number of nu-Yamanouchi semistandard tableaux T of shape lam/0 such that nu + cont(T) = omega.
This is a finite count since there are finitely many semistandard tableaux of any shape.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The product s_nu · s_lam expands as ∑_omega c(nu, lam, omega) · s_omega.
This is a corollary of the Littlewood-Richardson rule with mu = 0.