Documentation

TauCeti.RingTheory.MvPolynomial.Symmetric.Schur.Basic

Schur polynomials #

The Schur polynomial s_μ of a Young diagram μ in N variables is the generating function of the semistandard Young tableaux of shape μ whose entries are drawn from the N-letter alphabet: each such tableau contributes the monomial ∏ᵢ xᵢ ^ (number of cells filled with i). This file defines it, TauCeti.diagramSchurPoly, reads off the basic structure that the definition alone gives, and transports it to the partition-indexed Schur polynomial TauCeti.schurPoly in an arbitrary finite alphabet.

The tableaux summed over are the bounded ones, TauCeti.BoundedSSYT: Mathlib's SemistandardYoungTableau μ fills cells with arbitrary natural numbers, and it is the bound that makes the sum finite. The alphabet is 0, 1, …, N - 1 rather than the classical 1, …, N, matching SemistandardYoungTableau.content.

The load-bearing statement is TauCeti.coeff_diagramSchurPoly: the coefficient of a monomial x^d in s_μ is the image in the coefficient semiring of the Kostka number K_{μ d}, the number of semistandard tableaux of shape μ and content d. Every other result here is read off it together with the Kostka theory of TauCeti.Combinatorics.Young.Kostka:

An arbitrary finite alphabet σ is ordered by Fintype.equivFin σ, and TauCeti.schurPoly σ R μ is TauCeti.diagramSchurPoly renamed along that ordering. The result does not depend on the ordering, but that is the symmetry of s_μ, which is not proved here: it is the Bender-Knuth involution, and it lives downstream in TauCeti.RingTheory.MvPolynomial.Symmetric.Schur.Symmetric. None of the results below need it.

Main definitions #

Main results #

References #

noncomputable def TauCeti.BoundedSSYT.weight {N : ℕ} {μ : YoungDiagram} (T : BoundedSSYT N μ) :

The weight of a bounded tableau: its content, read as an exponent vector indexed by the alphabet Fin N. This is the exponent of the monomial the tableau contributes to TauCeti.diagramSchurPoly.

Equations
Instances For
    @[simp]
    theorem TauCeti.BoundedSSYT.weight_apply {N : ℕ} {μ : YoungDiagram} (T : BoundedSSYT N μ) (i : Fin N) :
    T.weight i = (↑T).content ↑i

    Extending the weight of a bounded tableau by zero recovers its content: no letter outside the alphabet occurs.

    theorem TauCeti.BoundedSSYT.sum_weight {N : ℕ} {μ : YoungDiagram} (T : BoundedSSYT N μ) :
    ∑ i : Fin N, T.weight i = μ.card

    The sum of the weight of a bounded tableau of shape μ is the number of cells of μ: every cell carries exactly one letter.

    The number of bounded tableaux of a given weight is a Kostka number.

    noncomputable def TauCeti.diagramSchurPoly (N : ℕ) (R : Type u_1) [CommSemiring R] (μ : YoungDiagram) :

    The Schur polynomial s_μ of a Young diagram μ in the N variables x₀, …, x_{N-1}: the generating function of the semistandard Young tableaux of shape μ in the alphabet {0, …, N - 1}, each contributing the monomial ∏ᵢ xᵢ ^ (number of cells filled with i).

    Equations
    Instances For

      The defining sum of a Schur polynomial, one weight monomial per bounded tableau of the shape. TauCeti.diagramSchurPoly is public, but its body is not exposed — this file's public section carries no @[expose] — so no equation lemma for it reaches a downstream module; this restatement is what such a module rewrites with.

      The coefficients of a Schur polynomial are the Kostka numbers: the coefficient of x^d in s_μ is the image in R of the number of semistandard tableaux of shape μ whose content is d.

      theorem TauCeti.eval_diagramSchurPoly {N : ℕ} {R : Type u_1} [CommSemiring R] {μ : YoungDiagram} (y : Fin N → R) :
      (MvPolynomial.eval y) (diagramSchurPoly N R μ) = ∑ T : BoundedSSYT N μ, ∏ i : Fin N, y i ^ T.weight i

      A Schur polynomial is the generating function of its tableaux, in the literal sense: at any family of values it is the sum, over the bounded tableaux of its shape, of the product of the values raised to the multiplicities of the corresponding letters.

      @[simp]

      A Schur polynomial evaluated at one counts bounded semistandard tableaux. Every monomial in the tableau generating function contributes one, so the value is the cardinality of TauCeti.BoundedSSYT N μ.

      theorem TauCeti.map_diagramSchurPoly {N : ℕ} {R : Type u_1} [CommSemiring R] {μ : YoungDiagram} {S : Type u_2} [CommSemiring S] (f : R →+* S) :

      Scalars pass through a Schur polynomial: every coefficient is the cast of a natural number, namely of a Kostka number, and casts of natural numbers are preserved by semiring homomorphisms.

      A Schur polynomial of a shape taller than its alphabet vanishes, there being no tableau to sum over.

      @[simp]

      The Schur polynomial of the empty shape is 1, the empty tableau contributing the empty monomial.

      noncomputable def TauCeti.rowLenWeight (N : ℕ) (μ : YoungDiagram) :

      The exponent vector on the alphabet Fin N recording the row lengths of μ: the content of the highest-weight tableau of shape μ, and the exponent of the monomial it contributes to TauCeti.diagramSchurPoly.

      Equations
      Instances For
        @[simp]
        theorem TauCeti.rowLenWeight_apply (N : ℕ) (μ : YoungDiagram) (i : Fin N) :
        (rowLenWeight N μ) i = μ.rowLen ↑i

        Extending the row lengths of a shape no taller than the alphabet by zero recovers them.

        The coefficient of a Schur polynomial at the row lengths of its shape is 1: the highest-weight tableau, whose i-th row consists of is, is the unique tableau of shape μ whose content is the row lengths of μ.

        theorem TauCeti.diagramSchurPoly_ne_zero {N : ℕ} {R : Type u_1} [CommSemiring R] {μ : YoungDiagram} [Nontrivial R] (h : μ.colLen 0 ≤ N) :

        A Schur polynomial of a shape no taller than its alphabet is nonzero.

        A Schur polynomial vanishes exactly for a shape taller than its alphabet.

        Triangularity of the Schur polynomials: an exponent whose partial sums overshoot those of the row lengths of μ does not occur in s_μ. For partitions this is the vanishing of s_μ outside the dominance order, TauCeti.kostkaNumber_eq_zero_of_not_dominates.

        A Schur polynomial is homogeneous of degree the number of cells of its shape: a tableau of shape μ has one entry per cell.

        The total degree of a nonzero Schur polynomial is the number of cells of its shape.

        theorem TauCeti.coeff_diagramSchurPoly_diagramOf {N : ℕ} {R : Type u_1} [CommSemiring R] {n : ℕ} (μ ν : n.Partition) (h : (diagramOf ν).colLen 0 ≤ N) :

        The coefficients of a Schur polynomial are the Kostka numbers of partitions: the coefficient of s_μ at the exponent recording the parts of ν is the image in R of K_{μν}. The row bound is what makes the exponent record all of ν: an alphabet shorter than the number of parts of ν would truncate it.

        The Schur polynomials are triangular for the dominance order: the exponent recording the parts of ν occurs in s_μ only if μ dominates ν. No row bound is needed: an alphabet too short to record all of ν truncates the exponent to one of degree less than n, where s_μ vanishes by homogeneity.

        noncomputable def TauCeti.schurPoly (σ : Type u_3) [Fintype σ] (R : Type u_4) [CommSemiring R] {n : ℕ} (μ : n.Partition) :

        The Schur polynomial s_μ of a partition μ in the finite alphabet σ: the Schur polynomial TauCeti.diagramSchurPoly of the Young diagram of μ in the alphabet Fin (Fintype.card σ), renamed along the ordering Fintype.equivFin σ of σ. The ordering does not matter, s_μ being symmetric (TauCeti.schurPoly_isSymmetric, proved downstream).

        Equations
        Instances For

          The Schur polynomial of a partition is the Schur polynomial of its Young diagram, renamed along the chosen ordering of the alphabet. As for TauCeti.diagramSchurPoly_eq_sum, the body of TauCeti.schurPoly is not exposed outside this module, so this restatement is what a downstream module rewrites with.

          @[simp]
          theorem TauCeti.eval_one_schurPoly_eq_card_boundedSSYT {R : Type u_1} [CommSemiring R] {σ : Type u_2} [Fintype σ] {n : ℕ} (μ : n.Partition) :
          (MvPolynomial.eval fun (x : σ) => 1) (schurPoly σ R μ) = ↑(Nat.card (BoundedSSYT (Fintype.card σ) (diagramOf μ)))

          A Schur polynomial evaluated at one counts bounded semistandard tableaux: the value of s_μ at the all-ones point of the alphabet σ is the number of semistandard tableaux of shape μ with entries below the number of letters of σ.

          noncomputable def TauCeti.partWeight (σ : Type u_3) [Fintype σ] {n : ℕ} (ν : n.Partition) :

          The exponent vector on the alphabet σ recording the parts of ν, read through the ordering Fintype.equivFin σ: the image of TauCeti.rowLenWeight of the Young diagram of ν.

          Equations
          Instances For
            @[simp]
            theorem TauCeti.partWeight_apply {σ : Type u_2} [Fintype σ] {n : ℕ} (ν : n.Partition) (x : σ) :
            (partWeight σ ν) x = (diagramOf ν).rowLen ↑((Fintype.equivFin σ) x)

            The coefficients of a Schur polynomial in a finite alphabet are the Kostka numbers: at the exponent obtained from d by the ordering of the alphabet, the coefficient of s_μ is the image in R of the Kostka number of μ and the content that d extends to by zero.

            theorem TauCeti.coeff_schurPoly {R : Type u_1} [CommSemiring R] {σ : Type u_2} [Fintype σ] {n : ℕ} (μ : n.Partition) (d : σ →₀ ℕ) :
            (schurPoly σ R μ).coeff d = ↑(diagramKostkaNumber (diagramOf μ) ⇑(Finsupp.mapDomain (fun (x : σ) => ↑((Fintype.equivFin σ) x)) d))

            The coefficients of a Schur polynomial in a finite alphabet are the Kostka numbers: the coefficient of s_μ at an arbitrary exponent d is the image in R of the Kostka number of μ and the content obtained from d by numbering the alphabet with Fintype.equivFin.

            theorem TauCeti.coeff_schurPoly_partWeight {R : Type u_1} [CommSemiring R] {σ : Type u_2} [Fintype σ] {n : ℕ} (μ ν : n.Partition) (h : (diagramOf ν).colLen 0 ≤ Fintype.card σ) :
            (schurPoly σ R μ).coeff (partWeight σ ν) = ↑(kostkaNumber μ ν)

            The coefficient of a Schur polynomial at a partition is a Kostka number: the coefficient of s_μ at the exponent recording the parts of ν is the image in R of K_{μν}. The row bound is what makes the exponent record all of ν: an alphabet with fewer letters than ν has parts would truncate the record.

            theorem TauCeti.coeff_schurPoly_partWeight_eq_zero_of_not_dominates {R : Type u_1} [CommSemiring R] {σ : Type u_2} [Fintype σ] {n : ℕ} (μ ν : n.Partition) (hd : ¬Dominates μ ν) :
            (schurPoly σ R μ).coeff (partWeight σ ν) = 0

            Schur polynomials are triangular for dominance: the exponent recording the parts of ν occurs in s_μ only if μ dominates ν. No row bound needed: an alphabet too short to record all of ν truncates the exponent to degree less than n, where s_μ vanishes by homogeneity.

            theorem TauCeti.map_schurPoly {R : Type u_1} [CommSemiring R] {σ : Type u_2} [Fintype σ] {n : ℕ} (μ : n.Partition) {S : Type u_3} [CommSemiring S] (f : R →+* S) :
            (MvPolynomial.map f) (schurPoly σ R μ) = schurPoly σ S μ

            Scalars pass through a Schur polynomial: every coefficient is the cast of a natural number, namely of a Kostka number, and casts of natural numbers are preserved by semiring homomorphisms.

            @[simp]
            theorem TauCeti.schurPoly_partition_zero {R : Type u_1} [CommSemiring R] {σ : Type u_2} [Fintype σ] (p : Nat.Partition 0) :
            schurPoly σ R p = 1

            The Schur polynomial of the partition of 0 is 1, its Young diagram being empty and the empty tableau contributing the empty monomial.

            theorem TauCeti.schurPoly_eq_zero_iff {R : Type u_1} [CommSemiring R] {σ : Type u_2} [Fintype σ] {n : ℕ} (μ : n.Partition) [Nontrivial R] :

            A Schur polynomial vanishes exactly for a partition with more parts than the alphabet has letters.

            theorem TauCeti.isHomogeneous_schurPoly {R : Type u_1} [CommSemiring R] {σ : Type u_2} [Fintype σ] {n : ℕ} (μ : n.Partition) :

            A Schur polynomial is homogeneous of degree the natural number its partition partitions: a tableau of that shape has one entry per cell.