The canonical-comparison part of the native classifier, after the first-reference admission is inapplicable or has failed.
Equations
- One or more equations did not get rendered due to their size.
Instances For
theorem
Hex.GraphIso.Nauty.Sparse.canonVerdict_ne
{n : Nat}
(g : Graph n)
(level : Nat)
(st : State n)
:
theorem
Hex.GraphIso.Nauty.Sparse.classify_eq
{n : Nat}
(g : Graph n)
(level numcells : Nat)
(st : State n)
:
classify g level numcells st = if (st.eqlevFirst != level && decide (st.compCanon < 0)) = true then (Generic.Leaf.bad, st)
else if (numcells != n) = true then (Generic.Leaf.internal, st)
else if (st.eqlevFirst == level) = true then
have sc := scatter st.firstlab st;
if (decide (sc.gcaFirst ≥ sc.noncheaplevel) || isautom g sc.workperm) = true then (Generic.Leaf.autoFirst, sc)
else canonVerdict g level sc
else canonVerdict g level st
This decomposition is definitionally the executed sparse classifier.
theorem
Hex.GraphIso.Nauty.Sparse.classify_first
{n : Nat}
{g : Graph n}
{level numcells : Nat}
{st out : State n}
(hauto : classify g level numcells st = (Generic.Leaf.autoFirst, out))
:
First-reference admission scatters the saved first label and takes exactly one of the cheap-boundary and explicit-scan guards.