@@ -275,6 +275,27 @@ theorem isParkingWord_sortChains_iff {n : ℕ} (L : List (List (Fin n)))
275275 IsParkingWord (sortChains L w) ↔ IsParkingWord w :=
276276 isParkingWord_iff_of_multiset_eq (map_sortChains_univ L hL w)
277277
278+ /-- The Diaconis--Hicks value action followed by sorting along a chain family. -/
279+ def cyclicSortChains {n : ℕ} (L : List (List (Fin n))) (c : Fin (n + 1 ))
280+ (w : Fin n → Fin (n + 1 )) : Fin n → Fin (n + 1 ) :=
281+ sortChains L (cyclicValueShift c w)
282+
283+ /-- Chain sorting does not affect whether a cyclic value shift is a parking word. -/
284+ theorem isParkingWord_cyclicSortChains_iff {n : ℕ} (L : List (List (Fin n)))
285+ (hL : ∀ l ∈ L, l.Nodup) (c : Fin (n + 1 ))
286+ (w : Fin n → Fin (n + 1 )) :
287+ IsParkingWord (cyclicSortChains L c w) ↔ IsParkingWord (cyclicValueShift c w) := by
288+ exact isParkingWord_sortChains_iff L hL _
289+
290+ /-- Every cyclic-shift-and-sort orbit has a unique parking-word representative. -/
291+ theorem existsUnique_isParkingWord_cyclicSortChains {n : ℕ} (L : List (List (Fin n)))
292+ (hL : ∀ l ∈ L, l.Nodup) (w : Fin n → Fin (n + 1 )) :
293+ ∃! c : Fin (n + 1 ), IsParkingWord (cyclicSortChains L c w) := by
294+ obtain ⟨c, hc, hunique⟩ := existsUnique_isParkingWord_cyclicValueShift w
295+ refine ⟨c, (isParkingWord_cyclicSortChains_iff L hL c w).mpr hc, ?_⟩
296+ intro c' hc'
297+ exact hunique c' ((isParkingWord_cyclicSortChains_iff L hL c' w).mp hc')
298+
278299@[simp]
279300theorem cyclicValueShift_apply {n : ℕ} (c : Fin (n + 1 ))
280301 (w : Fin n → Fin (n + 1 )) (i : Fin n) :
@@ -397,6 +418,15 @@ theorem existsUnique_cyclicValueShift_mem_embeddedParkingFunctions {n : ℕ}
397418 simpa only [mem_embeddedParkingFunctions_iff_isParkingWord] using
398419 (existsUnique_isParkingWord_cyclicValueShift w)
399420
421+ /-- Sorting along duplicate-free chains preserves the unique cyclic parking
422+ representative in the embedded finite family. -/
423+ theorem existsUnique_cyclicSortChains_mem_embeddedParkingFunctions {n : ℕ}
424+ (L : List (List (Fin (n + 1 )))) (hL : ∀ l ∈ L, l.Nodup)
425+ (w : Fin (n + 1 ) → Fin (n + 2 )) :
426+ ∃! c : Fin (n + 2 ), cyclicSortChains L c w ∈ embeddedParkingFunctions n := by
427+ simpa only [mem_embeddedParkingFunctions_iff_isParkingWord] using
428+ (existsUnique_isParkingWord_cyclicSortChains L hL w)
429+
400430/-- The parking descent polynomial is the descent-generating polynomial of its
401431embedded finite word family. -/
402432theorem parkingDescentPolynomial_succ_eq_descentGeneratingPolynomial_embedded
0 commit comments