cprover
Toggle main menu visibility
Loading...
Searching...
No Matches
single_path_symex_only_checker.h
Go to the documentation of this file.
1
/*******************************************************************\
2
3
Module: Goto Checker using Single Path Symbolic Execution only
4
5
Author: Daniel Kroening, Peter Schrammel
6
7
\*******************************************************************/
8
11
12
#ifndef CPROVER_GOTO_CHECKER_SINGLE_PATH_SYMEX_ONLY_CHECKER_H
13
#define CPROVER_GOTO_CHECKER_SINGLE_PATH_SYMEX_ONLY_CHECKER_H
14
15
#include <
goto-programs/unwindset.h
>
16
17
#include <
goto-symex/path_storage.h
>
18
19
#include "
incremental_goto_checker.h
"
20
21
#include <chrono>
// IWYU pragma: keep
22
23
class
symex_bmct
;
24
26
class
single_path_symex_only_checkert
:
public
incremental_goto_checkert
27
{
28
public
:
29
single_path_symex_only_checkert
(
30
const
optionst
&
options
,
31
ui_message_handlert
&
ui_message_handler
,
32
abstract_goto_modelt
&
goto_model
);
33
34
resultt
operator()
(
propertiest
&)
override
;
35
36
virtual
~single_path_symex_only_checkert
() =
default
;
37
38
protected
:
39
abstract_goto_modelt
&
goto_model
;
40
symbol_tablet
symex_symbol_table
;
41
namespacet
ns
;
42
guard_managert
guard_manager
;
43
std::unique_ptr<path_storaget>
worklist
;
44
std::chrono::duration<double>
symex_runtime
;
45
unwindsett
unwindset
;
46
47
void
equation_output
(
48
const
symex_bmct
&symex,
49
const
symex_target_equationt
&equation);
50
51
virtual
void
setup_symex
(
symex_bmct
&symex)
52
{
53
// deriving classes may do extra work here
54
}
55
57
virtual
void
initialize_worklist
();
58
61
virtual
bool
resume_path
(
path_storaget::patht
&path);
62
65
virtual
bool
66
is_ready_to_decide
(
const
symex_bmct
&symex,
const
path_storaget::patht
&path);
67
69
virtual
bool
has_finished_exploration
(
const
propertiest
&);
70
73
virtual
void
update_properties
(
74
propertiest
&properties,
75
std::unordered_set<irep_idt> &updated_properties,
76
const
symex_target_equationt
&equation);
77
80
virtual
void
final_update_properties
(
81
propertiest
&properties,
82
std::unordered_set<irep_idt> &updated_properties);
83
};
84
85
#endif
// CPROVER_GOTO_CHECKER_SINGLE_PATH_SYMEX_ONLY_CHECKER_H
abstract_goto_modelt
Abstract interface to eager or lazy GOTO models.
Definition
abstract_goto_model.h:22
incremental_goto_checkert::incremental_goto_checkert
incremental_goto_checkert()=delete
incremental_goto_checkert::options
const optionst & options
Definition
incremental_goto_checker.h:91
incremental_goto_checkert::ui_message_handler
ui_message_handlert & ui_message_handler
Definition
incremental_goto_checker.h:92
namespacet
A namespacet is essentially one or two symbol tables bound together, to allow for symbol lookups in t...
Definition
namespace.h:91
optionst
Definition
options.h:23
single_path_symex_only_checkert::is_ready_to_decide
virtual bool is_ready_to_decide(const symex_bmct &symex, const path_storaget::patht &path)
Returns whether the given path produced by symex is ready to be checked.
Definition
single_path_symex_only_checker.cpp:122
single_path_symex_only_checkert::unwindset
unwindsett unwindset
Definition
single_path_symex_only_checker.h:45
single_path_symex_only_checkert::final_update_properties
virtual void final_update_properties(propertiest &properties, std::unordered_set< irep_idt > &updated_properties)
Updates the properties after having finished exploration and adds their property IDs to updated_prope...
Definition
single_path_symex_only_checker.cpp:167
single_path_symex_only_checkert::guard_manager
guard_managert guard_manager
Definition
single_path_symex_only_checker.h:42
single_path_symex_only_checkert::initialize_worklist
virtual void initialize_worklist()
Adds the initial goto-symex state as a path to the worklist.
Definition
single_path_symex_only_checker.cpp:65
single_path_symex_only_checkert::symex_runtime
std::chrono::duration< double > symex_runtime
Definition
single_path_symex_only_checker.h:44
single_path_symex_only_checkert::setup_symex
virtual void setup_symex(symex_bmct &symex)
Definition
single_path_symex_only_checker.h:51
single_path_symex_only_checkert::~single_path_symex_only_checkert
virtual ~single_path_symex_only_checkert()=default
single_path_symex_only_checkert::worklist
std::unique_ptr< path_storaget > worklist
Definition
single_path_symex_only_checker.h:43
single_path_symex_only_checkert::update_properties
virtual void update_properties(propertiest &properties, std::unordered_set< irep_idt > &updated_properties, const symex_target_equationt &equation)
Updates the properties from the equation and adds their property IDs to updated_properties.
Definition
single_path_symex_only_checker.cpp:155
single_path_symex_only_checkert::single_path_symex_only_checkert
single_path_symex_only_checkert(const optionst &options, ui_message_handlert &ui_message_handler, abstract_goto_modelt &goto_model)
Definition
single_path_symex_only_checker.cpp:24
single_path_symex_only_checkert::ns
namespacet ns
Definition
single_path_symex_only_checker.h:41
single_path_symex_only_checkert::symex_symbol_table
symbol_tablet symex_symbol_table
Definition
single_path_symex_only_checker.h:40
single_path_symex_only_checkert::resume_path
virtual bool resume_path(path_storaget::patht &path)
Continues exploring the given path using goto-symex.
Definition
single_path_symex_only_checker.cpp:95
single_path_symex_only_checkert::goto_model
abstract_goto_modelt & goto_model
Definition
single_path_symex_only_checker.h:39
single_path_symex_only_checkert::has_finished_exploration
virtual bool has_finished_exploration(const propertiest &)
Returns whether we should stop exploring paths.
Definition
single_path_symex_only_checker.cpp:87
single_path_symex_only_checkert::equation_output
void equation_output(const symex_bmct &symex, const symex_target_equationt &equation)
Definition
single_path_symex_only_checker.cpp:130
single_path_symex_only_checkert::operator()
resultt operator()(propertiest &) override
Check whether the given properties with status NOT_CHECKED, UNKNOWN or properties newly discovered by...
Definition
single_path_symex_only_checker.cpp:40
symbol_tablet
The symbol table.
Definition
symbol_table.h:14
symex_bmct
Definition
symex_bmc.h:24
symex_target_equationt
Inheriting the interface of symex_targett this class represents the SSA form of the input program as ...
Definition
symex_target_equation.h:34
ui_message_handlert
Definition
ui_message.h:22
unwindsett
Definition
unwindset.h:26
guard_managert
guard_expr_managert guard_managert
Definition
guard.h:28
incremental_goto_checker.h
Incremental Goto Checker Interface.
path_storage.h
Storage of symbolic execution paths to resume.
propertiest
std::map< irep_idt, property_infot > propertiest
A map of property IDs to property infos.
Definition
properties.h:76
incremental_goto_checkert::resultt
Definition
incremental_goto_checker.h:43
path_storaget::patht
Information saved at a conditional goto to resume execution.
Definition
path_storage.h:42
unwindset.h
Loop unwinding.
goto-checker
single_path_symex_only_checker.h
Generated by
1.17.0