Skip to main content

quadratic_mlecheck_prover

Function quadratic_mlecheck_prover 

Source
pub fn quadratic_mlecheck_prover<'alloc, A, F, P, Composition, InfinityComposition, const N: usize>(
    alloc: &'alloc A,
    multilinears: [FieldVec<P, A>; N],
    composition: Composition,
    infinity_composition: InfinityComposition,
    eval_point: Vec<F>,
    eval_claim: F,
) -> SharedMleCheckProver<'alloc, A, F, P, QuadraticMleEvaluator<Composition, InfinityComposition, N>>
where A: Allocator, F: Field, P: PackedField<Scalar = F>, Composition: Fn([P; N]) -> P + Send + Sync, InfinityComposition: Fn([P; N]) -> P + Send + Sync,
Expand description

Builds an MLE-check prover for one quadratic composition of N owned multilinears.

The reduced claim is

    sum_{v in B} C(M_0(v), ..., M_{N-1}(v)) * eq(v, eval_point) = eval_claim

for composition C over the boolean hypercube B. It reduces to one evaluation claim per input multilinear at the challenge point.

This is the single-claim path. Several quadratic claims that share columns are instead proved together by registering one evaluator per claim on a shared store, which folds each shared column only once.

§Arguments

  • multilinears - The N input multilinears, each over eval_point.len() variables.
  • composition - Evaluates the quadratic composition, e.g. |[a, b, c]| a * b - c.
  • infinity_composition - The composition’s highest-degree terms, for the Karatsuba evaluation at infinity, e.g. |[a, b, _c]| a * b.
  • eval_point - The point at which the composite MLE is claimed.
  • eval_claim - The claimed evaluation of the composite MLE at eval_point.

§Returns

A prover whose reduction emits the N column evaluations in the order given.

§Panics

Panics if any multilinear’s variable count differs from eval_point.len(), or if N == 0.