mirror of
https://github.com/Z3Prover/z3
synced 2025-04-12 04:03:39 +00:00
compress store array before model-eval rewriter sees it
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
parent
fe1622b592
commit
72ae161307
|
@ -394,11 +394,16 @@ namespace sls {
|
||||||
// TODO: adapt to handle "const" arrays and multi-dimensional arrays.
|
// TODO: adapt to handle "const" arrays and multi-dimensional arrays.
|
||||||
auto& kv = *m_kv;
|
auto& kv = *m_kv;
|
||||||
auto n = m_g->find(e)->get_root();
|
auto n = m_g->find(e)->get_root();
|
||||||
expr_ref r(n->get_expr(), m);
|
expr_ref r(n->get_expr(), m), key(m);
|
||||||
|
expr_mark visited;
|
||||||
for (auto [k, v] : kv[n]) {
|
for (auto [k, v] : kv[n]) {
|
||||||
ptr_vector<expr> args;
|
ptr_vector<expr> args;
|
||||||
|
key = ctx.get_value(k.sel->get_arg(1)->get_expr());
|
||||||
|
if (visited.is_marked(key))
|
||||||
|
continue;
|
||||||
|
visited.mark(key);
|
||||||
args.push_back(r);
|
args.push_back(r);
|
||||||
args.push_back(k.sel->get_arg(1)->get_expr());
|
args.push_back(key);
|
||||||
args.push_back(v->get_expr());
|
args.push_back(v->get_expr());
|
||||||
r = a.mk_store(args);
|
r = a.mk_store(args);
|
||||||
}
|
}
|
||||||
|
|
|
@ -89,7 +89,7 @@ struct evaluator_cfg : public default_rewriter_cfg {
|
||||||
m_fpau(m),
|
m_fpau(m),
|
||||||
m_dt(m),
|
m_dt(m),
|
||||||
m_pinned(m) {
|
m_pinned(m) {
|
||||||
bool flat = true;
|
bool flat = false;
|
||||||
m_b_rw.set_flat_and_or(flat);
|
m_b_rw.set_flat_and_or(flat);
|
||||||
m_a_rw.set_flat(flat);
|
m_a_rw.set_flat(flat);
|
||||||
m_bv_rw.set_flat(flat);
|
m_bv_rw.set_flat(flat);
|
||||||
|
|
Loading…
Reference in a new issue