cprover
satcheck_glucose.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_GLUCOSE_H
11 #define CPROVER_SOLVERS_SAT_SATCHECK_GLUCOSE_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 Glucose // 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_glucose_baset(T *);
31  virtual ~satcheck_glucose_baset();
32 
33  virtual resultt prop_solve();
34  virtual tvt l_get(literalt a) const;
35 
36  virtual void lcnf(const bvt &bv);
37  virtual void set_assignment(literalt a, bool value);
38 
39  // extra MiniSat feature: solve with assumptions
40  virtual void set_assumptions(const bvt &_assumptions);
41 
42  // extra MiniSat feature: default branching decision
43  void set_polarity(literalt a, bool value);
44 
45  virtual bool is_in_conflict(literalt a) const;
46  virtual bool has_set_assumptions() const { return true; }
47  virtual bool has_is_in_conflict() const { return true; }
48 
49 protected:
50  T *solver;
51 
52  void add_variables();
54 };
55 
57  public satcheck_glucose_baset<Glucose::Solver>
58 {
59 public:
61  virtual const std::string solver_text();
62 };
63 
65  public satcheck_glucose_baset<Glucose::SimpSolver>
66 {
67 public:
69  virtual const std::string solver_text();
70  virtual void set_frozen(literalt a);
71  bool is_eliminated(literalt a) const;
72 };
73 
74 #endif // CPROVER_SOLVERS_SAT_SATCHECK_GLUCOSE_H
satcheck_glucose_baset
Definition: satcheck_glucose.h:27
satcheck_glucose_simplifiert::set_frozen
virtual void set_frozen(literalt a)
Definition: satcheck_glucose.cpp:270
satcheck_glucose_baset::prop_solve
virtual resultt prop_solve()
Definition: satcheck_glucose.cpp:135
satcheck_glucose_baset::add_variables
void add_variables()
Definition: satcheck_glucose.cpp:93
satcheck_glucose_baset::lcnf
virtual void lcnf(const bvt &bv)
Definition: satcheck_glucose.cpp:100
bvt
std::vector< literalt > bvt
Definition: literal.h:200
satcheck_glucose_baset::solver
T * solver
Definition: satcheck_glucose.h:50
satcheck_glucose_baset::assumptions
bvt assumptions
Definition: satcheck_glucose.h:53
satcheck_glucose_no_simplifiert
Definition: satcheck_glucose.h:56
satcheck_glucose_baset::has_is_in_conflict
virtual bool has_is_in_conflict() const
Definition: satcheck_glucose.h:47
cnf_solvert
Definition: cnf.h:66
Glucose
Definition: satcheck_glucose.h:20
satcheck_glucose_simplifiert::solver_text
virtual const std::string solver_text()
Definition: satcheck_glucose.cpp:87
satcheck_glucose_no_simplifiert::satcheck_glucose_no_simplifiert
satcheck_glucose_no_simplifiert()
Definition: satcheck_glucose.cpp:260
satcheck_glucose_baset::has_set_assumptions
virtual bool has_set_assumptions() const
Definition: satcheck_glucose.h:46
satcheck_glucose_no_simplifiert::solver_text
virtual const std::string solver_text()
Definition: satcheck_glucose.cpp:82
propt::resultt
resultt
Definition: prop.h:96
satcheck_glucose_simplifiert::satcheck_glucose_simplifiert
satcheck_glucose_simplifiert()
Definition: satcheck_glucose.cpp:265
tvt
Definition: threeval.h:19
satcheck_glucose_baset::is_in_conflict
virtual bool is_in_conflict(literalt a) const
Returns true if an assumption is in the final conflict.
Definition: satcheck_glucose.cpp:240
satcheck_glucose_baset::set_assumptions
virtual void set_assumptions(const bvt &_assumptions)
Definition: satcheck_glucose.cpp:252
literalt
Definition: literal.h:24
satcheck_glucose_baset::set_assignment
virtual void set_assignment(literalt a, bool value)
Definition: satcheck_glucose.cpp:199
satcheck_glucose_baset::~satcheck_glucose_baset
virtual ~satcheck_glucose_baset()
satcheck_glucose_simplifiert::is_eliminated
bool is_eliminated(literalt a) const
Definition: satcheck_glucose.cpp:288
satcheck_glucose_baset::satcheck_glucose_baset
satcheck_glucose_baset(T *)
Definition: satcheck_glucose.cpp:222
satcheck_glucose_baset::l_get
virtual tvt l_get(literalt a) const
Definition: satcheck_glucose.cpp:37
satcheck_glucose_simplifiert
Definition: satcheck_glucose.h:64
satcheck_glucose_baset::set_polarity
void set_polarity(literalt a, bool value)
Definition: satcheck_glucose.cpp:65
cnf.h