pub struct SharedSumcheckProver<'a, A: Allocator, P: PackedField, Evaluator> { /* private fields */ }Expand description
A SumcheckProver over a shared MleStore and a list of SumcheckRoundEvaluators, one
per claim.
Each round makes one parallel pass over the store’s column chunks, feeding every evaluator,
and lists the round polynomials in evaluator registration order. Self::fold folds each
shared column and eq tracker once. Self::finish emits each store column’s evaluation once,
computed a single time by the store no matter how many claims read the column.
Implementations§
Sourcepub fn new(
store: MleStore<'a, A, P>,
claims_with_evaluators: impl IntoIterator<Item = (F, Evaluator)>,
) -> Self
pub fn new( store: MleStore<'a, A, P>, claims_with_evaluators: impl IntoIterator<Item = (F, Evaluator)>, ) -> Self
Creates a prover from a store and the evaluators reading its columns, each paired with its
initial claim — one (claim, evaluator) per claim.
Sourcepub const fn store(&self) -> &MleStore<'a, A, P>
pub const fn store(&self) -> &MleStore<'a, A, P>
Returns a shared reference to the underlying column store.
Sourcepub const fn store_mut(&mut self) -> &mut MleStore<'a, A, P>
pub const fn store_mut(&mut self) -> &mut MleStore<'a, A, P>
Returns an exclusive reference to the underlying column store.
Lets a caller extend the shared store with columns that a later-added evaluator reads: the logUp* final layer pushes the table halves onto it before adding its product evaluators.
Sourcepub fn add_evaluator(&mut self, claim: F, evaluator: Evaluator)
pub fn add_evaluator(&mut self, claim: F, evaluator: Evaluator)
Adds one more evaluator — a claim reading the shared store, with its initial claim — to the group.
Its round polynomial is appended after the existing evaluators’ in Self::execute.
Trait Implementations§
Source§fn n_vars(&self) -> usize
fn n_vars(&self) -> usize
Source§fn execute(&mut self) -> Vec<RoundCoeffs<F>>
fn execute(&mut self) -> Vec<RoundCoeffs<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