51 exprt current=(*it).lazy;
55 if(current.
id()==ID_implies)
59 exprt implies_simplified=
get(imp.
op0());
67 if(current.
id()==ID_or)
80 exprt simplified=
get(current);
83 switch(static_cast<decision_proceduret::resultt>(sat_check.
prop_solve()))
98 debug() <<
"BV-Refinement: " << nb_active
99 <<
" array expressions become active" <<
eom;
101 <<
" inactive array expressions" <<
eom;
113 for(std::list<lazy_constraintt>::iterator
117 std::set<symbol_exprt>
symbols;
119 for(std::set<symbol_exprt>::const_iterator it=symbols.begin();
120 it!=symbols.end(); ++it)
124 if(!b_it->is_constant())
void freeze_lazy_constraints()
freeze symbols for incremental solving
virtual literalt convert(const exprt &expr) override
virtual void set_frozen(literalt a)
void add_array_constraints()
static mstreamt & eom(mstreamt &m)
virtual void post_process_arrays()
generate array constraints
#define forall_literals(it, bv)
void l_set_to_true(literalt a)
const irep_idt & id() const
The boolean constant true.
virtual const bvt & convert_bv(const exprt &expr)
void update_index_map(bool update_all)
API to expression classes.
The boolean constant false.
void arrays_overapproximated()
check whether counterexample is spurious
unbounded_arrayt unbounded_array
Base class for all expressions.
std::list< lazy_constraintt > lazy_array_constraints
Abstraction Refinement Loop.
void find_symbols(const exprt &src, find_symbols_sett &dest)
std::vector< literalt > bvt
virtual resultt prop_solve() override
const implies_exprt & to_implies_expr(const exprt &expr)
Cast a generic exprt to a implies_exprt.
const or_exprt & to_or_expr(const exprt &expr)
Cast a generic exprt to a or_exprt.