Documentation

HexGraphIso.Nauty.Invariant.OrbitComplete

Every parent pointer lies below its vertex.

Equations
Instances For
    def Hex.GraphIso.Nauty.Orbit.Stable {α : Sort u} (o : Array Nat) (n : Nat) (f : Natα) :

    A function constant along all parent pointers.

    Equations
    Instances For

      All parent pointers already point to roots.

      Equations
      Instances For
        theorem Hex.GraphIso.Nauty.Orbit.Descending.ofSound {n : Nat} {R : NatNatProp} {o : Array Nat} (h : OrbSound R o n) :
        theorem Hex.GraphIso.Nauty.Orbit.Descending.sound {n : Nat} {o : Array Nat} (h : Descending o n) :
        OrbSound (fun (x x_1 : Nat) => True) o n
        theorem Hex.GraphIso.Nauty.Orbit.Descending.set {n : Nat} {o : Array Nat} (h : Descending o n) {p q : Nat} (hq : q < n) (hp : p q) :
        Descending (o.set! q p) n
        theorem Hex.GraphIso.Nauty.Orbit.Stable.of_set_root {n : Nat} {α : Sort u} {o : Array Nat} {f : Natα} {q p : Nat} (hroot : o[q]! = q) (h : Stable (o.set! q p) n f) :
        Stable o n f

        Joining two roots preserves every previous parent equation.

        theorem Hex.GraphIso.Nauty.Orbit.Stable.of_compress {n : Nat} {α : Sort u} {o : Array Nat} {f : Natα} (hd : Descending o n) {q : Nat} (hq : q < n) (h : Stable (o.set! q o[o[q]!]!) n f) :
        Stable o n f

        Replacing a parent by its parent preserves the original equations.

        theorem Hex.GraphIso.Nauty.Orbit.flat_orbjoin {n : Nat} {o map : Array Nat} (hd : Descending o n) (hm : ∀ (i : Nat), i < nmap[i]! < n) :
        Flat (orbjoin o map n).fst n

        After joining and compressing, every stored representative is a root.

        theorem Hex.GraphIso.Nauty.Orbit.stable_orbjoin {n : Nat} {α : Sort u} {o map : Array Nat} {f : Natα} (hd : Descending o n) (hm : ∀ (i : Nat), i < nmap[i]! < n) (h : Stable (orbjoin o map n).fst n f) :
        Stable o n f ∀ (i : Nat), i < nf map[i]! = f i

        Any function constant on the final orbit cells is constant on every old cell and on every edge introduced by this join.

        theorem Hex.GraphIso.Nauty.Orbit.Descending.orbjoin {n : Nat} {o map : Array Nat} (hd : Descending o n) (hm : ∀ (i : Nat), i < nmap[i]! < n) :
        theorem Hex.GraphIso.Nauty.Orbit.flat_fold {n : Nat} (maps : List (Array Nat)) :
        (∀ (γ : Array Nat), γ maps∀ (i : Nat), i < nγ[i]! < n)∀ (o : Array Nat), Descending o nFlat o nFlat (List.foldl (fun (o γ : Array Nat) => (orbjoin o γ n).fst) o maps) n

        Repeated joins preserve the property that entries are roots.

        theorem Hex.GraphIso.Nauty.Orbit.stable_fold {n : Nat} {α : Sort u} {f : Natα} (maps : List (Array Nat)) :
        (∀ (γ : Array Nat), γ maps∀ (i : Nat), i < nγ[i]! < n)∀ (o : Array Nat), Descending o nStable (List.foldl (fun (o γ : Array Nat) => (orbjoin o γ n).fst) o maps) n fStable o n f ∀ (γ : Array Nat), γ maps∀ (i : Nat), i < nf γ[i]! = f i

        A function constant on the final cells respects every generator edge.