Formalization Blueprint for “An Introduction to Algebraic Combinatorics” by Darij Grinberg

6.5 The Pieri Rules and Jacobi–Trudi Identities

6.5.1 Strips and skew partitions

Definition 6.197
#

Let \(\lambda \) and \(\mu \) be two \(N\)-partitions.

(a) We write \(\lambda /\mu \) for the pair \(\left( \mu ,\lambda \right) \). Such a pair is called a skew partition.

(b) We say that \(\lambda /\mu \) is a horizontal strip if we have \(\mu \subseteq \lambda \) and the Young diagram \(Y\left( \lambda /\mu \right) \) has no two boxes lying in the same column.

(c) We say that \(\lambda /\mu \) is a vertical strip if we have \(\mu \subseteq \lambda \) and the Young diagram \(Y\left( \lambda /\mu \right) \) has no two boxes lying in the same row.

Now, let \(n\in \mathbb {N}\).

(d) We say that \(\lambda /\mu \) is a horizontal \(n\)-strip if \(\lambda /\mu \) is a horizontal strip and satisfies \(\left\vert Y\left( \lambda /\mu \right) \right\vert =n\).

(e) We say that \(\lambda /\mu \) is a vertical \(n\)-strip if \(\lambda /\mu \) is a vertical strip and satisfies \(\left\vert Y\left( \lambda /\mu \right) \right\vert =n\).

Proposition 6.198

Let \(\lambda =\left( \lambda _{1},\lambda _{2},\ldots ,\lambda _{N}\right) \) and \(\mu =\left( \mu _{1},\mu _{2},\ldots ,\mu _{N}\right) \) be two \(N\)-partitions.

(a) The skew partition \(\lambda /\mu \) is a horizontal strip if and only if we have

\[ \lambda _{1}\geq \mu _{1}\geq \lambda _{2}\geq \mu _{2}\geq \cdots \geq \lambda _{N}\geq \mu _{N}. \]

(b) The skew partition \(\lambda /\mu \) is a vertical strip if and only if we have

\[ \mu _{i}\leq \lambda _{i}\leq \mu _{i}+1\ \ \ \ \ \ \ \ \ \ \text{for each }i\in \left[ N\right] . \]
Proof

(a) (\(\Rightarrow \)): A horizontal strip satisfies \(\mu _i \geq \lambda _{i+1}\) for all valid \(i\) by definition, and \(\lambda _i \geq \mu _i\) follows from the containment condition \(\mu \subseteq \lambda \). (\(\Leftarrow \)): The interlacing condition \(\mu _i \geq \lambda _{i+1}\) is exactly the horizontal strip condition.

(b) (\(\Rightarrow \)): A vertical strip satisfies \(\lambda _i \leq \mu _i + 1\) by definition, and \(\mu _i \leq \lambda _i\) follows from containment. (\(\Leftarrow \)): The condition \(\lambda _i \leq \mu _i + 1\) is exactly the vertical strip condition.

Strip characterization helpers

Lemma 6.199

The definition of horizontal strip from Definition 6.197 is equivalent to the entry-wise characterization used in the enumeration of strip partitions.

Proof

Immediate from the definitions.

Lemma 6.200

The definition of vertical strip from Definition 6.197 is equivalent to the entry-wise characterization used in the enumeration of strip partitions.

Proof

Immediate from the definitions.

Lemma 6.201

If \(\mu \subseteq \lambda \), \(\lambda /\mu \) is a horizontal \(n\)-strip, and \(\lambda \) satisfies the upper bound constraints, then \(\lambda \) belongs to the finite set of horizontal \(n\)-strip partitions of \(\mu \). This provides a simplified membership criterion bridging the definition of horizontal \(n\)-strip with the finite set of strip partitions.

theorem SymmetricFunctions.mem_horizontalNStripPartitions_of_isHorizontalNStrip {N : } (mu : NPartition N) (n : ) (lam : NPartition N) (hcontained : mu lam) (hstrip : { outer := lam, inner := mu, contained := hcontained }.isHorizontalNStrip n) (hbound : ∀ (i : Fin N), lam.parts i horizontalStripUpperBound mu n i) :
Proof

Combine the horizontal \(n\)-strip hypothesis with the size-difference computation and apply the membership characterization.

Lemma 6.202

If \(\mu \subseteq \lambda \) and \(\lambda /\mu \) is a vertical \(n\)-strip, then \(\lambda \) belongs to the finite set of vertical \(n\)-strip partitions of \(\mu \).

theorem SymmetricFunctions.mem_verticalNStripPartitions_of_isVerticalNStrip {N : } (mu : NPartition N) (n : ) (lam : NPartition N) (hcontained : mu lam) (hstrip : { outer := lam, inner := mu, contained := hcontained }.isVerticalNStrip n) :
Proof

Combine the vertical \(n\)-strip hypothesis with the size-difference computation and apply the membership characterization.

Partition transpose

Definition 6.203
#

The transpose (or conjugate) of an \(N\)-partition \(\lambda \) is the partition \(\lambda ^t\) whose \(i\)-th part equals \(|\{ j : j {\lt} N,\; \lambda _j {\gt} i\} |\), i.e., the number of parts of \(\lambda \) that exceed \(i\). Requires \(N {\gt} 0\); the result is a partition of length \(\lambda _1\).

noncomputable def SymmetricFunctions.NPartition.transpose {N : } (lam : NPartition N) (hN : 0 < N) :
Definition 6.204
#

Two functions \(\lambda : \mathrm{Fin}\, N \to \mathbb {N}\) and \(\lambda ^t : \mathrm{Fin}\, M \to \mathbb {N}\) are transposes of each other if for all \(i {\lt} N\) and \(j {\lt} M\):

\[ \lambda _i {\gt} j \iff \lambda ^t_j {\gt} i. \]

This is the symmetric characterization of the transpose relation between Young diagrams.

def SymmetricFunctions.NPartition.IsTranspose {N M : } (lam : Fin N) (lamt : Fin M) :
Lemma 6.205

If \(\lambda \) and \(\lambda ^t\) are transposes, then there is a bijection between the boxes of the Young diagram of \(\lambda \) (pairs \((i,j)\) with \(j {\lt} \lambda _i\)) and those of \(\lambda ^t\) (pairs \((j,i)\) with \(i {\lt} \lambda ^t_j\)), given by swapping coordinates.

theorem SymmetricFunctions.NPartition.IsTranspose.box_equiv {N M : } {lam : Fin N} {lamt : Fin M} (hlam_mono : ∀ (i j : Fin N), i jlam j lam i) (hlamt_mono : ∀ (i j : Fin M), i jlamt j lamt i) (htranspose : IsTranspose lam lamt) (i : Fin N) (j : Fin M) :
j + 1 lam i i + 1 lamt j
Proof

The bijection maps \((i, j)\) to \((j, i)\). The transpose condition \(\lambda _i {\gt} j \iff \lambda ^t_j {\gt} i\) guarantees that this map is well-defined and bijective.

Lemma 6.206

If \(\lambda \) and \(\lambda ^t\) are transposes, then \(\sum _i \lambda _i = \sum _j \lambda ^t_j\). That is, the total number of boxes is preserved by transposition.

theorem SymmetricFunctions.NPartition.IsTranspose.sum_eq {N M : } {lam : Fin N} {lamt : Fin M} (hlam_mono : ∀ (i j : Fin N), i jlam j lam i) (hlamt_mono : ∀ (i j : Fin M), i jlamt j lamt i) (htranspose : IsTranspose lam lamt) :
i : Fin N, lam i = j : Fin M, lamt j
Proof

Both sums count the cardinality of the respective Young diagram box sets. The bijection from Lemma 6.205 shows these sets have the same cardinality.

6.5.2 Schur and skew Schur polynomials

Definition 6.207
#

The Schur polynomial \(s_\lambda \) is defined as \(s_\lambda = \sum _{T \in \mathrm{SSYT}(\lambda )} x_T\), where the sum is over all semistandard Young tableaux of shape \(\lambda \) with entries in \([N]\).

Lemma 6.208

The Schur polynomial of the zero partition is \(1\): \(s_0 = 1\).

theorem SymmetricFunctions.schur_zero {N : } {R : Type u_1} [CommRing R] :
schur 0 = 1
Proof

The only SSYT of shape \(0\) is the empty tableau, whose monomial is \(1\).

Definition 6.209
#

The skew Schur polynomial \(s_{\lambda /\mu }\) is defined as \(s_{\lambda /\mu } = \sum _{T \in \mathrm{SSYT}(\lambda /\mu )} x_T\), where the sum is over all semistandard Young tableaux of skew shape \(\lambda /\mu \).

Lemma 6.210

For any \(N\)-partition \(\lambda \), the skew Schur polynomial \(s_{\lambda /0}\) equals the Schur polynomial \(s_\lambda \).

theorem SymmetricFunctions.skewSchur_zero_eq_schur {N : } {R : Type u_1} [CommRing R] (lam : Fin N) (hlam : ∀ (i j : Fin N), i jlam j lam i) :
skewSchur { outer := { parts := lam, weaklyDecreasing := hlam }, inner := { parts := fun (x : Fin N) => 0, weaklyDecreasing := }, contained := } = schur { parts := lam, weaklyDecreasing := hlam }
Proof

A skew partition \(\lambda /0\) is just the partition \(\lambda \), so \(\mathrm{SSYT}(\lambda )\) and \(\mathrm{SSYT}(\lambda /0)\) are in natural bijection preserving monomials.

Lemma 6.211

For any \(N\)-partition \(\lambda \), \(s_\lambda = s_{\lambda /0}\).

theorem SymmetricFunctions.schur_eq_skewSchur_zero {N : } {R : Type u_1} [CommRing R] (lam : NPartition N) :
schur lam = skewSchur { outer := lam, inner := 0, contained := }
Proof

This is the reverse direction of Lemma 6.210.

6.5.3 Symmetric polynomials as Schur polynomials

Definition 6.212
#

The row partition \((n, 0, 0, \ldots , 0)\) with \(n\) boxes in the first row. This is the partition corresponding to \(h_n\). Requires \(N {\gt} 0\).

Definition 6.213
#

The column partition \((1, 1, \ldots , 1, 0, \ldots , 0)\) with \(n\) ones (i.e., \(n\) boxes in the first column). This is the partition corresponding to \(e_n\). Requires \(n \leq N\).

Theorem 6.214

For \(N {\gt} 0\), the complete homogeneous symmetric polynomial \(h_n\) equals the Schur polynomial indexed by the row partition:

\[ h_n = s_{(n, 0, \ldots , 0)}. \]
Proof

Both sides are sums of monomials: \(h_n\) sums over multisets of size \(n\) from \(\mathrm{Fin}\, N\), while \(s_{(n,0,\ldots ,0)}\) sums over SSYT of row partition shape. There is a natural bijection identifying a multiset of size \(n\) with the unique SSYT whose only nonempty row (row \(0\)) contains the sorted multiset entries. Weight preservation follows from the fact that both sides compute the product of \(x_j\) over the entries.

Theorem 6.215

For \(n \leq N\), the elementary symmetric polynomial \(e_n\) equals the Schur polynomial indexed by the column partition:

\[ e_n = s_{(1^n, 0^{N-n})}. \]
Proof

Both sides are sums of monomials: \(e_n\) sums over subsets of \(\mathrm{Fin}\, N\) of size \(n\), while \(s_{(1^n,0^{N-n})}\) sums over SSYT of column partition shape (single-column tableaux with \(n\) rows). There is a natural bijection identifying a size-\(n\) subset with the SSYT whose column entries are the sorted elements of the subset. Injectivity, surjectivity, and weight preservation are verified explicitly.

Yamanouchi tableaux infrastructure for Pieri rules

Definition 6.216
#

A skew tableau \(T\) of shape \(\lambda /\mu \) has all entries zero if every cell \((i, j) \in Y(\lambda /\mu )\) satisfies \(T(i, j) = 0\). This is the key property characterizing Yamanouchi tableaux for the row partition \(\nu = (n, 0, \ldots , 0)\).

Theorem 6.217

If \(T\) is a semistandard tableau with all entries equal to \(0\), then \(T\) is \(\nu \)-Yamanouchi for the row partition \(\nu = (n, 0, \ldots , 0)\) for every \(n\).

This is the reverse direction of the Yamanouchi characterization for row partitions: the content at any position \(k {\gt} 0\) vanishes when all entries are \(0\), so \(\nu + \mathrm{cont}_{\geq j}(T)\) is automatically weakly decreasing.

Proof

When all entries are \(0\), the content \(\mathrm{cont}_{\geq j}(T)\) at any position \(k {\gt} 0\) is \(0\) (no cell has entry \(k\)). Therefore \(\nu + \mathrm{cont}_{\geq j}(T) = (n + c_0, 0, \ldots , 0)\) for some \(c_0 \geq 0\), which is weakly decreasing.

Definition 6.218
#

Convert a multiset \(s \in \mathrm{Sym}(\mathrm{Fin}\, N, n)\) to an SSYT of row partition shape \((n, 0, \ldots , 0)\): row \(0\) contains the sorted entries of \(s\), and all other rows are empty.

def SymmetricFunctions.symToRowSSYT {N : } (hN : 0 < N) (n : ) (s : Sym (Fin N) n) :
  • One or more equations did not get rendered due to their size.
Definition 6.219
#

Convert an SSYT of row partition shape \((n, 0, \ldots , 0)\) back to a multiset: extract the entries of row \(0\) (which form a weakly increasing sequence of length \(n\)).

Lemma 6.220

The forward and inverse maps of the multiset–row SSYT bijection are inverses: converting a multiset to a row SSYT and back gives the original multiset.

theorem SymmetricFunctions.rowSSYTToSym_symToRowSSYT {N : } (hN : 0 < N) (n : ) (s : Sym (Fin N) n) :
rowSSYTToSym hN n (symToRowSSYT hN n s) = s
Proof

Sorting a multiset and extracting it gives back the original multiset.

Definition 6.221
#

Convert a subset \(s \subseteq \mathrm{Fin}\, N\) of size \(n\) to an SSYT of column partition shape \((1^n, 0^{N-n})\): column \(0\) contains the sorted elements of \(s\) in strictly increasing order.

def SymmetricFunctions.finsetToColSSYT {N : } (n : ) (hn : n N) (s : Finset (Fin N)) (hs : s.card = n) :
  • One or more equations did not get rendered due to their size.
Lemma 6.222

The column entries of any SSYT of column partition shape are strictly increasing: if \(k_1 {\lt} k_2 {\lt} n\), then \(T(k_1, 0) {\lt} T(k_2, 0)\). This follows from the column-strict condition of semistandard tableaux.

theorem SymmetricFunctions.colSSYTEntry_strictMono {N : } (n : ) (hn : n N) (T : SSYT (NPartition.colPartition N n hn)) (k₁ k₂ : ) (hk₁ : k₁ < n) (hk₂ : k₂ < n) (hlt : k₁ < k₂) :
colSSYTEntry n hn T k₁ hk₁ < colSSYTEntry n hn T k₂ hk₂
Proof

By induction on \(k_2 - k_1\): the consecutive case uses column-strictness of SSYT directly; the general case follows by transitivity.

6.5.4 The Pieri rules

Definition 6.223
#

The finite set of \(N\)-partitions \(\lambda \) such that \(\lambda /\mu \) is a horizontal \(n\)-strip. This is computed by filtering all functions bounded by the horizontal strip constraints for weak decrease, horizontal strip condition, and size difference.

  • One or more equations did not get rendered due to their size.
Definition 6.224
#

The finite set of \(N\)-partitions \(\lambda \) such that \(\lambda /\mu \) is a vertical \(n\)-strip. This is computed by filtering all functions bounded by the vertical strip constraints.

  • One or more equations did not get rendered due to their size.
Lemma 6.225

An \(N\)-partition \(\lambda \) belongs to \(\mathrm{horizontalNStripPartitions}(\mu , n)\) if and only if \(\mu \subseteq \lambda \), \(\lambda /\mu \) is a horizontal strip, and \(|\lambda | - |\mu | = n\).

Proof

Unfold the filter conditions and relate them to the strip definitions.

Lemma 6.226

An \(N\)-partition \(\lambda \) belongs to \(\mathrm{verticalNStripPartitions}(\mu , n)\) if and only if \(\mu \subseteq \lambda \), \(\lambda /\mu \) is a vertical strip, and \(|\lambda | - |\mu | = n\).

Proof

Unfold the filter conditions and relate them to the strip definitions.

Theorem 6.227 Pieri rules

Let \(n\in \mathbb {N}\). Let \(\mu \) be an \(N\)-partition. Then:

(a) We have

\[ h_{n}s_{\mu }=\sum _{\substack{[\lambda , \text , {, , i, s, , a, n, , }, N, \text , {, -, p, a, r, t, i, t, i, o, n, ;, }, \\ , \lambda , /, \mu , \text , {, , i, s, , a, , h, o, r, i, z, o, n, t, a, l, , }, n, \text , {, -, s, t, r, i, p, }]}}s_{\lambda }. \]

(b) We have

\[ e_{n}s_{\mu }=\sum _{\substack{[\lambda , \text , {, , i, s, , a, n, , }, N, \text , {, -, p, a, r, t, i, t, i, o, n, ;, }, \\ , \lambda , /, \mu , \text , {, , i, s, , a, , v, e, r, t, i, c, a, l, , }, n, \text , {, -, s, t, r, i, p, }]}}s_{\lambda }. \]
Proof

(a) The proof follows from the Littlewood–Richardson rule (Theorem 6.196) by specializing to the case where one of the partitions is a single row \((n, 0, 0, \ldots , 0)\).

Alternatively, a direct combinatorial proof uses the RSK row insertion:

  1. Expand \(h_n = \sum _{s \in \mathrm{Sym}(\mathrm{Fin}\, N, n)} \prod _{j \in s} x_j\) and \(s_\mu = \sum _{T \in \mathrm{SSYT}(\mu )} x_T\).

  2. Distribute to get \(h_n \cdot s_\mu = \sum _{s, T} \prod _{j \in s} x_j \cdot x_T\).

  3. Apply the RSK row insertion bijection: \(\{ (s, T) : \mathrm{Sym}(\mathrm{Fin}\, N, n) \times \mathrm{SSYT}(\mu )\} \simeq \bigsqcup _{\lambda /\mu \text{ horiz } n\text{-strip}} \mathrm{SSYT}(\lambda )\). Given a sorted multiset \(s = \{ a_1, \ldots , a_n\} \) and tableau \(T\) of shape \(\mu \), row-insert \(a_1, \ldots , a_n\) into \(T\) to get a tableau \(T'\) of shape \(\lambda \) where \(\lambda /\mu \) is a horizontal \(n\)-strip.

  4. Weight preservation: \(\prod _{j \in s} x_j \cdot x_T = x_{T'}\).

  5. Conclude \(h_n \cdot s_\mu = \sum _\lambda s_\lambda \).

(b) Analogous using RSK column insertion, or via the \(\omega \)-involution.

6.5.5 The Jacobi–Trudi identities

Definition 6.228
#

The extended \(h_n\): \(h_n = 0\) for \(n {\lt} 0\), \(h_0 = 1\). This is needed since the Jacobi–Trudi formula may have negative indices.

Lemma 6.229

There is a canonical equivalence

\[ \mathrm{LatticePath}(a, c) \simeq \mathrm{Sym}(\mathrm{Fin}\, N, (c-a)^+) \]

between lattice paths from \((a, 1)\) to \((c, N)\) and multisets of size \((c - a)^+\) from \(\mathrm{Fin}\, N\). The forward map extracts the multiset of east-step heights; the inverse sorts a multiset into a weakly increasing list.

Proof

Roundtrip properties follow from the fact that sorting a weakly increasing list is the identity, and sorting a multiset then extracting gives back the multiset.

Definition 6.230
#

A non-intersecting path tuple (nipat) from \(\mathbf{A} = (A_1, \ldots , A_N)\) to \(\mathbf{B} = (B_1, \ldots , B_N)\) is an \(N\)-tuple of lattice paths \((p_1, \ldots , p_N)\) where \(p_i\) goes from \((\mu _i - i, 1)\) to \((\lambda _i - i, N)\), subject to a column-strictness condition: for \(i {\lt} j\), if east steps \(k\) (in path \(i\)) and \(k'\) (in path \(j\)) correspond to the same tableau column (\(\mu _i + k = \mu _j + k'\)), then the height of path \(i\) at step \(k\) is strictly less than the height of path \(j\) at step \(k'\).

The weight of a nipat is \(\prod _{i} w(p_i)\).

structure SymmetricFunctions.Nipat {N : } (lam mu : Fin N) (hlam : ∀ (i j : Fin N), i jlam j lam i) (hmu : ∀ (i j : Fin N), i jmu j mu i) (hcontained : ∀ (i : Fin N), mu i lam i) :
  • paths (i : Fin N) : LatticePath ((mu i) - i) ((lam i) - i)

    The tuple of paths, one for each i ∈ [N]

  • colStrictPaths (i j : Fin N) : i < j∀ (k : ) (hk : k < (self.paths i).eastStepHeights.length) (k' : ) (hk' : k' < (self.paths j).eastStepHeights.length), mu i + k = mu j + k'(self.paths i).eastStepHeights[k] < (self.paths j).eastStepHeights[k']

    The paths satisfy column-strictness: for i < j, if east steps k (in path i) and k' (in path j) correspond to the same tableau column (mu i + k = mu j + k'), then the height of path i at step k is strictly less than the height of path j at step k'. This is the key property that makes the nipat-SSYT bijection work.

Theorem 6.231 Observation 1

Let \(a\) and \(c\) be two integers. Then,

\[ \sum _{\substack{[p, \text , {, , i, s, , a, , p, a, t, h, }, \\ , \text , {, f, r, o, m, , }, \left , (, , a, ,, 1, \right , ), , \text , {, , t, o, , }, \left , (, , c, ,, N, \right , ), ]}}w\left( p\right) =h_{c-a}. \]
theorem SymmetricFunctions.pathWeightSum_eq_hsymm {N : } {R : Type u_1} [CommRing R] (a c : ) :
platticePathFinset a c, p.weight = hsymmExt (c - a)
Proof

When \(c - a \geq 0\), the bijection between lattice paths and \(\mathrm{Sym}(\mathrm{Fin}\, N, (c-a))\) (via Lemma 6.229) gives:

\[ \sum _p w(p) = \sum _{s \in \mathrm{Sym}(\mathrm{Fin}\, N, (c-a))} \prod _{j \in s} x_j = h_{c-a}. \]

When \(c - a {\lt} 0\), both sides are \(0\).

Nipat–SSYT bijection infrastructure

Definition 6.232
#

The forward map of the nipat–SSYT bijection: given a nipat \(\mathbf{p} = (p_1, \ldots , p_N)\), construct the skew SSYT \(T(\mathbf{p})\) of shape \(\lambda /\mu \) whose \(i\)-th row contains the east-step heights of path \(p_i\).

Row-weakness follows from the weakly increasing property of each path’s east-step heights. Column-strictness follows from the column-strictness condition of the nipat.

noncomputable def SymmetricFunctions.nipatToSSYT {N : } {lam mu : Fin N} {hlam : ∀ (i j : Fin N), i jlam j lam i} {hmu : ∀ (i j : Fin N), i jmu j mu i} {hcontained : ∀ (i : Fin N), mu i lam i} (np : Nipat lam mu hlam hmu hcontained) :
SkewSSYT { outer := { parts := lam, weaklyDecreasing := hlam }, inner := { parts := mu, weaklyDecreasing := hmu }, contained := }
  • One or more equations did not get rendered due to their size.
Definition 6.233
#

The inverse map of the nipat–SSYT bijection: given a skew SSYT \(T\) of shape \(\lambda /\mu \), construct the nipat \(\mathbf{p}(T)\) whose \(i\)-th path has east-step heights given by row \(i\) of \(T\).

The weakly increasing property of each path follows from row-weakness of \(T\). The column-strictness condition follows from column-strictness of non-adjacent rows in \(T\).

noncomputable def SymmetricFunctions.ssytToNipat {N : } {lam mu : Fin N} {hlam : ∀ (i j : Fin N), i jlam j lam i} {hmu : ∀ (i j : Fin N), i jmu j mu i} {hcontained : ∀ (i : Fin N), mu i lam i} (T : SkewSSYT { outer := { parts := lam, weaklyDecreasing := hlam }, inner := { parts := mu, weaklyDecreasing := hmu }, contained := }) :
Nipat lam mu hlam hmu hcontained
Lemma 6.234

Converting a nipat to a tableau and back gives the original nipat.

theorem SymmetricFunctions.ssytToNipat_nipatToSSYT {N : } {lam mu : Fin N} {hlam : ∀ (i j : Fin N), i jlam j lam i} {hmu : ∀ (i j : Fin N), i jmu j mu i} {hcontained : ∀ (i : Fin N), mu i lam i} (np : Nipat lam mu hlam hmu hcontained) :
Proof

The entries of each row of the constructed tableau are the east-step heights of the original nipat. Converting back produces the same east-step lists.

Lemma 6.235

Converting a tableau to a nipat and back gives the original tableau.

theorem SymmetricFunctions.nipatToSSYT_ssytToNipat {N : } {lam mu : Fin N} {hlam : ∀ (i j : Fin N), i jlam j lam i} {hmu : ∀ (i j : Fin N), i jmu j mu i} {hcontained : ∀ (i : Fin N), mu i lam i} (T : SkewSSYT { outer := { parts := lam, weaklyDecreasing := hlam }, inner := { parts := mu, weaklyDecreasing := hmu }, contained := }) :
Proof

The proof uses entry specification lemmas to show the entries agree pointwise.

Lemma 6.236

The weight of a nipat equals the monomial of the corresponding tableau: \(w(\mathbf{p}) = x_{T(\mathbf{p})}\) for every nipat \(\mathbf{p}\).

theorem SymmetricFunctions.nipatToSSYT_weight {N : } {R : Type u_1} [CommRing R] {lam mu : Fin N} {hlam : ∀ (i j : Fin N), i jlam j lam i} {hmu : ∀ (i j : Fin N), i jmu j mu i} {hcontained : ∀ (i : Fin N), mu i lam i} (np : Nipat lam mu hlam hmu hcontained) :
Proof

The weight of a nipat is \(\prod _i w(p_i)\) and the monomial of the SSYT is \(\prod _i \prod _k x_{T(i,k)}\). Since the \(k\)-th entry of row \(i\) in the tableau equals the \(k\)-th east-step height of path \(p_i\), these are equal.

Lemma 6.237

The forward and inverse maps of the nipat–SSYT bijection form an equivalence of types:

\[ \mathrm{Nipat}(\lambda , \mu ) \simeq \mathrm{SkewSSYT}(\lambda /\mu ). \]
noncomputable def SymmetricFunctions.nipatSSYTEquiv {N : } (lam mu : Fin N) (hlam : ∀ (i j : Fin N), i jlam j lam i) (hmu : ∀ (i j : Fin N), i jmu j mu i) (hcontained : ∀ (i : Fin N), mu i lam i) :
Nipat lam mu hlam hmu hcontained SkewSSYT { outer := { parts := lam, weaklyDecreasing := hlam }, inner := { parts := mu, weaklyDecreasing := hmu }, contained := }
Proof

Combine the two roundtrip lemmas.

Lemma 6.238

The sum of nipat weights equals the sum of SSYT monomials:

\[ \sum _{\mathbf{p} \in \mathrm{Nipat}(\lambda , \mu )} w(\mathbf{p}) = \sum _{T \in \mathrm{SkewSSYT}(\lambda /\mu )} x_T. \]
theorem SymmetricFunctions.nipatWeightSum_eq_ssytSum {N : } {R : Type u_1} [CommRing R] (lam mu : Fin N) (hlam : ∀ (i j : Fin N), i jlam j lam i) (hmu : ∀ (i j : Fin N), i jmu j mu i) (hcontained : ∀ (i : Fin N), mu i lam i) :
np : Nipat lam mu hlam hmu hcontained, np.weight = T : SkewSSYT { outer := { parts := lam, weaklyDecreasing := hlam }, inner := { parts := mu, weaklyDecreasing := hmu }, contained := }, T.toMonomial
Proof

Transport the sum along the equivalence with weight preservation.

Theorem 6.239 Observation 2: Nipat–SSYT bijection

There is a bijection

\[ \{ \text{nipats from } \mathbf{A} \text{ to } \mathbf{B}\} \xrightarrow {\sim } \mathrm{SSYT}(\lambda /\mu ), \qquad \mathbf{p} \mapsto T(\mathbf{p}), \]

where for a nipat \(\mathbf{p} = (p_1, \ldots , p_N)\), the tableau \(T(\mathbf{p})\) has its \(i\)-th row consisting of the heights of the east-steps of \(p_i\).

Moreover, \(w(\mathbf{p}) = x_{T(\mathbf{p})}\) for every nipat \(\mathbf{p}\).

theorem SymmetricFunctions.nipat_ssyt_bijection {N : } {R : Type u_1} [CommRing R] (lam mu : Fin N) (hlam : ∀ (i j : Fin N), i jlam j lam i) (hmu : ∀ (i j : Fin N), i jmu j mu i) (hcontained : ∀ (i : Fin N), mu i lam i) :
∃ (f : Nipat lam mu hlam hmu hcontainedSkewSSYT { outer := { parts := lam, weaklyDecreasing := hlam }, inner := { parts := mu, weaklyDecreasing := hmu }, contained := }), Function.Bijective f ∀ (np : Nipat lam mu hlam hmu hcontained), np.weight = (f np).toMonomial
Proof

The forward map sends a nipat \(\mathbf{p}\) to the tableau \(T(\mathbf{p})\); the inverse extracts the east-step heights from each row of a skew SSYT. The bijectivity is proved via:

  • Injectivity: Lemma 6.234 shows that converting a nipat to a tableau and back gives the original nipat.

  • Surjectivity: Lemma 6.235 shows that converting a tableau to a nipat and back gives the original tableau.

Weight preservation (Lemma 6.236) follows from the fact that the weight of each component path is the product of \(x_j\) over its east-step heights, which are exactly the row entries of the tableau.

Lemma 6.240

The sum of nipat weights equals the skew Schur polynomial:

\[ \sum _{\mathbf{p} \text{ nipat}} w(\mathbf{p}) = s_{\lambda /\mu }. \]
theorem SymmetricFunctions.nipatWeightSum_eq_skewSchur {N : } {R : Type u_1} [CommRing R] (lam mu : Fin N) (hlam : ∀ (i j : Fin N), i jlam j lam i) (hmu : ∀ (i j : Fin N), i jmu j mu i) (hcontained : ∀ (i : Fin N), mu i lam i) :
np : Nipat lam mu hlam hmu hcontained, np.weight = skewSchur { outer := { parts := lam, weaklyDecreasing := hlam }, inner := { parts := mu, weaklyDecreasing := hmu }, contained := }
Proof

Follows from the nipat–SSYT bijection (Theorem 6.239) and the definition of \(s_{\lambda /\mu }\) as a sum over SSYT monomials. The proof uses Lemma 6.238 followed by a bijective reindexing to relate the finset sum to the type sum.

LGV connection for Jacobi–Trudi

Definition 6.241
#

The arc weight function for the Jacobi–Trudi proof on the integer lattice \(\mathbb {Z}^2\): east-steps at height \(y\) (with \(1 \leq y \leq N\)) are weighted by \(x_{y-1}\); north-steps are weighted by \(1\).

Definition 6.242
#

Define two \(N\)-vertices \(\mathbf{A} = (A_1, \ldots , A_N)\) and \(\mathbf{B} = (B_1, \ldots , B_N)\) by

\[ A_i := (\mu _i - i,\; 1) \quad \text{and} \quad B_i := (\lambda _i - i,\; N) \quad \text{for each } i \in [N]. \]
Lemma 6.243

The source \(x\)-coordinates are weakly decreasing: \(\mu _i - i \geq \mu _j - j\) when \(i \leq j\). This follows from the partition being weakly decreasing: \(\mu _i \geq \mu _j\) and \(i \leq j\) imply \(\mu _i - i \geq \mu _j - j\).

theorem SymmetricFunctions.jacobiTrudiSourceX_antitone {N : } (mu : Fin N) (hmu : ∀ (i j : Fin N), i jmu j mu i) (i j : Fin N) :
Proof

Direct computation from the weakly decreasing property of partitions.

Lemma 6.244

The target \(x\)-coordinates are weakly decreasing: \(\lambda _i - i \geq \lambda _j - j\) when \(i \leq j\).

theorem SymmetricFunctions.jacobiTrudiTargetX_antitone {N : } (lam : Fin N) (hlam : ∀ (i j : Fin N), i jlam j lam i) (i j : Fin N) :
Proof

Analogous to Lemma 6.243.

Definition 6.245
#

Convert an LGV path (in the integer lattice digraph) from \((a, 1)\) to \((c, N)\) into a lattice path by extracting the \(y\)-coordinates at which east-steps occur and converting them to \(\mathrm{Fin}\, N\) values (by subtracting \(1\)).

noncomputable def SymmetricFunctions.lgvPathToLatticePath {N : } (a c : ) (p : LGV.integerLattice.Path) (hstart : p.start = (a, 1)) (hfinish : p.finish = (c, N)) :
  • One or more equations did not get rendered due to their size.
Lemma 6.246

The number of east-step \(y\)-coordinates extracted from an LGV path vertex list equals the \(x\)-displacement (final \(x\) minus initial \(x\)). This is a key property for the bijection between LGV paths and lattice paths.

theorem SymmetricFunctions.lgvPathEastStepYCoords_length_eq_xDisplacement (vertices : List ( × )) (h_ne : vertices []) (h_arcs : ∀ (i : ) (hi : i + 1 < vertices.length), LGV.integerLattice.arc (vertices.get i, ) (vertices.get i + 1, hi)) :
(lgvPathEastStepYCoords vertices).length = ((vertices.getLast h_ne).1 - (vertices.head h_ne).1).toNat
Proof

By induction on the vertex list: each east-step increases the count by \(1\) and the \(x\)-coordinate by \(1\); north-steps change neither.

Lemma 6.247

The east-step \(y\)-coordinates extracted from an LGV path are weakly increasing: since paths can only go north or east, \(y\)-coordinates can only increase or stay the same along the path.

theorem SymmetricFunctions.lgvPathEastStepYCoords_weaklyIncreasing (vertices : List ( × )) (h_arcs : ∀ (i : ) (hi : i + 1 < vertices.length), LGV.integerLattice.arc (vertices.get i, ) (vertices.get i + 1, hi)) :
List.IsChain (fun (x1 x2 : ) => x1 x2) (lgvPathEastStepYCoords vertices)
Proof

By induction on the vertex list. For an east-step from \(v_0\) to \(v_1\), the \(y\)-coordinates satisfy \(y(v_0) = y(v_1)\), and the remaining heights are \(\geq y(v_1)\) by the inductive hypothesis and \(y\)-monotonicity.

Lemma 6.248

Each east-step \(y\)-coordinate is bounded between the starting and ending \(y\)-coordinates of the path: if \(y\) is an east-step \(y\)-coordinate of a path from \((a, y_0)\) to \((c, y_1)\), then \(y_0 \leq y \leq y_1\).

theorem SymmetricFunctions.lgvPathEastStepYCoords_bounded (vertices : List ( × )) (h_ne : vertices []) (h_arcs : ∀ (i : ) (hi : i + 1 < vertices.length), LGV.integerLattice.arc (vertices.get i, ) (vertices.get i + 1, hi)) (y : ) (hy : y lgvPathEastStepYCoords vertices) :
(vertices.head h_ne).2 y y (vertices.getLast h_ne).2
Proof

Each east-step \(y\)-coordinate is the \(y\)-coordinate of some vertex of the path. The bound follows from \(y\)-monotonicity along the path.

Theorem 6.249

The LGV path weight sum from \((a, 1)\) to \((c, N)\) using the Jacobi–Trudi arc weight equals \(h_{c-a}\):

\[ \sum _{p : (a,1) \to (c,N)} w_{\mathrm{LGV}}(p) = h_{c-a}. \]

When \(c - a \geq 0\), this is proved via a weight-preserving bijection between LGV paths and our lattice path type, composed with Theorem 6.231. When \(c - a {\lt} 0\), both sides are \(0\).

Proof

For \(c - a \geq 0\): compose the LGV-path-to-lattice-path bijection with the lattice path–multiset equivalence (Lemma 6.229), then apply Theorem 6.231. For \(c - a {\lt} 0\): the set of LGV paths is empty (no path can have decreasing \(x\)-coordinate), and \(h_{c-a} = 0\) by convention.

Lemma 6.250

The LGV arc-weight product of a path equals the lattice path weight of its conversion. This follows from the fact that the arc weight assigns \(x_{y-1}\) to east-steps at height \(y\), which matches the \(\prod x_j\) formula for lattice path weight.

theorem SymmetricFunctions.lgvPathToLatticePath_weight_eq {N : } {R : Type u_1} [CommRing R] (a c : ) (p : LGV.integerLattice.Path) (hstart : p.start = (a, 1)) (hfinish : p.finish = (c, N)) :
Proof

Reduce to showing that the product of \(x_{y-1}\) over east-step \(y\)-coordinates equals the product of \(x_h\) over the converted \(\mathrm{Fin}\, N\) heights.

Lemma 6.251

The conversion from LGV path to lattice path is injective: two LGV paths with the same east-step \(y\)-coordinates have the same vertex sequence. This is because a path in the integer lattice is uniquely determined by its starting point and the sequence of east-step positions.

theorem SymmetricFunctions.lgvPathToLatticePath_injective {N : } (a c : ) (p₁ p₂ : LGV.integerLattice.Path) (hstart₁ : p₁.start = (a, 1)) (hfinish₁ : p₁.finish = (c, N)) (hstart₂ : p₂.start = (a, 1)) (hfinish₂ : p₂.finish = (c, N)) (heq : lgvPathToLatticePath a c p₁ hstart₁ hfinish₁ = lgvPathToLatticePath a c p₂ hstart₂ hfinish₂) :
p₁ = p₂
Proof

Two paths with the same start, end, and east-step \(y\)-coordinates must have identical vertex lists, since at each step the direction (north or east) is determined by the remaining east-step \(y\)-coordinates and the current position.

Lemma 6.252

The Jacobi–Trudi matrix \(H\) equals the transpose of the LGV path weight matrix:

\[ H = M^T \quad \text{where } M_{i,j} = \sum _{p : A_i \to B_j} w(p). \]
Proof

Each entry \(H_{i,j} = h_{\lambda _i - \mu _j - i + j}\) equals the path weight sum from \(A_j\) to \(B_i\) by Theorem 6.249, since the path length is \((\lambda _i - i) - (\mu _j - j) = \lambda _i - \mu _j - i + j\). The transposition accounts for the index swap.

Lemma 6.253

The determinant of the Jacobi–Trudi matrix equals the determinant of the LGV path weight matrix: \(\det (H) = \det (M)\). This follows from \(H = M^T\) and \(\det (M^T) = \det (M)\).

Proof

Apply \(\det (H) = \det (M^T) = \det (M)\) using Lemma 6.252 and the transpose-determinant identity.

Lemma 6.254

The LGV non-intersecting path tuple weight sum (using the LGV non-intersection condition) equals the nipat weight sum (using the column-strictness condition):

\[ \sum _{\mathbf{p} \text{ LGV-nipat}} w(\mathbf{p}) = \sum _{\mathbf{p} \text{ nipat}} w(\mathbf{p}). \]
theorem SymmetricFunctions.lgv_nipatWeightSum_eq_nipatSum {N : } {R : Type u_1} [CommRing R] (lam mu : Fin N) (hlam : ∀ (i j : Fin N), i jlam j lam i) (hmu : ∀ (i j : Fin N), i jmu j mu i) (hcontained : ∀ (i : Fin N), mu i lam i) :
Proof

This requires constructing an explicit weight-preserving bijection between LGV path tuples and nipats. The bijection extracts east-step \(y\)-coordinates from LGV paths and converts them to weakly increasing sequences in \(\mathrm{Fin}\, N\). Non-intersection in the LGV sense corresponds to column-strictness in the nipat sense. Injectivity follows from Lemma 6.251; weight preservation from Lemma 6.250.

Lemma 6.255

If two non-intersecting lattice paths \(p\) and \(p'\) have starting \(y\)-coordinates satisfying \(y_{\mathrm{start}}(p) {\lt} y_{\mathrm{start}}(p')\), and at some column \(x_0\) the path \(p\) is weakly above \(p'\) (in \(y\)-coordinate), then \(p\) stays weakly above \(p'\) at all subsequent columns.

This is the key geometric lemma ensuring that non-intersecting paths with ordered starting positions maintain their relative order.

theorem SymmetricFunctions.paths_above_at_x_stays_above (p p' : LGV.integerLattice.Path) (hni : vp.vertices, vp'.vertices) (x₀ : ) (hx₀_p : ∃ (idx : ) (hidx : idx < p.vertices.length), (p.vertices.get idx, hidx).1 = x₀) (hx₀_p' : ∃ (idx : ) (hidx : idx < p'.vertices.length), (p'.vertices.get idx, hidx).1 = x₀) (h_above : ∀ (idx_p : ) (hidx_p : idx_p < p.vertices.length) (idx_p' : ) (hidx_p' : idx_p' < p'.vertices.length), (p.vertices.get idx_p, hidx_p).1 = x₀(p'.vertices.get idx_p', hidx_p').1 = x₀(p'.vertices.get idx_p', hidx_p').2 > (p.vertices.get idx_p, hidx_p).2) (x₁ : ) (hx₁ : x₁ x₀) (hx₁_p : ∃ (idx : ) (hidx : idx < p.vertices.length), (p.vertices.get idx, hidx).1 = x₁) (hx₁_p' : ∃ (idx : ) (hidx : idx < p'.vertices.length), (p'.vertices.get idx, hidx).1 = x₁) (idx_p : ) (hidx_p : idx_p < p.vertices.length) (idx_p' : ) (hidx_p' : idx_p' < p'.vertices.length) :
(p.vertices.get idx_p, hidx_p).1 = x₁(p'.vertices.get idx_p', hidx_p').1 = x₁(p'.vertices.get idx_p', hidx_p').2 > (p.vertices.get idx_p, hidx_p).2
Proof

By the integer lattice topology: if \(p\) is above \(p'\) at column \(x_0\) but \(p'\) rises above \(p\) at some later column, then by the intermediate value property of lattice paths, the paths must share a vertex, contradicting non-intersection.

Lemma 6.256

The determinant of the Jacobi–Trudi matrix equals the sum of nipat weights:

\[ \det (H) = \sum _{\mathbf{p} \text{ nipat}} w(\mathbf{p}). \]
theorem SymmetricFunctions.det_jacobiTrudiMatrixH_eq_nipatSum {N : } {R : Type u_1} [CommRing R] (lam mu : Fin N) (hlam : ∀ (i j : Fin N), i jlam j lam i) (hmu : ∀ (i j : Fin N), i jmu j mu i) (hcontained : ∀ (i : Fin N), mu i lam i) :
(jacobiTrudiMatrixH lam mu).det = np : Nipat lam mu hlam hmu hcontained, np.weight
Proof

The proof proceeds in steps:

  1. \(\det (H) = \det (M)\) by Lemma 6.253.

  2. Apply the LGV nonpermutable lemma to obtain \(\det (M) = \sum _{\text{LGV-nipats}} w(\mathbf{p})\). The required sorting conditions on \(\mathbf{A}\) and \(\mathbf{B}\) follow from Lemmas 6.243 and 6.244.

  3. Connect LGV non-intersecting path tuples to non-intersecting path tuples (Definition 6.230) via Lemma 6.254.

Theorem 6.257 First Jacobi–Trudi formula

Let \(M\in \mathbb {N}\). Let \(\lambda =\left( \lambda _{1},\lambda _{2},\ldots ,\lambda _{M}\right) \) and \(\mu =\left( \mu _{1},\mu _{2},\ldots ,\mu _{M}\right) \) be two \(M\)-partitions (i.e., weakly decreasing \(M\)-tuples of nonnegative integers). Then,

\[ s_{\lambda /\mu }=\det \left( \left( h_{\lambda _{i}-\mu _{j}-i+j}\right) _{1\leq i\leq M,\ 1\leq j\leq M}\right) . \]
theorem SymmetricFunctions.jacobiTrudi_h {N : } {R : Type u_1} [CommRing R] (lam mu : Fin N) (hlam : ∀ (i j : Fin N), i jlam j lam i) (hmu : ∀ (i j : Fin N), i jmu j mu i) (hcontained : ∀ (i : Fin N), mu i lam i) :
skewSchur { outer := { parts := lam, weaklyDecreasing := hlam }, inner := { parts := mu, weaklyDecreasing := hmu }, contained := } = (jacobiTrudiMatrixH lam mu).det
Proof

The proof combines two key lemmas. Lemma 6.240 yields

\[ s_{\lambda /\mu } = \sum _{\mathbf{p} \text{ nipat}} w(\mathbf{p}), \]

and then Lemma 6.256 gives

\[ \sum _{\mathbf{p} \text{ nipat}} w(\mathbf{p}) = \det \left( \left( h_{\lambda _i - \mu _j - i + j} \right)_{i,j} \right). \]
Theorem 6.258 Second Jacobi–Trudi formula

Let \(\lambda \) and \(\mu \) be two partitions. Let \(\lambda ^{t}\) and \(\mu ^{t}\) be the transposes of \(\lambda \) and \(\mu \). Let \(M\in \mathbb {N}\) be such that both \(\lambda ^{t}\) and \(\mu ^{t}\) have length \(\leq M\). We extend the partitions \(\lambda ^{t}\) and \(\mu ^{t}\) to \(M\)-tuples (by inserting zeroes at the end). Write these \(M\)-tuples \(\lambda ^{t}\) and \(\mu ^{t}\) as \(\lambda ^{t}=\left( \lambda _{1}^{t},\lambda _{2}^{t},\ldots ,\lambda _{M}^{t}\right) \) and \(\mu ^{t}=\left( \mu _{1}^{t},\mu _{2}^{t},\ldots ,\mu _{M}^{t}\right) \). Then,

\[ s_{\lambda /\mu }=\det \left( \left( e_{\lambda _{i}^{t}-\mu _{j}^{t}-i+j}\right) _{1\leq i\leq M,\ 1\leq j\leq M}\right) . \]
Proof

From the first Jacobi–Trudi formula (Theorem 6.257) applied to the transpose partitions \(\lambda ^t\) and \(\mu ^t\): \(s_{\lambda ^t/\mu ^t} = \det (h_{(\lambda ^t)_i - (\mu ^t)_j - i + j})\). Applying the \(\omega \)-involution (\(\omega (h_n) = e_n\), \(\omega (s_{\lambda /\mu }) = s_{\lambda ^t/\mu ^t}\)) and using that \(\omega ^2 = \mathrm{id}\) gives \(s_{\lambda /\mu } = \omega (s_{\lambda ^t/\mu ^t}) = \det (\omega (h_{(\lambda ^t)_i - (\mu ^t)_j - i + j})) = \det (e_{(\lambda ^t)_i - (\mu ^t)_j - i + j})\).

6.5.6 Special cases

Theorem 6.259

For non-skew Schur polynomials (\(\mu = 0\)):

\[ s_\lambda = \det \left( \left( h_{\lambda _i - i + j} \right)_{1 \leq i,j \leq N} \right). \]
theorem SymmetricFunctions.jacobiTrudi_h_nonSkew {N : } {R : Type u_1} [CommRing R] (lam : Fin N) (hlam : ∀ (i j : Fin N), i jlam j lam i) :
schur { parts := lam, weaklyDecreasing := hlam } = (jacobiTrudiMatrixH lam fun (x : Fin N) => 0).det
Proof

Relate \(s_\lambda \) to \(s_{\lambda /0}\) via Lemma 6.211, then apply the general Jacobi–Trudi formula (Theorem 6.257) with \(\mu = 0\).

6.5.7 Symmetry of Schur polynomials via Jacobi–Trudi

Lemma 6.260

The extended complete homogeneous symmetric polynomial \(h_n\) (for any \(n \in \mathbb {Z}\)) is a symmetric polynomial: for any permutation \(\sigma \) of \(\mathrm{Fin}\, N\), we have \(\sigma (h_n) = h_n\). When \(n \geq 0\), this follows from the symmetry of \(h_n\). When \(n {\lt} 0\), \(h_n = 0\) is trivially symmetric.

Proof

By case analysis on \(n\): the non-negative case uses the symmetry of \(h_n\); the negative case is trivial.

Lemma 6.261

If all entries of a matrix \(M\) over \(R[x_1, \ldots , x_N]\) are symmetric polynomials, then \(\det (M)\) is a symmetric polynomial. This is because for any permutation \(\sigma \), \(\sigma (\det (M)) = \det (\sigma (M)) = \det (M)\), where the first equality uses that \(\sigma \) is a ring homomorphism and the second uses that \(\sigma \) fixes each entry.

theorem SymmetricFunctions.det_isSymmetric_of_entries_symmetric {N : } {R : Type u_1} [CommRing R] (M : Matrix (Fin N) (Fin N) (MvPolynomial (Fin N) R)) (h : ∀ (i j : Fin N), (M i j).IsSymmetric) :
Proof

For any permutation \(\sigma \) of \(\mathrm{Fin}\, N\), the renaming by \(\sigma \) commutes with determinant (as a ring homomorphism preserves sums, products, and signs). Since each entry is fixed by the renaming, the determinant is also fixed.

Lemma 6.262

Every entry of the Jacobi–Trudi matrix \(H\) is a symmetric polynomial. This follows from the fact that each entry is \(h_{\lambda _i - \mu _j - i + j}\), which is symmetric by Lemma 6.260.

theorem SymmetricFunctions.jacobiTrudiMatrixH_entries_isSymmetric {N : } {R : Type u_1} [CommRing R] (lam mu : Fin N) (i j : Fin N) :
Proof

Each entry is an extended \(h\)-polynomial, which is symmetric.

Theorem 6.263

The determinant of the Jacobi–Trudi matrix \(\det (H)\) is a symmetric polynomial.

Proof

Apply Lemma 6.261 with the entry symmetry from Lemma 6.262.

Theorem 6.264

Skew Schur polynomials are symmetric: for any partitions \(\lambda \supseteq \mu \), \(s_{\lambda /\mu }\) is a symmetric polynomial.

This provides a proof of symmetry via the Jacobi–Trudi formula, without relying on the Bender–Knuth involution.

theorem SymmetricFunctions.skewSchur_isSymmetric_jacobiTrudi {N : } {R : Type u_1} [CommRing R] (lam mu : Fin N) (hlam : ∀ (i j : Fin N), i jlam j lam i) (hmu : ∀ (i j : Fin N), i jmu j mu i) (hcontained : ∀ (i : Fin N), mu i lam i) :
(skewSchur { outer := { parts := lam, weaklyDecreasing := hlam }, inner := { parts := mu, weaklyDecreasing := hmu }, contained := }).IsSymmetric
Proof

By Theorem 6.257, \(s_{\lambda /\mu } = \det (H)\). By Theorem 6.263, \(\det (H)\) is symmetric.

Theorem 6.265

Schur polynomials are symmetric: for any partition \(\lambda \), \(s_\lambda \) is a symmetric polynomial.

This is a corollary of Theorem 6.264 with \(\mu = 0\).

theorem SymmetricFunctions.schur_isSymmetric_jacobiTrudi {N : } {R : Type u_1} [CommRing R] (lam : Fin N) (hlam : ∀ (i j : Fin N), i jlam j lam i) :
(schur { parts := lam, weaklyDecreasing := hlam }).IsSymmetric
Proof

By Lemma 6.211, \(s_\lambda = s_{\lambda /0}\). Apply Theorem 6.264.

6.5.8 The \(\omega \)-involution

The \(\omega \)-involution is an algebra automorphism of the ring of symmetric functions that swaps the elementary and complete homogeneous symmetric polynomials: \(\omega (e_n) = h_n\) and \(\omega (h_n) = e_n\). It is essential for proving the second Jacobi–Trudi formula from the first.

Definition 6.266
#

The \(R\)-algebra homomorphism from \(R[x_1, \ldots , x_n]\) to the symmetric subalgebra sending \(x_i\) to \(h_{i+1}\). This is the analogous construction to the elementary symmetric algebra homomorphism (which sends \(x_i\) to \(e_{i+1}\)), using complete homogeneous instead of elementary symmetric polynomials.

Definition 6.267
#

The \(\omega \)-involution on the symmetric subalgebra, defined as the composition of the complete homogeneous algebra homomorphism with the inverse of the elementary symmetric algebra equivalence. This maps \(e_k \mapsto h_k\) for \(1 \leq k \leq n\) and extends algebraically to all symmetric polynomials.

Theorem 6.268

The \(\omega \)-involution maps elementary to complete homogeneous: \(\omega (e_{k+1}) = h_{k+1}\) for \(k {\lt} n\).

theorem SymmetricFunctions.omegaInvolution_esymm_succ {σ : Type u_1} [Fintype σ] [DecidableEq σ] {R : Type u_2} [CommRing R] {n : } (hn : Fintype.card σ = n) (k : ) (hk : k < n) :
((omegaInvolution hn) MvPolynomial.esymm σ R (k + 1), ) = MvPolynomial.hsymm σ R (k + 1)
Proof

By definition of \(\omega \): since \(\omega \) is the composition of the \(h\)-algebra homomorphism with the inverse of the \(e\)-algebra equivalence, applying it to \(e_{k+1}\) first sends \(e_{k+1}\) to the generator \(X_k\), then maps \(X_k\) to \(h_{k+1}\).

Theorem 6.269

The symmetric Newton–Girard identity:

\[ \sum _{j=0}^{n} (-1)^j h_j \, e_{n-j} = 0 \quad \text{for } n {\gt} 0. \]

This is the “\(h\)-first” version of the Newton–Girard relations, obtained from the standard “\(e\)-first” version by reindexing \(j \mapsto n - j\) and using commutativity and the sign identity \((-1)^{n-j} \cdot (-1)^n = (-1)^j\).

theorem SymmetricFunctions.newtonGirard_he {σ : Type u_1} [Fintype σ] [DecidableEq σ] {R : Type u_2} [CommRing R] (n : ) (hn : 0 < n) :
jFinset.range (n + 1), (-1) ^ j * MvPolynomial.hsymm σ R j * MvPolynomial.esymm σ R (n - j) = 0
Proof

Reindex the standard Newton–Girard identity \(\sum _j (-1)^j e_j h_{n-j} = 0\) via \(j \mapsto n - j\) to obtain \(\sum _j (-1)^{n-j} h_{n-j} e_j = 0\). Then factor out \((-1)^n\) and use the sign identity \((-1)^{n-j} = (-1)^n \cdot (-1)^j\) (up to rearrangement and \((-1)^{2j} = 1\)).

Lemma 6.270

Recurrence for \(h_n\) from Newton–Girard: for \(n {\gt} 0\),

\[ h_n = \sum _{j=1}^{n} (-1)^{j+1}\, e_j \, h_{n-j}. \]

This follows by isolating the \(j = 0\) term in the Newton–Girard identity \(\sum _{j=0}^n (-1)^j e_j h_{n-j} = 0\) and rearranging.

theorem SymmetricFunctions.hsymm_recurrence_eh {σ : Type u_1} [Fintype σ] [DecidableEq σ] {R : Type u_2} [CommRing R] (n : ) (hn : 0 < n) :
MvPolynomial.hsymm σ R n = jFinset.Ico 1 (n + 1), (-1) ^ (j + 1) * MvPolynomial.esymm σ R j * MvPolynomial.hsymm σ R (n - j)
Proof

From \(\sum _{j=0}^n (-1)^j e_j h_{n-j} = 0\), isolate \(j = 0\): \(h_n + \sum _{j=1}^n (-1)^j e_j h_{n-j} = 0\), hence \(h_n = -\sum _{j=1}^n (-1)^j e_j h_{n-j} = \sum _{j=1}^n (-1)^{j+1} e_j h_{n-j}\).

Lemma 6.271

Recurrence for \(e_n\) from the symmetric Newton–Girard: for \(n {\gt} 0\),

\[ e_n = \sum _{j=1}^{n} (-1)^{j+1}\, h_j \, e_{n-j}. \]

This follows from \(\sum _{j=0}^n (-1)^j h_j e_{n-j} = 0\) (Theorem 6.269) by isolating \(j = 0\).

theorem SymmetricFunctions.esymm_recurrence_he {σ : Type u_1} [Fintype σ] [DecidableEq σ] {R : Type u_2} [CommRing R] (n : ) (hn : 0 < n) :
MvPolynomial.esymm σ R n = jFinset.Ico 1 (n + 1), (-1) ^ (j + 1) * MvPolynomial.hsymm σ R j * MvPolynomial.esymm σ R (n - j)
Proof

Analogous to Lemma 6.270.

Theorem 6.272

The \(\omega \)-involution maps complete homogeneous to elementary: \(\omega (h_{k+1}) = e_{k+1}\) for \(k {\lt} n\).

theorem SymmetricFunctions.omegaInvolution_hsymm_succ {σ : Type u_1} [Fintype σ] [DecidableEq σ] {R : Type u_2} [CommRing R] {n : } (hn : Fintype.card σ = n) (k : ) (hk : k < n) :
((omegaInvolution hn) MvPolynomial.hsymm σ R (k + 1), ) = MvPolynomial.esymm σ R (k + 1)
Proof

By strong induction on \(k\):

  • Base case (\(k = 0\)): \(h_1 = e_1\), so \(\omega (h_1) = \omega (e_1) = h_1 = e_1\).

  • Inductive step: Use the Newton–Girard recurrence (Lemma 6.270) to write \(h_{k+1} = \sum _{j=1}^{k+1} (-1)^{j+1}\, e_j\, h_{k+1-j}\). Apply \(\omega \): by Theorem 6.268, \(\omega (e_j) = h_j\), and by the IH, \(\omega (h_{k+1-j}) = e_{k+1-j}\) for \(k+1-j \leq k\). Hence \(\omega (h_{k+1}) = \sum _{j=1}^{k+1} (-1)^{j+1}\, h_j\, e_{k+1-j}\), which equals \(e_{k+1}\) by the symmetric Newton–Girard recurrence (Lemma 6.271).

Theorem 6.273

The \(\omega \)-involution is an involution: \(\omega \circ \omega = \mathrm{id}\).

Proof

To show \(\omega \circ \omega = \mathrm{id}\), it suffices to check on generators. Every element of the symmetric subalgebra is a polynomial in \(e_1, e_2, \ldots , e_n\) (fundamental theorem of symmetric polynomials). For each generator \(e_k\): \(\omega (\omega (e_k)) = \omega (h_k) = e_k\). Since \(\omega \) is an algebra homomorphism, the identity extends to all elements by linearity and multiplicativity.

Theorem 6.274

The \(\omega \)-involution is bijective.

Proof

Both injectivity and surjectivity follow from \(\omega \circ \omega = \mathrm{id}\) (Theorem 6.273).

Definition 6.275
#

The \(\omega \)-involution promoted to an algebra equivalence \(\omega : \Lambda _R \xrightarrow {\sim } \Lambda _R\).

Lemma 6.276

The \(\omega \)-involution commutes with determinants: for any matrix \(M\) over the symmetric subalgebra, \(\omega (\det (M)) = \det (\omega (M))\), where \(\omega (M)\) applies \(\omega \) entry-wise. This is because \(\omega \) is an algebra homomorphism, and \(\det \) is a polynomial expression in the entries (involving only addition, multiplication, and negation).

theorem SymmetricFunctions.omegaInvolution_det_hsymm {σ : Type u_1} [Fintype σ] [DecidableEq σ] {R : Type u_2} [CommRing R] {n m : } (hn : Fintype.card σ = n) (M : Matrix (Fin m) (Fin m) (MvPolynomial.symmetricSubalgebra σ R)) :
Proof

This follows from the fact that any algebra homomorphism commutes with determinant.