theorem
Hex.GraphIso.Nauty.Guided.append
{n : Nat}
{ctx : Ctx n}
{store : Array Int}
{tcLevel base level tc o : Nat}
{root leaf : RefineSt n}
{path : List (Nat × Nat)}
(h : DescPath ctx base root path level leaf)
(hg : Guided ctx tcLevel store base root path)
(htc : specTargetcell ctx leaf.lab leaf.ptn level tcLevel = tc ∨ store[level]! = Int.ofNat tc)
:
Appending a canonical or saved target extends a guided descent.
def
Hex.GraphIso.Nauty.GuidedPerm
{n : Nat}
(ctx : Ctx n)
(tcLevel : Nat)
(store : Array Int)
(base : Nat)
(root : RefineSt n)
(level : Nat)
(current : RefineSt n)
:
A guided descent whose endpoint agrees with the current partition up to label order within cells.
Equations
- One or more equations did not get rendered due to their size.
Instances For
theorem
Hex.GraphIso.Nauty.GuidedPerm.refl
{n : Nat}
(ctx : Ctx n)
(tcLevel : Nat)
(store : Array Int)
(level : Nat)
(st : RefineSt n)
:
GuidedPerm ctx tcLevel store level st level st
A frozen frame starts its own guided history.
theorem
Hex.GraphIso.Nauty.GuidedPerm.iter
{n : Nat}
{ctx : Ctx n}
{store : Array Int}
{tcLevel base level : Nat}
{root current : RefineSt n}
(h : GuidedPerm ctx tcLevel store base root level current)
(hroot : IterOk ctx base root)
:
IterOk ctx level current
A guided descent retains the mathematical node invariant.
theorem
Hex.GraphIso.Nauty.GuidedPerm.setLab
{n : Nat}
{ctx : Ctx n}
{store : Array Int}
{tcLevel base level : Nat}
{root current : RefineSt n}
{lab : Array Nat}
(h : GuidedPerm ctx tcLevel store base root level current)
(hsize : lab.size = current.lab.size)
(hcells : cellsPerm current.ptn level current.lab lab)
:
Sibling recovery may reorder labels within cells while retaining the same guided history.
theorem
Hex.GraphIso.Nauty.GuidedPerm.leaf
{n : Nat}
{ctx : Ctx n}
{store : Array Int}
{tcLevel base level : Nat}
{root current : RefineSt n}
(h : GuidedPerm ctx tcLevel store base root level current)
(hroot : IterOk ctx base root)
(hdisc : ∀ (i : Nat), i < n → current.ptn[i]! ≤ level)
:
A guided discrete endpoint has the actual current labelling.
theorem
Hex.GraphIso.Nauty.GuidedPerm.child
{n : Nat}
{ctx : Ctx n}
{store : Array Int}
{tcLevel base level tc e o : Nat}
{root current : RefineSt n}
(hsize : ctx.g.size = n)
(hroot : IterOk ctx base root)
(h : GuidedPerm ctx tcLevel store base root level current)
(hlevel : level < n)
(hcell : (tc, e) ∈ cells current.ptn level n)
(hne : tc < e)
(ho : o ≤ e - tc)
(htc : specTargetcell ctx current.lab current.ptn level tcLevel = tc ∨ store[level]! = Int.ofNat tc)
:
A canonical or saved target extends the guided history through individualization and refinement, including after sibling reordering.