A partition of all declared points. Each point is labelled by the least point in its block; block order is therefore not additional structure.
Instances For
@[instance_reducible]
def
Hex.PermGroup.Partition.label
{n : Nat}
{α : Type u}
[DecidableEq α]
(values : Vector α n)
(x : Fin n)
:
Fin n
Find the least occurrence of the input label at a point.
Equations
- Hex.PermGroup.Partition.label values x = Fin.cast ⋯ (Hex.PermGroup.Action.Domain.index values[↑x] ⋯)
Instances For
theorem
Hex.PermGroup.Partition.label_le
{n : Nat}
{α : Type u}
[DecidableEq α]
(values : Vector α n)
(x : Fin n)
:
Canonicalize arbitrary block labels without enumerating any partitions.
Equations
- Hex.PermGroup.Partition.ofValues values = { labels := Hex.Vector.ofFn' (Hex.PermGroup.Partition.label values), least := ⋯, idem := ⋯ }
Instances For
Canonical labels must name their own block's least member. This rejects noncanonical arrays rather than treating arbitrary numeric labels as canonical.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Move the points of every block, then assign the new least-member labels. The blocks themselves form an unordered family.
Equations
- Hex.PermGroup.Partition.permute s p = Hex.PermGroup.Partition.ofValues (Hex.Vector.ofFn' fun (x : Fin n) => p.labels[↑(s.inv.get x)])
Instances For
Equations
- Hex.PermGroup.Action.partitions G = { act := fun (p : Hex.PermGroup.Element G) (x : Hex.PermGroup.Partition n) => Hex.PermGroup.Partition.permute p.val x, id_act := ⋯, comp_act := ⋯ }