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

#5778 - missed tracking literal assignment justification

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
Nikolaj Bjorner 2022-03-21 10:15:00 -07:00
parent 00608cd719
commit 20bd59bb20
5 changed files with 31 additions and 12 deletions

View file

@ -190,8 +190,9 @@ namespace euf {
m_egraph.set_bool_var(n, v);
if (m.is_eq(e) || m.is_or(e) || m.is_and(e) || m.is_not(e))
m_egraph.set_merge_enabled(n, false);
if (s().value(lit) != l_undef)
m_egraph.set_value(n, s().value(lit));
lbool val = s().value(lit);
if (val != l_undef)
m_egraph.set_value(n, val, justification::external(to_ptr(val == l_true ? lit : ~lit)));
return lit;
}

View file

@ -309,7 +309,7 @@ namespace euf {
if (!n)
return;
bool sign = l.sign();
m_egraph.set_value(n, sign ? l_false : l_true);
m_egraph.set_value(n, sign ? l_false : l_true, justification::external(to_ptr(l)));
for (auto const& th : enode_th_vars(n))
m_id2solver[th.get_id()]->asserted(l);