25 const std::vector<framet> &
frames,
27 const std::unordered_set<symbol_exprt, irep_hash> &
address_taken,
39 std::cout <<
' ' << std::setw(2) << work.
frame.
index <<
' ';
55 auto &next_state =
implication.rhs.arguments().front();
82 auto &function_application =
std::unordered_set< symbol_exprt, irep_hash > address_taken(const std::vector< exprt > &src)
ait supplies three of the four components needed: an abstract interpreter (in this case handling func...
static std::ostream & reset(std::ostream &)
static std::ostream & cyan(std::ostream &)
static std::ostream & green(std::ostream &)
static std::ostream & faint(std::ostream &)
Base class for all expressions.
A (mathematical) lambda expression.
A namespacet is essentially one or two symbol tables bound together, to allow for symbol lookups in t...
Expression to hold a symbol (variable)
static exprt implication(exprt lhs, exprt rhs)
const function_application_exprt & to_function_application_expr(const exprt &expr)
Cast an exprt to a function_application_exprt.
void propagate(const std::vector< framet > &frames, const workt &work, const std::unordered_set< symbol_exprt, irep_hash > &address_taken, bool verbose, const namespacet &ns, const std::function< void(const symbol_exprt &, exprt, const workt::patht &)> &propagator)
exprt simplify_state_expr(exprt, const std::unordered_set< symbol_exprt, irep_hash > &address_taken, const namespacet &)
exprt simplify_expr(exprt src, const namespacet &ns)
Simplify State Expression.
static symbol_exprt state_expr()
const and_exprt & to_and_expr(const exprt &expr)
Cast an exprt to a and_exprt.
const symbol_exprt & to_symbol_expr(const exprt &expr)
Cast an exprt to a symbol_exprt.
std::vector< frame_reft > patht