CBMC
Loading...
Searching...
No Matches
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
multi_path_symex_checkert Class Reference

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

 
  Check whether the given properties with status NOT_CHECKED, UNKNOWN or properties newly discovered by incremental_goto_checkert hold.
 
  Builds and returns the complete trace.
 
  Builds and returns the trace up to the first failed property.
 
  Builds and returns the trace for the FAILed property with the given property_id.
 
  Returns the namespace associated with the traces.
 
 
 
  Returns the most likely fault locations for the given FAILed property_id.
 
  Additional reporting that may result from the underlying solver, no-op by default.
 
- Public Member Functions inherited from multi_path_symex_only_checkert
 
  Check whether the given properties with status NOT_CHECKED, UNKNOWN or properties newly discovered by incremental_goto_checkert hold.
 
- Public Member Functions inherited from incremental_goto_checkert
 
 
 
- Public Member Functions inherited from goto_trace_providert
 
- Public Member Functions inherited from witness_providert
 
- Public Member Functions inherited from fault_localization_providert
 

Protected Member Functions

virtual std::chrono::duration< doubleprepare_property_decider (propertiest &properties)
  Prepare the property decider for solving.
 
  Run the property decider, which calls the SAT solver, and set the status of checked properties accordingly.
 
- Protected Member Functions inherited from multi_path_symex_only_checkert
  Generates the equation by running goto-symex.
 
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.
 
- Protected Member Functions inherited from incremental_goto_checkert
 

Protected Attributes

 
 
- Protected Attributes inherited from multi_path_symex_only_checkert
 
 
 
 
 
 
 
 
- Protected Attributes inherited from incremental_goto_checkert
 
 
 

Detailed Description

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.

Constructor & Destructor Documentation

◆  multi_path_symex_checkert()

multi_path_symex_checkert::multi_path_symex_checkert ( const optionstoptions,
ui_message_handlertui_message_handler,
abstract_goto_modeltgoto_model 
)

Definition at line 26 of file multi_path_symex_checker.cpp.

Member Function Documentation

◆  build_full_trace()

goto_tracet multi_path_symex_checkert::build_full_trace ( ) const
overridevirtual

Builds and returns the complete trace.

Note
If slicing is used then the trace will not be complete. E.g. with simple-slice it will end at the last assertion.

Implements goto_trace_providert.

Definition at line 97 of file multi_path_symex_checker.cpp.

◆  build_shortest_trace()

goto_tracet multi_path_symex_checkert::build_shortest_trace ( ) const
overridevirtual

Builds and returns the trace up to the first failed property.

Implements goto_trace_providert.

Definition at line 110 of file multi_path_symex_checker.cpp.

◆  build_trace()

goto_tracet multi_path_symex_checkert::build_trace ( const irep_idtproperty_id ) const
overridevirtual

Builds and returns the trace for the FAILed property with the given property_id.

Implements goto_trace_providert.

Definition at line 127 of file multi_path_symex_checker.cpp.

◆  get_namespace()

const namespacet & multi_path_symex_checkert::get_namespace ( ) const
overridevirtual

Returns the namespace associated with the traces.

Implements goto_trace_providert.

Definition at line 140 of file multi_path_symex_checker.cpp.

◆  localize_fault()

fault_location_infot multi_path_symex_checkert::localize_fault ( const irep_idtproperty_id ) const
overridevirtual

Returns the most likely fault locations for the given FAILed property_id.

Implements fault_localization_providert.

Definition at line 157 of file multi_path_symex_checker.cpp.

◆  operator()()

incremental_goto_checkert::resultt multi_path_symex_checkert::operator() ( propertiestproperties )
overridevirtual

Check whether the given properties with status NOT_CHECKED, UNKNOWN or properties newly discovered by incremental_goto_checkert hold.

Parameters
[out] properties Properties updated to whether their status have been determined. Newly discovered properties are added.
Returns
whether the goto checker found a violated property (FOUND_FAIL) or whether it is DONE with the given properties, together with the properties whose status changed since the last call to operator(). After returning DONE, another call to operator() with the same properties will return DONE and leave the properties' status unchanged. If there is a property with status FAIL then its counterexample can be retrieved by calling 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 40 of file multi_path_symex_checker.cpp.

◆  output_error_witness()

void multi_path_symex_checkert::output_error_witness ( const goto_traceterror_trace )
overridevirtual

Implements witness_providert.

Definition at line 150 of file multi_path_symex_checker.cpp.

◆  output_proof()

void multi_path_symex_checkert::output_proof ( )
overridevirtual

Implements witness_providert.

Definition at line 145 of file multi_path_symex_checker.cpp.

◆  prepare_property_decider()

std::chrono::duration< double > multi_path_symex_checkert::prepare_property_decider ( propertiestproperties )
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.

Returns
the time taken (pushing into the solver is a costly operation)

Definition at line 80 of file multi_path_symex_checker.cpp.

◆  report()

void multi_path_symex_checkert::report ( )
overridevirtual

Additional reporting that may result from the underlying solver, no-op by default.

Reimplemented from incremental_goto_checkert.

Definition at line 168 of file multi_path_symex_checker.cpp.

◆  run_property_decider()

void multi_path_symex_checkert::run_property_decider ( incremental_goto_checkert::resulttresult,
propertiestproperties,
std::chrono::duration< doublesolver_runtime 
)
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 88 of file multi_path_symex_checker.cpp.

Member Data Documentation

◆  equation_generated

bool multi_path_symex_checkert::equation_generated
protected

Definition at line 60 of file multi_path_symex_checker.h.

◆  property_decider

goto_symex_property_decidert multi_path_symex_checkert::property_decider
protected

Definition at line 61 of file multi_path_symex_checker.h.


The documentation for this class was generated from the following files:

AltStyle によって変換されたページ (->オリジナル) /