The incumbent parses as a label and the allocated raw rows represent exactly its installed prefix. Unfilled capacity is not a complete graph.
Equations
Instances For
A candidate prefix justified by the actual comparison, ready for the shared better-leaf installation.
Equations
Instances For
theorem
Hex.GraphIso.Nauty.Sparse.Store.visit
{n : Nat}
{G : SparseGraph n}
{st : State n}
(h : Store G st)
(level numcells : Nat)
:
Store G (Sparse.visit (Graph.ofGraph G) level numcells st).snd.snd
theorem
Hex.GraphIso.Nauty.Sparse.Store.record
{n : Nat}
{G : SparseGraph n}
{st : State n}
(h : Store G st)
(level code : Nat)
:
Store G (recordFirst level code st)
theorem
Hex.GraphIso.Nauty.Sparse.Store.compare
{n : Nat}
{G : SparseGraph n}
{st : State n}
(h : Store G st)
(level code : Nat)
:
Store G (compareCodes level code st)
theorem
Hex.GraphIso.Nauty.Sparse.Store.cheap
{n : Nat}
{G : SparseGraph n}
{st : State n}
(h : Store G st)
(first : Bool)
(level : Nat)
:
Store G (cheapCheck first level st)
theorem
Hex.GraphIso.Nauty.Sparse.Store.child
{n : Nat}
{G : SparseGraph n}
{st : State n}
(h : Store G st)
(first : Bool)
(level tc tv : Nat)
:
Store G (Generic.Policy.child first level tc tv st)
theorem
Hex.GraphIso.Nauty.Sparse.Store.afterChild
{n : Nat}
{G : SparseGraph n}
{st : State n}
(h : Store G st)
(level tv : Nat)
:
Store G (afterChildFirst level tv st)
theorem
Hex.GraphIso.Nauty.Sparse.Store.leave
{n : Nat}
{G : SparseGraph n}
{st : State n}
(h : Store G st)
(tv : Nat)
:
Store G
{ lab := st.lab, ptn := st.ptn, active := st.active, orbits := st.orbits, fixedpts := st.fixedpts.erase tv,
autos := st.autos, wsCap := st.wsCap, firstcode := st.firstcode, canoncode := st.canoncode, firsttc := st.firsttc,
firstlab := st.firstlab, canonlab := st.canonlab, canong := st.canong, samerows := st.samerows,
compCanon := st.compCanon, eqlevFirst := st.eqlevFirst, eqlevCanon := st.eqlevCanon, gcaFirst := st.gcaFirst,
gcaCanon := st.gcaCanon, canonlevel := st.canonlevel, noncheaplevel := st.noncheaplevel,
allsamelevel := st.allsamelevel, cosetindex := st.cosetindex, stabvertex := st.stabvertex, numnodes := st.numnodes,
tctotal := st.tctotal, canupdates := st.canupdates, numorbits := st.numorbits, numgenerators := st.numgenerators,
numbadleaves := st.numbadleaves, maxlevel := st.maxlevel, order := st.order, genTrace := st.genTrace,
workperm := st.workperm }
theorem
Hex.GraphIso.Nauty.Sparse.Store.afterSweep
{n : Nat}
{G : SparseGraph n}
{st : State n}
(h : Store G st)
(first : Bool)
(level size index : Nat)
:
Store G (Generic.Policy.afterSweep first level size index st)
theorem
Hex.GraphIso.Nauty.Sparse.Store.terminal
{n : Nat}
{G : SparseGraph n}
{st : State n}
(h : Store G st)
(level : Nat)
(l : Label n)
(hl : Label.ofArray? n st.lab = some l)
:
Store G (firstterminal level st)
theorem
Hex.GraphIso.Nauty.Sparse.Store.finish
{n : Nat}
{G : SparseGraph n}
{st : State n}
(h : Store G st)
:
Store G (Sparse.finish (Graph.ofGraph G) st)
theorem
Hex.GraphIso.Nauty.Sparse.Store.classify
{n : Nat}
{G : SparseGraph n}
{st : State n}
(h : Store G st)
(level numcells : Nat)
(l : Label n)
(hl : Label.ofArray? n st.lab = some l)
:
have r := Sparse.classify (Graph.ofGraph G) level numcells st;
Store G r.snd ∧ ∀ (sr : Nat), r.fst = Generic.Leaf.better sr → Candidate G r.snd sr
Classification preserves the old incumbent and prepares a parsed, semantically valid candidate prefix for every better-leaf verdict.