Skip to content

Commit cc9398d

Browse files
committed
Expose MiniSAT's interrupt()
Makes MiniSAT's `interrupt()` and `clearInterrupt()` available to direct users. This allows aborting a running SAT query, e.g. in the context of multiple queries on different threads. Once this feature is required with other solvers as well, it may be useful to create a `virtual` function in `cnf_solvert` or even `prop_convt`, but for now this feature is uniquely required for our experiments with MiniSAT.
1 parent 8360233 commit cc9398d

File tree

2 files changed

+18
-0
lines changed

2 files changed

+18
-0
lines changed

src/solvers/sat/satcheck_minisat2.cpp

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,18 @@ void satcheck_minisat2_baset<T>::set_polarity(literalt a, bool value)
8181
}
8282
}
8383

84+
template<typename T>
85+
void satcheck_minisat2_baset<T>::interrupt()
86+
{
87+
solver->interrupt();
88+
}
89+
90+
template<typename T>
91+
void satcheck_minisat2_baset<T>::clear_interrupt()
92+
{
93+
solver->clearInterrupt();
94+
}
95+
8496
const std::string satcheck_minisat_no_simplifiert::solver_text()
8597
{
8698
return "MiniSAT 2.2.1 without simplifier";

src/solvers/sat/satcheck_minisat2.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,12 @@ class satcheck_minisat2_baset:public cnf_solvert
4242
// extra MiniSat feature: default branching decision
4343
void set_polarity(literalt a, bool value);
4444

45+
// extra MiniSat feature: interrupt running SAT query
46+
void interrupt();
47+
48+
// extra MiniSat feature: permit previously interrupted SAT query to continue
49+
void clear_interrupt();
50+
4551
virtual bool is_in_conflict(literalt a) const override;
4652
virtual bool has_set_assumptions() const final { return true; }
4753
virtual bool has_is_in_conflict() const final { return true; }

0 commit comments

Comments
 (0)