12 #ifndef CPROVER_GOTO_SYMEX_MEMORY_MODEL_H
13 #define CPROVER_GOTO_SYMEX_MEMORY_MODEL_H
virtual ~memory_model_baset()
symbol_exprt nondet_bool_symbol(const std::string &prefix)
bool po(event_it e1, event_it e2)
In-thread program order.
virtual void operator()(symex_target_equationt &, message_handlert &)=0
symbol_exprt register_read_from_choice_symbol(const event_it &r, const event_it &w, symex_target_equationt &equation)
Introduce a new choice symbol s for the pair (r, w) add constraint s => (w.guard /\ r....
memory_model_baset(const namespacet &_ns)
void read_from(symex_target_equationt &equation)
For each read r from every address we collect the choice symbols S via register_read_from_choice_symb...
std::map< std::pair< event_it, event_it >, symbol_exprt > choice_symbolst
choice_symbolst choice_symbols
std::map< unsigned, event_listt > per_thread_mapt
A namespacet is essentially one or two symbol tables bound together, to allow for symbol lookups in t...
Base class for implementing memory models via additional constraints for SSA equations.
eventst::const_iterator event_it
Expression to hold a symbol (variable)
Inheriting the interface of symex_targett this class represents the SSA form of the input program as ...
Add constraints to equation encoding partial orders on events.