At a loop boundary, an implicit small-cell pair is available even
when noncheaplevel is exactly the loop level. CheapOk omits this
equality case at general node entries. The loop guards restore it before
beginning a sibling sweep.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Parking strictly past a loop makes its equality case vacuous.
A successful cheap-cell test supplies the implicit pair required at the loop boundary.
The boundary pair advances the strict CheapOk ledger through the
next child level.
Recovering a child event to its parent supplies the equality-boundary
pair needed by the next sibling, even though ordinary CheapOk makes
that equality case dormant.
Every early off-path leaf return restores its entry fixed-point set.
Every completed off-path leaf restores its entry fixed-point set.
A semantic node outcome together with restoration of its entry fixed-point set.
- outcome : NodeOutcome G ctx tcLevel specFuel runFuel level cs fs st out numcells best outBest receiptTrail eventTrail r
Instances For
The stronger off-path result retains the guide facts required by an ordinary sibling loop.
- outcome : OtherOutcome G ctx tcLevel specFuel runFuel level cs fs st out numcells best outBest receiptTrail eventTrail r
Instances For
A semantic loop outcome together with restoration of the loop entry's fixed-point set.
- outcome : LoopOutcome 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
Instances For
An off-path loop additionally preserves the first-path coset cursor.
The analogous claim is false for firstChildLoop, which installs the
currently selected sibling before entering an off-path subtree.
- loop : 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
Instances For
The first leaf remembers every child selected on the unique initial
descent. Unlike RefTrail.first, this history is independent of the
mutable gcaFirst return control: outer first-path loops reset that
control while the leaf remains a descendant of all their frozen frames.
Instances For
Before the enclosing first-path node returns, its canonical reference
also remains inside every strictly older guiding child. The current loop
frame is excluded because later siblings may replace the canonical child
there. FrameRefs states what holds at that changing boundary.
Instances For
A comparison-frozen return retains the full deep code path while
exposing any ancestor prefix through stem. The floor clause says the
return does not jump above the recorded downward divergence; the boundary
clause retains the cheap-cell or all-same floor of the actual prune tail.
- mk {n : Nat} {ctx : Ctx n} {stem : List Nat} {out : SearchSt n} {best : Option (Key n)} {r : Int} (current : Nat) (codes bestCodes : List Nat) (codeInv : CodeCmpInv n codes bestCodes out.canoncode out.canonlevel out.eqlevCanon (-1)) (depth : current = codes.length) (stemEq : List.take stem.length codes = stem) (installed : bestCodes ≠ []) (incumbent : best = some (incKey ctx bestCodes out.canonlab)) (floor : Int.ofNat out.eqlevCanon.toNat ≤ r) (boundary : Int.ofNat out.noncheaplevel - 1 ≤ r ∨ Int.ofNat out.allsamelevel - 1 ≤ r) : FrozenOut ctx stem out best r
Instances For
Every subtree below an exposed ancestor prefix is below the installed incumbent once that ancestor lies strictly above the frozen return.
The frozen verdict bounds every still-live child of an abandoned ancestor sweep.
Coverage of the explored prefix and a frozen comparison of the live suffix recover the exact maximum of an abandoned parent sweep.
What a first-path node may export. A locally absorbed or pruned node
exports its exact maximum, and a genuine generator unwind directly names
the first or canonical reference child. The orbit-pointer arm is resolved
by firstChildLoop and does not appear here.
- full {n : Nat} {ctx : Ctx n} {tcLevel specFuel level : Nat} {cs : List Nat} {st out : SearchSt n} {numcells : Nat} {best outBest : Option (Key n)} {trail : FrameTrail} {r : Int} (eq : outBest = some (incMax best (nodeKey ctx tcLevel specFuel level cs st numcells))) : NodeEscape ctx tcLevel specFuel level cs st out numcells best outBest trail r
- first {n : Nat} {ctx : Ctx n} {tcLevel specFuel level : Nat} {cs : 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) (anchor : Anchor ctx tcLevel target outBest) (carrier : LabelCarrier ctx out.firstlab out.lab out.genTrace) (located : Anchor.Located trail anchor) : NodeEscape ctx tcLevel specFuel level cs st out numcells best outBest trail r
- canon {n : Nat} {ctx : Ctx n} {tcLevel specFuel level : Nat} {cs : 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) (anchor : Anchor ctx tcLevel target outBest) (carrier : LabelCarrier ctx out.canonlab out.lab out.genTrace) (located : Anchor.Located trail anchor) : NodeEscape ctx tcLevel specFuel level cs st out numcells best outBest trail r
Instances For
The corresponding first-path loop exit. Fuel-exhausted intermediate
tails may still return none, and sufficient outer cursor fuel rules that
arm out.
- full {n : Nat} {ctx : Ctx n} {tcLevel level : Nat} {bound : Key n} {out : SearchSt n} {best outBest : Option (Key n)} {trail : FrameTrail} {r : Option Int} (eq : outBest = some (incMax best bound)) : LoopEscape ctx tcLevel level bound out best outBest trail r
- first {n : Nat} {ctx : Ctx n} {tcLevel level : Nat} {bound : Key n} {out : SearchSt n} {best outBest : Option (Key n)} {trail : FrameTrail} {r : Option Int} (target : Nat) (returned : r = some (Int.ofNat target)) (below : target < level) (anchor : Anchor ctx tcLevel target outBest) (carrier : LabelCarrier ctx out.firstlab out.lab out.genTrace) (located : Anchor.Located trail anchor) : LoopEscape ctx tcLevel level bound out best outBest trail r
- canon {n : Nat} {ctx : Ctx n} {tcLevel level : Nat} {bound : Key n} {out : SearchSt n} {best outBest : Option (Key n)} {trail : FrameTrail} {r : Option Int} (target : Nat) (returned : r = some (Int.ofNat target)) (below : target < level) (anchor : Anchor ctx tcLevel target outBest) (carrier : LabelCarrier ctx out.canonlab out.lab out.genTrace) (located : Anchor.Located trail anchor) : LoopEscape ctx tcLevel level bound out best outBest trail r
- pending {n : Nat} {ctx : Ctx n} {tcLevel level : Nat} {bound : Key n} {out : SearchSt n} {best outBest : Option (Key n)} {trail : FrameTrail} {r : Option Int} (returned : r = none) : LoopEscape ctx tcLevel level bound out best outBest trail r
Instances For
First-path sweep cleanup changes no data named by an escape witness.
Rebase direct escape locations onto a trail agreeing below the loop.
Prepending a sound loop fragment adjusts only the incoming incumbent.
A first-path node proof additionally retains the unconditional history of the first leaf through every active ancestor frame.
- escape : NodeEscape ctx tcLevel specFuel level cs st out numcells none outBest receiptTrail r
- trail : FirstTrail ctx level out eventTrail
- canonTrail : CanonTrail ctx level out eventTrail
Instances For
A first-path loop keeps the current frozen frame in the first leaf's history until the loop is converted back to its parent node result.
- loop : 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
- escape : LoopEscape ctx tcLevel level bound out best outBest receiptTrail r
- trail : FirstTrail ctx (level + 1) out eventTrail
- canonTrail : CanonTrail ctx level out eventTrail
Instances For
Reindex first-leaf history along an output trail extension and a state update that leaves the stored first leaf unchanged.
Forgetting the newest active frame gives the history expected by its parent node.
First-path sweep cleanup changes only allsamelevel.
Recovering a guiding-child event whose first control has been reset to the parent produces the live first-path loop package. Return stabilization at that exact control is precisely the store-wide stabilization required for the frozen parent frame.
A completed child, cleanup, and recovery restore both parent path facts. The selected vertex is fresh because it lies in a non-singleton target cell while all older fixed vertices occupy singleton cells.
Reindex path facts across a state update that changes none of the fields they mention.
Individualization extends path facts from any well-formed equitable
parent frame. This is the pre-incumbent analogue of PathOk.breakout,
which obtains the same premises from a LoopInv.
A discrete first-path leaf supplies the coupled node result and restores the fixed-point frame with which the node was entered.
The first leaf also turns the accumulated active descent into an unconditional history of the selected child at every ancestor frame.
The executable first-child prefix preserves and extends the root path facts before the first incumbent exists.
A completed off-path child of the first-path loop consumes its current
sibling. Here cosetindex is sound: the child record installs tv, and
the whole otherNode result preserves it.
Package any early off-path leaf outcome with its fixed-frame equation.
Package any completed off-path leaf outcome with its fixed-frame equation.
An early-returning first-path loop supplies its enclosing first-path node while dropping the loop's own frozen frame from the active history.
A fully exhausted first-path loop supplies its enclosing node once cursor fuel proves that exhaustion means complete child coverage.
A first-path child that stays at its parent boundary consumes the
selected child. NodeEscape rules out the orbit-pointer arm here: a
deeper first-path loop resolves that arm before returning.
After first-child cleanup and recovery, both reference leaves still lie below the selected guiding child. Thus the one absorbed child backs both current-frame reference controls, whichever controls recover to the parent level.
Cleanup, first-control installation, and recovery change neither leaf reference. The first trail therefore keeps the current frozen frame, while the canonical trail can be lowered to the shallower frames of the enclosing first-path node.
A completed guiding child installs a located first-reference guide at its parent frame. The unconditional first trail supplies both the exact selected vertex and the cell-permutation reachability that the mutable GCA control alone cannot recover.
The final first-path allsamelevel adjustment preserves both the
semantic result and the stored first-leaf history.
Exhausting first-path loop fuel retains both the semantic event and the unchanged fixed-point frame. The outer node later rules this case out from the cursor-progress bound.
Exhausting off-path loop fuel retains both the semantic event and the unchanged fixed-point frame.
Completing a positive-fuel first-path sweep leaves its fixed-point frame unchanged.
Completing a positive-fuel off-path sweep leaves its fixed-point frame unchanged.
The zero-fuel off-path loop preserves the coset cursor literally.
A positive-fuel loop with no next child likewise returns its state unchanged.
A zero-fuel first-path loop is a pending tail and preserves all first-descent history literally.
A positive-fuel first-path loop with no next child has covered its fixed specification bound.