From bcad4d94358b89995f6d538512dbe90817bc50d9 Mon Sep 17 00:00:00 2001
From: Nuno Lopes <nlopes@microsoft.com>
Date: Wed, 17 Feb 2021 14:29:07 +0000
Subject: [PATCH] revert my mess with the ast hashtable will share results form
 the experiments later

---
 src/api/api_ast.cpp       | 2 +-
 src/api/api_context.cpp   | 2 +-
 src/ast/ast.h             | 2 ++
 src/ast/ast_translation.h | 4 ++--
 4 files changed, 6 insertions(+), 4 deletions(-)

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<typename T>
     T * translate(T const * n) { 
         if (&from() == &to()) return const_cast<T*>(n);
-        // A Valentine? SASSERT(!n || from().contains(const_cast<T*>(n)));
+        SASSERT(!n || from().contains(const_cast<T*>(n)));
         ast * r = process(n);
-        // Pretty please SASSERT((!n && !r) || to().contains(const_cast<ast*>(r)));
+        SASSERT((!n && !r) || to().contains(const_cast<ast*>(r)));
         return static_cast<T*>(r);
     }