Package the immutable parameters of a concrete child-loop call.
Equations
- Hex.GraphIso.Nauty.sweepFrame specFuel codes rsLab rsPtn tc numcells = { specFuel := specFuel, codes := codes, rsLab := rsLab, rsPtn := rsPtn, tc := tc, numcells := numcells }
Instances For
One active ancestor frame together with the child offset followed by the current descent.
- frame : SweepFrame
- offset : Nat
Instances For
Active ancestor children, keyed by their parent search level.
Equations
Instances For
The empty active-frame trail.
Equations
Instances For
Every active ancestor frame reaches the current labelling, and its closed boundaries remain frozen in the current partition.
- picked (target : Nat) (entry : TrailEntry) : target < level → trail target = some entry → ∃ (len : Nat), IsCell entry.frame.rsPtn target entry.frame.tc len ∧ entry.offset < len ∧ st.ptn[entry.frame.tc]! = target + 1 ∧ IsCell st.ptn level entry.frame.tc 1 ∧ st.lab[entry.frame.tc]! = entry.frame.rsLab[entry.frame.tc + entry.offset]!
Instances For
No ancestor frame is present in the empty trail.
Record the active child of one parent level.
Instances For
A direct anchor was created from the active frame at its target.
Equations
Instances For
A guide names the active frame at its target.
Equations
Instances For
Adding a different, deeper active child preserves an older anchor's location.
Adding a different, deeper active child preserves a guide's frame location.
A guide for the newly pushed frame is located there immediately. The active descent offset need not be the guide's own explored offset.
A located guide's ancestor frame reaches the current labelling.
A located guide identifies the exact active ancestor child followed by the current descent.
Location evidence follows a guide when a checked carrier turns it into an unwind anchor.
Location evidence follows a witness-local carrier into its direct unwind anchor.
Location evidence attached to each direct unwind constructor. Orbit unwinds use only the target loop's own frame and need no stored frame.
- first {n : Nat} {trail : FrameTrail} {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) (located : Anchor.Located trail anchor) : Located trail (Unwind.first anchor carrier atFirst)
- canon {n : Nat} {trail : FrameTrail} {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) (located : Anchor.Located trail anchor) : Located trail (Unwind.canon anchor carrier atCanon)
- orbit {n : Nat} {trail : FrameTrail} {ctx : Ctx n} {tcLevel target : Nat} {out : SearchSt n} {best : Option (Key n)} (payload : OrbitUnwind ctx target out) : Located trail (Unwind.orbit payload)
Instances For
The frame-local condition needed to consume an unwind. Direct unwinds already carry a checked cell carrier in their anchor, while the orbit-pointer arm relies on every admitted generator stabilizing the receiving cell.
- first {n : Nat} {ctx : Ctx n} {tcLevel target : Nat} {out : SearchSt n} {best : Option (Key n)} {rsPtn : Array Nat} {level : Nat} {rsLab : Array Nat} (anchor : Anchor ctx tcLevel target best) (carrier : LabelCarrier ctx out.firstlab out.lab out.genTrace) (atFirst : target ≤ out.gcaFirst) : FrameStable rsPtn level rsLab (Unwind.first anchor carrier atFirst)
- canon {n : Nat} {ctx : Ctx n} {tcLevel target : Nat} {out : SearchSt n} {best : Option (Key n)} {rsPtn : Array Nat} {level : Nat} {rsLab : Array Nat} (anchor : Anchor ctx tcLevel target best) (carrier : LabelCarrier ctx out.canonlab out.lab out.genTrace) (atCanon : target = out.gcaCanon) : FrameStable rsPtn level rsLab (Unwind.canon anchor carrier atCanon)
- orbit {n : Nat} {ctx : Ctx n} {tcLevel target : Nat} {out : SearchSt n} {best : Option (Key n)} {rsPtn : Array Nat} {level : Nat} {rsLab : Array Nat} (payload : OrbitUnwind ctx target out) (stable : ∀ (γ : Array Nat), γ ∈ out.genTrace.toList → CellStab rsPtn level rsLab γ) : FrameStable rsPtn level rsLab (Unwind.orbit payload)
Instances For
Extending the trail at a different, deeper level preserves the source location of a transported unwind.
An unwind anchor belongs to the indicated frozen child-loop frame.
Instances For
Looking up the same active frame as a located anchor identifies all of the frozen loop parameters required to consume it.
A located anchor follows the child offset recorded by the active descent at its target.
A located anchor supplies coverage of its stored child offset in the receiving loop's frame.
A direct generator anchor addressed to this loop advances coverage past the current child.
A located direct anchor consumes the active child named by the target trail entry.
An orbit unwind addressed to this loop advances coverage through its strictly smaller, sound pointer.
Every located generator unwind addressed to this loop consumes the active child. Direct carriers use their stored frame and offset. The special code-two arm uses its sound orbit pointer.
Every recorded generator stabilizes each active frame that the return level permits the caller to resume.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Lowering the advertised return level requires stabilization of fewer frames.
A state with no recorded generators satisfies every return frame.
Return stabilization depends only on the recorded-generator store.
Fixed-point bookkeeping does not affect return stabilization.
First-path return bookkeeping does not affect the generator store or the ancestor frames it stabilizes.
Clearing the one-shot short-prune flag does not affect stabilization.
Updating the first-path agreement counter does not affect generator stabilization.
Recovering a parent changes no recorded generator, so it preserves return stabilization at every level.
Appending one generator preserves return stabilization when the existing store already satisfies it and the new generator stabilizes every resumable frame.
Pushing a child frame preserves return stabilization at every shallower frame. The new frame is required only when the return reaches it.
At the exact target of a located unwind, return stabilization supplies the store-wide premise needed by the orbit constructor. Direct carrier unwinds are frame-stable without a store-wide premise.