Go to the documentation of this file.
12 #ifndef CPROVER_GOTO_INSTRUMENT_ACCELERATE_ACCELERATE_H
13 #define CPROVER_GOTO_INSTRUMENT_ACCELERATE_ACCELERATE_H
80 patht &inserted_path);
98 trace_automatont::sym_mapt::iterator p,
99 trace_automatont::sym_mapt::iterator end,
120 typedef std::map<goto_programt::targett, goto_programt::targetst>
135 #endif // CPROVER_GOTO_INSTRUMENT_ACCELERATE_ACCELERATE_H
static const int accelerate_limit
acceleration_utilst utils
void insert_looping_path(goto_programt::targett &loop_header, goto_programt::targett &back_jump, goto_programt &looping_path, patht &inserted_path)
void accelerate_functions(goto_modelt &, message_handlert &message_handler, bool use_z3, guard_managert &guard_manager)
guard_managert & guard_manager
The type of an expression, extends irept.
std::list< patht > pathst
symbol_tablet & symbol_table
Base class for all expressions.
message_handlert & message_handler
Expression to hold a symbol (variable)
void set_dirty_vars(path_acceleratort &accelerator)
std::list< subsumed_patht > subsumed_pathst
bool is_underapproximate(path_acceleratort &accelerator)
int accelerate_loop(goto_programt::targett &loop_header)
A namespacet is essentially one or two symbol tables bound together, to allow for symbol lookups in t...
void extend_path(goto_programt::targett &t, goto_programt::targett &loop_header, natural_loops_mutablet::natural_loopt &loop, patht &prefix, pathst &loop_paths, pathst &exit_paths, goto_programt::targett &back_jump)
This is unused by this implementation of guards, but can be used by other implementations of the same...
acceleratet(goto_programt &_program, goto_modelt &_goto_model, message_handlert &message_handler, bool _use_z3, guard_managert &guard_manager)
std::map< goto_programt::targett, goto_programt::targetst > overflow_mapt
void find_paths(goto_programt::targett &loop_header, pathst &loop_paths, pathst &exit_paths, goto_programt::targett &back_jump)
A loop, specified as a set of instructions.
bool accelerate_path(patht &path, path_acceleratort &accelerator)
symbolt make_symbol(std::string name, typet type)
overflow_mapt overflow_locs
A collection of goto functions.
std::list< path_nodet > patht
void insert_accelerator(goto_programt::targett &loop_header, goto_programt::targett &back_jump, path_acceleratort &accelerator, subsumed_patht &subsumed_path)
goto_programt::targett find_back_jump(goto_programt::targett loop_header)
A generic container class for the GOTO intermediate representation of one function.
void decl(symbol_exprt &sym, goto_programt::targett t)
void insert_automaton(trace_automatont &automaton)
void build_state_machine(trace_automatont::sym_mapt::iterator p, trace_automatont::sym_mapt::iterator end, state_sett &accept_states, symbol_exprt state, symbol_exprt next_state, scratch_programt &state_machine)
std::unordered_map< exprt, exprt, irep_hash > expr_mapt
natural_loops_mutablet natural_loops
goto_functionst & goto_functions
instructionst::iterator targett
std::set< statet > state_sett
void make_overflow_loc(goto_programt::targett loop_header, goto_programt::targett &loop_end, goto_programt::targett &overflow_loc)
bool contains_nested_loops(goto_programt::targett &loop_header)