Documentation

HexGraphIso.Nauty.Sparse.ActiveScan

structure Hex.GraphIso.Nauty.Sparse.ActiveScan {n : Nat} (active : VSet n) (queue : Array Nat) (next : Option Nat) :

The initial active scan enumerates distinct members in ascending order; next is the least member not yet in the queue.

Instances For
    theorem Hex.GraphIso.Nauty.Sparse.ActiveScan.step {n i : Nat} {active : VSet n} {queue : Array Nat} {next : Option Nat} (h : ActiveScan active queue next) (hn : next = some i) :
    ActiveScan active (queue.push i) (active.nextElem (some i))
    theorem Hex.GraphIso.Nauty.Sparse.ActiveScan.size_le {n : Nat} {active : VSet n} {queue : Array Nat} {next : Option Nat} (h : ActiveScan active queue next) :
    queue.size ≤ active.card
    theorem Hex.GraphIso.Nauty.Sparse.ActiveScan.exhausted {n : Nat} {active : VSet n} {queue : Array Nat} {next : Option Nat} (h : ActiveScan active queue next) (hs : n ≤ queue.size) :
    next = none

    Consuming n distinct bounded entries leaves no next member.

    theorem Hex.GraphIso.Nauty.Sparse.ActiveScan.complete {n : Nat} {active : VSet n} {queue : Array Nat} {next : Option Nat} (h : ActiveScan active queue next) (hn : next = none) (v : Nat) :
    v ∈ queue.toList ↔ active.mem v = true