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:
parent
c2098b41d6
commit
85e7243108
2 changed files with 7 additions and 3 deletions
|
@ -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;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue