cprover
satcheck_minisat2.h
Go to the documentation of this file.
1 /*******************************************************************\
2 
3 Module:
4 
5 Author: Daniel Kroening, kroening@kroening.com
6 
7 \*******************************************************************/
8 
9 
10 #ifndef CPROVER_SOLVERS_SAT_SATCHECK_MINISAT2_H
11 #define CPROVER_SOLVERS_SAT_SATCHECK_MINISAT2_H
12 
13 #include "cnf.h"
14 
15 // Select one: basic solver or with simplification.
16 // Note that the solver with simplifier isn't really robust
17 // when used incrementally, as variables may disappear
18 // unless set to 'frozen'.
19 
20 namespace Minisat // NOLINT(readability/namespace)
21 {
22 class Solver; // NOLINT(readability/identifiers)
23 class SimpSolver; // NOLINT(readability/identifiers)
24 }
25 
26 template<typename T>
28 {
29 public:
30  explicit satcheck_minisat2_baset(T *);
31  virtual ~satcheck_minisat2_baset();
32 
33  virtual resultt prop_solve() override;
34  virtual tvt l_get(literalt a) const final;
35 
36  virtual void lcnf(const bvt &bv) final;
37  virtual void set_assignment(literalt a, bool value) override;
38 
39  // extra MiniSat feature: solve with assumptions
40  virtual void set_assumptions(const bvt &_assumptions) override;
41 
42  // extra MiniSat feature: default branching decision
43  void set_polarity(literalt a, bool value);
44 
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 
51  virtual bool is_in_conflict(literalt a) const override;
52  virtual bool has_set_assumptions() const final { return true; }
53  virtual bool has_is_in_conflict() const final { return true; }
54 
55  void set_time_limit_seconds(uint32_t lim) override
56  {
58  }
59 
60 protected:
61  T *solver;
63 
64  void add_variables();
66 };
67 
69  public satcheck_minisat2_baset<Minisat::Solver>
70 {
71 public:
73  virtual const std::string solver_text();
74 };
75 
77  public satcheck_minisat2_baset<Minisat::SimpSolver>
78 {
79 public:
81  virtual const std::string solver_text() final;
82  virtual void set_frozen(literalt a) final;
83  bool is_eliminated(literalt a) const;
84 };
85 
86 #endif // CPROVER_SOLVERS_SAT_SATCHECK_MINISAT2_H
satcheck_minisat2_baset::set_polarity
void set_polarity(literalt a, bool value)
Definition: satcheck_minisat2.cpp:70
satcheck_minisat2_baset::assumptions
bvt assumptions
Definition: satcheck_minisat2.h:65
satcheck_minisat_simplifiert::satcheck_minisat_simplifiert
satcheck_minisat_simplifiert()
Definition: satcheck_minisat2.cpp:348
satcheck_minisat2_baset
Definition: satcheck_minisat2.h:27
satcheck_minisat2_baset::add_variables
void add_variables()
Definition: satcheck_minisat2.cpp:110
satcheck_minisat2_baset::interrupt
void interrupt()
Definition: satcheck_minisat2.cpp:88
bvt
std::vector< literalt > bvt
Definition: literal.h:200
satcheck_minisat_no_simplifiert::satcheck_minisat_no_simplifiert
satcheck_minisat_no_simplifiert()
Definition: satcheck_minisat2.cpp:343
satcheck_minisat2_baset::solver
T * solver
Definition: satcheck_minisat2.h:61
satcheck_minisat2_baset::time_limit_seconds
uint32_t time_limit_seconds
Definition: satcheck_minisat2.h:62
satcheck_minisat_simplifiert::set_frozen
virtual void set_frozen(literalt a) final
Definition: satcheck_minisat2.cpp:353
satcheck_minisat2_baset::has_is_in_conflict
virtual bool has_is_in_conflict() const final
Definition: satcheck_minisat2.h:53
satcheck_minisat2_baset::clear_interrupt
void clear_interrupt()
Definition: satcheck_minisat2.cpp:94
satcheck_minisat_no_simplifiert::solver_text
virtual const std::string solver_text()
Definition: satcheck_minisat2.cpp:99
cnf_solvert
Definition: cnf.h:66
satcheck_minisat2_baset::is_in_conflict
virtual bool is_in_conflict(literalt a) const override
Returns true if an assumption is in the final conflict.
Definition: satcheck_minisat2.cpp:319
satcheck_minisat2_baset::has_set_assumptions
virtual bool has_set_assumptions() const final
Definition: satcheck_minisat2.h:52
satcheck_minisat_simplifiert::is_eliminated
bool is_eliminated(literalt a) const
Definition: satcheck_minisat2.cpp:371
satcheck_minisat_no_simplifiert
Definition: satcheck_minisat2.h:68
satcheck_minisat2_baset::l_get
virtual tvt l_get(literalt a) const final
Definition: satcheck_minisat2.cpp:42
satcheck_minisat_simplifiert::solver_text
virtual const std::string solver_text() final
Definition: satcheck_minisat2.cpp:104
satcheck_minisat2_baset::set_assumptions
virtual void set_assumptions(const bvt &_assumptions) override
Definition: satcheck_minisat2.cpp:331
propt::resultt
resultt
Definition: prop.h:96
Minisat
Definition: satcheck_minisat2.h:20
tvt
Definition: threeval.h:19
satcheck_minisat2_baset::satcheck_minisat2_baset
satcheck_minisat2_baset(T *)
Definition: satcheck_minisat2.cpp:301
satcheck_minisat2_baset::prop_solve
virtual resultt prop_solve() override
Definition: satcheck_minisat2.cpp:166
literalt
Definition: literal.h:24
satcheck_minisat2_baset::lcnf
virtual void lcnf(const bvt &bv) final
Definition: satcheck_minisat2.cpp:117
satcheck_minisat_simplifiert
Definition: satcheck_minisat2.h:76
satcheck_minisat2_baset::set_time_limit_seconds
void set_time_limit_seconds(uint32_t lim) override
Definition: satcheck_minisat2.h:55
satcheck_minisat2_baset::set_assignment
virtual void set_assignment(literalt a, bool value) override
Definition: satcheck_minisat2.cpp:278
cnf.h
satcheck_minisat2_baset::~satcheck_minisat2_baset
virtual ~satcheck_minisat2_baset()