pub struct SharedMleCheckProver<'a, A: Allocator, F: Field, P: PackedField<Scalar = F>, Evaluator> { /* private fields */ }Expand description
A MleCheckProver over a shared MleStore and a group of MleCheckRoundEvaluators.
This is the MLE-check counterpart of SharedSumcheckProver: every evaluator’s claim shares
the prover’s evaluation point, and the round polynomials are the eq-factored prime polynomials
of the MLE-check protocol. Because the point is shared, the prover owns its eq-indicator tracker
and hands the round’s eq chunk and coordinate to the evaluators, which therefore store no
tracker id.
Implementations§
Sourcepub fn new(
store: MleStore<'a, A, P>,
claims_with_evaluators: impl IntoIterator<Item = (F, Evaluator)>,
eval_point: Vec<F>,
) -> Self
pub fn new( store: MleStore<'a, A, P>, claims_with_evaluators: impl IntoIterator<Item = (F, Evaluator)>, eval_point: Vec<F>, ) -> Self
Creates a prover from a store, the evaluators reading its columns each paired with its
initial claim — one (claim, evaluator) per claim — and the evaluation point shared by all
of the evaluators’ claims.
Converts this MLE-check prover into a plain SharedSumcheckProver by folding each claim’s
equality factor into its emitted round polynomials — the Gruen24 technique of
MleToSumCheckEvaluator.
This lets an eq-weighted claim batch in one evaluator group alongside plain sumcheck claims
over the same store: the logUp* pushforward reduction converts its evaluation claim on Y,
then adds the eq-free product evaluator to it. The store and its columns carry over
untouched; only the evaluators are wrapped, sharing this prover’s eq tracker.
Trait Implementations§
Source§fn execute(&mut self) -> Vec<RoundCoeffs<F>>
fn execute(&mut self) -> Vec<RoundCoeffs<F>>
Source§fn finish(self) -> Vec<F>
fn finish(self) -> Vec<F>
Source§fn eval_point(&self) -> &[F]
fn eval_point(&self) -> &[F]
Auto Trait Implementations§
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