|
ESBMC
Efficient SMT-based Context-Bounded Model Checker
|
BMC over a transition system, unrolled step by step in a single solver. More...
#include <ts_engines.h>
Public Member Functions | |
| ts_enginet (const transition_systemt &ts, const namespacet &ns, optionst &options, bool incremental=true) | |
| Without incremental, the solver is never asked to track assumptions; only solve_prefix and solve_bound may be used. | |
| int | bmc (uint64_t max_k, bool push_pop) |
| Exit codes follow do_bmc_strategy: 0 SUCCESSFUL or UNKNOWN, 1 FAILED, 6 solver error. | |
| smt_resultt | solve_bound (unsigned k) |
| One monolithic BMC query on a fresh engine: steps 0..k unrolled, the violation at step k asserted, a single check-sat. | |
| smt_resultt | solve_prefix () |
Protected Member Functions | |
| expr2tc | bad_literal (unsigned step) const |
| bool | check_prefix () |
| Returns false if the prefix itself violates a property. | |
| void | assume_prefix () |
| void | add_step (unsigned step) |
| void | close_step (unsigned step) |
| smt_resultt | solve_bad (unsigned step, bool push_pop) |
| void | report_counterexample (unsigned step) |
Protected Attributes | |
| const transition_systemt & | ts |
| const namespacet & | ns |
| std::unique_ptr< smt_convt > | solver |
BMC over a transition system, unrolled step by step in a single solver.
Each step's violation is queried through its own activation literal.
| ts_enginet::ts_enginet | ( | const transition_systemt & | ts, |
| const namespacet & | ns, | ||
| optionst & | options, | ||
| bool | incremental = true ) |
Without incremental, the solver is never asked to track assumptions; only solve_prefix and solve_bound may be used.
|
protected |
|
protected |
|
protected |
Exit codes follow do_bmc_strategy: 0 SUCCESSFUL or UNKNOWN, 1 FAILED, 6 solver error.
|
protected |
Returns false if the prefix itself violates a property.
Assumptions before the loop only hold from here on: each prefix property already carries the ones that precede it.
|
protected |
|
protected |
|
protected |
| smt_resultt ts_enginet::solve_bound | ( | unsigned | k | ) |
One monolithic BMC query on a fresh engine: steps 0..k unrolled, the violation at step k asserted, a single check-sat.
| smt_resultt ts_enginet::solve_prefix | ( | ) |
|
protected |
|
protected |
|
protected |