A checked carrier whose witnessing generator stabilizes one ancestor frame. Direct generator unwinds need only this witness. Requiring every recorded generator to stabilize the frame is stronger, and it fails away from the first-path loop that consumes an orbit closure.
Equations
- One or more equations did not get rendered due to their size.
Instances For
A checked carrier identifies the relabelled leaf rows of its two permutation labellings.
At a valid leaf event, either no generator is recorded or the output store contains a checked carrier from the first or incumbent leaf.
The guarded code-one event yields the first-reference carrier directly, without routing through the event-wide carrier disjunction.
The guarded code-two event yields the incumbent-reference carrier directly, independently of its chosen return ancestor.
Vertices strictly after the loop cursor.
Equations
- Hex.GraphIso.Nauty.After none v = True
- Hex.GraphIso.Nauty.After (some u) v = (u < v)
Instances For
Numeric rank used to count strict cursor progress.
Equations
Instances For
Moving to a vertex after the cursor increases its rank.
Consuming one cursor step preserves the strict remaining-fuel bound used to rule out loop exhaustion.
A loop cannot consume more fuel than the remaining bounded cursor range. This is the contradiction used to rule out the exhaustion outcome of the executable root sweeps.
The prefixed specification key of offset o in a refined target
cell.
Equations
- One or more equations did not get rendered due to their size.
Instances For
A checked label carrier identifies the two children selected at an ancestor, once the two leaf labellings are known at that ancestor's individualized position.
The store-wide stabilization form used by orbit-local callers.
The key of a non-discrete node is the maximum of the keys swept by its child loop. The loop prefix contains the node's refinement code.
Offset o has been absorbed by the semantic incumbent. This is
explicit rather than read from SearchSt n: during an upward code
comparison the executable overwrites canoncode before it installs the
new leaf, so the state temporarily contains no faithful incumbent key.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The evolving invariant of a mutable target-cell sweep.
cover follows removed children transitively to the current live suffix.
past records the ordering fact needed when a pruning automorphism carries
a live vertex backwards: every retained vertex at or before the cursor has
already been absorbed.
Instances For
Before the first iteration, the whole target-cell window is live.
Coverage crosses an arbitrary loop step once old covered children stay covered and every old survivor is either covered or replaced by a key-equivalent new survivor.
Previously covered children remain covered when the incumbent grows.
The evolving sweep remains valid when the semantic incumbent grows.
Coverage transfers across equality of two child keys.
A filter preserves sweep coverage when every old live child is either
absorbed or carried to a key-equivalent new survivor, and filtering adds no
vertices. A carried survivor before the cursor is discharged through
past. It need not remain in the live suffix.
A filter's natural preservation rule: every old live child is carried
to a key-equivalent member of the filtered set. The member may lie before
the cursor, and past converts that case to completed coverage.
The form used by executable prune filters. A current live child either survives unchanged or is carried to a strictly smaller child of the full target cell. Ranked coverage follows the latter through any earlier filters until it reaches an already-covered child or a new survivor.
Cell-stabilizing downward automorphism carriers discharge the abstract descending-filter rule.
longprune preserves the evolving sweep under the autos ledger.
shortprune preserves the evolving sweep under the last-pair ledger.
At loop completion the evolving coverage invariant says that every offset in the original target cell has been absorbed.
Completed child coverage bounds the maximum over the whole original target cell, not merely the final filtered set.
A partially explored sweep has the same maximum bound when every remaining live representative is already dominated by the installed incumbent.
Advancing to the least remaining vertex preserves sweep coverage once
that vertex's child is absorbed. The hcur premise identifies every
offset carrying the chosen vertex. Callers normally discharge it from
labelling injectivity.
A child whose key is carried to a strictly smaller target-cell vertex is already covered when the loop is about to visit the least eligible vertex. Any live witness supplied by ranked coverage would be both below and at least that least vertex, a contradiction.
The non-root arm of the first-path orbit test is a covered skip. Orbit soundness supplies a smaller word-connected pointer target. Cell stabilization keeps that target in the sibling cell, and ranked coverage shows it was already absorbed.
The executable loop terminator discharges the live-set premise of
SweepCover.finish.
Turn an already-covered reference child into the current child's unwind anchor using a checked carrier between their leaf labellings.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Store-wide stabilization implies the witness-local form.
Equations
- One or more equations did not get rendered due to their size.
Instances For
A code-two return to gcaFirst is justified by the updated orbit
pointer rather than by the direct canonical carrier. The receiving loop
uses this sound pointer together with its own coverage frame.
Instances For
The evidence carried by a generator unwind. Code one and the
ordinary code-two return retain their different reference labellings.
The canonical constructor also retains its exact return guide.
Code two's special gcaFirst return retains the sound orbit pointer that
selected an earlier child. Non-generator pruning instead returns a
locally complete maximum and therefore has its own result constructor.
- first {n : Nat} {ctx : Ctx n} {tcLevel target : Nat} {out : SearchSt n} {best : Option (Key n)} (anchor : Anchor ctx tcLevel target best) (carrier : LabelCarrier ctx out.firstlab out.lab out.genTrace) (atFirst : target ≤ out.gcaFirst) : Unwind ctx tcLevel target out best
- canon {n : Nat} {ctx : Ctx n} {tcLevel target : Nat} {out : SearchSt n} {best : Option (Key n)} (anchor : Anchor ctx tcLevel target best) (carrier : LabelCarrier ctx out.canonlab out.lab out.genTrace) (atCanon : target = out.gcaCanon) : Unwind ctx tcLevel target out best
- orbit {n : Nat} {ctx : Ctx n} {tcLevel target : Nat} {out : SearchSt n} {best : Option (Key n)} (payload : OrbitUnwind ctx target out) : Unwind ctx tcLevel target out best
Instances For
Updating the first-path return controls changes none of the fields carried by a generator unwind.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Removing a loop's temporary fixed vertex changes none of the fields carried by a generator unwind.
Equations
- One or more equations did not get rendered due to their size.
Instances For
A semantic incumbent can only improve across a search fragment.
Equations
- Hex.GraphIso.Nauty.IncGrows best out = ∀ (b : Hex.GraphIso.Nauty.Key n), best = some b → ∃ (b' : Hex.GraphIso.Nauty.Key n), out = some b' ∧ Hex.GraphIso.Nauty.keyLe b b'
Instances For
A previously explored child together with the ancestor geometry needed
to reuse it as a generator guide. Unlike gcaFirst and gcaCanon, this
keeps the reference labelling and the exact target-cell frame.
Instances For
A guide remains usable after the incumbent grows. Cell stabilization of the current generator store and the current child's ancestor position are the only facts that must be supplied at the leaf event.
Equations
- g.anchor hgsz hinc hcarrier hstab hcur hatCur = Hex.GraphIso.Nauty.Anchor.ofCarrier hgsz ⋯ ⋯ hcarrier hstab ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ hcur ⋯ ⋯ hatCur
Instances For
A witness-local carrier is enough for a direct generator unwind.
Equations
- g.anchorCell hgsz hinc hcarrier hcur hatCur = Hex.GraphIso.Nauty.Anchor.ofCellCarrier hgsz ⋯ ⋯ hcarrier ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ hcur ⋯ ⋯ hatCur
Instances For
A successful code-one leaf admission, paired with its concrete first-path guide, produces the corresponding generator unwind payload.
A successful code-two leaf admission, paired with the selected canonical guide, produces the corresponding generator unwind payload.
A row-tied code-two event is either the direct canonical-guide unwind, or the special first-ancestor orbit unwind selected by a smaller pointer.
A guide's covered child remains covered when the incumbent grows.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The first and canonical generator guides that are live strictly above the current node. A guide at the current level is not required: leaf installation temporarily sets a gca to the leaf level, and the parent loop replaces it with a concrete explored-child guide.
Instances For
Every installed output came from the incoming incumbent or this node's specification subtree, and the incoming incumbent was not lost.
- grows : IncGrows best out
Instances For
The state component common to both successful loop outcomes. The loop may stop early, but every incumbent it installs is still bounded by the incoming incumbent and the whole parent subtree.
- grows : IncGrows best out
Instances For
Folding one key into an incumbent preserves the incoming incumbent.
An exact node maximum supplies both clauses of NodeSound.
An exactly completed child is covered in its parent sweep. The three
field equations identify the executable state after breakout with the
specification child used by sweepKey.
Exact completion of the selected child advances the mutable sweep cursor and preserves all earlier coverage.
A sound child step is sound against any larger fixed loop bound.
Matching upper and lower bounds turn loop soundness into the exact incumbent equation required when a parent node completes.
Loop soundness plus domination of every live suffix recovers the exact fixed bound without pretending that the executable loop completed.
A completed sweep whose fixed loop bound is the maximum of its original children recovers the exact final incumbent.
A completed covered sweep with a readable installed state has exactly folded its fixed child maximum into the incoming incumbent.
The result of a node call, with logical and runtime fuel separated.
complete and unwind may have the same return integer. The latter is
therefore a constructor, not an inequality side condition.
- complete {n : Nat} {ctx : Ctx n} {tcLevel specFuel runFuel level : Nat} {cs : List Nat} {st out : SearchSt n} {numcells : Nat} {best outBest : Option (Key n)} {r : Int} (sound : NodeSound ctx tcLevel specFuel level cs st numcells best outBest) (returned : r = Int.ofNat level - 1) (installed : out.canonlevel ≠ 0) (read : stInc ctx out = outBest) (full : outBest = some (incMax best (nodeKey ctx tcLevel specFuel level cs st numcells))) : NodeResult ctx tcLevel specFuel runFuel level cs st out numcells best outBest r
- unwind {n : Nat} {ctx : Ctx n} {tcLevel specFuel runFuel level : Nat} {cs : List Nat} {st out : SearchSt n} {numcells : Nat} {best outBest : Option (Key n)} {r : Int} (sound : NodeSound ctx tcLevel specFuel level cs st numcells best outBest) (target : Nat) (returned : r = Int.ofNat target) (below : target < level) (payload : Unwind ctx tcLevel target out outBest) : NodeResult ctx tcLevel specFuel runFuel level cs st out numcells best outBest r
- pruned {n : Nat} {ctx : Ctx n} {tcLevel specFuel runFuel level : Nat} {cs : List Nat} {st out : SearchSt n} {numcells : Nat} {best outBest : Option (Key n)} {r : Int} (sound : NodeSound ctx tcLevel specFuel level cs st numcells best outBest) (target : Int) (returned : r = target) (below : target < Int.ofNat level) (installed : out.canonlevel ≠ 0) (read : stInc ctx out = outBest) (full : outBest = some (incMax best (nodeKey ctx tcLevel specFuel level cs st numcells))) : NodeResult ctx tcLevel specFuel runFuel level cs st out numcells best outBest r
- exhausted {n : Nat} {ctx : Ctx n} {tcLevel specFuel runFuel level : Nat} {cs : List Nat} {st out : SearchSt n} {numcells : Nat} {best outBest : Option (Key n)} {r : Int} (empty : runFuel = 0) (returned : r = 0) (unchanged : out = st) (bestUnchanged : outBest = best) : NodeResult ctx tcLevel specFuel runFuel level cs st out numcells best outBest r
Instances For
When a child does not return past its parent, it either completed its whole subtree (including a local comparison prune), or its generator payload is addressed exactly to that parent.
The result of a child-loop call. Exhaustion is distinct from a
completed empty remainder, so a general theorem cannot accidentally treat
the cfuel = 0 arm as coverage of every child.
- complete {n : Nat} {ctx : Ctx n} {tcLevel specFuel runFuel loopFuel level : Nat} {cs : 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)} {r : Option Int} (returned : r = none) (sound : LoopSound ctx bound best outBest) (installed : out.canonlevel ≠ 0) (read : stInc ctx out = outBest) (finalSet : VSet n) (finalCursor : Option Nat) (cover : SweepCover ctx tcLevel specFuel level cs rsLab rsPtn tc len numcells finalSet finalCursor outBest) (empty : ∀ (o : Nat), ¬ChildLive rsLab tc len finalSet finalCursor o) : LoopResult ctx tcLevel specFuel runFuel loopFuel level cs rsLab rsPtn tc len numcells tcell cursor bound st out best outBest r
- unwind {n : Nat} {ctx : Ctx n} {tcLevel specFuel runFuel loopFuel level : Nat} {cs : 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)} {r : Option Int} (sound : LoopSound ctx bound best outBest) (target : Nat) (returned : r = some (Int.ofNat target)) (below : target < level) (payload : Unwind ctx tcLevel target out outBest) : LoopResult ctx tcLevel specFuel runFuel loopFuel level cs rsLab rsPtn tc len numcells tcell cursor bound st out best outBest r
- pruned {n : Nat} {ctx : Ctx n} {tcLevel specFuel runFuel loopFuel level : Nat} {cs : 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)} {r : Option Int} (target : Int) (returned : r = some target) (below : target < Int.ofNat level) (sound : LoopSound ctx bound best outBest) (installed : out.canonlevel ≠ 0) (read : stInc ctx out = outBest) (full : outBest = some (incMax best bound)) : LoopResult ctx tcLevel specFuel runFuel loopFuel level cs rsLab rsPtn tc len numcells tcell cursor bound st out best outBest r
- exhausted {n : Nat} {ctx : Ctx n} {tcLevel specFuel runFuel loopFuel level : Nat} {cs : 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)} {r : Option Int} (returned : r = none) (sound : LoopSound ctx bound best outBest) (finalSet : VSet n) (finalCursor : Option Nat) (cover : SweepCover ctx tcLevel specFuel level cs rsLab rsPtn tc len numcells finalSet finalCursor outBest) (progress : cursorRank cursor + loopFuel ≤ cursorRank finalCursor) (bounded : ∀ (v : Nat), finalCursor = some v → v < n) : LoopResult ctx tcLevel specFuel runFuel loopFuel level cs rsLab rsPtn tc len numcells tcell cursor bound st out best outBest r
Instances For
A child generator unwind strictly past its parent lifts through the parent loop's temporary fixed-vertex cleanup.
A readable completed child sweep constructs ordinary node completion once the specification identifies that sweep's fixed bound with the node subtree.
A loop that has already absorbed its fixed child bound constructs the corresponding pruned node outcome when that bound is the node subtree.
A loop return carrying an integer lifts directly through its parent node. The impossible completed and exhausted constructors are excluded by the loop's return option itself.
A completed loop with enough ranked cursor fuel lifts to ordinary node completion. Cursor exhaustion is ruled out by the same finite-range bound used by the executable root search.
Prepending a sound child fragment transports every recursive loop outcome. In the prune case, the recursive exact incumbent and the composed upper bound recover exactness relative to the original incumbent.
The entry set only describes where the call begins. Every constructor records the final set, so the result can cross a filter exposed in the caller.
One successful cursor step transports every recursive loop outcome. For exhaustion, its rank certificate accounts for the fuel consumed by the exposed iteration.