|
CBMC
|
Uses goto-symex to symbolically execute each path in the goto model and calls a solver to find property violations. More...
#include <single_path_symex_checker.h>
Inheritance diagram for single_path_symex_checkert:
Collaboration diagram for single_path_symex_checkert:Public Member Functions | |
| single_path_symex_checkert (const optionst &options, ui_message_handlert &ui_message_handler, abstract_goto_modelt &goto_model) | |
| resultt | operator() (propertiest &) override |
Check whether the given properties with status NOT_CHECKED, UNKNOWN or properties newly discovered by incremental_goto_checkert hold. More... | |
| goto_tracet | build_full_trace () const override |
| Builds and returns the complete trace. More... | |
| goto_tracet | build_shortest_trace () const override |
| Builds and returns the trace up to the first failed property. More... | |
| goto_tracet | build_trace (const irep_idt &) const override |
Builds and returns the trace for the FAILed property with the given property_id. More... | |
| const namespacet & | get_namespace () const override |
| Returns the namespace associated with the traces. More... | |
| void | output_error_witness (const goto_tracet &) override |
| void | output_proof () override |
| virtual | ~single_path_symex_checkert ()=default |
Public Member Functions inherited from single_path_symex_only_checkert | |
| single_path_symex_only_checkert (const optionst &options, ui_message_handlert &ui_message_handler, abstract_goto_modelt &goto_model) | |
| resultt | operator() (propertiest &) override |
Check whether the given properties with status NOT_CHECKED, UNKNOWN or properties newly discovered by incremental_goto_checkert hold. More... | |
| virtual | ~single_path_symex_only_checkert ()=default |
Public Member Functions inherited from incremental_goto_checkert | |
| incremental_goto_checkert ()=delete | |
| incremental_goto_checkert (const incremental_goto_checkert &)=delete | |
| virtual | ~incremental_goto_checkert ()=default |
| virtual void | report () |
| Additional reporting that may result from the underlying solver, no-op by default. More... | |
Public Member Functions inherited from witness_providert | |
| virtual | ~witness_providert ()=default |
Public Member Functions inherited from goto_trace_providert | |
| virtual | ~goto_trace_providert ()=default |
Protected Member Functions | |
| bool | is_ready_to_decide (const symex_bmct &, const path_storaget::patht &) override |
Returns whether the given path produced by symex is ready to be checked. More... | |
| virtual std::chrono::duration< double > | prepare_property_decider (propertiest &properties, symex_target_equationt &equation, goto_symex_property_decidert &property_decider) |
Prepare the property_decider for solving. More... | |
| virtual void | run_property_decider (incremental_goto_checkert::resultt &result, propertiest &properties, goto_symex_property_decidert &property_decider, std::chrono::duration< double > solver_runtime) |
Run the property_decider, which calls the SAT solver, and set the status of checked properties accordingly. More... | |
Protected Member Functions inherited from single_path_symex_only_checkert | |
| void | equation_output (const symex_bmct &symex, const symex_target_equationt &equation) |
| virtual void | setup_symex (symex_bmct &symex) |
| virtual void | initialize_worklist () |
| Adds the initial goto-symex state as a path to the worklist. More... | |
| virtual bool | resume_path (path_storaget::patht &path) |
Continues exploring the given path using goto-symex. More... | |
| virtual bool | has_finished_exploration (const propertiest &) |
| Returns whether we should stop exploring paths. More... | |
| 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. More... | |
| 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_properties. More... | |
Protected Member Functions inherited from incremental_goto_checkert | |
| incremental_goto_checkert (const optionst &, ui_message_handlert &) | |
Protected Attributes | |
| bool | symex_initialized = false |
| std::unique_ptr< goto_symex_property_decidert > | property_decider |
Protected Attributes inherited from single_path_symex_only_checkert | |
| abstract_goto_modelt & | goto_model |
| symbol_tablet | symex_symbol_table |
| namespacet | ns |
| guard_managert | guard_manager |
| std::unique_ptr< path_storaget > | worklist |
| std::chrono::duration< double > | symex_runtime |
| unwindsett | unwindset |
Protected Attributes inherited from incremental_goto_checkert | |
| const optionst & | options |
| ui_message_handlert & | ui_message_handler |
| messaget | log |
Uses goto-symex to symbolically execute each path in the goto model and calls a solver to find property violations.
Definition at line 24 of file single_path_symex_checker.h.
| single_path_symex_checkert::single_path_symex_checkert | ( | const optionst & | options, |
| ui_message_handlert & | ui_message_handler, | ||
| abstract_goto_modelt & | goto_model | ||
| ) |
Definition at line 20 of file single_path_symex_checker.cpp.
|
virtualdefault |
|
overridevirtual |
Builds and returns the complete trace.
Implements goto_trace_providert.
Reimplemented in java_single_path_symex_checkert.
Definition at line 128 of file single_path_symex_checker.cpp.
|
overridevirtual |
Builds and returns the trace up to the first failed property.
Implements goto_trace_providert.
Reimplemented in java_single_path_symex_checkert.
Definition at line 141 of file single_path_symex_checker.cpp.
|
overridevirtual |
Builds and returns the trace for the FAILed property with the given property_id.
Implements goto_trace_providert.
Reimplemented in java_single_path_symex_checkert.
Definition at line 162 of file single_path_symex_checker.cpp.
|
overridevirtual |
Returns the namespace associated with the traces.
Implements goto_trace_providert.
Definition at line 175 of file single_path_symex_checker.cpp.
|
overrideprotectedvirtual |
Returns whether the given path produced by symex is ready to be checked.
Reimplemented from single_path_symex_only_checkert.
Definition at line 94 of file single_path_symex_checker.cpp.
|
overridevirtual |
Check whether the given properties with status NOT_CHECKED, UNKNOWN or properties newly discovered by incremental_goto_checkert hold.
| [out] | properties | Properties updated to whether their status have been determined. Newly discovered properties are added. |
build_error_trace before any subsequent call to operator(). incremental_goto_checkert derivatives shall be implemented in a way such that repeated calls to operator() shall return when the next FAILed property has been found until eventually it does not find any failing properties any more. Implements incremental_goto_checkert.
Definition at line 29 of file single_path_symex_checker.cpp.
|
overridevirtual |
Implements witness_providert.
Definition at line 180 of file single_path_symex_checker.cpp.
|
overridevirtual |
Implements witness_providert.
Definition at line 186 of file single_path_symex_checker.cpp.
|
protectedvirtual |
Prepare the property_decider for solving.
This sets up the data structures for tracking goal literals, sets the status of properties to be checked to UNKNOWN and pushes the equation into the solver.
Definition at line 102 of file single_path_symex_checker.cpp.
|
protectedvirtual |
Run the property_decider, which calls the SAT solver, and set the status of checked properties accordingly.
The property IDs of updated properties are added to the result.updated_properties and the goto checker's progress (DONE, FOUND_FAIL) is set in result. The solver_runtime will be logged.
Definition at line 113 of file single_path_symex_checker.cpp.
|
protected |
Definition at line 48 of file single_path_symex_checker.h.
|
protected |
Definition at line 47 of file single_path_symex_checker.h.