diff --git a/src/api/api_ast.cpp b/src/api/api_ast.cpp index 749620063..15bf13911 100644 --- a/src/api/api_ast.cpp +++ b/src/api/api_ast.cpp @@ -1323,7 +1323,7 @@ extern "C" { SET_ERROR_CODE(Z3_INVALID_ARG, nullptr); RETURN_Z3(nullptr); } - // yo! SASSERT(mk_c(c)->m().contains(to_ast(a))); + SASSERT(mk_c(c)->m().contains(to_ast(a))); ast_translation translator(mk_c(c)->m(), mk_c(target)->m()); ast * _result = translator(to_ast(a)); mk_c(target)->save_ast_trail(_result); diff --git a/src/api/api_context.cpp b/src/api/api_context.cpp index 3f3b61cac..00f985deb 100644 --- a/src/api/api_context.cpp +++ b/src/api/api_context.cpp @@ -224,7 +224,7 @@ namespace api { void context::save_ast_trail(ast * n) { - // cherry on top? SASSERT(m().contains(n)); + SASSERT(m().contains(n)); if (m_user_ref_count) { // Corner case bug: n may be in m_last_result, and this is the only reference to n. // When, we execute reset() it is deleted diff --git a/src/ast/ast.h b/src/ast/ast.h index def06f906..2e054e371 100644 --- a/src/ast/ast.h +++ b/src/ast/ast.h @@ -1667,6 +1667,8 @@ public: bool are_equal(expr * a, expr * b) const; bool are_distinct(expr * a, expr * b) const; + + bool contains(ast * a) const { return m_ast_table.contains(a); } bool is_lambda_def(quantifier* q) const { return q->get_qid() == m_lambda_def; } void add_lambda_def(func_decl* f, quantifier* q); diff --git a/src/ast/ast_translation.h b/src/ast/ast_translation.h index f2c110858..80defd112 100644 --- a/src/ast/ast_translation.h +++ b/src/ast/ast_translation.h @@ -76,9 +76,9 @@ public: template T * translate(T const * n) { if (&from() == &to()) return const_cast(n); - // A Valentine? SASSERT(!n || from().contains(const_cast(n))); + SASSERT(!n || from().contains(const_cast(n))); ast * r = process(n); - // Pretty please SASSERT((!n && !r) || to().contains(const_cast(r))); + SASSERT((!n && !r) || to().contains(const_cast(r))); return static_cast(r); }