diff --git a/src/plugins/e-acsl/doc/Changelog b/src/plugins/e-acsl/doc/Changelog
index f5f780dd7d02bf57a3c44434d4fb7f2e60cd61f2..ab6ca4885ad499bb3af93b8159fdb54860fc428d 100644
--- a/src/plugins/e-acsl/doc/Changelog
+++ b/src/plugins/e-acsl/doc/Changelog
@@ -25,6 +25,9 @@
 Plugin E-ACSL <next-release>
 ###############################################################################
 
+-* E-ACSL       [2024-09-26] fix usage of structural equality of terms;
+                By using physical equality we ensure that structurally
+                identical terms are translated according to their context.
 -* E-ACSL       [2024-09-16] fix logic variable escaping its scope
 -* E-ACSL       [2024-09-03] handle negative integers generated by RTE
 - E-ACSL        [2024-09-03] add support for labelled logic functions in case
diff --git a/src/plugins/e-acsl/src/analyses/interval.ml b/src/plugins/e-acsl/src/analyses/interval.ml
index ad5a3600c9e441c2ed9675ef887191f9c8bff5ba..05320831cb2ba5cfce57e5d7559654b5e8cb92b2 100644
--- a/src/plugins/e-acsl/src/analyses/interval.ml
+++ b/src/plugins/e-acsl/src/analyses/interval.ml
@@ -217,7 +217,7 @@ let replace_all_args_ival li args_ival =
   List.iter
     (fun x ->
        let i = Logic_var.Map.find x args_ival in
-       (Misc.Id_term.Map.iter
+       (Misc.Id_term.Hashtbl.iter
           (fun t profile -> Memo.replace profile t i)
           (Logic_var.Map.find x args_map)))
     li.l_profile
diff --git a/src/plugins/e-acsl/src/analyses/labels.ml b/src/plugins/e-acsl/src/analyses/labels.ml
index afca5076f37a87bf7ff513a5d848aa0fb1a751b5..9fc9626a8429ee408b64305c23afcdcba6483389 100644
--- a/src/plugins/e-acsl/src/analyses/labels.ml
+++ b/src/plugins/e-acsl/src/analyses/labels.ml
@@ -58,34 +58,36 @@ let preprocess_done = ref false
 
 (** Associate a statement with the [at_data] that need to be translated on
     this statement. *)
-let at_data_for_stmts: At_data.Set.t ref Stmt.Hashtbl.t =
+let at_data_for_stmts: At_data.t list ref Stmt.Hashtbl.t =
   Stmt.Hashtbl.create 17
 
 (** Add [data] to the list of [at_data] that must be translated on the
     statement [stmt]. *)
 let add_at_for_stmt data stmt =
   let stmt = get_first_inner_stmt stmt in
+  (* Note that the error field is not taken into account in At_data.equal.
+     Therefore we cannot just write:
+       At_data.Hashtbl.replace ats_tbl data data; let old_data = data in *)
   let ats_ref =
     try
       Stmt.Hashtbl.find at_data_for_stmts stmt
     with Not_found ->
-      let ats_ref = ref At_data.Set.empty in
+      let ats_ref = ref [] in
       Stmt.Hashtbl.add at_data_for_stmts stmt ats_ref;
       ats_ref
   in
   let old_data =
     try
-      At_data.Set.find data !ats_ref
+      List.find (At_data.equal data) !ats_ref
     with Not_found ->
-      ats_ref := At_data.Set.add data !ats_ref;
+      ats_ref := data :: !ats_ref;
       data
   in
   match old_data.error, data.error with
   | Some _, None ->
     (* Replace the old data that has an error with the new data that do not
        have one. *)
-    ats_ref := At_data.Set.remove old_data !ats_ref;
-    ats_ref := At_data.Set.add data !ats_ref
+    ats_ref := data :: List.filter (fun d -> not @@ At_data.equal d old_data) !ats_ref;
   | Some _, Some _
   | None, Some _
   | None, None ->
@@ -97,7 +99,7 @@ let add_at_for_stmt data stmt =
 let at_for_stmt stmt =
   if !preprocess_done then
     let ats_ref =
-      Stmt.Hashtbl.find_def at_data_for_stmts stmt (ref At_data.Set.empty)
+      Stmt.Hashtbl.find_def at_data_for_stmts stmt (ref [])
     in
     Result.Ok !ats_ref
   else
@@ -558,7 +560,7 @@ let _debug () =
        Options.feedback ~level:2 "| - stmt %d at %a"
          stmt.sid
          Printer.pp_location (Stmt.loc stmt);
-       At_data.Set.iter
+       List.iter
          (fun at ->
             Options.feedback ~level:2 "|    - at %a"
               At_data.pretty at)
diff --git a/src/plugins/e-acsl/src/analyses/labels.mli b/src/plugins/e-acsl/src/analyses/labels.mli
index 1c9a7951d7f6ec09658a45ceaf76108306983fc9..40627c15b5d5991bba11f4e1cee35a1d88ed5da5 100644
--- a/src/plugins/e-acsl/src/analyses/labels.mli
+++ b/src/plugins/e-acsl/src/analyses/labels.mli
@@ -35,7 +35,7 @@ val get_first_inner_stmt: stmt -> stmt
 (** If the given statement has a label, return the first statement of the block.
     Otherwise return the given statement. *)
 
-val at_for_stmt: stmt -> At_data.Set.t Error.result
+val at_for_stmt: stmt -> At_data.t list Error.result
 (** @return the set of labeled predicates and terms to be translated on the
     given statement.
     @raise Not_memoized if the labels pre-analysis was not run. *)
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 58c424efd6d6a3b5344bade03cf8978db2faec40..1b26cd2d50308a6055e3f3eb4bfb914872a423fb 100644
--- a/src/plugins/e-acsl/src/code_generator/translate_ats.ml
+++ b/src/plugins/e-acsl/src/code_generator/translate_ats.ml
@@ -484,8 +484,8 @@ let for_stmt env kf stmt =
 
   (* Translate the [\at()]. *)
   let stmt_translations = Pred_or_term.Hashtbl.create 7 in
-  At_data.Set.fold
-    (fun ({ lscope; pot; error } as at_data) env ->
+  List.fold_left
+    (fun env ({ lscope; pot; error } as at_data) ->
        let open Current_loc.Operators in
        let<> UpdatedCurrentLoc = match pot with
          | PoT_pred p -> p.pred_loc
@@ -519,8 +519,8 @@ let for_stmt env kf stmt =
        Pred_or_term.Hashtbl.replace stmt_translations pot vi_or_err;
        At_data.Hashtbl.replace translations at_data vi_or_err;
        env)
-    at_for_stmt
     env
+    at_for_stmt
 
 let to_exp ~loc ~adata kf env pot label =
   let kinstr = Env.get_kinstr env in
diff --git a/src/plugins/e-acsl/src/libraries/analyses_datatype.ml b/src/plugins/e-acsl/src/libraries/analyses_datatype.ml
index e3d1f599319d187431b2c7d54111caab3242d2b2..2385a3bc6e6951d791b70cc817022f03846bd07e 100644
--- a/src/plugins/e-acsl/src/libraries/analyses_datatype.ml
+++ b/src/plugins/e-acsl/src/libraries/analyses_datatype.ml
@@ -56,7 +56,7 @@ module Pred_or_term =
           List.fold_left
             (fun reprs t -> PoT_term t :: reprs)
             []
-            Term.reprs
+            Misc.Id_term.reprs
         in
         List.fold_left
           (fun reprs p -> PoT_pred p :: reprs)
@@ -65,18 +65,19 @@ module Pred_or_term =
 
       include Datatype.Undefined
 
-      let compare pot1 pot2 =
-        match pot1, pot2 with
-        | PoT_pred _, PoT_term _ -> -1
-        | PoT_term _, PoT_pred _ -> 1
-        | PoT_pred p1, PoT_pred p2 -> PredicateStructEq.compare p1 p2
-        | PoT_term t1, PoT_term t2 -> Term.compare t1 t2
+      let compare _ _ =
+        (* see [Misc.Id_term.compare] *)
+        Kernel.fatal "Pred_or_term: comparison undefined (and undefinable)"
 
-      let equal = Datatype.from_compare
+      let equal pot1 pot2 =
+        match pot1, pot2 with
+        | PoT_pred p1, PoT_pred p2 -> PredicateStructEq.equal p1 p2
+        | PoT_term t1, PoT_term t2 -> Misc.Id_term.equal t1 t2
+        | _ -> false
 
       let hash = function
         | PoT_pred p -> 7 * PredicateStructEq.hash p
-        | PoT_term t -> 97 * Term.hash t
+        | PoT_term t -> 97 * Misc.Id_term.hash t
 
       let pretty fmt = function
         | PoT_pred p -> Printer.pp_predicate fmt p
@@ -151,11 +152,10 @@ let basic_pp_kinstr fmt kinstr =
 (** Basic comparison for two [kinstr], i.e. two [Kstmt] are always equal
     regardless of the statement value (contrary to [Cil_datatype.Kinstr.compare]
     where two [Kstmt] are compared with their included statement's [sid]). *)
-let basic_kinstr_compare kinstr1 kinstr2 =
+let basic_kinstr_equal kinstr1 kinstr2 =
   match kinstr1, kinstr2 with
-  | Kglobal, Kglobal | Kstmt _, Kstmt _ -> 0
-  | Kglobal, _ -> 1
-  | _, Kglobal -> -1
+  | Kglobal, Kglobal | Kstmt _, Kstmt _ -> true
+  | _ -> false
 
 (** Basic hash function for a [kinstr], i.e. contrary to
     [Cil_datatype.Kinstr.hash] the statement of the [Kstmt] is not considered
@@ -195,39 +195,20 @@ module At_data = struct
 
         include Datatype.Undefined
 
-        let compare
-            { kf = kf1;
-              kinstr = kinstr1;
-              lscope = lscope1;
-              pot = pot1;
-              label = label1 }
-            { kf = kf2;
-              kinstr = kinstr2;
-              lscope = lscope2;
-              pot = pot2;
-              label = label2 }
-          =
-          let cmp = Kf.compare kf1 kf2 in
-          let cmp =
-            if cmp = 0 then
-              basic_kinstr_compare kinstr1 kinstr2
-            else cmp
-          in
-          let cmp =
-            if cmp = 0 then Lscope.D.compare lscope1 lscope2
-            else cmp
-          in
-          let cmp =
-            if cmp = 0 then Pred_or_term.compare pot1 pot2
-            else cmp
-          in
-          if cmp = 0 then
-            let elabel1 = Ext_logic_label.get kinstr1 label1 in
-            let elabel2 = Ext_logic_label.get kinstr2 label2 in
-            Ext_logic_label.compare elabel1 elabel2
-          else cmp
-
-        let equal = Datatype.from_compare
+        let compare _ _ =
+          (* see [Misc.Id_term.compare] *)
+          Kernel.fatal "At_data: comparison undefined (and undefinable)"
+
+        let equal
+            {kf = kf1; kinstr = kinstr1; lscope = ls1; pot = pot1; label = l1}
+            {kf = kf2; kinstr = kinstr2; lscope = ls2; pot = pot2; label = l2} =
+          Kf.equal kf1 kf2 &&
+          basic_kinstr_equal kinstr1 kinstr2 &&
+          Lscope.D.equal ls1 ls2 &&
+          Pred_or_term.equal pot1 pot2 &&
+          let elabel1 = Ext_logic_label.get kinstr1 l1 in
+          let elabel2 = Ext_logic_label.get kinstr2 l2 in
+          Ext_logic_label.equal elabel1 elabel2
 
         let hash { kf; kinstr; lscope; pot; label } =
           let elabel = Ext_logic_label.get kinstr label in
@@ -483,9 +464,12 @@ module LF_env
          Logic_var.Map.update
            lv
            (fun m -> match m with
-              | Some m ->
-                Some (Misc.Id_term.Map.update t (fun _ -> Some profile) m)
-              | None -> Some (Misc.Id_term.Map.(add t profile empty)))
+              | Some tbl ->
+                Misc.Id_term.Hashtbl.replace tbl t profile; Some tbl
+              | None ->
+                let tbl = Misc.Id_term.Hashtbl.create 9 in
+                Misc.Id_term.Hashtbl.add tbl t profile;
+                Some tbl)
            map)
       map
       li.l_profile
diff --git a/src/plugins/e-acsl/src/libraries/analyses_datatype.mli b/src/plugins/e-acsl/src/libraries/analyses_datatype.mli
index 444219dfc2f390c8d5bc874b373e4577df1100ec..5720f1a3f3ff29bdce6ce6a1b12fa79b97d782a6 100644
--- a/src/plugins/e-acsl/src/libraries/analyses_datatype.mli
+++ b/src/plugins/e-acsl/src/libraries/analyses_datatype.mli
@@ -28,6 +28,10 @@ open Cil_datatype
 
 module Annotation_kind: Datatype.S with type t = annotation_kind
 
+(** Predicate or term. Note that the notion of egality for predicates is
+    structural but for terms it is physical (using [Misc.Id_term]). That means
+    that comparison is undefined and that [Map] and [Set] cannot be used. See
+    [Misc.Id_term] for more information. *)
 module Pred_or_term: Datatype.S_with_collections with type t = pred_or_term
 
 module At_data: sig
@@ -134,7 +138,7 @@ module LF_env : sig
 
   (** find all the arguments a recursive function or predicate has been
       called with*)
-  val find_args : logic_info -> (Profile.t Misc.Id_term.Map.t) Logic_var.Map.t
+  val find_args : logic_info -> Profile.t Misc.Id_term.Hashtbl.t Logic_var.Map.t
 
   (** clear the table of intervals for logic function *)
   val clear : unit -> unit
diff --git a/src/plugins/e-acsl/src/libraries/misc.ml b/src/plugins/e-acsl/src/libraries/misc.ml
index 839b26676fdf56b33b4c4b0fd58f62755f2e762a..e1ea93a8e4b694429e13b6f8980df08e7b9b5e1a 100644
--- a/src/plugins/e-acsl/src/libraries/misc.ml
+++ b/src/plugins/e-acsl/src/libraries/misc.ml
@@ -217,8 +217,9 @@ module Id_term =
     (struct
       include Cil_datatype.Term
       let name = "E_ACSL.Id_term"
-      let compare (t1:term) t2 =
-        if t1 == t2 then 0 else Cil_datatype.Term.compare t1 t2
+      let compare _ _ =
+        (* There is no sound comparison based on physical identity. *)
+        Kernel.fatal "Id_term: comparison undefined (and undefinable)"
       let equal (t1:term) t2 = t1 == t2
       let structural_descr = Structural_descr.t_abstract
       let rehash = Datatype.identity
diff --git a/src/plugins/e-acsl/src/libraries/misc.mli b/src/plugins/e-acsl/src/libraries/misc.mli
index 16706184a7f1a478815d49234773f5ae1defedc2..b1bff7698f6d4a770e6b006247363b17e599d369 100644
--- a/src/plugins/e-acsl/src/libraries/misc.mli
+++ b/src/plugins/e-acsl/src/libraries/misc.mli
@@ -82,7 +82,10 @@ val finite_min_and_max: Ival.t -> Integer.t * Integer.t
 (** [finite_min_and_max i] takes the finite ival [i] and returns its bounds. *)
 
 module Id_term: Datatype.S_with_collections with type t = term
-(** Datatype for terms that relies on physical equality. *)
+(** Datatype for terms that relies on physical equality.
+    Note that of its collections only [Hashtbl] can be used.
+    Using [Map] and [Set] raises a fatal error as they require a comparison
+    function, which cannot be defined in a sound way for physical equality. *)
 
 val extract_uncoerced_lval: exp -> exp option
 (** Unroll the [CastE] part of the expression until an [Lval] is found, and
diff --git a/src/plugins/e-acsl/tests/arith/functions.c b/src/plugins/e-acsl/tests/arith/functions.c
index b02c5f9baca3095a13b63ba8a8e5c4bce77fbca5..66e0968c07197d14c9890358bdb3ca41895ed664 100644
--- a/src/plugins/e-acsl/tests/arith/functions.c
+++ b/src/plugins/e-acsl/tests/arith/functions.c
@@ -111,3 +111,16 @@ int main(void) {
 void test_f4() {
   /*@ assert f4 (0) ≡ 0; */
 }
+
+// same term \at(j, Old) twice in different typing contexts
+/*@
+  behavior a:
+    ensures 1 == -j;
+  behavior b:
+    ensures 2 == j;
+ */
+int f5(long int j) {}
+
+int test_f5() {
+  f5(1);
+}
diff --git a/src/plugins/e-acsl/tests/arith/oracle/at.res.oracle b/src/plugins/e-acsl/tests/arith/oracle/at.res.oracle
index 422529ed4132579b993634938b304577bfc29d2a..c1c0d8c809403a9d280978b637eb79fc82e9ef3f 100644
--- a/src/plugins/e-acsl/tests/arith/oracle/at.res.oracle
+++ b/src/plugins/e-acsl/tests/arith/oracle/at.res.oracle
@@ -11,6 +11,12 @@
 [eva:alarm] at.i:77: Warning: assertion got status unknown.
 [eva:alarm] at.i:78: Warning: assertion got status unknown.
 [eva:alarm] at.i:79: Warning: assertion got status unknown.
+[eva:alarm] at.i:43: Warning: 
+  function __e_acsl_assert_register_ulong: precondition data->values == \null ||
+                                                        \valid(data->values) got status unknown.
+[eva:alarm] at.i:41: Warning: 
+  function __e_acsl_assert_register_ulong: precondition data->values == \null ||
+                                                        \valid(data->values) got status unknown.
 [eva:alarm] at.i:39: Warning: 
   function __e_acsl_assert_register_ulong: precondition data->values == \null ||
                                                         \valid(data->values) got status unknown.
diff --git a/src/plugins/e-acsl/tests/arith/oracle/functions.res.oracle b/src/plugins/e-acsl/tests/arith/oracle/functions.res.oracle
index b45b4d727ceb341debedf941fc93c446accf8d72..dcb1f8a7a9557f5fb4b3252b13d5a637471b1d13 100644
--- a/src/plugins/e-acsl/tests/arith/oracle/functions.res.oracle
+++ b/src/plugins/e-acsl/tests/arith/oracle/functions.res.oracle
@@ -1,3 +1,7 @@
+[kernel:CERT:MSC:37] functions.c:122: Warning: 
+  Body of function f5 falls-through. Adding a return statement
+[kernel:CERT:MSC:37] functions.c:126: Warning: 
+  Body of function test_f5 falls-through. Adding a return statement
 [e-acsl] beginning translation.
 [e-acsl] functions.c:81: Warning: 
   E-ACSL construct `function application' is not yet supported.
diff --git a/src/plugins/e-acsl/tests/arith/oracle/gen_at.c b/src/plugins/e-acsl/tests/arith/oracle/gen_at.c
index 6c066086426c41ccfe9d811bfc6b45a1cc1c64ec..b9b1b2d81696756053d10fba479a8bb46283e583 100644
--- a/src/plugins/e-acsl/tests/arith/oracle/gen_at.c
+++ b/src/plugins/e-acsl/tests/arith/oracle/gen_at.c
@@ -18,26 +18,30 @@ void __gen_e_acsl_f(void);
 
 void f(void)
 {
+  int __gen_e_acsl_at_6;
+  int __gen_e_acsl_at_5;
   int __gen_e_acsl_at_4;
   int __gen_e_acsl_at_3;
   int __gen_e_acsl_at_2;
   int __gen_e_acsl_at;
   __gen_e_acsl_at = A;
+  __gen_e_acsl_at_2 = A;
+  __gen_e_acsl_at_3 = A;
   A = 1;
-  F: __gen_e_acsl_at_2 = A;
-     __gen_e_acsl_at_3 = __gen_e_acsl_at;
+  F: __gen_e_acsl_at_4 = __gen_e_acsl_at_2;
+     __gen_e_acsl_at_5 = A;
      A = 2;
   {
     __e_acsl_assert_data_t __gen_e_acsl_assert_data = {.values = (void *)0};
     __e_acsl_assert_register_int(& __gen_e_acsl_assert_data,"\\at(A,Pre)",0,
-                                 __gen_e_acsl_at);
+                                 __gen_e_acsl_at_3);
     __gen_e_acsl_assert_data.blocking = 1;
     __gen_e_acsl_assert_data.kind = "Assertion";
     __gen_e_acsl_assert_data.pred_txt = "\\at(A,Pre) == 0";
     __gen_e_acsl_assert_data.file = "at.i";
     __gen_e_acsl_assert_data.fct = "f";
     __gen_e_acsl_assert_data.line = 16;
-    __e_acsl_assert(__gen_e_acsl_at == 0,& __gen_e_acsl_assert_data);
+    __e_acsl_assert(__gen_e_acsl_at_3 == 0,& __gen_e_acsl_assert_data);
     __e_acsl_assert_clean(& __gen_e_acsl_assert_data);
   }
   /*@ assert \at(A,Pre) == 0; */ ;
@@ -45,14 +49,14 @@ void f(void)
     __e_acsl_assert_data_t __gen_e_acsl_assert_data_2 =
       {.values = (void *)0};
     __e_acsl_assert_register_int(& __gen_e_acsl_assert_data_2,"\\at(A,F)",0,
-                                 __gen_e_acsl_at_2);
+                                 __gen_e_acsl_at_5);
     __gen_e_acsl_assert_data_2.blocking = 1;
     __gen_e_acsl_assert_data_2.kind = "Assertion";
     __gen_e_acsl_assert_data_2.pred_txt = "\\at(A,F) == 1";
     __gen_e_acsl_assert_data_2.file = "at.i";
     __gen_e_acsl_assert_data_2.fct = "f";
     __gen_e_acsl_assert_data_2.line = 17;
-    __e_acsl_assert(__gen_e_acsl_at_2 == 1,& __gen_e_acsl_assert_data_2);
+    __e_acsl_assert(__gen_e_acsl_at_5 == 1,& __gen_e_acsl_assert_data_2);
     __e_acsl_assert_clean(& __gen_e_acsl_assert_data_2);
   }
   /*@ assert \at(A,F) == 1; */ ;
@@ -74,21 +78,21 @@ void f(void)
     __e_acsl_assert_data_t __gen_e_acsl_assert_data_4 =
       {.values = (void *)0};
     __e_acsl_assert_register_int(& __gen_e_acsl_assert_data_4,
-                                 "\\at(\\at(A,Pre),F)",0,__gen_e_acsl_at_3);
+                                 "\\at(\\at(A,Pre),F)",0,__gen_e_acsl_at_4);
     __gen_e_acsl_assert_data_4.blocking = 1;
     __gen_e_acsl_assert_data_4.kind = "Assertion";
     __gen_e_acsl_assert_data_4.pred_txt = "\\at(\\at(A,Pre),F) == 0";
     __gen_e_acsl_assert_data_4.file = "at.i";
     __gen_e_acsl_assert_data_4.fct = "f";
     __gen_e_acsl_assert_data_4.line = 19;
-    __e_acsl_assert(__gen_e_acsl_at_3 == 0,& __gen_e_acsl_assert_data_4);
+    __e_acsl_assert(__gen_e_acsl_at_4 == 0,& __gen_e_acsl_assert_data_4);
     __e_acsl_assert_clean(& __gen_e_acsl_assert_data_4);
   }
   /*@ assert \at(\at(A,Pre),F) == 0; */ ;
   A = 3;
   {
     {
-      __gen_e_acsl_at_4 = A;
+      __gen_e_acsl_at_6 = A;
       __e_acsl_assert_data_t __gen_e_acsl_assert_data_5 =
         {.values = (void *)0};
       __e_acsl_assert_register_int(& __gen_e_acsl_assert_data_5,"A",0,A);
@@ -122,14 +126,14 @@ void f(void)
     __e_acsl_assert_data_t __gen_e_acsl_assert_data_7 =
       {.values = (void *)0};
     __e_acsl_assert_register_int(& __gen_e_acsl_assert_data_7,"\\old(A)",0,
-                                 __gen_e_acsl_at_4);
+                                 __gen_e_acsl_at_6);
     __gen_e_acsl_assert_data_7.blocking = 1;
     __gen_e_acsl_assert_data_7.kind = "Postcondition";
     __gen_e_acsl_assert_data_7.pred_txt = "\\old(A) == 3";
     __gen_e_acsl_assert_data_7.file = "at.i";
     __gen_e_acsl_assert_data_7.fct = "f";
     __gen_e_acsl_assert_data_7.line = 23;
-    __e_acsl_assert(__gen_e_acsl_at_4 == 3,& __gen_e_acsl_assert_data_7);
+    __e_acsl_assert(__gen_e_acsl_at_6 == 3,& __gen_e_acsl_assert_data_7);
     __e_acsl_assert_clean(& __gen_e_acsl_assert_data_7);
     __e_acsl_assert_data_t __gen_e_acsl_assert_data_8 =
       {.values = (void *)0};
@@ -148,6 +152,8 @@ void f(void)
 
 void g(int *p, int *q)
 {
+  int __gen_e_acsl_at_5;
+  int __gen_e_acsl_at_4;
   int __gen_e_acsl_at_3;
   int __gen_e_acsl_at_2;
   int __gen_e_acsl_at;
@@ -162,6 +168,8 @@ void g(int *p, int *q)
   L1:
   {
     int __gen_e_acsl_valid_read;
+    int __gen_e_acsl_valid_read_2;
+    int __gen_e_acsl_valid_read_3;
     __e_acsl_assert_data_t __gen_e_acsl_assert_data = {.values = (void *)0};
     __gen_e_acsl_valid_read = __e_acsl_valid_read((void *)q,sizeof(int),
                                                   (void *)q,(void *)(& q));
@@ -173,88 +181,100 @@ void g(int *p, int *q)
     __gen_e_acsl_assert_data.pred_txt = "\\valid_read(q)";
     __gen_e_acsl_assert_data.file = "at.i";
     __gen_e_acsl_assert_data.fct = "g";
-    __gen_e_acsl_assert_data.line = 39;
+    __gen_e_acsl_assert_data.line = 43;
     __gen_e_acsl_assert_data.name = "mem_access";
     __e_acsl_assert(__gen_e_acsl_valid_read,& __gen_e_acsl_assert_data);
     __e_acsl_assert_clean(& __gen_e_acsl_assert_data);
     __gen_e_acsl_at = *q;
-    __e_acsl_initialize((void *)p,sizeof(int));
-  }
-  *p = 2;
-  __e_acsl_initialize((void *)(p + 1),sizeof(int));
-  *(p + 1) = 3;
-  __e_acsl_initialize((void *)q,sizeof(int));
-  *q = 1;
-  L2:
-  {
-    int __gen_e_acsl_valid_read_2;
     __e_acsl_assert_data_t __gen_e_acsl_assert_data_2 =
       {.values = (void *)0};
-    __gen_e_acsl_valid_read_2 = __e_acsl_valid_read((void *)(p + __gen_e_acsl_at),
-                                                    sizeof(int),(void *)p,
-                                                    (void *)(& p));
-    __e_acsl_assert_register_ptr(& __gen_e_acsl_assert_data_2,"p",(void *)p);
-    __e_acsl_assert_register_int(& __gen_e_acsl_assert_data_2,
-                                 "__gen_e_acsl_at",0,__gen_e_acsl_at);
+    __gen_e_acsl_valid_read_2 = __e_acsl_valid_read((void *)q,sizeof(int),
+                                                    (void *)q,(void *)(& q));
+    __e_acsl_assert_register_ptr(& __gen_e_acsl_assert_data_2,"q",(void *)q);
     __e_acsl_assert_register_ulong(& __gen_e_acsl_assert_data_2,
                                    "sizeof(int)",0,sizeof(int));
     __gen_e_acsl_assert_data_2.blocking = 1;
     __gen_e_acsl_assert_data_2.kind = "RTE";
-    __gen_e_acsl_assert_data_2.pred_txt = "\\valid_read(p + __gen_e_acsl_at)";
+    __gen_e_acsl_assert_data_2.pred_txt = "\\valid_read(q)";
     __gen_e_acsl_assert_data_2.file = "at.i";
     __gen_e_acsl_assert_data_2.fct = "g";
-    __gen_e_acsl_assert_data_2.line = 39;
+    __gen_e_acsl_assert_data_2.line = 41;
     __gen_e_acsl_assert_data_2.name = "mem_access";
     __e_acsl_assert(__gen_e_acsl_valid_read_2,& __gen_e_acsl_assert_data_2);
     __e_acsl_assert_clean(& __gen_e_acsl_assert_data_2);
-    __gen_e_acsl_at_2 = *(p + __gen_e_acsl_at);
-  }
-  A = 4;
-  {
+    __gen_e_acsl_at_2 = *q;
     __e_acsl_assert_data_t __gen_e_acsl_assert_data_3 =
       {.values = (void *)0};
-    __e_acsl_assert_register_int(& __gen_e_acsl_assert_data_3,
-                                 "\\at(*(p + \\at(*q,L1)),L2)",0,
-                                 __gen_e_acsl_at_2);
+    __gen_e_acsl_valid_read_3 = __e_acsl_valid_read((void *)q,sizeof(int),
+                                                    (void *)q,(void *)(& q));
+    __e_acsl_assert_register_ptr(& __gen_e_acsl_assert_data_3,"q",(void *)q);
+    __e_acsl_assert_register_ulong(& __gen_e_acsl_assert_data_3,
+                                   "sizeof(int)",0,sizeof(int));
     __gen_e_acsl_assert_data_3.blocking = 1;
-    __gen_e_acsl_assert_data_3.kind = "Assertion";
-    __gen_e_acsl_assert_data_3.pred_txt = "\\at(*(p + \\at(*q,L1)),L2) == 2";
+    __gen_e_acsl_assert_data_3.kind = "RTE";
+    __gen_e_acsl_assert_data_3.pred_txt = "\\valid_read(q)";
     __gen_e_acsl_assert_data_3.file = "at.i";
     __gen_e_acsl_assert_data_3.fct = "g";
     __gen_e_acsl_assert_data_3.line = 39;
-    __e_acsl_assert(__gen_e_acsl_at_2 == 2,& __gen_e_acsl_assert_data_3);
+    __gen_e_acsl_assert_data_3.name = "mem_access";
+    __e_acsl_assert(__gen_e_acsl_valid_read_3,& __gen_e_acsl_assert_data_3);
     __e_acsl_assert_clean(& __gen_e_acsl_assert_data_3);
+    __gen_e_acsl_at_3 = *q;
+    __e_acsl_initialize((void *)p,sizeof(int));
   }
-  /*@ assert \at(*(p + \at(*q,L1)),L2) == 2; */ ;
-  L3:
+  *p = 2;
+  __e_acsl_initialize((void *)(p + 1),sizeof(int));
+  *(p + 1) = 3;
+  __e_acsl_initialize((void *)q,sizeof(int));
+  *q = 1;
+  L2:
   {
-    int __gen_e_acsl_valid_read_3;
     int __gen_e_acsl_valid_read_4;
     __e_acsl_assert_data_t __gen_e_acsl_assert_data_4 =
       {.values = (void *)0};
-    __gen_e_acsl_valid_read_3 = __e_acsl_valid_read((void *)(p + __gen_e_acsl_at),
+    __gen_e_acsl_valid_read_4 = __e_acsl_valid_read((void *)(p + __gen_e_acsl_at_3),
                                                     sizeof(int),(void *)p,
                                                     (void *)(& p));
     __e_acsl_assert_register_ptr(& __gen_e_acsl_assert_data_4,"p",(void *)p);
     __e_acsl_assert_register_int(& __gen_e_acsl_assert_data_4,
-                                 "__gen_e_acsl_at",0,__gen_e_acsl_at);
+                                 "__gen_e_acsl_at_3",0,__gen_e_acsl_at_3);
     __e_acsl_assert_register_ulong(& __gen_e_acsl_assert_data_4,
                                    "sizeof(int)",0,sizeof(int));
     __gen_e_acsl_assert_data_4.blocking = 1;
     __gen_e_acsl_assert_data_4.kind = "RTE";
-    __gen_e_acsl_assert_data_4.pred_txt = "\\valid_read(p + __gen_e_acsl_at)";
+    __gen_e_acsl_assert_data_4.pred_txt = "\\valid_read(p + __gen_e_acsl_at_3)";
     __gen_e_acsl_assert_data_4.file = "at.i";
     __gen_e_acsl_assert_data_4.fct = "g";
-    __gen_e_acsl_assert_data_4.line = 43;
+    __gen_e_acsl_assert_data_4.line = 39;
     __gen_e_acsl_assert_data_4.name = "mem_access";
-    __e_acsl_assert(__gen_e_acsl_valid_read_3,& __gen_e_acsl_assert_data_4);
+    __e_acsl_assert(__gen_e_acsl_valid_read_4,& __gen_e_acsl_assert_data_4);
     __e_acsl_assert_clean(& __gen_e_acsl_assert_data_4);
-    __gen_e_acsl_at_3 = *(p + __gen_e_acsl_at);
+    __gen_e_acsl_at_4 = *(p + __gen_e_acsl_at_3);
+  }
+  A = 4;
+  {
     __e_acsl_assert_data_t __gen_e_acsl_assert_data_5 =
       {.values = (void *)0};
+    __e_acsl_assert_register_int(& __gen_e_acsl_assert_data_5,
+                                 "\\at(*(p + \\at(*q,L1)),L2)",0,
+                                 __gen_e_acsl_at_4);
+    __gen_e_acsl_assert_data_5.blocking = 1;
+    __gen_e_acsl_assert_data_5.kind = "Assertion";
+    __gen_e_acsl_assert_data_5.pred_txt = "\\at(*(p + \\at(*q,L1)),L2) == 2";
+    __gen_e_acsl_assert_data_5.file = "at.i";
+    __gen_e_acsl_assert_data_5.fct = "g";
+    __gen_e_acsl_assert_data_5.line = 39;
+    __e_acsl_assert(__gen_e_acsl_at_4 == 2,& __gen_e_acsl_assert_data_5);
+    __e_acsl_assert_clean(& __gen_e_acsl_assert_data_5);
+  }
+  /*@ assert \at(*(p + \at(*q,L1)),L2) == 2; */ ;
+  L3:
+  {
+    int __gen_e_acsl_valid_read_5;
+    int __gen_e_acsl_valid_read_6;
     __e_acsl_assert_data_t __gen_e_acsl_assert_data_6 =
       {.values = (void *)0};
-    __gen_e_acsl_valid_read_4 = __e_acsl_valid_read((void *)(p + __gen_e_acsl_at),
+    __gen_e_acsl_valid_read_5 = __e_acsl_valid_read((void *)(p + __gen_e_acsl_at),
                                                     sizeof(int),(void *)p,
                                                     (void *)(& p));
     __e_acsl_assert_register_ptr(& __gen_e_acsl_assert_data_6,"p",(void *)p);
@@ -267,38 +287,61 @@ void g(int *p, int *q)
     __gen_e_acsl_assert_data_6.pred_txt = "\\valid_read(p + __gen_e_acsl_at)";
     __gen_e_acsl_assert_data_6.file = "at.i";
     __gen_e_acsl_assert_data_6.fct = "g";
-    __gen_e_acsl_assert_data_6.line = 41;
+    __gen_e_acsl_assert_data_6.line = 43;
     __gen_e_acsl_assert_data_6.name = "mem_access";
-    __e_acsl_assert(__gen_e_acsl_valid_read_4,& __gen_e_acsl_assert_data_6);
+    __e_acsl_assert(__gen_e_acsl_valid_read_5,& __gen_e_acsl_assert_data_6);
     __e_acsl_assert_clean(& __gen_e_acsl_assert_data_6);
-    __e_acsl_assert_register_int(& __gen_e_acsl_assert_data_5,
-                                 "*(p + \\at(*q,L1))",0,
-                                 *(p + __gen_e_acsl_at));
-    __gen_e_acsl_assert_data_5.blocking = 1;
-    __gen_e_acsl_assert_data_5.kind = "Assertion";
-    __gen_e_acsl_assert_data_5.pred_txt = "\\at(*(p + \\at(*q,L1)),Here) == 2";
-    __gen_e_acsl_assert_data_5.file = "at.i";
-    __gen_e_acsl_assert_data_5.fct = "g";
-    __gen_e_acsl_assert_data_5.line = 41;
-    __e_acsl_assert(*(p + __gen_e_acsl_at) == 2,& __gen_e_acsl_assert_data_5);
-    __e_acsl_assert_clean(& __gen_e_acsl_assert_data_5);
-  }
-  /*@ assert \at(*(p + \at(*q,L1)),Here) == 2; */ ;
-  {
+    __gen_e_acsl_at_5 = *(p + __gen_e_acsl_at);
     __e_acsl_assert_data_t __gen_e_acsl_assert_data_7 =
       {.values = (void *)0};
+    __e_acsl_assert_data_t __gen_e_acsl_assert_data_8 =
+      {.values = (void *)0};
+    __gen_e_acsl_valid_read_6 = __e_acsl_valid_read((void *)(p + __gen_e_acsl_at_2),
+                                                    sizeof(int),(void *)p,
+                                                    (void *)(& p));
+    __e_acsl_assert_register_ptr(& __gen_e_acsl_assert_data_8,"p",(void *)p);
+    __e_acsl_assert_register_int(& __gen_e_acsl_assert_data_8,
+                                 "__gen_e_acsl_at_2",0,__gen_e_acsl_at_2);
+    __e_acsl_assert_register_ulong(& __gen_e_acsl_assert_data_8,
+                                   "sizeof(int)",0,sizeof(int));
+    __gen_e_acsl_assert_data_8.blocking = 1;
+    __gen_e_acsl_assert_data_8.kind = "RTE";
+    __gen_e_acsl_assert_data_8.pred_txt = "\\valid_read(p + __gen_e_acsl_at_2)";
+    __gen_e_acsl_assert_data_8.file = "at.i";
+    __gen_e_acsl_assert_data_8.fct = "g";
+    __gen_e_acsl_assert_data_8.line = 41;
+    __gen_e_acsl_assert_data_8.name = "mem_access";
+    __e_acsl_assert(__gen_e_acsl_valid_read_6,& __gen_e_acsl_assert_data_8);
+    __e_acsl_assert_clean(& __gen_e_acsl_assert_data_8);
     __e_acsl_assert_register_int(& __gen_e_acsl_assert_data_7,
-                                 "\\at(*(p + \\at(*q,L1)),L3)",0,
-                                 __gen_e_acsl_at_3);
+                                 "*(p + \\at(*q,L1))",0,
+                                 *(p + __gen_e_acsl_at_2));
     __gen_e_acsl_assert_data_7.blocking = 1;
     __gen_e_acsl_assert_data_7.kind = "Assertion";
-    __gen_e_acsl_assert_data_7.pred_txt = "\\at(*(p + \\at(*q,L1)),L3) == 2";
+    __gen_e_acsl_assert_data_7.pred_txt = "\\at(*(p + \\at(*q,L1)),Here) == 2";
     __gen_e_acsl_assert_data_7.file = "at.i";
     __gen_e_acsl_assert_data_7.fct = "g";
-    __gen_e_acsl_assert_data_7.line = 43;
-    __e_acsl_assert(__gen_e_acsl_at_3 == 2,& __gen_e_acsl_assert_data_7);
+    __gen_e_acsl_assert_data_7.line = 41;
+    __e_acsl_assert(*(p + __gen_e_acsl_at_2) == 2,
+                    & __gen_e_acsl_assert_data_7);
     __e_acsl_assert_clean(& __gen_e_acsl_assert_data_7);
   }
+  /*@ assert \at(*(p + \at(*q,L1)),Here) == 2; */ ;
+  {
+    __e_acsl_assert_data_t __gen_e_acsl_assert_data_9 =
+      {.values = (void *)0};
+    __e_acsl_assert_register_int(& __gen_e_acsl_assert_data_9,
+                                 "\\at(*(p + \\at(*q,L1)),L3)",0,
+                                 __gen_e_acsl_at_5);
+    __gen_e_acsl_assert_data_9.blocking = 1;
+    __gen_e_acsl_assert_data_9.kind = "Assertion";
+    __gen_e_acsl_assert_data_9.pred_txt = "\\at(*(p + \\at(*q,L1)),L3) == 2";
+    __gen_e_acsl_assert_data_9.file = "at.i";
+    __gen_e_acsl_assert_data_9.fct = "g";
+    __gen_e_acsl_assert_data_9.line = 43;
+    __e_acsl_assert(__gen_e_acsl_at_5 == 2,& __gen_e_acsl_assert_data_9);
+    __e_acsl_assert_clean(& __gen_e_acsl_assert_data_9);
+  }
   /*@ assert \at(*(p + \at(*q,L1)),L3) == 2; */ ;
   __e_acsl_delete_block((void *)(& q));
   __e_acsl_delete_block((void *)(& p));
@@ -362,8 +405,9 @@ void i(void)
 
 int main(void)
 {
+  int __gen_e_acsl_at_3;
   long __gen_e_acsl_at_2;
-  int __gen_e_acsl_at;
+  long __gen_e_acsl_at;
   int __retres;
   int x;
   int t[2];
@@ -374,8 +418,9 @@ int main(void)
   x = __gen_e_acsl_h(0);
   L:
   {
-    __gen_e_acsl_at = x;
+    __gen_e_acsl_at = (long)x;
     __gen_e_acsl_at_2 = x + 1L;
+    __gen_e_acsl_at_3 = x;
     __e_acsl_assert_data_t __gen_e_acsl_assert_data = {.values = (void *)0};
     __e_acsl_assert_register_int(& __gen_e_acsl_assert_data,"x",0,x);
     __gen_e_acsl_assert_data.blocking = 1;
@@ -397,14 +442,14 @@ int main(void)
     __e_acsl_assert_data_t __gen_e_acsl_assert_data_2 =
       {.values = (void *)0};
     __e_acsl_assert_register_int(& __gen_e_acsl_assert_data_2,"\\at(x,L)",0,
-                                 __gen_e_acsl_at);
+                                 __gen_e_acsl_at_3);
     __gen_e_acsl_assert_data_2.blocking = 1;
     __gen_e_acsl_assert_data_2.kind = "Assertion";
     __gen_e_acsl_assert_data_2.pred_txt = "\\at(x,L) == 0";
     __gen_e_acsl_assert_data_2.file = "at.i";
     __gen_e_acsl_assert_data_2.fct = "main";
     __gen_e_acsl_assert_data_2.line = 77;
-    __e_acsl_assert(__gen_e_acsl_at == 0,& __gen_e_acsl_assert_data_2);
+    __e_acsl_assert(__gen_e_acsl_at_3 == 0,& __gen_e_acsl_assert_data_2);
     __e_acsl_assert_clean(& __gen_e_acsl_assert_data_2);
   }
   /*@ assert \at(x,L) == 0; */ ;
@@ -426,16 +471,15 @@ int main(void)
   {
     __e_acsl_assert_data_t __gen_e_acsl_assert_data_4 =
       {.values = (void *)0};
-    __e_acsl_assert_register_int(& __gen_e_acsl_assert_data_4,"\\at(x,L)",0,
-                                 __gen_e_acsl_at);
+    __e_acsl_assert_register_long(& __gen_e_acsl_assert_data_4,"\\at(x,L)",0,
+                                  __gen_e_acsl_at);
     __gen_e_acsl_assert_data_4.blocking = 1;
     __gen_e_acsl_assert_data_4.kind = "Assertion";
     __gen_e_acsl_assert_data_4.pred_txt = "\\at(x,L) + 1 == 1";
     __gen_e_acsl_assert_data_4.file = "at.i";
     __gen_e_acsl_assert_data_4.fct = "main";
     __gen_e_acsl_assert_data_4.line = 79;
-    __e_acsl_assert((long)__gen_e_acsl_at + 1L == 1L,
-                    & __gen_e_acsl_assert_data_4);
+    __e_acsl_assert(__gen_e_acsl_at + 1L == 1L,& __gen_e_acsl_assert_data_4);
     __e_acsl_assert_clean(& __gen_e_acsl_assert_data_4);
   }
   /*@ assert \at(x,L) + 1 == 1; */ ;
@@ -484,11 +528,13 @@ int __gen_e_acsl_h(int x)
  */
 void __gen_e_acsl_f(void)
 {
+  int __gen_e_acsl_at_3;
   int __gen_e_acsl_at_2;
   int __gen_e_acsl_at;
   {
     __gen_e_acsl_at = A;
     __gen_e_acsl_at_2 = A;
+    __gen_e_acsl_at_3 = A;
     __e_acsl_assert_data_t __gen_e_acsl_assert_data = {.values = (void *)0};
     __e_acsl_assert_register_int(& __gen_e_acsl_assert_data,"A",0,A);
     __gen_e_acsl_assert_data.blocking = 1;
@@ -501,15 +547,14 @@ void __gen_e_acsl_f(void)
     __e_acsl_assert_clean(& __gen_e_acsl_assert_data);
     __e_acsl_assert_data_t __gen_e_acsl_assert_data_2 =
       {.values = (void *)0};
-    __e_acsl_assert_register_int(& __gen_e_acsl_assert_data_2,"\\at(A,Pre)",
-                                 0,__gen_e_acsl_at_2);
+    __e_acsl_assert_register_int(& __gen_e_acsl_assert_data_2,"A",0,A);
     __gen_e_acsl_assert_data_2.blocking = 1;
     __gen_e_acsl_assert_data_2.kind = "Precondition";
     __gen_e_acsl_assert_data_2.pred_txt = "\\at(A,Pre) == 0";
     __gen_e_acsl_assert_data_2.file = "at.i";
     __gen_e_acsl_assert_data_2.fct = "f";
     __gen_e_acsl_assert_data_2.line = 9;
-    __e_acsl_assert(__gen_e_acsl_at_2 == 0,& __gen_e_acsl_assert_data_2);
+    __e_acsl_assert(A == 0,& __gen_e_acsl_assert_data_2);
     __e_acsl_assert_clean(& __gen_e_acsl_assert_data_2);
   }
   f();
@@ -518,10 +563,10 @@ void __gen_e_acsl_f(void)
     __e_acsl_assert_data_t __gen_e_acsl_assert_data_3 =
       {.values = (void *)0};
     __e_acsl_assert_register_int(& __gen_e_acsl_assert_data_3,"\\at(A,Pre)",
-                                 0,__gen_e_acsl_at_2);
+                                 0,__gen_e_acsl_at_3);
     __e_acsl_assert_register_int(& __gen_e_acsl_assert_data_3,"\\old(A)",0,
-                                 __gen_e_acsl_at);
-    if (__gen_e_acsl_at_2 == __gen_e_acsl_at) {
+                                 __gen_e_acsl_at_2);
+    if (__gen_e_acsl_at_3 == __gen_e_acsl_at_2) {
       __e_acsl_assert_register_int(& __gen_e_acsl_assert_data_3,"\\old(A)",0,
                                    __gen_e_acsl_at);
       __gen_e_acsl_and = __gen_e_acsl_at == 0;
diff --git a/src/plugins/e-acsl/tests/arith/oracle/gen_at_on-purely-logic-variables.c b/src/plugins/e-acsl/tests/arith/oracle/gen_at_on-purely-logic-variables.c
index 54abb67f00134052a63240bbff4b4cf8de25563b..3850002297e31c2857172366f0c352b776b1589b 100644
--- a/src/plugins/e-acsl/tests/arith/oracle/gen_at_on-purely-logic-variables.c
+++ b/src/plugins/e-acsl/tests/arith/oracle/gen_at_on-purely-logic-variables.c
@@ -105,19 +105,19 @@ int main(void)
   int *__gen_e_acsl_at_7;
   long *__gen_e_acsl_at_6;
   int *__gen_e_acsl_at_5;
+  int *__gen_e_acsl_at_4;
   int *__gen_e_acsl_at_3;
   long *__gen_e_acsl_at_2;
-  int *__gen_e_acsl_at;
   int __retres;
   int n;
   __e_acsl_memory_init((int *)0,(char ***)0,8UL);
   __gen_e_acsl_at_8 = (long *)malloc(64UL);
-  __gen_e_acsl_at_7 = (int *)malloc(12000UL);
+  __gen_e_acsl_at_7 = (int *)malloc(528UL);
   __gen_e_acsl_at_6 = (long *)malloc(2496UL);
-  __gen_e_acsl_at_5 = (int *)malloc(528UL);
+  __gen_e_acsl_at_5 = (int *)malloc(12000UL);
+  __gen_e_acsl_at_4 = (int *)malloc(4UL);
   __gen_e_acsl_at_3 = (int *)malloc(12UL);
   __gen_e_acsl_at_2 = (long *)malloc(8UL);
-  __gen_e_acsl_at = (int *)malloc(4UL);
   __e_acsl_store_block((void *)(& n),4UL);
   __e_acsl_full_init((void *)(& n));
   n = 7;
@@ -125,12 +125,7 @@ int main(void)
   {
     int __gen_e_acsl_i;
     __gen_e_acsl_i = 3;
-    *(__gen_e_acsl_at + 0) = n + (long)__gen_e_acsl_i == 10L;
-  }
-  {
-    int __gen_e_acsl_i_2;
-    __gen_e_acsl_i_2 = 3;
-    *(__gen_e_acsl_at_2 + 0) = n + (long)__gen_e_acsl_i_2;
+    *(__gen_e_acsl_at_2 + 0) = n + (long)__gen_e_acsl_i;
   }
   {
     int __gen_e_acsl_j;
@@ -141,27 +136,40 @@ int main(void)
       __gen_e_acsl_j ++;
     }
   }
+  {
+    int __gen_e_acsl_i_2;
+    __gen_e_acsl_i_2 = 3;
+    *(__gen_e_acsl_at_4 + 0) = n + (long)__gen_e_acsl_i_2 == 10L;
+  }
   ;
   __e_acsl_full_init((void *)(& n));
   n = 9;
   K:
   {
-    int __gen_e_acsl_k;
     int __gen_e_acsl_u;
     int __gen_e_acsl_v;
-    __gen_e_acsl_k = -7;
-    __gen_e_acsl_u = 9;
+    int __gen_e_acsl_w;
+    __gen_e_acsl_u = 10;
     while (1) {
-      if (__gen_e_acsl_u < 21) ; else break;
-      __gen_e_acsl_v = -5 + 1;
+      if (__gen_e_acsl_u < 20) ; else break;
+      __gen_e_acsl_v = -10 + 1;
       while (1) {
-        if (__gen_e_acsl_v <= 6) ; else break;
         {
-          long __gen_e_acsl_if;
-          if (__gen_e_acsl_u > 0) __gen_e_acsl_if = n + (long)__gen_e_acsl_k;
-          else __gen_e_acsl_if = __gen_e_acsl_u + __gen_e_acsl_v;
-          *(__gen_e_acsl_at_5 + ((__gen_e_acsl_u - 9) * 11 + (__gen_e_acsl_v - -4))) = 
-          __gen_e_acsl_if > 0L;
+          int __gen_e_acsl_u_3;
+          __gen_e_acsl_u_3 = -2;
+          if (__gen_e_acsl_v <= -5 + __gen_e_acsl_u_3) ; else break;
+        }
+        __gen_e_acsl_w = 100 + 1;
+        while (1) {
+          if (__gen_e_acsl_w <= 200) ; else break;
+          {
+            int __gen_e_acsl_u_2;
+            __gen_e_acsl_u_2 = 42;
+            *(__gen_e_acsl_at_5 + ((__gen_e_acsl_u - 10) * 300 + ((__gen_e_acsl_v - -9) * 100 + (
+                                                                  __gen_e_acsl_w - 101)))) = 
+            (((n - (long)__gen_e_acsl_u) + __gen_e_acsl_u_2) + __gen_e_acsl_v) + __gen_e_acsl_w > 0L;
+          }
+          __gen_e_acsl_w ++;
         }
         __gen_e_acsl_v ++;
       }
@@ -169,56 +177,47 @@ int main(void)
     }
   }
   {
-    int __gen_e_acsl_u_2;
+    int __gen_e_acsl_u_4;
     int __gen_e_acsl_v_2;
-    __gen_e_acsl_u_2 = 9;
+    __gen_e_acsl_u_4 = 9;
     while (1) {
-      if (__gen_e_acsl_u_2 < 21) ; else break;
+      if (__gen_e_acsl_u_4 < 21) ; else break;
       __gen_e_acsl_v_2 = -5 + 1;
       while (1) {
         {
-          int __gen_e_acsl_if_2;
-          if (__gen_e_acsl_u_2 < 15) __gen_e_acsl_if_2 = __gen_e_acsl_u_2 + 6;
-          else __gen_e_acsl_if_2 = 3;
-          if (__gen_e_acsl_v_2 <= __gen_e_acsl_if_2) ; else break;
+          int __gen_e_acsl_if;
+          if (__gen_e_acsl_u_4 < 15) __gen_e_acsl_if = __gen_e_acsl_u_4 + 6;
+          else __gen_e_acsl_if = 3;
+          if (__gen_e_acsl_v_2 <= __gen_e_acsl_if) ; else break;
         }
-        *(__gen_e_acsl_at_6 + ((__gen_e_acsl_u_2 - 9) * 26 + (__gen_e_acsl_v_2 - -4))) = 
-        (n + (long)__gen_e_acsl_u_2) + __gen_e_acsl_v_2;
+        *(__gen_e_acsl_at_6 + ((__gen_e_acsl_u_4 - 9) * 26 + (__gen_e_acsl_v_2 - -4))) = 
+        (n + (long)__gen_e_acsl_u_4) + __gen_e_acsl_v_2;
         __gen_e_acsl_v_2 ++;
       }
-      __gen_e_acsl_u_2 ++;
+      __gen_e_acsl_u_4 ++;
     }
   }
   {
-    int __gen_e_acsl_u_3;
+    int __gen_e_acsl_k;
+    int __gen_e_acsl_u_5;
     int __gen_e_acsl_v_3;
-    int __gen_e_acsl_w;
-    __gen_e_acsl_u_3 = 10;
+    __gen_e_acsl_k = -7;
+    __gen_e_acsl_u_5 = 9;
     while (1) {
-      if (__gen_e_acsl_u_3 < 20) ; else break;
-      __gen_e_acsl_v_3 = -10 + 1;
+      if (__gen_e_acsl_u_5 < 21) ; else break;
+      __gen_e_acsl_v_3 = -5 + 1;
       while (1) {
+        if (__gen_e_acsl_v_3 <= 6) ; else break;
         {
-          int __gen_e_acsl_u_5;
-          __gen_e_acsl_u_5 = -2;
-          if (__gen_e_acsl_v_3 <= -5 + __gen_e_acsl_u_5) ; else break;
-        }
-        __gen_e_acsl_w = 100 + 1;
-        while (1) {
-          if (__gen_e_acsl_w <= 200) ; else break;
-          {
-            int __gen_e_acsl_u_4;
-            __gen_e_acsl_u_4 = 42;
-            *(__gen_e_acsl_at_7 + ((__gen_e_acsl_u_3 - 10) * 300 + ((
-                                                                    __gen_e_acsl_v_3 - -9) * 100 + (
-                                                                    __gen_e_acsl_w - 101)))) = 
-            (((n - (long)__gen_e_acsl_u_3) + __gen_e_acsl_u_4) + __gen_e_acsl_v_3) + __gen_e_acsl_w > 0L;
-          }
-          __gen_e_acsl_w ++;
+          long __gen_e_acsl_if_2;
+          if (__gen_e_acsl_u_5 > 0) __gen_e_acsl_if_2 = n + (long)__gen_e_acsl_k;
+          else __gen_e_acsl_if_2 = __gen_e_acsl_u_5 + __gen_e_acsl_v_3;
+          *(__gen_e_acsl_at_7 + ((__gen_e_acsl_u_5 - 9) * 11 + (__gen_e_acsl_v_3 - -4))) = 
+          __gen_e_acsl_if_2 > 0L;
         }
         __gen_e_acsl_v_3 ++;
       }
-      __gen_e_acsl_u_3 ++;
+      __gen_e_acsl_u_5 ++;
     }
   }
   ;
@@ -231,20 +230,21 @@ int main(void)
     __gen_e_acsl_i_3 = 3;
     __e_acsl_assert_register_int(& __gen_e_acsl_assert_data,
                                  "\\at(n + i == 10,L)",0,
-                                 *(__gen_e_acsl_at + 0));
+                                 *(__gen_e_acsl_at_4 + 0));
     __e_acsl_assert_data_t __gen_e_acsl_assert_data_2 =
       {.values = (void *)0};
-    __gen_e_acsl_valid_read = __e_acsl_valid_read((void *)(__gen_e_acsl_at + 0),
+    __gen_e_acsl_valid_read = __e_acsl_valid_read((void *)(__gen_e_acsl_at_4 + 0),
                                                   sizeof(int),
-                                                  (void *)__gen_e_acsl_at,
-                                                  (void *)(& __gen_e_acsl_at));
+                                                  (void *)__gen_e_acsl_at_4,
+                                                  (void *)(& __gen_e_acsl_at_4));
     __e_acsl_assert_register_ptr(& __gen_e_acsl_assert_data_2,
-                                 "__gen_e_acsl_at",(void *)__gen_e_acsl_at);
+                                 "__gen_e_acsl_at_4",
+                                 (void *)__gen_e_acsl_at_4);
     __e_acsl_assert_register_ulong(& __gen_e_acsl_assert_data_2,
                                    "sizeof(int)",0,sizeof(int));
     __gen_e_acsl_assert_data_2.blocking = 1;
     __gen_e_acsl_assert_data_2.kind = "RTE";
-    __gen_e_acsl_assert_data_2.pred_txt = "\\valid_read(__gen_e_acsl_at + 0)";
+    __gen_e_acsl_assert_data_2.pred_txt = "\\valid_read(__gen_e_acsl_at_4 + 0)";
     __gen_e_acsl_assert_data_2.file = "at_on-purely-logic-variables.c";
     __gen_e_acsl_assert_data_2.fct = "main";
     __gen_e_acsl_assert_data_2.line = 28;
@@ -257,7 +257,7 @@ int main(void)
     __gen_e_acsl_assert_data.file = "at_on-purely-logic-variables.c";
     __gen_e_acsl_assert_data.fct = "main";
     __gen_e_acsl_assert_data.line = 28;
-    __e_acsl_assert(*(__gen_e_acsl_at + 0),& __gen_e_acsl_assert_data);
+    __e_acsl_assert(*(__gen_e_acsl_at_4 + 0),& __gen_e_acsl_assert_data);
     __e_acsl_assert_clean(& __gen_e_acsl_assert_data);
   }
   /*@ assert \let i = 3; \at(n + i == 10,L); */ ;
@@ -341,17 +341,17 @@ int main(void)
             __e_acsl_assert_data_t __gen_e_acsl_assert_data_6 =
               {.values = (void *)0};
             __gen_e_acsl_valid_read_3 = __e_acsl_valid_read((void *)(
-                                                            __gen_e_acsl_at_5 + (int)(
+                                                            __gen_e_acsl_at_7 + (int)(
                                                             (long)((int)(
                                                             (long)((int)(
                                                             __gen_e_acsl_u_6 - 9L)) * 11L)) + (int)(
                                                             __gen_e_acsl_v_4 - -4L))),
                                                             sizeof(int),
-                                                            (void *)__gen_e_acsl_at_5,
-                                                            (void *)(& __gen_e_acsl_at_5));
+                                                            (void *)__gen_e_acsl_at_7,
+                                                            (void *)(& __gen_e_acsl_at_7));
             __e_acsl_assert_register_ptr(& __gen_e_acsl_assert_data_6,
-                                         "__gen_e_acsl_at_5",
-                                         (void *)__gen_e_acsl_at_5);
+                                         "__gen_e_acsl_at_7",
+                                         (void *)__gen_e_acsl_at_7);
             __e_acsl_assert_register_int(& __gen_e_acsl_assert_data_6,
                                          "__gen_e_acsl_u_6",0,
                                          __gen_e_acsl_u_6);
@@ -362,7 +362,7 @@ int main(void)
                                            "sizeof(int)",0,sizeof(int));
             __gen_e_acsl_assert_data_6.blocking = 1;
             __gen_e_acsl_assert_data_6.kind = "RTE";
-            __gen_e_acsl_assert_data_6.pred_txt = "\\valid_read(__gen_e_acsl_at_5 +\n            (int)((int)((int)(__gen_e_acsl_u_6 - 9) * 11) +\n                  (int)(__gen_e_acsl_v_4 - -4)))";
+            __gen_e_acsl_assert_data_6.pred_txt = "\\valid_read(__gen_e_acsl_at_7 +\n            (int)((int)((int)(__gen_e_acsl_u_6 - 9) * 11) +\n                  (int)(__gen_e_acsl_v_4 - -4)))";
             __gen_e_acsl_assert_data_6.file = "at_on-purely-logic-variables.c";
             __gen_e_acsl_assert_data_6.fct = "main";
             __gen_e_acsl_assert_data_6.line = 34;
@@ -370,7 +370,7 @@ int main(void)
             __e_acsl_assert(__gen_e_acsl_valid_read_3,
                             & __gen_e_acsl_assert_data_6);
             __e_acsl_assert_clean(& __gen_e_acsl_assert_data_6);
-            if (*(__gen_e_acsl_at_5 + ((__gen_e_acsl_u_6 - 9) * 11 + (
+            if (*(__gen_e_acsl_at_7 + ((__gen_e_acsl_u_6 - 9) * 11 + (
                                        __gen_e_acsl_v_4 - -4)))) ;
             else {
               __gen_e_acsl_forall = 0;
@@ -656,7 +656,7 @@ int main(void)
                 __e_acsl_assert_data_t __gen_e_acsl_assert_data_14 =
                   {.values = (void *)0};
                 __gen_e_acsl_valid_read_7 = __e_acsl_valid_read((void *)(
-                                                                __gen_e_acsl_at_7 + (int)(
+                                                                __gen_e_acsl_at_5 + (int)(
                                                                 (long)((int)(
                                                                 (long)((int)(
                                                                 __gen_e_acsl_u_8 - 10L)) * 300L)) + (int)(
@@ -665,11 +665,11 @@ int main(void)
                                                                 __gen_e_acsl_v_6 - -9L)) * 100L)) + (int)(
                                                                 __gen_e_acsl_w_2 - 101L)))),
                                                                 sizeof(int),
-                                                                (void *)__gen_e_acsl_at_7,
-                                                                (void *)(& __gen_e_acsl_at_7));
+                                                                (void *)__gen_e_acsl_at_5,
+                                                                (void *)(& __gen_e_acsl_at_5));
                 __e_acsl_assert_register_ptr(& __gen_e_acsl_assert_data_14,
-                                             "__gen_e_acsl_at_7",
-                                             (void *)__gen_e_acsl_at_7);
+                                             "__gen_e_acsl_at_5",
+                                             (void *)__gen_e_acsl_at_5);
                 __e_acsl_assert_register_int(& __gen_e_acsl_assert_data_14,
                                              "__gen_e_acsl_u_8",0,
                                              __gen_e_acsl_u_8);
@@ -683,7 +683,7 @@ int main(void)
                                                "sizeof(int)",0,sizeof(int));
                 __gen_e_acsl_assert_data_14.blocking = 1;
                 __gen_e_acsl_assert_data_14.kind = "RTE";
-                __gen_e_acsl_assert_data_14.pred_txt = "\\valid_read(__gen_e_acsl_at_7 +\n            (int)((int)((int)(__gen_e_acsl_u_8 - 10) * 300) +\n                  (int)((int)((int)(__gen_e_acsl_v_6 - -9) * 100) +\n                        (int)(__gen_e_acsl_w_2 - 101))))";
+                __gen_e_acsl_assert_data_14.pred_txt = "\\valid_read(__gen_e_acsl_at_5 +\n            (int)((int)((int)(__gen_e_acsl_u_8 - 10) * 300) +\n                  (int)((int)((int)(__gen_e_acsl_v_6 - -9) * 100) +\n                        (int)(__gen_e_acsl_w_2 - 101))))";
                 __gen_e_acsl_assert_data_14.file = "at_on-purely-logic-variables.c";
                 __gen_e_acsl_assert_data_14.fct = "main";
                 __gen_e_acsl_assert_data_14.line = 59;
@@ -691,7 +691,7 @@ int main(void)
                 __e_acsl_assert(__gen_e_acsl_valid_read_7,
                                 & __gen_e_acsl_assert_data_14);
                 __e_acsl_assert_clean(& __gen_e_acsl_assert_data_14);
-                if (! *(__gen_e_acsl_at_7 + ((__gen_e_acsl_u_8 - 10) * 300 + (
+                if (! *(__gen_e_acsl_at_5 + ((__gen_e_acsl_u_8 - 10) * 300 + (
                                              (__gen_e_acsl_v_6 - -9) * 100 + (
                                              __gen_e_acsl_w_2 - 101))))) 
                   ;
@@ -751,9 +751,9 @@ int main(void)
   __retres = 0;
   __e_acsl_delete_block((void *)(t));
   __e_acsl_delete_block((void *)(& n));
-  free((void *)__gen_e_acsl_at);
   free((void *)__gen_e_acsl_at_2);
   free((void *)__gen_e_acsl_at_3);
+  free((void *)__gen_e_acsl_at_4);
   free((void *)__gen_e_acsl_at_5);
   free((void *)__gen_e_acsl_at_6);
   free((void *)__gen_e_acsl_at_7);
@@ -785,7 +785,8 @@ void __gen_e_acsl_f(int *t)
       int __gen_e_acsl_valid_read;
       __e_acsl_assert_data_t __gen_e_acsl_assert_data =
         {.values = (void *)0};
-      __gen_e_acsl_valid_read = __e_acsl_valid_read((void *)(t + __gen_e_acsl_m),
+      __gen_e_acsl_valid_read = __e_acsl_valid_read((void *)(t + (int)(
+                                                             __gen_e_acsl_m - 4L)),
                                                     sizeof(int),(void *)t,
                                                     (void *)(& t));
       __e_acsl_assert_register_ptr(& __gen_e_acsl_assert_data,"t",(void *)t);
@@ -795,14 +796,14 @@ void __gen_e_acsl_f(int *t)
                                      "sizeof(int)",0,sizeof(int));
       __gen_e_acsl_assert_data.blocking = 1;
       __gen_e_acsl_assert_data.kind = "RTE";
-      __gen_e_acsl_assert_data.pred_txt = "\\valid_read(t + __gen_e_acsl_m)";
+      __gen_e_acsl_assert_data.pred_txt = "\\valid_read(t + (int)(__gen_e_acsl_m - 4))";
       __gen_e_acsl_assert_data.file = "at_on-purely-logic-variables.c";
       __gen_e_acsl_assert_data.fct = "f";
       __gen_e_acsl_assert_data.line = 8;
       __gen_e_acsl_assert_data.name = "mem_access";
       __e_acsl_assert(__gen_e_acsl_valid_read,& __gen_e_acsl_assert_data);
       __e_acsl_assert_clean(& __gen_e_acsl_assert_data);
-      *(__gen_e_acsl_at + 0) = *(t + __gen_e_acsl_m) == -4;
+      *(__gen_e_acsl_at + 0) = *(t + (__gen_e_acsl_m - 4));
     }
   }
   {
@@ -812,8 +813,7 @@ void __gen_e_acsl_f(int *t)
       int __gen_e_acsl_valid_read_2;
       __e_acsl_assert_data_t __gen_e_acsl_assert_data_2 =
         {.values = (void *)0};
-      __gen_e_acsl_valid_read_2 = __e_acsl_valid_read((void *)(t + (int)(
-                                                               __gen_e_acsl_m_2 - 4L)),
+      __gen_e_acsl_valid_read_2 = __e_acsl_valid_read((void *)(t + __gen_e_acsl_m_2),
                                                       sizeof(int),(void *)t,
                                                       (void *)(& t));
       __e_acsl_assert_register_ptr(& __gen_e_acsl_assert_data_2,"t",
@@ -824,14 +824,14 @@ void __gen_e_acsl_f(int *t)
                                      "sizeof(int)",0,sizeof(int));
       __gen_e_acsl_assert_data_2.blocking = 1;
       __gen_e_acsl_assert_data_2.kind = "RTE";
-      __gen_e_acsl_assert_data_2.pred_txt = "\\valid_read(t + (int)(__gen_e_acsl_m_2 - 4))";
+      __gen_e_acsl_assert_data_2.pred_txt = "\\valid_read(t + __gen_e_acsl_m_2)";
       __gen_e_acsl_assert_data_2.file = "at_on-purely-logic-variables.c";
       __gen_e_acsl_assert_data_2.fct = "f";
       __gen_e_acsl_assert_data_2.line = 8;
       __gen_e_acsl_assert_data_2.name = "mem_access";
       __e_acsl_assert(__gen_e_acsl_valid_read_2,& __gen_e_acsl_assert_data_2);
       __e_acsl_assert_clean(& __gen_e_acsl_assert_data_2);
-      *(__gen_e_acsl_at_2 + 0) = *(t + (__gen_e_acsl_m_2 - 4));
+      *(__gen_e_acsl_at_2 + 0) = *(t + __gen_e_acsl_m_2) == -4;
     }
   }
   {
@@ -997,17 +997,18 @@ void __gen_e_acsl_f(int *t)
     __gen_e_acsl_m_3 = 4;
     __e_acsl_assert_data_t __gen_e_acsl_assert_data_9 =
       {.values = (void *)0};
-    __gen_e_acsl_valid_read_7 = __e_acsl_valid_read((void *)(__gen_e_acsl_at + 0),
+    __gen_e_acsl_valid_read_7 = __e_acsl_valid_read((void *)(__gen_e_acsl_at_2 + 0),
                                                     sizeof(int),
-                                                    (void *)__gen_e_acsl_at,
-                                                    (void *)(& __gen_e_acsl_at));
+                                                    (void *)__gen_e_acsl_at_2,
+                                                    (void *)(& __gen_e_acsl_at_2));
     __e_acsl_assert_register_ptr(& __gen_e_acsl_assert_data_9,
-                                 "__gen_e_acsl_at",(void *)__gen_e_acsl_at);
+                                 "__gen_e_acsl_at_2",
+                                 (void *)__gen_e_acsl_at_2);
     __e_acsl_assert_register_ulong(& __gen_e_acsl_assert_data_9,
                                    "sizeof(int)",0,sizeof(int));
     __gen_e_acsl_assert_data_9.blocking = 1;
     __gen_e_acsl_assert_data_9.kind = "RTE";
-    __gen_e_acsl_assert_data_9.pred_txt = "\\valid_read(__gen_e_acsl_at + 0)";
+    __gen_e_acsl_assert_data_9.pred_txt = "\\valid_read(__gen_e_acsl_at_2 + 0)";
     __gen_e_acsl_assert_data_9.file = "at_on-purely-logic-variables.c";
     __gen_e_acsl_assert_data_9.fct = "f";
     __gen_e_acsl_assert_data_9.line = 8;
@@ -1016,23 +1017,22 @@ void __gen_e_acsl_f(int *t)
     __e_acsl_assert_clean(& __gen_e_acsl_assert_data_9);
     __e_acsl_assert_register_int(& __gen_e_acsl_assert_data_8,
                                  "\\old(*(t + m) == -4)",0,
-                                 *(__gen_e_acsl_at + 0));
-    if (*(__gen_e_acsl_at + 0)) {
+                                 *(__gen_e_acsl_at_2 + 0));
+    if (*(__gen_e_acsl_at_2 + 0)) {
       int __gen_e_acsl_valid_read_8;
       __e_acsl_assert_data_t __gen_e_acsl_assert_data_10 =
         {.values = (void *)0};
-      __gen_e_acsl_valid_read_8 = __e_acsl_valid_read((void *)(__gen_e_acsl_at_2 + 0),
+      __gen_e_acsl_valid_read_8 = __e_acsl_valid_read((void *)(__gen_e_acsl_at + 0),
                                                       sizeof(int),
-                                                      (void *)__gen_e_acsl_at_2,
-                                                      (void *)(& __gen_e_acsl_at_2));
+                                                      (void *)__gen_e_acsl_at,
+                                                      (void *)(& __gen_e_acsl_at));
       __e_acsl_assert_register_ptr(& __gen_e_acsl_assert_data_10,
-                                   "__gen_e_acsl_at_2",
-                                   (void *)__gen_e_acsl_at_2);
+                                   "__gen_e_acsl_at",(void *)__gen_e_acsl_at);
       __e_acsl_assert_register_ulong(& __gen_e_acsl_assert_data_10,
                                      "sizeof(int)",0,sizeof(int));
       __gen_e_acsl_assert_data_10.blocking = 1;
       __gen_e_acsl_assert_data_10.kind = "RTE";
-      __gen_e_acsl_assert_data_10.pred_txt = "\\valid_read(__gen_e_acsl_at_2 + 0)";
+      __gen_e_acsl_assert_data_10.pred_txt = "\\valid_read(__gen_e_acsl_at + 0)";
       __gen_e_acsl_assert_data_10.file = "at_on-purely-logic-variables.c";
       __gen_e_acsl_assert_data_10.fct = "f";
       __gen_e_acsl_assert_data_10.line = 8;
@@ -1042,8 +1042,8 @@ void __gen_e_acsl_f(int *t)
       __e_acsl_assert_clean(& __gen_e_acsl_assert_data_10);
       __e_acsl_assert_register_int(& __gen_e_acsl_assert_data_8,
                                    "\\old(*(t + (m - 4)))",0,
-                                   *(__gen_e_acsl_at_2 + 0));
-      __gen_e_acsl_and_2 = *(__gen_e_acsl_at_2 + 0) == 9;
+                                   *(__gen_e_acsl_at + 0));
+      __gen_e_acsl_and_2 = *(__gen_e_acsl_at + 0) == 9;
     }
     else __gen_e_acsl_and_2 = 0;
     __gen_e_acsl_assert_data_8.blocking = 1;
diff --git a/src/plugins/e-acsl/tests/arith/oracle/gen_functions.c b/src/plugins/e-acsl/tests/arith/oracle/gen_functions.c
index 9f9358add8a131caac5f6a515f64a5a15ecf2a75..490dff8e59b38f16b30b4401ed5d7866fac82e67 100644
--- a/src/plugins/e-acsl/tests/arith/oracle/gen_functions.c
+++ b/src/plugins/e-acsl/tests/arith/oracle/gen_functions.c
@@ -613,6 +613,128 @@ void test_f4(void)
   return;
 }
 
+/*@ behavior a:
+      ensures 1 == -\old(j);
+    
+    behavior b:
+      ensures 2 == \old(j); */
+int __gen_e_acsl_f5(long j);
+
+int f5(long j)
+{
+  int __retres;
+  {
+    __e_acsl_assert_data_t __gen_e_acsl_assert_data = {.values = (void *)0};
+    __gen_e_acsl_assert_data.blocking = 1;
+    __gen_e_acsl_assert_data.kind = "Assertion";
+    __gen_e_acsl_assert_data.pred_txt = "\\false";
+    __gen_e_acsl_assert_data.file = "functions.c";
+    __gen_e_acsl_assert_data.fct = "f5";
+    __gen_e_acsl_assert_data.line = 122;
+    __gen_e_acsl_assert_data.name = "missing_return";
+    __e_acsl_assert(0,& __gen_e_acsl_assert_data);
+  }
+  /*@ assert missing_return: \false; */ ;
+  __retres = 0;
+  return __retres;
+}
+
+int test_f5(void)
+{
+  int __retres;
+  __gen_e_acsl_f5((long)1);
+  {
+    __e_acsl_assert_data_t __gen_e_acsl_assert_data = {.values = (void *)0};
+    __gen_e_acsl_assert_data.blocking = 1;
+    __gen_e_acsl_assert_data.kind = "Assertion";
+    __gen_e_acsl_assert_data.pred_txt = "\\false";
+    __gen_e_acsl_assert_data.file = "functions.c";
+    __gen_e_acsl_assert_data.fct = "test_f5";
+    __gen_e_acsl_assert_data.line = 126;
+    __gen_e_acsl_assert_data.name = "missing_return";
+    __e_acsl_assert(0,& __gen_e_acsl_assert_data);
+  }
+  /*@ assert missing_return: \false; */ ;
+  __retres = 0;
+  return __retres;
+}
+
+/*@ behavior a:
+      ensures 1 == -\old(j);
+    
+    behavior b:
+      ensures 2 == \old(j); */
+int __gen_e_acsl_f5(long j)
+{
+  __e_acsl_contract_t *__gen_e_acsl_contract;
+  __e_acsl_mpz_t __gen_e_acsl_at_2;
+  long __gen_e_acsl_at;
+  int __retres;
+  {
+    __e_acsl_mpz_t __gen_e_acsl_j;
+    __gen_e_acsl_at = j;
+    __gmpz_init_set_si(__gen_e_acsl_j,j);
+    __gmpz_init_set(__gen_e_acsl_at_2,
+                    (__e_acsl_mpz_struct const *)(__gen_e_acsl_j));
+    __gen_e_acsl_contract = __e_acsl_contract_init(2UL);
+    __e_acsl_contract_set_behavior_assumes(__gen_e_acsl_contract,0UL,1);
+    __e_acsl_contract_set_behavior_assumes(__gen_e_acsl_contract,1UL,1);
+    __gmpz_clear(__gen_e_acsl_j);
+  }
+  __retres = f5(j);
+  {
+    int __gen_e_acsl_assumes_value;
+    __gen_e_acsl_assumes_value = __e_acsl_contract_get_behavior_assumes
+    ((__e_acsl_contract_t const *)__gen_e_acsl_contract,0UL);
+    if (__gen_e_acsl_assumes_value) {
+      __e_acsl_mpz_t __gen_e_acsl_;
+      __e_acsl_mpz_t __gen_e_acsl_neg;
+      int __gen_e_acsl_eq;
+      __e_acsl_assert_data_t __gen_e_acsl_assert_data =
+        {.values = (void *)0};
+      __gmpz_init_set_si(__gen_e_acsl_,1L);
+      __gmpz_init(__gen_e_acsl_neg);
+      __gmpz_neg(__gen_e_acsl_neg,
+                 (__e_acsl_mpz_struct const *)(__gen_e_acsl_at_2));
+      __gen_e_acsl_eq = __gmpz_cmp((__e_acsl_mpz_struct const *)(__gen_e_acsl_),
+                                   (__e_acsl_mpz_struct const *)(__gen_e_acsl_neg));
+      __e_acsl_assert_register_mpz(& __gen_e_acsl_assert_data,"\\old(j)",0,
+                                   (__e_acsl_mpz_struct const *)(__gen_e_acsl_at_2));
+      __gen_e_acsl_assert_data.blocking = 1;
+      __gen_e_acsl_assert_data.kind = "Postcondition";
+      __gen_e_acsl_assert_data.pred_txt = "1 == -\\old(j)";
+      __gen_e_acsl_assert_data.file = "functions.c";
+      __gen_e_acsl_assert_data.fct = "f5";
+      __gen_e_acsl_assert_data.line = 118;
+      __gen_e_acsl_assert_data.name = "a";
+      __e_acsl_assert(__gen_e_acsl_eq == 0,& __gen_e_acsl_assert_data);
+      __e_acsl_assert_clean(& __gen_e_acsl_assert_data);
+      __gmpz_clear(__gen_e_acsl_);
+      __gmpz_clear(__gen_e_acsl_neg);
+    }
+    __gen_e_acsl_assumes_value = __e_acsl_contract_get_behavior_assumes
+    ((__e_acsl_contract_t const *)__gen_e_acsl_contract,1UL);
+    if (__gen_e_acsl_assumes_value) {
+      __e_acsl_assert_data_t __gen_e_acsl_assert_data_2 =
+        {.values = (void *)0};
+      __e_acsl_assert_register_long(& __gen_e_acsl_assert_data_2,"\\old(j)",
+                                    0,__gen_e_acsl_at);
+      __gen_e_acsl_assert_data_2.blocking = 1;
+      __gen_e_acsl_assert_data_2.kind = "Postcondition";
+      __gen_e_acsl_assert_data_2.pred_txt = "2 == \\old(j)";
+      __gen_e_acsl_assert_data_2.file = "functions.c";
+      __gen_e_acsl_assert_data_2.fct = "f5";
+      __gen_e_acsl_assert_data_2.line = 120;
+      __gen_e_acsl_assert_data_2.name = "b";
+      __e_acsl_assert(2L == __gen_e_acsl_at,& __gen_e_acsl_assert_data_2);
+      __e_acsl_assert_clean(& __gen_e_acsl_assert_data_2);
+    }
+    __e_acsl_contract_clean(__gen_e_acsl_contract);
+    __gmpz_clear(__gen_e_acsl_at_2);
+    return __retres;
+  }
+}
+
 /*@ requires k_pred(x); */
 void __gen_e_acsl_k(int x)
 {
diff --git a/src/plugins/e-acsl/tests/arith/oracle/gen_rationals.c b/src/plugins/e-acsl/tests/arith/oracle/gen_rationals.c
index 40e395ec27c766a1c5613115a1828868132a118b..b301bf239fc22186aeaf8dc676523e050afb0f7e 100644
--- a/src/plugins/e-acsl/tests/arith/oracle/gen_rationals.c
+++ b/src/plugins/e-acsl/tests/arith/oracle/gen_rationals.c
@@ -356,19 +356,19 @@ double __gen_e_acsl_avg(double a, double b)
   __e_acsl_mpq_t __gen_e_acsl_at;
   double __retres;
   {
-    __e_acsl_mpq_t __gen_e_acsl_a;
     __e_acsl_mpq_t __gen_e_acsl_b;
-    __gmpq_init(__gen_e_acsl_a);
-    __gmpq_set_d(__gen_e_acsl_a,a);
-    __gmpq_init(__gen_e_acsl_at);
-    __gmpq_set(__gen_e_acsl_at,(__e_acsl_mpq_struct const *)(__gen_e_acsl_a));
+    __e_acsl_mpq_t __gen_e_acsl_a;
     __gmpq_init(__gen_e_acsl_b);
     __gmpq_set_d(__gen_e_acsl_b,b);
+    __gmpq_init(__gen_e_acsl_at);
+    __gmpq_set(__gen_e_acsl_at,(__e_acsl_mpq_struct const *)(__gen_e_acsl_b));
+    __gmpq_init(__gen_e_acsl_a);
+    __gmpq_set_d(__gen_e_acsl_a,a);
     __gmpq_init(__gen_e_acsl_at_2);
     __gmpq_set(__gen_e_acsl_at_2,
-               (__e_acsl_mpq_struct const *)(__gen_e_acsl_b));
-    __gmpq_clear(__gen_e_acsl_a);
+               (__e_acsl_mpq_struct const *)(__gen_e_acsl_a));
     __gmpq_clear(__gen_e_acsl_b);
+    __gmpq_clear(__gen_e_acsl_a);
   }
   __retres = avg(a,b);
   {
@@ -386,8 +386,8 @@ double __gen_e_acsl_avg(double a, double b)
     __gen_e_acsl_delta = 1;
     __gmpq_init(__gen_e_acsl_add);
     __gmpq_add(__gen_e_acsl_add,
-               (__e_acsl_mpq_struct const *)(__gen_e_acsl_at),
-               (__e_acsl_mpq_struct const *)(__gen_e_acsl_at_2));
+               (__e_acsl_mpq_struct const *)(__gen_e_acsl_at_2),
+               (__e_acsl_mpq_struct const *)(__gen_e_acsl_at));
     __gmpq_init(__gen_e_acsl_);
     __gmpq_set_str(__gen_e_acsl_,"2",10);
     __gmpq_init(__gen_e_acsl_div);
@@ -441,9 +441,9 @@ double __gen_e_acsl_avg(double a, double b)
     }
     else __gen_e_acsl_and = 0;
     __e_acsl_assert_register_mpq(& __gen_e_acsl_assert_data,"\\old(a)",
-                                 (__e_acsl_mpq_struct const *)(__gen_e_acsl_at));
-    __e_acsl_assert_register_mpq(& __gen_e_acsl_assert_data,"\\old(b)",
                                  (__e_acsl_mpq_struct const *)(__gen_e_acsl_at_2));
+    __e_acsl_assert_register_mpq(& __gen_e_acsl_assert_data,"\\old(b)",
+                                 (__e_acsl_mpq_struct const *)(__gen_e_acsl_at));
     __gen_e_acsl_assert_data.blocking = 1;
     __gen_e_acsl_assert_data.kind = "Postcondition";
     __gen_e_acsl_assert_data.pred_txt = "\\let delta = 1;\n\\let avg_real = (\\old(a) + \\old(b)) / 2;\n  avg_real - delta < \\result < avg_real + delta";
diff --git a/src/plugins/e-acsl/tests/bts/oracle/gen_bts1307.c b/src/plugins/e-acsl/tests/bts/oracle/gen_bts1307.c
index e85da85a4b1381606d700317bcae52f1e401da71..ba7fd848e53192e39a03df7416f9a3aad97b81f2 100644
--- a/src/plugins/e-acsl/tests/bts/oracle/gen_bts1307.c
+++ b/src/plugins/e-acsl/tests/bts/oracle/gen_bts1307.c
@@ -96,6 +96,9 @@ int main(void)
 void __gen_e_acsl_bar(float *Mtmin_in, float *Mwmin, float *Mtmin_out)
 {
   __e_acsl_contract_t *__gen_e_acsl_contract;
+  float *__gen_e_acsl_at_6;
+  float *__gen_e_acsl_at_5;
+  float *__gen_e_acsl_at_4;
   float *__gen_e_acsl_at_3;
   float *__gen_e_acsl_at_2;
   float *__gen_e_acsl_at;
@@ -106,9 +109,12 @@ void __gen_e_acsl_bar(float *Mtmin_in, float *Mwmin, float *Mtmin_out)
     __e_acsl_store_block((void *)(& Mtmin_out),8UL);
     __e_acsl_store_block((void *)(& Mwmin),8UL);
     __e_acsl_store_block((void *)(& Mtmin_in),8UL);
-    __gen_e_acsl_at = Mtmin_in;
-    __gen_e_acsl_at_2 = Mwmin;
-    __gen_e_acsl_at_3 = Mtmin_out;
+    __gen_e_acsl_at = Mwmin;
+    __gen_e_acsl_at_2 = Mtmin_in;
+    __gen_e_acsl_at_3 = Mwmin;
+    __gen_e_acsl_at_4 = Mtmin_in;
+    __gen_e_acsl_at_5 = Mtmin_in;
+    __gen_e_acsl_at_6 = Mtmin_out;
     __gen_e_acsl_contract = __e_acsl_contract_init(1UL);
     __e_acsl_assert_data_t __gen_e_acsl_assert_data = {.values = (void *)0};
     __gen_e_acsl_valid = __e_acsl_valid((void *)Mtmin_in,sizeof(float),
@@ -181,17 +187,18 @@ void __gen_e_acsl_bar(float *Mtmin_in, float *Mwmin, float *Mtmin_out)
         {.values = (void *)0};
       __e_acsl_assert_data_t __gen_e_acsl_assert_data_5 =
         {.values = (void *)0};
-      __gen_e_acsl_valid_read = __e_acsl_valid_read((void *)__gen_e_acsl_at,
+      __gen_e_acsl_valid_read = __e_acsl_valid_read((void *)__gen_e_acsl_at_5,
                                                     sizeof(float),
-                                                    (void *)__gen_e_acsl_at,
-                                                    (void *)(& __gen_e_acsl_at));
+                                                    (void *)__gen_e_acsl_at_5,
+                                                    (void *)(& __gen_e_acsl_at_5));
       __e_acsl_assert_register_ptr(& __gen_e_acsl_assert_data_5,
-                                   "__gen_e_acsl_at",(void *)__gen_e_acsl_at);
+                                   "__gen_e_acsl_at_5",
+                                   (void *)__gen_e_acsl_at_5);
       __e_acsl_assert_register_ulong(& __gen_e_acsl_assert_data_5,
                                      "sizeof(float)",0,sizeof(float));
       __gen_e_acsl_assert_data_5.blocking = 1;
       __gen_e_acsl_assert_data_5.kind = "RTE";
-      __gen_e_acsl_assert_data_5.pred_txt = "\\valid_read(__gen_e_acsl_at)";
+      __gen_e_acsl_assert_data_5.pred_txt = "\\valid_read(__gen_e_acsl_at_5)";
       __gen_e_acsl_assert_data_5.file = "bts1307.i";
       __gen_e_acsl_assert_data_5.fct = "bar";
       __gen_e_acsl_assert_data_5.line = 26;
@@ -200,36 +207,36 @@ void __gen_e_acsl_bar(float *Mtmin_in, float *Mwmin, float *Mtmin_out)
       __e_acsl_assert_clean(& __gen_e_acsl_assert_data_5);
       __e_acsl_assert_data_t __gen_e_acsl_assert_data_6 =
         {.values = (void *)0};
-      __gen_e_acsl_valid_read_2 = __e_acsl_valid_read((void *)__gen_e_acsl_at_3,
+      __gen_e_acsl_valid_read_2 = __e_acsl_valid_read((void *)__gen_e_acsl_at_6,
                                                       sizeof(float),
-                                                      (void *)__gen_e_acsl_at_3,
-                                                      (void *)(& __gen_e_acsl_at_3));
+                                                      (void *)__gen_e_acsl_at_6,
+                                                      (void *)(& __gen_e_acsl_at_6));
       __e_acsl_assert_register_ptr(& __gen_e_acsl_assert_data_6,
-                                   "__gen_e_acsl_at_3",
-                                   (void *)__gen_e_acsl_at_3);
+                                   "__gen_e_acsl_at_6",
+                                   (void *)__gen_e_acsl_at_6);
       __e_acsl_assert_register_ulong(& __gen_e_acsl_assert_data_6,
                                      "sizeof(float)",0,sizeof(float));
       __gen_e_acsl_assert_data_6.blocking = 1;
       __gen_e_acsl_assert_data_6.kind = "RTE";
-      __gen_e_acsl_assert_data_6.pred_txt = "\\valid_read(__gen_e_acsl_at_3)";
+      __gen_e_acsl_assert_data_6.pred_txt = "\\valid_read(__gen_e_acsl_at_6)";
       __gen_e_acsl_assert_data_6.file = "bts1307.i";
       __gen_e_acsl_assert_data_6.fct = "bar";
       __gen_e_acsl_assert_data_6.line = 26;
       __gen_e_acsl_assert_data_6.name = "mem_access";
       __e_acsl_assert(__gen_e_acsl_valid_read_2,& __gen_e_acsl_assert_data_6);
       __e_acsl_assert_clean(& __gen_e_acsl_assert_data_6);
-      if (*__gen_e_acsl_at_3 == *__gen_e_acsl_at) {
+      if (*__gen_e_acsl_at_6 == *__gen_e_acsl_at_5) {
         __e_acsl_mpq_t __gen_e_acsl_;
         __e_acsl_mpq_t __gen_e_acsl__2;
         __e_acsl_mpq_t __gen_e_acsl__3;
         __e_acsl_mpq_t __gen_e_acsl_mul;
         int __gen_e_acsl_lt;
         __gmpq_init(__gen_e_acsl_);
-        __gmpq_set_d(__gen_e_acsl_,(double)*__gen_e_acsl_at);
+        __gmpq_set_d(__gen_e_acsl_,(double)*__gen_e_acsl_at_4);
         __gmpq_init(__gen_e_acsl__2);
         __gmpq_set_str(__gen_e_acsl__2,"085/100",10);
         __gmpq_init(__gen_e_acsl__3);
-        __gmpq_set_d(__gen_e_acsl__3,(double)*__gen_e_acsl_at_2);
+        __gmpq_set_d(__gen_e_acsl__3,(double)*__gen_e_acsl_at_3);
         __gmpq_init(__gen_e_acsl_mul);
         __gmpq_mul(__gen_e_acsl_mul,
                    (__e_acsl_mpq_struct const *)(__gen_e_acsl__2),
@@ -247,18 +254,18 @@ void __gen_e_acsl_bar(float *Mtmin_in, float *Mwmin, float *Mtmin_out)
         int __gen_e_acsl_valid_read_3;
         __e_acsl_assert_data_t __gen_e_acsl_assert_data_7 =
           {.values = (void *)0};
-        __gen_e_acsl_valid_read_3 = __e_acsl_valid_read((void *)__gen_e_acsl_at,
+        __gen_e_acsl_valid_read_3 = __e_acsl_valid_read((void *)__gen_e_acsl_at_2,
                                                         sizeof(float),
-                                                        (void *)__gen_e_acsl_at,
-                                                        (void *)(& __gen_e_acsl_at));
+                                                        (void *)__gen_e_acsl_at_2,
+                                                        (void *)(& __gen_e_acsl_at_2));
         __e_acsl_assert_register_ptr(& __gen_e_acsl_assert_data_7,
-                                     "__gen_e_acsl_at",
-                                     (void *)__gen_e_acsl_at);
+                                     "__gen_e_acsl_at_2",
+                                     (void *)__gen_e_acsl_at_2);
         __e_acsl_assert_register_ulong(& __gen_e_acsl_assert_data_7,
                                        "sizeof(float)",0,sizeof(float));
         __gen_e_acsl_assert_data_7.blocking = 1;
         __gen_e_acsl_assert_data_7.kind = "RTE";
-        __gen_e_acsl_assert_data_7.pred_txt = "\\valid_read(__gen_e_acsl_at)";
+        __gen_e_acsl_assert_data_7.pred_txt = "\\valid_read(__gen_e_acsl_at_2)";
         __gen_e_acsl_assert_data_7.file = "bts1307.i";
         __gen_e_acsl_assert_data_7.fct = "bar";
         __gen_e_acsl_assert_data_7.line = 26;
@@ -267,8 +274,8 @@ void __gen_e_acsl_bar(float *Mtmin_in, float *Mwmin, float *Mtmin_out)
                         & __gen_e_acsl_assert_data_7);
         __e_acsl_assert_clean(& __gen_e_acsl_assert_data_7);
         __e_acsl_assert_register_float(& __gen_e_acsl_assert_data_4,
-                                       "*\\old(Mtmin_in)",*__gen_e_acsl_at);
-        __gen_e_acsl_if = (double)*__gen_e_acsl_at != 0.;
+                                       "*\\old(Mtmin_in)",*__gen_e_acsl_at_2);
+        __gen_e_acsl_if = (double)*__gen_e_acsl_at_2 != 0.;
       }
       else {
         __e_acsl_mpq_t __gen_e_acsl__4;
@@ -279,7 +286,7 @@ void __gen_e_acsl_bar(float *Mtmin_in, float *Mwmin, float *Mtmin_out)
         __gmpq_init(__gen_e_acsl__4);
         __gmpq_set_str(__gen_e_acsl__4,"085/100",10);
         __gmpq_init(__gen_e_acsl__5);
-        __gmpq_set_d(__gen_e_acsl__5,(double)*__gen_e_acsl_at_2);
+        __gmpq_set_d(__gen_e_acsl__5,(double)*__gen_e_acsl_at);
         __gmpq_init(__gen_e_acsl_mul_2);
         __gmpq_mul(__gen_e_acsl_mul_2,
                    (__e_acsl_mpq_struct const *)(__gen_e_acsl__4),
@@ -289,7 +296,7 @@ void __gen_e_acsl_bar(float *Mtmin_in, float *Mwmin, float *Mtmin_out)
         __gen_e_acsl_ne = __gmpq_cmp((__e_acsl_mpq_struct const *)(__gen_e_acsl_mul_2),
                                      (__e_acsl_mpq_struct const *)(__gen_e_acsl__6));
         __e_acsl_assert_register_float(& __gen_e_acsl_assert_data_4,
-                                       "*\\old(Mwmin)",*__gen_e_acsl_at_2);
+                                       "*\\old(Mwmin)",*__gen_e_acsl_at);
         __gen_e_acsl_if = __gen_e_acsl_ne != 0;
         __gmpq_clear(__gen_e_acsl__4);
         __gmpq_clear(__gen_e_acsl__5);
@@ -297,13 +304,13 @@ void __gen_e_acsl_bar(float *Mtmin_in, float *Mwmin, float *Mtmin_out)
         __gmpq_clear(__gen_e_acsl__6);
       }
       __e_acsl_assert_register_float(& __gen_e_acsl_assert_data_4,
-                                     "*\\old(Mtmin_out)",*__gen_e_acsl_at_3);
+                                     "*\\old(Mtmin_out)",*__gen_e_acsl_at_6);
       __e_acsl_assert_register_float(& __gen_e_acsl_assert_data_4,
-                                     "*\\old(Mtmin_in)",*__gen_e_acsl_at);
+                                     "*\\old(Mtmin_in)",*__gen_e_acsl_at_5);
       __e_acsl_assert_register_float(& __gen_e_acsl_assert_data_4,
-                                     "*\\old(Mtmin_in)",*__gen_e_acsl_at);
+                                     "*\\old(Mtmin_in)",*__gen_e_acsl_at_4);
       __e_acsl_assert_register_float(& __gen_e_acsl_assert_data_4,
-                                     "*\\old(Mwmin)",*__gen_e_acsl_at_2);
+                                     "*\\old(Mwmin)",*__gen_e_acsl_at_3);
       __gen_e_acsl_assert_data_4.blocking = 1;
       __gen_e_acsl_assert_data_4.kind = "Postcondition";
       __gen_e_acsl_assert_data_4.pred_txt = "*\\old(Mtmin_out) == *\\old(Mtmin_in) < 0.85 * *\\old(Mwmin)?\n  *\\old(Mtmin_in) != 0.:\n  0.85 * *\\old(Mwmin) != 0.";
@@ -345,8 +352,8 @@ void __gen_e_acsl_foo(float *Mtmax_in, float *Mwmax, float *Mtmax_out)
     __e_acsl_store_block((void *)(& Mtmax_out),8UL);
     __e_acsl_store_block((void *)(& Mwmax),8UL);
     __e_acsl_store_block((void *)(& Mtmax_in),8UL);
-    __gen_e_acsl_at = Mtmax_in;
-    __gen_e_acsl_at_2 = Mwmax;
+    __gen_e_acsl_at = Mwmax;
+    __gen_e_acsl_at_2 = Mtmax_in;
     __gen_e_acsl_at_3 = Mtmax_out;
     __gen_e_acsl_contract = __e_acsl_contract_init(1UL);
     __e_acsl_assert_data_t __gen_e_acsl_assert_data = {.values = (void *)0};
@@ -430,7 +437,7 @@ void __gen_e_acsl_foo(float *Mtmax_in, float *Mwmax, float *Mtmax_out)
       __gmpq_init(__gen_e_acsl_);
       __gmpq_set_d(__gen_e_acsl_,(double)*__gen_e_acsl_at_3);
       __gmpq_init(__gen_e_acsl__2);
-      __gmpq_set_d(__gen_e_acsl__2,(double)*__gen_e_acsl_at);
+      __gmpq_set_d(__gen_e_acsl__2,(double)*__gen_e_acsl_at_2);
       __gmpq_init(__gen_e_acsl__3);
       __gmpq_set_str(__gen_e_acsl__3,"5",10);
       __gmpq_init(__gen_e_acsl__4);
@@ -442,7 +449,7 @@ void __gen_e_acsl_foo(float *Mtmax_in, float *Mwmax, float *Mtmax_out)
                  (__e_acsl_mpq_struct const *)(__gen_e_acsl__4),
                  (__e_acsl_mpq_struct const *)(__gen_e_acsl__5));
       __gmpq_init(__gen_e_acsl__6);
-      __gmpq_set_d(__gen_e_acsl__6,(double)*__gen_e_acsl_at_2);
+      __gmpq_set_d(__gen_e_acsl__6,(double)*__gen_e_acsl_at);
       __gmpq_init(__gen_e_acsl_mul);
       __gmpq_mul(__gen_e_acsl_mul,
                  (__e_acsl_mpq_struct const *)(__gen_e_acsl_div),
@@ -466,9 +473,9 @@ void __gen_e_acsl_foo(float *Mtmax_in, float *Mwmax, float *Mtmax_out)
       __e_acsl_assert_register_float(& __gen_e_acsl_assert_data_4,
                                      "*\\old(Mtmax_out)",*__gen_e_acsl_at_3);
       __e_acsl_assert_register_float(& __gen_e_acsl_assert_data_4,
-                                     "*\\old(Mtmax_in)",*__gen_e_acsl_at);
+                                     "*\\old(Mtmax_in)",*__gen_e_acsl_at_2);
       __e_acsl_assert_register_float(& __gen_e_acsl_assert_data_4,
-                                     "*\\old(Mwmax)",*__gen_e_acsl_at_2);
+                                     "*\\old(Mwmax)",*__gen_e_acsl_at);
       __gen_e_acsl_assert_data_4.blocking = 1;
       __gen_e_acsl_assert_data_4.kind = "Postcondition";
       __gen_e_acsl_assert_data_4.pred_txt = "*\\old(Mtmax_out) != *\\old(Mtmax_in) + (5 - ((5 / 80) * *\\old(Mwmax)) * 0.4)";
diff --git a/src/plugins/e-acsl/tests/bts/oracle/gen_bts1326.c b/src/plugins/e-acsl/tests/bts/oracle/gen_bts1326.c
index 8e484ee47ec4cd7a3330c0f58ebd3b89f29d5d1e..e0bb405377cf09009ebedf1983e392a11cecb843 100644
--- a/src/plugins/e-acsl/tests/bts/oracle/gen_bts1326.c
+++ b/src/plugins/e-acsl/tests/bts/oracle/gen_bts1326.c
@@ -57,12 +57,20 @@ int main(void)
 void __gen_e_acsl_atp_NORMAL_computeAverageAccel(ArrayInt *Accel,
                                                  int *AverageAccel)
 {
-  int *__gen_e_acsl_at_2;
+  int *__gen_e_acsl_at_6;
+  ArrayInt *__gen_e_acsl_at_5;
+  ArrayInt *__gen_e_acsl_at_4;
+  ArrayInt *__gen_e_acsl_at_3;
+  ArrayInt *__gen_e_acsl_at_2;
   ArrayInt *__gen_e_acsl_at;
   __e_acsl_store_block((void *)(& AverageAccel),8UL);
   __e_acsl_store_block((void *)(& Accel),8UL);
   __gen_e_acsl_at = Accel;
-  __gen_e_acsl_at_2 = AverageAccel;
+  __gen_e_acsl_at_2 = Accel;
+  __gen_e_acsl_at_3 = Accel;
+  __gen_e_acsl_at_4 = Accel;
+  __gen_e_acsl_at_5 = Accel;
+  __gen_e_acsl_at_6 = AverageAccel;
   atp_NORMAL_computeAverageAccel(Accel,AverageAccel);
   {
     int __gen_e_acsl_valid_read;
@@ -94,18 +102,18 @@ void __gen_e_acsl_atp_NORMAL_computeAverageAccel(ArrayInt *Accel,
     __e_acsl_assert_clean(& __gen_e_acsl_assert_data_2);
     __e_acsl_assert_data_t __gen_e_acsl_assert_data_3 =
       {.values = (void *)0};
-    __gen_e_acsl_valid_read_2 = __e_acsl_valid_read((void *)(& (*__gen_e_acsl_at)[1]),
+    __gen_e_acsl_valid_read_2 = __e_acsl_valid_read((void *)(& (*__gen_e_acsl_at_2)[1]),
                                                     sizeof(int),
-                                                    (void *)(*__gen_e_acsl_at),
+                                                    (void *)(*__gen_e_acsl_at_2),
                                                     (void *)0);
     __e_acsl_assert_register_ptr(& __gen_e_acsl_assert_data_3,
-                                 "&(*__gen_e_acsl_at)[1]",
-                                 (void *)(& (*__gen_e_acsl_at)[1]));
+                                 "&(*__gen_e_acsl_at_2)[1]",
+                                 (void *)(& (*__gen_e_acsl_at_2)[1]));
     __e_acsl_assert_register_ulong(& __gen_e_acsl_assert_data_3,
                                    "sizeof(int)",0,sizeof(int));
     __gen_e_acsl_assert_data_3.blocking = 1;
     __gen_e_acsl_assert_data_3.kind = "RTE";
-    __gen_e_acsl_assert_data_3.pred_txt = "\\valid_read(&(*__gen_e_acsl_at)[1])";
+    __gen_e_acsl_assert_data_3.pred_txt = "\\valid_read(&(*__gen_e_acsl_at_2)[1])";
     __gen_e_acsl_assert_data_3.file = "bts1326.i";
     __gen_e_acsl_assert_data_3.fct = "atp_NORMAL_computeAverageAccel";
     __gen_e_acsl_assert_data_3.line = 8;
@@ -114,18 +122,18 @@ void __gen_e_acsl_atp_NORMAL_computeAverageAccel(ArrayInt *Accel,
     __e_acsl_assert_clean(& __gen_e_acsl_assert_data_3);
     __e_acsl_assert_data_t __gen_e_acsl_assert_data_4 =
       {.values = (void *)0};
-    __gen_e_acsl_valid_read_3 = __e_acsl_valid_read((void *)(& (*__gen_e_acsl_at)[2]),
+    __gen_e_acsl_valid_read_3 = __e_acsl_valid_read((void *)(& (*__gen_e_acsl_at_3)[2]),
                                                     sizeof(int),
-                                                    (void *)(*__gen_e_acsl_at),
+                                                    (void *)(*__gen_e_acsl_at_3),
                                                     (void *)0);
     __e_acsl_assert_register_ptr(& __gen_e_acsl_assert_data_4,
-                                 "&(*__gen_e_acsl_at)[2]",
-                                 (void *)(& (*__gen_e_acsl_at)[2]));
+                                 "&(*__gen_e_acsl_at_3)[2]",
+                                 (void *)(& (*__gen_e_acsl_at_3)[2]));
     __e_acsl_assert_register_ulong(& __gen_e_acsl_assert_data_4,
                                    "sizeof(int)",0,sizeof(int));
     __gen_e_acsl_assert_data_4.blocking = 1;
     __gen_e_acsl_assert_data_4.kind = "RTE";
-    __gen_e_acsl_assert_data_4.pred_txt = "\\valid_read(&(*__gen_e_acsl_at)[2])";
+    __gen_e_acsl_assert_data_4.pred_txt = "\\valid_read(&(*__gen_e_acsl_at_3)[2])";
     __gen_e_acsl_assert_data_4.file = "bts1326.i";
     __gen_e_acsl_assert_data_4.fct = "atp_NORMAL_computeAverageAccel";
     __gen_e_acsl_assert_data_4.line = 8;
@@ -134,18 +142,18 @@ void __gen_e_acsl_atp_NORMAL_computeAverageAccel(ArrayInt *Accel,
     __e_acsl_assert_clean(& __gen_e_acsl_assert_data_4);
     __e_acsl_assert_data_t __gen_e_acsl_assert_data_5 =
       {.values = (void *)0};
-    __gen_e_acsl_valid_read_4 = __e_acsl_valid_read((void *)(& (*__gen_e_acsl_at)[3]),
+    __gen_e_acsl_valid_read_4 = __e_acsl_valid_read((void *)(& (*__gen_e_acsl_at_4)[3]),
                                                     sizeof(int),
-                                                    (void *)(*__gen_e_acsl_at),
+                                                    (void *)(*__gen_e_acsl_at_4),
                                                     (void *)0);
     __e_acsl_assert_register_ptr(& __gen_e_acsl_assert_data_5,
-                                 "&(*__gen_e_acsl_at)[3]",
-                                 (void *)(& (*__gen_e_acsl_at)[3]));
+                                 "&(*__gen_e_acsl_at_4)[3]",
+                                 (void *)(& (*__gen_e_acsl_at_4)[3]));
     __e_acsl_assert_register_ulong(& __gen_e_acsl_assert_data_5,
                                    "sizeof(int)",0,sizeof(int));
     __gen_e_acsl_assert_data_5.blocking = 1;
     __gen_e_acsl_assert_data_5.kind = "RTE";
-    __gen_e_acsl_assert_data_5.pred_txt = "\\valid_read(&(*__gen_e_acsl_at)[3])";
+    __gen_e_acsl_assert_data_5.pred_txt = "\\valid_read(&(*__gen_e_acsl_at_4)[3])";
     __gen_e_acsl_assert_data_5.file = "bts1326.i";
     __gen_e_acsl_assert_data_5.fct = "atp_NORMAL_computeAverageAccel";
     __gen_e_acsl_assert_data_5.line = 8;
@@ -154,18 +162,18 @@ void __gen_e_acsl_atp_NORMAL_computeAverageAccel(ArrayInt *Accel,
     __e_acsl_assert_clean(& __gen_e_acsl_assert_data_5);
     __e_acsl_assert_data_t __gen_e_acsl_assert_data_6 =
       {.values = (void *)0};
-    __gen_e_acsl_valid_read_5 = __e_acsl_valid_read((void *)(& (*__gen_e_acsl_at)[4]),
+    __gen_e_acsl_valid_read_5 = __e_acsl_valid_read((void *)(& (*__gen_e_acsl_at_5)[4]),
                                                     sizeof(int),
-                                                    (void *)(*__gen_e_acsl_at),
+                                                    (void *)(*__gen_e_acsl_at_5),
                                                     (void *)0);
     __e_acsl_assert_register_ptr(& __gen_e_acsl_assert_data_6,
-                                 "&(*__gen_e_acsl_at)[4]",
-                                 (void *)(& (*__gen_e_acsl_at)[4]));
+                                 "&(*__gen_e_acsl_at_5)[4]",
+                                 (void *)(& (*__gen_e_acsl_at_5)[4]));
     __e_acsl_assert_register_ulong(& __gen_e_acsl_assert_data_6,
                                    "sizeof(int)",0,sizeof(int));
     __gen_e_acsl_assert_data_6.blocking = 1;
     __gen_e_acsl_assert_data_6.kind = "RTE";
-    __gen_e_acsl_assert_data_6.pred_txt = "\\valid_read(&(*__gen_e_acsl_at)[4])";
+    __gen_e_acsl_assert_data_6.pred_txt = "\\valid_read(&(*__gen_e_acsl_at_5)[4])";
     __gen_e_acsl_assert_data_6.file = "bts1326.i";
     __gen_e_acsl_assert_data_6.fct = "atp_NORMAL_computeAverageAccel";
     __gen_e_acsl_assert_data_6.line = 8;
@@ -174,18 +182,18 @@ void __gen_e_acsl_atp_NORMAL_computeAverageAccel(ArrayInt *Accel,
     __e_acsl_assert_clean(& __gen_e_acsl_assert_data_6);
     __e_acsl_assert_data_t __gen_e_acsl_assert_data_7 =
       {.values = (void *)0};
-    __gen_e_acsl_valid_read_6 = __e_acsl_valid_read((void *)__gen_e_acsl_at_2,
+    __gen_e_acsl_valid_read_6 = __e_acsl_valid_read((void *)__gen_e_acsl_at_6,
                                                     sizeof(int),
-                                                    (void *)__gen_e_acsl_at_2,
-                                                    (void *)(& __gen_e_acsl_at_2));
+                                                    (void *)__gen_e_acsl_at_6,
+                                                    (void *)(& __gen_e_acsl_at_6));
     __e_acsl_assert_register_ptr(& __gen_e_acsl_assert_data_7,
-                                 "__gen_e_acsl_at_2",
-                                 (void *)__gen_e_acsl_at_2);
+                                 "__gen_e_acsl_at_6",
+                                 (void *)__gen_e_acsl_at_6);
     __e_acsl_assert_register_ulong(& __gen_e_acsl_assert_data_7,
                                    "sizeof(int)",0,sizeof(int));
     __gen_e_acsl_assert_data_7.blocking = 1;
     __gen_e_acsl_assert_data_7.kind = "RTE";
-    __gen_e_acsl_assert_data_7.pred_txt = "\\valid_read(__gen_e_acsl_at_2)";
+    __gen_e_acsl_assert_data_7.pred_txt = "\\valid_read(__gen_e_acsl_at_6)";
     __gen_e_acsl_assert_data_7.file = "bts1326.i";
     __gen_e_acsl_assert_data_7.fct = "atp_NORMAL_computeAverageAccel";
     __gen_e_acsl_assert_data_7.line = 8;
@@ -193,19 +201,19 @@ void __gen_e_acsl_atp_NORMAL_computeAverageAccel(ArrayInt *Accel,
     __e_acsl_assert(__gen_e_acsl_valid_read_6,& __gen_e_acsl_assert_data_7);
     __e_acsl_assert_clean(& __gen_e_acsl_assert_data_7);
     __e_acsl_assert_register_int(& __gen_e_acsl_assert_data,
-                                 "*\\old(AverageAccel)",0,*__gen_e_acsl_at_2);
+                                 "*\\old(AverageAccel)",0,*__gen_e_acsl_at_6);
     __e_acsl_assert_register_int(& __gen_e_acsl_assert_data,
                                  "(*\\old(Accel))[4]",0,
-                                 (*__gen_e_acsl_at)[4]);
+                                 (*__gen_e_acsl_at_5)[4]);
     __e_acsl_assert_register_int(& __gen_e_acsl_assert_data,
                                  "(*\\old(Accel))[3]",0,
-                                 (*__gen_e_acsl_at)[3]);
+                                 (*__gen_e_acsl_at_4)[3]);
     __e_acsl_assert_register_int(& __gen_e_acsl_assert_data,
                                  "(*\\old(Accel))[2]",0,
-                                 (*__gen_e_acsl_at)[2]);
+                                 (*__gen_e_acsl_at_3)[2]);
     __e_acsl_assert_register_int(& __gen_e_acsl_assert_data,
                                  "(*\\old(Accel))[1]",0,
-                                 (*__gen_e_acsl_at)[1]);
+                                 (*__gen_e_acsl_at_2)[1]);
     __e_acsl_assert_register_int(& __gen_e_acsl_assert_data,
                                  "(*\\old(Accel))[0]",0,
                                  (*__gen_e_acsl_at)[0]);
@@ -215,7 +223,7 @@ void __gen_e_acsl_atp_NORMAL_computeAverageAccel(ArrayInt *Accel,
     __gen_e_acsl_assert_data.file = "bts1326.i";
     __gen_e_acsl_assert_data.fct = "atp_NORMAL_computeAverageAccel";
     __gen_e_acsl_assert_data.line = 8;
-    __e_acsl_assert(*__gen_e_acsl_at_2 == (int)((((((*__gen_e_acsl_at)[4] + (long)(*__gen_e_acsl_at)[3]) + (*__gen_e_acsl_at)[2]) + (*__gen_e_acsl_at)[1]) + (*__gen_e_acsl_at)[0]) / 5L),
+    __e_acsl_assert(*__gen_e_acsl_at_6 == (int)((((((*__gen_e_acsl_at_5)[4] + (long)(*__gen_e_acsl_at_4)[3]) + (*__gen_e_acsl_at_3)[2]) + (*__gen_e_acsl_at_2)[1]) + (*__gen_e_acsl_at)[0]) / 5L),
                     & __gen_e_acsl_assert_data);
     __e_acsl_assert_clean(& __gen_e_acsl_assert_data);
     __e_acsl_delete_block((void *)(& AverageAccel));
diff --git a/src/plugins/e-acsl/tests/bts/oracle/gen_bts1390.c b/src/plugins/e-acsl/tests/bts/oracle/gen_bts1390.c
index 73c880a96c69d88ef21b70357a687cf4a8799d7a..27cb9dd93446728ef196bf56a59425b8462883f0 100644
--- a/src/plugins/e-acsl/tests/bts/oracle/gen_bts1390.c
+++ b/src/plugins/e-acsl/tests/bts/oracle/gen_bts1390.c
@@ -71,8 +71,8 @@ void *memchr(void const *buf, int c, size_t n)
 void *__gen_e_acsl_memchr(void const *buf, int c, size_t n)
 {
   __e_acsl_contract_t *__gen_e_acsl_contract;
-  int __gen_e_acsl_at_2;
-  void const *__gen_e_acsl_at;
+  void const *__gen_e_acsl_at_2;
+  int __gen_e_acsl_at;
   void *__retres;
   __e_acsl_store_block((void *)(& __retres),8UL);
   {
@@ -81,8 +81,8 @@ void *__gen_e_acsl_memchr(void const *buf, int c, size_t n)
     int __gen_e_acsl_forall;
     int __gen_e_acsl_k;
     __e_acsl_store_block((void *)(& buf),8UL);
-    __gen_e_acsl_at = buf;
-    __gen_e_acsl_at_2 = c;
+    __gen_e_acsl_at = c;
+    __gen_e_acsl_at_2 = buf;
     __gen_e_acsl_contract = __e_acsl_contract_init(2UL);
     __gen_e_acsl_exists = 0;
     __gen_e_acsl_i = 0;
@@ -186,20 +186,20 @@ void *__gen_e_acsl_memchr(void const *buf, int c, size_t n)
           int __gen_e_acsl_valid_read_3;
           __e_acsl_assert_data_t __gen_e_acsl_assert_data_4 =
             {.values = (void *)0};
-          __gen_e_acsl_valid_read_3 = __e_acsl_valid_read((void *)((char *)__gen_e_acsl_at + __gen_e_acsl_j),
+          __gen_e_acsl_valid_read_3 = __e_acsl_valid_read((void *)((char *)__gen_e_acsl_at_2 + __gen_e_acsl_j),
                                                           sizeof(char),
-                                                          (void *)__gen_e_acsl_at,
-                                                          (void *)(& __gen_e_acsl_at));
+                                                          (void *)__gen_e_acsl_at_2,
+                                                          (void *)(& __gen_e_acsl_at_2));
           __e_acsl_assert_register_ptr(& __gen_e_acsl_assert_data_4,
-                                       "__gen_e_acsl_at",
-                                       (void *)__gen_e_acsl_at);
+                                       "__gen_e_acsl_at_2",
+                                       (void *)__gen_e_acsl_at_2);
           __e_acsl_assert_register_uint(& __gen_e_acsl_assert_data_4,
                                         "__gen_e_acsl_j",0,__gen_e_acsl_j);
           __e_acsl_assert_register_ulong(& __gen_e_acsl_assert_data_4,
                                          "sizeof(char)",0,sizeof(char));
           __gen_e_acsl_assert_data_4.blocking = 1;
           __gen_e_acsl_assert_data_4.kind = "RTE";
-          __gen_e_acsl_assert_data_4.pred_txt = "\\valid_read((char *)__gen_e_acsl_at + __gen_e_acsl_j)";
+          __gen_e_acsl_assert_data_4.pred_txt = "\\valid_read((char *)__gen_e_acsl_at_2 + __gen_e_acsl_j)";
           __gen_e_acsl_assert_data_4.file = "bts1390.c";
           __gen_e_acsl_assert_data_4.fct = "memchr";
           __gen_e_acsl_assert_data_4.line = 9;
@@ -207,7 +207,7 @@ void *__gen_e_acsl_memchr(void const *buf, int c, size_t n)
           __e_acsl_assert(__gen_e_acsl_valid_read_3,
                           & __gen_e_acsl_assert_data_4);
           __e_acsl_assert_clean(& __gen_e_acsl_assert_data_4);
-          if ((int)*((char *)__gen_e_acsl_at + __gen_e_acsl_j) != __gen_e_acsl_at_2) 
+          if ((int)*((char *)__gen_e_acsl_at_2 + __gen_e_acsl_j) != __gen_e_acsl_at) 
             ;
           else {
             __gen_e_acsl_forall_2 = 0;
diff --git a/src/plugins/e-acsl/tests/bts/oracle/gen_bts2252.c b/src/plugins/e-acsl/tests/bts/oracle/gen_bts2252.c
index e6397626eec5ed493b37b2127175735ac0c77c8c..ed9c13bf241340f6e7447a8d8d28dede54037e03 100644
--- a/src/plugins/e-acsl/tests/bts/oracle/gen_bts2252.c
+++ b/src/plugins/e-acsl/tests/bts/oracle/gen_bts2252.c
@@ -54,9 +54,11 @@ char *__gen_e_acsl_strncpy(char * restrict dest, char const * restrict src,
                            size_t n)
 {
   __e_acsl_contract_t *__gen_e_acsl_contract;
+  char *__gen_e_acsl_at_5;
+  char *__gen_e_acsl_at_4;
   __e_acsl_mpz_t __gen_e_acsl_at_3;
-  char const *__gen_e_acsl_at_2;
-  char *__gen_e_acsl_at;
+  char *__gen_e_acsl_at_2;
+  char const *__gen_e_acsl_at;
   char *__retres;
   {
     __e_acsl_mpz_t __gen_e_acsl_n;
@@ -87,11 +89,13 @@ char *__gen_e_acsl_strncpy(char * restrict dest, char const * restrict src,
     int __gen_e_acsl_separated;
     __e_acsl_store_block((void *)(& src),8UL);
     __e_acsl_store_block((void *)(& dest),8UL);
-    __gen_e_acsl_at = dest;
-    __gen_e_acsl_at_2 = src;
+    __gen_e_acsl_at = src;
+    __gen_e_acsl_at_2 = dest;
     __gmpz_init_set_ui(__gen_e_acsl_n,n);
     __gmpz_init_set(__gen_e_acsl_at_3,
                     (__e_acsl_mpz_struct const *)(__gen_e_acsl_n));
+    __gen_e_acsl_at_4 = dest;
+    __gen_e_acsl_at_5 = dest;
     __gen_e_acsl_contract = __e_acsl_contract_init(2UL);
     __e_acsl_assert_data_t __gen_e_acsl_assert_data_2 =
       {.values = (void *)0};
@@ -273,7 +277,7 @@ char *__gen_e_acsl_strncpy(char * restrict dest, char const * restrict src,
     __e_acsl_assert_register_ptr(& __gen_e_acsl_assert_data_6,"\\result",
                                  (void *)__retres);
     __e_acsl_assert_register_ptr(& __gen_e_acsl_assert_data_6,"\\old(dest)",
-                                 (void *)__gen_e_acsl_at);
+                                 (void *)__gen_e_acsl_at_5);
     __gen_e_acsl_assert_data_6.blocking = 1;
     __gen_e_acsl_assert_data_6.kind = "Postcondition";
     __gen_e_acsl_assert_data_6.pred_txt = "\\result == \\old(dest)";
@@ -281,7 +285,8 @@ char *__gen_e_acsl_strncpy(char * restrict dest, char const * restrict src,
     __gen_e_acsl_assert_data_6.fct = "strncpy";
     __gen_e_acsl_assert_data_6.line = 437;
     __gen_e_acsl_assert_data_6.name = "result_ptr";
-    __e_acsl_assert(__retres == __gen_e_acsl_at,& __gen_e_acsl_assert_data_6);
+    __e_acsl_assert(__retres == __gen_e_acsl_at_5,
+                    & __gen_e_acsl_assert_data_6);
     __e_acsl_assert_clean(& __gen_e_acsl_assert_data_6);
     __e_acsl_assert_data_t __gen_e_acsl_assert_data_7 =
       {.values = (void *)0};
@@ -303,11 +308,11 @@ char *__gen_e_acsl_strncpy(char * restrict dest, char const * restrict src,
     __gen_e_acsl_size_8 = 1UL * __gen_e_acsl__16;
     if (__gen_e_acsl_size_8 <= 0UL) __gen_e_acsl_if_8 = 0UL;
     else __gen_e_acsl_if_8 = __gen_e_acsl_size_8;
-    __gen_e_acsl_initialized_2 = __e_acsl_initialized((void *)(__gen_e_acsl_at + 
+    __gen_e_acsl_initialized_2 = __e_acsl_initialized((void *)(__gen_e_acsl_at_4 + 
                                                                1 * 0),
                                                       __gen_e_acsl_if_8);
     __e_acsl_assert_register_ptr(& __gen_e_acsl_assert_data_7,"\\old(dest)",
-                                 (void *)__gen_e_acsl_at);
+                                 (void *)__gen_e_acsl_at_4);
     __e_acsl_assert_register_int(& __gen_e_acsl_assert_data_7,"sizeof(char)",
                                  0,1);
     __e_acsl_assert_register_int(& __gen_e_acsl_assert_data_7,"sizeof(char)",
diff --git a/src/plugins/e-acsl/tests/bts/oracle/gen_issue-eacsl-139.c b/src/plugins/e-acsl/tests/bts/oracle/gen_issue-eacsl-139.c
index 7c44d029d13b4a608006582414c005f68a03fe45..128027b11265ff5b5202c3073a1d642db6844789 100644
--- a/src/plugins/e-acsl/tests/bts/oracle/gen_issue-eacsl-139.c
+++ b/src/plugins/e-acsl/tests/bts/oracle/gen_issue-eacsl-139.c
@@ -38,12 +38,11 @@ int main(void)
 /*@ ensures *\old(item) == \old(*item); */
 void __gen_e_acsl_f(struct X *item)
 {
-  struct X __gen_e_acsl_at_2;
-  struct X *__gen_e_acsl_at;
+  struct X *__gen_e_acsl_at_2;
+  struct X __gen_e_acsl_at;
   {
     int __gen_e_acsl_valid_read;
     __e_acsl_store_block((void *)(& item),8UL);
-    __gen_e_acsl_at = item;
     __e_acsl_assert_data_t __gen_e_acsl_assert_data = {.values = (void *)0};
     __gen_e_acsl_valid_read = __e_acsl_valid_read((void *)item,
                                                   sizeof(struct X),
@@ -62,7 +61,8 @@ void __gen_e_acsl_f(struct X *item)
     __gen_e_acsl_assert_data.name = "mem_access";
     __e_acsl_assert(__gen_e_acsl_valid_read,& __gen_e_acsl_assert_data);
     __e_acsl_assert_clean(& __gen_e_acsl_assert_data);
-    __gen_e_acsl_at_2 = *item;
+    __gen_e_acsl_at = *item;
+    __gen_e_acsl_at_2 = item;
   }
   f(item);
   __e_acsl_delete_block((void *)(& item));
diff --git a/src/plugins/e-acsl/tests/bts/oracle/gen_issue-eacsl-40.c b/src/plugins/e-acsl/tests/bts/oracle/gen_issue-eacsl-40.c
index 3929c369e311404b5864331f7b2cd16d1fa41f72..da2c84457fbf645025b2ff3696bcd5fb4c6edda8 100644
--- a/src/plugins/e-acsl/tests/bts/oracle/gen_issue-eacsl-40.c
+++ b/src/plugins/e-acsl/tests/bts/oracle/gen_issue-eacsl-40.c
@@ -63,8 +63,8 @@ size_t __gen_e_acsl_fread(void * restrict ptr, size_t size, size_t nmemb,
                           FILE * restrict stream)
 {
   size_t __gen_e_acsl_at_3;
-  __e_acsl_mpz_t __gen_e_acsl_at_2;
-  void *__gen_e_acsl_at;
+  void *__gen_e_acsl_at_2;
+  __e_acsl_mpz_t __gen_e_acsl_at;
   size_t __retres;
   {
     __e_acsl_mpz_t __gen_e_acsl_size;
@@ -88,10 +88,10 @@ size_t __gen_e_acsl_fread(void * restrict ptr, size_t size, size_t nmemb,
     int __gen_e_acsl_valid_2;
     __e_acsl_store_block((void *)(& stream),8UL);
     __e_acsl_store_block((void *)(& ptr),8UL);
-    __gen_e_acsl_at = ptr;
     __gmpz_init_set_ui(__gen_e_acsl_size,size);
-    __gmpz_init_set(__gen_e_acsl_at_2,
+    __gmpz_init_set(__gen_e_acsl_at,
                     (__e_acsl_mpz_struct const *)(__gen_e_acsl_size));
+    __gen_e_acsl_at_2 = ptr;
     __gen_e_acsl_at_3 = nmemb;
     __e_acsl_assert_data_t __gen_e_acsl_assert_data = {.values = (void *)0};
     __gmpz_init_set_si(__gen_e_acsl_sizeof,1L);
@@ -293,7 +293,7 @@ size_t __gen_e_acsl_fread(void * restrict ptr, size_t size, size_t nmemb,
     __gmpz_init(__gen_e_acsl_mul_4);
     __gmpz_mul(__gen_e_acsl_mul_4,
                (__e_acsl_mpz_struct const *)(__gen_e_acsl_result),
-               (__e_acsl_mpz_struct const *)(__gen_e_acsl_at_2));
+               (__e_acsl_mpz_struct const *)(__gen_e_acsl_at));
     __gmpz_init_set_si(__gen_e_acsl__6,1L);
     __gmpz_init(__gen_e_acsl_sub_3);
     __gmpz_sub(__gen_e_acsl_sub_3,
@@ -343,11 +343,11 @@ size_t __gen_e_acsl_fread(void * restrict ptr, size_t size, size_t nmemb,
     __e_acsl_assert(__gen_e_acsl_le_5 <= 0,& __gen_e_acsl_assert_data_7);
     __e_acsl_assert_clean(& __gen_e_acsl_assert_data_7);
     __gen_e_acsl_size_8 = __gmpz_get_ui((__e_acsl_mpz_struct const *)(__gen_e_acsl_if_2));
-    __gen_e_acsl_initialized = __e_acsl_initialized((void *)((char *)__gen_e_acsl_at + 
+    __gen_e_acsl_initialized = __e_acsl_initialized((void *)((char *)__gen_e_acsl_at_2 + 
                                                              1 * 0),
                                                     __gen_e_acsl_size_8);
     __e_acsl_assert_register_ptr(& __gen_e_acsl_assert_data_6,"\\old(ptr)",
-                                 __gen_e_acsl_at);
+                                 __gen_e_acsl_at_2);
     __e_acsl_assert_register_int(& __gen_e_acsl_assert_data_6,"sizeof(char)",
                                  0,1);
     __e_acsl_assert_register_int(& __gen_e_acsl_assert_data_6,"sizeof(char)",
@@ -356,7 +356,7 @@ size_t __gen_e_acsl_fread(void * restrict ptr, size_t size, size_t nmemb,
                                    __retres);
     __e_acsl_assert_register_mpz(& __gen_e_acsl_assert_data_6,"\\old(size)",
                                  0,
-                                 (__e_acsl_mpz_struct const *)(__gen_e_acsl_at_2));
+                                 (__e_acsl_mpz_struct const *)(__gen_e_acsl_at));
     __e_acsl_assert_register_mpz(& __gen_e_acsl_assert_data_6,"size",0,
                                  (__e_acsl_mpz_struct const *)(__gen_e_acsl_size_7));
     __e_acsl_assert_register_mpz(& __gen_e_acsl_assert_data_6,"size",0,
@@ -390,7 +390,7 @@ size_t __gen_e_acsl_fread(void * restrict ptr, size_t size, size_t nmemb,
     __gmpz_clear(__gen_e_acsl_mul_5);
     __gmpz_clear(__gen_e_acsl_if_2);
     __gmpz_clear(__gen_e_acsl__9);
-    __gmpz_clear(__gen_e_acsl_at_2);
+    __gmpz_clear(__gen_e_acsl_at);
     return __retres;
   }
 }
diff --git a/src/plugins/e-acsl/tests/builtin/oracle/gen_strcat.c b/src/plugins/e-acsl/tests/builtin/oracle/gen_strcat.c
index a235f02b21d675b3f6fdc259092829b4b98cbcea..f92bbb706d36669f2be8f6696f20b6de5315fb33 100644
--- a/src/plugins/e-acsl/tests/builtin/oracle/gen_strcat.c
+++ b/src/plugins/e-acsl/tests/builtin/oracle/gen_strcat.c
@@ -678,12 +678,14 @@ pid_t __gen_e_acsl_fork(void)
 pid_t __gen_e_acsl_waitpid(pid_t pid, int *stat_loc, int options)
 {
   __e_acsl_contract_t *__gen_e_acsl_contract;
+  int *__gen_e_acsl_at_2;
   int *__gen_e_acsl_at;
   pid_t __retres;
   {
     int __gen_e_acsl_assumes_value;
     __e_acsl_store_block((void *)(& stat_loc),8UL);
     __gen_e_acsl_at = stat_loc;
+    __gen_e_acsl_at_2 = stat_loc;
     __gen_e_acsl_contract = __e_acsl_contract_init(2UL);
     __e_acsl_contract_set_behavior_assumes(__gen_e_acsl_contract,0UL,
                                            stat_loc == (int *)0);
@@ -745,8 +747,9 @@ pid_t __gen_e_acsl_waitpid(pid_t pid, int *stat_loc, int options)
                                  __retres);
     if (__retres >= 0) {
       __e_acsl_assert_register_ptr(& __gen_e_acsl_assert_data_3,
-                                   "\\old(stat_loc)",(void *)__gen_e_acsl_at);
-      __gen_e_acsl_and = __gen_e_acsl_at != (int *)0;
+                                   "\\old(stat_loc)",
+                                   (void *)__gen_e_acsl_at_2);
+      __gen_e_acsl_and = __gen_e_acsl_at_2 != (int *)0;
     }
     else __gen_e_acsl_and = 0;
     if (! __gen_e_acsl_and) __gen_e_acsl_implies = 1;
diff --git a/src/plugins/e-acsl/tests/builtin/oracle/gen_strcmp.c b/src/plugins/e-acsl/tests/builtin/oracle/gen_strcmp.c
index 22c523cc0e400b2f2d32a346ef8fafb958ff87f6..34b223989b6af19038935a1480037b00ca2df386 100644
--- a/src/plugins/e-acsl/tests/builtin/oracle/gen_strcmp.c
+++ b/src/plugins/e-acsl/tests/builtin/oracle/gen_strcmp.c
@@ -248,12 +248,14 @@ pid_t __gen_e_acsl_fork(void)
 pid_t __gen_e_acsl_waitpid(pid_t pid, int *stat_loc, int options)
 {
   __e_acsl_contract_t *__gen_e_acsl_contract;
+  int *__gen_e_acsl_at_2;
   int *__gen_e_acsl_at;
   pid_t __retres;
   {
     int __gen_e_acsl_assumes_value;
     __e_acsl_store_block((void *)(& stat_loc),8UL);
     __gen_e_acsl_at = stat_loc;
+    __gen_e_acsl_at_2 = stat_loc;
     __gen_e_acsl_contract = __e_acsl_contract_init(2UL);
     __e_acsl_contract_set_behavior_assumes(__gen_e_acsl_contract,0UL,
                                            stat_loc == (int *)0);
@@ -315,8 +317,9 @@ pid_t __gen_e_acsl_waitpid(pid_t pid, int *stat_loc, int options)
                                  __retres);
     if (__retres >= 0) {
       __e_acsl_assert_register_ptr(& __gen_e_acsl_assert_data_3,
-                                   "\\old(stat_loc)",(void *)__gen_e_acsl_at);
-      __gen_e_acsl_and = __gen_e_acsl_at != (int *)0;
+                                   "\\old(stat_loc)",
+                                   (void *)__gen_e_acsl_at_2);
+      __gen_e_acsl_and = __gen_e_acsl_at_2 != (int *)0;
     }
     else __gen_e_acsl_and = 0;
     if (! __gen_e_acsl_and) __gen_e_acsl_implies = 1;
diff --git a/src/plugins/e-acsl/tests/builtin/oracle/gen_strcpy.c b/src/plugins/e-acsl/tests/builtin/oracle/gen_strcpy.c
index 08a859cae3870b75595d0c5de2dc1ed0efd8a12f..12582f8bbbcb1d14ca53dc4ea75a32af35ff6cf8 100644
--- a/src/plugins/e-acsl/tests/builtin/oracle/gen_strcpy.c
+++ b/src/plugins/e-acsl/tests/builtin/oracle/gen_strcpy.c
@@ -661,12 +661,14 @@ pid_t __gen_e_acsl_fork(void)
 pid_t __gen_e_acsl_waitpid(pid_t pid, int *stat_loc, int options)
 {
   __e_acsl_contract_t *__gen_e_acsl_contract;
+  int *__gen_e_acsl_at_2;
   int *__gen_e_acsl_at;
   pid_t __retres;
   {
     int __gen_e_acsl_assumes_value;
     __e_acsl_store_block((void *)(& stat_loc),8UL);
     __gen_e_acsl_at = stat_loc;
+    __gen_e_acsl_at_2 = stat_loc;
     __gen_e_acsl_contract = __e_acsl_contract_init(2UL);
     __e_acsl_contract_set_behavior_assumes(__gen_e_acsl_contract,0UL,
                                            stat_loc == (int *)0);
@@ -728,8 +730,9 @@ pid_t __gen_e_acsl_waitpid(pid_t pid, int *stat_loc, int options)
                                  __retres);
     if (__retres >= 0) {
       __e_acsl_assert_register_ptr(& __gen_e_acsl_assert_data_3,
-                                   "\\old(stat_loc)",(void *)__gen_e_acsl_at);
-      __gen_e_acsl_and = __gen_e_acsl_at != (int *)0;
+                                   "\\old(stat_loc)",
+                                   (void *)__gen_e_acsl_at_2);
+      __gen_e_acsl_and = __gen_e_acsl_at_2 != (int *)0;
     }
     else __gen_e_acsl_and = 0;
     if (! __gen_e_acsl_and) __gen_e_acsl_implies = 1;
diff --git a/src/plugins/e-acsl/tests/builtin/oracle/gen_strlen.c b/src/plugins/e-acsl/tests/builtin/oracle/gen_strlen.c
index 72856675c7256d5ff38179c189fcb2ddcbc1675e..1ec8397bd9c73ab13b40420be2a072ab14b535dc 100644
--- a/src/plugins/e-acsl/tests/builtin/oracle/gen_strlen.c
+++ b/src/plugins/e-acsl/tests/builtin/oracle/gen_strlen.c
@@ -222,12 +222,14 @@ pid_t __gen_e_acsl_fork(void)
 pid_t __gen_e_acsl_waitpid(pid_t pid, int *stat_loc, int options)
 {
   __e_acsl_contract_t *__gen_e_acsl_contract;
+  int *__gen_e_acsl_at_2;
   int *__gen_e_acsl_at;
   pid_t __retres;
   {
     int __gen_e_acsl_assumes_value;
     __e_acsl_store_block((void *)(& stat_loc),8UL);
     __gen_e_acsl_at = stat_loc;
+    __gen_e_acsl_at_2 = stat_loc;
     __gen_e_acsl_contract = __e_acsl_contract_init(2UL);
     __e_acsl_contract_set_behavior_assumes(__gen_e_acsl_contract,0UL,
                                            stat_loc == (int *)0);
@@ -289,8 +291,9 @@ pid_t __gen_e_acsl_waitpid(pid_t pid, int *stat_loc, int options)
                                  __retres);
     if (__retres >= 0) {
       __e_acsl_assert_register_ptr(& __gen_e_acsl_assert_data_3,
-                                   "\\old(stat_loc)",(void *)__gen_e_acsl_at);
-      __gen_e_acsl_and = __gen_e_acsl_at != (int *)0;
+                                   "\\old(stat_loc)",
+                                   (void *)__gen_e_acsl_at_2);
+      __gen_e_acsl_and = __gen_e_acsl_at_2 != (int *)0;
     }
     else __gen_e_acsl_and = 0;
     if (! __gen_e_acsl_and) __gen_e_acsl_implies = 1;
diff --git a/src/plugins/e-acsl/tests/constructs/oracle/gen_function_contract.c b/src/plugins/e-acsl/tests/constructs/oracle/gen_function_contract.c
index 3b8e64f41acc0ee9952ffd244849dc326049ee49..373c5d7a30c32a68abc02346380835d42632842a 100644
--- a/src/plugins/e-acsl/tests/constructs/oracle/gen_function_contract.c
+++ b/src/plugins/e-acsl/tests/constructs/oracle/gen_function_contract.c
@@ -229,11 +229,19 @@ int main(void)
 void __gen_e_acsl_o(void)
 {
   __e_acsl_contract_t *__gen_e_acsl_contract;
+  int __gen_e_acsl_at_5;
+  int __gen_e_acsl_at_4;
+  int __gen_e_acsl_at_3;
+  int __gen_e_acsl_at_2;
   int __gen_e_acsl_at;
   {
     int __gen_e_acsl_assumes_value;
     int __gen_e_acsl_active_bhvrs;
     __gen_e_acsl_at = Y;
+    __gen_e_acsl_at_2 = Y;
+    __gen_e_acsl_at_3 = Y;
+    __gen_e_acsl_at_4 = Y;
+    __gen_e_acsl_at_5 = Y;
     __gen_e_acsl_contract = __e_acsl_contract_init(4UL);
     __e_acsl_assert_data_t __gen_e_acsl_assert_data = {.values = (void *)0};
     __e_acsl_assert_register_int(& __gen_e_acsl_assert_data,"X",0,X);
@@ -390,14 +398,14 @@ void __gen_e_acsl_o(void)
       {.values = (void *)0};
     __e_acsl_assert_register_int(& __gen_e_acsl_assert_data_12,"X",0,X);
     __e_acsl_assert_register_int(& __gen_e_acsl_assert_data_12,"\\old(Y)",0,
-                                 __gen_e_acsl_at);
+                                 __gen_e_acsl_at_5);
     __gen_e_acsl_assert_data_12.blocking = 1;
     __gen_e_acsl_assert_data_12.kind = "Postcondition";
     __gen_e_acsl_assert_data_12.pred_txt = "X == \\old(Y)";
     __gen_e_acsl_assert_data_12.file = "function_contract.i";
     __gen_e_acsl_assert_data_12.fct = "o";
     __gen_e_acsl_assert_data_12.line = 94;
-    __e_acsl_assert(X == __gen_e_acsl_at,& __gen_e_acsl_assert_data_12);
+    __e_acsl_assert(X == __gen_e_acsl_at_5,& __gen_e_acsl_assert_data_12);
     __e_acsl_assert_clean(& __gen_e_acsl_assert_data_12);
     __gen_e_acsl_assumes_value_2 = __e_acsl_contract_get_behavior_assumes
     ((__e_acsl_contract_t const *)__gen_e_acsl_contract,0UL);
@@ -406,7 +414,7 @@ void __gen_e_acsl_o(void)
         {.values = (void *)0};
       __e_acsl_assert_register_int(& __gen_e_acsl_assert_data_13,"X",0,X);
       __e_acsl_assert_register_int(& __gen_e_acsl_assert_data_13,"\\old(Y)",
-                                   0,__gen_e_acsl_at);
+                                   0,__gen_e_acsl_at_4);
       __gen_e_acsl_assert_data_13.blocking = 1;
       __gen_e_acsl_assert_data_13.kind = "Postcondition";
       __gen_e_acsl_assert_data_13.pred_txt = "X == \\old(Y)";
@@ -414,7 +422,7 @@ void __gen_e_acsl_o(void)
       __gen_e_acsl_assert_data_13.fct = "o";
       __gen_e_acsl_assert_data_13.line = 99;
       __gen_e_acsl_assert_data_13.name = "neg";
-      __e_acsl_assert(X == __gen_e_acsl_at,& __gen_e_acsl_assert_data_13);
+      __e_acsl_assert(X == __gen_e_acsl_at_4,& __gen_e_acsl_assert_data_13);
       __e_acsl_assert_clean(& __gen_e_acsl_assert_data_13);
     }
     __gen_e_acsl_assumes_value_2 = __e_acsl_contract_get_behavior_assumes
@@ -424,7 +432,7 @@ void __gen_e_acsl_o(void)
         {.values = (void *)0};
       __e_acsl_assert_register_int(& __gen_e_acsl_assert_data_14,"X",0,X);
       __e_acsl_assert_register_int(& __gen_e_acsl_assert_data_14,"\\old(Y)",
-                                   0,__gen_e_acsl_at);
+                                   0,__gen_e_acsl_at_3);
       __gen_e_acsl_assert_data_14.blocking = 1;
       __gen_e_acsl_assert_data_14.kind = "Postcondition";
       __gen_e_acsl_assert_data_14.pred_txt = "X == \\old(Y)";
@@ -432,7 +440,7 @@ void __gen_e_acsl_o(void)
       __gen_e_acsl_assert_data_14.fct = "o";
       __gen_e_acsl_assert_data_14.line = 104;
       __gen_e_acsl_assert_data_14.name = "pos";
-      __e_acsl_assert(X == __gen_e_acsl_at,& __gen_e_acsl_assert_data_14);
+      __e_acsl_assert(X == __gen_e_acsl_at_3,& __gen_e_acsl_assert_data_14);
       __e_acsl_assert_clean(& __gen_e_acsl_assert_data_14);
     }
     __gen_e_acsl_assumes_value_2 = __e_acsl_contract_get_behavior_assumes
@@ -442,7 +450,7 @@ void __gen_e_acsl_o(void)
         {.values = (void *)0};
       __e_acsl_assert_register_int(& __gen_e_acsl_assert_data_15,"X",0,X);
       __e_acsl_assert_register_int(& __gen_e_acsl_assert_data_15,"\\old(Y)",
-                                   0,__gen_e_acsl_at);
+                                   0,__gen_e_acsl_at_2);
       __gen_e_acsl_assert_data_15.blocking = 1;
       __gen_e_acsl_assert_data_15.kind = "Postcondition";
       __gen_e_acsl_assert_data_15.pred_txt = "X == \\old(Y)";
@@ -450,7 +458,7 @@ void __gen_e_acsl_o(void)
       __gen_e_acsl_assert_data_15.fct = "o";
       __gen_e_acsl_assert_data_15.line = 109;
       __gen_e_acsl_assert_data_15.name = "odd";
-      __e_acsl_assert(X == __gen_e_acsl_at,& __gen_e_acsl_assert_data_15);
+      __e_acsl_assert(X == __gen_e_acsl_at_2,& __gen_e_acsl_assert_data_15);
       __e_acsl_assert_clean(& __gen_e_acsl_assert_data_15);
     }
     __gen_e_acsl_assumes_value_2 = __e_acsl_contract_get_behavior_assumes
diff --git a/src/plugins/e-acsl/tests/constructs/oracle/gen_result.c b/src/plugins/e-acsl/tests/constructs/oracle/gen_result.c
index 0fdf520c053564fee249660efb0d726f42be6925..578c1350215e2912fa47560fd59ee61786c92d33 100644
--- a/src/plugins/e-acsl/tests/constructs/oracle/gen_result.c
+++ b/src/plugins/e-acsl/tests/constructs/oracle/gen_result.c
@@ -112,25 +112,27 @@ int __gen_e_acsl_g(int x)
 /*@ ensures \result == (int)(\old(x) - \old(x)); */
 int __gen_e_acsl_f(int x)
 {
-  long __gen_e_acsl_at;
+  long __gen_e_acsl_at_2;
+  int __gen_e_acsl_at;
   int __retres;
-  __gen_e_acsl_at = (long)x;
+  __gen_e_acsl_at = x;
+  __gen_e_acsl_at_2 = (long)x;
   __retres = f(x);
   {
     __e_acsl_assert_data_t __gen_e_acsl_assert_data = {.values = (void *)0};
     __e_acsl_assert_register_int(& __gen_e_acsl_assert_data,"\\result",0,
                                  __retres);
     __e_acsl_assert_register_long(& __gen_e_acsl_assert_data,"\\old(x)",0,
-                                  __gen_e_acsl_at);
-    __e_acsl_assert_register_long(& __gen_e_acsl_assert_data,"\\old(x)",0,
-                                  __gen_e_acsl_at);
+                                  __gen_e_acsl_at_2);
+    __e_acsl_assert_register_int(& __gen_e_acsl_assert_data,"\\old(x)",0,
+                                 __gen_e_acsl_at);
     __gen_e_acsl_assert_data.blocking = 1;
     __gen_e_acsl_assert_data.kind = "Postcondition";
     __gen_e_acsl_assert_data.pred_txt = "\\result == (int)(\\old(x) - \\old(x))";
     __gen_e_acsl_assert_data.file = "result.i";
     __gen_e_acsl_assert_data.fct = "f";
     __gen_e_acsl_assert_data.line = 5;
-    __e_acsl_assert(__retres == (int)(__gen_e_acsl_at - __gen_e_acsl_at),
+    __e_acsl_assert(__retres == (int)(__gen_e_acsl_at_2 - __gen_e_acsl_at),
                     & __gen_e_acsl_assert_data);
     __e_acsl_assert_clean(& __gen_e_acsl_assert_data);
     return __retres;
diff --git a/src/plugins/e-acsl/tests/constructs/oracle/gen_rte.c b/src/plugins/e-acsl/tests/constructs/oracle/gen_rte.c
index a89b03788ba4bdb0ffcb6a3e64e5b4e6825ffd5a..9f2896b4fee3591fe4dc47a6d3e5e44b764be591 100644
--- a/src/plugins/e-acsl/tests/constructs/oracle/gen_rte.c
+++ b/src/plugins/e-acsl/tests/constructs/oracle/gen_rte.c
@@ -61,8 +61,8 @@ void __gen_e_acsl_test(int a, int b, int c, int d, int e, int f, int g,
   int __gen_e_acsl_at;
   {
     int __gen_e_acsl_assumes_value;
-    __gen_e_acsl_at = b;
-    __gen_e_acsl_at_2 = e;
+    __gen_e_acsl_at = e;
+    __gen_e_acsl_at_2 = b;
     __gen_e_acsl_contract = __e_acsl_contract_init(1UL);
     __e_acsl_assert_data_t __gen_e_acsl_assert_data = {.values = (void *)0};
     __e_acsl_assert_data_t __gen_e_acsl_assert_data_2 =
@@ -334,25 +334,25 @@ void __gen_e_acsl_test(int a, int b, int c, int d, int e, int f, int g,
     __e_acsl_assert_data_t __gen_e_acsl_assert_data_19 =
       {.values = (void *)0};
     __e_acsl_assert_register_int(& __gen_e_acsl_assert_data_19,
-                                 "__gen_e_acsl_at",0,__gen_e_acsl_at);
+                                 "__gen_e_acsl_at_2",0,__gen_e_acsl_at_2);
     __gen_e_acsl_assert_data_19.blocking = 1;
     __gen_e_acsl_assert_data_19.kind = "RTE";
-    __gen_e_acsl_assert_data_19.pred_txt = "__gen_e_acsl_at != 0";
+    __gen_e_acsl_assert_data_19.pred_txt = "__gen_e_acsl_at_2 != 0";
     __gen_e_acsl_assert_data_19.file = "rte.i";
     __gen_e_acsl_assert_data_19.fct = "test";
     __gen_e_acsl_assert_data_19.line = 8;
     __gen_e_acsl_assert_data_19.name = "division_by_zero";
-    __e_acsl_assert(__gen_e_acsl_at != 0,& __gen_e_acsl_assert_data_19);
+    __e_acsl_assert(__gen_e_acsl_at_2 != 0,& __gen_e_acsl_assert_data_19);
     __e_acsl_assert_clean(& __gen_e_acsl_assert_data_19);
     __e_acsl_assert_register_int(& __gen_e_acsl_assert_data_18,"\\old(b)",0,
-                                 __gen_e_acsl_at);
+                                 __gen_e_acsl_at_2);
     __gen_e_acsl_assert_data_18.blocking = 1;
     __gen_e_acsl_assert_data_18.kind = "Postcondition";
     __gen_e_acsl_assert_data_18.pred_txt = "1 % \\old(b) == 1";
     __gen_e_acsl_assert_data_18.file = "rte.i";
     __gen_e_acsl_assert_data_18.fct = "test";
     __gen_e_acsl_assert_data_18.line = 8;
-    __e_acsl_assert(1 % __gen_e_acsl_at == 1,& __gen_e_acsl_assert_data_18);
+    __e_acsl_assert(1 % __gen_e_acsl_at_2 == 1,& __gen_e_acsl_assert_data_18);
     __e_acsl_assert_clean(& __gen_e_acsl_assert_data_18);
     __gen_e_acsl_assumes_value_2 = __e_acsl_contract_get_behavior_assumes
     ((__e_acsl_contract_t const *)__gen_e_acsl_contract,0UL);
@@ -362,18 +362,18 @@ void __gen_e_acsl_test(int a, int b, int c, int d, int e, int f, int g,
       __e_acsl_assert_data_t __gen_e_acsl_assert_data_21 =
         {.values = (void *)0};
       __e_acsl_assert_register_int(& __gen_e_acsl_assert_data_21,
-                                   "__gen_e_acsl_at_2",0,__gen_e_acsl_at_2);
+                                   "__gen_e_acsl_at",0,__gen_e_acsl_at);
       __gen_e_acsl_assert_data_21.blocking = 1;
       __gen_e_acsl_assert_data_21.kind = "RTE";
-      __gen_e_acsl_assert_data_21.pred_txt = "__gen_e_acsl_at_2 != 0";
+      __gen_e_acsl_assert_data_21.pred_txt = "__gen_e_acsl_at != 0";
       __gen_e_acsl_assert_data_21.file = "rte.i";
       __gen_e_acsl_assert_data_21.fct = "test";
       __gen_e_acsl_assert_data_21.line = 18;
       __gen_e_acsl_assert_data_21.name = "division_by_zero";
-      __e_acsl_assert(__gen_e_acsl_at_2 != 0,& __gen_e_acsl_assert_data_21);
+      __e_acsl_assert(__gen_e_acsl_at != 0,& __gen_e_acsl_assert_data_21);
       __e_acsl_assert_clean(& __gen_e_acsl_assert_data_21);
       __e_acsl_assert_register_int(& __gen_e_acsl_assert_data_20,"\\old(e)",
-                                   0,__gen_e_acsl_at_2);
+                                   0,__gen_e_acsl_at);
       __gen_e_acsl_assert_data_20.blocking = 1;
       __gen_e_acsl_assert_data_20.kind = "Postcondition";
       __gen_e_acsl_assert_data_20.pred_txt = "1 % \\old(e) == 1";
@@ -381,8 +381,7 @@ void __gen_e_acsl_test(int a, int b, int c, int d, int e, int f, int g,
       __gen_e_acsl_assert_data_20.fct = "test";
       __gen_e_acsl_assert_data_20.line = 18;
       __gen_e_acsl_assert_data_20.name = "bhvr";
-      __e_acsl_assert(1 % __gen_e_acsl_at_2 == 1,
-                      & __gen_e_acsl_assert_data_20);
+      __e_acsl_assert(1 % __gen_e_acsl_at == 1,& __gen_e_acsl_assert_data_20);
       __e_acsl_assert_clean(& __gen_e_acsl_assert_data_20);
     }
     __e_acsl_contract_clean(__gen_e_acsl_contract);
diff --git a/src/plugins/e-acsl/tests/constructs/oracle/result.res.oracle b/src/plugins/e-acsl/tests/constructs/oracle/result.res.oracle
index 8b89a531d8c6f7499c7c29b67f3416e881c3809a..c154bf096dd6e181a09a9350cf0c8e3b0ed7ab83 100644
--- a/src/plugins/e-acsl/tests/constructs/oracle/result.res.oracle
+++ b/src/plugins/e-acsl/tests/constructs/oracle/result.res.oracle
@@ -4,8 +4,8 @@
   function __e_acsl_assert_register_long: precondition data->values == \null ||
                                                        \valid(data->values) got status unknown.
 [eva:alarm] result.i:5: Warning: 
-  function __e_acsl_assert_register_long: precondition data->values == \null ||
-                                                       \valid(data->values) got status unknown.
+  function __e_acsl_assert_register_int: precondition data->values == \null ||
+                                                      \valid(data->values) got status unknown.
 [eva:alarm] result.i:13: Warning: 
   function __e_acsl_assert_register_int: precondition data->values == \null ||
                                                       \valid(data->values) got status unknown.
diff --git a/src/plugins/e-acsl/tests/format/oracle/gen_fprintf.c b/src/plugins/e-acsl/tests/format/oracle/gen_fprintf.c
index ed7d5351a40d9b0e83800814275cc156bb380ccf..d9fae2605f627267a48f805d6f16e740b5bbe420 100644
--- a/src/plugins/e-acsl/tests/format/oracle/gen_fprintf.c
+++ b/src/plugins/e-acsl/tests/format/oracle/gen_fprintf.c
@@ -156,12 +156,14 @@ pid_t __gen_e_acsl_fork(void)
 pid_t __gen_e_acsl_waitpid(pid_t pid, int *stat_loc, int options)
 {
   __e_acsl_contract_t *__gen_e_acsl_contract;
+  int *__gen_e_acsl_at_2;
   int *__gen_e_acsl_at;
   pid_t __retres;
   {
     int __gen_e_acsl_assumes_value;
     __e_acsl_store_block((void *)(& stat_loc),8UL);
     __gen_e_acsl_at = stat_loc;
+    __gen_e_acsl_at_2 = stat_loc;
     __gen_e_acsl_contract = __e_acsl_contract_init(2UL);
     __e_acsl_contract_set_behavior_assumes(__gen_e_acsl_contract,0UL,
                                            stat_loc == (int *)0);
@@ -223,8 +225,9 @@ pid_t __gen_e_acsl_waitpid(pid_t pid, int *stat_loc, int options)
                                  __retres);
     if (__retres >= 0) {
       __e_acsl_assert_register_ptr(& __gen_e_acsl_assert_data_3,
-                                   "\\old(stat_loc)",(void *)__gen_e_acsl_at);
-      __gen_e_acsl_and = __gen_e_acsl_at != (int *)0;
+                                   "\\old(stat_loc)",
+                                   (void *)__gen_e_acsl_at_2);
+      __gen_e_acsl_and = __gen_e_acsl_at_2 != (int *)0;
     }
     else __gen_e_acsl_and = 0;
     if (! __gen_e_acsl_and) __gen_e_acsl_implies = 1;
diff --git a/src/plugins/e-acsl/tests/format/oracle/gen_printf.c b/src/plugins/e-acsl/tests/format/oracle/gen_printf.c
index 498e8881d33844d2151eea6f3457761ecf70eb49..8558e51e17a8de854f50382b249b38653d819419 100644
--- a/src/plugins/e-acsl/tests/format/oracle/gen_printf.c
+++ b/src/plugins/e-acsl/tests/format/oracle/gen_printf.c
@@ -736,6 +736,7 @@ void test_specifier_application(char const *allowed, char const *fmt,
 char *__gen_e_acsl_strcpy(char * restrict dest, char const * restrict src)
 {
   unsigned long __gen_e_acsl_strcpy_src_size;
+  char *__gen_e_acsl_at_3;
   char const *__gen_e_acsl_at_2;
   char *__gen_e_acsl_at;
   char *__retres;
@@ -743,6 +744,7 @@ char *__gen_e_acsl_strcpy(char * restrict dest, char const * restrict src)
   __e_acsl_store_block((void *)(& dest),8UL);
   __gen_e_acsl_at = dest;
   __gen_e_acsl_at_2 = src;
+  __gen_e_acsl_at_3 = dest;
   __gen_e_acsl_strcpy_src_size = __e_acsl_builtin_strlen(src);
   __retres = strcpy(dest,src);
   {
@@ -831,13 +833,19 @@ char *__gen_e_acsl_strcpy(char * restrict dest, char const * restrict src)
 char *__gen_e_acsl_strchr(char const *s, int c)
 {
   __e_acsl_contract_t *__gen_e_acsl_contract;
-  int __gen_e_acsl_at_2;
+  int __gen_e_acsl_at_5;
+  char const *__gen_e_acsl_at_4;
+  char const *__gen_e_acsl_at_3;
+  char const *__gen_e_acsl_at_2;
   char const *__gen_e_acsl_at;
   char *__retres;
   __e_acsl_store_block((void *)(& __retres),8UL);
   __e_acsl_store_block((void *)(& s),8UL);
   __gen_e_acsl_at = s;
-  __gen_e_acsl_at_2 = c;
+  __gen_e_acsl_at_2 = s;
+  __gen_e_acsl_at_3 = s;
+  __gen_e_acsl_at_4 = s;
+  __gen_e_acsl_at_5 = c;
   __gen_e_acsl_contract = __e_acsl_contract_init(2UL);
   __retres = strchr(s,c);
   {
@@ -884,11 +892,11 @@ char *__gen_e_acsl_strchr(char const *s, int c)
       __e_acsl_assert_register_char(& __gen_e_acsl_assert_data_3,"*\\result",
                                     0,*__retres);
       __e_acsl_assert_register_int(& __gen_e_acsl_assert_data_3,"\\old(c)",0,
-                                   __gen_e_acsl_at_2);
+                                   __gen_e_acsl_at_5);
       __e_acsl_assert_data_t __gen_e_acsl_assert_data_5 =
         {.values = (void *)0};
       __gen_e_acsl_base_addr = __e_acsl_base_addr((void *)__retres);
-      __gen_e_acsl_base_addr_2 = __e_acsl_base_addr((void *)__gen_e_acsl_at);
+      __gen_e_acsl_base_addr_2 = __e_acsl_base_addr((void *)__gen_e_acsl_at_4);
       __e_acsl_assert_register_ptr(& __gen_e_acsl_assert_data_5,
                                    "\\base_addr(\\result)",
                                    __gen_e_acsl_base_addr);
@@ -912,7 +920,7 @@ char *__gen_e_acsl_strchr(char const *s, int c)
       __gen_e_acsl_assert_data_3.fct = "strchr";
       __gen_e_acsl_assert_data_3.line = 198;
       __gen_e_acsl_assert_data_3.name = "found/result_char";
-      __e_acsl_assert((int)*__retres == (int)((char)__gen_e_acsl_at_2),
+      __e_acsl_assert((int)*__retres == (int)((char)__gen_e_acsl_at_5),
                       & __gen_e_acsl_assert_data_3);
       __e_acsl_assert_clean(& __gen_e_acsl_assert_data_3);
     }
@@ -1017,12 +1025,14 @@ pid_t __gen_e_acsl_fork(void)
 pid_t __gen_e_acsl_waitpid(pid_t pid, int *stat_loc, int options)
 {
   __e_acsl_contract_t *__gen_e_acsl_contract;
+  int *__gen_e_acsl_at_2;
   int *__gen_e_acsl_at;
   pid_t __retres;
   {
     int __gen_e_acsl_assumes_value;
     __e_acsl_store_block((void *)(& stat_loc),8UL);
     __gen_e_acsl_at = stat_loc;
+    __gen_e_acsl_at_2 = stat_loc;
     __gen_e_acsl_contract = __e_acsl_contract_init(2UL);
     __e_acsl_contract_set_behavior_assumes(__gen_e_acsl_contract,0UL,
                                            stat_loc == (int *)0);
@@ -1084,8 +1094,9 @@ pid_t __gen_e_acsl_waitpid(pid_t pid, int *stat_loc, int options)
                                  __retres);
     if (__retres >= 0) {
       __e_acsl_assert_register_ptr(& __gen_e_acsl_assert_data_3,
-                                   "\\old(stat_loc)",(void *)__gen_e_acsl_at);
-      __gen_e_acsl_and = __gen_e_acsl_at != (int *)0;
+                                   "\\old(stat_loc)",
+                                   (void *)__gen_e_acsl_at_2);
+      __gen_e_acsl_and = __gen_e_acsl_at_2 != (int *)0;
     }
     else __gen_e_acsl_and = 0;
     if (! __gen_e_acsl_and) __gen_e_acsl_implies = 1;
diff --git a/src/plugins/e-acsl/tests/libc/oracle/gen_file.c b/src/plugins/e-acsl/tests/libc/oracle/gen_file.c
index c71892de48014543d30c8555794adacf3a65e450..667933a94dbeb38cd0bd72751672019c24045d62 100644
--- a/src/plugins/e-acsl/tests/libc/oracle/gen_file.c
+++ b/src/plugins/e-acsl/tests/libc/oracle/gen_file.c
@@ -63,8 +63,8 @@ size_t __gen_e_acsl_fread(void * restrict ptr, size_t size, size_t nmemb,
                           FILE * restrict stream)
 {
   size_t __gen_e_acsl_at_3;
-  __e_acsl_mpz_t __gen_e_acsl_at_2;
-  void *__gen_e_acsl_at;
+  void *__gen_e_acsl_at_2;
+  __e_acsl_mpz_t __gen_e_acsl_at;
   size_t __retres;
   {
     __e_acsl_mpz_t __gen_e_acsl_size;
@@ -88,10 +88,10 @@ size_t __gen_e_acsl_fread(void * restrict ptr, size_t size, size_t nmemb,
     int __gen_e_acsl_valid_2;
     __e_acsl_store_block((void *)(& stream),8UL);
     __e_acsl_store_block((void *)(& ptr),8UL);
-    __gen_e_acsl_at = ptr;
     __gmpz_init_set_ui(__gen_e_acsl_size,size);
-    __gmpz_init_set(__gen_e_acsl_at_2,
+    __gmpz_init_set(__gen_e_acsl_at,
                     (__e_acsl_mpz_struct const *)(__gen_e_acsl_size));
+    __gen_e_acsl_at_2 = ptr;
     __gen_e_acsl_at_3 = nmemb;
     __e_acsl_assert_data_t __gen_e_acsl_assert_data = {.values = (void *)0};
     __gmpz_init_set_si(__gen_e_acsl_sizeof,1L);
@@ -293,7 +293,7 @@ size_t __gen_e_acsl_fread(void * restrict ptr, size_t size, size_t nmemb,
     __gmpz_init(__gen_e_acsl_mul_4);
     __gmpz_mul(__gen_e_acsl_mul_4,
                (__e_acsl_mpz_struct const *)(__gen_e_acsl_result),
-               (__e_acsl_mpz_struct const *)(__gen_e_acsl_at_2));
+               (__e_acsl_mpz_struct const *)(__gen_e_acsl_at));
     __gmpz_init_set_si(__gen_e_acsl__6,1L);
     __gmpz_init(__gen_e_acsl_sub_3);
     __gmpz_sub(__gen_e_acsl_sub_3,
@@ -343,11 +343,11 @@ size_t __gen_e_acsl_fread(void * restrict ptr, size_t size, size_t nmemb,
     __e_acsl_assert(__gen_e_acsl_le_5 <= 0,& __gen_e_acsl_assert_data_7);
     __e_acsl_assert_clean(& __gen_e_acsl_assert_data_7);
     __gen_e_acsl_size_8 = __gmpz_get_ui((__e_acsl_mpz_struct const *)(__gen_e_acsl_if_2));
-    __gen_e_acsl_initialized = __e_acsl_initialized((void *)((char *)__gen_e_acsl_at + 
+    __gen_e_acsl_initialized = __e_acsl_initialized((void *)((char *)__gen_e_acsl_at_2 + 
                                                              1 * 0),
                                                     __gen_e_acsl_size_8);
     __e_acsl_assert_register_ptr(& __gen_e_acsl_assert_data_6,"\\old(ptr)",
-                                 __gen_e_acsl_at);
+                                 __gen_e_acsl_at_2);
     __e_acsl_assert_register_int(& __gen_e_acsl_assert_data_6,"sizeof(char)",
                                  0,1);
     __e_acsl_assert_register_int(& __gen_e_acsl_assert_data_6,"sizeof(char)",
@@ -356,7 +356,7 @@ size_t __gen_e_acsl_fread(void * restrict ptr, size_t size, size_t nmemb,
                                    __retres);
     __e_acsl_assert_register_mpz(& __gen_e_acsl_assert_data_6,"\\old(size)",
                                  0,
-                                 (__e_acsl_mpz_struct const *)(__gen_e_acsl_at_2));
+                                 (__e_acsl_mpz_struct const *)(__gen_e_acsl_at));
     __e_acsl_assert_register_mpz(& __gen_e_acsl_assert_data_6,"size",0,
                                  (__e_acsl_mpz_struct const *)(__gen_e_acsl_size_7));
     __e_acsl_assert_register_mpz(& __gen_e_acsl_assert_data_6,"size",0,
@@ -390,7 +390,7 @@ size_t __gen_e_acsl_fread(void * restrict ptr, size_t size, size_t nmemb,
     __gmpz_clear(__gen_e_acsl_mul_5);
     __gmpz_clear(__gen_e_acsl_if_2);
     __gmpz_clear(__gen_e_acsl__9);
-    __gmpz_clear(__gen_e_acsl_at_2);
+    __gmpz_clear(__gen_e_acsl_at);
     return __retres;
   }
 }
diff --git a/src/plugins/e-acsl/tests/libc/oracle/gen_mem.c b/src/plugins/e-acsl/tests/libc/oracle/gen_mem.c
index 81522c937fe323622587aadf2e3d27d16dad21fc..2080a3093e2a5d4d02b7d926e23ad669630ec33e 100644
--- a/src/plugins/e-acsl/tests/libc/oracle/gen_mem.c
+++ b/src/plugins/e-acsl/tests/libc/oracle/gen_mem.c
@@ -404,16 +404,18 @@ int main(void)
  */
 void *__gen_e_acsl_memset(void *s, int c, size_t n)
 {
-  size_t __gen_e_acsl_at_3;
-  int __gen_e_acsl_at_2;
+  void *__gen_e_acsl_at_4;
+  int __gen_e_acsl_at_3;
+  size_t __gen_e_acsl_at_2;
   void *__gen_e_acsl_at;
   void *__retres;
   {
     int __gen_e_acsl_valid_or_empty_here_2;
     __e_acsl_store_block((void *)(& s),8UL);
     __gen_e_acsl_at = s;
-    __gen_e_acsl_at_2 = c;
-    __gen_e_acsl_at_3 = n;
+    __gen_e_acsl_at_2 = n;
+    __gen_e_acsl_at_3 = c;
+    __gen_e_acsl_at_4 = s;
     __e_acsl_assert_data_t __gen_e_acsl_assert_data = {.values = (void *)0};
     __gen_e_acsl_valid_or_empty_here_2 = __gen_e_acsl_valid_or_empty_here
     (s,n);
diff --git a/src/plugins/e-acsl/tests/libc/oracle/gen_str.c b/src/plugins/e-acsl/tests/libc/oracle/gen_str.c
index e41ebd61ec3c6acf70f8a66e6dde2be3f68edbfb..a4b1a052376bf9ef8b517c0f475d19f8ed5df1e5 100644
--- a/src/plugins/e-acsl/tests/libc/oracle/gen_str.c
+++ b/src/plugins/e-acsl/tests/libc/oracle/gen_str.c
@@ -169,11 +169,15 @@ char *__gen_e_acsl_strncat(char * restrict dest, char const * restrict src,
   unsigned long __gen_e_acsl_strcat_dest_size;
   unsigned long __gen_e_acsl_strcat_src_size;
   __e_acsl_contract_t *__gen_e_acsl_contract;
+  char *__gen_e_acsl_at_3;
+  char *__gen_e_acsl_at_2;
   char *__gen_e_acsl_at;
   char *__retres;
   __e_acsl_store_block((void *)(& src),8UL);
   __e_acsl_store_block((void *)(& dest),8UL);
   __gen_e_acsl_at = dest;
+  __gen_e_acsl_at_2 = dest;
+  __gen_e_acsl_at_3 = dest;
   __gen_e_acsl_contract = __e_acsl_contract_init(2UL);
   __gen_e_acsl_strcat_src_size = __e_acsl_builtin_strlen(src);
   if (n < __gen_e_acsl_strcat_src_size) __gen_e_acsl_strcat_src_size = n;
@@ -236,7 +240,7 @@ char *__gen_e_acsl_strncat(char * restrict dest, char const * restrict src,
     __e_acsl_assert_register_ptr(& __gen_e_acsl_assert_data_9,"\\result",
                                  (void *)__retres);
     __e_acsl_assert_register_ptr(& __gen_e_acsl_assert_data_9,"\\old(dest)",
-                                 (void *)__gen_e_acsl_at);
+                                 (void *)__gen_e_acsl_at_3);
     __gen_e_acsl_assert_data_9.blocking = 1;
     __gen_e_acsl_assert_data_9.kind = "Postcondition";
     __gen_e_acsl_assert_data_9.pred_txt = "\\result == \\old(dest)";
@@ -244,7 +248,8 @@ char *__gen_e_acsl_strncat(char * restrict dest, char const * restrict src,
     __gen_e_acsl_assert_data_9.fct = "strncat";
     __gen_e_acsl_assert_data_9.line = 504;
     __gen_e_acsl_assert_data_9.name = "result_ptr";
-    __e_acsl_assert(__retres == __gen_e_acsl_at,& __gen_e_acsl_assert_data_9);
+    __e_acsl_assert(__retres == __gen_e_acsl_at_3,
+                    & __gen_e_acsl_assert_data_9);
     __e_acsl_assert_clean(& __gen_e_acsl_assert_data_9);
     __e_acsl_contract_clean(__gen_e_acsl_contract);
     __e_acsl_delete_block((void *)(& src));
@@ -282,11 +287,17 @@ char *__gen_e_acsl_strcat(char * restrict dest, char const * restrict src)
 {
   unsigned long __gen_e_acsl_strcat_dest_size;
   unsigned long __gen_e_acsl_strcat_src_size;
+  char *__gen_e_acsl_at_4;
+  char *__gen_e_acsl_at_3;
+  char *__gen_e_acsl_at_2;
   char *__gen_e_acsl_at;
   char *__retres;
   __e_acsl_store_block((void *)(& src),8UL);
   __e_acsl_store_block((void *)(& dest),8UL);
   __gen_e_acsl_at = dest;
+  __gen_e_acsl_at_2 = dest;
+  __gen_e_acsl_at_3 = dest;
+  __gen_e_acsl_at_4 = dest;
   __gen_e_acsl_strcat_src_size = __e_acsl_builtin_strlen(src);
   __gen_e_acsl_strcat_dest_size = __e_acsl_builtin_strlen((char const *)dest);
   __retres = strcat(dest,src);
@@ -386,9 +397,11 @@ char *__gen_e_acsl_strncpy(char * restrict dest, char const * restrict src,
                            size_t n)
 {
   __e_acsl_contract_t *__gen_e_acsl_contract;
+  char *__gen_e_acsl_at_5;
+  char *__gen_e_acsl_at_4;
   __e_acsl_mpz_t __gen_e_acsl_at_3;
-  char const *__gen_e_acsl_at_2;
-  char *__gen_e_acsl_at;
+  char *__gen_e_acsl_at_2;
+  char const *__gen_e_acsl_at;
   char *__retres;
   {
     __e_acsl_mpz_t __gen_e_acsl_n;
@@ -419,11 +432,13 @@ char *__gen_e_acsl_strncpy(char * restrict dest, char const * restrict src,
     int __gen_e_acsl_separated;
     __e_acsl_store_block((void *)(& src),8UL);
     __e_acsl_store_block((void *)(& dest),8UL);
-    __gen_e_acsl_at = dest;
-    __gen_e_acsl_at_2 = src;
+    __gen_e_acsl_at = src;
+    __gen_e_acsl_at_2 = dest;
     __gmpz_init_set_ui(__gen_e_acsl_n,n);
     __gmpz_init_set(__gen_e_acsl_at_3,
                     (__e_acsl_mpz_struct const *)(__gen_e_acsl_n));
+    __gen_e_acsl_at_4 = dest;
+    __gen_e_acsl_at_5 = dest;
     __gen_e_acsl_contract = __e_acsl_contract_init(2UL);
     __e_acsl_assert_data_t __gen_e_acsl_assert_data_2 =
       {.values = (void *)0};
@@ -605,7 +620,7 @@ char *__gen_e_acsl_strncpy(char * restrict dest, char const * restrict src,
     __e_acsl_assert_register_ptr(& __gen_e_acsl_assert_data_6,"\\result",
                                  (void *)__retres);
     __e_acsl_assert_register_ptr(& __gen_e_acsl_assert_data_6,"\\old(dest)",
-                                 (void *)__gen_e_acsl_at);
+                                 (void *)__gen_e_acsl_at_5);
     __gen_e_acsl_assert_data_6.blocking = 1;
     __gen_e_acsl_assert_data_6.kind = "Postcondition";
     __gen_e_acsl_assert_data_6.pred_txt = "\\result == \\old(dest)";
@@ -613,7 +628,8 @@ char *__gen_e_acsl_strncpy(char * restrict dest, char const * restrict src,
     __gen_e_acsl_assert_data_6.fct = "strncpy";
     __gen_e_acsl_assert_data_6.line = 437;
     __gen_e_acsl_assert_data_6.name = "result_ptr";
-    __e_acsl_assert(__retres == __gen_e_acsl_at,& __gen_e_acsl_assert_data_6);
+    __e_acsl_assert(__retres == __gen_e_acsl_at_5,
+                    & __gen_e_acsl_assert_data_6);
     __e_acsl_assert_clean(& __gen_e_acsl_assert_data_6);
     __e_acsl_assert_data_t __gen_e_acsl_assert_data_7 =
       {.values = (void *)0};
@@ -635,11 +651,11 @@ char *__gen_e_acsl_strncpy(char * restrict dest, char const * restrict src,
     __gen_e_acsl_size_6 = 1UL * __gen_e_acsl__10;
     if (__gen_e_acsl_size_6 <= 0UL) __gen_e_acsl_if_6 = 0UL;
     else __gen_e_acsl_if_6 = __gen_e_acsl_size_6;
-    __gen_e_acsl_initialized = __e_acsl_initialized((void *)(__gen_e_acsl_at + 
+    __gen_e_acsl_initialized = __e_acsl_initialized((void *)(__gen_e_acsl_at_4 + 
                                                              1 * 0),
                                                     __gen_e_acsl_if_6);
     __e_acsl_assert_register_ptr(& __gen_e_acsl_assert_data_7,"\\old(dest)",
-                                 (void *)__gen_e_acsl_at);
+                                 (void *)__gen_e_acsl_at_4);
     __e_acsl_assert_register_int(& __gen_e_acsl_assert_data_7,"sizeof(char)",
                                  0,1);
     __e_acsl_assert_register_int(& __gen_e_acsl_assert_data_7,"sizeof(char)",
@@ -690,6 +706,7 @@ char *__gen_e_acsl_strncpy(char * restrict dest, char const * restrict src,
 char *__gen_e_acsl_strcpy(char * restrict dest, char const * restrict src)
 {
   unsigned long __gen_e_acsl_strcpy_src_size;
+  char *__gen_e_acsl_at_3;
   char const *__gen_e_acsl_at_2;
   char *__gen_e_acsl_at;
   char *__retres;
@@ -697,6 +714,7 @@ char *__gen_e_acsl_strcpy(char * restrict dest, char const * restrict src)
   __e_acsl_store_block((void *)(& dest),8UL);
   __gen_e_acsl_at = dest;
   __gen_e_acsl_at_2 = src;
+  __gen_e_acsl_at_3 = dest;
   __gen_e_acsl_strcpy_src_size = __e_acsl_builtin_strlen(src);
   __retres = strcpy(dest,src);
   {
diff --git a/src/plugins/e-acsl/tests/memory/oracle/gen_hidden_malloc.c b/src/plugins/e-acsl/tests/memory/oracle/gen_hidden_malloc.c
index a7441e7b6a81ce5051ab1e0986b7a939cb251c96..74ca57c74855673e01f41a3142e5f0b8b72391c0 100644
--- a/src/plugins/e-acsl/tests/memory/oracle/gen_hidden_malloc.c
+++ b/src/plugins/e-acsl/tests/memory/oracle/gen_hidden_malloc.c
@@ -162,12 +162,16 @@ char *__gen_e_acsl_realpath(char const * restrict file_name,
                             char * restrict resolved_name)
 {
   __e_acsl_contract_t *__gen_e_acsl_contract;
+  char *__gen_e_acsl_at_3;
+  char *__gen_e_acsl_at_2;
   char *__gen_e_acsl_at;
   char *__retres;
   {
     int __gen_e_acsl_or;
     __e_acsl_store_block((void *)(& resolved_name),8UL);
     __gen_e_acsl_at = resolved_name;
+    __gen_e_acsl_at_2 = resolved_name;
+    __gen_e_acsl_at_3 = resolved_name;
     __gen_e_acsl_contract = __e_acsl_contract_init(5UL);
     __e_acsl_assert_data_t __gen_e_acsl_assert_data_2 =
       {.values = (void *)0};
diff --git a/src/plugins/e-acsl/tests/memory/oracle/gen_ranges_in_builtins.c b/src/plugins/e-acsl/tests/memory/oracle/gen_ranges_in_builtins.c
index 6fb11fbc1086ecc71d844419e4c02596e54227d5..b61de0193365722eb37c1ef30d0b5f15fd5fb131 100644
--- a/src/plugins/e-acsl/tests/memory/oracle/gen_ranges_in_builtins.c
+++ b/src/plugins/e-acsl/tests/memory/oracle/gen_ranges_in_builtins.c
@@ -801,8 +801,8 @@ int main(void)
  */
 void __gen_e_acsl_g(long *ptr, size_t size)
 {
-  __e_acsl_mpz_t __gen_e_acsl_at_2;
-  long *__gen_e_acsl_at;
+  long *__gen_e_acsl_at_2;
+  __e_acsl_mpz_t __gen_e_acsl_at;
   {
     __e_acsl_mpz_t __gen_e_acsl_size;
     __e_acsl_mpz_t __gen_e_acsl_size_2;
@@ -821,10 +821,10 @@ void __gen_e_acsl_g(long *ptr, size_t size)
     unsigned long __gen_e_acsl_size_4;
     int __gen_e_acsl_valid;
     __e_acsl_store_block((void *)(& ptr),8UL);
-    __gen_e_acsl_at = ptr;
     __gmpz_init_set_ui(__gen_e_acsl_size,size);
-    __gmpz_init_set(__gen_e_acsl_at_2,
+    __gmpz_init_set(__gen_e_acsl_at,
                     (__e_acsl_mpz_struct const *)(__gen_e_acsl_size));
+    __gen_e_acsl_at_2 = ptr;
     __e_acsl_assert_data_t __gen_e_acsl_assert_data = {.values = (void *)0};
     __gmpz_init_set_si(__gen_e_acsl_sizeof,8L);
     __gmpz_init_set_ui(__gen_e_acsl_size_3,size);
@@ -940,7 +940,7 @@ void __gen_e_acsl_g(long *ptr, size_t size)
     __gmpz_init_set_si(__gen_e_acsl__5,1L);
     __gmpz_init(__gen_e_acsl_add_2);
     __gmpz_add(__gen_e_acsl_add_2,
-               (__e_acsl_mpz_struct const *)(__gen_e_acsl_at_2),
+               (__e_acsl_mpz_struct const *)(__gen_e_acsl_at),
                (__e_acsl_mpz_struct const *)(__gen_e_acsl__5));
     __gmpz_init_set_si(__gen_e_acsl__6,0L);
     __gmpz_init(__gen_e_acsl_sub_3);
@@ -986,20 +986,20 @@ void __gen_e_acsl_g(long *ptr, size_t size)
     __e_acsl_assert(__gen_e_acsl_le_4 <= 0,& __gen_e_acsl_assert_data_4);
     __e_acsl_assert_clean(& __gen_e_acsl_assert_data_4);
     __gen_e_acsl_size_6 = __gmpz_get_ui((__e_acsl_mpz_struct const *)(__gen_e_acsl_if_2));
-    __gen_e_acsl_valid_2 = __e_acsl_valid((void *)((char *)__gen_e_acsl_at + 
+    __gen_e_acsl_valid_2 = __e_acsl_valid((void *)((char *)__gen_e_acsl_at_2 + 
                                                    8 * 0),
                                           __gen_e_acsl_size_6,
-                                          (void *)__gen_e_acsl_at,
-                                          (void *)(& __gen_e_acsl_at));
+                                          (void *)__gen_e_acsl_at_2,
+                                          (void *)(& __gen_e_acsl_at_2));
     __e_acsl_assert_register_ptr(& __gen_e_acsl_assert_data_3,"\\old(ptr)",
-                                 (void *)__gen_e_acsl_at);
+                                 (void *)__gen_e_acsl_at_2);
     __e_acsl_assert_register_int(& __gen_e_acsl_assert_data_3,"sizeof(long)",
                                  0,8);
     __e_acsl_assert_register_int(& __gen_e_acsl_assert_data_3,"sizeof(long)",
                                  0,8);
     __e_acsl_assert_register_mpz(& __gen_e_acsl_assert_data_3,"\\old(size)",
                                  0,
-                                 (__e_acsl_mpz_struct const *)(__gen_e_acsl_at_2));
+                                 (__e_acsl_mpz_struct const *)(__gen_e_acsl_at));
     __e_acsl_assert_register_mpz(& __gen_e_acsl_assert_data_3,"size",0,
                                  (__e_acsl_mpz_struct const *)(__gen_e_acsl_size_5));
     __e_acsl_assert_register_mpz(& __gen_e_acsl_assert_data_3,"size",0,
@@ -1029,7 +1029,7 @@ void __gen_e_acsl_g(long *ptr, size_t size)
     __gmpz_clear(__gen_e_acsl_mul_2);
     __gmpz_clear(__gen_e_acsl_if_2);
     __gmpz_clear(__gen_e_acsl__8);
-    __gmpz_clear(__gen_e_acsl_at_2);
+    __gmpz_clear(__gen_e_acsl_at);
     return;
   }
 }
diff --git a/src/plugins/e-acsl/tests/memory/oracle/gen_valid_in_contract.c b/src/plugins/e-acsl/tests/memory/oracle/gen_valid_in_contract.c
index 9144b3f24622922ec31f020dcc41bea85eccf996..a5755ea9452cd88a117645f197d4841d7d3c10e3 100644
--- a/src/plugins/e-acsl/tests/memory/oracle/gen_valid_in_contract.c
+++ b/src/plugins/e-acsl/tests/memory/oracle/gen_valid_in_contract.c
@@ -67,6 +67,7 @@ int main(void)
 struct list *__gen_e_acsl_f(struct list *l)
 {
   __e_acsl_contract_t *__gen_e_acsl_contract;
+  struct list *__gen_e_acsl_at_2;
   struct list *__gen_e_acsl_at;
   struct list *__retres;
   __e_acsl_store_block((void *)(& __retres),8UL);
@@ -75,6 +76,7 @@ struct list *__gen_e_acsl_f(struct list *l)
     int __gen_e_acsl_or;
     __e_acsl_store_block((void *)(& l),8UL);
     __gen_e_acsl_at = l;
+    __gen_e_acsl_at_2 = l;
     __gen_e_acsl_contract = __e_acsl_contract_init(2UL);
     __e_acsl_contract_set_behavior_assumes(__gen_e_acsl_contract,0UL,
                                            l == (struct list *)0);
@@ -132,7 +134,7 @@ struct list *__gen_e_acsl_f(struct list *l)
       __e_acsl_assert_register_ptr(& __gen_e_acsl_assert_data_2,"\\result",
                                    (void *)__retres);
       __e_acsl_assert_register_ptr(& __gen_e_acsl_assert_data_2,"\\old(l)",
-                                   (void *)__gen_e_acsl_at);
+                                   (void *)__gen_e_acsl_at_2);
       __gen_e_acsl_assert_data_2.blocking = 1;
       __gen_e_acsl_assert_data_2.kind = "Postcondition";
       __gen_e_acsl_assert_data_2.pred_txt = "\\result == \\old(l)";
@@ -140,7 +142,7 @@ struct list *__gen_e_acsl_f(struct list *l)
       __gen_e_acsl_assert_data_2.fct = "f";
       __gen_e_acsl_assert_data_2.line = 15;
       __gen_e_acsl_assert_data_2.name = "B1";
-      __e_acsl_assert(__retres == __gen_e_acsl_at,
+      __e_acsl_assert(__retres == __gen_e_acsl_at_2,
                       & __gen_e_acsl_assert_data_2);
       __e_acsl_assert_clean(& __gen_e_acsl_assert_data_2);
     }
diff --git a/src/plugins/e-acsl/tests/temporal/oracle/gen_t_fun_lib.c b/src/plugins/e-acsl/tests/temporal/oracle/gen_t_fun_lib.c
index 37f8bf4b80130d318c5bc4c330c21b1b1ed6b1b6..88e6322dd66a98fd9333240ccfba691fe0ae4f71 100644
--- a/src/plugins/e-acsl/tests/temporal/oracle/gen_t_fun_lib.c
+++ b/src/plugins/e-acsl/tests/temporal/oracle/gen_t_fun_lib.c
@@ -162,6 +162,8 @@ char *__gen_e_acsl_realpath(char const * restrict file_name,
                             char * restrict resolved_name)
 {
   __e_acsl_contract_t *__gen_e_acsl_contract;
+  char *__gen_e_acsl_at_3;
+  char *__gen_e_acsl_at_2;
   char *__gen_e_acsl_at;
   char *__retres;
   __e_acsl_store_block((void *)(& __retres),8UL);
@@ -170,6 +172,8 @@ char *__gen_e_acsl_realpath(char const * restrict file_name,
     __e_acsl_store_block((void *)(& resolved_name),8UL);
     __e_acsl_temporal_pull_parameter((void *)(& resolved_name),1U,8UL);
     __gen_e_acsl_at = resolved_name;
+    __gen_e_acsl_at_2 = resolved_name;
+    __gen_e_acsl_at_3 = resolved_name;
     __gen_e_acsl_contract = __e_acsl_contract_init(5UL);
     __e_acsl_assert_data_t __gen_e_acsl_assert_data_2 =
       {.values = (void *)0};
diff --git a/src/plugins/e-acsl/tests/temporal/oracle/gen_t_memcpy.c b/src/plugins/e-acsl/tests/temporal/oracle/gen_t_memcpy.c
index e03df15a615064ed5a156a094c597055581026d7..b801bccbed31cf76400fa73cdb7fb16d9c2c6331 100644
--- a/src/plugins/e-acsl/tests/temporal/oracle/gen_t_memcpy.c
+++ b/src/plugins/e-acsl/tests/temporal/oracle/gen_t_memcpy.c
@@ -739,8 +739,9 @@ int main(void)
  */
 void *__gen_e_acsl_memset(void *s, int c, size_t n)
 {
-  size_t __gen_e_acsl_at_3;
-  int __gen_e_acsl_at_2;
+  void *__gen_e_acsl_at_4;
+  int __gen_e_acsl_at_3;
+  size_t __gen_e_acsl_at_2;
   void *__gen_e_acsl_at;
   void *__retres;
   {
@@ -748,8 +749,9 @@ void *__gen_e_acsl_memset(void *s, int c, size_t n)
     __e_acsl_store_block((void *)(& s),8UL);
     __e_acsl_temporal_pull_parameter((void *)(& s),0U,8UL);
     __gen_e_acsl_at = s;
-    __gen_e_acsl_at_2 = c;
-    __gen_e_acsl_at_3 = n;
+    __gen_e_acsl_at_2 = n;
+    __gen_e_acsl_at_3 = c;
+    __gen_e_acsl_at_4 = s;
     __e_acsl_assert_data_t __gen_e_acsl_assert_data = {.values = (void *)0};
     __gen_e_acsl_valid_or_empty_here_2 = __gen_e_acsl_valid_or_empty_here
     (s,n);