Documentation

AlgebraicCombinatorics.SymmetricFunctions.MonomialSymmetric

N-partitions and Monomial Symmetric Polynomials #

This file formalizes N-partitions and monomial symmetric polynomials, following Section sec.sf.m of the source.

Main definitions #

Main results #

References #

Implementation notes #

We use Fin N → ℕ to represent N-tuples of nonnegative integers. The ordering on Fin N is the standard one, and "weakly decreasing" means ∀ i j, i ≤ j → μ j ≤ μ i (i.e., antitone with respect to the standard order on Fin N).

Mathlib already has MvPolynomial.msymm for monomial symmetric polynomials indexed by Nat.Partition. Our NPartition provides an alternative indexing that is more natural for the N-variable setting and corresponds directly to the textbook presentation.

N-partitions (Definition def.sf.Npar) #

An N-partition is a weakly decreasing N-tuple of nonnegative integers.

This namespace uses the canonical NPartition definition from NPartition.lean (imported above). All basic lemmas (ext, size, zero, length, etc.) are inherited from the canonical definition via the abbrev below.

@[reducible, inline]

Alias for the canonical NPartition type within this namespace. An N-partition is a weakly decreasing N-tuple of nonnegative integers. (Definition def.sf.Npar)

This is represented as a function Fin N → ℕ that is antitone (i.e., i ≤ j → parts j ≤ parts i).

All basic operations (size, length, zero, etc.) and lemmas are inherited from the canonical _root_.NPartition definition in NPartition.lean.

Equations
Instances For

    Bijection with partitions of length ≤ N (Proposition prop.sf.Npar-as-par) #

    There is a bijection between partitions of length ≤ N and N-partitions.

    The core definitions (ofPartition, toPartition, ofPartition_size, toPartition_card_le) are defined in NPartition.lean and re-exported here for convenience within this namespace.

    @[reducible, inline]

    Convert a partition (as a Nat.Partition) to an N-partition by padding with zeros. Re-export of _root_.NPartition.ofPartition.

    Equations
    Instances For
      @[reducible, inline]

      Convert an N-partition to a partition by removing trailing zeros. Re-export of _root_.NPartition.toPartition.

      Equations
      Instances For

        The size of ofPartition p equals n (the sum of the original partition). Re-export of _root_.NPartition.ofPartition_size.

        The number of non-zero parts of an N-partition is at most N. Re-export of _root_.NPartition.toPartition_card_le.

        Helper lemma: casting a partition preserves its parts.

        The equivalence between partitions of length ≤ N that sum to n and N-partitions of size n. (Proposition prop.sf.Npar-as-par)

        This provides the bijection:

        • Forward: pad partition with zeros to get N-partition
        • Backward: remove trailing zeros from N-partition to get partition

        Note: We state this as an Equiv which is the proper way to express a bijection in Mathlib.

        Equations
        • One or more equations did not get rendered due to their size.
        Instances For

          The bijection between partitions of length ≤ N and N-partitions (Proposition prop.sf.Npar-as-par)

          This is a corollary of equivPartition stating that the map is bijective.

          Monomials and sorting (Definition def.sf.sort) #

          noncomputable def AlgebraicCombinatorics.SymmetricFunctions.monomialExp {R : Type u_1} [CommSemiring R] {N : } (a : Fin N) :

          The monomial x^a = x₁^{a₁} x₂^{a₂} ⋯ x_N^{a_N} for a tuple a ∈ ℕ^N. (Definition def.sf.sort (a))

          Equations
          Instances For

            Sort a tuple in weakly decreasing order to get an N-partition. (Definition def.sf.sort (b))

            Equations
            • One or more equations did not get rendered due to their size.
            Instances For

              API for monomialExp (Definition def.sf.sort (a)) #

              monomialExp equals the Mathlib monomial with the given exponent.

              @[simp]

              Coefficient of the monomial x^a in monomialExp a is 1.

              Coefficient of a different monomial in monomialExp a is 0.

              The total degree of monomialExp a is the sum of entries of a (when nonzero).

              @[simp]

              monomialExp 0 is 1.

              monomialExp is multiplicative in the exponent.

              API for sortTuple (Definition def.sf.sort (b)) #

              The length of the sorted list equals N.

              theorem AlgebraicCombinatorics.SymmetricFunctions.sortTuple_parts_eq {N : } (a : Fin N) (i : Fin N) :
              (sortTuple a).parts i = ((Multiset.map a Finset.univ.val).sort fun (x1 x2 : ) => x1 x2).get i,

              Access to the sorted list entries for valid indices.

              theorem AlgebraicCombinatorics.SymmetricFunctions.sortTuple_sum_eq {N : } (a : Fin N) :
              i : Fin N, (sortTuple a).parts i = i : Fin N, a i

              The sum of entries is preserved by sorting.

              The size of sortTuple a equals the sum of entries of a.

              If a tuple is already antitone (weakly decreasing), sorting doesn't change it.

              Sorting an NPartition's parts returns the same NPartition.

              Sorting is idempotent: sorting an already sorted tuple gives the same tuple.

              Addition of N-partitions #

              The Add (NPartition N) instance and related lemmas (add_size, add_comm, add_zero, zero_add, add_assoc) are provided by the canonical NPartition.lean file.

              The canonical definition uses component-wise addition (without sorting), which is equivalent to sorting the sum for N-partitions since the sum of two antitone functions is antitone. This is witnessed by sortTuple_of_NPartition.

              Two tuples have the same sort if and only if one is a permutation of the other. (Two tuples have the same multiset of values iff they sort to the same N-partition.)

              Helper lemmas for symmetry proof #

              The following lemmas establish that sorting is invariant under permutation of the input, which is the key insight for proving that monomial symmetric polynomials are symmetric.

              Sorting is invariant under permutation of the input tuple. This is the key insight: sortTuple (a ∘ σ) = sortTuple a for any permutation σ, because sorting only depends on the multiset of values, not their order.

              Monomial symmetric polynomials (Definition def.sf.m) #

              The set of tuples a ∈ ℕ^N with sort(a) = μ and entries bounded by μ.size. This is a finite set since entries are bounded.

              Equations
              • One or more equations did not get rendered due to their size.
              Instances For

                The monomial symmetric polynomial m_μ corresponding to an N-partition μ. (Definition def.sf.m)

                m_μ = ∑_{a ∈ ℕ^N : sort(a) = μ} x^a

                This is the sum of all monomials whose exponent tuple sorts to μ.

                Equations
                Instances For

                  The monomial symmetric polynomial is symmetric. (Follows from Definition def.sf.m)

                  The proof uses the fact that:

                  1. rename σ (monomialExp a) = monomialExp (a ∘ σ⁻¹)
                  2. sortTuple (a ∘ σ) = sortTuple a for any permutation σ
                  3. Therefore the sum over sortPreimage μ is invariant under rename σ

                  The parts of an N-partition belong to its sortPreimage. This is because sorting an already sorted (antitone) tuple gives the same tuple.

                  The coefficient of x^{μ.parts} in m_μ is 1. This is because μ.parts is the unique element of sortPreimage μ that equals μ.parts.

                  The coefficient of x^{μ.parts} in m_ν is 0 when μ ≠ ν. This is because the only monomial in m_ν with exponent sorting to ν must have exponent ν.parts (when looking at the sorted exponent), not μ.parts.

                  Elementary, homogeneous, and power sum via monomial symmetric polynomials #

                  (Proposition prop.sf.ehp-through-m)
                  

                  The N-partition (1, 1, ..., 1, 0, 0, ..., 0) with n ones and N-n zeros.

                  Equations
                  Instances For

                    The N-partition (n, 0, 0, ..., 0) with n in the first position and zeros elsewhere.

                    Equations
                    Instances For

                      Helper lemmas for Proposition prop.sf.ehp-through-m #

                      These lemmas express the elementary, complete homogeneous, and power sum symmetric polynomials in terms of products over all variables with appropriate exponents.

                      e_n = m_{(1,1,...,1,0,0,...,0)} where there are n ones. (Proposition prop.sf.ehp-through-m (a))

                      The proof uses the fact that esymm n is the sum over n-element subsets S of ∏_{i∈S} X_i, and each such product equals X^{χ_S} where χ_S is the indicator function of S. All indicator functions of n-element subsets sort to the same N-partition (1,...,1,0,...,0).

                      Label: prop.sf.ehp-through-m.a

                      The set of N-partitions of a given size, as a finite set. This is finite because each entry is bounded by the size.

                      Equations
                      • One or more equations did not get rendered due to their size.
                      Instances For

                        Membership characterization for NPartitionsOfSize: an N-partition is in NPartitionsOfSize n if and only if its size equals n.

                        The set of N-partitions of size n is finite. This provides a Fintype instance for the subtype { μ : NPartition N // μ.size = n }.

                        This is needed for:

                        1. Counting arguments involving N-partitions of fixed size
                        2. Finite sums over N-partitions in the monomial symmetric polynomial basis theorems
                        3. The basis theorem thm.sf.m-basis which requires finiteness of N-partitions of each degree
                        Equations

                        The set of N-partitions of size n is finite (set version). This is the Set.Finite version of fintype_of_size.

                        h_n = ∑_{|μ| = n} m_μ where the sum is over N-partitions of size n. (Proposition prop.sf.ehp-through-m (b))

                        The proof uses the bijection between Sym (Fin N) n and tuples f : Fin N → ℕ with ∑ f = n, given by the count function. Each term (s.1.map X).prod = ∏ i, X i ^ (count i s) corresponds to a monomial X^f. Sorting partitions these tuples by their N-partition, so hsymm n = ∑_{|μ| = n} m_μ.

                        Label: prop.sf.ehp-through-m.b

                        p_n = m_{(n,0,0,...,0)} when N > 0 and n > 0. (Proposition prop.sf.ehp-through-m (c))

                        Important: This theorem requires n > 0. The case n = 0 is FALSE when N > 1:

                        • psum 0 = ∑ i, X i ^ 0 = N (the constant polynomial N)
                        • monomialSymm (singletonPartition 0 hN) = 1 (since the only tuple sorting to (0,...,0) is the zero tuple, and monomialExp (0,...,0) = 1)

                        The TeX source (MonomialSymmetric.tex, line 133) states "For each n ∈ ℕ, we have p_n = m_{(n,0,0,...,0)}" which is mathematically incorrect for n = 0 when N > 1.

                        The proof uses the fact that psum n = ∑ i, X i ^ n, and each term X i ^ n corresponds to the tuple (0,...,0,n,0,...,0) with n at position i. All N such tuples sort to the same N-partition (n, 0, 0, ..., 0).

                        When n > 0, the sortPreimage of (n, 0, ..., 0) consists exactly of the N single tuples (0,...,0,n,0,...,0), giving the bijection needed for the proof.

                        Label: prop.sf.ehp-through-m.c

                        The n = 0 case: p_0 = N while m_{(0,...,0)} = 1.

                        This documents why power_sum_eq_monomialSymm requires n ≠ 0. When n = 0:

                        • psum 0 = ∑ i, X i ^ 0 = N (constant polynomial)
                        • monomialSymm (singletonPartition 0 hN) = 1 (single monomial x^0 = 1)

                        These are equal only when N = 1.

                        Permutation action on polynomial coefficients (Proposition prop.sf.sigma-pol-coeff) #

                        The coefficient of a monomial in σ · f equals the coefficient of the permuted monomial in f. (Proposition prop.sf.sigma-pol-coeff)

                        [x₁^{a₁} x₂^{a₂} ⋯ x_N^{a_N}](σ · f) = [x₁^{a_{σ(1)}} x₂^{a_{σ(2)}} ⋯ x_N^{a_{σ(N)}}] f

                        Label: prop.sf.sigma-pol-coeff

                        Basis theorem for monomial symmetric polynomials (Theorem thm.sf.m-basis) #

                        The monomial symmetric polynomials are linearly independent. (Theorem thm.sf.m-basis (a), linear independence part)

                        Label: thm.sf.m-basis.a.indep

                        Key: coeff is constant on orbits for symmetric polynomials. If f is symmetric and σ is a permutation, then coeff (σ · d) f = coeff d f.

                        For symmetric f, support is closed under permutation.

                        sortTupleFinsupp is invariant under permutation.

                        Coefficients are equal for exponents with the same sort (for symmetric polynomials). This follows from the fact that two tuples with the same sort differ by a permutation, and symmetric polynomials have permutation-invariant coefficients.

                        The proof requires the combinatorial fact that equal sorted multisets implies the existence of a permutation relating the two tuples.

                        The monomial symmetric polynomials span the symmetric polynomials. (Theorem thm.sf.m-basis (a), spanning part)

                        The proof proceeds by:

                        1. Writing f as a sum of monomials grouped by their sort
                        2. For symmetric f, all monomials with the same sort have the same coefficient
                        3. Factoring out the common coefficient from each group
                        4. Showing that the sum of monomials in each group equals monomialSymm μ

                        Label: thm.sf.m-basis.a.span

                        Any symmetric polynomial f can be written as f = ∑_μ ([x₁^{μ₁} x₂^{μ₂} ⋯ x_N^{μ_N}] f) m_μ (Theorem thm.sf.m-basis (b))

                        Label: thm.sf.m-basis.b

                        The submodule of homogeneous symmetric polynomials of degree n. (Theorem thm.sf.m-basis (c))

                        𝒮_n = {homogeneous symmetric polynomials of degree n}

                        Label: thm.sf.m-basis.c

                        Equations
                        Instances For

                          The monomial symmetric polynomial m_μ is homogeneous of degree |μ|.

                          The monomial symmetric polynomials of size n span 𝒮_n. (Theorem thm.sf.m-basis (d), spanning part)

                          Label: thm.sf.m-basis.d.span

                          The monomial symmetric polynomials of size n are linearly independent. (Theorem thm.sf.m-basis (d), linear independence part)

                          This follows from the fact that no two m_μ share any monomials, and each m_μ contains at least one monomial.

                          Label: thm.sf.m-basis.d.indep

                          The monomial symmetric polynomials of size n form a basis of 𝒮_n. (Theorem thm.sf.m-basis (d))

                          This combines linear independence (monomialSymm_homogeneous_linearIndependent) and spanning (monomialSymm_homogeneous_spans).

                          Label: thm.sf.m-basis.d

                          Equations
                          Instances For