mirror of
https://github.com/Z3Prover/z3
synced 2025-04-23 09:05:31 +00:00
fix perf regression with negative polynomial normalization, adding new datatype plugin
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
parent
62f8cc1289
commit
fff54d5d08
14 changed files with 1207 additions and 39 deletions
|
@ -123,6 +123,8 @@ void asserted_formulas::set_eliminate_and(bool flag) {
|
|||
p.set_bool("arith_lhs", true);
|
||||
p.set_bool("sort_sums", true);
|
||||
p.set_bool("rewrite_patterns", true);
|
||||
p.set_bool("expand_eqs", m_params.m_arith_expand_eqs);
|
||||
p.set_bool("gcd_rounding", true);
|
||||
m_rewriter.updt_params(p);
|
||||
flush_cache();
|
||||
}
|
||||
|
|
|
@ -18,6 +18,7 @@ Revision History:
|
|||
--*/
|
||||
#include "smt/params/theory_arith_params.h"
|
||||
#include "smt/params/smt_params_helper.hpp"
|
||||
#include "ast/rewriter/arith_rewriter_params.hpp"
|
||||
|
||||
void theory_arith_params::updt_params(params_ref const & _p) {
|
||||
smt_params_helper p(_p);
|
||||
|
@ -36,6 +37,8 @@ void theory_arith_params::updt_params(params_ref const & _p) {
|
|||
m_arith_bound_prop = static_cast<bound_prop_mode>(p.arith_propagation_mode());
|
||||
m_arith_dump_lemmas = p.arith_dump_lemmas();
|
||||
m_arith_reflect = p.arith_reflect();
|
||||
arith_rewriter_params ap(_p);
|
||||
m_arith_expand_eqs = ap.expand_eqs();
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -437,10 +437,7 @@ namespace smt {
|
|||
ctx.set_conflict(ctx.mk_justification(ext_theory_conflict_justification(get_id(), r, 0, 0, m_used_eqs.size(), m_used_eqs.c_ptr())));
|
||||
TRACE("occurs_check",
|
||||
tout << "occurs_check: true\n";
|
||||
enode_pair_vector::const_iterator it = m_used_eqs.begin();
|
||||
enode_pair_vector::const_iterator end = m_used_eqs.end();
|
||||
for(; it != end; ++it) {
|
||||
enode_pair const & p = *it;
|
||||
for (enode_pair const& p : m_used_eqs) {
|
||||
tout << "eq: #" << p.first->get_owner_id() << " #" << p.second->get_owner_id() << "\n";
|
||||
tout << mk_bounded_pp(p.first->get_owner(), get_manager()) << " " << mk_bounded_pp(p.second->get_owner(), get_manager()) << "\n";
|
||||
});
|
||||
|
@ -613,11 +610,9 @@ namespace smt {
|
|||
d1->m_constructor = d2->m_constructor;
|
||||
}
|
||||
}
|
||||
ptr_vector<enode>::iterator it = d2->m_recognizers.begin();
|
||||
ptr_vector<enode>::iterator end = d2->m_recognizers.end();
|
||||
for (; it != end; ++it)
|
||||
if (*it)
|
||||
add_recognizer(v1, *it);
|
||||
for (enode* e : d2->m_recognizers)
|
||||
if (e)
|
||||
add_recognizer(v1, e);
|
||||
}
|
||||
|
||||
void theory_datatype::unmerge_eh(theory_var v1, theory_var v2) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue