LogUp: multivariate lookups with logarithmic derivatives
LogUp proves multiset equality through logarithmic derivatives. Given a column of lookup requests and a table column with multiplicities , the basic identity is:
In the above:
- is the number of values in , which must be smaller than the size of the field. The Miden base field has modulus , so .
- is the number of values in , which must also satisfy .
- is the multiplicity of , which is expected to match the number of times occurs in .
- is a random value sent to the prover after it commits to the execution trace.
The equality of these rational sums implies equality of the encoded multisets except with the standard challenge-collision and zero-denominator probability.
Usage in Miden VM
Miden VM uses LogUp for both virtual tables and communication buses. The diagrams below illustrate the basic request-and-table construction, where component requests values supplied by table .


Typed message encoding
Every interaction has a BusId and payload values assigned to fixed positions within a width-
message. After the prover commits to the main traces, the verifier samples extension-field
challenges and . For zero-based bus identifier , let be the value in
payload position , or zero when that position is unused. The denominator is
The bus prefix domain-separates message types, while each message schema assigns its fields to fixed payload positions. Contributions with the same encoded denominator balance when their signed multiplicities sum to zero, except with the standard challenge-collision probability.
Signed interactions
An interaction with signed multiplicity contributes to the LogUp sum. The native VM execution proof assigns positive multiplicities to providers and virtual-table insertions, and negative multiplicities to consumers and virtual-table removals. A table row may use a larger multiplicity to provide the same encoded value several times.
The aggregate precompile proof fixes polarity per relation schema. Many arithmetic and storage relations use positive consumers and negative providers, while Eidos owner/controller relations use the native VM orientation. Globally negating every endpoint of any one relation is equivalent; what matters is that its providers and consumers use opposite signs consistently.
For row , let
be the sum of all interactions emitted on that row.
Constraints
AIR constraints do not divide by encoded messages. For each packed set of row interactions, the lookup builder derives a numerator and denominator such that is their rational sum. Column 0 is the running accumulator; columns hold additional per-row fraction sums when one accumulator cannot contain every interaction within the AIR's degree bound. The fraction columns are constrained on every row by
The column-0 transition folds those values into the running accumulator. In the normalized cyclic form described below, its cross-multiplied constraint is
where is the number of LogUp columns in the AIR.
Normalized cyclic closure
For an AIR with rows, define
The AIR commits to and constrains an accumulator anchored at by
The recurrence is enforced on every row, including the last-to-first edge. Summing the recurrence equations yields .
The native VM execution proof contains four AIRs with independent trace lengths: Core, Chiplets,
Eidos compression, and the fixed And8 table. Each uses the normalized cyclic form above. The
verifier closes their shared buses with
where is AIR 's trace length and is the signed sum of once-per-proof interactions derived from public statement data. Boundary contributions are added once; they are not scaled by a trace length.
Aggregate precompile proof
Every AIR in the aggregate precompile proof uses the same normalized cyclic form. Each AIR commits , and the external closure reconstructs every raw sum by multiplying the residue by that AIR's trace length:
Extending the construction to multiple components
The same bus may receive interactions from multiple components. Each interaction contributes its own signed fraction to :
The lookup layout splits or packs these terms across auxiliary columns so that every cross-multiplied constraint remains within the AIR's declared degree bound.
Extending the construction with flags
Boolean flags determine whether an interaction is present. If and select requests from and , their row contribution is
The selector degree contributes to the cross-multiplied constraint degree and therefore affects how many interactions can share an auxiliary column.