ESBMC
Efficient SMT-based Context-Bounded Model Checker
Loading...
Searching...
No Matches
minisat_conv.h
Go to the documentation of this file.
1#ifndef _ESBMC_SOLVERS_SMTLIB_CONV_H_
2#define _ESBMC_SOLVERS_SMTLIB_CONV_H_
3
4// For the sake of...
5#define __STDC_LIMIT_MACROS
6#define __STDC_FORMAT_MACROS
7
8#include <limits.h>
9#include <stdint.h>
10#include <inttypes.h>
12#include <solvers/smt/smt_tuple_flat.h>
16#include <core/Solver.h>
17
18typedef Minisat::Lit Lit;
19typedef Minisat::lbool lbool;
20typedef std::vector<literalt> bvt;
21
22class minisat_convt : public cnf_iface, public cnf_convt, public bitblast_convt
23{
24public:
25 typedef enum
26 {
30 } shiftt;
31
32 minisat_convt(bool int_encoding, const namespacet &_ns, const optionst &opts);
34
35 // Things definitely to be done by the solver:
36 virtual smt_resultt dec_solve();
37 virtual const std::string solver_text();
38 virtual tvt l_get(const literalt &a);
39 virtual literalt new_variable();
40 virtual void assert_lit(const literalt &l);
41 virtual void lcnf(const bvt &bv);
42
43 virtual void setto(literalt a, bool val);
44
45 // Internal gunk
46
47 void convert(const bvt &bv, Minisat::vec<Lit> &dest);
48 void dump_bv(const bvt &bv) const;
49
50 // Members
51
52 Minisat::Solver solver;
55};
56
57#endif /* _ESBMC_SOLVERS_SMTLIB_CONV_H_ */
bitblast_convt(bool int_encoding, const namespacet &_ns, sat_iface *sat_api)
Definition bitblast_conv.cpp:4
cnf_convt(cnf_iface *cnf_api)
Definition cnf_conv.cpp:3
Definition cnf_iface.h:5
Definition literal.h:8
~minisat_convt()
Definition minisat_conv.cpp:81
Minisat::Solver solver
Definition minisat_conv.h:52
virtual void assert_lit(const literalt &l)
Definition minisat_conv.cpp:138
virtual tvt l_get(const literalt &a)
Definition minisat_conv.cpp:121
virtual smt_resultt dec_solve()
Solve the formula given to the solver.
Definition minisat_conv.cpp:85
void dump_bv(const bvt &bv) const
Definition minisat_conv.cpp:100
minisat_convt(bool int_encoding, const namespacet &_ns, const optionst &opts)
Definition minisat_conv.cpp:68
virtual void setto(literalt a, bool val)
Definition minisat_conv.cpp:38
virtual const std::string solver_text()
Solver name fetcher.
Definition minisat_conv.cpp:116
const optionst & options
Definition minisat_conv.h:53
virtual literalt new_variable()
Definition minisat_conv.cpp:18
virtual void lcnf(const bvt &bv)
Definition minisat_conv.cpp:52
void convert(const bvt &bv, Minisat::vec< Lit > &dest)
Definition minisat_conv.cpp:26
bool false_asserted
Definition minisat_conv.h:54
shiftt
Definition minisat_conv.h:26
@ ARIGHT
Definition minisat_conv.h:29
@ LRIGHT
Definition minisat_conv.h:28
@ LEFT
Definition minisat_conv.h:27
Definition namespace.h:10
Definition options.h:11
bool int_encoding
Whether we are encoding expressions in integer mode or not.
Definition smt_solver.h:1121
Definition threeval.h:10
Minisat::Lit Lit
Definition minisat_conv.h:18
std::vector< literalt > bvt
Definition minisat_conv.h:20
Minisat::lbool lbool
Definition minisat_conv.h:19
smt_resultt
Result of a call to dec_solve.
Definition smt_result.h:7