pub trait RecursionMemoryAirBuilder: RecursionInteractionAirBuilder {
// Provided methods
fn recursion_eval_memory_access<E: Into<Self::Expr> + Clone>(
&mut self,
timestamp: impl Into<Self::Expr>,
addr: impl Into<Self::Expr>,
memory_access: &impl MemoryCols<E, Block<E>>,
is_real: impl Into<Self::Expr>,
) { ... }
fn recursion_eval_memory_access_single<E: Into<Self::Expr> + Clone>(
&mut self,
timestamp: impl Into<Self::Expr>,
addr: impl Into<Self::Expr>,
memory_access: &impl MemoryCols<E, E>,
is_real: impl Into<Self::Expr>,
) { ... }
fn eval_memory_access_timestamp<E: Into<Self::Expr> + Clone>(
&mut self,
timestamp: impl Into<Self::Expr>,
mem_access: &impl MemoryAccessTimestampCols<E>,
is_real: impl Into<Self::Expr> + Clone,
) { ... }
fn eval_range_check_28bits(
&mut self,
value: impl Into<Self::Expr>,
limb_16: impl Into<Self::Expr> + Clone,
limb_12: impl Into<Self::Expr> + Clone,
is_real: impl Into<Self::Expr> + Clone,
) { ... }
}
Provided Methods§
fn recursion_eval_memory_access<E: Into<Self::Expr> + Clone>( &mut self, timestamp: impl Into<Self::Expr>, addr: impl Into<Self::Expr>, memory_access: &impl MemoryCols<E, Block<E>>, is_real: impl Into<Self::Expr>, )
fn recursion_eval_memory_access_single<E: Into<Self::Expr> + Clone>( &mut self, timestamp: impl Into<Self::Expr>, addr: impl Into<Self::Expr>, memory_access: &impl MemoryCols<E, E>, is_real: impl Into<Self::Expr>, )
sourcefn eval_memory_access_timestamp<E: Into<Self::Expr> + Clone>(
&mut self,
timestamp: impl Into<Self::Expr>,
mem_access: &impl MemoryAccessTimestampCols<E>,
is_real: impl Into<Self::Expr> + Clone,
)
fn eval_memory_access_timestamp<E: Into<Self::Expr> + Clone>( &mut self, timestamp: impl Into<Self::Expr>, mem_access: &impl MemoryAccessTimestampCols<E>, is_real: impl Into<Self::Expr> + Clone, )
Verifies that the memory access happens after the previous memory access.
sourcefn eval_range_check_28bits(
&mut self,
value: impl Into<Self::Expr>,
limb_16: impl Into<Self::Expr> + Clone,
limb_12: impl Into<Self::Expr> + Clone,
is_real: impl Into<Self::Expr> + Clone,
)
fn eval_range_check_28bits( &mut self, value: impl Into<Self::Expr>, limb_16: impl Into<Self::Expr> + Clone, limb_12: impl Into<Self::Expr> + Clone, is_real: impl Into<Self::Expr> + Clone, )
Verifies the inputted value is within 28 bits.
This method verifies that the inputted is less than 2^24 by doing a 16 bit and 12 bit range check on it’s limbs. It will also verify that the limbs are correct. This method is needed since the memory access timestamp check (see Self::eval_memory_access_timestamp) needs to assume the clk is within 28 bits.
Object Safety§
This trait is not object safe.