pub fn eval_and_concretize(
        &mut self,
        expression: &il::Expression,
    ) -> Result<Option<il::Constant>> {
        let expression = self.symbolize_expression(expression)?;

        if expression.all_constants() {
            Ok(Some(eval(&expression)?))
        } else {
            let constant = self.symbolize_and_eval(&expression)?;
            if let Some(ref constant) = constant {
                self.add_path_constraint(&il::Expression::cmpeq(
                    expression,
                    constant.clone().into(),
                )?)?;
            }
            Ok(constant)
        }
    }
/// Symbolize and evaluate the given expression. If the expression is
/// symbolic, add a path constraint that sets the expression equal to its
/// evaluated value.
Symbolize and evaluate the given expression. If the expression is
symbolic, add a path constraint that sets the expression equal to its
evaluated value.
Symbolize and evaluate the given expression . If the expression is symbolic add a path constraint that sets the expression equal to its evaluated value .
pub fn eval_and_concretize(
        &mut self,
        expression: &il::Expression,
    ) -> Result<Option<il::Constant>> {
        let expression = self.symbolize_expression(expression)?;
        if expression.all_constants() {
            Ok(Some(eval(&expression)?))
        } else {
            let constant = self.symbolize_and_eval(&expression)?;
            if let Some(ref constant) = constant {
                self.add_path_constraint(&il::Expression::cmpeq(
                    expression,
                    constant.clone().into(),
                )?)?;
            }
            Ok(constant)
        }
    }
pub fn eval_and_concretize ( & mut self , expression : & il :: Expression , ) -> Result < Option < il :: Constant > > { let expression = self . symbolize_expression ( expression ) ? ; if expression . all_constants ( ) { Ok ( Some ( eval ( & expression ) ? ) ) } else { let constant = self . symbolize_and_eval ( & expression ) ? ; if let Some ( ref constant ) = constant { self . add_path_constraint ( & il :: Expression :: cmpeq ( expression , constant . clone ( ) . into ( ) , ) ? ) ? ; } Ok ( constant ) } }
Symbolize and evaluate the given expression.
Symbolize and evaluate the given expression .
&mut self
expression
&il::Expression