pub struct MleCheckMaskProver<F: Field, P: PackedField<Scalar = F>, Data: Deref<Target = [P]>> { /* private fields */ }Expand description
Prover for the Libra mask polynomial in ZK MLE-check.
The mask polynomial has the separable form $g(X_0, …, X_{n-1}) = sum_{i} g_i(X_i)$, where each $g_i$ is a univariate polynomial of configurable degree.
This structure allows efficient round polynomial computation in O(degree) time per round.
Implementations§
Source§impl<F: Field, P: PackedField<Scalar = F>, Data: Deref<Target = [P]>> MleCheckMaskProver<F, P, Data>
impl<F: Field, P: PackedField<Scalar = F>, Data: Deref<Target = [P]>> MleCheckMaskProver<F, P, Data>
Sourcepub fn new(mask: Mask<P, Data>, eval_point: Vec<F>, eval_claim: F) -> Self
pub fn new(mask: Mask<P, Data>, eval_point: Vec<F>, eval_claim: F) -> Self
Creates a new prover for the Libra mask polynomial.
§Arguments
mask- The mask polynomial (takes ownership).eval_point- The evaluation point z for the MLE-check claim, in high-to-low order.eval_claim- The claimed value of the MLE of g at the evaluation point.
§Panics
Panics if mask.n_vars() != eval_point.len().
Trait Implementations§
Source§impl<F: Field, P: PackedField<Scalar = F>, Data: Deref<Target = [P]>> MleCheckProver<F> for MleCheckMaskProver<F, P, Data>
impl<F: Field, P: PackedField<Scalar = F>, Data: Deref<Target = [P]>> MleCheckProver<F> for MleCheckMaskProver<F, P, Data>
Source§fn execute(&mut self) -> Vec<RoundCoeffs<F>>
fn execute(&mut self) -> Vec<RoundCoeffs<F>>
Computes this round’s message, one univariate polynomial per claim. Read more
Source§fn finish(self) -> Vec<F>
fn finish(self) -> Vec<F>
Consumes the prover and returns every multilinear’s evaluation at the challenge point.
Source§fn eval_point(&self) -> &[F]
fn eval_point(&self) -> &[F]
The still-unbound part of the evaluation point, one coordinate per free variable.
Auto Trait Implementations§
impl<F, P, Data> Freeze for MleCheckMaskProver<F, P, Data>
impl<F, P, Data> RefUnwindSafe for MleCheckMaskProver<F, P, Data>where
F: RefUnwindSafe,
Data: RefUnwindSafe,
impl<F, P, Data> Send for MleCheckMaskProver<F, P, Data>where
Data: Send,
impl<F, P, Data> Sync for MleCheckMaskProver<F, P, Data>where
Data: Sync,
impl<F, P, Data> Unpin for MleCheckMaskProver<F, P, Data>
impl<F, P, Data> UnsafeUnpin for MleCheckMaskProver<F, P, Data>where
F: UnsafeUnpin,
Data: UnsafeUnpin,
impl<F, P, Data> UnwindSafe for MleCheckMaskProver<F, P, Data>where
F: UnwindSafe,
Data: 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
Mutably borrows from an owned value. Read more
§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> ⓘ
Converts
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> ⓘ
Converts
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