3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-04-24 01:25:31 +00:00

create special case for osx arm

shortcut when store/select are distinct

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
Nikolaj Bjorner 2022-08-03 07:36:39 +03:00
parent 42f5047463
commit 774ce3d7ab
3 changed files with 12 additions and 3 deletions

View file

@ -91,9 +91,9 @@ namespace smt {
d->m_parent_selects.push_back(s);
TRACE("array", tout << v << " " << mk_pp(s->get_expr(), m) << " " << mk_pp(get_enode(v)->get_expr(), m) << "\n";);
m_trail_stack.push(push_back_trail<enode *, false>(d->m_parent_selects));
for (enode* n : d->m_stores) {
for (enode* n : d->m_stores)
instantiate_axiom2a(s, n);
}
if (!m_params.m_array_delay_exp_axiom && d->m_prop_upward) {
for (enode* store : d->m_parent_stores) {
SASSERT(is_store(store));

View file

@ -179,6 +179,12 @@ namespace smt {
conseq_expr = ctx.bool_var2expr(conseq.var());
}
if (m.are_distinct(idx1->get_expr(), idx2->get_expr())) {
ctx.mark_as_relevant(conseq);
assert_axiom(conseq);
continue;
}
literal ante = mk_eq(idx1->get_expr(), idx2->get_expr(), true);
ctx.mark_as_relevant(ante);
// ctx.force_phase(ante);