CBMC
qbf_squolem_core.h
Go to the documentation of this file.
1 /*******************************************************************\
2 
3 Module: Squolem Backend (with Proofs)
4 
5 Author: CM Wintersteiger
6 
7 \*******************************************************************/
8 
11 
12 #ifndef CPROVER_SOLVERS_QBF_QBF_SQUOLEM_CORE_H
13 #define CPROVER_SOLVERS_QBF_QBF_SQUOLEM_CORE_H
14 
15 #include <quannon/squolem2/squolem2.h>
16 
17 #include "qdimacs_core.h"
18 
20 {
21 protected:
22  Squolem2 *squolem;
24 
25 public:
27  virtual ~qbf_squolem_coret();
28 
29  virtual const std::string solver_text();
30  virtual resultt prop_solve();
31 
32  virtual tvt l_get(literalt a) const;
33  virtual bool is_in_core(literalt l) const;
34 
35  void set_debug_filename(const std::string &str);
36 
37  virtual void lcnf(const bvt &bv);
38  virtual void add_quantifier(const quantifiert &quantifier);
39  virtual void set_quantifier(const quantifiert::typet type, const literalt l);
40  virtual void set_no_variables(size_t no);
41  virtual size_t no_clauses() const { return squolem->clauses(); }
42 
43  virtual modeltypet m_get(literalt a) const;
44 
45  virtual void write_qdimacs_cnf(std::ostream &out);
46 
47  void reset(void);
48 
49  virtual const exprt f_get(literalt l);
50 
51 private:
52  typedef std::unordered_map<unsigned, exprt> function_cachet;
54 
55  const exprt f_get_cnf(WitnessStack *wsp);
56  const exprt f_get_dnf(WitnessStack *wsp);
57 
58  void setup(void);
59 };
60 
61 #endif // CPROVER_SOLVERS_QBF_QBF_SQUOLEM_CORE_H
qbf_squolem_coret
Definition: qbf_squolem_core.h:19
qbf_squolem_coret::set_quantifier
virtual void set_quantifier(const quantifiert::typet type, const literalt l)
Definition: qbf_squolem_core.cpp:170
widen_modet::no
@ no
bvt
std::vector< literalt > bvt
Definition: literal.h:201
exprt
Base class for all expressions.
Definition: expr.h:55
qbf_squolem_coret::setup
void setup(void)
Definition: qbf_squolem_core.cpp:26
qbf_squolem_coret::set_no_variables
virtual void set_no_variables(size_t no)
Definition: qbf_squolem_core.cpp:164
qbf_squolem_coret::write_qdimacs_cnf
virtual void write_qdimacs_cnf(std::ostream &out)
Definition: qbf_squolem_core.cpp:183
qbf_squolem_coret::~qbf_squolem_coret
virtual ~qbf_squolem_coret()
Definition: qbf_squolem_core.cpp:55
qdimacs_cnft::quantifiert::typet
typet
Definition: qdimacs_cnf.h:38
qbf_squolem_coret::set_debug_filename
void set_debug_filename(const std::string &str)
Definition: qbf_squolem_core.cpp:178
qbf_squolem_coret::f_get
virtual const exprt f_get(literalt l)
Definition: qbf_squolem_core.cpp:188
qbf_squolem_coret::l_get
virtual tvt l_get(literalt a) const
Definition: qbf_squolem_core.cpp:62
qbf_squolem_coret::lcnf
virtual void lcnf(const bvt &bv)
Definition: qbf_squolem_core.cpp:126
qdimacs_core.h
qbf_squolem_coret::f_get_cnf
const exprt f_get_cnf(WitnessStack *wsp)
Definition: qbf_squolem_core.cpp:246
qbf_squolem_coret::function_cachet
std::unordered_map< unsigned, exprt > function_cachet
Definition: qbf_squolem_core.h:52
qdimacs_coret::modeltypet
modeltypet
Definition: qdimacs_core.h:30
propt::resultt
resultt
Definition: prop.h:97
qdimacs_coret
Definition: qdimacs_core.h:19
tvt
Definition: threeval.h:19
qbf_squolem_coret::add_quantifier
virtual void add_quantifier(const quantifiert &quantifier)
Definition: qbf_squolem_core.cpp:155
qbf_squolem_coret::m_get
virtual modeltypet m_get(literalt a) const
Definition: qbf_squolem_core.cpp:114
qbf_squolem_coret::is_in_core
virtual bool is_in_core(literalt l) const
Definition: qbf_squolem_core.cpp:109
qbf_squolem_coret::squolem
Squolem2 * squolem
Definition: qbf_squolem_core.h:22
qbf_squolem_coret::early_decision
bool early_decision
Definition: qbf_squolem_core.h:23
qbf_squolem_coret::qbf_squolem_coret
qbf_squolem_coret()
Definition: qbf_squolem_core.cpp:21
literalt
Definition: literal.h:25
qbf_squolem_coret::no_clauses
virtual size_t no_clauses() const
Definition: qbf_squolem_core.h:41
qdimacs_cnft::quantifiert
Definition: qdimacs_cnf.h:35
qbf_squolem_coret::f_get_dnf
const exprt f_get_dnf(WitnessStack *wsp)
Definition: qbf_squolem_core.cpp:288
qbf_squolem_coret::prop_solve
virtual resultt prop_solve()
Definition: qbf_squolem_core.cpp:82
qbf_squolem_coret::function_cache
function_cachet function_cache
Definition: qbf_squolem_core.h:53
qbf_squolem_coret::reset
void reset(void)
Definition: qbf_squolem_core.cpp:47
qbf_squolem_coret::solver_text
virtual const std::string solver_text()
Definition: qbf_squolem_core.cpp:77