mirror of
https://github.com/Z3Prover/z3
synced 2025-05-09 08:45:47 +00:00
reset visited (fast mark) to not clash with occurs
This commit is contained in:
parent
6662afdd26
commit
59b7845c7d
4 changed files with 19 additions and 14 deletions
|
@ -80,18 +80,22 @@ namespace euf {
|
|||
};
|
||||
|
||||
for (unsigned i = m_qhead; i < sz; ++i) {
|
||||
auto [f,d] = m_fmls[i]();
|
||||
auto* n = mk_enode(f);
|
||||
if (m.is_eq(f)) {
|
||||
m_egraph.merge(n->get_arg(0), n->get_arg(1), d);
|
||||
add_children(n->get_arg(0));
|
||||
add_children(n->get_arg(1));
|
||||
expr* x, * y;
|
||||
auto [f, d] = m_fmls[i]();
|
||||
if (m.is_eq(f, x, y)) {
|
||||
enode* a = mk_enode(x);
|
||||
enode* b = mk_enode(y);
|
||||
m_egraph.merge(a, b, d);
|
||||
add_children(a);
|
||||
add_children(b);
|
||||
}
|
||||
if (m.is_not(f)) {
|
||||
m_egraph.merge(n->get_arg(0), m_ff, d);
|
||||
add_children(n->get_arg(0));
|
||||
else if (m.is_not(f, f)) {
|
||||
enode* n = mk_enode(f);
|
||||
m_egraph.merge(n, m_ff, d);
|
||||
add_children(n);
|
||||
}
|
||||
else {
|
||||
enode* n = mk_enode(f);
|
||||
m_egraph.merge(n, m_tt, d);
|
||||
add_children(n);
|
||||
}
|
||||
|
|
|
@ -129,7 +129,8 @@ namespace euf {
|
|||
todo.push_back(var2id(e));
|
||||
}
|
||||
m_todo.reset();
|
||||
|
||||
visited.reset();
|
||||
|
||||
if (!is_safe) {
|
||||
todo.shrink(todo_sz);
|
||||
continue;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue