pub fn verify<FGenerator, F, Transcript, const EXPONENT_BIT_WIDTH: usize>(
claim: &LayerClaim<F>,
transcript: Transcript,
log_size: usize,
) -> Result<GeneratorExponentReductionOutput<F, EXPONENT_BIT_WIDTH>, Error>where
FGenerator: TowerField,
F: TowerField + ExtensionField<FGenerator>,
Transcript: CanSample<F> + CanRead,
Expand description
This is the verification side of the following interactive protocol Consider the multilinears a_0, a_1, …, a_63 (here EXPONENT_BIT_WIDTH = 64) At each point on the hypercube, we construct the 64-bit integer a(X) as a(X) = 2^0 * a_0(X) + 2^1 * a_1(X) + 2^2 * a_2(X) … + 2^63 * a_63(X)
The multilinear n has values at each point on the hypercube such that
g^a(X) = n(X) for all X on the hypercube
This interactive protocol reduces a claimed evaluation of n to claimed evaluations of the a_i’s
Input: One evaluation claim on n
Output: EXPONENT_BITS_WIDTH separate claims (at different points) on each of the a_i’s