|
12 | 12 |
|
13 | 13 | #include <solvers/flattening/boolbv.h> |
14 | 14 | #include <solvers/prop/prop.h> |
15 | | -#include <solvers/sat/satcheck.h> |
| 15 | +#include <solvers/sat/satcheck_cadical.h> |
| 16 | +#include <solvers/sat/satcheck_minisat2.h> |
16 | 17 | #include <solvers/smt2/smt2_dec.h> |
17 | 18 |
|
18 | 19 | #include "ebmc_error.h" |
@@ -136,17 +137,25 @@ ebmc_solver_factoryt ebmc_solver_factory(const cmdlinet &cmdline) |
136 | 137 | else |
137 | 138 | { |
138 | 139 | // the 'default' solver |
139 | | - return [](const namespacet &ns, message_handlert &message_handler) |
| 140 | + return [&cmdline](const namespacet &ns, message_handlert &message_handler) |
140 | 141 | { |
141 | | - auto prop = std::unique_ptr<propt>(new satcheckt{message_handler}); |
| 142 | + std::unique_ptr<propt> sat_solver; |
| 143 | + |
| 144 | + if(cmdline.isset("cadical")) |
| 145 | + sat_solver = |
| 146 | + std::unique_ptr<propt>(new satcheck_cadicalt{message_handler}); |
| 147 | + else |
| 148 | + sat_solver = std::unique_ptr<propt>( |
| 149 | + new satcheck_minisat_simplifiert{message_handler}); |
142 | 150 |
|
143 | 151 | messaget message(message_handler); |
144 | | - message.status() << "Using " << prop->solver_text() << messaget::eom; |
| 152 | + message.status() << "Using " << sat_solver->solver_text() |
| 153 | + << messaget::eom; |
145 | 154 |
|
146 | 155 | auto dec = std::unique_ptr<stack_decision_proceduret>( |
147 | | - new boolbvt{ns, *prop, message_handler}); |
| 156 | + new boolbvt{ns, *sat_solver, message_handler}); |
148 | 157 |
|
149 | | - return ebmc_solvert{std::move(prop), std::move(dec)}; |
| 158 | + return ebmc_solvert{std::move(sat_solver), std::move(dec)}; |
150 | 159 | }; |
151 | 160 | } |
152 | 161 | } |
0 commit comments