Documentation

HexGraphIso.Nauty.Sparse.TargetFrame

theorem Hex.GraphIso.Nauty.Sparse.fresh_target {n : Nat} (G : SparseGraph n) (level tcLevel : Nat) (hint : Int) (st : State n) (hp : st.lab.toList.Perm (List.range n)) (hs : st.ptn.size = n) (hend : st.ptn[n - 1]! ≤ level) (hc : bcount st.ptn level n < n) :
have t := maketargetcell (Graph.ofGraph G) st.lab st.ptn level tcLevel hint; Generic.Target State.frame level t.fst t.snd.fst st

A fresh native target denotes exactly a bounded nontrivial partition cell, with each selected vertex drawn from its current labels.

theorem Hex.GraphIso.Nauty.Sparse.cached_target {n : Nat} (G : SparseGraph n) (level tcLevel : Nat) (hint : Int) (st : State n) (hp : st.lab.toList.Perm (List.range n)) (hs : st.ptn.size = n) (hend : st.ptn[n - 1]! ≤ level) (hc : bcount st.ptn level n < n) (hv : Scratch.Valid n st.lab st.ptn level st.canong.scratch) :
have t := maketargetCached (Graph.ofGraph G) st.lab st.ptn level tcLevel hint st.canong.scratch; Generic.Target State.frame level t.fst t.snd.fst st

The cached target supplies the identical cell-membership contract using the proved fresh/cached dispatch equality and a constructed parsed label.

theorem Hex.GraphIso.Nauty.Sparse.Ready.target {n k : Nat} {G : Sparse.Colored n k} {level numcells : Nat} {st : State n} (h : Ready G level numcells st) (hn : 0 < n) (hl : 1 ≤ level) (first : Bool) (tcLevel : Nat) :
have t := chooseTarget first (Graph.ofGraph G.graph) tcLevel level numcells st; Generic.Target State.frame level t.fst.toNat t.snd.fst t.snd.snd.snd

The actual target-selection guards produce either an empty target or a nontrivial current cell. Both first and hinted off-path dispatches are covered.