Documentation

HexPermGroup.Orbit

structure Hex.PermGroup.Orbit (n : Nat) :

Raw orbit certificate. Shape indices are checked when decoding the arrays; mathematical validity is established independently by checkOrbit.

Instances For
    def Hex.PermGroup.Orbit.Valid {n : Nat} (S : Array (Perm n)) (a : Fin n) (c : Orbit n) :

    Finite checks for both reachability and closure. Closure includes inverse input generators, so the check accepts arbitrary original generator arrays.

    Equations
    • One or more equations did not get rendered due to their size.
    Instances For
      @[instance_reducible]
      instance Hex.PermGroup.Orbit.instDecidableValid {n : Nat} (S : Array (Perm n)) (a : Fin n) (c : Orbit n) :
      Equations
      • One or more equations did not get rendered due to their size.
      theorem Hex.PermGroup.Orbit.Valid.invariant {n : Nat} {S : Array (Perm n)} {a : Fin n} {c : Orbit n} (h : Valid S a c) {p : Perm n} (hp : Generated S p) (x : Fin n) :

      Generator closure implies invariance under every generated permutation.

      theorem Hex.PermGroup.Orbit.Valid.mem_iff {n : Nat} {S : Array (Perm n)} {a : Fin n} {c : Orbit n} (h : Valid S a c) (x : Fin n) :
      x ∈ c.points ↔ ∃ (p : Perm n), Generated S p ∧ p.get a = x

      Reachability and closure together identify the full orbit.

      def Hex.PermGroup.checkOrbit {n : Nat} (S : Array (Perm n)) (a : Fin n) (c : Orbit n) :

      Independently check a complete point orbit and its transporters.

      Equations
      Instances For
        theorem Hex.PermGroup.checkOrbit_sound {n : Nat} {S : Array (Perm n)} {a : Fin n} {c : Orbit n} (h : checkOrbit S a c = true) (x : Fin n) :
        x ∈ c.points ↔ ∃ (p : Perm n), Generated S p ∧ p.get a = x