CBMC
qdimacs_cnf.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_QBF_QDIMACS_CNF_H
11 #define CPROVER_SOLVERS_QBF_QDIMACS_CNF_H
12 
13 #include <iosfwd>
14 
15 #include <solvers/sat/dimacs_cnf.h>
16 
18 {
19 public:
20  explicit qdimacs_cnft(message_handlert &message_handler)
21  : dimacs_cnft(message_handler)
22  {
23  }
24  virtual ~qdimacs_cnft() { }
25 
26  virtual void write_qdimacs_cnf(std::ostream &out);
27 
28  // dummy functions
29 
30  virtual const std::string solver_text()
31  {
32  return "QDIMACS CNF";
33  }
34 
36  {
37  public:
38  enum class typet { NONE, EXISTENTIAL, UNIVERSAL };
40  unsigned var_no;
41 
43  {
44  }
45 
46  quantifiert(typet _type, literalt _l):type(_type), var_no(_l.var_no())
47  {
48  }
49 
50  bool operator==(const quantifiert &other) const
51  {
52  return type==other.type && var_no==other.var_no;
53  }
54 
55  size_t hash() const
56  {
57  return var_no^(static_cast<int>(type)<<24);
58  }
59  };
60 
61  // quantifiers
62  typedef std::vector<quantifiert> quantifierst;
64 
65  virtual void add_quantifier(const quantifiert &quantifier)
66  {
67  quantifiers.push_back(quantifier);
68  }
69 
70  void add_quantifier(const quantifiert::typet type, const literalt l)
71  {
72  add_quantifier(quantifiert(type, l));
73  }
74 
76  {
78  }
79 
81  {
83  }
84 
85  bool is_quantified(const literalt l) const;
86  bool find_quantifier(const literalt l, quantifiert &q) const;
87 
88  virtual void set_quantifier(const quantifiert::typet type, const literalt l);
89  void copy_to(qdimacs_cnft &cnf) const;
90 
91  bool operator==(const qdimacs_cnft &other) const;
92 
93  size_t hash() const;
94 
95 protected:
96  void write_prefix(std::ostream &out) const;
97 };
98 
99 #endif // CPROVER_SOLVERS_QBF_QDIMACS_CNF_H
complexity_violationt::NONE
@ NONE
qdimacs_cnft::copy_to
void copy_to(qdimacs_cnft &cnf) const
Definition: qdimacs_cnf.cpp:90
qdimacs_cnft::hash
size_t hash() const
Definition: qdimacs_cnf.cpp:107
qdimacs_cnft::quantifierst
std::vector< quantifiert > quantifierst
Definition: qdimacs_cnf.h:62
qdimacs_cnft::~qdimacs_cnft
virtual ~qdimacs_cnft()
Definition: qdimacs_cnf.h:24
qdimacs_cnft::write_qdimacs_cnf
virtual void write_qdimacs_cnf(std::ostream &out)
Definition: qdimacs_cnf.cpp:15
typet
The type of an expression, extends irept.
Definition: type.h:28
qdimacs_cnft::is_quantified
bool is_quantified(const literalt l) const
Definition: qdimacs_cnf.cpp:119
qdimacs_cnft::write_prefix
void write_prefix(std::ostream &out) const
Definition: qdimacs_cnf.cpp:22
qdimacs_cnft::add_quantifier
void add_quantifier(const quantifiert::typet type, const literalt l)
Definition: qdimacs_cnf.h:70
qdimacs_cnft::add_existential_quantifier
void add_existential_quantifier(const literalt l)
Definition: qdimacs_cnf.h:75
qdimacs_cnft::find_quantifier
bool find_quantifier(const literalt l, quantifiert &q) const
Definition: qdimacs_cnf.cpp:130
qdimacs_cnft::quantifiert::typet::UNIVERSAL
@ UNIVERSAL
qdimacs_cnft::quantifiert::typet
typet
Definition: qdimacs_cnf.h:38
qdimacs_cnft::quantifiert::typet::NONE
@ NONE
qdimacs_cnft::solver_text
virtual const std::string solver_text()
Definition: qdimacs_cnf.h:30
qdimacs_cnft::quantifiert::type
typet type
Definition: qdimacs_cnf.h:39
qdimacs_cnft::set_quantifier
virtual void set_quantifier(const quantifiert::typet type, const literalt l)
Definition: qdimacs_cnf.cpp:73
message_handlert
Definition: message.h:27
qdimacs_cnft::quantifiert::quantifiert
quantifiert(typet _type, literalt _l)
Definition: qdimacs_cnf.h:46
qdimacs_cnft::quantifiert::typet::EXISTENTIAL
@ EXISTENTIAL
qdimacs_cnft::quantifiert::quantifiert
quantifiert()
Definition: qdimacs_cnf.h:42
qdimacs_cnft::quantifiert::hash
size_t hash() const
Definition: qdimacs_cnf.h:55
qdimacs_cnft::add_universal_quantifier
void add_universal_quantifier(const literalt l)
Definition: qdimacs_cnf.h:80
dimacs_cnf.h
qdimacs_cnft::quantifiers
quantifierst quantifiers
Definition: qdimacs_cnf.h:63
qdimacs_cnft
Definition: qdimacs_cnf.h:17
qdimacs_cnft::operator==
bool operator==(const qdimacs_cnft &other) const
Definition: qdimacs_cnf.cpp:68
qdimacs_cnft::qdimacs_cnft
qdimacs_cnft(message_handlert &message_handler)
Definition: qdimacs_cnf.h:20
literalt
Definition: literal.h:25
qdimacs_cnft::quantifiert::operator==
bool operator==(const quantifiert &other) const
Definition: qdimacs_cnf.h:50
qdimacs_cnft::quantifiert::var_no
unsigned var_no
Definition: qdimacs_cnf.h:40
qdimacs_cnft::quantifiert
Definition: qdimacs_cnf.h:35
dimacs_cnft
Definition: dimacs_cnf.h:17
qdimacs_cnft::add_quantifier
virtual void add_quantifier(const quantifiert &quantifier)
Definition: qdimacs_cnf.h:65