36 record_coverage(!options.get_option(
"symex-coverage-report").empty()),
65 << state.
source.
pc->source_location() <<
" thread "
80 (!
cur_pc->is_end_function() ||
91 cur_pc->condition().is_true())
114 !
prev_pc->condition().is_true())
142 if(!
limit.has_value())
153 <<
" iteration " << unwind;
185 if(!
limit.has_value())
195 if(unwind > 0 ||
abort)
ait supplies three of the four components needed: an abstract interpreter (in this case handling func...
dstringt has one field, an unsigned integer no which is an index into a static table of strings.
bool is_false() const
Return whether the expression is a constant representing false.
static irep_idt entry_point()
Get the identifier of the entry point to a goto model.
static irep_idt loop_id(const irep_idt &function_id, const instructiont &instruction)
Human-readable loop name.
instructionst::const_iterator const_targett
Container for data that varies per program point, e.g.
unsigned depth
Distance from entry.
Central data structure: state.
symex_targett::sourcet source
The main class for the forward symbolic simulator.
static get_goto_functiont get_goto_function(abstract_goto_modelt &goto_model)
Return a function to get/load a goto function from the given goto model Create a default delegate to ...
virtual void symex_step(const get_goto_functiont &get_goto_function, statet &state)
Called for each step in the symbolic execution This calls print_symex_step to print symex's current i...
namespacet ns
Initialized just before symbolic execution begins, to point to both outer_symbol_table and the symbol...
virtual void merge_goto(const symex_targett::sourcet &source, goto_statet &&goto_state, statet &state)
Merge a single branch, the symbolic state of which is held in goto_state, into the current overall sy...
std::function< const goto_functionst::goto_functiont &(const irep_idt &)> get_goto_functiont
The type of delegate functions that retrieve a goto_functiont for a particular function identifier.
messaget log
The messaget to write log messages to.
mstreamt & statistics() const
bool lookup(const irep_idt &name, const symbolt *&symbol) const override
See documentation for namespace_baset::lookup().
Storage for symbolic execution paths to be resumed later.
std::string as_string() const
const irep_idt & display_name() const
Return language specific display name if present.
symex_coveraget symex_coverage
bool get_unwind_recursion(const irep_idt &identifier, unsigned thread_nr, unsigned unwind) override
std::vector< loop_unwind_handlert > loop_unwind_handlers
Callbacks that may provide an unwind/do-not-unwind decision for a loop.
void merge_goto(const symex_targett::sourcet &source, goto_statet &&goto_state, statet &state) override
Merge a single branch, the symbolic state of which is held in goto_state, into the current overall sy...
source_locationt last_source_location
std::vector< recursion_unwind_handlert > recursion_unwind_handlers
Callbacks that may provide an unwind/do-not-unwind decision for a recursive call.
symex_bmct(message_handlert &mh, const symbol_tablet &outer_symbol_table, symex_target_equationt &_target, const optionst &options, path_storaget &path_storage, guard_managert &guard_manager, unwindsett &unwindset)
void symex_step(const get_goto_functiont &get_goto_function, statet &state) override
show progress
bool should_stop_unwind(const symex_targett::sourcet &source, const call_stackt &context, unsigned unwind) override
Determine whether to unwind a loop.
const bool record_coverage
void covered(goto_programt::const_targett from, goto_programt::const_targett to)
Inheriting the interface of symex_targett this class represents the SSA form of the input program as ...
std::optional< unsigned > get_limit(const irep_idt &loop, unsigned thread_id) const
exprt simplify_expr(exprt src, const namespacet &ns)
#define PRECONDITION(CONDITION)
#define INVARIANT(CONDITION, REASON)
This macro uses the wrapper function 'invariant_violated_string'.
This is unused by this implementation of guards, but can be used by other implementations of the same...
Identifies source in the context of symbolic execution.
goto_programt::const_targett pc
Bounded Model Checking for ANSI-C.