pub trait AbstractSumcheckWitness<PW: PackedField> {
    type MultilinearId: Clone + Hash + Eq + Sync;
    type Composition: CompositionPoly<PW>;
    type Multilinear: MultilinearPoly<PW> + Send + Sync;

    // Required methods
    fn composition(&self) -> &Self::Composition;
    fn multilinears(
        &self,
        seq_id: usize,
        claim_multilinear_ids: &[Self::MultilinearId]
    ) -> Result<impl IntoIterator<Item = (Self::MultilinearId, Self::Multilinear)>, Error>;
}
Expand description

Polynomial must be representable as a composition of multilinear polynomials

Required Associated Types§

source

type MultilinearId: Clone + Hash + Eq + Sync

Some identifier of a multilinear witness that is used to deduplicate the witness index when folding.

source

type Composition: CompositionPoly<PW>

source

type Multilinear: MultilinearPoly<PW> + Send + Sync

Required Methods§

source

fn composition(&self) -> &Self::Composition

source

fn multilinears( &self, seq_id: usize, claim_multilinear_ids: &[Self::MultilinearId] ) -> Result<impl IntoIterator<Item = (Self::MultilinearId, Self::Multilinear)>, Error>

Extract multilinear witnesses out of composite sumcheck witness.

Arguments:

  • seq_id: Sequential id of the sumcheck instance in a batch (treat as if assigned arbitrarily)
  • claim_multilinear_ids: Multilinear identifiers extracted from a claim.

Object Safety§

This trait is not object safe.

Implementations on Foreign Types§

source§

impl<'a, PW: PackedField, T: 'a + AbstractSumcheckWitness<PW> + ?Sized> AbstractSumcheckWitness<PW> for &'a T

§

type MultilinearId = <T as AbstractSumcheckWitness<PW>>::MultilinearId

§

type Composition = <T as AbstractSumcheckWitness<PW>>::Composition

§

type Multilinear = <T as AbstractSumcheckWitness<PW>>::Multilinear

source§

fn composition(&self) -> &Self::Composition

source§

fn multilinears( &self, seq_id: usize, claim_multilinear_ids: &[Self::MultilinearId] ) -> Result<impl IntoIterator<Item = (Self::MultilinearId, Self::Multilinear)>, Error>

Implementors§