12 #ifndef CPROVER_ANALYSES_CALL_STACK_HISTORY_H
13 #define CPROVER_ANALYSES_CALL_STACK_HISTORY_H
24 typedef std::shared_ptr<const call_stack_entryt>
cse_ptrt;
59 cur_stack !=
nullptr);
105 void output(std::ostream &out)
const override;
Abstract Interpretation history.
A history object is an abstraction / representation of the control-flow part of a set of traces.
std::shared_ptr< const ai_history_baset > trace_ptrt
History objects are intended to be immutable so they can be shared to reduce memory overhead.
std::pair< step_statust, trace_ptrt > step_returnt
virtual bool should_widen(const ai_history_baset &other) const
Domains with a substantial height may need to widen when merging this method allows the history to pr...
goto_programt::const_targett locationt
std::set< trace_ptrt, compare_historyt > trace_sett
As more detailed histories can get complex (for example, nested loops or deep, mutually recursive cal...
virtual ~call_stack_history_factoryt()
ai_history_baset::trace_ptrt epoch(ai_history_baset::locationt l) override
Creates a new history from the given starting point.
call_stack_history_factoryt(unsigned int rec_lim)
unsigned int recursion_limit
call_stack_entryt(locationt l, cse_ptrt p)
bool operator<(const call_stack_entryt &op) const
bool operator==(const call_stack_entryt &op) const
locationt current_location
Records the call stack Care must be taken when using this on recursive code; it will need the domain ...
call_stack_historyt(const call_stack_historyt &old)
bool operator<(const ai_history_baset &op) const override
The order for history_sett.
std::shared_ptr< const call_stack_entryt > cse_ptrt
call_stack_historyt(cse_ptrt cur_stack, unsigned int rec_lim)
const locationt & current_location(void) const override
The current location in the history, used to compute the transformer POSTCONDITION(return value is de...
call_stack_historyt(locationt l)
void output(std::ostream &out) const override
bool has_recursion_limit(void) const
unsigned int recursion_limit
bool should_widen(const ai_history_baset &other) const override
Domains with a substantial height may need to widen when merging this method allows the history to pr...
bool operator==(const ai_history_baset &op) const override
History objects should be comparable.
step_returnt step(locationt to, const trace_sett &others, trace_ptrt caller_hist) const override
Step creates a new history by advancing the current one to location "to" It is given the set of all o...
call_stack_historyt(locationt l, unsigned int rec_lim)
#define PRECONDITION(CONDITION)