Native frontend array and descriptor execution #
Main results #
The compact scan contract is composed with every array setup and descriptor store.
Local arithmetic budget covers array addresses, native labels and loop setup.
Instances For
The hypotheses of a concrete compact scan, before choosing its bit coordinates and mode.
The source length is the distinct-key count.
- constants : x.regs Select.zero = 0 ∧ x.regs Select.one = 1 ∧ x.regs Select.two = 2 ∧ x.regs Select.three = 3 ∧ x.regs Select.four = 4 ∧ x.regs Select.five = 5
Native small constants.
Both radix arrays have exact contents.
- counts : WordRAM.Block.HoldsList (x.regs Scan.counts) (List.map Prod.snd rs) x.mem
- words (p : ℕ × ℕ) : p ∈ rs → WordRAM.Fits w p.1
Every key and the native label arithmetic fit.
- labels : WordRAM.Fits w (4 * x.regs Select.magnitude + 2)
- small : WordRAM.Fits w 5
- keyAddress : WordRAM.Fits w (x.regs Scan.keys + rs.length)
Source and output endpoints fit.
- countAddress : WordRAM.Fits w (x.regs Scan.counts + rs.length)
Both source blocks precede the output.
Instances For
Parameters changed by split/mode setup.
Instances For
A mode/bit setup preserves every actual scan precondition.
Invoke the proved native scan from its actual arithmetic/layout context.
Select exactly the array named by one physical slot. Every split/multiplicity setup is executed; the width and label budget are scalar runtime values, independent of code size.
One complete array, its exact descriptor words, allocation advance and local frame.