theorem
Hex.PermGroup.Search.Transporter.contains_iff
{n : Nat}
{H : Group n}
{target : Perm n}
{points : List (Fin n)}
(t : Transporter H target points)
(q : Perm n)
:
The maintained coset contains exactly the permutations extending the assigned images, including all simultaneous constraints.
def
Hex.PermGroup.Search.Transporter.empty
{n : Nat}
(H : Group n)
(target : Perm n)
:
Transporter H target []
Equations
- Hex.PermGroup.Search.Transporter.empty H target = { rep := Hex.PermGroup.Element.id H, agrees := ⋯, group := H, stabilizer := ⋯ }
Instances For
def
Hex.PermGroup.Search.Transporter.extend
{n : Nat}
{H : Group n}
{target : Perm n}
{points : List (Fin n)}
(t : Transporter H target points)
(x : Fin n)
(k : Element t.group)
(hk : k.val.get x = t.rep.val.inv.get (target.get x))
:
Transporter H target (x :: points)
Extend one point using a transporter in the current full point stabilizer, then replace that stabilizer by its stabilizer of the new source point.
Equations
Instances For
inductive
Hex.PermGroup.Search.TransportResult
{n : Nat}
(H : Group n)
(target : Perm n)
(points : List (Fin n))
:
Failure of simultaneous extension is justified by a failed orbit test, not by a bound on the amount of search performed.
- found {n : Nat} {H : Group n} {target : Perm n} {points : List (Fin n)} (transporter : Transporter H target points) : TransportResult H target points
- impossible {n : Nat} {H : Group n} {target : Perm n} {points : List (Fin n)} (proof : ¬∃ (q : Element H), ∀ (x : Fin n), x ∈ points → q.val.get x = target.get x) : TransportResult H target points
Instances For
def
Hex.PermGroup.Search.TransportResult.failed
{n : Nat}
{H : Group n}
{target : Perm n}
{points : List (Fin n)}
:
TransportResult H target points → Bool
Equations
- (Hex.PermGroup.Search.TransportResult.found transporter).failed = false
- (Hex.PermGroup.Search.TransportResult.impossible proof).failed = true
Instances For
def
Hex.PermGroup.Search.transport
{n : Nat}
(H : Group n)
(target : Perm n)
(points : List (Fin n))
:
TransportResult H target points
Build a transporter coset by successive point stabilizers. Points are processed from the list's end, so callers storing prefixes in reverse order extend them in natural source-point order.
Equations
- One or more equations did not get rendered due to their size.
- Hex.PermGroup.Search.transport H target [] = Hex.PermGroup.Search.TransportResult.found (Hex.PermGroup.Search.Transporter.empty H target)