mirror of
https://github.com/Z3Prover/z3
synced 2025-08-15 15:25:26 +00:00
add array selects to basic ackerman reduction improves performance significantly for #2525 as it now uses the SAT solver core instead of SMT core
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
parent
7823117776
commit
000e485794
25 changed files with 706 additions and 572 deletions
|
@ -152,8 +152,7 @@ public:
|
|||
for (unsigned i = lo; i < hi; ++i) {
|
||||
checkpoint();
|
||||
|
||||
std::string name(x->get_decl()->get_name().str());
|
||||
expr_ref v(m.mk_fresh_const(name.c_str(), m.mk_bool_sort()), m);
|
||||
expr_ref v(m.mk_fresh_const(x->get_decl()->get_name(), m.mk_bool_sort()), m);
|
||||
if (last_v) axioms.push_back(m.mk_implies(v, last_v));
|
||||
xs.push_back(m.mk_ite(v, a.mk_int(1), a.mk_int(0)));
|
||||
m_mc->hide(v);
|
||||
|
|
|
@ -238,8 +238,7 @@ class nla2bv_tactic : public tactic {
|
|||
set_satisfiability_preserving(false);
|
||||
}
|
||||
bv_sort = m_bv.mk_sort(num_bits);
|
||||
std::string name = n->get_decl()->get_name().str();
|
||||
s_bv = m_manager.mk_fresh_const(name.c_str(), bv_sort);
|
||||
s_bv = m_manager.mk_fresh_const(n->get_decl()->get_name(), bv_sort);
|
||||
m_fmc->hide(s_bv);
|
||||
s_bv = m_bv.mk_bv2int(s_bv);
|
||||
if (low) {
|
||||
|
@ -275,9 +274,9 @@ class nla2bv_tactic : public tactic {
|
|||
bv_sort = m_bv.mk_sort(m_num_bits);
|
||||
set_satisfiability_preserving(false);
|
||||
std::string name = n->get_decl()->get_name().str();
|
||||
s = m_manager.mk_fresh_const(name.c_str(), bv_sort);
|
||||
s = m_manager.mk_fresh_const(name, bv_sort);
|
||||
name += "_r";
|
||||
t = m_manager.mk_fresh_const(name.c_str(), bv_sort);
|
||||
t = m_manager.mk_fresh_const(name, bv_sort);
|
||||
m_fmc->hide(s);
|
||||
m_fmc->hide(t);
|
||||
s_bv = m_bv2real.mk_bv2real(s, t);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue