Bounded Model Checking Utilities.
More...
+ Include dependency graph for bmc_util.cpp:
Go to the source code of this file.
Outputs a message that an error trace is being built.
Returns a function that checks whether an SSA step is an assertion with property_id.
outputs an error witness in graphml format
outputs a proof in graphml format
Sets property status to PASS for properties whose conditions are constant true in the equation.
Sets the property status of NOT_CHECKED properties to PASS.
Sets the property status of UNKNOWN properties to PASS.
Output a coverage report as generated by
symex_coveraget if
cov_out is non-empty.
Post process the equation.
Converts the equation and sets up the property decider, but does not call solve.
Runs the property decider to solve the equation.
Detailed Description
Bounded Model Checking Utilities.
Definition in file bmc_util.cpp.
Function Documentation
◆ build_error_trace()
◆ convert_symex_target_equation()
◆ get_memory_model()
◆ message_building_error_trace()
Outputs a message that an error trace is being built.
Definition at line 32 of file bmc_util.cpp.
◆ output_coverage_report()
void output_coverage_report
(
const std::string &
cov_out,
)
Output a coverage report as generated by symex_coveraget if cov_out is non-empty.
- Parameters
-
cov_out file to write the report to; no report is generated if this is empty
goto_model goto model to build the coverage report for
symex symbolic execution run to report coverage for
ui_message_handler status/warning message handler
Definition at line 284 of file bmc_util.cpp.
◆ output_error_trace()
◆ output_graphml() [1/2]
outputs an error witness in graphml format
Definition at line 105 of file bmc_util.cpp.
◆ output_graphml() [2/2]
outputs a proof in graphml format
Definition at line 127 of file bmc_util.cpp.
◆ postprocess_equation()
Post process the equation.
- add partial order constraints
- slice
- perform validation
Definition at line 300 of file bmc_util.cpp.
◆ prepare_property_decider()
Converts the equation and sets up the property decider, but does not call solve.
- Parameters
-
[in,out] properties Sets the status of properties to be checked to UNKNOWN
[in,out] equation The equation that will be converted
[in,out] property_decider The property decider that we are going to set up
[in,out] ui_message_handler For logging
- Returns
- The runtime for converting the equation
Definition at line 336 of file bmc_util.cpp.
◆ run_property_decider()
std::chrono::duration<
double >
solver_runtime,
)
Runs the property decider to solve the equation.
- Parameters
-
[in,out] result For recording the progress and the updated properties
[in,out] properties The status will be updated
[in,out] property_decider The property decider that will solve the equation
[in,out] ui_message_handler For logging
solver_runtime The solver runtime will be added and output
set_pass If true then update UNKNOWN properties to PASS if the solver returns UNSATISFIABLE
Definition at line 372 of file bmc_util.cpp.
◆ slice()
◆ ssa_step_matches_failing_property()
Returns a function that checks whether an SSA step is an assertion with property_id.
Usually used for build_goto_trace.
Definition at line 51 of file bmc_util.cpp.
◆ update_properties_status_from_symex_target_equation()
void update_properties_status_from_symex_target_equation
(
propertiest &
properties,
std::unordered_set<
irep_idt > &
updated_properties,
)
Sets property status to PASS for properties whose conditions are constant true in the equation.
- Parameters
-
[in,out] properties The status is updated in this data structure
[in,out] updated_properties The set of property IDs of updated properties
equation A equation generated by goto-symex
Definition at line 216 of file bmc_util.cpp.
◆ update_status_of_not_checked_properties()
std::unordered_set<
irep_idt > &
updated_properties
)
Sets the property status of NOT_CHECKED properties to PASS.
- Parameters
-
[in,out] properties The status is updated in this data structure
[in,out] updated_properties The IDs of updated properties are added here Note: this should inspect the equation, but the equation doesn't have any useful information at the moment.
Definition at line 252 of file bmc_util.cpp.
◆ update_status_of_unknown_properties()
std::unordered_set<
irep_idt > &
updated_properties
)
Sets the property status of UNKNOWN properties to PASS.
- Parameters
-
[in,out] properties The status is updated in this data structure
[in,out] updated_properties The set of property IDs of updated properties Note: we currently declare everything PASS that is UNKNOWN at the end of the model checking algorithm.
Definition at line 268 of file bmc_util.cpp.