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