mirror of
https://github.com/Z3Prover/z3
synced 2025-05-09 00:35:47 +00:00
Z3 sources
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
This commit is contained in:
parent
3f9edad676
commit
e9eab22e5c
1186 changed files with 381859 additions and 0 deletions
82
lib/params2front_end_params.cpp
Normal file
82
lib/params2front_end_params.cpp
Normal file
|
@ -0,0 +1,82 @@
|
|||
/*++
|
||||
Copyright (c) 2011 Microsoft Corporation
|
||||
|
||||
Module Name:
|
||||
|
||||
params2front_end_params.h
|
||||
|
||||
Abstract:
|
||||
|
||||
Backward compatibility utilities for parameter setting
|
||||
|
||||
Author:
|
||||
|
||||
Leonardo de Moura (leonardo) 2011-05-19.
|
||||
|
||||
Revision History:
|
||||
|
||||
--*/
|
||||
#include"front_end_params.h"
|
||||
#include"params.h"
|
||||
|
||||
/**
|
||||
Update front_end_params using s.
|
||||
Only the most frequently used options are updated.
|
||||
|
||||
This function is mainly used to allow smt::context to be used in
|
||||
the new strategy framework.
|
||||
*/
|
||||
void params2front_end_params(params_ref const & s, front_end_params & t) {
|
||||
t.m_quant_elim = s.get_bool(":elim-quant", t.m_quant_elim);
|
||||
t.m_relevancy_lvl = s.get_uint(":relevancy", t.m_relevancy_lvl);
|
||||
TRACE("qi_cost", s.display(tout); tout << "\n";);
|
||||
t.m_qi_cost = s.get_str(":qi-cost", t.m_qi_cost.c_str());
|
||||
t.m_mbqi = s.get_bool(":mbqi", t.m_mbqi);
|
||||
t.m_mbqi_max_iterations = s.get_uint(":mbqi-max-iterations", t.m_mbqi_max_iterations);
|
||||
t.m_random_seed = s.get_uint(":random-seed", t.m_random_seed);
|
||||
t.m_model = s.get_bool(":produce-models", t.m_model);
|
||||
if (s.get_bool(":produce-proofs", false))
|
||||
t.m_proof_mode = PGM_FINE;
|
||||
t.m_well_sorted_check = s.get_bool(":check-sorts", t.m_well_sorted_check);
|
||||
t.m_qi_eager_threshold = s.get_double(":qi-eager-threshold", t.m_qi_eager_threshold);
|
||||
t.m_qi_lazy_threshold = s.get_double(":qi-lazy-threshold", t.m_qi_lazy_threshold);
|
||||
t.m_solver = s.get_bool(":solver", t.m_solver);
|
||||
t.m_preprocess = s.get_bool(":preprocess", t.m_preprocess);
|
||||
t.m_hi_div0 = s.get_bool(":hi-div0", t.m_hi_div0);
|
||||
t.m_auto_config = s.get_bool(":auto-config", t.m_auto_config);
|
||||
t.m_array_simplify = s.get_bool(":array-old-simplifier", t.m_array_simplify);
|
||||
t.m_arith_branch_cut_ratio = s.get_uint(":arith-branch-cut-ratio", t.m_arith_branch_cut_ratio);
|
||||
t.m_arith_expand_eqs = s.get_bool(":arith-expand-eqs", t.m_arith_expand_eqs);
|
||||
|
||||
if (s.get_bool(":arith-greatest-error-pivot", false))
|
||||
t.m_arith_pivot_strategy = ARITH_PIVOT_GREATEST_ERROR;
|
||||
else if (s.get_bool(":arith-least-error-pivot", false))
|
||||
t.m_arith_pivot_strategy = ARITH_PIVOT_LEAST_ERROR;
|
||||
}
|
||||
|
||||
/**
|
||||
\brief Copy parameters (from s) that affect the semantics of Z3 (e.g., HI_DIV0).
|
||||
It also copies the model construction parameter. Thus, model construction
|
||||
can be enabled at the command line.
|
||||
*/
|
||||
void front_end_params2params(front_end_params const & s, params_ref & t) {
|
||||
if (s.m_model)
|
||||
t.set_bool(":produce-models", true);
|
||||
if (!s.m_hi_div0)
|
||||
t.set_bool(":hi-div0", false);
|
||||
}
|
||||
|
||||
/**
|
||||
\brief Bridge for using params_ref with smt::context.
|
||||
*/
|
||||
void solver_front_end_params_descrs(param_descrs & r) {
|
||||
r.insert(":hi-div0", CPK_BOOL, "(default: true) if true, then Z3 uses the usual hardware interpretation for division (rem, mod) by zero. Otherwise, these operations are considered uninterpreted");
|
||||
r.insert(":relevancy", CPK_UINT, "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");
|
||||
r.insert(":mbqi", CPK_BOOL, "model based quantifier instantiation (MBQI)");
|
||||
r.insert(":mbqi-max-iterations", CPK_UINT, "maximum number of rounds of MBQI");
|
||||
r.insert(":random-seed", CPK_UINT, "random seed for smt solver");
|
||||
r.insert(":qi-eager-threshold", CPK_DOUBLE, "threshold for eager quantifier instantiation");
|
||||
r.insert(":qi-lazy-threshold", CPK_DOUBLE, "threshold for lazy quantifier instantiation");
|
||||
r.insert(":auto_config", CPK_BOOL, "use heuristics to automatically configure smt solver");
|
||||
r.insert(":arith-branch-cut-ratio", CPK_UINT, "branch&bound / gomory cut ratio");
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue