12 #ifndef CPROVER_SOLVERS_REFINEMENT_BV_REFINEMENT_H
13 #define CPROVER_SOLVERS_REFINEMENT_BV_REFINEMENT_H
17 #define MAX_STATE 10000
bvt convert_mult(const mult_exprt &expr) override
decision_proceduret::resultt dec_solve(const exprt &) override
Implementation of the decision procedure.
bvt convert_div(const div_exprt &expr) override
std::string decision_procedure_text() const override
Return a textual description of the decision procedure.
bv_refinementt(const infot &info)
bool conflicts_with(approximationt &approximation)
check if an under-approximation is part of the conflict
approximationt & add_approximation(const exprt &expr, bvt &bv)
void freeze_lazy_constraints()
freeze symbols for incremental solving
void arrays_overapproximated()
check whether counterexample is spurious
void get_values(approximationt &approximation)
void finish_eager_conversion_arrays() override
generate array constraints
bvt convert_mod(const mod_exprt &expr) override
bvt convert_floatbv_op(const ieee_float_op_exprt &) override
void initialize(approximationt &approximation)
std::list< approximationt > approximations
resultt
Result of running the decision procedure.
Base class for all expressions.
IEEE floating-point operations These have two data operands (op0 and op1) and one rounding mode (op2)...
Modulo defined as lhs-(rhs * truncate(lhs/rhs)).
Binary multiplication Associativity is not specified.
A namespacet is essentially one or two symbol tables bound together, to allow for symbol lookups in t...
virtual std::string solver_text() const =0
std::vector< literalt > bvt
std::vector< exprt > over_assumptions
void add_under_assumption(literalt l)
std::string as_string() const
void add_over_assumption(literalt l)
std::vector< exprt > under_assumptions
approximationt(std::size_t _id_nr)
unsigned max_node_refinement
Max number of times we refine a formula node.
bool refine_arrays
Enable array refinement.
bool refine_arithmetic
Enable arithmetic refinement.
message_handlert * message_handler