3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-08-26 21:16:02 +00:00
This commit is contained in:
Nikolaj Bjorner 2024-06-12 08:50:24 -07:00
parent 49610f5159
commit b831a589e5
8 changed files with 47 additions and 9 deletions

View file

@ -43,6 +43,13 @@ namespace euf {
m_proof_initialized = true;
}
enode_pair solver::get_justification_eq(size_t j) {
auto* ext = sat::constraint_base::to_extension(j);
SASSERT(ext != this);
auto s = fid2solver(ext->get_id());
return s->get_justification_eq(j);
}
/**
* Log justifications.
* is_euf - true if l is justified by congruence closure. In this case create a congruence closure proof.
@ -63,7 +70,8 @@ namespace euf {
if (is_literal(e))
m_hint_lits.push_back(get_literal(e));
else {
auto [x, y] = th_explain::from_index(get_justification(e)).eq_consequent();
SASSERT(is_justification(e));
auto [x, y] = get_justification_eq(get_justification(e));
eqs.push_back(m.mk_eq(x->get_expr(), y->get_expr()));
set_tmp_bool_var(nv, eqs.back());
m_hint_lits.push_back(literal(nv, false));