Executable full cycle types #
This file gives an executable decomposition of a permutation of a finite linearly ordered type.
For a point i, Equiv.Perm.cycleLenOf σ i counts the points in its cycle. A point is the
canonical representative of its cycle when it is the least point in that cycle, and
Equiv.Perm.computedCycleType σ lists cycleLenOf σ i over those representatives.
The main theorem Equiv.Perm.computedCycleType_eq_fullCycleType identifies this finite search
with Equiv.Perm.fullCycleType, the canonical full cycle partition. Thus computations use only
decidable finite predicates, while mathematical statements can continue to use the canonical
partition API.
Main definitions #
Equiv.Perm.cycleLenOf: the length of the cycle containing a point, computed as the size of its orbitFinset.orbitFinset {σ} i.Equiv.Perm.IsCycleMin: the predicate that a point is the least point of its cycle.Equiv.Perm.computedCycleType: the multiset of cycle lengths at the cycle minima.
Main result #
Equiv.Perm.computedCycleType_eq_fullCycleType: the computed and canonical full cycle types agree.
References #
- S. K. Lando and A. K. Zvonkin, Graphs on Surfaces and Their Applications, §1.5.
A point lies in the computed orbit Finset.orbitFinset {σ} i exactly when it lies in the
cycle of σ containing i.
The length of the cycle of σ containing i, computed as the size of the orbit of i
under σ.
Equations
- σ.cycleLenOf i = ({σ}.orbitFinset i).card
Instances For
The computed cycle length is positive.
Points in the same cycle have the same computed cycle length.
The executable cycle length agrees with the abstract minimal period of the point.
The cycle of a point has length one exactly when the point is fixed.
The least point in the cycle of i. This is an executable canonical representative.
Instances For
The least representative of a cycle belongs to that cycle.
The canonical representative is no larger than any point in its cycle.
A point is a cycle minimum when it is no larger than every point in its cycle.
Equations
- σ.IsCycleMin i = ∀ (j : α), σ.SameCycle i j → i ≤ j
Instances For
Equations
- σ.decidableIsCycleMin i = decidable_of_iff (∀ (j : α), σ.SameCycle i j → i ≤ j) ⋯
A point is the least point of its cycle exactly when it is its canonical representative.
Taking the cycle minimum is idempotent.
The canonical representative is a cycle minimum.
The image of the cycle-minimum map is exactly the finset of cycle minima.
The full cycle type computed by listing the length at the least point of every cycle.
Equations
Instances For
The executable cycle decomposition agrees with the canonical full cycle type.