12 #ifndef CPROVER_CPROVER_SOLVER_TYPES_H
13 #define CPROVER_CPROVER_SOLVER_TYPES_H
19 #include <unordered_map>
20 #include <unordered_set>
38 using frame_mapt = std::unordered_map<symbol_exprt, frame_reft, irep_hash>;
47 :
symbol(std::move(__symbol)),
71 :
lhs(std::move(__lhs)),
rhs(std::move(__rhs))
110 const std::vector<exprt> &constraints,
111 std::vector<framet> &);
113 std::vector<framet>
setup_frames(
const std::vector<exprt> &constraints);
123 frame(std::move(__frame)),
139 std::chrono::time_point<std::chrono::steady_clock>
start,
stop;
145 :
address(std::move(__address)),
value(std::move(__value))
157 using tracet = std::vector<trace_statet>;
162 const std::vector<exprt> &constraints,
163 const std::vector<framet> &);
167 using patht = std::vector<frame_reft>;
170 :
frame(std::move(__frame)),
172 path(std::move(__path))
dstringt has one field, an unsigned integer no which is an index into a static table of strings.
Base class for all expressions.
friend bool operator==(const frame_reft &a, const frame_reft &b)
frame_reft(std::size_t __index)
Stack frames – these are used for function calls and for exceptions.
std::unordered_set< exprt, irep_hash > invariants_set
std::vector< exprt > obligations
std::unordered_set< exprt, irep_hash > auxiliaries_set
void add_invariant(exprt)
void add_auxiliary(exprt)
framet(symbol_exprt __symbol, source_locationt __source_location, frame_reft __ref)
std::unordered_set< exprt, irep_hash > obligations_set
std::vector< exprt > auxiliaries
source_locationt source_location
void add_obligation(exprt)
std::vector< exprt > invariants
std::vector< implicationt > implications
Application of (mathematical) function.
std::vector< trace_statet > tracet
enum { UNKNOWN, PASS, REFUTED, ERROR, DROPPED } statust
propertyt(source_locationt __source_location, frame_reft __frame, exprt __condition)
irep_idt property_id() const
std::chrono::time_point< std::chrono::steady_clock > stop
source_locationt source_location
std::chrono::time_point< std::chrono::steady_clock > start
const irep_idt & get_property_id() const
static const source_locationt & nil()
Expression to hold a symbol (variable)
API to expression classes for 'mathematical' expressions.
@ PASS
The property was not violated.
frame_mapt build_frame_map(const std::vector< framet > &frames)
std::vector< framet > setup_frames(const std::vector< exprt > &constraints)
std::unordered_map< symbol_exprt, frame_reft, irep_hash > frame_mapt
void find_implications(const std::vector< exprt > &constraints, std::vector< framet > &)
frame_reft find_frame(const frame_mapt &, const symbol_exprt &frame_symbol)
std::vector< propertyt > find_properties(const std::vector< exprt > &constraints, const std::vector< framet > &)
API to expression classes.
implies_exprt as_expr() const
implicationt(exprt __lhs, function_application_exprt __rhs)
function_application_exprt rhs
std::vector< trace_updatet > updates
trace_updatet(exprt __address, exprt __value)
workt(frame_reft __frame, exprt __invariant, patht __path)
std::size_t nondet_counter
std::vector< frame_reft > patht