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

fix #2957 - arrays are treated as values

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
Nikolaj Bjorner 2020-02-18 16:35:13 -08:00
parent c428db0bf2
commit 2882a6708e
2 changed files with 9 additions and 8 deletions

View file

@ -344,13 +344,14 @@ expr * func_interp::get_interp_core() const {
expr * cond = mk_and(m_manager, eqs.size(), eqs.c_ptr());
expr * th = curr->get_result();
if (m_manager.is_true(th)) {
r = m_manager.mk_or(cond, r);
r = m_manager.is_false(r) ? cond : m_manager.mk_or(cond, r);
}
else if (m_manager.is_false(th)) {
r = m_manager.mk_and(m_manager.mk_not(cond), r);
expr* ncond = m_manager.mk_not(cond);
r = m_manager.is_true(r) ? ncond : m_manager.mk_and(ncond, r);
}
else {
r = m_manager.mk_ite(cond, th, r);
r = th == r ? r : m_manager.mk_ite(cond, th, r);
}
}
return r;