50 exprt current=(*it).lazy;
54 if(current.
id()==ID_implies)
65 if(current.
id()==ID_or)
69 orexp.
operands().size() == 2,
"only treats the case of a binary or");
93 INVARIANT(
false,
"error in array over approximation check");
97 log.
debug() <<
"BV-Refinement: " << nb_active
119 for(
const auto &literal : bv)
120 if(!literal.is_constant())
Abstraction Refinement Loop.
std::list< lazy_constraintt > lazy_array_constraints
void add_array_constraints()
void update_index_map(bool update_all)
virtual std::optional< std::size_t > get_width_opt(const typet &type) const
virtual const bvt & convert_bv(const exprt &expr, const std::optional< std::size_t > expected_width={})
Convert expression to vector of literalts, using an internal cache to speed up conversion if availabl...
exprt get(const exprt &expr) const override
Return expr with variables replaced by values from satisfying assignment if available.
void freeze_lazy_constraints()
freeze symbols for incremental solving
void arrays_overapproximated()
check whether counterexample is spurious
void finish_eager_conversion_arrays() override
generate array constraints
resultt
Result of running the decision procedure.
Base class for all expressions.
The Boolean constant false.
const irep_idt & id() const
message_handlert & get_message_handler()
literalt convert(const exprt &expr) override
Convert a Boolean expression and return the corresponding literal.
void l_set_to_true(literalt a)
virtual void set_frozen(literalt)
The Boolean constant true.
static bool find_symbols(symbol_kindt, const typet &, std::function< bool(const symbol_exprt &)>, std::unordered_set< irep_idt > &bindings, const std::vector< irep_idt > &subs_to_find)
Find identifiers with id ID_symbol of the sub expressions and the subs with ID in subs_to_find consid...
std::vector< literalt > bvt
void solver(std::vector< framet > &frames, const std::unordered_set< symbol_exprt, irep_hash > &address_taken, const solver_optionst &solver_options, const namespacet &ns, std::vector< propertyt > &properties, std::size_t property_index)
API to expression classes.
const or_exprt & to_or_expr(const exprt &expr)
Cast an exprt to a or_exprt.
const implies_exprt & to_implies_expr(const exprt &expr)
Cast an exprt to a implies_exprt.
bool refine_arrays
Enable array refinement.