Skip to main content

InfoEvaluator

Struct InfoEvaluator 

Source
pub struct InfoEvaluator {
    pub mask_offsets: TreeVec<Vec<Vec<isize>>>,
    pub n_constraints: usize,
    pub preprocessed_columns: Vec<PreProcessedColumnId>,
    pub logup: LogupAtRow<Self>,
    pub arithmetic_counts: ArithmeticCounts,
    pub logup_counts: LogupCountPerRow,
}
Expand description

Collects information about the constraints. This includes mask offsets and columns at each interaction, the number of constraints and number of arithmetic operations.

Fields§

§mask_offsets: TreeVec<Vec<Vec<isize>>>§n_constraints: usize§preprocessed_columns: Vec<PreProcessedColumnId>§logup: LogupAtRow<Self>§arithmetic_counts: ArithmeticCounts§logup_counts: LogupCountPerRow

Implementations§

Source§

impl InfoEvaluator

Source

pub fn new( log_size: u32, preprocessed_columns: Vec<PreProcessedColumnId>, claimed_sum: SecureField, ) -> Self

Source

pub fn empty() -> Self

Create an empty InfoEvaluator, to measure components before their size and logup sums are available.

Trait Implementations§

Source§

impl Default for InfoEvaluator

Source§

fn default() -> InfoEvaluator

Returns the “default value” for a type. Read more
Source§

impl EvalAtRow for InfoEvaluator

Source§

fn finalize_logup_batched(&mut self, batching: &Vec<usize>)

Finalize the logup by adding the constraints for the fractions, batched by the given batching. batching should contain the batch into which every logup entry should be inserted.

Source§

fn finalize_logup(&mut self)

Finalizes the row’s logup in the default way. Currently, this means no batching.

Source§

fn finalize_logup_in_pairs(&mut self)

Finalizes the row’s logup, batched in pairs. TODO(alont) Remove this once a better batching mechanism is implemented.

Source§

type F = ArithmeticCounter<false>

The field type holding values of columns for the component. These are the inputs to the constraints. It might be BaseField packed types, or even SecureField, when evaluating the columns out of domain.
Source§

type EF = ArithmeticCounter<true>

A field type representing the closure of F with multiplying by SecureField. Constraints usually get multiplied by SecureField values for security.
Source§

fn next_interaction_mask<const N: usize>( &mut self, interaction: usize, offsets: [isize; N], ) -> [Self::F; N]

Returns the mask values of the given offsets for the next column in the interaction.
Source§

fn get_preprocessed_column(&mut self, column: PreProcessedColumnId) -> Self::F

Source§

fn add_constraint<G>(&mut self, constraint: G)
where Self::EF: Mul<G, Output = Self::EF>,

Adds a constraint to the component.
Source§

fn combine_ef(values: [Self::F; 4]) -> Self::EF

Combines 4 base field values into a single extension field value.
Source§

fn add_to_relation<R: Relation<Self::F, Self::EF>>( &mut self, entry: RelationEntry<'_, Self::F, Self::EF, R>, )

Adds entry.values to entry.relation with entry.multiplicity for all ‘entry’ in ‘entries’, batched together. Constraint degree increases with number of batched constraints as the denominators are multiplied.
Source§

fn write_logup_frac(&mut self, fraction: Fraction<Self::EF, Self::EF>)

Source§

fn next_trace_mask(&mut self) -> Self::F

Returns the next mask value for the first interaction at offset 0.
Source§

fn next_extension_interaction_mask<const N: usize>( &mut self, interaction: usize, offsets: [isize; N], ) -> [Self::EF; N]

Returns the extension mask values of the given offsets for the next extension degree many columns in the interaction.
Source§

fn add_intermediate(&mut self, val: Self::F) -> Self::F

Adds an intermediate value in the base field to the component and returns its value. Does nothing by default.
Source§

fn add_extension_intermediate(&mut self, val: Self::EF) -> Self::EF

Adds an intermediate value in the extension field to the component and returns its value. Does nothing by default.

Auto Trait Implementations§

Blanket Implementations§

Source§

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

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

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

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where 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> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where 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.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts 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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts 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
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

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

Source§

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 T
where U: TryFrom<T>,

Source§

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.
Source§

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

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more