pub struct QuadraticMleEvaluator<Composition, InfinityComposition, const N: usize> { /* private fields */ }Expand description
MLE-check round evaluator for one quadratic composition over N store columns.
This is the store-backed successor of the quadratic MLE-check prover: it evaluates the composition in one pass per round, using the degree-2 interpolation of Gruen24 section 3.2. Batch several quadratic MLE checks by registering one evaluator per claim on a shared store; they read the shared columns from the same round pass.
The evaluator emits the prime (eq-factored) round polynomial of the MLE-check protocol. Wrap it
in MleToSumCheckEvaluator to emit a regular sumcheck round
polynomial.
Implementations§
Source§impl<Composition, InfinityComposition, const N: usize> QuadraticMleEvaluator<Composition, InfinityComposition, N>
impl<Composition, InfinityComposition, const N: usize> QuadraticMleEvaluator<Composition, InfinityComposition, N>
Sourcepub fn new(
cols: [ColId; N],
composition: Composition,
infinity_composition: InfinityComposition,
) -> Self
pub fn new( cols: [ColId; N], composition: Composition, infinity_composition: InfinityComposition, ) -> Self
Creates an evaluator over the store columns cols.
The evaluator holds no eq-indicator tracker and no copy of the evaluation point: the driving
SharedMleCheckProver owns the shared point’s tracker and passes the round’s eq chunk and
coordinate in. The claimed evaluation is likewise held by the prover, not the evaluator.
§Arguments
cols- The N store columns the composition reads.composition- Evaluates the quadratic composition of the N column values.infinity_composition- The composition restricted to its highest-degree terms, for the Karatsuba evaluation at infinity.
Trait Implementations§
Source§impl<F, P, Composition, InfinityComposition, const N: usize> MleCheckRoundEvaluator<F, P> for QuadraticMleEvaluator<Composition, InfinityComposition, N>
impl<F, P, Composition, InfinityComposition, const N: usize> MleCheckRoundEvaluator<F, P> for QuadraticMleEvaluator<Composition, InfinityComposition, N>
Source§fn degree(&self) -> usize
fn degree(&self) -> usize
SumcheckRoundEvaluator::degree.Source§fn accumulate(
&self,
chunk: &EvaluationChunk<'_, P>,
eq_ind: FieldSlice<'_, P>,
accum: &mut [<P as WideMul>::Output],
)
fn accumulate( &self, chunk: &EvaluationChunk<'_, P>, eq_ind: FieldSlice<'_, P>, accum: &mut [<P as WideMul>::Output], )
accum. Read moreSource§fn interpolate(
&self,
ctx: &RoundContext<'_, P>,
accum: &[P],
claim: F,
alpha: F,
) -> RoundCoeffs<F>
fn interpolate( &self, ctx: &RoundContext<'_, P>, accum: &[P], claim: F, alpha: F, ) -> RoundCoeffs<F>
Auto Trait Implementations§
impl<Composition, InfinityComposition, const N: usize> Freeze for QuadraticMleEvaluator<Composition, InfinityComposition, N>
impl<Composition, InfinityComposition, const N: usize> RefUnwindSafe for QuadraticMleEvaluator<Composition, InfinityComposition, N>where
Composition: RefUnwindSafe,
InfinityComposition: RefUnwindSafe,
impl<Composition, InfinityComposition, const N: usize> Send for QuadraticMleEvaluator<Composition, InfinityComposition, N>
impl<Composition, InfinityComposition, const N: usize> Sync for QuadraticMleEvaluator<Composition, InfinityComposition, N>
impl<Composition, InfinityComposition, const N: usize> Unpin for QuadraticMleEvaluator<Composition, InfinityComposition, N>
impl<Composition, InfinityComposition, const N: usize> UnsafeUnpin for QuadraticMleEvaluator<Composition, InfinityComposition, N>where
Composition: UnsafeUnpin,
InfinityComposition: UnsafeUnpin,
impl<Composition, InfinityComposition, const N: usize> UnwindSafe for QuadraticMleEvaluator<Composition, InfinityComposition, N>where
Composition: UnwindSafe,
InfinityComposition: UnwindSafe,
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more