CBMC
decision_procedure.h
Go to the documentation of this file.
1 /*******************************************************************\
2 
3 Module: Decision Procedure Interface
4 
5 Author: Daniel Kroening, kroening@kroening.com
6 
7 \*******************************************************************/
8 
11 
12 #ifndef CPROVER_SOLVERS_DECISION_PROCEDURE_H
13 #define CPROVER_SOLVERS_DECISION_PROCEDURE_H
14 
15 #include <iosfwd>
16 #include <string>
17 
18 class exprt;
19 
21 {
22 public:
25  virtual void set_to(const exprt &expr, bool value) = 0;
26 
28  void set_to_true(const exprt &expr);
29 
31  void set_to_false(const exprt &expr);
32 
40  virtual exprt handle(const exprt &expr) = 0;
41 
43  enum class resultt
44  {
47  D_ERROR
48  };
49 
52 
56  virtual exprt get(const exprt &expr) const = 0;
57 
59  virtual void print_assignment(std::ostream &out) const = 0;
60 
62  virtual std::string decision_procedure_text() const = 0;
63 
65  virtual std::size_t get_number_of_solver_calls() const = 0;
66 
67  virtual ~decision_proceduret();
68 
69 protected:
71  virtual resultt dec_solve() = 0;
72 };
73 
75 inline decision_proceduret &
77 {
78  dest.set_to_true(src);
79  return dest;
80 }
81 
82 #endif // CPROVER_SOLVERS_DECISION_PROCEDURE_H
decision_proceduret::get
virtual exprt get(const exprt &expr) const =0
Return expr with variables replaced by values from satisfying assignment if available.
resultt
resultt
The result of goto verifying.
Definition: properties.h:44
decision_proceduret
Definition: decision_procedure.h:20
decision_proceduret::resultt::D_UNSATISFIABLE
@ D_UNSATISFIABLE
exprt
Base class for all expressions.
Definition: expr.h:55
decision_proceduret::set_to_true
void set_to_true(const exprt &expr)
For a Boolean expression expr, add the constraint 'expr'.
Definition: decision_procedure.cpp:23
decision_proceduret::operator()
resultt operator()()
Run the decision procedure to solve the problem.
Definition: decision_procedure.cpp:18
decision_proceduret::set_to_false
void set_to_false(const exprt &expr)
For a Boolean expression expr, add the constraint 'not expr'.
Definition: decision_procedure.cpp:28
decision_proceduret::resultt::D_SATISFIABLE
@ D_SATISFIABLE
decision_proceduret::set_to
virtual void set_to(const exprt &expr, bool value)=0
For a Boolean expression expr, add the constraint 'expr' if value is true, otherwise add 'not expr'.
operator<<
decision_proceduret & operator<<(decision_proceduret &dest, const exprt &src)
Add Boolean constraint src to decision procedure dest.
Definition: decision_procedure.h:76
decision_proceduret::get_number_of_solver_calls
virtual std::size_t get_number_of_solver_calls() const =0
Return the number of incremental solver calls.
decision_proceduret::dec_solve
virtual resultt dec_solve()=0
Run the decision procedure to solve the problem.
decision_proceduret::print_assignment
virtual void print_assignment(std::ostream &out) const =0
Print satisfying assignment to out.
decision_proceduret::resultt::D_ERROR
@ D_ERROR
decision_proceduret::handle
virtual exprt handle(const exprt &expr)=0
Generate a handle, which is an expression that has the same value as the argument in any model that i...
decision_proceduret::resultt
resultt
Result of running the decision procedure.
Definition: decision_procedure.h:43
decision_proceduret::decision_procedure_text
virtual std::string decision_procedure_text() const =0
Return a textual description of the decision procedure.
decision_proceduret::~decision_proceduret
virtual ~decision_proceduret()
Definition: decision_procedure.cpp:14