RAM sparse-entry matching — definitions #
entryMatchTM is the concrete unit consumed by a bounded sparse-store scan.
It decodes one address/value entry and compares the decoded address with a
preserved canonical query. The result is appended to a dedicated work tape.
Nine pairwise-distinct work tapes used to decode and match one sparse register-store entry.
Tape assignment in the order source, address, value, address counter, address width, value counter, value width, query, and result.
- injective : Function.Injective self.idx
Instances For
The seven decoder tapes contained in an entry-matching assignment.
Instances For
Encoded entry-stream source tape.
Instances For
Decoded address scratch tape.
Instances For
Decoded value scratch tape.
Instances For
Binary loop counter used while decoding the address.
Equations
- tapes.addressCounter = tapes.idx 3
Instances For
Preserved address payload-width tape.
Equations
- tapes.addressWidth = tapes.idx 4
Instances For
Binary loop counter used while decoding the value.
Equations
- tapes.valueCounter = tapes.idx 5
Instances For
Preserved value payload-width tape.
Equations
- tapes.valueWidth = tapes.idx 6
Instances For
Canonical query-address tape.
Instances For
Boolean match-result tape.
Instances For
Decode one sparse entry with unary markers and compare its address with the preserved query.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Decode and compare one sparse entry, then rewind the one-bit result to its canonical cell-one read position.
Equations
Instances For
Runtime bound for a readable one-entry match, including both composition seams and the at-most-four-step rewind of the one-bit result.
Equations
- Complexity.RAM.RegisterStore.Machine.entryMatchReadTime entry queryBits = Complexity.RAM.RegisterStore.Machine.entryMatchTime entry queryBits + 1 + 4
Instances For
Auditable endpoint contract for one readable sparse-entry match. The decoded scratch remains available to a hit branch or can be cleared by a miss branch; the result is parked at cell one for direct controller inspection.
- source : (finalWork tapes.source).HasBinarySuffix rest
- address : (finalWork tapes.address).HasBinaryContent entry.1.bits
- value : (finalWork tapes.value).HasBinaryPrefix entry.2.bits
- addressCounter : (finalWork tapes.addressCounter).HasBinaryPrefix (List.replicate (bitlen entry.1) true)
- addressWidth : (finalWork tapes.addressWidth).HasBinaryNat 0
- valueCounter : (finalWork tapes.valueCounter).HasBinaryPrefix (List.replicate (bitlen entry.2) true)
- valueWidth : (finalWork tapes.valueWidth).HasBinaryNat 0
- query : (finalWork tapes.query).HasBinaryContent queryBits
- frame (i : Fin n) : i ≠ tapes.source → i ≠ tapes.address → i ≠ tapes.value → i ≠ tapes.addressCounter → i ≠ tapes.addressWidth → i ≠ tapes.valueCounter → i ≠ tapes.valueWidth → i ≠ tapes.query → i ≠ tapes.result → finalWork i = initialWork i