From 9a34ee95b170e838f9f710b0cdcf15aa2302e1bf Mon Sep 17 00:00:00 2001 From: adelaett <90894311+adelaett@users.noreply.github.com> Date: Fri, 17 Mar 2023 17:20:35 +0100 Subject: [PATCH] equality program --- compiler/shared_ast/program.ml | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/compiler/shared_ast/program.ml b/compiler/shared_ast/program.ml index f75c6dd1..885ba817 100644 --- a/compiler/shared_ast/program.ml +++ b/compiler/shared_ast/program.ml @@ -58,14 +58,23 @@ let rec all_scopes code_item_list = let to_expr p main_scope = let _, main_scope_body = find_scope main_scope [] p.code_items in - Scope.unfold p.decl_ctx p.code_items - (Scope.get_body_mark main_scope_body) - (ScopeName main_scope) + + let res = + Scope.unfold p.decl_ctx p.code_items + (Scope.get_body_mark main_scope_body) + (ScopeName main_scope) + in + assert (Bindlib.is_closed (Expr.Box.lift res)); + res let equal p p' = let ss = all_scopes p.code_items in let ss' = all_scopes p'.code_items in + ListLabels.for_all2 ss ss' ~f:(fun s s' -> ScopeName.equal s s' - && Expr.equal (Expr.unbox @@ to_expr p s) (Expr.unbox @@ to_expr p' s)) + && + let e1 = Expr.unbox @@ to_expr p s in + let e2 = Expr.unbox @@ to_expr p s' in + Expr.equal e1 e2)