pub struct BooleanityChecker<F: InnerTransparentField>(/* private fields */);Expand description
Booleanity sumcheck group constructor / verifier.
Implementations§
Source§impl<F> BooleanityChecker<F>where
F: InnerTransparentField + Send + Sync + 'static,
F::Inner: ConstTranscribable + Clone + Send + Sync + Zero + Default,
F::Modulus: ConstTranscribable,
impl<F> BooleanityChecker<F>where
F: InnerTransparentField + Send + Sync + 'static,
F::Inner: ConstTranscribable + Clone + Send + Sync + Zero + Default,
F::Modulus: ConstTranscribable,
Sourcepub fn prepare_sumcheck_group<const D: usize>(
transcript: &mut impl Transcript,
trace_bin_poly: &[DenseMultilinearExtension<BinaryPoly<D>>],
num_vars: usize,
field_cfg: &F::Config,
) -> Result<(MultiDegreeSumcheckGroup<F>, BoolProverAncillary), BooleanityError<F>>
pub fn prepare_sumcheck_group<const D: usize>( transcript: &mut impl Transcript, trace_bin_poly: &[DenseMultilinearExtension<BinaryPoly<D>>], num_vars: usize, field_cfg: &F::Config, ) -> Result<(MultiDegreeSumcheckGroup<F>, BoolProverAncillary), BooleanityError<F>>
Build the booleanity sumcheck group, to be appended to the multi-degree sumcheck.
Sourcepub fn finalize_prover(
transcript: &mut impl Transcript,
sumcheck_prover_state: SumcheckProverState<F>,
ancillary: BoolProverAncillary,
field_cfg: &F::Config,
) -> Result<BooleanityProof<F>, BooleanityError<F>>
pub fn finalize_prover( transcript: &mut impl Transcript, sumcheck_prover_state: SumcheckProverState<F>, ancillary: BoolProverAncillary, field_cfg: &F::Config, ) -> Result<BooleanityProof<F>, BooleanityError<F>>
Finalize the booleanity proof after the multi-degree sumcheck completes.
Mirrors the structure of CombinedPolyResolver::finalize_prover:
evaluates each bit-slice MLE at the final sumcheck challenge,
emits the flat bit_slice_evals vector, and absorbs it into the
transcript.
Sourcepub fn prepare_verifier(
transcript: &mut impl Transcript,
claimed_sum: &F,
num_wit_bin_cols: usize,
bit_width: usize,
num_vars: usize,
field_cfg: &F::Config,
) -> Result<BoolVerifierAncillary<F>, BooleanityError<F>>
pub fn prepare_verifier( transcript: &mut impl Transcript, claimed_sum: &F, num_wit_bin_cols: usize, bit_width: usize, num_vars: usize, field_cfg: &F::Config, ) -> Result<BoolVerifierAncillary<F>, BooleanityError<F>>
Pre-sumcheck half of the booleanity verifier.
Must run after the CPR prepare_verifier and before
MultiDegreeSumcheck::verify_as_subprotocol to maintain transcript
ordering.
Sourcepub fn finalize_verifier(
transcript: &mut impl Transcript,
proof: BooleanityProof<F>,
shared_point: Vec<F>,
expected_evaluation: &F,
ancillary: BoolVerifierAncillary<F>,
field_cfg: &F::Config,
) -> Result<BoolVerifierSubclaim<F>, BooleanityError<F>>
pub fn finalize_verifier( transcript: &mut impl Transcript, proof: BooleanityProof<F>, shared_point: Vec<F>, expected_evaluation: &F, ancillary: BoolVerifierAncillary<F>, field_cfg: &F::Config, ) -> Result<BoolVerifierSubclaim<F>, BooleanityError<F>>
Post-sumcheck half of the booleanity verifier.
Validates the length of bit_slice_evals, recomputes the expected
combination-function evaluation at the shared sumcheck point r*
using the received bit_slice_evals, and compares it against the
sumcheck’s expected_evaluation. On success, absorbs
bit_slice_evals into the transcript (mirroring the prover’s
final absorption in finalize_prover).
Auto Trait Implementations§
impl<F> Freeze for BooleanityChecker<F>
impl<F> RefUnwindSafe for BooleanityChecker<F>where
F: RefUnwindSafe,
impl<F> Send for BooleanityChecker<F>
impl<F> Sync for BooleanityChecker<F>
impl<F> Unpin for BooleanityChecker<F>where
F: Unpin,
impl<F> UnsafeUnpin for BooleanityChecker<F>
impl<F> UnwindSafe for BooleanityChecker<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