8#include <unordered_map>
9#include <unordered_set>
60 std::vector<std::pair<expr2tc, std::string>>
inputs;
68 std::vector<propertyt>
bad;
101 mutable std::unordered_map<const expr2t *, bool> has_local_memo;
115 const std::string suffix;
116 std::unordered_map<const expr2t *, expr2tc> memo;
126 std::unordered_set<expr2tc, irep2_hash> &out,
127 std::unordered_set<const expr2t *> &seen);
Definition namespace.h:10
Transition system here represents a sequential circuit.
Definition transition_system.h:36
expr2tc at_step(const expr2tc &e, unsigned step) const
Rewrites e for iteration step.
Definition transition_system.cpp:48
expr2tc back_guard
Guard for the loop condition (usually trivial true for unbounded loops).
Definition transition_system.h:71
std::vector< statet > states
Definition transition_system.h:57
std::unordered_set< expr2tc, irep2_hash > step_localt
Definition transition_system.h:78
bool has_local(const expr2tc &e) const
Does e mention a step_local symbol, i.e. does it change between steps?
Definition transition_system.cpp:27
std::vector< expr2tc > prefix_assumes
Definition transition_system.h:47
std::vector< expr2tc > body_assumes
Definition transition_system.h:63
void dump(std::ostream &out, const namespacet &ns) const
Definition transition_system.cpp:80
std::vector< expr2tc > body_defs
Definition transition_system.h:63
std::vector< std::pair< expr2tc, std::string > > inputs
Fresh nondeterministic symbol read by the step.
Definition transition_system.h:60
std::vector< expr2tc > invariants
Facts only the inductive step may assume: the loop entry condition and interval-analysis bounds.
Definition transition_system.h:76
const step_localt & get_step_local() const
Definition transition_system.h:84
std::vector< expr2tc > prefix_defs
Definition transition_system.h:47
std::vector< propertyt > bad
violated already folds in the assumptions (!(assumes -> cond)), so it is SAT exactly when that claim ...
Definition transition_system.h:68
void set_step_local(step_localt syms)
Symbols instantiated per iteration.
Definition transition_system.cpp:42
std::vector< propertyt > prefix_bad
Definition transition_system.h:48
expr2tc operator()(const expr2tc &e)
Definition transition_system.cpp:58
ts_step_renamert(const transition_systemt &ts, unsigned step)
Definition transition_system.cpp:53
Classes and definitions for non-stringy internal representation.
irep_container< expr2t > expr2tc
Definition irep2.h:431
Definition transition_system.h:39
locationt location
Definition transition_system.h:42
std::string comment
Definition transition_system.h:41
expr2tc violated
Definition transition_system.h:40
Definition transition_system.h:53
expr2tc init
Definition transition_system.h:55
expr2tc post
Definition transition_system.h:55
std::string name
Definition transition_system.h:54
expr2tc pre
Definition transition_system.h:55
void collect_symbols(const expr2tc &e, std::unordered_set< expr2tc, irep2_hash > &out, std::unordered_set< const expr2t * > &seen)
Collect every symbol2t in e into out, treating seen as a shared visited set so a DAG node reached by ...
Definition transition_system.cpp:11