3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-08-02 17:30:23 +00:00

update add-term to avoid duplicating fresh aux-expr

This commit is contained in:
Nikolaj Bjorner 2025-05-20 14:22:03 -07:00
parent c2098b41d6
commit 85e7243108
2 changed files with 7 additions and 3 deletions

View file

@ -51,14 +51,18 @@ void theory_user_propagator::add_expr(expr* term, bool ensure_enode) {
expr* e = term;
ctx.get_rewriter()(e, r);
TRACE("user_propagate", tout << "add " << mk_bounded_pp(e, m) << "\n");
if (r != e) {
if (!is_ground(r)) {
if (m_add_expr_fresh.contains(term))
return;
m_add_expr_fresh.insert(term);
ctx.push_trail(insert_obj_trail(m_add_expr_fresh, term));
r = m.mk_fresh_const("aux-expr", e->get_sort());
expr_ref eq(m.mk_eq(r, e), m);
ctx.assert_expr(eq);
ctx.internalize_assertions();
e = r;
ctx.mark_as_relevant(eq.get());
}
e = r;
enode* n = ensure_enode ? this->ensure_enode(e) : ctx.get_enode(e);
if (is_attached_to_var(n))
return;