summaryrefslogtreecommitdiffstats
path: root/src/sat/bsat/satSolver2.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/sat/bsat/satSolver2.h')
-rw-r--r--src/sat/bsat/satSolver2.h13
1 files changed, 12 insertions, 1 deletions
diff --git a/src/sat/bsat/satSolver2.h b/src/sat/bsat/satSolver2.h
index 8738abdf..063b6376 100644
--- a/src/sat/bsat/satSolver2.h
+++ b/src/sat/bsat/satSolver2.h
@@ -46,6 +46,7 @@ extern void sat_solver2_delete(sat_solver2* s);
extern int sat_solver2_addclause(sat_solver2* s, lit* begin, lit* end);
extern int sat_solver2_simplify(sat_solver2* s);
extern int sat_solver2_solve(sat_solver2* s, lit* begin, lit* end, ABC_INT64_T nConfLimit, ABC_INT64_T nInsLimit, ABC_INT64_T nConfLimitGlobal, ABC_INT64_T nInsLimitGlobal);
+extern void sat_solver2_rollback(sat_solver2* s);
extern void sat_solver2_setnvars(sat_solver2* s,int n);
@@ -112,9 +113,12 @@ struct sat_solver2_t
// clauses
veci clauses; // clause memory
+ veci learnts; // learnt memory
veci* wlists; // watcher lists (for each literal)
- int hLearntFirst; // the first learnt clause
+ int hClausePivot; // the pivot among problem clause
+ int hLearntPivot; // the pivot among learned clause
int hLearntLast; // in proof-logging mode, the ID of the final conflict clause (conf_final)
+ int iVarPivot; // the pivot among the variables
veci claActs; // clause activities
veci claProofs; // clause proofs
@@ -245,6 +249,13 @@ static inline int sat_solver2_set_random(sat_solver2* s, int fNotUseRandom)
return fNotUseRandomOld;
}
+static inline int sat_solver2_bookmark(sat_solver2* s)
+{
+ s->hLearntPivot = veci_size(&s->learnts);
+ s->hClausePivot = veci_size(&s->clauses);
+ s->iVarPivot = s->size;
+}
+
ABC_NAMESPACE_HEADER_END
#endif