mirror of
https://github.com/Z3Prover/z3
synced 2025-04-08 18:31:49 +00:00
using a queue for disequality propagaiton was a regression: values of numerals can change along the same stack so prior passing the filter does not mean it passes later.
This commit is contained in:
parent
79b4357442
commit
c41b6da6bb
|
@ -1114,12 +1114,11 @@ namespace arith {
|
|||
|
||||
bool solver::check_delayed_eqs() {
|
||||
bool found_diseq = false;
|
||||
if (m_delayed_eqs_qhead == m_delayed_eqs.size())
|
||||
if (m_delayed_eqs.empty())
|
||||
return true;
|
||||
force_push();
|
||||
ctx.push(value_trail<unsigned>(m_delayed_eqs_qhead));
|
||||
for (; m_delayed_eqs_qhead < m_delayed_eqs.size(); ++ m_delayed_eqs_qhead) {
|
||||
auto p = m_delayed_eqs[m_delayed_eqs_qhead];
|
||||
for (unsigned i; i < m_delayed_eqs.size(); ++i) {
|
||||
auto p = m_delayed_eqs[i];
|
||||
auto const& e = p.first;
|
||||
if (p.second)
|
||||
new_eq_eh(e);
|
||||
|
|
|
@ -218,7 +218,6 @@ namespace arith {
|
|||
svector<euf::enode_pair> m_equalities; // asserted rows corresponding to equalities.
|
||||
svector<theory_var> m_definitions; // asserted rows corresponding to definitions
|
||||
svector<std::pair<euf::th_eq, bool>> m_delayed_eqs;
|
||||
unsigned m_delayed_eqs_qhead = 0;
|
||||
|
||||
literal_vector m_asserted;
|
||||
expr* m_not_handled{ nullptr };
|
||||
|
|
Loading…
Reference in a new issue