mirror of
https://github.com/Z3Prover/z3
synced 2025-04-07 18:05:21 +00:00
enable QF_UF mode use same parameters whether with or without static featues, #1141
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
parent
4b00bc636b
commit
1690febffd
|
@ -16,31 +16,31 @@ Author:
|
|||
Revision History:
|
||||
|
||||
--*/
|
||||
#include "smt/asserted_formulas.h"
|
||||
#include "util/warning.h"
|
||||
#include "ast/ast_ll_pp.h"
|
||||
#include "ast/ast_pp.h"
|
||||
#include "ast/for_each_expr.h"
|
||||
#include "ast/well_sorted.h"
|
||||
#include "ast/simplifier/arith_simplifier_plugin.h"
|
||||
#include "ast/simplifier/array_simplifier_plugin.h"
|
||||
#include "ast/simplifier/datatype_simplifier_plugin.h"
|
||||
#include "ast/simplifier/fpa_simplifier_plugin.h"
|
||||
#include "ast/simplifier/seq_simplifier_plugin.h"
|
||||
#include "ast/simplifier/bv_simplifier_plugin.h"
|
||||
#include "ast/for_each_expr.h"
|
||||
#include "ast/well_sorted.h"
|
||||
#include "ast/normal_forms/pull_quant.h"
|
||||
#include "ast/simplifier/pull_ite_tree.h"
|
||||
#include "ast/simplifier/push_app_ite.h"
|
||||
#include "smt/elim_term_ite.h"
|
||||
#include "ast/pattern/pattern_inference.h"
|
||||
#include "ast/normal_forms/nnf.h"
|
||||
#include "ast/simplifier/bv_elim.h"
|
||||
#include "ast/simplifier/inj_axiom.h"
|
||||
#include "ast/rewriter/der.h"
|
||||
#include "ast/simplifier/elim_bounds.h"
|
||||
#include "util/warning.h"
|
||||
#include "ast/simplifier/bit2int.h"
|
||||
#include "ast/normal_forms/pull_quant.h"
|
||||
#include "ast/normal_forms/nnf.h"
|
||||
#include "ast/pattern/pattern_inference.h"
|
||||
#include "ast/rewriter/der.h"
|
||||
#include "ast/rewriter/distribute_forall.h"
|
||||
#include "ast/macros/quasi_macros.h"
|
||||
#include "smt/asserted_formulas.h"
|
||||
#include "smt/elim_term_ite.h"
|
||||
|
||||
asserted_formulas::asserted_formulas(ast_manager & m, smt_params & p):
|
||||
m(m),
|
||||
|
@ -138,6 +138,8 @@ void asserted_formulas::set_eliminate_and(bool flag) {
|
|||
m_bsimp->set_eliminate_and(flag);
|
||||
}
|
||||
|
||||
#include "th_rewriter.h"
|
||||
|
||||
void asserted_formulas::assert_expr(expr * e, proof * _in_pr) {
|
||||
if (inconsistent())
|
||||
return;
|
||||
|
@ -161,6 +163,8 @@ void asserted_formulas::assert_expr(expr * e, proof * _in_pr) {
|
|||
}
|
||||
set_eliminate_and(false); // do not eliminate and before nnf.
|
||||
m_simplifier(r1, r2, pr2);
|
||||
th_rewriter rw(m);
|
||||
rw(r2);
|
||||
TRACE("assert_expr_bug", tout << "after...\n" << mk_pp(r1, m) << "\n";);
|
||||
if (m.proofs_enabled()) {
|
||||
if (e == r2)
|
||||
|
|
|
@ -53,7 +53,9 @@ namespace smt {
|
|||
// warning_msg("ignoring MODEL_COMPACT=true because it cannot be used with MBQI=true");
|
||||
// m_params.m_model_compact = false;
|
||||
// }
|
||||
TRACE("setup", tout << "configuring logical context, logic: " << m_logic << "\n";);
|
||||
TRACE("setup", tout << "configuring logical context, logic: " << m_logic << " " << cm << "\n";);
|
||||
|
||||
m_params.m_relevancy_lvl = 0;
|
||||
m_already_configured = true;
|
||||
|
||||
switch (cm) {
|
||||
|
@ -202,6 +204,9 @@ namespace smt {
|
|||
void setup::setup_QF_UF() {
|
||||
m_params.m_relevancy_lvl = 0;
|
||||
m_params.m_nnf_cnf = false;
|
||||
m_params.m_restart_strategy = RS_LUBY;
|
||||
m_params.m_phase_selection = PS_CACHING_CONSERVATIVE2;
|
||||
m_params.m_random_initial_activity = IA_RANDOM;
|
||||
}
|
||||
|
||||
void setup::setup_QF_BVRE() {
|
||||
|
@ -210,13 +215,9 @@ namespace smt {
|
|||
m_context.register_plugin(alloc(theory_seq, m_manager));
|
||||
}
|
||||
|
||||
void setup::setup_QF_UF(static_features const & st) {
|
||||
void setup::setup_QF_UF(static_features const & st) {
|
||||
check_no_arithmetic(st, "QF_UF");
|
||||
m_params.m_relevancy_lvl = 0;
|
||||
m_params.m_nnf_cnf = false;
|
||||
m_params.m_restart_strategy = RS_LUBY;
|
||||
m_params.m_phase_selection = PS_CACHING_CONSERVATIVE2;
|
||||
m_params.m_random_initial_activity = IA_RANDOM;
|
||||
setup_QF_UF();
|
||||
TRACE("setup",
|
||||
tout << "st.m_num_theories: " << st.m_num_theories << "\n";
|
||||
tout << "st.m_num_uninterpreted_functions: " << st.m_num_uninterpreted_functions << "\n";);
|
||||
|
@ -548,6 +549,7 @@ namespace smt {
|
|||
}
|
||||
|
||||
void setup::setup_QF_BV() {
|
||||
TRACE("setup", tout << "qf-bv\n";);
|
||||
m_params.m_relevancy_lvl = 0;
|
||||
m_params.m_arith_reflect = false;
|
||||
m_params.m_bv_cc = false;
|
||||
|
@ -877,7 +879,7 @@ namespace smt {
|
|||
void setup::setup_unknown() {
|
||||
static_features st(m_manager);
|
||||
st.collect(m_context.get_num_asserted_formulas(), m_context.get_asserted_formulas());
|
||||
|
||||
TRACE("setup", tout << "setup_unknown\n";);
|
||||
setup_arith();
|
||||
setup_arrays();
|
||||
setup_bv();
|
||||
|
@ -916,7 +918,7 @@ namespace smt {
|
|||
tout << "has fpa: " << st.m_has_fpa << "\n";
|
||||
tout << "has arrays: " << st.m_has_arrays << "\n";);
|
||||
|
||||
if (st.num_non_uf_theories() == 0) {
|
||||
if (st.num_non_uf_theories() == 0) {
|
||||
setup_QF_UF(st);
|
||||
return;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue