Documentation

HexGraphIso.Nauty.Sparse.ReachSweep

theorem Hex.GraphIso.Nauty.Sparse.reach_advance {n k : Nat} (G : Sparse.Colored n k) (hn : 0 < n) {fuel cfuel : Nat} {next : Generic.SweepFn (State n) n} (hnext : (reachContract G).sweepValid fuel cfuel next) (first : Bool) (level numcells tc tv1 tv index : Nat) (cell : VSet n) (st out : State n) (exit : Generic.Exit) (hl : 1 ≤ level) (h : Ready G level numcells st) (htarget : Generic.Target State.frame level tc cell st) (hx : FrameOut G level level st out) :
FrameOut G level level st (Generic.advance (n + 2) next first level numcells tc tv1 tv cell index out exit).snd.snd

Recovery and both target filters preserve the parent frame before the next surviving sibling. Filters need only be subsets for this reachability rule.

theorem Hex.GraphIso.Nauty.Sparse.reach_sweep {n k : Nat} (G : Sparse.Colored n k) (hn : 0 < n) {fuel cfuel : Nat} {descend : Generic.NodeFn (State n)} {next : Generic.SweepFn (State n) n} (hdescend : (reachContract G).nodeValid fuel descend) (hnext : (reachContract G).sweepValid fuel cfuel next) (first : Bool) (level numcells tc tv1 tv index : Nat) (cell : VSet n) (st : State n) (hl : 1 ≤ level) (h : Ready G level numcells st) (htarget : Generic.Target State.frame level tc cell st) (htv : cell.mem tv = true) :
FrameOut G level level st (Generic.sweepStep (n + 2) descend next first level numcells tc tv1 tv cell index st).snd.snd

The executed sparse sweep individualizes only a member of its current target cell and composes every recursive return with its caller's frame.