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:
parent
7823117776
commit
000e485794
25 changed files with 706 additions and 572 deletions
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue