CBMC
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 
16 
17 #include <memory>
18 
19 // Select one: basic solver or with simplification.
20 // Note that the solver with simplifier isn't really robust
21 // when used incrementally, as variables may disappear
22 // unless set to 'frozen'.
23 
24 namespace Minisat // NOLINT(readability/namespace)
25 {
26 class Solver; // NOLINT(readability/identifiers)
27 class SimpSolver; // NOLINT(readability/identifiers)
28 }
29 
30 template <typename T>
32 {
33 public:
34  explicit satcheck_minisat2_baset(message_handlert &message_handler);
37  ~satcheck_minisat2_baset() override;
38 
39  tvt l_get(literalt a) const override final;
40 
41  void lcnf(const bvt &bv) override final;
42  void set_assignment(literalt a, bool value) override;
43 
44  // extra MiniSat feature: solve with assumptions
45  void set_assumptions(const bvt &_assumptions) override;
46 
47  // extra MiniSat feature: default branching decision
48  void set_polarity(literalt a, bool value);
49 
50  // extra MiniSat feature: interrupt running SAT query
51  void interrupt();
52 
53  // extra MiniSat feature: permit previously interrupted SAT query to continue
54  void clear_interrupt();
55 
56  bool is_in_conflict(literalt a) const override;
57  bool has_set_assumptions() const override final
58  {
59  return true;
60  }
61  bool has_is_in_conflict() const override final
62  {
63  return true;
64  }
65 
66  void set_time_limit_seconds(uint32_t lim) override
67  {
69  }
70 
71 protected:
72  resultt do_prop_solve() override;
73 
74  std::unique_ptr<T> solver;
76 
77  void add_variables();
79 };
80 
82  public satcheck_minisat2_baset<Minisat::Solver>
83 {
84 public:
86  const std::string solver_text() override;
87 };
88 
90  public satcheck_minisat2_baset<Minisat::SimpSolver>
91 {
92 public:
94  const std::string solver_text() override final;
95  void set_frozen(literalt a) override final;
96  bool is_eliminated(literalt a) const;
97 };
98 
99 #endif // CPROVER_SOLVERS_SAT_SATCHECK_MINISAT2_H
satcheck_minisat2_baset::set_polarity
void set_polarity(literalt a, bool value)
Definition: satcheck_minisat2.cpp:71
satcheck_minisat2_baset::assumptions
bvt assumptions
Definition: satcheck_minisat2.h:78
satcheck_minisat2_baset
Definition: satcheck_minisat2.h:31
resultt
resultt
The result of goto verifying.
Definition: properties.h:44
satcheck_minisat_simplifiert::solver_text
const std::string solver_text() override final
Definition: satcheck_minisat2.cpp:107
hardness_collector.h
satcheck_minisat2_baset::add_variables
void add_variables()
Definition: satcheck_minisat2.cpp:113
satcheck_minisat2_baset::l_get
tvt l_get(literalt a) const override final
Definition: satcheck_minisat2.cpp:43
satcheck_minisat2_baset::interrupt
void interrupt()
Definition: satcheck_minisat2.cpp:91
bvt
std::vector< literalt > bvt
Definition: literal.h:201
satcheck_minisat2_baset::lcnf
void lcnf(const bvt &bv) override final
Definition: satcheck_minisat2.cpp:120
satcheck_minisat2_baset::time_limit_seconds
uint32_t time_limit_seconds
Definition: satcheck_minisat2.h:75
satcheck_minisat2_baset::has_is_in_conflict
bool has_is_in_conflict() const override final
Definition: satcheck_minisat2.h:61
satcheck_minisat2_baset::satcheck_minisat2_baset
satcheck_minisat2_baset(message_handlert &message_handler)
Definition: satcheck_minisat2.cpp:311
satcheck_minisat2_baset::clear_interrupt
void clear_interrupt()
Definition: satcheck_minisat2.cpp:97
satcheck_minisat2_baset::solver
std::unique_ptr< T > solver
Definition: satcheck_minisat2.h:74
cnf_solvert
Definition: cnf.h:72
satcheck_minisat2_baset::do_prop_solve
resultt do_prop_solve() override
Definition: satcheck_minisat2.cpp:189
satcheck_minisat_simplifiert::set_frozen
void set_frozen(literalt a) override final
Definition: satcheck_minisat2.cpp:352
satcheck_minisat2_baset::is_in_conflict
bool is_in_conflict(literalt a) const override
Returns true if an assumption is in the final conflict.
Definition: satcheck_minisat2.cpp:323
satcheck_minisat_simplifiert::is_eliminated
bool is_eliminated(literalt a) const
Definition: satcheck_minisat2.cpp:370
satcheck_minisat_no_simplifiert
Definition: satcheck_minisat2.h:81
satcheck_minisat2_baset::has_set_assumptions
bool has_set_assumptions() const override final
Definition: satcheck_minisat2.h:57
satcheck_minisat2_baset::set_assumptions
void set_assumptions(const bvt &_assumptions) override
Definition: satcheck_minisat2.cpp:335
message_handlert
Definition: message.h:27
Minisat
Definition: satcheck_minisat2.h:24
tvt
Definition: threeval.h:19
satcheck_minisat_no_simplifiert::solver_text
const std::string solver_text() override
Definition: satcheck_minisat2.cpp:102
literalt
Definition: literal.h:25
satcheck_minisat2_baset::~satcheck_minisat2_baset
~satcheck_minisat2_baset() override
A default destructor defined in the .cpp is used to ensure the unique_ptr to the solver is correctly ...
satcheck_minisat_simplifiert
Definition: satcheck_minisat2.h:89
hardness_collectort
Definition: hardness_collector.h:44
satcheck_minisat2_baset::set_time_limit_seconds
void set_time_limit_seconds(uint32_t lim) override
Definition: satcheck_minisat2.h:66
satcheck_minisat2_baset::set_assignment
void set_assignment(literalt a, bool value) override
Definition: satcheck_minisat2.cpp:288
cnf.h