virtual void garbageCollect() override
bool implied(const vec< Lit > &c)
bool strengthenClause(CRef cr, Lit l)
void removeClause(CRef cr)
lbool solve_(bool do_simp=true, bool turn_off_simp=false)
vec< uint32_t > elimclauses
void relocAll(ClauseAllocator &to)
void gatherTouchedClauses()
Var newVar(bool polarity=true, bool dvar=true)
bool substitute(Var v, Lit x)
bool merge(const Clause &_ps, const Clause &_qs, Var v, vec< Lit > &out_clause)
void updateElimHeap(Var v)
bool eliminate(bool turn_off_elim=false)
bool asymm(Var v, CRef cr)
bool addClause_(vec< Lit > &ps)
bool merge(const Clause &_ps, const Clause &_qs, Var v, int &size)
bool backwardSubsumptionCheck(bool verbose=false)
lbool solveLimited(const vec< Lit > &assumps, bool do_simp=true, bool turn_off_simp=false)
Queue< CRef > subsumption_queue
void setFrozen(Var v, bool b)
bool addClause(const vec< Lit > &ps)
bool isEliminated(Var v) const
OccLists< Var, vec< CRef >, ClauseDeleted > occurs
void toDimacs(std::ostream &out, const vec< Lit > &assumps)
static MultilevelBuilder * getDoubleFactoredZeroAdjustedMerger()
RegionAllocator< uint32_t >::Ref CRef
Lit mkLit(Var var, bool sign=false)
ClauseDeleted(const ClauseAllocator &_ca)
bool operator()(const CRef &cr) const
const ClauseAllocator & ca
ElimLt(const vec< int > &no)
bool operator()(Var x, Var y) const
uint64_t cost(Var x) const