cprover
Toggle main menu visibility
Loading...
Searching...
No Matches
cover_goals.h
Go to the documentation of this file.
1
/*******************************************************************\
2
3
Module: Cover a set of goals incrementally
4
5
Author: Daniel Kroening, kroening@kroening.com
6
7
\*******************************************************************/
8
11
12
#ifndef CPROVER_SOLVERS_PROP_COVER_GOALS_H
13
#define CPROVER_SOLVERS_PROP_COVER_GOALS_H
14
15
#include <list>
16
17
#include <
solvers/decision_procedure.h
>
18
19
#include <
util/expr.h
>
20
21
class
message_handlert
;
22
25
class
cover_goalst
26
{
27
public
:
28
explicit
cover_goalst
(
decision_proceduret
&_decision_procedure)
29
:
_number_covered
(0),
30
_iterations
(0),
31
decision_procedure
(_decision_procedure)
32
{
33
}
34
35
virtual
~cover_goalst
();
36
37
// returns result of last run on success
38
decision_proceduret::resultt
operator()
(
message_handlert
&);
39
40
// the goals
41
42
struct
goalt
43
{
44
exprt
condition
;
45
enum class
statust
{
UNKNOWN
,
COVERED
,
UNCOVERED
,
ERROR
}
status
;
46
47
explicit
goalt
(
exprt
_condition)
48
:
condition
(
std
::move(_condition)),
status
(
statust
::
UNKNOWN
)
49
{
50
}
51
};
52
53
typedef
std::list<goalt>
goalst
;
54
goalst
goals
;
55
56
// statistics
57
58
std::size_t
number_covered
()
const
59
{
60
return
_number_covered
;
61
}
62
63
unsigned
iterations
()
const
64
{
65
return
_iterations
;
66
}
67
68
goalst::size_type
size
()
const
69
{
70
return
goals
.size();
71
}
72
73
// managing the goals
74
75
void
add
(
exprt
condition)
76
{
77
goals
.emplace_back(std::move(condition));
78
}
79
80
// register an observer if you want to be told
81
// about satisfying assignments
82
83
class
observert
84
{
85
public
:
86
virtual
void
goal_covered
(
const
goalt
&) { }
87
virtual
void
satisfying_assignment
() { }
88
};
89
90
void
register_observer
(
observert
&o)
91
{
92
observers
.push_back(&o);
93
}
94
95
protected
:
96
std::size_t
_number_covered
;
97
unsigned
_iterations
;
98
decision_proceduret
&
decision_procedure
;
99
100
typedef
std::vector<observert *>
observerst
;
101
observerst
observers
;
102
103
private
:
104
void
mark
();
105
void
constraint
();
106
};
107
108
#endif
// CPROVER_SOLVERS_PROP_COVER_GOALS_H
cover_goalst::observert
Definition
cover_goals.h:84
cover_goalst::observert::goal_covered
virtual void goal_covered(const goalt &)
Definition
cover_goals.h:86
cover_goalst::observert::satisfying_assignment
virtual void satisfying_assignment()
Definition
cover_goals.h:87
cover_goalst::observers
observerst observers
Definition
cover_goals.h:101
cover_goalst::~cover_goalst
virtual ~cover_goalst()
Definition
cover_goals.cpp:17
cover_goalst::_number_covered
std::size_t _number_covered
Definition
cover_goals.h:96
cover_goalst::observerst
std::vector< observert * > observerst
Definition
cover_goals.h:100
cover_goalst::iterations
unsigned iterations() const
Definition
cover_goals.h:63
cover_goalst::_iterations
unsigned _iterations
Definition
cover_goals.h:97
cover_goalst::number_covered
std::size_t number_covered() const
Definition
cover_goals.h:58
cover_goalst::register_observer
void register_observer(observert &o)
Definition
cover_goals.h:90
cover_goalst::size
goalst::size_type size() const
Definition
cover_goals.h:68
cover_goalst::add
void add(exprt condition)
Definition
cover_goals.h:75
cover_goalst::goalst
std::list< goalt > goalst
Definition
cover_goals.h:53
cover_goalst::operator()
decision_proceduret::resultt operator()(message_handlert &)
Try to cover all goals.
Definition
cover_goals.cpp:59
cover_goalst::constraint
void constraint()
Build clause.
Definition
cover_goals.cpp:43
cover_goalst::mark
void mark()
Mark goals that are covered.
Definition
cover_goals.cpp:22
cover_goalst::cover_goalst
cover_goalst(decision_proceduret &_decision_procedure)
Definition
cover_goals.h:28
cover_goalst::decision_procedure
decision_proceduret & decision_procedure
Definition
cover_goals.h:98
cover_goalst::goals
goalst goals
Definition
cover_goals.h:54
decision_proceduret
An interface for a decision procedure for satisfiability problems.
Definition
decision_procedure.h:22
decision_proceduret::resultt
resultt
Result of running the decision procedure.
Definition
decision_procedure.h:45
exprt
Base class for all expressions.
Definition
expr.h:57
message_handlert
Definition
message.h:27
decision_procedure.h
Decision Procedure Interface.
expr.h
std
STL namespace.
cover_goalst::goalt
Definition
cover_goals.h:43
cover_goalst::goalt::statust
statust
Definition
cover_goals.h:45
cover_goalst::goalt::statust::UNCOVERED
@ UNCOVERED
Definition
cover_goals.h:45
cover_goalst::goalt::statust::COVERED
@ COVERED
Definition
cover_goals.h:45
cover_goalst::goalt::statust::UNKNOWN
@ UNKNOWN
Definition
cover_goals.h:45
cover_goalst::goalt::statust::ERROR
@ ERROR
Definition
cover_goals.h:45
cover_goalst::goalt::goalt
goalt(exprt _condition)
Definition
cover_goals.h:47
cover_goalst::goalt::status
enum cover_goalst::goalt::statust status
cover_goalst::goalt::condition
exprt condition
Definition
cover_goals.h:44
solvers
prop
cover_goals.h
Generated by
1.17.0