21 #ifndef HAVE_LINGELING
22 #error "Expected HAVE_LINGELING"
58 for(
const auto &literal : new_bv)
59 lgladd(
solver, literal.dimacs());
80 for(
const auto &literal : assumptions)
81 if(!literal.is_true())
82 lglassume(
solver, literal.dimacs());
84 const int res=lglsat(
solver);
89 msg=
"SAT checker: instance is SATISFIABLE";
96 INVARIANT(res == 20,
"result value is either 10 or 20");
97 msg=
"SAT checker: instance is UNSATISFIABLE";
102 return P_UNSATISFIABLE;
bool process_clause(const bvt &bv, bvt &dest) const
filter 'true' from clause, eliminate duplicates, recognise trivially satisfied clauses
virtual size_t no_variables() const override
mstreamt & statistics() const
mstreamt & status() const
void lcnf(const bvt &bv) override
tvt l_get(literalt a) const override
resultt do_prop_solve(const bvt &assumptions) override
virtual ~satcheck_lingelingt()
void set_assignment(literalt a, bool value) override
std::string solver_text() const override
void set_frozen(literalt a) override
bool is_in_conflict(literalt a) const override
Returns true if an assumed literal is in conflict if the formula is UNSAT.
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)
#define CHECK_RETURN(CONDITION)
#define UNREACHABLE
This should be used to mark dead code.
#define PRECONDITION(CONDITION)
std::string to_string(const string_not_contains_constraintt &expr)
Used for debug printing.