29#ifndef Glucose_Solver_h
30#define Glucose_Solver_h
148 virtual void reset();
200 int64_t
nbRemovedClauses,
nbReducedClauses,
nbDL2,
nbBin,
nbUn,
nbReduceDB,
solves,
starts,
decisions,
rnd_decisions,
propagations,
conflicts,
conflictsRestarts,
nbstopsrestarts,
nbstopsrestartssame,
lastblockatrestart;
262#ifdef UPDATEVARACTIVITY
314 void analyze (
CRef confl,
vec<Lit>& out_learnt,
vec<Lit> & selectors,
int& out_btlevel,
unsigned int &nblevels,
unsigned int &szWithoutSelectors);
358 static inline double drand(
double& seed) {
360 int q = (int)(seed / 2147483647);
361 seed -= (double)q * 2147483647;
362 return seed / 2147483647; }
365 static inline int irand(
double& seed,
int size) {
366 return (
int)(
drand(seed) * size); }
505 if ( (
activity[v] += inc) > 1e100 ) {
508 for (
int i = 0; i <
nVars(); i++)
521 for (
int i = 0; i <
learnts.size(); i++)
527 if (
ca.wasted() >
ca.size() * gf)
617 for(
int i = 0; i < nlits; i ++)
635 for (
int i = 0; i < c.
size(); i++){
644 for (
int i = 0; i < c.
size(); i++){
#define ABC_NAMESPACE_CXX_HEADER_START
#define ABC_NAMESPACE_CXX_HEADER_END
ABC_NAMESPACE_IMPL_START typedef signed char value
#define sat_solver_mark_cone
#define sat_solver_set_var_fanin_lit
#define sat_solver_set_jftr
vec< int > initialPositions
CRef interpret(Var v, Var t)
OccLists< Lit, vec< Watcher >, WatcherDeleted > watchesBin
void insertVarOrder(Var x)
Lit pickJustLit(int &index)
bool addClause_(vec< Lit > &ps)
bool withinBudget() const
lbool search(int nof_conflicts)
void toDimacs(FILE *f, const vec< Lit > &assumps)
CRef gatePropagateCheckFanout(Var v, Lit lfo)
bool isGateCRef(CRef cr) const
vec< int > assumptionPositions
bool enqueue(Lit p, CRef from=CRef_Undef)
void cancelUntil(int level)
static VarData mkVarData(CRef cr, int l)
vec< unsigned int > permDiff
uint32_t abstractLevel(Var x) const
void addJwatch(Var host, Var member, int index)
unsigned int computeLBD(const vec< Lit > &lits, int end=-1)
void markApprox(Var v0, Var v1, int nlim)
bool litRedundant(Lit p, uint32_t abstract_levels)
Var getFaninVar1(Var v) const
bool locked(const Clause &c) const
vec< unsigned > var2TravId
Lit maxActiveLit(Lit lit0, Lit lit1) const
int nbclausesbeforereduce
int learntsize_adjust_cnt
unsigned int lbLBDFrozenClause
OccLists< Lit, vec< Watcher >, WatcherDeleted > watches
virtual void garbageCollect()
double progressEstimate() const
void relocAll(ClauseAllocator &to)
CRef gatePropagateCheckThis(Var v)
void ResetJustData(bool fCleanMemory)
void removeClause(CRef cr)
int64_t lastblockatrestart
void restoreJustQueue(int level)
void sat_solver_start_new_round()
void setDecisionVar(Var v, bool b, bool use_oheap=true)
CRef getConfClause(CRef r)
vec< Lit > analyze_toclear
void prelocate(int var_num)
void detachClause(CRef cr, bool strict=false)
int64_t conflictsRestarts
CRef gatePropagateCheck(Var v, Var t)
void setPropBudget(int64_t x)
void minimisationWithBinaryResolution(vec< Lit > &out_learnt)
int decisionLevel() const
void markTill(Var v0, int nlim)
void attachClause(CRef cr)
static double drand(double &seed)
bool addClause(const vec< Lit > &ps)
void removeSatisfied(vec< CRef > &cs)
Var CRef2Var(CRef cr) const
void analyzeFinal(Lit p, vec< Lit > &out_conflict)
Heap2< JustOrderLt2, JustKey > jheap
bqueue< unsigned int > trailQueue
void setPolarity(Var v, bool b)
void sat_solver_set_var_fanin_lit(int, int, int)
double varActivity(int v) const
Var getFaninVar0(Var v) const
void varBumpActivity(Var v, double inc)
lbool modelValue(Var x) const
Heap< VarOrderLt > order_heap
static int irand(double &seed, int size)
CRef Var2CRef(Var v) const
static NodeData mkNodeData()
bool isJReason(Var v) const
void initNbInitialVars(int nb)
bqueue< unsigned int > lbdQueue
Lit getFaninPlt0(Var v) const
bool terminate_search_early
void sat_solver_mark_cone(int)
CRef gatePropagate(Lit p)
void pushJustQueue(Var v, int index)
int(* pCnfFunc)(void *p, int, int *)
void setConfBudget(int64_t x)
void sat_solver_set_jftr(int)
int64_t nbstopsrestartssame
void uncheckedEnqueue2(Lit p, CRef from=CRef_Undef)
Var newVar(bool polarity=true, bool dvar=true)
double learntsize_adjust_confl
void gateClearJwatch(Var v, int backtrack_level)
void setVarFaninLits(int v, int lit1, int lit2)
int64_t propagation_budget
void setVarFaninLits(Var v, Lit lit1, Lit lit2)
lbool solveLimited(const vec< Lit > &assumps)
void claBumpActivity(Clause &c)
unsigned int lbLBDMinimizingClause
Lit getFaninLit1(Var v) const
void printIncrementalStats()
bool isTwoFanin(Var v) const
void setIncrementalMode()
bool isRoundWatch(Var v) const
bool getFaninC1(Var v) const
Lit gateJustFanin(Var v) const
int lbSizeMinimizingClause
void analyze(CRef confl, vec< Lit > &out_learnt, vec< Lit > &selectors, int &out_btlevel, unsigned int &nblevels, unsigned int &szWithoutSelectors)
Lit getFaninPlt1(Var v) const
void uncheckedEnqueue(Lit p, CRef from=CRef_Undef)
vec< NodeData > var2NodeData
void updateJustActivity(Var v)
void printInitialClause(CRef c)
bool getFaninC0(Var v) const
bool satisfied(const Clause &c) const
void gateAddJwatch(Var v, int index)
Lit getFaninLit0(Var v) const
void copyTo(vec< T > ©) const
Lit mkLit(Var var, bool sign=false)
RegionAllocator< uint32_t >::Ref CRef
JustKey(const Key &nkey, const Data &ndata, const Attr &nattr)
JustOrderLt2(const Solver *_pS)
bool operator()(const JustKey &x, const JustKey &y) const
bool operator()(Var x, Var y) const
const vec< double > & activity
VarOrderLt(const vec< double > &act)
bool operator()(const Watcher &w) const
WatcherDeleted(const ClauseAllocator &_ca)
const ClauseAllocator & ca
bool operator!=(const Watcher &w) const
bool operator==(const Watcher &w) const