cprover
Toggle main menu visibility
Loading...
Searching...
No Matches
sat_path_enumerator.h
Go to the documentation of this file.
1
/*******************************************************************\
2
3
Module: Loop Acceleration
4
5
Author: Matt Lewis
6
7
\*******************************************************************/
8
11
12
#ifndef CPROVER_GOTO_INSTRUMENT_ACCELERATE_SAT_PATH_ENUMERATOR_H
13
#define CPROVER_GOTO_INSTRUMENT_ACCELERATE_SAT_PATH_ENUMERATOR_H
14
15
#include <map>
16
17
#include <
goto-programs/goto_program.h
>
18
19
#include <
analyses/natural_loops.h
>
20
21
#include "
path_enumerator.h
"
22
#include "
path.h
"
23
#include "
cone_of_influence.h
"
24
#include "
acceleration_utils.h
"
25
26
class
sat_path_enumeratort
:
public
path_enumeratort
27
{
28
public
:
29
sat_path_enumeratort
(
30
message_handlert
&
message_handler
,
31
symbol_table_baset
&_symbol_table,
32
goto_functionst
&_goto_functions,
33
goto_programt
&_goto_program,
34
natural_loops_mutablet::natural_loopt
&_loop,
35
goto_programt::targett
_loop_header,
36
guard_managert
&
guard_manager
)
37
:
message_handler
(
message_handler
),
38
symbol_table
(_symbol_table),
39
ns
(
symbol_table
),
40
goto_functions
(_goto_functions),
41
goto_program
(_goto_program),
42
loop
(_loop),
43
loop_header
(_loop_header),
44
utils
(
symbol_table
,
message_handler
,
goto_functions
,
loop_counter
),
45
guard_manager
(
guard_manager
)
46
{
47
find_distinguishing_points
();
48
build_fixed
();
49
}
50
51
bool
next
(
patht
&path);
52
53
protected
:
54
message_handlert
&
message_handler
;
55
void
find_distinguishing_points
();
56
57
void
build_path
(
scratch_programt
&scratch_program,
patht
&path);
58
void
build_fixed
();
59
60
void
record_path
(
scratch_programt
&scratch_program);
61
62
symbol_table_baset
&
symbol_table
;
63
namespacet
ns
;
64
goto_functionst
&
goto_functions
;
65
goto_programt
&
goto_program
;
66
natural_loops_mutablet::natural_loopt
&
loop
;
67
goto_programt::targett
loop_header
;
68
69
typedef
std::
70
map<goto_programt::targett, exprt, goto_programt::target_less_than>
71
distinguish_mapt
;
72
typedef
std::map<exprt, bool>
distinguish_valuest
;
73
74
acceleration_utilst
utils
;
75
guard_managert
&
guard_manager
;
76
exprt
loop_counter
;
77
distinguish_mapt
distinguishing_points
;
78
std::list<exprt>
distinguishers
;
79
expr_sett
modified
;
80
goto_programt
fixed
;
81
std::list<distinguish_valuest>
accelerated_paths
;
82
};
83
84
#endif
// CPROVER_GOTO_INSTRUMENT_ACCELERATE_SAT_PATH_ENUMERATOR_H
acceleration_utils.h
Loop Acceleration.
acceleration_utilst
Definition
acceleration_utils.h:35
exprt
Base class for all expressions.
Definition
expr.h:57
goto_functionst
A collection of goto functions.
Definition
goto_functions.h:25
goto_programt
A generic container class for the GOTO intermediate representation of one function.
Definition
goto_program.h:72
goto_programt::targett
instructionst::iterator targett
Definition
goto_program.h:613
message_handlert
Definition
message.h:27
namespacet
A namespacet is essentially one or two symbol tables bound together, to allow for symbol lookups in t...
Definition
namespace.h:91
natural_loops_templatet< goto_programt, goto_programt::targett, goto_programt::target_less_than >::natural_loopt
parentt::loopt natural_loopt
Definition
natural_loops.h:53
path_enumeratort
Definition
path_enumerator.h:22
sat_path_enumeratort::guard_manager
guard_managert & guard_manager
Definition
sat_path_enumerator.h:75
sat_path_enumeratort::utils
acceleration_utilst utils
Definition
sat_path_enumerator.h:74
sat_path_enumeratort::distinguishing_points
distinguish_mapt distinguishing_points
Definition
sat_path_enumerator.h:77
sat_path_enumeratort::message_handler
message_handlert & message_handler
Definition
sat_path_enumerator.h:54
sat_path_enumeratort::build_fixed
void build_fixed()
Definition
sat_path_enumerator.cpp:187
sat_path_enumeratort::modified
expr_sett modified
Definition
sat_path_enumerator.h:79
sat_path_enumeratort::next
bool next(patht &path)
Definition
sat_path_enumerator.cpp:23
sat_path_enumeratort::loop_counter
exprt loop_counter
Definition
sat_path_enumerator.h:76
sat_path_enumeratort::loop_header
goto_programt::targett loop_header
Definition
sat_path_enumerator.h:67
sat_path_enumeratort::build_path
void build_path(scratch_programt &scratch_program, patht &path)
Definition
sat_path_enumerator.cpp:109
sat_path_enumeratort::goto_functions
goto_functionst & goto_functions
Definition
sat_path_enumerator.h:64
sat_path_enumeratort::accelerated_paths
std::list< distinguish_valuest > accelerated_paths
Definition
sat_path_enumerator.h:81
sat_path_enumeratort::symbol_table
symbol_table_baset & symbol_table
Definition
sat_path_enumerator.h:62
sat_path_enumeratort::goto_program
goto_programt & goto_program
Definition
sat_path_enumerator.h:65
sat_path_enumeratort::record_path
void record_path(scratch_programt &scratch_program)
Definition
sat_path_enumerator.cpp:333
sat_path_enumeratort::distinguish_mapt
std::map< goto_programt::targett, exprt, goto_programt::target_less_than > distinguish_mapt
Definition
sat_path_enumerator.h:71
sat_path_enumeratort::ns
namespacet ns
Definition
sat_path_enumerator.h:63
sat_path_enumeratort::distinguish_valuest
std::map< exprt, bool > distinguish_valuest
Definition
sat_path_enumerator.h:72
sat_path_enumeratort::loop
natural_loops_mutablet::natural_loopt & loop
Definition
sat_path_enumerator.h:66
sat_path_enumeratort::sat_path_enumeratort
sat_path_enumeratort(message_handlert &message_handler, symbol_table_baset &_symbol_table, goto_functionst &_goto_functions, goto_programt &_goto_program, natural_loops_mutablet::natural_loopt &_loop, goto_programt::targett _loop_header, guard_managert &guard_manager)
Definition
sat_path_enumerator.h:29
sat_path_enumeratort::distinguishers
std::list< exprt > distinguishers
Definition
sat_path_enumerator.h:78
sat_path_enumeratort::find_distinguishing_points
void find_distinguishing_points()
Definition
sat_path_enumerator.cpp:84
sat_path_enumeratort::fixed
goto_programt fixed
Definition
sat_path_enumerator.h:80
scratch_programt
Definition
scratch_program.h:61
symbol_table_baset
The symbol table base class interface.
Definition
symbol_table_base.h:23
cone_of_influence.h
Loop Acceleration.
expr_sett
std::unordered_set< exprt, irep_hash > expr_sett
Definition
cone_of_influence.h:21
goto_program.h
Concrete Goto Program.
guard_managert
guard_expr_managert guard_managert
Definition
guard.h:28
natural_loops.h
Compute natural loops in a goto_function.
path.h
Loop Acceleration.
patht
std::list< path_nodet > patht
Definition
path.h:44
path_enumerator.h
Loop Acceleration.
goto-instrument
accelerate
sat_path_enumerator.h
Generated by
1.17.0