Below a saved cheap-cell boundary, the current refined node remains in the small-cell subtree generated at that boundary. At the boundary itself the implication is dormant until the executable guard either validates the shape or parks the boundary at the child.
Equations
- Hex.GraphIso.Nauty.CheapDesc ctx level boundary st = (boundary < level → Hex.GraphIso.Nauty.SubtreeOk ctx level st)
Instances For
At an entered sibling sweep, a saved boundary at or above the current node supplies the small-cell subtree fact. A strictly shallower boundary uses the inherited descent invariant. Equality is exactly the case in which the current cheap-cell guard must have succeeded.
The executable cheap-cell boundary update carries the small-cell subtree invariant into every individualized child.
Expose a shorter ancestor prefix while retaining the same frozen comparison. This is the transport used as an early return crosses nested node and loop frames.
Fixed-point cleanup changes none of a frozen comparison's fields.
Resetting first-path return controls changes none of a frozen comparison's fields.
A negative comparison branch whose prune tail stays below the recorded divergence produces a frozen-code witness without changing the incumbent.
Every negative off-path leaf prune is either comparison-frozen or a jump to the saved cheap-cell boundary.
Two states describe the same recovered search frame at level when
their partitions agree and their current labellings differ only within
that partition's cells.
Instances For
A recovered SearchOut between valid endpoints is exactly a frame
relation.
The guide-control facts preserved by every off-path search fragment. The second canonical alternative records a newly installed descendant of the fragment's entry frame.
Instances For
Result of one node call. done is the ordinary one-level return.
frozen and cheap retain the distinct witnesses needed when the return
crosses more than one loop, and unwind carries a stored generator.
- done {n : Nat} {ctx : Ctx n} {tcLevel specFuel runFuel level : Nat} {codes : List Nat} {st out : SearchSt n} {numcells : Nat} {best outBest : Option (Key n)} {trail : FrameTrail} {r : Int} (returned : r = Int.ofNat level - 1) (exact : outBest = some (incMax best (nodeKey ctx tcLevel specFuel level codes st numcells))) : NodeExit ctx tcLevel specFuel runFuel level codes st out numcells best outBest trail r
- unwind {n : Nat} {ctx : Ctx n} {tcLevel specFuel runFuel level : Nat} {codes : List Nat} {st out : SearchSt n} {numcells : Nat} {best outBest : Option (Key n)} {trail : FrameTrail} {r : Int} (target : Nat) (returned : r = Int.ofNat target) (below : target < level) (sound : NodeSound ctx tcLevel specFuel level codes st numcells best outBest) (payload : Unwind ctx tcLevel target out outBest) (located : Unwind.Located trail payload) (control : target = out.gcaFirst ∨ target = out.gcaCanon) : NodeExit ctx tcLevel specFuel runFuel level codes st out numcells best outBest trail r
- frozen {n : Nat} {ctx : Ctx n} {tcLevel specFuel runFuel level : Nat} {codes : List Nat} {st out : SearchSt n} {numcells : Nat} {best outBest : Option (Key n)} {trail : FrameTrail} {r : Int} (below : r < Int.ofNat level) (exact : outBest = some (incMax best (nodeKey ctx tcLevel specFuel level codes st numcells))) (freeze : FrozenOut ctx codes out outBest r) : NodeExit ctx tcLevel specFuel runFuel level codes st out numcells best outBest trail r
- cheap {n : Nat} {ctx : Ctx n} {tcLevel specFuel runFuel level : Nat} {codes : List Nat} {st out : SearchSt n} {numcells : Nat} {best outBest : Option (Key n)} {trail : FrameTrail} {r : Int} (boundary : Nat) (returned : r = Int.ofNat boundary - 1) (positive : 1 ≤ boundary) (atOrAbove : boundary ≤ level) (saved : out.noncheaplevel = boundary) (exact : outBest = some (incMax best (nodeKey ctx tcLevel specFuel level codes st numcells))) : NodeExit ctx tcLevel specFuel runFuel level codes st out numcells best outBest trail r
- exhausted {n : Nat} {ctx : Ctx n} {tcLevel specFuel runFuel level : Nat} {codes : List Nat} {st out : SearchSt n} {numcells : Nat} {best outBest : Option (Key n)} {trail : FrameTrail} {r : Int} (returned : r = 0) (state : out = st) (incumbent : outBest = best) (emptyFuel : runFuel = 0) : NodeExit ctx tcLevel specFuel runFuel level codes st out numcells best outBest trail r
Instances For
Provenance of the newest workspace pair while the one-shot
needshortprune request is live. Explicit code-two pairs are already
valid at their returned frame. Implicit cheap-cell pairs retain root
validity and the deeper boundary needed to localize them when the return
reaches its receiving loop.
- explicit {n k : Nat} {G : Colored n k} {ctx : Ctx n} {out : SearchSt n} {trail : FrameTrail} {r : Int} (target : Nat) (fix mcr : VSet n) (returned : r = Int.ofNat target) (back : out.autos.back? = some (fix, mcr)) (valid : ∀ (entry : TrailEntry), trail target = some entry → PairOk ctx.g entry.frame.rsPtn entry.frame.rsLab target fix mcr) (source : ∃ (γ : Array Nat), γ ∈ out.genTrace ∧ fmperm γ n = (fix, mcr)) : ShortSource G ctx out trail r
- implicit {n k : Nat} {G : Colored n k} {ctx : Ctx n} {out : SearchSt n} {trail : FrameTrail} {r : Int} (target : Nat) (returned : r = Int.ofNat target) (below : target < out.noncheaplevel) (back : out.autos.back? = some (fmptn out.lab out.ptn out.noncheaplevel n)) (root : PairOk ctx.g (initPtn n (n + 2) (initialPartition G).snd) (initialPartition G).fst 1 (fmptn out.lab out.ptn out.noncheaplevel n).fst (fmptn out.lab out.ptn out.noncheaplevel n).snd) : ShortSource G ctx out trail r
Instances For
Fixed-point cleanup after a child return does not affect the stored pair or its source evidence.
The final first-path counter adjustment changes none of the fields used by a live short-prune source.
Every result of a positive-level node lies strictly below that node's level. This is the one-step bound that lets a receiving loop identify an explicit or implicit short-prune source with its own level.
The final first-path counter adjustment preserves every node exit, including the payload of a located unwind.
Result of a sibling loop. Early comparison and cheap-cell exits carry both the exact loop maximum and the payload required to cross an older frame. Cursor-fuel exhaustion remains explicit and cannot be confused with completion.
- done {n : Nat} {ctx : Ctx n} {tcLevel specFuel runFuel loopFuel level : Nat} {codes : List Nat} {rsLab rsPtn : Array Nat} {tc len numcells : Nat} {tcell : VSet n} {cursor : Option Nat} {bound : Key n} {st out : SearchSt n} {best outBest : Option (Key n)} {trail : FrameTrail} {r : Option Int} (returned : r = none) (exact : outBest = some (incMax best bound)) : LoopExit ctx tcLevel specFuel runFuel loopFuel level codes rsLab rsPtn tc len numcells tcell cursor bound st out best outBest trail r
- unwind {n : Nat} {ctx : Ctx n} {tcLevel specFuel runFuel loopFuel level : Nat} {codes : List Nat} {rsLab rsPtn : Array Nat} {tc len numcells : Nat} {tcell : VSet n} {cursor : Option Nat} {bound : Key n} {st out : SearchSt n} {best outBest : Option (Key n)} {trail : FrameTrail} {r : Option Int} (target : Nat) (returned : r = some (Int.ofNat target)) (below : target < level) (sound : LoopSound ctx bound best outBest) (payload : Unwind ctx tcLevel target out outBest) (located : Unwind.Located trail payload) (control : target = out.gcaFirst ∨ target = out.gcaCanon) : LoopExit ctx tcLevel specFuel runFuel loopFuel level codes rsLab rsPtn tc len numcells tcell cursor bound st out best outBest trail r
- frozen {n : Nat} {ctx : Ctx n} {tcLevel specFuel runFuel loopFuel level : Nat} {codes : List Nat} {rsLab rsPtn : Array Nat} {tc len numcells : Nat} {tcell : VSet n} {cursor : Option Nat} {bound : Key n} {st out : SearchSt n} {best outBest : Option (Key n)} {trail : FrameTrail} {r : Option Int} (value : Int) (returned : r = some value) (below : value < Int.ofNat level) (exact : outBest = some (incMax best bound)) (freeze : FrozenOut ctx codes out outBest value) : LoopExit ctx tcLevel specFuel runFuel loopFuel level codes rsLab rsPtn tc len numcells tcell cursor bound st out best outBest trail r
- cheap {n : Nat} {ctx : Ctx n} {tcLevel specFuel runFuel loopFuel level : Nat} {codes : List Nat} {rsLab rsPtn : Array Nat} {tc len numcells : Nat} {tcell : VSet n} {cursor : Option Nat} {bound : Key n} {st out : SearchSt n} {best outBest : Option (Key n)} {trail : FrameTrail} {r : Option Int} (boundary : Nat) (returned : r = some (Int.ofNat boundary - 1)) (positive : 1 ≤ boundary) (below : boundary ≤ level) (saved : out.noncheaplevel = boundary) (exact : outBest = some (incMax best bound)) : LoopExit ctx tcLevel specFuel runFuel loopFuel level codes rsLab rsPtn tc len numcells tcell cursor bound st out best outBest trail r
- exhausted {n : Nat} {ctx : Ctx n} {tcLevel specFuel runFuel loopFuel level : Nat} {codes : List Nat} {rsLab rsPtn : Array Nat} {tc len numcells : Nat} {tcell : VSet n} {cursor : Option Nat} {bound : Key n} {st out : SearchSt n} {best outBest : Option (Key n)} {trail : FrameTrail} {r : Option Int} (returned : r = none) (finalCursor : Option Nat) (progress : cursorRank cursor + loopFuel ≤ cursorRank finalCursor) (bounded : ∀ (v : Nat), finalCursor = some v → v < n) : LoopExit ctx tcLevel specFuel runFuel loopFuel level codes rsLab rsPtn tc len numcells tcell cursor bound st out best outBest trail r
Instances For
Concrete node result paired with its return classification. The event and trail clauses are independent of the semantic maximum and remain reusable from the established leaf machinery.
- exit : NodeExit ctx tcLevel specFuel runFuel level codes st out numcells best outBest receiptTrail r
- event : EventOut G ctx tcLevel codes fs out outBest eventTrail r
- preserved : TrailExt level receiptTrail eventTrail
- short : out.needshortprune = true → ShortSource G ctx out eventTrail r
Instances For
Off-path nodes additionally preserve the first-path control and coset cursor needed by their enclosing sibling loop.
- node : NodeRun G ctx tcLevel specFuel runFuel level codes fs st out numcells best outBest receiptTrail eventTrail r
Instances For
A sibling-loop proof paired with its exit reason. The established
proof retains coverage, event, and recovery facts. exit separately
records why an unfinished suffix is nevertheless absorbed.
- proof : LoopProof G ctx tcLevel specFuel runFuel loopFuel level stem codes fs rsLab rsPtn tc len numcells tcell cursor bound st out best outBest receiptTrail eventTrail r
- exit : LoopExit ctx tcLevel specFuel runFuel loopFuel level codes rsLab rsPtn tc len numcells tcell cursor bound st out best outBest receiptTrail r
Instances For
An off-path sibling sweep additionally retains its coset cursor.
- proof : OtherLoopProof G ctx tcLevel specFuel runFuel loopFuel level stem codes fs rsLab rsPtn tc len numcells tcell cursor bound st out best outBest receiptTrail eventTrail r
- exit : LoopExit ctx tcLevel specFuel runFuel loopFuel level codes rsLab rsPtn tc len numcells tcell cursor bound st out best outBest receiptTrail r
Instances For
The first-path sibling sweep retains both reference histories in its established proof, together with the reason for abandoning any suffix.
- proof : FirstLoopProof G ctx tcLevel specFuel runFuel loopFuel level stem codes fs rsLab rsPtn tc len numcells tcell cursor bound st out best outBest receiptTrail eventTrail r
- exit : LoopExit ctx tcLevel specFuel runFuel loopFuel level codes rsLab rsPtn tc len numcells tcell cursor bound st out best outBest receiptTrail r
Instances For
A node run can be viewed through the local outcome interface. The conversion holds at a single node, where both early exit variants already carry exactness. It says nothing about the enclosing loop: an early exit is not coverage of the later siblings.
Restore the established result interface used by the invariant transport lemmas after the exit has been classified.
Forget the semantic receipt and expose the off-path guide relation.
Restore the established off-path interface for ordinary parent-level consumption and recovery.
Changing only the mutable live set leaves an already classified loop exit unchanged.
One processed cursor step increases both the loop fuel and its starting-rank budget.
A sound processed child changes only the incoming incumbent of the classified recursive tail.
At a small-cell node, exactness of the selected child is exactness of the whole sibling sweep, so the saved-boundary return remains a cheap exit after fixed-point cleanup.
An early frozen child absorbs both the explored prefix and every live suffix child, yielding the exact loop maximum while retaining the frozen payload for the next enclosing frame.
Convert an integer-valued loop exit to the enclosing node, shortening the frozen comparison prefix at the node boundary.
With nonzero cursor fuel, a none loop result is genuine completion
and supplies the enclosing node's ordinary one-level return.
A fresh request from the frozen-downward processnode arm records
the implicit pair admitted at the saved cheap-cell boundary.
A negative, non-generator discrete leaf produces its exit classification: ordinary comparison pruning retains its frozen prefix, and the other return is the explicit cheap-cell jump.
An early off-path leaf also preserves the guide and coset fields used when its unwind stops at the immediately enclosing sibling loop.
A code-one automorphism leaf returns the stored first-path unwind, with all off-path control fields retained for the enclosing sibling loop.
A code-two row tie returns either its canonical guide or its first-ancestor orbit guide, retaining the chosen unwind explicitly.
The negative non-generator leaf, with the off-path fields needed by its parent loop retained.
A non-generator leaf whose return remains at the current boundary is an ordinary exact off-path node run.