CBMC
qbf_bdd_core.h
Go to the documentation of this file.
1 /*******************************************************************\
2 
3 Module:
4 
5 Author: CM Wintersteiger
6 
7 \*******************************************************************/
8 
9 
10 #ifndef CPROVER_SOLVERS_QBF_QBF_BDD_CORE_H
11 #define CPROVER_SOLVERS_QBF_QBF_BDD_CORE_H
12 
13 #include <vector>
14 
15 
16 #include "qdimacs_core.h"
17 
18 class Cudd; // NOLINT(*)
19 class BDD; // NOLINT(*)
20 
22 {
23 protected:
24  Cudd *bdd_manager;
25 
26  typedef std::vector<BDD*> model_bddst;
28 
29  typedef std::unordered_map<unsigned, exprt> function_cachet;
31 
32 public:
34  ~qbf_bdd_certificatet(void) override;
35 
36  literalt new_variable(void) override;
37 
38  tvt l_get(literalt a) const override;
39  const exprt f_get(literalt l) override;
40 };
41 
42 
44 {
45 private:
46  typedef std::vector<BDD*> bdd_variable_mapt;
48 
49  BDD *matrix;
50 
51 public:
52  qbf_bdd_coret();
53  ~qbf_bdd_coret() override;
54 
55  literalt new_variable() override;
56 
57  void lcnf(const bvt &bv) override;
58  literalt lor(literalt a, literalt b) override;
59  literalt lor(const bvt &bv) override;
60 
61  std::string solver_text() const override;
62  resultt prop_solve() override;
63  tvt l_get(literalt a) const override;
64 
65  bool is_in_core(literalt l) const override;
66  modeltypet m_get(literalt a) const override;
67 
68 protected:
69  void compress_certificate(void);
70 };
71 
72 #endif // CPROVER_SOLVERS_QBF_QBF_BDD_CORE_H
Base class for all expressions.
Definition: expr.h:56
resultt
Definition: prop.h:101
std::vector< BDD * > model_bddst
Definition: qbf_bdd_core.h:26
std::unordered_map< unsigned, exprt > function_cachet
Definition: qbf_bdd_core.h:29
tvt l_get(literalt a) const override
model_bddst model_bdds
Definition: qbf_bdd_core.h:27
const exprt f_get(literalt l) override
~qbf_bdd_certificatet(void) override
function_cachet function_cache
Definition: qbf_bdd_core.h:30
literalt new_variable(void) override
Generate a new variable and return it as a literal.
literalt new_variable() override
Generate a new variable and return it as a literal.
void lcnf(const bvt &bv) override
bool is_in_core(literalt l) const override
resultt prop_solve() override
~qbf_bdd_coret() override
tvt l_get(literalt a) const override
bdd_variable_mapt bdd_variable_map
Definition: qbf_bdd_core.h:47
modeltypet m_get(literalt a) const override
std::string solver_text() const override
literalt lor(literalt a, literalt b) override
std::vector< BDD * > bdd_variable_mapt
Definition: qbf_bdd_core.h:46
void compress_certificate(void)
Definition: threeval.h:20
std::vector< literalt > bvt
Definition: literal.h:201