Go to the documentation of this file.
19 natural_loops(function_p.second.body);
22 for(
const auto &loop_head_and_content : natural_loops.
loop_map)
26 loop_head_and_content.first, loop_head_and_content.second);
28 loop_idt new_id(function_p.first, loop_end->loop_number);
31 if(loop_end->condition().find(ID_C_spec_loop_invariant).is_nil())
exprt synthesize(loop_idt loop_id) override
Synthesize loop invariant for a specified loop in the goto_model.
Base class for all expressions.
invariant_mapt synthesize_all() override
This synthesizer guarantees that, with the synthesized loop invariants, all checks in the annotated G...
goto_programt::const_targett get_loop_end_from_loop_head_and_content(const goto_programt::const_targett &loop_head, const loop_templatet< goto_programt::const_targett > &loop)
function_mapt function_map
A concretized version of natural_loops_templatet<const goto_programt, goto_programt::const_targett>
std::map< loop_idt, exprt > invariant_mapt
goto_functionst goto_functions
GOTO functions.
invariant_mapt invariant_candiate_map
instructionst::const_iterator const_targett
const goto_modelt & goto_model
The Boolean constant true.
Loop id used to identify loops.
void init_candidates()
Initialize invariants as true for all unannotated loops.