ExprLowering

Trait ExprLowering 

Source
pub trait ExprLowering {
    type CellOutput;

Show 23 methods // Required methods fn lower_sum( &self, lhs: &Self::CellOutput, rhs: &Self::CellOutput, ) -> Result<Self::CellOutput>; fn lower_product( &self, lhs: &Self::CellOutput, rhs: &Self::CellOutput, ) -> Result<Self::CellOutput>; fn lower_neg(&self, expr: &Self::CellOutput) -> Result<Self::CellOutput>; fn lower_constant(&self, f: Felt) -> Result<Self::CellOutput>; fn lower_eq( &self, lhs: &Self::CellOutput, rhs: &Self::CellOutput, ) -> Result<Self::CellOutput>; fn lower_lt( &self, lhs: &Self::CellOutput, rhs: &Self::CellOutput, ) -> Result<Self::CellOutput>; fn lower_le( &self, lhs: &Self::CellOutput, rhs: &Self::CellOutput, ) -> Result<Self::CellOutput>; fn lower_gt( &self, lhs: &Self::CellOutput, rhs: &Self::CellOutput, ) -> Result<Self::CellOutput>; fn lower_ge( &self, lhs: &Self::CellOutput, rhs: &Self::CellOutput, ) -> Result<Self::CellOutput>; fn lower_ne( &self, lhs: &Self::CellOutput, rhs: &Self::CellOutput, ) -> Result<Self::CellOutput>; fn lower_and( &self, lhs: &Self::CellOutput, rhs: &Self::CellOutput, ) -> Result<Self::CellOutput>; fn lower_or( &self, lhs: &Self::CellOutput, rhs: &Self::CellOutput, ) -> Result<Self::CellOutput>; fn lower_not(&self, value: &Self::CellOutput) -> Result<Self::CellOutput>; fn lower_true(&self) -> Result<Self::CellOutput>; fn lower_false(&self) -> Result<Self::CellOutput>; fn lower_det(&self, expr: &Self::CellOutput) -> Result<Self::CellOutput>; fn lower_implies( &self, lhs: &Self::CellOutput, rhs: &Self::CellOutput, ) -> Result<Self::CellOutput>; fn lower_iff( &self, lhs: &Self::CellOutput, rhs: &Self::CellOutput, ) -> Result<Self::CellOutput>; fn lower_function_input(&self, i: usize) -> FuncIO; fn lower_function_output(&self, o: usize) -> FuncIO; fn lower_funcio<IO>(&self, io: IO) -> Result<Self::CellOutput> where IO: Into<FuncIO>; // Provided methods fn lower_function_inputs(&self, ins: Range<usize>) -> Vec<FuncIO> { ... } fn lower_function_outputs(&self, outs: Range<usize>) -> Vec<FuncIO> { ... }
}

Required Associated Types§

Required Methods§

Source

fn lower_sum( &self, lhs: &Self::CellOutput, rhs: &Self::CellOutput, ) -> Result<Self::CellOutput>

Source

fn lower_product( &self, lhs: &Self::CellOutput, rhs: &Self::CellOutput, ) -> Result<Self::CellOutput>

Source

fn lower_neg(&self, expr: &Self::CellOutput) -> Result<Self::CellOutput>

Source

fn lower_constant(&self, f: Felt) -> Result<Self::CellOutput>

Source

fn lower_eq( &self, lhs: &Self::CellOutput, rhs: &Self::CellOutput, ) -> Result<Self::CellOutput>

Source

fn lower_lt( &self, lhs: &Self::CellOutput, rhs: &Self::CellOutput, ) -> Result<Self::CellOutput>

Source

fn lower_le( &self, lhs: &Self::CellOutput, rhs: &Self::CellOutput, ) -> Result<Self::CellOutput>

Source

fn lower_gt( &self, lhs: &Self::CellOutput, rhs: &Self::CellOutput, ) -> Result<Self::CellOutput>

Source

fn lower_ge( &self, lhs: &Self::CellOutput, rhs: &Self::CellOutput, ) -> Result<Self::CellOutput>

Source

fn lower_ne( &self, lhs: &Self::CellOutput, rhs: &Self::CellOutput, ) -> Result<Self::CellOutput>

Source

fn lower_and( &self, lhs: &Self::CellOutput, rhs: &Self::CellOutput, ) -> Result<Self::CellOutput>

Source

fn lower_or( &self, lhs: &Self::CellOutput, rhs: &Self::CellOutput, ) -> Result<Self::CellOutput>

Source

fn lower_not(&self, value: &Self::CellOutput) -> Result<Self::CellOutput>

Source

fn lower_true(&self) -> Result<Self::CellOutput>

Source

fn lower_false(&self) -> Result<Self::CellOutput>

Source

fn lower_det(&self, expr: &Self::CellOutput) -> Result<Self::CellOutput>

Source

fn lower_implies( &self, lhs: &Self::CellOutput, rhs: &Self::CellOutput, ) -> Result<Self::CellOutput>

Source

fn lower_iff( &self, lhs: &Self::CellOutput, rhs: &Self::CellOutput, ) -> Result<Self::CellOutput>

Source

fn lower_function_input(&self, i: usize) -> FuncIO

Source

fn lower_function_output(&self, o: usize) -> FuncIO

Source

fn lower_funcio<IO>(&self, io: IO) -> Result<Self::CellOutput>
where IO: Into<FuncIO>,

Provided Methods§

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.

Implementors§