18 # include <cadical.hpp>
43 return std::string(
"CaDiCaL ") +
solver->version();
48 for(
const auto &lit : bv)
52 else if(!lit.is_false())
56 for(
const auto &lit : bv)
74 static size_t cnf_clause_index = 0;
82 bv, cnf, cnf_clause_index, !clause_removed);
96 for(
const auto &a : assumptions)
100 log.
status() <<
"got FALSE as assumption: instance is UNSATISFIABLE"
107 for(
const auto &a : assumptions)
127 log.
status() <<
"SAT checker: solving returned without solution"
130 "solving inside CaDiCaL SAT solver has been interrupted");
140 INVARIANT(
false,
"method not supported");
144 int _preprocessing_limit,
145 int _localsearch_limit,
149 preprocessing_limit(_preprocessing_limit),
150 localsearch_limit(_localsearch_limit)
Thrown when an unexpected error occurs during the analysis (e.g., when the SAT solver returns an erro...
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
std::unique_ptr< clause_hardness_collectort > solver_hardness
mstreamt & statistics() const
mstreamt & status() const
virtual ~satcheck_cadical_baset()
void lcnf(const bvt &bv) override
std::string solver_text() const override
satcheck_cadical_baset(int preprocessing_limit, int localsearch_limit, message_handlert &)
tvt l_get(literalt a) const override
bool is_in_conflict(literalt a) const override
Returns true if an assumption is in the final conflict.
void set_assignment(literalt a, bool value) override
resultt do_prop_solve(const bvt &assumptions) override
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)