CBMC
loop_invariant_synthesizer_base.h
Go to the documentation of this file.
1 /*******************************************************************\
2 
3 Module: Loop Invariant Synthesizer Interface
4 
5 Author: Qinheping Hu
6 
7 \*******************************************************************/
8 
11 
12 #ifndef CPROVER_GOTO_INSTRUMENT_SYNTHESIZER_LOOP_INVARIANT_SYNTHESIZER_BASE_H
13 #define CPROVER_GOTO_INSTRUMENT_SYNTHESIZER_LOOP_INVARIANT_SYNTHESIZER_BASE_H
14 
16 
17 #include "synthesizer_utils.h"
18 
19 #define OPT_SYNTHESIZE_LOOP_INVARIANTS "(synthesize-loop-invariants)"
20 #define HELP_LOOP_INVARIANT_SYNTHESIZER \
21  " --synthesize-loop-invariants\n" \
22  " synthesize and apply loop invariants\n"
23 
24 class messaget;
25 
33 {
34 public:
37  {
38  }
39  virtual ~loop_invariant_synthesizer_baset() = default;
40 
45  virtual invariant_mapt synthesize_all() = 0;
46 
48  virtual exprt synthesize(loop_idt) = 0;
49 
50 protected:
53 };
54 
55 #endif // CPROVER_GOTO_INSTRUMENT_SYNTHESIZER_LOOP_INVARIANT_SYNTHESIZER_BASE_H
messaget
Class that provides messages with a built-in verbosity 'level'.
Definition: message.h:154
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
loop_invariant_synthesizer_baset::~loop_invariant_synthesizer_baset
virtual ~loop_invariant_synthesizer_baset()=default
loop_invariant_synthesizer_baset::synthesize_all
virtual invariant_mapt synthesize_all()=0
Synthesize loop invariants that are inductive in the given GOTO program.
synthesizer_utils.h
loop_invariant_synthesizer_baset::loop_invariant_synthesizer_baset
loop_invariant_synthesizer_baset(const goto_modelt &goto_model, messaget &log)
Definition: loop_invariant_synthesizer_base.h:35
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
loop_invariant_synthesizer_baset::synthesize
virtual exprt synthesize(loop_idt)=0
Synthesize loop invariant for a specified loop in the goto_model.
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