cprover
Toggle main menu visibility
Loading...
Searching...
No Matches
enumerating_loop_acceleration.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_ENUMERATING_LOOP_ACCELERATION_H
13
#define CPROVER_GOTO_INSTRUMENT_ACCELERATE_ENUMERATING_LOOP_ACCELERATION_H
14
15
#include <memory>
16
17
#include <
goto-programs/goto_program.h
>
18
19
#include <
analyses/natural_loops.h
>
20
21
#include "
polynomial_accelerator.h
"
22
#include "
path_enumerator.h
"
23
#include "
sat_path_enumerator.h
"
24
25
26
class
enumerating_loop_accelerationt
27
{
28
public
:
29
enumerating_loop_accelerationt
(
30
message_handlert
&message_handler,
31
symbol_tablet
&_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
int
_path_limit,
37
guard_managert
&
guard_manager
)
38
:
symbol_table
(_symbol_table),
39
goto_functions
(_goto_functions),
40
goto_program
(_goto_program),
41
loop
(_loop),
42
loop_header
(_loop_header),
43
guard_manager
(
guard_manager
),
44
polynomial_accelerator
(
45
message_handler,
46
symbol_table
,
47
goto_functions
,
48
guard_manager
),
49
path_limit
(_path_limit),
50
path_enumerator
(
std
::make_unique<
sat_path_enumeratort
>(
51
message_handler,
52
symbol_table
,
53
goto_functions
,
54
goto_program
,
55
loop
,
56
loop_header
,
57
guard_manager
))
58
{
59
}
60
61
bool
accelerate
(
path_acceleratort
&accelerator);
62
63
protected
:
64
symbol_tablet
&
symbol_table
;
65
goto_functionst
&
goto_functions
;
66
goto_programt
&
goto_program
;
67
natural_loops_mutablet::natural_loopt
&
loop
;
68
goto_programt::targett
loop_header
;
69
guard_managert
&
guard_manager
;
70
polynomial_acceleratort
polynomial_accelerator
;
71
int
path_limit
;
72
73
std::unique_ptr<path_enumeratort>
path_enumerator
;
74
};
75
76
#endif
// CPROVER_GOTO_INSTRUMENT_ACCELERATE_ENUMERATING_LOOP_ACCELERATION_H
enumerating_loop_accelerationt::enumerating_loop_accelerationt
enumerating_loop_accelerationt(message_handlert &message_handler, symbol_tablet &_symbol_table, goto_functionst &_goto_functions, goto_programt &_goto_program, natural_loops_mutablet::natural_loopt &_loop, goto_programt::targett _loop_header, int _path_limit, guard_managert &guard_manager)
Definition
enumerating_loop_acceleration.h:29
enumerating_loop_accelerationt::guard_manager
guard_managert & guard_manager
Definition
enumerating_loop_acceleration.h:69
enumerating_loop_accelerationt::loop_header
goto_programt::targett loop_header
Definition
enumerating_loop_acceleration.h:68
enumerating_loop_accelerationt::path_enumerator
std::unique_ptr< path_enumeratort > path_enumerator
Definition
enumerating_loop_acceleration.h:73
enumerating_loop_accelerationt::symbol_table
symbol_tablet & symbol_table
Definition
enumerating_loop_acceleration.h:64
enumerating_loop_accelerationt::goto_program
goto_programt & goto_program
Definition
enumerating_loop_acceleration.h:66
enumerating_loop_accelerationt::goto_functions
goto_functionst & goto_functions
Definition
enumerating_loop_acceleration.h:65
enumerating_loop_accelerationt::polynomial_accelerator
polynomial_acceleratort polynomial_accelerator
Definition
enumerating_loop_acceleration.h:70
enumerating_loop_accelerationt::path_limit
int path_limit
Definition
enumerating_loop_acceleration.h:71
enumerating_loop_accelerationt::accelerate
bool accelerate(path_acceleratort &accelerator)
Definition
enumerating_loop_acceleration.cpp:16
enumerating_loop_accelerationt::loop
natural_loops_mutablet::natural_loopt & loop
Definition
enumerating_loop_acceleration.h:67
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
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_acceleratort
Definition
accelerator.h:27
polynomial_acceleratort
Definition
polynomial_accelerator.h:29
sat_path_enumeratort
Definition
sat_path_enumerator.h:27
symbol_tablet
The symbol table.
Definition
symbol_table.h:14
goto_program.h
Concrete Goto Program.
guard_managert
guard_expr_managert guard_managert
Definition
guard.h:28
std
STL namespace.
natural_loops.h
Compute natural loops in a goto_function.
path_enumerator.h
Loop Acceleration.
polynomial_accelerator.h
Loop Acceleration.
sat_path_enumerator.h
Loop Acceleration.
goto-instrument
accelerate
enumerating_loop_acceleration.h
Generated by
1.17.0