Symmetric functions and skew Young tableaux
DefinitionThe omega homomorphism on symmetric polynomials#✓fully proved
Let \(R\) be a commutative ring and let \(V\) be a finite set with \(n\) elements. A polynomial in \(R[x_v : v \in V]\) is symmetric if it is unchanged by every permutation of the variables. For \(k \ge 0\), the elementary symmetric polynomial \(e_k\) is the sum of \(\prod_{v \in T} x_v\) over all \(k\)-element subsets \(T \subseteq V\), and the complete homogeneous symmetric polynomial \(h_k\) is the sum of \(\prod_{v \in M} x_v\) over all multisets \(M\) of size \(k\) with elements from \(V\), each element counted with its multiplicity. Every symmetric polynomial \(f\) equals \(P(e_1, \dots, e_n)\) for exactly one polynomial \(P \in R[y_1, \dots, y_n]\). The omega homomorphism \(\omega\) is the \(R\)-algebra homomorphism from the symmetric polynomials in \(R[x_v : v \in V]\) to themselves given by \(\omega(P(e_1, \dots, e_n)) = P(h_1, \dots, h_n)\); equivalently, it is the unique \(R\)-algebra homomorphism with \(\omega(e_k) = h_k\) for \(1 \le k \le n\).
noncomputable def MvPolynomial.omegaAlgHom (σ R : Type*)
[CommRing R] [Fintype σ] [DecidableEq σ] :
MvPolynomial.symmetricSubalgebra σ R →ₐ[R]
MvPolynomial.symmetricSubalgebra σ R :=
(MvPolynomial.aeval fun i : Fin (Fintype.card σ) =>
(⟨MvPolynomial.hsymm σ R (i + 1),
(MvPolynomial.mem_symmetricSubalgebra _).2
(MvPolynomial.hsymm_isSymmetric σ R _)⟩ :
MvPolynomial.symmetricSubalgebra σ R)).comp
(MvPolynomial.esymmAlgEquiv σ R rfl).symm.toAlgHom
DefinitionExponential specialization#✓fully proved
Let \(\mathbb{Q}[[x_1, x_2, \dots]]\) be the ring of formal power series in the variables \(x_1, x_2, \dots\) with rational coefficients: its elements are the formal sums \(f = \sum_\alpha c_\alpha x^\alpha\), where \(\alpha = (\alpha_1, \alpha_2, \dots)\) runs over the sequences of nonnegative integers with only finitely many nonzero terms, \(c_\alpha \in \mathbb{Q}\) and \(x^\alpha = x_1^{\alpha_1} x_2^{\alpha_2} \cdots\). For \(m \ge 0\), write \([x_1 \cdots x_m] f\) for the coefficient in \(f\) of the monomial \(x_1 x_2 \cdots x_m\); for \(m = 0\) this is the constant term of \(f\). The exponential specialization of \(f\) is the formal power series in one variable \(t\)
noncomputable def _root_.MvPowerSeries.exponentialSpecialization
(f : MvPowerSeries ℕ ℚ) : PowerSeries ℚ :=
PowerSeries.mk fun m => (Nat.factorial m : ℚ)⁻¹ *
MvPowerSeries.coeff
(∑ i ∈ Finset.range m, Finsupp.single i 1) f
DefinitionScalar product of symmetric polynomials#✓fully proved
Let \(n \ge 0\), let \(R\) be a commutative ring, and call a polynomial in \(R[x_1, \dots, x_n]\) symmetric if it is unchanged by every permutation of the variables. Let \(a_\delta = \prod_{1 \le i < j \le n} (x_i - x_j)\), so that \(a_\delta = 1\) when \(n \le 1\). For a sequence \(\lambda = (\lambda_1, \dots, \lambda_n)\) of integers with \(\lambda_1 \ge \lambda_2 \ge \dots \ge \lambda_n \ge 0\), write \(c_\lambda(P)\) for the coefficient in a polynomial \(P\) of the monomial \(x^{\lambda+\delta} = \prod_{i=1}^{n} x_i^{\lambda_i + n - i}\); when \(n = 0\) the only such sequence is the empty one and \(x^{\lambda+\delta} = 1\). The scalar product of symmetric polynomials \(f\) and \(g\) in \(R[x_1, \dots, x_n]\) is
the sum taken over all sequences \(\lambda\) as above; only finitely many terms are nonzero.
noncomputable def symmetricScalarProduct {n : ℕ} {R : Type*}
[CommRing R]
(f g : MvPolynomial.symmetricSubalgebra (Fin n) R) : R :=
let a : MvPolynomial (Fin n) R :=
∏ i, ∏ j ∈ Finset.Ioi i,
(MvPolynomial.X i - MvPolynomial.X j)
∑ β ∈ (a * (f : MvPolynomial (Fin n) R)).support.filter
(fun β => ∀ i j : Fin n, i < j → β j < β i),
(a * f).coeff β * (a * g).coeff β
StructureSkew shape#✓fully proved
A partition is a finite weakly decreasing sequence \(\lambda = (\lambda_1 \ge \lambda_2 \ge \dots \ge \lambda_m)\) of positive integers, possibly empty (\(m = 0\)); set \(\lambda_k = 0\) for \(k > m\). Its diagram is the set \(D(\lambda) = \{(i, j) \in \mathbb{Z}_{\ge 1} \times \mathbb{Z}_{\ge 1} : j \le \lambda_i\}\) of cells, where the cell \((i, j)\) lies in row \(i\) and column \(j\), and a partition is identified with its diagram. For partitions \(\lambda\) and \(\mu\) write \(\mu \subseteq \lambda\) when \(D(\mu) \subseteq D(\lambda)\). A skew shape \(\lambda/\mu\) is an ordered pair of partitions, an outer partition \(\lambda\) and an inner partition \(\mu\), with \(\mu \subseteq \lambda\).
structure SkewShape where
outer : YoungDiagram
inner : YoungDiagram
inner_le_outer : inner ≤ outer
inner : YoungDiagram
MathlibExt/Combinatorics/SymmetricFunctionsYoungTableaux.lean:191
outer : YoungDiagram
MathlibExt/Combinatorics/SymmetricFunctionsYoungTableaux.lean:190
Used by 2
StructureSemistandard Young tableau of skew shape#✓fully proved
Let \(\lambda/\mu\) be a skew shape, and write \(\lambda_k\) and \(\mu_k\) for the \(k\)-th parts of \(\lambda\) and \(\mu\), with \(\lambda_k = 0\) (\(\mu_k = 0\)) when \(\lambda\) (\(\mu\)) has fewer than \(k\) parts. The cells of \(\lambda/\mu\) are the pairs \((i, j) \in \mathbb{Z}_{\ge 1} \times \mathbb{Z}_{\ge 1}\) with \(\mu_i < j \le \lambda_i\), that is, the cells of \(D(\lambda)\) that are not cells of \(D(\mu)\). A semistandard Young tableau of shape \(\lambda/\mu\) is a function \(T\) assigning a nonnegative integer \(T_{i,j}\) to every pair \((i, j) \in \mathbb{Z}_{\ge 1} \times \mathbb{Z}_{\ge 1}\) such that \(T_{i,j} \ge 1\) for every cell \((i, j)\) of \(\lambda/\mu\); \(T_{i,j} \le T_{i,j'}\) whenever \((i, j)\) and \((i, j')\) are cells of \(\lambda/\mu\) with \(j < j'\) (rows weakly increase); \(T_{i,j} < T_{i',j}\) whenever \((i, j)\) and \((i', j)\) are cells of \(\lambda/\mu\) with \(i < i'\) (columns strictly increase); and \(T_{i,j} = 0\) for every pair \((i, j)\) that is not a cell of \(\lambda/\mu\).
structure SkewSemistandardYoungTableau (s : SkewShape) where
entry : ℕ → ℕ → ℕ
pos : ∀ {i j : ℕ}, (i, j) ∈ s.outer → (i, j) ∉ s.inner →
0 < entry i j
row_weak : ∀ {i j1 j2 : ℕ}, j1 < j2 →
(i, j1) ∈ s.outer → (i, j1) ∉ s.inner →
(i, j2) ∈ s.outer → (i, j2) ∉ s.inner →
entry i j1 ≤ entry i j2
col_strict : ∀ {i1 i2 j : ℕ}, i1 < i2 →
(i1, j) ∈ s.outer → (i1, j) ∉ s.inner →
(i2, j) ∈ s.outer → (i2, j) ∉ s.inner →
entry i1 j < entry i2 j
zeros : ∀ {i j : ℕ}, ¬ ((i, j) ∈ s.outer ∧ (i, j) ∉ s.inner) →
entry i j = 0
structure SkewShape where
outer : YoungDiagram
inner : YoungDiagram
inner_le_outer : inner ≤ outer
MathlibExt/Combinatorics/SymmetricFunctionsYoungTableaux.lean:189
entry : ℕ → ℕ → ℕ
MathlibExt/Combinatorics/SymmetricFunctionsYoungTableaux.lean:230
Uses 1 · Used by 1
StructureStandard Young tableau of skew shape#✓fully proved
Let \(\lambda/\mu\) be a skew shape, let \(n\) be the number of cells of \(\lambda/\mu\) (the cells of \(D(\lambda)\) that are not cells of \(D(\mu)\)), and write \([n] = \{1, \dots, n\}\), so that \([0] = \emptyset\). A standard Young tableau of shape \(\lambda/\mu\) is a semistandard Young tableau \(T\) of shape \(\lambda/\mu\) such that the map \((i, j) \mapsto T_{i,j}\) sends the cells of \(\lambda/\mu\) bijectively onto \([n]\). If \(\mu = \emptyset\), a standard Young tableau of shape \(\lambda/\emptyset\) is also called a standard Young tableau of shape \(\lambda\).
structure SkewStandardYoungTableau (s : SkewShape) extends
SkewSemistandardYoungTableau s where
bijOn : Set.BijOn (fun c : ℕ × ℕ => entry c.1 c.2)
↑(s.outer.cells \ s.inner.cells)
(Set.Icc 1 (s.outer.cells \ s.inner.cells).card)
structure SkewShape where
outer : YoungDiagram
inner : YoungDiagram
inner_le_outer : inner ≤ outer
MathlibExt/Combinatorics/SymmetricFunctionsYoungTableaux.lean:189
structure SkewSemistandardYoungTableau (s : SkewShape) where
entry : ℕ → ℕ → ℕ
pos : ∀ {i j : ℕ}, (i, j) ∈ s.outer → (i, j) ∉ s.inner →
0 < entry i j
row_weak : ∀ {i j1 j2 : ℕ}, j1 < j2 →
(i, j1) ∈ s.outer → (i, j1) ∉ s.inner →
(i, j2) ∈ s.outer → (i, j2) ∉ s.inner →
entry i j1 ≤ entry i j2
col_strict : ∀ {i1 i2 j : ℕ}, i1 < i2 →
(i1, j) ∈ s.outer → (i1, j) ∉ s.inner →
(i2, j) ∈ s.outer → (i2, j) ∉ s.inner →
entry i1 j < entry i2 j
⋯
MathlibExt/Combinatorics/SymmetricFunctionsYoungTableaux.lean:229
Uses 2
Loading dependency explorer…
The dependency explorer needs JavaScript and its graph data.