Hasse Walks in Young's Lattice #
This file formalizes Lemma 8.1 from Stanley's Algebraic Combinatorics, which
characterizes when a word w = D^{s_k} U^{r_k} ⋯ D^{s_1} U^{r_1} admits a
Hasse walk from ∅ to a partition λ ⊢ n in Young's lattice.
A step in a Hasse walk: Up (adding a cell) or Down (removing a cell).
Instances For
A Hasse walk of given step-type in Young's lattice.
- diagram : Fin (steps.length + 1) → YoungDiagram
Instances For
Covering changes cardinality by 1 #
theorem
HasseWalks.isLowerSet_insert_minimal
{μ ν : YoungDiagram}
(m : ℕ × ℕ)
(hm_ν : m ∈ ν.cells)
(hm_nμ : m ∉ μ.cells)
(h_below : ∀ c ∈ ν.cells, c.1 ≤ m.1 → c.2 ≤ m.2 → c ≠ m → c ∈ μ.cells)
:
IsLowerSet ↑(Finset.cons m μ.cells hm_nμ)
Covering in Young's lattice changes cardinality by exactly 1.
Expansion lemmas #
Walk card tracking #
Main theorem: Lemma 8.1 #
theorem
HasseWalks.walk_exists_necessity
(w : List (ℕ × ℕ))
(lam : YoungDiagram)
(n : ℕ)
(hn : lam.card = n)
(walk : HasseWalk (expandBlocks w) ⊥ lam)
:
IsValidWord w n
Lemma 8.1 (necessity).
Helpers for sufficiency #
theorem
HasseWalks.exists_covBy_below
{ν : YoungDiagram}
(hν : 0 < ν.card)
:
∃ (μ : YoungDiagram), μ ⋖ ν
theorem
HasseWalks.walk_from_bot_exists
(s : List HStep)
(target : YoungDiagram)
(hcard : ↑target.card = (List.map HStep.toInt s).sum)
(hpartial : ∀ k ≤ s.length, 0 ≤ (List.map HStep.toInt (List.take k s)).sum)
:
For any step list with non-negative partial sums from 0, and any target of the right size, there exists a Hasse walk from ⊥ to target.
theorem
HasseWalks.walk_exists_sufficiency
(w : List (ℕ × ℕ))
(lam : YoungDiagram)
(n : ℕ)
(hn : lam.card = n)
(hvalid : IsValidWord w n)
:
Nonempty (HasseWalk (expandBlocks w) ⊥ lam)
Lemma 8.1 (sufficiency).
theorem
HasseWalks.valid_word_iff_walk_exists
(w : List (ℕ × ℕ))
(lam : YoungDiagram)
(n : ℕ)
(hn : lam.card = n)
:
Lemma 8.1 (Stanley). Walk exists iff word is valid.