Logical Shifts
Recall that our goal is to come up with efficient evaluation procedures for the multilinear extensions , for each . We defined those polynomials during our discussion of shifted witness polynomials.
Our task in this page is going to be to handle . We claim that if we can handle , we will get thrown in for free. Indeed, for each ,
that is, on the cube, these functions just differ by a transposition of their first two arguments. Moreover, this fact carries over to their multilinear extensions.
The Auxiliary Functions
For each , we will define two auxiliary functions, both defined on :
In each case, we write for the little-endian bitstring-to-integer function. So tracks whether , , , interpreted as integers, are such that ; does the same thing, but modulo an overflow into the th bit position.
Note first that , so . Thus if we produce an efficient circuit for , then that will be enough to achieve (and hence also , as we argued above).
Recursive Construction
We first note that and (without the tildes) have a recursive substructure.
-
Base Case.
- .
- .
-
Inductive Case. For each and each input triple :
This is a claim, not a definition (we already defined these functions above). We understand all sum expressions in the cases above as taking place over the integers. This fact is essentially true "by inspection", and comes from [DP25, § 4.3].
The Case Breakdowns
To arithmetize these, we need to break down the possible cases. For example, for which bit-triples does it hold that , as integers?
We answer this question now. We abbreviate . For each :
- holds (over ) if and only if .
- holds (over ) if and only if .
- holds (over ) if and only if .
- holds (over ) if and only if .
This gives a pathway towards arithmetization. The next step is to write down multilinear polynomials in whose restrictions to respectively "indicate" each of the four subsets above. We know that this is possible, by Lagrange interpolation. As it happens, by being cleverer, we can find expressions for these that use very few multiplications a piece (in fact just 2 in each case, which seems to be optimal).
- holds (over ) if and only if (over ).
- holds (over ) if and only if (over ).
- holds (over ) if and only if (over .
- holds (over ) if and only if (over ).
As a sanity check, note that since the middle two bullets need to be 1 at just one point, we can get away in those two cases with just a single multilinear Lagrange basis polynomial. The other cases are more complicated, but still can get by with just two multiplications each.
The Arithmetizations
We're now ready to arithmetize and . Indeed, our arithmetizations come from the above:
-
Base Case.
- .
- .
-
Inductive Case. For each and each input triple :
This shows that for any , we can compute recursively. We initialize two registers, valued and , respectively. Then, we make 6 passes over those two registers, indexed . In each pass, we can "advance" the state of the two registers by doing no more than 12 multiplications. The total number of multiplications is .