pub struct FilteredAirBuilder<'a, AB: AirBuilder> {
pub inner: &'a mut AB,
/* private fields */
}Expand description
A wrapper around an AirBuilder that enforces constraints only when a specified condition is met.
This struct allows selectively applying constraints to certain rows or under certain conditions in the AIR,
without modifying the underlying logic. All constraints asserted through this filtered builder will be
multiplied by the given condition, effectively disabling them when condition evaluates to zero.
Fields§
§inner: &'a mut ABReference to the underlying inner AirBuilder where constraints are ultimately recorded.
Implementations§
Source§impl<AB: AirBuilder> FilteredAirBuilder<'_, AB>
impl<AB: AirBuilder> FilteredAirBuilder<'_, AB>
Trait Implementations§
Source§impl<AB: AirBuilder> AirBuilder for FilteredAirBuilder<'_, AB>
impl<AB: AirBuilder> AirBuilder for FilteredAirBuilder<'_, AB>
Source§type Expr = <AB as AirBuilder>::Expr
type Expr = <AB as AirBuilder>::Expr
Serves as the output type for an AIR constraint evaluation.
Source§type Var = <AB as AirBuilder>::Var
type Var = <AB as AirBuilder>::Var
The type of the variable appearing in the trace matrix. Read more
Source§type M = <AB as AirBuilder>::M
type M = <AB as AirBuilder>::M
Matrix type holding variables.
Source§fn is_first_row(&self) -> Self::Expr
fn is_first_row(&self) -> Self::Expr
Expression evaluating to 1 on the first row, 0 elsewhere.
Source§fn is_last_row(&self) -> Self::Expr
fn is_last_row(&self) -> Self::Expr
Expression evaluating to 1 on the last row, 0 elsewhere.
Source§fn is_transition_window(&self, size: usize) -> Self::Expr
fn is_transition_window(&self, size: usize) -> Self::Expr
Expression evaluating to 1 on rows except the last
size - 1 rows, 0 otherwise.Source§fn assert_zero<I: Into<Self::Expr>>(&mut self, x: I)
fn assert_zero<I: Into<Self::Expr>>(&mut self, x: I)
Assert that the given element is zero. Read more
Source§fn is_transition(&self) -> Self::Expr
fn is_transition(&self) -> Self::Expr
Expression evaluating to 1 on all transition rows (not last row), 0 on last row.
Source§fn when<I: Into<Self::Expr>>(
&mut self,
condition: I,
) -> FilteredAirBuilder<'_, Self>
fn when<I: Into<Self::Expr>>( &mut self, condition: I, ) -> FilteredAirBuilder<'_, Self>
Returns a sub-builder whose constraints are enforced only when
condition is nonzero.Source§fn when_ne<I1: Into<Self::Expr>, I2: Into<Self::Expr>>(
&mut self,
x: I1,
y: I2,
) -> FilteredAirBuilder<'_, Self>
fn when_ne<I1: Into<Self::Expr>, I2: Into<Self::Expr>>( &mut self, x: I1, y: I2, ) -> FilteredAirBuilder<'_, Self>
Returns a sub-builder whose constraints are enforced only when
x != y.Source§fn when_first_row(&mut self) -> FilteredAirBuilder<'_, Self>
fn when_first_row(&mut self) -> FilteredAirBuilder<'_, Self>
Returns a sub-builder whose constraints are enforced only on the first row.
Source§fn when_last_row(&mut self) -> FilteredAirBuilder<'_, Self>
fn when_last_row(&mut self) -> FilteredAirBuilder<'_, Self>
Returns a sub-builder whose constraints are enforced only on the last row.
Source§fn when_transition(&mut self) -> FilteredAirBuilder<'_, Self>
fn when_transition(&mut self) -> FilteredAirBuilder<'_, Self>
Returns a sub-builder whose constraints are enforced on all rows except the last.
Source§fn when_transition_window(
&mut self,
size: usize,
) -> FilteredAirBuilder<'_, Self>
fn when_transition_window( &mut self, size: usize, ) -> FilteredAirBuilder<'_, Self>
Returns a sub-builder whose constraints are enforced on all rows except the last
size - 1.Source§fn assert_zeros<const N: usize, I: Into<Self::Expr>>(&mut self, array: [I; N])
fn assert_zeros<const N: usize, I: Into<Self::Expr>>(&mut self, array: [I; N])
Assert that every element of a given array is 0. Read more
Source§fn assert_bools<const N: usize, I: Into<Self::Expr>>(&mut self, array: [I; N])
fn assert_bools<const N: usize, I: Into<Self::Expr>>(&mut self, array: [I; N])
Assert that a given array consists of only boolean values.
Source§fn assert_one<I: Into<Self::Expr>>(&mut self, x: I)
fn assert_one<I: Into<Self::Expr>>(&mut self, x: I)
Assert that
x element is equal to 1.Source§impl<'a, AB: Debug + AirBuilder> Debug for FilteredAirBuilder<'a, AB>
impl<'a, AB: Debug + AirBuilder> Debug for FilteredAirBuilder<'a, AB>
Source§impl<AB: ExtensionBuilder> ExtensionBuilder for FilteredAirBuilder<'_, AB>
impl<AB: ExtensionBuilder> ExtensionBuilder for FilteredAirBuilder<'_, AB>
Source§type EF = <AB as ExtensionBuilder>::EF
type EF = <AB as ExtensionBuilder>::EF
Extension field type.
Source§type ExprEF = <AB as ExtensionBuilder>::ExprEF
type ExprEF = <AB as ExtensionBuilder>::ExprEF
Expression type over extension field elements.
Source§type VarEF = <AB as ExtensionBuilder>::VarEF
type VarEF = <AB as ExtensionBuilder>::VarEF
Variable type over extension field elements.
Source§fn assert_zero_ext<I>(&mut self, x: I)
fn assert_zero_ext<I>(&mut self, x: I)
Assert that an extension field expression is zero.
Source§fn assert_eq_ext<I1, I2>(&mut self, x: I1, y: I2)
fn assert_eq_ext<I1, I2>(&mut self, x: I1, y: I2)
Assert that two extension field expressions are equal.
Source§fn assert_one_ext<I>(&mut self, x: I)
fn assert_one_ext<I>(&mut self, x: I)
Assert that an extension field expression is equal to one.
Source§impl<AB: PairBuilder> PairBuilder for FilteredAirBuilder<'_, AB>
impl<AB: PairBuilder> PairBuilder for FilteredAirBuilder<'_, AB>
Source§fn preprocessed(&self) -> Self::M
fn preprocessed(&self) -> Self::M
Return a matrix of preprocessed registers.
Source§impl<AB: PermutationAirBuilder> PermutationAirBuilder for FilteredAirBuilder<'_, AB>
impl<AB: PermutationAirBuilder> PermutationAirBuilder for FilteredAirBuilder<'_, AB>
Source§type MP = <AB as PermutationAirBuilder>::MP
type MP = <AB as PermutationAirBuilder>::MP
Matrix type over extension field variables representing a permutation.
Source§type RandomVar = <AB as PermutationAirBuilder>::RandomVar
type RandomVar = <AB as PermutationAirBuilder>::RandomVar
Randomness variable type used in permutation commitments.
Source§fn permutation(&self) -> Self::MP
fn permutation(&self) -> Self::MP
Return the matrix representing permutation registers.
Source§fn permutation_randomness(&self) -> &[Self::RandomVar]
fn permutation_randomness(&self) -> &[Self::RandomVar]
Return the list of randomness values for permutation argument.
Auto Trait Implementations§
impl<'a, AB> Freeze for FilteredAirBuilder<'a, AB>
impl<'a, AB> RefUnwindSafe for FilteredAirBuilder<'a, AB>
impl<'a, AB> Send for FilteredAirBuilder<'a, AB>
impl<'a, AB> Sync for FilteredAirBuilder<'a, AB>
impl<'a, AB> Unpin for FilteredAirBuilder<'a, AB>
impl<'a, AB> !UnwindSafe for FilteredAirBuilder<'a, AB>
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
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
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 moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
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