mirror of
https://github.com/Z3Prover/z3
synced 2025-04-29 20:05:51 +00:00
get_antecedent has to be well-founded. It got broken when using eval during propagation and egraph explain during conflict resolution.
This commit is contained in:
parent
d09abdf58e
commit
74824ac901
10 changed files with 53 additions and 4547 deletions
|
@ -243,11 +243,11 @@ namespace euf {
|
|||
m_egraph.explain_eq<size_t>(m_explain, a, b);
|
||||
}
|
||||
|
||||
void solver::add_diseq_antecedent(enode* a, enode* b) {
|
||||
sat::bool_var v = get_egraph().explain_diseq(m_explain, a, b);
|
||||
void solver::add_diseq_antecedent(ptr_vector<size_t>& ex, enode* a, enode* b) {
|
||||
sat::bool_var v = get_egraph().explain_diseq(ex, a, b);
|
||||
SASSERT(v == sat::null_bool_var || s().value(v) == l_false);
|
||||
if (v != sat::null_bool_var)
|
||||
m_explain.push_back(to_ptr(sat::literal(v, true)));
|
||||
ex.push_back(to_ptr(sat::literal(v, true)));
|
||||
}
|
||||
|
||||
bool solver::propagate(enode* a, enode* b, ext_justification_idx idx) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue