theorem
Hex.Perm.Cycle.prod_apply
{n : ℕ}
(p : Perm n)
(cs : List (Array (Fin n)))
(hv : ∀ c ∈ cs, Valid p c)
(hd : (List.flatMap Array.toList cs).Nodup)
(x : Fin n)
:
A product of disjoint recorded cycles acts as the permutation on their union and fixes every point outside that union.
theorem
Hex.Perm.cycles_disjoint
{n : ℕ}
(p : Perm n)
:
List.Pairwise Equiv.Perm.Disjoint (List.map (fun (c : Array (Fin n)) => c.toList.formPerm) p.cycles.toList)
Mathlib omits fixed points from its cycle type. Its entries are precisely the lengths of the nontrivial cycles returned by the executable traversal.