|
CBMC
|
Performs a multi-path symbolic execution using goto-symex and calls a SAT/SMT solver to check the status of the properties. More...
#include <multi_path_symex_checker.h>
Inheritance diagram for multi_path_symex_checkert:
Collaboration diagram for multi_path_symex_checkert:Public Member Functions | |
| multi_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 |
| fault_location_infot | localize_fault (const irep_idt &property_id) const override |
Returns the most likely fault locations for the given FAILed property_id. More... | |
| void | report () override |
| Additional reporting that may result from the underlying solver, no-op by default. More... | |
Public Member Functions inherited from multi_path_symex_only_checkert | |
| multi_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... | |
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 |
Public Member Functions inherited from goto_trace_providert | |
| virtual | ~goto_trace_providert ()=default |
Public Member Functions inherited from witness_providert | |
| virtual | ~witness_providert ()=default |
Public Member Functions inherited from fault_localization_providert | |
| virtual | ~fault_localization_providert ()=default |
Protected Member Functions | |
| virtual std::chrono::duration< double > | prepare_property_decider (propertiest &properties) |
| Prepare the property decider for solving. More... | |
| virtual void | run_property_decider (incremental_goto_checkert::resultt &result, propertiest &properties, 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 multi_path_symex_only_checkert | |
| virtual void | generate_equation () |
| Generates the equation by running goto-symex. More... | |
| virtual void | update_properties (propertiest &properties, std::unordered_set< irep_idt > &updated_properties) |
Updates the properties from the equation 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 | equation_generated |
| goto_symex_property_decidert | property_decider |
Protected Attributes inherited from multi_path_symex_only_checkert | |
| abstract_goto_modelt & | goto_model |
| symbol_tablet | symex_symbol_table |
| namespacet | ns |
| symex_target_equationt | equation |
| guard_managert | guard_manager |
| path_fifot | path_storage |
| unwindsett | unwindset |
| symex_bmct | symex |
Protected Attributes inherited from incremental_goto_checkert | |
| const optionst & | options |
| ui_message_handlert & | ui_message_handler |
| messaget | log |
Performs a multi-path symbolic execution using goto-symex and calls a SAT/SMT solver to check the status of the properties.
Definition at line 25 of file multi_path_symex_checker.h.
| multi_path_symex_checkert::multi_path_symex_checkert | ( | const optionst & | options, |
| ui_message_handlert & | ui_message_handler, | ||
| abstract_goto_modelt & | goto_model | ||
| ) |
Definition at line 24 of file multi_path_symex_checker.cpp.
|
overridevirtual |
Builds and returns the complete trace.
Implements goto_trace_providert.
Reimplemented in java_multi_path_symex_checkert.
Definition at line 91 of file multi_path_symex_checker.cpp.
|
overridevirtual |
Builds and returns the trace up to the first failed property.
Implements goto_trace_providert.
Reimplemented in java_multi_path_symex_checkert.
Definition at line 104 of file multi_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_multi_path_symex_checkert.
Definition at line 122 of file multi_path_symex_checker.cpp.
|
overridevirtual |
Returns the namespace associated with the traces.
Implements goto_trace_providert.
Definition at line 135 of file multi_path_symex_checker.cpp.
|
overridevirtual |
Returns the most likely fault locations for the given FAILed property_id.
Implements fault_localization_providert.
Definition at line 152 of file multi_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.Note: Repeated invocations of this operator with properties P_1, P_2, ... must satisfy the condition 'P_i contains P_i+1'. I.e. after checking properties P_i the caller may decide to check only a subset of properties P_i+1 in the following invocation, but the caller may not add properties to P_i+1 that have not been in P_i. Such additional properties will be ignored.
Implements incremental_goto_checkert.
Definition at line 35 of file multi_path_symex_checker.cpp.
|
overridevirtual |
Implements witness_providert.
Definition at line 145 of file multi_path_symex_checker.cpp.
|
overridevirtual |
Implements witness_providert.
Definition at line 140 of file multi_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 74 of file multi_path_symex_checker.cpp.
|
overridevirtual |
Additional reporting that may result from the underlying solver, no-op by default.
Reimplemented from incremental_goto_checkert.
Definition at line 163 of file multi_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 82 of file multi_path_symex_checker.cpp.
|
protected |
Definition at line 60 of file multi_path_symex_checker.h.
|
protected |
Definition at line 61 of file multi_path_symex_checker.h.