diff --git a/src/api/api_solver.cpp b/src/api/api_solver.cpp index a26fff388..18402b49b 100644 --- a/src/api/api_solver.cpp +++ b/src/api/api_solver.cpp @@ -35,6 +35,7 @@ Revision History: #include "smt/smt_implied_equalities.h" #include "solver/smt_logics.h" #include "solver/tactic2solver.h" +#include "solver/solver_params.hpp" #include "cmd_context/cmd_context.h" #include "parsers/smt2/smt2parser.h" #include "sat/dimacs.h" @@ -548,7 +549,10 @@ extern "C" { } } expr * const * _assumptions = to_exprs(num_assumptions, assumptions); - unsigned timeout = to_solver(s)->m_params.get_uint("timeout", mk_c(c)->get_timeout()); + solver_params sp(to_solver(s)->m_params); + unsigned timeout = mk_c(c)->get_timeout(); + timeout = to_solver(s)->m_params.get_uint("timeout", timeout); + timeout = sp.timeout() != UINT_MAX ? sp.timeout() : timeout; unsigned rlimit = to_solver(s)->m_params.get_uint("rlimit", mk_c(c)->get_rlimit()); bool use_ctrl_c = to_solver(s)->m_params.get_bool("ctrl_c", true); cancel_eh<reslimit> eh(mk_c(c)->m().limit()); diff --git a/src/solver/solver.cpp b/src/solver/solver.cpp index ebb8e1723..36a0dd80c 100644 --- a/src/solver/solver.cpp +++ b/src/solver/solver.cpp @@ -226,8 +226,8 @@ void solver::assert_expr(expr* f, expr* t) { void solver::collect_param_descrs(param_descrs & r) { - r.insert("solver.enforce_model_conversion", CPK_BOOL, "(default: false) enforce model conversion when asserting formulas"); - r.insert("solver.smtlib2_log", CPK_SYMBOL, "(default: None) file to log solver interaction in smtlib2 format"); + solver_params sp(m_params); + sp.collect_param_descrs(r); insert_timeout(r); insert_rlimit(r); insert_max_memory(r); diff --git a/src/solver/solver_params.pyg b/src/solver/solver_params.pyg index 04ffaf1c6..b852afbaa 100644 --- a/src/solver/solver_params.pyg +++ b/src/solver/solver_params.pyg @@ -5,5 +5,6 @@ def_module_params('solver', params=(('enforce_model_conversion', BOOL, False, "apply model transformation on new assertions"), ('smtlib2_log', SYMBOL, '', "file to save solver interaction"), ('cancel_backup_file', SYMBOL, '', "file to save partial search state if search is canceled"), + ('timeout', UINT, UINT_MAX, "timeout on the solver object; overwrites a global timeout"), ))