From b6be8a9e97d727dcb877cf4bb30ee790a25c955c Mon Sep 17 00:00:00 2001
From: Thibaut Benjamin <thibaut.benjamin@gmail.com>
Date: Wed, 16 Mar 2022 11:20:03 +0100
Subject: [PATCH] [e-acsl] fix typing bug with at translations

---
 .../e-acsl/src/analyses/bound_variables.ml        |  1 -
 .../e-acsl/src/code_generator/translate_ats.ml    | 15 ++++++++++++++-
 2 files changed, 14 insertions(+), 2 deletions(-)

diff --git a/src/plugins/e-acsl/src/analyses/bound_variables.ml b/src/plugins/e-acsl/src/analyses/bound_variables.ml
index 5199e4e6687..83f51025ce2 100644
--- a/src/plugins/e-acsl/src/analyses/bound_variables.ml
+++ b/src/plugins/e-acsl/src/analyses/bound_variables.ml
@@ -664,7 +664,6 @@ let normalize_guard ~loc (t1, rel1, lv, rel2, t2) =
   in
   t1, lv, t2
 
-
 let compute_guards loc ~is_forall p bounded_vars hyps =
   try
     let guards,goal = compute_quantif_guards p ~is_forall bounded_vars hyps in
diff --git a/src/plugins/e-acsl/src/code_generator/translate_ats.ml b/src/plugins/e-acsl/src/code_generator/translate_ats.ml
index c8c3a4197ca..5ce9da77b62 100644
--- a/src/plugins/e-acsl/src/code_generator/translate_ats.ml
+++ b/src/plugins/e-acsl/src/code_generator/translate_ats.ml
@@ -305,11 +305,24 @@ let pretranslate_to_exp_with_lscope ~loc ~lscope kf env pot =
   let term_to_exp = !term_to_exp_ref in
   let lscope_vars = Lscope.get_all lscope in
   let lscope_vars = List.rev lscope_vars in
+  let rec add_lscope_to_logic_env env = function
+    | [] -> env
+    | (Lvs_quantif(t1,_,x,_,t2)::lscope) ->
+      let logic_env = Env.Logic_env.get env in
+      let i = Interval.join
+          (Interval.get ~logic_env t1)
+          (Interval.get ~logic_env t2)
+      in
+      add_lscope_to_logic_env
+        (Env.Logic_env.add_let_quantif_binding env x i)
+        lscope
+    | _::_ -> env
+  in
+  let env = add_lscope_to_logic_env env lscope in
   let logic_env = Env.Logic_env.get env in
   let sizes_and_shifts =
     sizes_and_shifts_from_quantifs ~loc ~logic_env kf lscope_vars []
   in
-  let logic_env = Env.Logic_env.get env in
   (* Creating the pointer *)
   let ty = match pot with
     | PoT_pred _ ->
-- 
GitLab