@@ -32,6 +32,7 @@ Author: Daniel Kroening, Peter Schrammel
3232#include < solvers/sat/dimacs_cnf.h>
3333#include < solvers/sat/external_sat.h>
3434#include < solvers/sat/satcheck.h>
35+ #include < solvers/smt2_incremental/smt2_incremental_decision_procedure.h>
3536#include < solvers/strings/string_refinement.h>
3637
3738solver_factoryt::solver_factoryt (
@@ -140,6 +141,10 @@ std::unique_ptr<solver_factoryt::solvert> solver_factoryt::get_solver()
140141 }
141142 else if (options.get_bool_option (" refine-strings" ))
142143 return get_string_refinement ();
144+ const auto incremental_smt2_solver =
145+ options.get_option (" incremental-smt2-solver" );
146+ if (!incremental_smt2_solver.empty ())
147+ return get_incremental_smt2 (incremental_smt2_solver);
143148 if (options.get_bool_option (" smt2" ))
144149 return get_smt2 (get_smt2_solver_type ());
145150 return get_default ();
@@ -321,6 +326,16 @@ solver_factoryt::get_string_refinement()
321326 std::move (decision_procedure), std::move (prop));
322327}
323328
329+ std::unique_ptr<solver_factoryt::solvert>
330+ solver_factoryt::get_incremental_smt2 (std::string solver_command)
331+ {
332+ no_beautification ();
333+
334+ return util_make_unique<solvert>(
335+ util_make_unique<smt2_incremental_decision_proceduret>(
336+ std::move (solver_command)));
337+ }
338+
324339std::unique_ptr<solver_factoryt::solvert>
325340solver_factoryt::get_smt2 (smt2_dect::solvert solver)
326341{
0 commit comments