pub struct ColumnEnvironment<'a, const N: usize, const N_REL: usize, const N_DSEL: usize, const N_FSEL: usize, F: FftField, ID: LookupTableID> {
    pub witness: &'a Witness<N, Evaluations<F, Radix2EvaluationDomain<F>>>,
    pub fixed_selectors: &'a [Evaluations<F, Radix2EvaluationDomain<F>>; N_FSEL],
    pub l0_1: F,
    pub constants: Constants<F>,
    pub challenges: BerkeleyChallenges<F>,
    pub domain: EvaluationDomains<F>,
    pub lookup: Option<QuotientPolynomialEnvironment<'a, F, ID>>,
}
Expand description

The collection of polynomials (all in evaluation form) and constants required to evaluate an expression as a polynomial.

All are evaluations.

Fields§

§witness: &'a Witness<N, Evaluations<F, Radix2EvaluationDomain<F>>>

The witness column polynomials. Includes relation columns, fixed selector columns, and dynamic selector columns.

§fixed_selectors: &'a [Evaluations<F, Radix2EvaluationDomain<F>>; N_FSEL]

Fixed selectors. These are “predefined” with the circuit, and, unlike public input or dynamic selectors, are not part of the witness that users are supposed to change after the circuit is fixed.

§l0_1: F

The value prod_{j != 1} (1 - omega^j), used for efficiently computing the evaluations of the unnormalized Lagrange basis polynomials.

§constants: Constants<F>

Constant values required

§challenges: BerkeleyChallenges<F>

Challenges from the IOP.

§domain: EvaluationDomains<F>

The domains used in the PLONK argument.

§lookup: Option<QuotientPolynomialEnvironment<'a, F, ID>>

Lookup specific polynomials

Trait Implementations§

source§

impl<'a, const N_WIT: usize, const N_REL: usize, const N_DSEL: usize, const N_FSEL: usize, F: FftField, ID: LookupTableID> ColumnEnvironment<'a, F, BerkeleyChallengeTerm, BerkeleyChallenges<F>> for ColumnEnvironment<'a, N_WIT, N_REL, N_DSEL, N_FSEL, F, ID>

§

type Column = Column

The generic type of column the environment can use. In other words, with the multi-variate polynomial analogy, it is the variables the multi-variate polynomials are defined upon. i.e. for a polynomial P(X, Y, Z), the type will represent the variable X, Y and Z.
source§

fn get_column( &self, col: &Self::Column ) -> Option<&'a Evaluations<F, Radix2EvaluationDomain<F>>>

Return the evaluation of the given column, over the domain.
source§

fn get_domain(&self, d: Domain) -> Radix2EvaluationDomain<F>

source§

fn column_domain(&self, col: &Self::Column) -> Domain

Defines the domain over which the column is evaluated
source§

fn get_constants(&self) -> &Constants<F>

Return the constants parameters that the expression might use. For instance, it can be the matrix used by the linear layer in the permutation.
source§

fn get_challenges(&self) -> &BerkeleyChallenges<F>

Return the challenges, coined by the verifier.
source§

fn vanishes_on_zero_knowledge_and_previous_rows( &self ) -> &'a Evaluations<F, Radix2EvaluationDomain<F>>

source§

fn l0_1(&self) -> F

Return the value prod_{j != 1} (1 - omega^j), used for efficiently computing the evaluations of the unnormalized Lagrange basis polynomials.

Auto Trait Implementations§

§

impl<'a, const N: usize, const N_REL: usize, const N_DSEL: usize, const N_FSEL: usize, F, ID> RefUnwindSafe for ColumnEnvironment<'a, N, N_REL, N_DSEL, N_FSEL, F, ID>where F: RefUnwindSafe, ID: RefUnwindSafe,

§

impl<'a, const N: usize, const N_REL: usize, const N_DSEL: usize, const N_FSEL: usize, F, ID> Send for ColumnEnvironment<'a, N, N_REL, N_DSEL, N_FSEL, F, ID>

§

impl<'a, const N: usize, const N_REL: usize, const N_DSEL: usize, const N_FSEL: usize, F, ID> Sync for ColumnEnvironment<'a, N, N_REL, N_DSEL, N_FSEL, F, ID>

§

impl<'a, const N: usize, const N_REL: usize, const N_DSEL: usize, const N_FSEL: usize, F, ID> Unpin for ColumnEnvironment<'a, N, N_REL, N_DSEL, N_FSEL, F, ID>where F: Unpin,

§

impl<'a, const N: usize, const N_REL: usize, const N_DSEL: usize, const N_FSEL: usize, F, ID> UnwindSafe for ColumnEnvironment<'a, N, N_REL, N_DSEL, N_FSEL, F, ID>where F: UnwindSafe + RefUnwindSafe, ID: RefUnwindSafe,

Blanket Implementations§

source§

impl<T> Any for Twhere T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for Twhere U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

§

impl<T> Pointable for T

§

const ALIGN: usize = mem::align_of::<T>()

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
source§

impl<T> Same<T> for T

§

type Output = T

Should always be Self
source§

impl<T, U> TryFrom<U> for Twhere U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<V, T> VZip<V> for Twhere V: MultiLane<T>,

§

fn vzip(self) -> V