12#ifndef CPROVER_CPROVER_SOLVER_TYPES_H
13#define CPROVER_CPROVER_SOLVER_TYPES_H
19#include <unordered_map>
20#include <unordered_set>
34 return a.index ==
b.index;
38using frame_mapt = std::unordered_map<symbol_exprt, frame_reft, irep_hash>;
110 const std::vector<exprt> &constraints,
111 std::vector<framet> &);
113std::vector<framet>
setup_frames(
const std::vector<exprt> &constraints);
139 std::chrono::time_point<std::chrono::steady_clock>
start,
stop;
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>;
virtual void clear()
Reset the abstract state.
ait supplies three of the four components needed: an abstract interpreter (in this case handling func...
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
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
static const source_locationt & nil()
const irep_idt & get_property_id() const
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