29 program.append(
fixed);
30 program.append(
fixed);
39 for(distinguish_valuest::iterator
jt=it->begin();
66 std::cout <<
"Found a path\n";
74 catch(
const std::string &s)
76 std::cout <<
"Error in fitting polynomial SAT check: " << s <<
'\n';
80 std::cout <<
"Error in fitting polynomial SAT check: " << s <<
'\n';
88 for(natural_loops_mutablet::natural_loopt::const_iterator it =
loop.begin();
98 for(
const auto &succ :
succs)
138 for(
const auto &succ :
succs)
146 (succ->location_number <
next->location_number))
166 for(goto_programt::targetst::iterator it=t->targets.begin();
167 it!=t->targets.end();
172 cond = t->get_condition();
198 if(instruction.is_assert())
199 instruction.turn_into_assume();
245 if(!
loop.contains(t))
279 for(
const auto &target : t->targets)
281 if(target->location_number > t->location_number)
284 if(!
loop.contains(target))
293 fixedt->targets.push_back(kill);
304 fixedt->targets.push_back(end);
310 fixedt->targets.push_back(kill);
symbolt fresh_symbol(std::string base, typet type)
virtual void clear()
Reset the abstract state.
ait supplies three of the four components needed: an abstract interpreter (in this case handling func...
A codet representing an assignment in the program.
Base class for all expressions.
bool is_true() const
Return whether the expression is a constant representing true.
The Boolean constant false.
static instructiont make_assumption(const exprt &g, const source_locationt &l=source_locationt::nil())
instructionst instructions
The list of instructions in the goto program.
void copy_from(const goto_programt &src)
Copy a full goto program, preserving targets.
void update()
Update all indices.
instructionst::iterator targett
static instructiont make_assignment(const code_assignt &_code, const source_locationt &l=source_locationt::nil())
Create an assignment instruction.
static instructiont make_skip(const source_locationt &l=source_locationt::nil())
targett insert_after(const_targett target)
Insertion after the instruction pointed-to by the given instruction iterator target.
std::list< Target > get_successors(Target target) const
Get control-flow successors of a given instruction.
targett add(instructiont &&instruction)
Adds a given instruction at the end.
static instructiont make_assertion(const exprt &g, const source_locationt &l=source_locationt::nil())
targett insert_before(const_targett target)
Insertion before the instruction pointed-to by the given instruction iterator target.
guard_managert & guard_manager
acceleration_utilst utils
distinguish_mapt distinguishing_points
message_handlert & message_handler
goto_programt::targett loop_header
void build_path(scratch_programt &scratch_program, patht &path)
std::list< distinguish_valuest > accelerated_paths
goto_programt & goto_program
void record_path(scratch_programt &scratch_program)
std::map< exprt, bool > distinguish_valuest
natural_loops_mutablet::natural_loopt & loop
std::list< exprt > distinguishers
void find_distinguishing_points()
symbol_tablet & symbol_table
exprt eval(const exprt &e)
Expression to hold a symbol (variable)
The Boolean constant true.
std::list< path_nodet > patht
void remove_skip(goto_programt &goto_program, goto_programt::targett begin, goto_programt::targett end)
remove unnecessary skip statements