Memory and register invariants for actual controller nodes #
Main definitions #
PrunedQuery.KernelRegs: the unchanged native parameters and computed workspace pointers.PrunedQuery.nodeWrites: the descendant rows that one node may change.
Main results #
PrunedQuery.exec_node_zero: the terminal node case, with the existing mathematical result, concrete frame and timestamp preservation, and charged native continuation.
The invariants describe ordinary register and memory values. They contain no execution, solver, time-bound or all-state-fit field. Execution is proved separately in native semantics.
Fixed caller parameters and the explicit workspace partition computed by locate.
This is a register-value assertion, with no assumed execution or resource guarantee.
Original recursion depth.
Actual source-array and row capacity.
Left input-array pointer.
Right input-array pointer.
First stored frame.
First query row, after the four-word frames.
First value row, after all query rows.
Shared timestamp directory, after all value rows.
Constant zero.
Constant one.
Constant ten.
Constant inner-output digit.
Four ordinary words per frame.
Instances For
The exact permitted workspace rows for a node at depth d. Its own query row is read-only;
descendant query rows, current/descendant value rows, frame suffix and timestamps may change.
Instances For
Every branch of the actual controller preserves the fixed caller parameters.
The terminal induction case is a proved actual controller iteration. The requested values
are the existing Pruned.result; an empty set leaves the value row untouched. The memory
frame and timestamp bound hold at the same final state as the charged continuation.
Enter an internal node by clearing only its listed accumulators and storing the actual zero term counter. This is a complete controller step, including frame loads and comparisons. Its displayed address budget contains only ordinary workspace parameters and list length.