3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-04-08 10:25:18 +00:00

ensure enode without recursion

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
Nikolaj Bjorner 2022-01-11 08:35:25 -08:00
parent 571a74c061
commit 055732423c
2 changed files with 4 additions and 0 deletions

View file

@ -1506,6 +1506,7 @@ void theory_seq::add_length(expr* l) {
Add length limit restrictions to sequence s.
*/
void theory_seq::add_length_limit(expr* s, unsigned k, bool is_searching) {
return;
if (m_sk.is_indexof_left(s))
return;
if (m_sk.is_indexof_right(s))
@ -3232,6 +3233,7 @@ void theory_seq::add_unhandled_expr(expr* n) {
void theory_seq::add_theory_assumptions(expr_ref_vector & assumptions) {
return;
if (m_has_seq) {
TRACE("seq", tout << "add_theory_assumption\n";);
expr_ref dlimit = m_sk.mk_max_unfolding_depth(m_max_unfolding_depth);

View file

@ -181,6 +181,8 @@ bool theory_user_propagator::internalize_atom(app* atom, bool gate_ctx) {
bool theory_user_propagator::internalize_term(app* term) {
for (auto arg : *term)
ensure_enode(arg);
if (term->get_family_id() == get_id() && !ctx.e_internalized(term))
ctx.mk_enode(term, true, false, true);
unsigned v = add_expr(term);
if (m_created_eh)
m_created_eh(m_user_context, this, term, v);