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.
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.