Struct kimchi_msm::column_env::ColumnEnvironment
source · 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>
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
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>>>
fn get_column( &self, col: &Self::Column ) -> Option<&'a Evaluations<F, Radix2EvaluationDomain<F>>>
Return the evaluation of the given column, over the domain.
fn get_domain(&self, d: Domain) -> Radix2EvaluationDomain<F>
source§fn column_domain(&self, col: &Self::Column) -> Domain
fn column_domain(&self, col: &Self::Column) -> Domain
Defines the domain over which the column is evaluated
source§fn get_constants(&self) -> &Constants<F>
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>
fn get_challenges(&self) -> &BerkeleyChallenges<F>
Return the challenges, coined by the verifier.
fn vanishes_on_zero_knowledge_and_previous_rows( &self ) -> &'a Evaluations<F, Radix2EvaluationDomain<F>>
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> 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