CBMC
satcheck_minisat.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_MINISAT_H
11 #define CPROVER_SOLVERS_SAT_SATCHECK_MINISAT_H
12 
13 #include <vector>
14 
15 #include "cnf.h"
16 #include "resolution_proof.h"
17 
19 {
20 public:
22  {
23  }
24 
25  virtual ~satcheck_minisat1_baset();
26 
27  const std::string solver_text() override;
28  tvt l_get(literalt a) const override;
29 
30  void lcnf(const bvt &bv) final;
31 
32  void set_assignment(literalt a, bool value) override;
33 
34  // extra MiniSat feature: solve with assumptions
35  void set_assumptions(const bvt &_assumptions) override;
36 
37  // features
38  bool has_set_assumptions() const override
39  {
40  return true;
41  }
42  bool has_is_in_conflict() const override
43  {
44  return true;
45  }
46 
47  bool is_in_conflict(literalt l) const override;
48 
49 protected:
50  resultt do_prop_solve() override;
51 
52  // NOLINTNEXTLINE(readability/identifiers)
53  class Solver *solver;
54  void add_variables();
57 };
58 
60 {
61 public:
63 };
64 
66 {
67 public:
70 
71  const std::string solver_text() override;
73  // void set_partition_id(unsigned p_id);
74 
75 protected:
76  // NOLINTNEXTLINE(readability/identifiers)
77  class Proof *proof;
79 };
80 
82 {
83 public:
86 
87  const std::string solver_text() override;
88 
89  bool has_in_core() const
90  {
91  return true;
92  }
93 
94  bool is_in_core(literalt l) const
95  {
96  PRECONDITION(l.var_no() < in_core.size());
97  return in_core[l.var_no()];
98  }
99 
100 protected:
101  std::vector<bool> in_core;
102 
103  resultt do_prop_solve() override;
104 };
105 #endif // CPROVER_SOLVERS_SAT_SATCHECK_MINISAT_H
satcheck_minisat1_baset
Definition: satcheck_minisat.h:18
satcheck_minisat1_baset::assumptions
bvt assumptions
Definition: satcheck_minisat.h:55
satcheck_minisat1_baset::l_get
tvt l_get(literalt a) const override
Definition: satcheck_minisat.cpp:84
resultt
resultt
The result of goto verifying.
Definition: properties.h:44
satcheck_minisat1_baset::do_prop_solve
resultt do_prop_solve() override
Definition: satcheck_minisat.cpp:153
bvt
std::vector< literalt > bvt
Definition: literal.h:201
satcheck_minisat1_coret::satcheck_minisat1_coret
satcheck_minisat1_coret()
Definition: satcheck_minisat.cpp:247
satcheck_minisat1_baset::is_in_conflict
bool is_in_conflict(literalt l) const override
Returns true if an assumption is in the final conflict.
Definition: satcheck_minisat.cpp:204
literalt::var_no
var_not var_no() const
Definition: literal.h:83
satcheck_minisat1_baset::add_variables
void add_variables()
Definition: satcheck_minisat.cpp:116
cnf_solvert
Definition: cnf.h:72
satcheck_minisat1_prooft::satcheck_minisat1_prooft
satcheck_minisat1_prooft()
Definition: satcheck_minisat.cpp:233
satcheck_minisat1_coret::solver_text
const std::string solver_text() override
Definition: satcheck_minisat.cpp:280
satcheck_minisat1_coret::is_in_core
bool is_in_core(literalt l) const
Definition: satcheck_minisat.h:94
satcheck_minisat1t::satcheck_minisat1t
satcheck_minisat1t()
Definition: satcheck_minisat.cpp:227
satcheck_minisat1_prooft
Definition: satcheck_minisat.h:65
satcheck_minisat1_baset::lcnf
void lcnf(const bvt &bv) final
Definition: satcheck_minisat.cpp:122
satcheck_minisat1_coret::~satcheck_minisat1_coret
~satcheck_minisat1_coret()
Definition: satcheck_minisat.cpp:251
satcheck_minisat1t
Definition: satcheck_minisat.h:59
PRECONDITION
#define PRECONDITION(CONDITION)
Definition: invariant.h:463
satcheck_minisat1_prooft::solver_text
const std::string solver_text() override
Definition: satcheck_minisat.cpp:260
satcheck_minisat1_prooft::proof
class Proof * proof
Definition: satcheck_minisat.h:77
propt::resultt
resultt
Definition: prop.h:97
satcheck_minisat1_baset::solver_text
const std::string solver_text() override
Definition: satcheck_minisat.cpp:111
tvt
Definition: threeval.h:19
satcheck_minisat1_prooft::minisat_proof
class minisat_prooft * minisat_proof
Definition: satcheck_minisat.h:78
satcheck_minisat1_prooft::~satcheck_minisat1_prooft
~satcheck_minisat1_prooft()
Definition: satcheck_minisat.cpp:241
satcheck_minisat1_coret::in_core
std::vector< bool > in_core
Definition: satcheck_minisat.h:101
satcheck_minisat1_baset::empty_clause_added
bool empty_clause_added
Definition: satcheck_minisat.h:56
satcheck_minisat1_baset::has_set_assumptions
bool has_set_assumptions() const override
Definition: satcheck_minisat.h:38
resolution_proof.h
satcheck_minisat1_coret::has_in_core
bool has_in_core() const
Definition: satcheck_minisat.h:89
satcheck_minisat1_baset::set_assumptions
void set_assumptions(const bvt &_assumptions) override
Definition: satcheck_minisat.cpp:217
satcheck_minisat1_baset::solver
class Solver * solver
Definition: satcheck_minisat.h:53
literalt
Definition: literal.h:25
satcheck_minisat1_prooft::get_resolution_proof
simple_prooft & get_resolution_proof()
Definition: satcheck_minisat.cpp:285
resolution_prooft< clauset >
satcheck_minisat1_coret
Definition: satcheck_minisat.h:81
satcheck_minisat1_baset::set_assignment
void set_assignment(literalt a, bool value) override
Definition: satcheck_minisat.cpp:195
satcheck_minisat1_baset::has_is_in_conflict
bool has_is_in_conflict() const override
Definition: satcheck_minisat.h:42
satcheck_minisat1_baset::satcheck_minisat1_baset
satcheck_minisat1_baset()
Definition: satcheck_minisat.h:21
cnf.h
satcheck_minisat1_coret::do_prop_solve
resultt do_prop_solve() override
Definition: satcheck_minisat.cpp:265
satcheck_minisat1_baset::~satcheck_minisat1_baset
virtual ~satcheck_minisat1_baset()
Definition: satcheck_minisat.cpp:255
minisat_prooft
Definition: satcheck_minisat.cpp:32