From cbb280d2b7ed782621eb8dc611101d362113d144 Mon Sep 17 00:00:00 2001 From: Jakob Rath Date: Fri, 22 Dec 2023 11:52:35 +0100 Subject: [PATCH] Use bv.solver parameter --- src/sat/smt/bv_delay_internalize.cpp | 2 +- src/sat/smt/bv_solver.h | 2 +- src/sat/smt/euf_solver.cpp | 2 +- src/smt/params/smt_params_helper.pyg | 3 +-- src/smt/params/theory_bv_params.cpp | 2 -- src/smt/params/theory_bv_params.h | 1 - 6 files changed, 4 insertions(+), 8 deletions(-) diff --git a/src/sat/smt/bv_delay_internalize.cpp b/src/sat/smt/bv_delay_internalize.cpp index 8abb0fe10..417b9a43a 100644 --- a/src/sat/smt/bv_delay_internalize.cpp +++ b/src/sat/smt/bv_delay_internalize.cpp @@ -413,7 +413,7 @@ namespace bv { solver::internalize_mode solver::get_internalize_mode(expr* e) { if (!reflect()) return internalize_mode::no_delay_i; - if (get_config().m_bv_polysat) + if (use_polysat()) return internalize_mode::polysat_i; if (!bv.is_bv(e)) return internalize_mode::no_delay_i; diff --git a/src/sat/smt/bv_solver.h b/src/sat/smt/bv_solver.h index 308c92ed5..e21f78d35 100644 --- a/src/sat/smt/bv_solver.h +++ b/src/sat/smt/bv_solver.h @@ -349,7 +349,7 @@ namespace bv { void polysat_add_value(euf::enode* n, model& mdl, expr_ref_vector& values); lbool polysat_final(); void polysat_display(std::ostream& out) const; - bool use_polysat() const { return get_config().m_bv_polysat; } + bool use_polysat() const { return get_config().m_bv_solver == 1; } vector m_var2pdd; bool_vector m_var2pdd_valid; unsigned_vector m_pddvar2var; diff --git a/src/sat/smt/euf_solver.cpp b/src/sat/smt/euf_solver.cpp index ff11b0749..c98ae3bf1 100644 --- a/src/sat/smt/euf_solver.cpp +++ b/src/sat/smt/euf_solver.cpp @@ -139,7 +139,7 @@ namespace euf { if (get_config().m_bv_solver == 0) ext = alloc(bv::solver, *this, fid); else if (get_config().m_bv_solver == 1) - throw default_exception("polysat solver is not integrated"); + ext = alloc(bv::solver, *this, fid); // old polysat solver is part of BV solver else if (get_config().m_bv_solver == 2) ext = alloc(intblast::solver, *this); else diff --git a/src/smt/params/smt_params_helper.pyg b/src/smt/params/smt_params_helper.pyg index 725ee1ef1..b882c1abf 100644 --- a/src/smt/params/smt_params_helper.pyg +++ b/src/smt/params/smt_params_helper.pyg @@ -53,9 +53,8 @@ def_module_params(module_name='smt', ('bv.enable_int2bv', BOOL, True, 'enable support for int2bv and bv2int operators'), ('bv.watch_diseq', BOOL, False, 'use watch lists instead of eager axioms for bit-vectors'), ('bv.delay', BOOL, False, 'delay internalize expensive bit-vector operations'), - ('bv.polysat', BOOL, True, 'use polysat bit-vector solver'), ('bv.size_reduce', BOOL, False, 'pre-processing; turn assertions that set the upper bits of a bit-vector to constants into a substitution that replaces the bit-vector with constant bits. Useful for minimizing circuits as many input bits to circuits are constant'), - ('bv.solver', UINT, 0, 'bit-vector solver engine: 0 - bit-blasting, 1 - polysat, 2 - intblast, requires sat.smt=true'), + ('bv.solver', UINT, 1, 'bit-vector solver engine: 0 - bit-blasting, 1 - polysat, 2 - intblast, requires sat.smt=true'), ('arith.random_initial_value', BOOL, False, 'use random initial values in the simplex-based procedure for linear arithmetic'), ('arith.solver', UINT, 6, 'arithmetic solver: 0 - no solver, 1 - bellman-ford based solver (diff. logic only), 2 - simplex based solver, 3 - floyd-warshall based solver (diff. logic only) and no theory combination 4 - utvpi, 5 - infinitary lra, 6 - lra solver'), ('arith.nl', BOOL, True, '(incomplete) nonlinear arithmetic support based on Groebner basis and interval propagation, relevant only if smt.arith.solver=2'), diff --git a/src/smt/params/theory_bv_params.cpp b/src/smt/params/theory_bv_params.cpp index c81f50a74..8a3ddcf37 100644 --- a/src/smt/params/theory_bv_params.cpp +++ b/src/smt/params/theory_bv_params.cpp @@ -27,7 +27,6 @@ void theory_bv_params::updt_params(params_ref const & _p) { m_bv_reflect = p.bv_reflect(); m_bv_enable_int2bv2int = p.bv_enable_int2bv(); m_bv_delay = p.bv_delay(); - m_bv_polysat = p.bv_polysat(); m_bv_size_reduce = p.bv_size_reduce(); m_bv_solver = p.bv_solver(); } @@ -43,7 +42,6 @@ void theory_bv_params::display(std::ostream & out) const { DISPLAY_PARAM(m_bv_blast_max_size); DISPLAY_PARAM(m_bv_enable_int2bv2int); DISPLAY_PARAM(m_bv_delay); - DISPLAY_PARAM(m_bv_polysat); DISPLAY_PARAM(m_bv_size_reduce); DISPLAY_PARAM(m_bv_solver); } diff --git a/src/smt/params/theory_bv_params.h b/src/smt/params/theory_bv_params.h index 16bd4a03c..97428c8ba 100644 --- a/src/smt/params/theory_bv_params.h +++ b/src/smt/params/theory_bv_params.h @@ -35,7 +35,6 @@ struct theory_bv_params { bool m_bv_enable_int2bv2int = true; bool m_bv_watch_diseq = false; bool m_bv_delay = true; - bool m_bv_polysat = false; bool m_bv_size_reduce = false; unsigned m_bv_solver = 0; theory_bv_params(params_ref const & p = params_ref()) {