Arithmetic Shifts
To get an efficient evaluation algorithm for , we can bootstrap off of .
We first define the following auxiliary function, for each input in the cube :
We note that for each triple in the cube ,
So it suffices to construct an efficient circuit for .
The Auxiliary Functions
Once again, we define a sequence of auxiliary functions for each , now defined on .
Clearly, , so it suffices to treat the latter.
Recursive Construction
Once again, we get a recursive substructure:
-
Base Case.
- .
-
Inductive Case. For each and each input triple :
Here's a proof sketch. We want to know whether overflows modulo . If both summands' most-significant bits are 1, then we definitely get an overflow; if neither are, then we definitely don't. If exactly one of the bits and equals 1, then we get an overflow if and only if the less-significant substrings (excluding the most-significant bits), when added together, produce an overflow.
The Arithmetizations
Using this substructure, we once again get arithmetizations for the multilinear extensions .
-
Base Case.
- .
-
Inductive Case. For each and each :
- .
This completes the efficient arithmetization of the shift indicator functions.