81 std::set<exprt> symbols;
87 for(std::set<exprt>::const_iterator
92 if(s_it->id()==ID_symbol)
97 shared_varst::const_iterator
106 replace_symbol.
insert(identifier, new_expr);
116 for(goto_programt::instructionst::iterator
126 else if(it->is_assume() || it->is_assert() || it->is_goto())
128 else if(it->is_function_call())
142 std::set<exprt> symbols;
146 for(std::set<exprt>::const_iterator
147 s_it=symbols.begin();
151 if(s_it->id()==ID_symbol)
188 if(is_threaded(i_it))
190 if(i_it->is_assign())
192 else if(i_it->is_assume() || i_it->is_assert() || i_it->is_goto())
194 else if(i_it->is_function_call())
213 collect(f_it->second.body, is_threaded);
229 value_sets, symbol_table);
230 concurrency_instrumentation(goto_functions);
The type of an expression.
virtual bool lookup(const irep_idt &name, const symbolt *&symbol) const
Over-approximate Concurrency for Threaded Goto Programs.
concurrency_instrumentationt(value_setst &_value_sets, symbol_tablet &_symbol_table)
void instrument(goto_functionst &goto_functions)
instructionst instructions
The list of instructions in the goto program.
const irep_idt & get_identifier() const
symbol_tablet & symbol_table
Symbol table entry.This is a symbol in the symbol table, stored in an object of type symbol_tablet...
std::map< irep_idt, thread_local_vart > thread_local_varst
void concurrency(value_setst &value_sets, class symbol_tablet &symbol_table, goto_functionst &goto_functions)
const code_assignt & to_code_assign(const codet &code)
symbol_exprt w_index_symbol
#define Forall_expr(it, expr)
API to expression classes.
symbol_exprt array_symbol
thread_local_varst thread_local_vars
symbol_exprt array_symbol
A specialization of goto_program_templatet over goto programs in which instructions have codet type...
void operator()(goto_functionst &goto_functions)
typet type
Type of symbol.
Base class for all expressions.
const symbol_exprt & to_symbol_expr(const exprt &expr)
Cast a generic exprt to a symbol_exprt.
std::map< irep_idt, shared_vart > shared_varst
#define Forall_goto_functions(it, functions)
void insert(const irep_idt &identifier, const exprt &expr)
void collect(const goto_programt &goto_program, const is_threadedt &is_threaded)
Expression to hold a symbol (variable)
Encoding for Threaded Goto Programs.
#define forall_goto_functions(it, functions)
#define forall_goto_program_instructions(it, program)
void find_symbols(const exprt &src, find_symbols_sett &dest)
const code_function_callt & to_code_function_call(const codet &code)