ESBMC
Efficient SMT-based Context-Bounded Model Checker
Loading...
Searching...
No Matches
ts_engines.h
Go to the documentation of this file.
1#pragma once
2
5
6#include <cstdint>
7#include <memory>
8
12{
13public:
18 const namespacet &ns,
19 optionst &options,
20 bool incremental = true);
21
24 int bmc(uint64_t max_k, bool push_pop);
25
28 smt_resultt solve_bound(unsigned k);
30
31protected:
33 const namespacet &ns;
34 std::unique_ptr<smt_convt> solver;
35
36 expr2tc bad_literal(unsigned step) const;
40 bool check_prefix();
41 void assume_prefix();
42 void add_step(unsigned step);
43 void close_step(unsigned step);
44 smt_resultt solve_bad(unsigned step, bool push_pop);
45 void report_counterexample(unsigned step);
46};
Definition namespace.h:10
Definition options.h:11
Transition system here represents a sequential circuit.
Definition transition_system.h:36
void close_step(unsigned step)
Definition ts_engines.cpp:131
void report_counterexample(unsigned step)
Definition ts_engines.cpp:160
smt_resultt solve_bad(unsigned step, bool push_pop)
Definition ts_engines.cpp:143
const transition_systemt & ts
Definition ts_engines.h:32
void add_step(unsigned step)
Definition ts_engines.cpp:120
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_boun...
Definition ts_engines.cpp:12
int bmc(uint64_t max_k, bool push_pop)
Exit codes follow do_bmc_strategy: 0 SUCCESSFUL or UNKNOWN, 1 FAILED, 6 solver error.
Definition ts_engines.cpp:188
smt_resultt solve_prefix()
Definition ts_engines.cpp:90
void assume_prefix()
Definition ts_engines.cpp:54
expr2tc bad_literal(unsigned step) const
Definition ts_engines.cpp:49
const namespacet & ns
Definition ts_engines.h:33
std::unique_ptr< smt_convt > solver
Definition ts_engines.h:34
smt_resultt solve_bound(unsigned k)
One monolithic BMC query on a fresh engine: steps 0..k unrolled, the violation at step k asserted,...
Definition ts_engines.cpp:99
bool check_prefix()
Returns false if the prefix itself violates a property.
Definition ts_engines.cpp:60
irep_container< expr2t > expr2tc
Definition irep2.h:431
SMT conversion tools and utilities.
smt_resultt
Result of a call to dec_solve.
Definition smt_result.h:7