pub trait ReconstructingReducerProgram<'a>: ReconstructingReducerStatement<'a> {
fn reduce_function(
&mut self,
input: &'a Function<'a>,
body: Option<&'a Statement<'a>>
) -> &'a Function<'a> { ... }
fn reduce_circuit_member_variable(
&mut self,
input: CircuitMember<'a>
) -> CircuitMember<'a> { ... }
fn reduce_circuit_member_function(
&mut self,
input: CircuitMember<'a>,
function: &'a Function<'a>
) -> CircuitMember<'a> { ... }
fn reduce_circuit(
&mut self,
input: &'a Circuit<'a>,
members: Vec<CircuitMember<'a>>
) -> &'a Circuit<'a> { ... }
fn reduce_global_const(
&mut self,
input: &'a DefinitionStatement<'a>,
value: &'a Expression<'a>
) -> &'a DefinitionStatement<'a> { ... }
fn reduce_program(
&mut self,
input: Program<'a>,
imported_modules: Vec<(String, Program<'a>)>,
functions: Vec<(String, &'a Function<'a>)>,
circuits: Vec<(String, &'a Circuit<'a>)>,
global_consts: Vec<(String, &'a DefinitionStatement<'a>)>
) -> Program<'a> { ... }
}