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:
parent
c428db0bf2
commit
2882a6708e
2 changed files with 9 additions and 8 deletions
|
@ -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;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue