CBMC
enumerative_loop_invariant_synthesizer.h
Go to the documentation of this file.
1 /*******************************************************************\
2 
3 Module: Enumerative Loop Invariant Synthesizer
4 
5 Author: Qinheping Hu
6 
7 \*******************************************************************/
8 
11 
12 // NOLINTNEXTLINE(whitespace/line_length)
13 #ifndef CPROVER_GOTO_INSTRUMENT_SYNTHESIZER_ENUMERATIVE_LOOP_INVARIANT_SYNTHESIZER_H
14 // NOLINTNEXTLINE(whitespace/line_length)
15 #define CPROVER_GOTO_INSTRUMENT_SYNTHESIZER_ENUMERATIVE_LOOP_INVARIANT_SYNTHESIZER_H
16 
18 
20 
21 class messaget;
22 
30 {
31 public:
33  const goto_modelt &goto_model,
34  messaget &log)
36  {
37  }
38 
41  invariant_mapt synthesize_all() override;
42  exprt synthesize(loop_idt loop_id) override;
43 
44 private:
46  void init_candidates();
47 
49 };
50 
51 // NOLINTNEXTLINE(whitespace/line_length)
52 #endif // CPROVER_GOTO_INSTRUMENT_SYNTHESIZER_ENUMERATIVE_LOOP_INVARIANT_SYNTHESIZER_H
messaget
Class that provides messages with a built-in verbosity 'level'.
Definition: message.h:154
enumerative_loop_invariant_synthesizert
Enumerative loop invariant synthesizers.
Definition: enumerative_loop_invariant_synthesizer.h:28
enumerative_loop_invariant_synthesizert::synthesize
exprt synthesize(loop_idt loop_id) override
Synthesize loop invariant for a specified loop in the goto_model.
Definition: enumerative_loop_invariant_synthesizer.cpp:48
loop_invariant_synthesizer_baset::log
messaget & log
Definition: loop_invariant_synthesizer_base.h:52
goto_model.h
exprt
Base class for all expressions.
Definition: expr.h:55
goto_modelt
Definition: goto_model.h:25
enumerative_loop_invariant_synthesizert::synthesize_all
invariant_mapt synthesize_all() override
This synthesizer guarantees that, with the synthesized loop invariants, all checks in the annotated G...
Definition: enumerative_loop_invariant_synthesizer.cpp:39
enumerative_loop_invariant_synthesizert::enumerative_loop_invariant_synthesizert
enumerative_loop_invariant_synthesizert(const goto_modelt &goto_model, messaget &log)
Definition: enumerative_loop_invariant_synthesizer.h:32
loop_invariant_synthesizer_base.h
loop_invariant_synthesizer_baset
A base class for loop invariant synthesizers.
Definition: loop_invariant_synthesizer_base.h:32
invariant_mapt
std::map< loop_idt, exprt > invariant_mapt
Definition: synthesizer_utils.h:19
enumerative_loop_invariant_synthesizert::invariant_candiate_map
invariant_mapt invariant_candiate_map
Definition: enumerative_loop_invariant_synthesizer.h:48
loop_invariant_synthesizer_baset::goto_model
const goto_modelt & goto_model
Definition: loop_invariant_synthesizer_base.h:51
loop_idt
Loop id used to identify loops.
Definition: loop_ids.h:27
enumerative_loop_invariant_synthesizert::init_candidates
void init_candidates()
Initialize invariants as true for all unannotated loops.
Definition: enumerative_loop_invariant_synthesizer.cpp:14