ESBMC
Efficient SMT-based Context-Bounded Model Checker
Loading...
Searching...
No Matches
goto_invariant_synthesis.h
Go to the documentation of this file.
1#ifndef GOTO_PROGRAMS_GOTO_INVARIANT_SYNTHESIS_H_
2#define GOTO_PROGRAMS_GOTO_INVARIANT_SYNTHESIS_H_
3
5#include <irep2/irep2_expr.h>
6
12{
14 bool signed_arith = false;
18 bool unsigned_arith = false;
19};
20
24namespace invariant_synthesis
25{
29bool split_bound(
30 const expr2tc &cond,
31 expr2tc &counter,
32 expr2tc &bound,
33 bool &inclusive);
34
37 const expr2tc &target,
38 const expr2tc &source,
39 expr2tc &addend);
40
43bool entry_admits_two_disjunct_bound(const expr2tc &entry, bool inclusive);
44} // namespace invariant_synthesis
45
128 goto_functionst &goto_functions,
129 const overflow_checkst &overflow,
130 bool k_induction_ran);
131
132#endif /* GOTO_PROGRAMS_GOTO_INVARIANT_SYNTHESIS_H_ */
Definition goto_functions.h:56
pthread_cond_t cond
Definition cuda.h:50
void goto_synthesise_loop_invariants(goto_functionst &goto_functions, const overflow_checkst &overflow, bool k_induction_ran)
Synthesise loop invariants for affine counter/accumulator loops and attach them as LOOP_INVARIANT ins...
Definition goto_invariant_synthesis.cpp:845
irep_container< expr2t > expr2tc
Definition irep2.h:431
The recogniser's pure syntactic predicates.
Definition goto_invariant_synthesis.cpp:17
bool entry_admits_two_disjunct_bound(const expr2tc &entry, bool inclusive)
The two-disjunct bound (i <op> B) || i == E is established only when the counter's entry value cannot...
Definition goto_invariant_synthesis.cpp:80
bool is_self_increment(const expr2tc &target, const expr2tc &source, expr2tc &addend)
lhs = lhs + addend — the only body assignment shape recognised here.
Definition goto_invariant_synthesis.cpp:45
bool split_bound(const expr2tc &cond, expr2tc &counter, expr2tc &bound, bool &inclusive)
Split cond into counter and bound for the </<= shapes this pass handles, and report which one it was.
Definition goto_invariant_synthesis.cpp:21
What goto_check will instrument on the guards this pass emits.
Definition goto_invariant_synthesis.h:12
bool signed_arith
–overflow-check: signed arithmetic is instrumented.
Definition goto_invariant_synthesis.h:14
bool unsigned_arith
–unsigned-overflow-check: unsigned arithmetic is instrumented too (goto_check.cpp,...
Definition goto_invariant_synthesis.h:18