pub struct DefaultConstraintEvaluator<'a, A: Air, E: FieldElement<BaseField = A::BaseField>> { /* private fields */ }
Expand description

Default implementation of the ConstraintEvaluator trait.

This implementation iterates over all evaluation frames of an extended execution trace and evaluates constraints over these frames one-by-one. Constraint evaluations are merged together using random linear combinations and in the end, only a single column is returned.

When concurrent feature is enabled, the extended execution trace is split into sets of sequential evaluation frames (called fragments), and frames in each fragment are evaluated in separate threads.

Implementations§

source§

impl<'a, A, E> DefaultConstraintEvaluator<'a, A, E>
where A: Air, E: FieldElement<BaseField = A::BaseField>,

source

pub fn new( air: &'a A, aux_rand_elements: AuxTraceRandElements<E>, composition_coefficients: ConstraintCompositionCoefficients<E> ) -> Self

Returns a new evaluator which can be used to evaluate transition and boundary constraints over extended execution trace.

Trait Implementations§

source§

impl<'a, A, E> ConstraintEvaluator<E> for DefaultConstraintEvaluator<'a, A, E>
where A: Air, E: FieldElement<BaseField = A::BaseField>,

§

type Air = A

AIR constraints for the computation described by this evaluator.
source§

fn evaluate<T: TraceLde<E>>( self, trace: &T, domain: &StarkDomain<<E as FieldElement>::BaseField> ) -> CompositionPolyTrace<E>

Evaluates constraints against the provided extended execution trace, combines them into evaluations of a single polynomial, and returns these evaluations. Read more

Auto Trait Implementations§

§

impl<'a, A, E> RefUnwindSafe for DefaultConstraintEvaluator<'a, A, E>

§

impl<'a, A, E> Send for DefaultConstraintEvaluator<'a, A, E>

§

impl<'a, A, E> Sync for DefaultConstraintEvaluator<'a, A, E>

§

impl<'a, A, E> Unpin for DefaultConstraintEvaluator<'a, A, E>
where E: Unpin, <A as Air>::BaseField: Unpin,

§

impl<'a, A, E> UnwindSafe for DefaultConstraintEvaluator<'a, A, E>

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, 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> Same for T

§

type Output = T

Should always be Self
source§

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