Concrete fusion-node preprocessing parameters #
Static preprocessing chooses collision-free shifts and three half-word multiplier digits. All other stored constants are explicit arithmetic expressions in these witnesses and the stored keys. The choices have no preprocessing-time certificate. Arithmetic compression agrees with perfect-sketch comparisons on all inputs; full-key query correction and the complete fusion-tree query remain separate.
Main definitions #
NodeParameters: actual compression witnesses for a node.NodeParameters.words: fifteen physical parameter words, independent of the node header.
Main results #
NodeParameters.exists_parameters: witnesses for every large-width bounded sorted node.NodeParameters.compressed_lt_iff: comparison agreement for arbitrary inputs.NodeParameters.words_fit: every stored parameter fits the physical word.
References #
Source positions enumerated in increasing significance order.
Instances For
The source-position list is exactly the list defining the perfect sketch.
Explicit compression witnesses. Correctness and word bounds below are derived from the collision, ordering and span properties supplied by the constructive shift theorem.
- shifts : Fin (relevantCount w keys) → ℕ
Collision-free shift positions.
- cross_injective : Function.Injective fun (p : Fin (relevantCount w keys) × Fin (relevantCount w keys)) => (sourcePositions w keys) p.1 + self.shifts p.2
Distinct cross terms prevent carries.
- diagonal_strictMono : StrictMono fun (i : Fin (relevantCount w keys)) => (sourcePositions w keys) i + self.shifts i
Retained terms occur in significance order.
- span (i : Fin (relevantCount w keys)) : w < (sourcePositions w keys) i + self.shifts i ∧ (sourcePositions w keys) i + self.shifts i < w + 2 * relevantCount w keys ^ 4
All retained terms lie in the short window.
The three little-endian half-word digits of the multiplier.
Each multiplier digit fits the multiplication radix.
- digits_value : Nat.ofDigits (WordRAM.Multiword.radix w) (List.ofFn self.digits) = Lean.FusionTree.positionMask self.shifts
The digits represent the actual shift mask.
Instances For
Selected-bit count, at most one per adjacent pair.
Instances For
Compressed payload width.
Instances For
Input position mask.
Instances For
Full multiplier, represented in storage by three digits.
Instances For
Retained output mask.
Instances For
Arithmetic compressed sketch, for any natural input.
Instances For
Stored sketches, extended by the sketch of zero outside the node.
Instances For
Query replication multiplier.
Instances For
Guarded original sketches.
Instances For
Guarded complemented sketches.
Instances For
Guard mask for packed comparisons.
Instances For
Divisor selecting the middle count digit.
Instances For
Packed-field radix, distinct from the half-word multiplication radix.
Instances For
Largest compressed payload.
Instances For
The arithmetic sketch and the perfect sketch compare identically for all inputs, including inputs outside the stored key set and outside the physical word range.
Weak comparisons agree too, including equality queries.
The concrete stored arithmetic sketches remain strictly increasing.
Capacity supplies the full packed-count multiplication bound.
Capacity also supplies the odd-width-aware half-word extraction bound.
Distinct perfect sketches give a numerical bound on the number of stored keys.
In particular the separately stored occupancy is a physical word.
The inclusive arithmetic rank counts perfect sketches at or below every query. This is a sketch rank, not the predecessor rank of the original keys.
Strict arithmetic rank agrees with the perfect-sketch strict rank for every query, including zero and queries with the same sketch as a stored key.
Slot order: input mask, three multiplier digits, retained mask, copies, complemented packed sketches, original packed sketches, guards, payload width, middle divisor, field radix, maximum payload, odd-width offset, selected-bit count. The node tag, occupancy and minimum belong to the separate three-word header.
Instances For
Every actual stored parameter is a physical word. The full multiplier is stored only as three digits, because its unbounded numeric value may exceed a physical word.
Real preprocessing witnesses exist; no correctness or timing oracle is assumed.
Static preprocessing explicitly uses classical choice; no preprocessing-time bound.