Documentation

HexGraphIso.Nauty.Correct.Generation.FirstCoverage

theorem Hex.GraphIso.Nauty.Generation.FirstTail.cover {n k : Nat} {G : Colored n k} {ctx : Ctx n} {inf tcLevel specFuel runFuel level numcells tc len tv1 e boundary oRef : Nat} {codes fs targets : List Nat} {rsLab rsPtn : Array Nat} {entry : SearchSt n} {key : Key n} {base : List (Fin n)} {guide : Fin n} (hg : ctx.g = rowsOf G) (hinf : inf = n + 2) (hpath : level = codes.length) (hrun : n + 2 < level + 1 + runFuel) (hboundary : level < boundary) (href : oRef < len) (hp : ChildPath ctx tcLevel boundary level (LoopInv.frame rsLab rsPtn numcells) tc targets key oRef) (hmove : ∀ (v : Fin n), Aut.Orbit G base guide v∀ (o : Nat), o < lenrsLab[tc + o]! = vChildPath ctx tcLevel boundary level (LoopInv.frame rsLab rsPtn numcells) tc targets key o) (hfixFrame : ∀ (γ : Array Nat), CellStab rsPtn level rsLab γ∀ (b : Fin n), b baseγ[b]! = b) {loopFuel : Nat} {cursor : Option Nat} {tcell : VSet n} {st : SearchSt n} {best : Option (Key n)} {trail : FrameTrail} (sweep : FirstTail G ctx inf tcLevel specFuel runFuel level numcells tc len tv1 e codes fs rsLab rsPtn entry loopFuel cursor tcell st best trail) (hm : Matches ctx (level + 1) st targets key) (heq : st.eqlevFirst = level) (hsame : boundary st.allsamelevel) (hfuel : n < cursorRank cursor + loopFuel) (hfirst : st.firstlab[tc]! = guide) (hpast : CanonPast level tc cursor st) (hcover : Cover G base guide tcell cursor) (index : Nat) (htrace : ∀ (γ : Array Nat), γ (firstChildLoop ctx inf tcLevel runFuel loopFuel level numcells tc tv1 (tcell.nextElem cursor) tcell index st).snd.snd.genTraceγ Aut.trace G) (v : Fin n) :
Aut.Orbit G base guide vAut.Carries G base guide v

The first-path tail covers the entire true orbit of its guiding child by words in the final emitted generators. Reference transport uses the true path stabilizer; only recorded return carriers require generation.