Equivalence Between SSYT Definitions #
This file establishes the equivalence between the two definitions of semistandard Young tableaux (SSYT) in this project:
SchurBasics.SSYT: Uses
entry : Fin N × ℕ → Fin Nwith a support condition that entries outside the Young diagram are 0. This representation is more flexible for proofs involving cell coordinates.SymmetricFunctions.SSYT: Uses dependent types
entries : (i : Fin N) → (j : Fin (lam.parts i)) → Fin N. This representation is more type-safe but harder to work with for some proofs.
Main Results #
npartitionEquiv: An equivalence between the two NPartition typesssytEquiv: An equivalence between the two SSYT typestoSchurBasicsSSYT: Convert from SymmetricFunctions.SSYT to SchurBasics.SSYTtoSFSSYT: Convert from SchurBasics.SSYT to SymmetricFunctions.SSYTschur_eq_schurPoly_int: Equivalence of Schur polynomial definitionsschurPoly_eq_schur: Corollary for composing theorems from different files
Implementation Notes #
The two definitions also use different NPartition types (with fields monotone
vs weaklyDecreasing), so we also provide conversions between these.
The SkewSSYT definitions have a similar relationship and are also addressed here.
Schur Polynomial Equivalence #
The project has three Schur polynomial definitions:
SchurBasics.schurPoly: TakesNPartition Nwith[NeZero N], coefficient ringℤSymmetricFunctions.schur: TakesSymmetricFunctions.NPartition N, generic ringRAlgebraicCombinatorics.schurPoly: TakesFin N → ℕwithIsNPartition, generic ringR
This file provides equivalence theorems between the first two definitions.
The third definition (in LittlewoodRichardson.lean) is related via the IsNPartition
predicate, which is equivalent to the bundled NPartition types.
Design Rationale #
Both SSYT definitions are retained in their original files. This file provides the equivalence infrastructure for code that needs both representations.
The two representations serve different purposes:
SchurBasics.SSYT: Better for proofs using cell coordinates, extendsYoungTableauSymmetricFunctions.SSYT: Better for type-safe code, no[NeZero N]requirement
NPartition Types #
This file bridges between the two NPartition types in this project:
NPartition N(shared, from NPartition.lean) - usesantitonefieldSymmetricFunctions.NPartition N(local, from PieriJacobiTrudi.lean) - usesweaklyDecreasingfield
Both equivalences are provided for API convenience:
SSYTEquiv.npartitionEquiv: shared → localSymmetricFunctions.NPartition.equivShared: local → shared
Tags #
semistandard Young tableau, SSYT, equivalence, Young diagram, Schur polynomial
NPartition Conversions #
The two files use different NPartition types with different field names:
NPartition N(shared, from NPartition.lean) - usesantitonefield (withmonotonealias theorem for compatibility)SymmetricFunctions.NPartition N(local, from PieriJacobiTrudi.lean) - usesweaklyDecreasingfield
We provide conversions between them. These conversions are trivial (just renaming fields).
Note: PieriJacobiTrudi.lean also provides NPartition.equivShared which
is the inverse of npartitionEquiv defined here. Both are retained for API convenience:
npartitionEquiv: shared → localNPartition.equivShared: local → shared
Convert from SchurBasics.NPartition to SymmetricFunctions.NPartition.
Note: SchurBasics.lean now uses the shared NPartition from NPartition.lean,
which has antitone as its field name (with monotone as an alias theorem).
Equations
- SSYTEquiv.schurBasicsNPartition_to_SF lam = { parts := lam.parts, weaklyDecreasing := ⋯ }
Instances For
Convert from SymmetricFunctions.NPartition to SchurBasics.NPartition.
Note: SchurBasics.lean now uses the shared NPartition from NPartition.lean,
which has antitone as its field name.
Equations
- SSYTEquiv.sfNPartition_to_SchurBasics lam = { parts := lam.parts, antitone := ⋯ }
Instances For
The conversions are inverses (direction 1).
The conversions are inverses (direction 2).
The parts are preserved by conversion.
The NPartition types are equivalent. This is the symmetric of
SymmetricFunctions.NPartition.equivShared from PieriJacobiTrudi.lean.
See npartitionEquiv_eq_equivShared_symm for the relationship.
Equations
- SSYTEquiv.npartitionEquiv = { toFun := SSYTEquiv.schurBasicsNPartition_to_SF, invFun := SSYTEquiv.sfNPartition_to_SchurBasics, left_inv := ⋯, right_inv := ⋯ }
Instances For
SSYT Conversions #
The main equivalence between the two SSYT definitions.
Helper lemma: column-strict property extends to non-adjacent rows for SF SSYT. If j is in rows i₁ and i₂ with i₁ < i₂, then T.entries i₁ j < T.entries i₂ j.
Convert from SymmetricFunctions.SSYT to SchurBasics.SSYT.
The key insight is that the dependent type (j : Fin (lam.parts i)) in the SF
definition corresponds to cells (i, j) where j < lam.parts i, which is exactly
the membership condition for the Young diagram in SchurBasics.
Equations
Instances For
Convert from SchurBasics.SSYT to SymmetricFunctions.SSYT.
This requires extracting the entries at valid positions from the total function.
Equations
Instances For
Two SSYTs in the SymmetricFunctions namespace are equal if their entries are equal.
The conversions are inverses (direction 1).
The conversions are inverses (direction 2).
The equivalence between the two SSYT types.
Equations
- SSYTEquiv.ssytEquiv lam = { toFun := SSYTEquiv.toSchurBasicsSSYT, invFun := SSYTEquiv.toSFSSYT, left_inv := ⋯, right_inv := ⋯ }
Instances For
Skew SSYT Conversions #
Similar conversions for skew semistandard Young tableaux.
Convert a SymmetricFunctions.SkewPartition to a SchurBasics-style skew partition (as a pair of NPartitions).
Equations
Instances For
The outer partition contains the inner partition after conversion.
Convert from SymmetricFunctions.SkewSSYT to SchurBasics.SkewSSYT.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Schur Polynomial Equivalences #
The following theorems establish that the different Schur polynomial definitions are equivalent.
Summary of definitions:
SchurBasics.schurPoly: TakesNPartition Nwith[NeZero N], coefficient ringℤSymmetricFunctions.schur: TakesSymmetricFunctions.NPartition N, generic coefficient ringR
The key insight is that both definitions sum over the same mathematical objects (SSYT),
just represented differently. The ssytEquiv equivalence provides the bijection on tableaux,
and we show that monomials are preserved under this bijection.
The monomial associated to a SymmetricFunctions.SSYT equals the monomial of the corresponding SchurBasics.SSYT (as a product over cells).
This is the key lemma for proving Schur polynomial equivalence. The proof shows that the product over cells is preserved by the bijection.
Convert a SymmetricFunctions.SSYT to a Filling for SchurBasics.schurPoly.
Equations
- SSYTEquiv.sfSSYT_to_Filling T c = T.entries (↑c).1 ⟨(↑c).2, ⋯⟩
Instances For
Convert a Filling (satisfying SSYT conditions) to a SymmetricFunctions.SSYT.
Equations
Instances For
The conversion from SF SSYT to Filling satisfies the SSYT condition.
The conversions are inverses (SF SSYT → Filling → SF SSYT).
The conversions are inverses (Filling → SF SSYT → Filling).
The monomial of an SF SSYT equals the monomial of the corresponding Filling.
The Schur polynomial from PieriJacobiTrudi equals the Schur polynomial from SchurBasics when specialized to coefficient ring ℤ.
This theorem establishes that SymmetricFunctions.schur lam (over ℤ) equals
schurPoly (sfNPartition_to_SchurBasics lam).
Note: This theorem requires [NeZero N] because schurPoly requires it.
For the generic ring version, see schur_eq_schurPoly_map.
Corollary: The two Schur polynomial definitions are equal up to NPartition conversion.
This is the main user-facing theorem for composing results from different files.