pub fn emit_let(&mut self, def: Exp) -> (TempIndex, Exp) {
        let ty = self.global_env().get_node_type(def.node_id());
        let temp = self.new_temp(ty);
        let temp_exp = self.mk_local(temp);
        let definition = self.mk_eq(temp_exp.clone(), def);
        self.emit_with(|id| Bytecode::Prop(id, PropKind::Assume, definition));
        (temp, temp_exp)
    }
/// Emits a let: this creates a new temporary and emits an assumption that this temporary
/// is equal to the given expression. This can be used to abbreviate large expressions
/// which are used multiple times, or get the value of an expression into a temporary for
/// bytecode. Returns the temporary and a local expression referring to it.
Emits a let: this creates a new temporary and emits an assumption that this temporary
is equal to the given expression. This can be used to abbreviate large expressions
which are used multiple times, or get the value of an expression into a temporary for
bytecode. Returns the temporary and a local expression referring to it.
Emits a let : this creates a new temporary and emits an assumption that this temporary is equal to the given expression . This can be used to abbreviate large expressions which are used multiple times or get the value of an expression into a temporary for bytecode . Returns the temporary and a local expression referring to it .
pub fn emit_let(&mut self, def: Exp) -> (TempIndex, Exp) {
        let ty = self.global_env().get_node_type(def.node_id());
        let temp = self.new_temp(ty);
        let temp_exp = self.mk_local(temp);
        let definition = self.mk_eq(temp_exp.clone(), def);
        self.emit_with(|id| Bytecode::Prop(id, PropKind::Assume, definition));
        (temp, temp_exp)
    }
pub fn emit_let ( & mut self , def : Exp ) -> ( TempIndex , Exp ) { let ty = self . global_env ( ) . get_node_type ( def . node_id ( ) ) ; let temp = self . new_temp ( ty ) ; let temp_exp = self . mk_local ( temp ) ; let definition = self . mk_eq ( temp_exp . clone ( ) , def ) ; self . emit_with ( | id | Bytecode :: Prop ( id , PropKind :: Assume , definition ) ) ; ( temp , temp_exp ) }
Emits a let: this creates a new temporary and emits an assumption that this temporary
is equal to the given expression.
Emits a let : this creates a new temporary and emits an assumption that this temporary is equal to the given expression .
&mut self
def
Exp