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  satcheck_glucose_baset(T *, message_handlert &message_handler);
32 
33  tvt l_get(literalt a) const override;
34 
35  void lcnf(const bvt &bv) override;
36  void set_assignment(literalt a, bool value) override;
37 
38  // extra MiniSat feature: solve with assumptions
39  void set_assumptions(const bvt &_assumptions) override;
40 
41  // extra MiniSat feature: default branching decision
42  void set_polarity(literalt a, bool value);
43 
44  bool is_in_conflict(literalt a) const override;
45  bool has_set_assumptions() const override
46  {
47  return true;
48  }
49  bool has_is_in_conflict() const override
50  {
51  return true;
52  }
53 
54 protected:
55  resultt do_prop_solve() override;
56 
57  T *solver;
58 
59  void add_variables();
61 };
62 
64  public satcheck_glucose_baset<Glucose::Solver>
65 {
66 public:
67  explicit satcheck_glucose_no_simplifiert(message_handlert &message_handler);
68  const std::string solver_text() override;
69 };
70 
72  public satcheck_glucose_baset<Glucose::SimpSolver>
73 {
74 public:
75  explicit satcheck_glucose_simplifiert(message_handlert &message_handler);
76  const std::string solver_text() override;
77  void set_frozen(literalt a) override;
78  bool is_eliminated(literalt a) const;
79 };
80 
81 #endif // CPROVER_SOLVERS_SAT_SATCHECK_GLUCOSE_H
satcheck_glucose_baset
Definition: satcheck_glucose.h:28
satcheck_glucose_simplifiert::set_frozen
void set_frozen(literalt a) override
Definition: satcheck_glucose.cpp:277
satcheck_glucose_simplifiert::satcheck_glucose_simplifiert
satcheck_glucose_simplifiert(message_handlert &message_handler)
Definition: satcheck_glucose.cpp:269
satcheck_glucose_baset::satcheck_glucose_baset
satcheck_glucose_baset(T *, message_handlert &message_handler)
Definition: satcheck_glucose.cpp:221
resultt
resultt
The result of goto verifying.
Definition: properties.h:44
satcheck_glucose_baset::add_variables
void add_variables()
Definition: satcheck_glucose.cpp:93
bvt
std::vector< literalt > bvt
Definition: literal.h:201
satcheck_glucose_baset::solver
T * solver
Definition: satcheck_glucose.h:57
satcheck_glucose_baset::assumptions
bvt assumptions
Definition: satcheck_glucose.h:60
satcheck_glucose_no_simplifiert
Definition: satcheck_glucose.h:65
satcheck_glucose_baset::set_assignment
void set_assignment(literalt a, bool value) override
Definition: satcheck_glucose.cpp:198
satcheck_glucose_baset::set_assumptions
void set_assumptions(const bvt &_assumptions) override
Definition: satcheck_glucose.cpp:253
cnf_solvert
Definition: cnf.h:70
Glucose
Definition: satcheck_glucose.h:21
satcheck_glucose_no_simplifiert::satcheck_glucose_no_simplifiert
satcheck_glucose_no_simplifiert(message_handlert &message_handler)
Definition: satcheck_glucose.cpp:261
satcheck_glucose_baset::l_get
tvt l_get(literalt a) const override
Definition: satcheck_glucose.cpp:37
satcheck_glucose_simplifiert::solver_text
const std::string solver_text() override
Definition: satcheck_glucose.cpp:87
satcheck_glucose_baset::is_in_conflict
bool is_in_conflict(literalt a) const override
Returns true if an assumption is in the final conflict.
Definition: satcheck_glucose.cpp:241
message_handlert
Definition: message.h:28
satcheck_glucose_no_simplifiert::solver_text
const std::string solver_text() override
Definition: satcheck_glucose.cpp:82
tvt
Definition: threeval.h:20
satcheck_glucose_baset::has_is_in_conflict
bool has_is_in_conflict() const override
Definition: satcheck_glucose.h:49
literalt
Definition: literal.h:26
satcheck_glucose_baset::~satcheck_glucose_baset
virtual ~satcheck_glucose_baset()
satcheck_glucose_baset::lcnf
void lcnf(const bvt &bv) override
Definition: satcheck_glucose.cpp:100
satcheck_glucose_simplifiert::is_eliminated
bool is_eliminated(literalt a) const
Definition: satcheck_glucose.cpp:295
satcheck_glucose_baset::has_set_assumptions
bool has_set_assumptions() const override
Definition: satcheck_glucose.h:45
satcheck_glucose_simplifiert
Definition: satcheck_glucose.h:73
satcheck_glucose_baset::do_prop_solve
resultt do_prop_solve() override
Definition: satcheck_glucose.cpp:135
satcheck_glucose_baset::set_polarity
void set_polarity(literalt a, bool value)
Definition: satcheck_glucose.cpp:65
cnf.h
CNF Generation, via Tseitin.