LogUp*
Introduction
LogUp was originally designed as a protocol to prove non-indexed lookup arguments. In contrast, permutation arguments are defined in the indexed lookup form, and one typically reduces indexed lookup to non-indexed lookup in order to apply LogUp.
A non-indexed lookup argument deals with the problem of proving that, for two arrays with , the relation holds. In contrast, an indexed lookup argument introduces an index array in place of to carry out the proof. (Let's see how looks like later!)
LogUp* focuses on the following setting:
⇒ small table
consists of small elements.
consists of large elements ≈ 128-bit
In this situation, the standard reduction requires committing to the array (the pullback). While elliptic curve–based commitments offer some solutions, hash-based commitments do not provide an efficient method. The problem becomes particularly severe when the elements of must be defined over an extension field in order to achieve 128-bit security; the commitment cost grows prohibitively large according to the paper, roughly 6× the cost compared to plain LogUp.
LogUp* addresses this challenge by proposing an efficient alternative that is agnostic to both the underlying field and the commitment scheme.
Background
Non-indexed lookup
Pre-commitment: (, also called the multiplicity , indicates how many times each table element in is looked up by ).
Claim:
Challenge:
Verification:
Indexed lookup
Claim:
Example: If and , then in the indexed lookup setting we have , so that .
Reduction: indexed to non-indexed lookup
Pre-commitment:
Claim: (or you can say that is claimed to be pullback)
Challenge:
Verification:
LogUp* aims to eliminate the need for committing to in this reduction.
Protocol Explanation
Pullback and pushforward
Notations
Pullback:
Pushforward:
Lemma 1. Duality
Proof
Intuitive example
Let . Then .
If , then the right hand is computed as follows:
If , then the left hand is computed as follows:
Both sides match, confirming the duality.
Trading pullback for pushforward
Pre-commitment:
Claim:
Protocol
Commit to , where
Observe that
Run sumcheck for the claim , obtaining additional evaluation claims .
Open and .
This protocol proves the evaluation of , provided that was committed correctly. Note that the commitment to is not performed.
Then we need to check whether indeed is pushforward.
Pushforward proof with LogUp*
General Case
Pre-commitment:
Claim: is claimed to be pushforward as follows:
Challenge:
Verification:
Intuitively, if , then the left-hand side contributes , while the right-hand side uses to represent the same value.
Our Case
Pre-commitment: (here , and since the verifier can compute directly, there is no need to commit to ).
Challenge:
Verification:
Thus, the prover only commits to , while the verifier computes on its own to complete the verification.
References
Last updated

