cprover
Toggle main menu visibility
Loading...
Searching...
No Matches
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
class
decision_proceduret
22
{
23
public
:
26
virtual
void
set_to
(
const
exprt
&,
bool
value) = 0;
27
29
void
set_to_true
(
const
exprt
&);
30
32
void
set_to_false
(
const
exprt
&);
33
41
virtual
exprt
handle
(
const
exprt
&) = 0;
42
44
enum class
resultt
45
{
46
D_SATISFIABLE
,
47
D_UNSATISFIABLE
,
48
D_ERROR
49
};
50
53
resultt
operator()
();
54
58
resultt
operator()
(
const
exprt
&assumption);
59
63
virtual
exprt
get
(
const
exprt
&)
const
= 0;
64
66
virtual
void
print_assignment
(std::ostream &out)
const
= 0;
67
69
virtual
std::string
decision_procedure_text
()
const
= 0;
70
72
virtual
std::size_t
get_number_of_solver_calls
()
const
= 0;
73
74
virtual
~decision_proceduret
();
75
76
protected
:
78
virtual
resultt
dec_solve
(
const
exprt
&assumption) = 0;
79
};
80
82
inline
decision_proceduret
&
83
operator<<
(
decision_proceduret
&dest,
const
exprt
&src)
84
{
85
dest.
set_to_true
(src);
86
return
dest;
87
}
88
89
#endif
// CPROVER_SOLVERS_DECISION_PROCEDURE_H
decision_proceduret
An interface for a decision procedure for satisfiability problems.
Definition
decision_procedure.h:22
decision_proceduret::get
virtual exprt get(const exprt &) const =0
Return expr with variables replaced by values from satisfying assignment if available.
decision_proceduret::operator()
resultt operator()()
Run the decision procedure to solve the problem This corresponds to SMT-LIB's check-sat.
Definition
decision_procedure.cpp:20
decision_proceduret::set_to_false
void set_to_false(const exprt &)
For a Boolean expression expr, add the constraint 'not expr'.
Definition
decision_procedure.cpp:36
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(const exprt &assumption)=0
Implementation of the decision procedure.
decision_proceduret::resultt
resultt
Result of running the decision procedure.
Definition
decision_procedure.h:45
decision_proceduret::resultt::D_ERROR
@ D_ERROR
Definition
decision_procedure.h:48
decision_proceduret::resultt::D_UNSATISFIABLE
@ D_UNSATISFIABLE
Definition
decision_procedure.h:47
decision_proceduret::resultt::D_SATISFIABLE
@ D_SATISFIABLE
Definition
decision_procedure.h:46
decision_proceduret::print_assignment
virtual void print_assignment(std::ostream &out) const =0
Print satisfying assignment to out.
decision_proceduret::handle
virtual exprt handle(const exprt &)=0
Generate a handle, which is an expression that has the same value as the argument in any model that i...
decision_proceduret::set_to_true
void set_to_true(const exprt &)
For a Boolean expression expr, add the constraint 'expr'.
Definition
decision_procedure.cpp:31
decision_proceduret::~decision_proceduret
virtual ~decision_proceduret()
Definition
decision_procedure.cpp:16
decision_proceduret::set_to
virtual void set_to(const exprt &, bool value)=0
For a Boolean expression expr, add the constraint 'expr' if value is true, otherwise add 'not expr'.
decision_proceduret::decision_procedure_text
virtual std::string decision_procedure_text() const =0
Return a textual description of the decision procedure.
exprt
Base class for all expressions.
Definition
expr.h:57
operator<<
decision_proceduret & operator<<(decision_proceduret &dest, const exprt &src)
Add Boolean constraint src to decision procedure dest.
Definition
decision_procedure.h:83
resultt
resultt
The result of goto verifying.
Definition
properties.h:45
solvers
decision_procedure.h
Generated by
1.17.0