pub struct MultipointEval<F>(/* private fields */);Implementations§
Source§impl<F> MultipointEval<F>where
F: InnerTransparentField + FromPrimitiveWithConfig + Send + Sync + 'static,
F::Inner: ConstTranscribable + Zero + Default + Send + Sync,
F::Modulus: ConstTranscribable,
impl<F> MultipointEval<F>where
F: InnerTransparentField + FromPrimitiveWithConfig + Send + Sync + 'static,
F::Inner: ConstTranscribable + Zero + Default + Send + Sync,
F::Modulus: ConstTranscribable,
Sourcepub fn prove_as_subprotocol(
transcript: &mut impl Transcript,
trace_mles: &[DenseMultilinearExtension<F::Inner>],
eval_point: &[F],
up_evals: &[F],
down_evals: &[F],
shifts: &[ShiftSpec],
field_cfg: &F::Config,
) -> Result<(Proof<F>, ProverState<F>), MultipointEvalError<F>>
pub fn prove_as_subprotocol( transcript: &mut impl Transcript, trace_mles: &[DenseMultilinearExtension<F::Inner>], eval_point: &[F], up_evals: &[F], down_evals: &[F], shifts: &[ShiftSpec], field_cfg: &F::Config, ) -> Result<(Proof<F>, ProverState<F>), MultipointEvalError<F>>
Multi-point evaluation protocol prover.
Runs the combined sumcheck over
eq(b, r') * \sum_j(\gamma_j * v_j(b)) + \sum_k \alpha_k * next_{c_k}(r', b) * v_{src_k}(b). Returns only the sumcheck proof
and the challenge point r_0; the caller is responsible for
computing and sending lifted_evals at r_0.
Sourcepub fn verify_as_subprotocol(
transcript: &mut impl Transcript,
proof: Proof<F>,
eval_point: &[F],
up_evals: &[F],
down_evals: &[F],
shifts: &[ShiftSpec],
num_vars: usize,
field_cfg: &F::Config,
) -> Result<Subclaim<F>, MultipointEvalError<F>>
pub fn verify_as_subprotocol( transcript: &mut impl Transcript, proof: Proof<F>, eval_point: &[F], up_evals: &[F], down_evals: &[F], shifts: &[ShiftSpec], num_vars: usize, field_cfg: &F::Config, ) -> Result<Subclaim<F>, MultipointEvalError<F>>
Multi-point evaluation protocol verifier (sumcheck phase).
Runs the sumcheck verification and computes the intermediate values
needed for the open-eval consistency check. Returns a Subclaim
carrying r_0, gammas, alphas, eq_at_r0, and
shifts_at_r0. The caller finalizes via
verify_subclaim once open_evals are
available.
Sourcepub fn verify_subclaim(
subclaim: &Subclaim<F>,
open_evals: &[F],
shifts: &[ShiftSpec],
field_cfg: &F::Config,
) -> Result<(), MultipointEvalError<F>>
pub fn verify_subclaim( subclaim: &Subclaim<F>, open_evals: &[F], shifts: &[ShiftSpec], field_cfg: &F::Config, ) -> Result<(), MultipointEvalError<F>>
Finalize the multi-point evaluation check given open_evals.
Verifies that
eq_at_r0 * \sum_j(gamma_j * open_eval_j) + \sum_k(alpha_k * shift_at_r0_k * open_eval[source_col_k]) equals the sumcheck’s
expected evaluation. This is a pure arithmetic check with no
transcript interaction.
Auto Trait Implementations§
impl<F> Freeze for MultipointEval<F>
impl<F> RefUnwindSafe for MultipointEval<F>where
F: RefUnwindSafe,
impl<F> Send for MultipointEval<F>where
F: Send,
impl<F> Sync for MultipointEval<F>where
F: Sync,
impl<F> Unpin for MultipointEval<F>where
F: Unpin,
impl<F> UnsafeUnpin for MultipointEval<F>
impl<F> UnwindSafe for MultipointEval<F>where
F: 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
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