From d642d5fe4c06d1edd6dc7883161bdcf5277f4489 Mon Sep 17 00:00:00 2001 From: Nuno Lopes Date: Thu, 25 Feb 2016 09:47:51 +0000 Subject: [PATCH] API: add smt.logic parameter to enable setting the logic through the API currently only Z3_solver_set_params() is supported logic has to be set before solver first usage or before solver reset --- src/api/api_solver.cpp | 5 +++++ src/smt/params/smt_params_helper.pyg | 1 + 2 files changed, 6 insertions(+) diff --git a/src/api/api_solver.cpp b/src/api/api_solver.cpp index 94e91ae05..be03e5daf 100644 --- a/src/api/api_solver.cpp +++ b/src/api/api_solver.cpp @@ -153,6 +153,11 @@ extern "C" { LOG_Z3_solver_set_params(c, s, p); RESET_ERROR_CODE(); + symbol logic = to_param_ref(p).get_sym("smt.logic", symbol::null); + if (logic != symbol::null) { + to_solver(s)->m_logic = logic; + } + if (to_solver(s)->m_solver) { bool old_model = to_solver(s)->m_params.get_bool("model", true); bool new_model = to_param_ref(p).get_bool("model", true); diff --git a/src/smt/params/smt_params_helper.pyg b/src/smt/params/smt_params_helper.pyg index a1a38babf..a9f6ccc18 100644 --- a/src/smt/params/smt_params_helper.pyg +++ b/src/smt/params/smt_params_helper.pyg @@ -3,6 +3,7 @@ def_module_params(module_name='smt', description='smt solver based on lazy smt', export=True, params=(('auto_config', BOOL, True, 'automatically configure solver'), + ('logic', SYMBOL, '', 'logic used to setup the SMT solver'), ('random_seed', UINT, 0, 'random seed for the smt solver'), ('relevancy', UINT, 2, 'relevancy propagation heuristic: 0 - disabled, 1 - relevancy is tracked by only affects quantifier instantiation, 2 - relevancy is tracked, and an atom is only asserted if it is relevant'), ('macro_finder', BOOL, False, 'try to find universally quantified formulas that can be viewed as macros'),