Memory invariants for the saved routing arrays #
Main definitions #
QueriedProduct.SavedGroups: protected words agree with an earlier actual router state.
Main results #
QueriedProduct.SavedGroups.reframe: kernel and producer frames retain the saved arrays.QueriedProduct.router_code_lt: executed stable scatter gives a valid query code at every grouped position, including duplicate requests.QueriedProduct.SavedGroups.span_bounds: actual saved offsets form admitted kernel spans.
The earlier memory is a proof reference to an executed state, not program input. The native copy theorem establishes these equalities before any low-memory reuse occurs.
Values copied from the actual router state into protected caller-owned arrays.
- offsets (t : ℕ) : t ≤ MatrixMultiplication.Schonhage.numBands L m N ^ 2 → μ (offsetBase L m N Q + t) = old (Wanted.offsetAddress L m N Q + t)
All actual offsets, including the terminal offset.
All actual grouped codes.
- originals (j : ℕ) : j < Q → μ (originalBase L m N Q + j) = old (Wanted.originalAddress L m N Q + j)
All actual original-position words.
Instances For
Preserving the protected readonly interval preserves the saved routing arrays.
Stable scatter covers every grouped cell, so every stored code is a valid query index. The proof uses the existing permutation theorem rather than a supplied inverse table.
The actual protected offset words satisfy the kernel's monotone span and count bounds. These inequalities follow from the executed prefix-count meanings, not input certificates.
A typed view of the actual saved code span requests exactly the original finite tile set. This uses the existing router's span theorem; the native caller constructs the view by decoding its real words, rather than receiving a query-set or routing certificate.