3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-04-23 17:15:31 +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:
Nikolaj Bjorner 2019-09-01 12:17:10 -07:00
parent 7823117776
commit 000e485794
25 changed files with 706 additions and 572 deletions

View file

@ -816,7 +816,7 @@ expr_ref model_evaluator::eval(const model_ref& model, expr* e){
args.resize(1);
args[0] = result;
args.append(stores[i]);
result = m_array.mk_store(args.size(), args.c_ptr());
result = m_array.mk_store(args);
}
return result;
}

View file

@ -153,8 +153,8 @@ void model_evaluator_array_util::eval_array_eq(model& mdl, app* e, expr* arg1, e
args2.resize(1);
args1.append(store[i].size()-1, store[i].c_ptr());
args2.append(store[i].size()-1, store[i].c_ptr());
s1 = m_array.mk_select(args1.size(), args1.c_ptr());
s2 = m_array.mk_select(args2.size(), args2.c_ptr());
s1 = m_array.mk_select(args1);
s2 = m_array.mk_select(args2);
eval (mdl, s1, w1);
eval (mdl, s2, w2);
if (w1 == w2) {
@ -207,7 +207,7 @@ void model_evaluator_array_util::eval(model& mdl, expr* e, expr_ref& r, bool mod
args.resize(1);
args[0] = r;
args.append(stores[i]);
r = m_array.mk_store(args.size(), args.c_ptr());
r = m_array.mk_store(args);
}
return;
}

View file

@ -170,7 +170,7 @@ void peq::mk_eq (app_ref_vector& aux_consts, app_ref& result, bool stores_on_rhs
store_args.push_back (rhs);
store_args.push_back (*it);
store_args.push_back (val);
rhs = m_arr_u.mk_store (store_args.size (), store_args.c_ptr ());
rhs = m_arr_u.mk_store (store_args);
aux_consts.push_back (val);
}
m_eq = m.mk_eq (lhs, rhs);