21 #error "Expected HAVE_MINISAT"
26 dest.growTo(bv.size());
28 for(
unsigned i=0; i<bv.size(); i++)
29 dest[i]=Lit(bv[i].var_no(), bv[i].sign());
35 virtual void root(
const vec<Lit> &c)
42 for(
int i=0; i<c.size(); i++)
51 virtual void chain(
const vec<ClauseId> &cs,
const vec<Var> &xs);
70 c.
steps.resize(xs.size());
75 for(
int i=0; i<xs.size(); i++)
78 INVARIANT(cs[i] < c_id,
"clause ID should be within bounds");
79 c.
steps[i].clause_id=cs[i+1];
80 c.
steps[i].pivot_var_no=xs[i];
96 "variable number should be within bounds");
113 return "MiniSAT 1.14p";
145 [](
const literalt &l) { return l.var_no() < (unsigned)solver->nVars(); }),
146 "variable number should be within bounds");
168 msg=
"empty clause: instance is UNSATISFIABLE";
172 msg=
"SAT checker inconsistent: instance is UNSATISFIABLE";
176 vec<Lit> MiniSat_assumptions;
177 convert(assumptions, MiniSat_assumptions);
179 if(
solver->solve(MiniSat_assumptions))
181 msg=
"SAT checker: instance is SATISFIABLE";
184 return P_SATISFIABLE;
187 msg=
"SAT checker: instance is UNSATISFIABLE";
192 return P_UNSATISFIABLE;
199 solver->model.growTo(v+1);
201 solver->model[v]=lbool(value);
208 for(
int i=0; i<
solver->conflict.size(); i++)
210 if(var(
solver->conflict[i])==v)
252 return "MiniSAT + Proof";
272 return "MiniSAT + Core";
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
virtual void root(const vec< Lit > &c)
virtual void chain(const vec< ClauseId > &cs, const vec< Var > &xs)
virtual void deleted(ClauseId c)
simple_prooft resolution_proof
virtual ~minisat_prooft()
void build_core(std::vector< bool > &in_core)
resultt do_prop_solve(const bvt &assumptions) override
void set_assignment(literalt a, bool value) override
std::string solver_text() const override
bool is_in_conflict(literalt l) const override
Returns true if an assumption is in the final conflict.
void lcnf(const bvt &bv) final
virtual ~satcheck_minisat1_baset()
tvt l_get(literalt a) const override
std::string solver_text() const override
resultt do_prop_solve(const bvt &assumptions) override
satcheck_minisat1_coret()
~satcheck_minisat1_coret()
std::vector< bool > in_core
~satcheck_minisat1_prooft()
std::string solver_text() const override
class minisat_prooft * minisat_proof
satcheck_minisat1_prooft()
simple_prooft & get_resolution_proof()
std::vector< literalt > bvt
void convert(const bvt &bv, vec< Lit > &dest)
#define PRECONDITION(CONDITION)