3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-11-14 01:51:16 +00:00

find_op_by_result_var

This commit is contained in:
Jakob Rath 2023-03-12 16:14:12 +01:00
parent 9a061d8f4a
commit be72a37440
2 changed files with 14 additions and 1 deletions

View file

@ -431,6 +431,13 @@ namespace polysat {
return { dedup_find(&tmp), true };
}
signed_constraint constraint_manager::find_op_by_result_var(pvar r) const {
auto it = m_dedup.op_constraint_by_result_var.find_iterator(r);
if (it == m_dedup.op_constraint_by_result_var.end())
return {};
return it->m_value;
}
pdd constraint_manager::mk_op_term(op_constraint::code op, pdd const& p, pdd const& q) {
auto& m = p.manager();
unsigned sz = m.power_of_2();
@ -443,7 +450,11 @@ namespace polysat {
pdd r = m.mk_var(s.add_var(sz));
m_dedup.op_constraint_expr.insert(args, r.var());
s.add_clause(mk_op_constraint(op, p, q, r), false);
signed_constraint c = mk_op_constraint(op, p, q, r);
SASSERT(!m_dedup.op_constraint_by_result_var.contains(r.var()));
m_dedup.op_constraint_by_result_var.insert(r.var(), c);
s.add_clause(c, false);
return r;
}