def
Hex.PermGroup.Action.Domain.generators
{n : Nat}
{G : Group n}
{α : Type u}
[DecidableEq α]
{a : Action G α}
{objects : Array α}
(h : a.Domain objects)
:
Images of the original generators, in their original order.
Equations
- h.generators = (Hex.Vector.ofFn' fun (i : Fin G.generators.size) => h.perm ⟨G.generators[↑i], ⋯⟩).toArray
Instances For
@[simp]
theorem
Hex.PermGroup.Action.Domain.generators_size
{n : Nat}
{G : Group n}
{α : Type u}
[DecidableEq α]
{a : Action G α}
{objects : Array α}
(h : a.Domain objects)
:
theorem
Hex.PermGroup.Action.Domain.generated_iff
{n : Nat}
{G : Group n}
{α : Type u}
[DecidableEq α]
{a : Action G α}
{objects : Array α}
(h : a.Domain objects)
(q : Perm objects.size)
:
The generated image is exactly the image of all original group elements; no faithfulness assumption is needed.
structure
Hex.PermGroup.Action.Image
{n : Nat}
{G : Group n}
{α : Type u}
[DecidableEq α]
(a : Action G α)
(objects : Array α)
:
A checked image group, tied to the supplied domain enumeration and retaining the order of the original generators for preimage certificates.
- domain : a.Domain objects
Instances For
def
Hex.PermGroup.Action.Image.map
{n : Nat}
{G : Group n}
{α : Type u}
[DecidableEq α]
{a : Action G α}
{objects : Array α}
(image : a.Image objects)
(p : Element G)
:
The permutation induced by an original group element belongs to the image.
Instances For
@[simp]
theorem
Hex.PermGroup.Action.Image.map_id
{n : Nat}
{G : Group n}
{α : Type u}
[DecidableEq α]
{a : Action G α}
{objects : Array α}
(image : a.Image objects)
:
def
Hex.PermGroup.Action.Image.source
{n : Nat}
{G : Group n}
{α : Type u}
[DecidableEq α]
{a : Action G α}
{objects : Array α}
(image : a.Image objects)
(i : Fin image.group.generators.size)
:
The source generator associated with an image generator.
Instances For
def
Hex.PermGroup.Action.Image.preimageWord
{n : Nat}
{G : Group n}
{α : Type u}
[DecidableEq α]
{a : Action G α}
{objects : Array α}
(image : a.Image objects)
(i : Fin image.group.generators.size)
:
Equations
- image.preimageWord i = { nodes := #[Hex.PermGroup.Node.generator ↑(image.source i)], root := 0 }
Instances For
theorem
Hex.PermGroup.Action.Image.check_preimage
{n : Nat}
{G : Group n}
{α : Type u}
[DecidableEq α]
{a : Action G α}
{objects : Array α}
(image : a.Image objects)
(i : Fin image.group.generators.size)
:
- sizeLimit (limit : SizeLimit) : ImageError
- invalidDomain : ImageError
Instances For
@[instance_reducible]
Equations
- Hex.PermGroup.Action.instDecidableEqImageError.decEq (Hex.PermGroup.Action.ImageError.sizeLimit a) (Hex.PermGroup.Action.ImageError.sizeLimit b) = if h : a = b then h ▸ isTrue ⋯ else isFalse ⋯
- Hex.PermGroup.Action.instDecidableEqImageError.decEq (Hex.PermGroup.Action.ImageError.sizeLimit limit) Hex.PermGroup.Action.ImageError.invalidDomain = isFalse ⋯
- Hex.PermGroup.Action.instDecidableEqImageError.decEq Hex.PermGroup.Action.ImageError.invalidDomain (Hex.PermGroup.Action.ImageError.sizeLimit limit) = isFalse ⋯
- Hex.PermGroup.Action.instDecidableEqImageError.decEq Hex.PermGroup.Action.ImageError.invalidDomain Hex.PermGroup.Action.ImageError.invalidDomain = isTrue ⋯
Instances For
@[instance_reducible]
Equations
Equations
- One or more equations did not get rendered due to their size.
Instances For
def
Hex.PermGroup.Action.actionImage
{n : Nat}
{G : Group n}
{α : Type u}
[DecidableEq α]
(a : Action G α)
(cap : Nat)
(objects : Array α)
:
Except ImageError (a.Image objects)
Check the explicit allocation bound and signed generator closure before constructing index permutations or an image chain. The empty domain is valid.
Equations
- One or more equations did not get rendered due to their size.
Instances For
theorem
Hex.PermGroup.Action.actionImage_sizeLimit
{n : Nat}
{G : Group n}
{α : Type u}
[DecidableEq α]
(a : Action G α)
(cap : Nat)
(objects : Array α)
(h : cap < objects.size)
:
a.actionImage cap objects = Except.error (ImageError.sizeLimit { required := objects.size, capacity := cap })