diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/at.i b/src/plugins/e-acsl/tests/e-acsl-runtime/at.i
index 5e7a85ac143a64f88c31d1626073cd2cad3a89e6..9ca397f65f6927364e962f610b0f1b674a6e8d60 100644
--- a/src/plugins/e-acsl/tests/e-acsl-runtime/at.i
+++ b/src/plugins/e-acsl/tests/e-acsl-runtime/at.i
@@ -1,6 +1,6 @@
 /* run.config
    COMMENT: \at
-   EXECNOW: LOG gen_at.c BIN gen_at.out FRAMAC_SHARE=./share @frama-c@ ./tests/e-acsl-runtime/at.i -e-acsl-project p -e-acsl-include-headers -then-on p -print -ocode ./tests/e-acsl-runtime/result/gen_at.c > /dev/null && gcc -o ./tests/e-acsl-runtime/result/gen_at.out ./tests/e-acsl-runtime/result/gen_at.c -lgmp
+   EXECNOW: LOG gen_at.c BIN gen_at.out FRAMAC_SHARE=./share @frama-c@ ./tests/e-acsl-runtime/at.i -e-acsl-project p -e-acsl-include-headers -then-on p -print -ocode ./tests/e-acsl-runtime/result/gen_at.c > /dev/null && gcc -o ./tests/e-acsl-runtime/result/gen_at.out ./tests/e-acsl-runtime/result/gen_at.c -lgmp && ./tests/e-acsl-runtime/result/gen_at.out
 */
 
 int A = 0;
@@ -16,6 +16,26 @@ void f(void) {
   A = 3;
 }
 
+/* /\*@ requires \valid(p); */
+/*   @ requires \valid(p+1); */
+/*   @ requires \valid(q); */
+/*   @*\/ */
+void g(int *p, int *q) {
+  *p = 0;
+  *(p+1) = 1;
+  *q = 0;
+ L1: *p = 2;
+  *(p+1) = 3;
+  *q = 1;
+ L2: A = 4;
+  /*@ assert (\at(*(p+\at(*q,L1)),L2) == 2); */
+ L3:
+  /*@ assert (\at(*(p+\at(*q,L1)),Here) == 2); */
+  //  /*@ assert (\at(*(p+\at(*q,L1)),L3) == 2); */ // doesn't work yet
+  //  /*@ assert (\at(*(p+\at(*q,L2)),L1)) == 1; */
+  return ;
+}
+
 int main(void) {
 
   int x;
@@ -30,5 +50,8 @@ int main(void) {
   /*@ assert \at(x+1,L) == 1; */
   /*@ assert \at(x,L)+1 == 1; */
 
+  int t[2];
+  g(t,&x);
+
   return 0;
 }
diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/at.res.oracle b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/at.res.oracle
index c369b56ec411fffba0a3bdf432fada0e75ed511b..a167a416e324980c98d827d341d2a2f8ad615d2f 100644
--- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/at.res.oracle
+++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/at.res.oracle
@@ -1,53 +1,59 @@
+tests/e-acsl-runtime/at.i:31:[e-acsl] warning: missing guard for ensuring that q is a valid memory access
+tests/e-acsl-runtime/at.i:31:[e-acsl] warning: missing guard for ensuring that p+\at(*q,L1) is a valid pointer
+tests/e-acsl-runtime/at.i:31:[e-acsl] warning: missing guard for ensuring that p+\at(*q,L1) is a valid memory access
+tests/e-acsl-runtime/at.i:33:[e-acsl] warning: missing guard for ensuring that q is a valid memory access
+tests/e-acsl-runtime/at.i:33:[e-acsl] warning: missing guard for ensuring that p+\at(*q,L1) is a valid pointer
+tests/e-acsl-runtime/at.i:33:[e-acsl] warning: missing guard for ensuring that p+\at(*q,L1) is a valid memory access
 [value] Analyzing a complete application starting at main
 [value] Computing initial state
 [value] Initial state computed
 [value] Values of globals at initialization
         A ∈ {0}
 [value] computing for function mpz_init_set_si <- main.
-        Called from PROJECT_FILE.i:236.
+        Called from PROJECT_FILE.i:291.
 PROJECT_FILE.i:33:[value] Function mpz_init_set_si: postcondition got status valid.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_init_set_si <- main.
-        Called from PROJECT_FILE.i:237.
+        Called from PROJECT_FILE.i:292.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_init <- main.
-        Called from PROJECT_FILE.i:238.
+        Called from PROJECT_FILE.i:293.
 PROJECT_FILE.i:21:[value] Function mpz_init: postcondition got status valid.
 [value] Done for function mpz_init
 [value] computing for function mpz_add <- main.
-        Called from PROJECT_FILE.i:239.
+        Called from PROJECT_FILE.i:294.
 PROJECT_FILE.i:64:[value] Function mpz_add: precondition got status valid.
 PROJECT_FILE.i:65:[value] Function mpz_add: precondition got status valid.
 PROJECT_FILE.i:66:[value] Function mpz_add: precondition got status valid.
 [value] Done for function mpz_add
 [value] computing for function mpz_init_set <- main.
-        Called from PROJECT_FILE.i:240.
+        Called from PROJECT_FILE.i:295.
 PROJECT_FILE.i:25:[value] Function mpz_init_set: postcondition got status valid.
 [value] Done for function mpz_init_set
 [value] computing for function mpz_clear <- main.
-        Called from PROJECT_FILE.i:241.
+        Called from PROJECT_FILE.i:296.
 PROJECT_FILE.i:43:[value] Function mpz_clear: precondition got status valid.
 [value] Done for function mpz_clear
 [value] computing for function mpz_clear <- main.
-        Called from PROJECT_FILE.i:242.
+        Called from PROJECT_FILE.i:297.
 [value] Done for function mpz_clear
 [value] computing for function mpz_clear <- main.
-        Called from PROJECT_FILE.i:243.
+        Called from PROJECT_FILE.i:298.
 [value] Done for function mpz_clear
-PROJECT_FILE.i:247:[value] Assertion got status valid.
+PROJECT_FILE.i:302:[value] Assertion got status valid.
 [value] computing for function mpz_init_set_si <- main.
-        Called from PROJECT_FILE.i:252.
+        Called from PROJECT_FILE.i:307.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_init_set_si <- main.
-        Called from PROJECT_FILE.i:253.
+        Called from PROJECT_FILE.i:308.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_cmp <- main.
-        Called from PROJECT_FILE.i:254.
+        Called from PROJECT_FILE.i:309.
 PROJECT_FILE.i:49:[value] Function mpz_cmp: precondition got status valid.
 PROJECT_FILE.i:50:[value] Function mpz_cmp: precondition got status valid.
 [value] Done for function mpz_cmp
 [value] computing for function e_acsl_fail <- main.
-        Called from PROJECT_FILE.i:255.
+        Called from PROJECT_FILE.i:310.
 [value] computing for function printf <- e_acsl_fail <- main.
         Called from PROJECT_FILE.i:129.
 [value] Done for function printf
@@ -58,13 +64,13 @@ PROJECT_FILE.i:119:[value] Function exit: postcondition got status invalid.
 [value] Recording results for e_acsl_fail
 [value] Done for function e_acsl_fail
 [value] computing for function mpz_clear <- main.
-        Called from PROJECT_FILE.i:256.
+        Called from PROJECT_FILE.i:311.
 [value] Done for function mpz_clear
 [value] computing for function mpz_clear <- main.
-        Called from PROJECT_FILE.i:257.
+        Called from PROJECT_FILE.i:312.
 [value] Done for function mpz_clear
 [value] computing for function f <- main.
-        Called from PROJECT_FILE.i:263.
+        Called from PROJECT_FILE.i:318.
 PROJECT_FILE.i:148:[value] Assertion got status valid.
 [value] computing for function mpz_init_set_si <- f <- main.
         Called from PROJECT_FILE.i:153.
@@ -197,18 +203,18 @@ PROJECT_FILE.i:191:[value] Assertion got status unknown.
 PROJECT_FILE.i:132:[value] Function f: postcondition got status valid.
 [value] Recording results for f
 [value] Done for function f
-PROJECT_FILE.i:264:[value] Assertion got status unknown.
+PROJECT_FILE.i:319:[value] Assertion got status unknown.
 [value] computing for function mpz_init_set_si <- main.
-        Called from PROJECT_FILE.i:269.
+        Called from PROJECT_FILE.i:324.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_init_set_si <- main.
-        Called from PROJECT_FILE.i:270.
+        Called from PROJECT_FILE.i:325.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_cmp <- main.
-        Called from PROJECT_FILE.i:271.
+        Called from PROJECT_FILE.i:326.
 [value] Done for function mpz_cmp
 [value] computing for function e_acsl_fail <- main.
-        Called from PROJECT_FILE.i:272.
+        Called from PROJECT_FILE.i:327.
 [value] computing for function printf <- e_acsl_fail <- main.
         Called from PROJECT_FILE.i:129.
 [value] Done for function printf
@@ -218,20 +224,20 @@ PROJECT_FILE.i:264:[value] Assertion got status unknown.
 [value] Recording results for e_acsl_fail
 [value] Done for function e_acsl_fail
 [value] computing for function mpz_clear <- main.
-        Called from PROJECT_FILE.i:273.
+        Called from PROJECT_FILE.i:328.
 [value] Done for function mpz_clear
 [value] computing for function mpz_clear <- main.
-        Called from PROJECT_FILE.i:274.
+        Called from PROJECT_FILE.i:329.
 [value] Done for function mpz_clear
-PROJECT_FILE.i:278:[value] Assertion got status unknown.
+PROJECT_FILE.i:333:[value] Assertion got status unknown.
 [value] computing for function mpz_init_set_si <- main.
-        Called from PROJECT_FILE.i:282.
+        Called from PROJECT_FILE.i:337.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_cmp <- main.
-        Called from PROJECT_FILE.i:283.
+        Called from PROJECT_FILE.i:338.
 [value] Done for function mpz_cmp
 [value] computing for function e_acsl_fail <- main.
-        Called from PROJECT_FILE.i:284.
+        Called from PROJECT_FILE.i:339.
 [value] computing for function printf <- e_acsl_fail <- main.
         Called from PROJECT_FILE.i:129.
 [value] Done for function printf
@@ -241,26 +247,26 @@ PROJECT_FILE.i:278:[value] Assertion got status unknown.
 [value] Recording results for e_acsl_fail
 [value] Done for function e_acsl_fail
 [value] computing for function mpz_clear <- main.
-        Called from PROJECT_FILE.i:285.
+        Called from PROJECT_FILE.i:340.
 [value] Done for function mpz_clear
-PROJECT_FILE.i:289:[value] Assertion got status unknown.
+PROJECT_FILE.i:344:[value] Assertion got status unknown.
 [value] computing for function mpz_init_set_si <- main.
-        Called from PROJECT_FILE.i:295.
+        Called from PROJECT_FILE.i:350.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_init_set_si <- main.
-        Called from PROJECT_FILE.i:296.
+        Called from PROJECT_FILE.i:351.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_init <- main.
-        Called from PROJECT_FILE.i:297.
+        Called from PROJECT_FILE.i:352.
 [value] Done for function mpz_init
 [value] computing for function mpz_add <- main.
-        Called from PROJECT_FILE.i:298.
+        Called from PROJECT_FILE.i:353.
 [value] Done for function mpz_add
 [value] computing for function mpz_cmp <- main.
-        Called from PROJECT_FILE.i:299.
+        Called from PROJECT_FILE.i:354.
 [value] Done for function mpz_cmp
 [value] computing for function e_acsl_fail <- main.
-        Called from PROJECT_FILE.i:300.
+        Called from PROJECT_FILE.i:355.
 [value] computing for function printf <- e_acsl_fail <- main.
         Called from PROJECT_FILE.i:129.
 [value] Done for function printf
@@ -270,16 +276,72 @@ PROJECT_FILE.i:289:[value] Assertion got status unknown.
 [value] Recording results for e_acsl_fail
 [value] Done for function e_acsl_fail
 [value] computing for function mpz_clear <- main.
-        Called from PROJECT_FILE.i:301.
+        Called from PROJECT_FILE.i:356.
 [value] Done for function mpz_clear
 [value] computing for function mpz_clear <- main.
-        Called from PROJECT_FILE.i:302.
+        Called from PROJECT_FILE.i:357.
 [value] Done for function mpz_clear
 [value] computing for function mpz_clear <- main.
-        Called from PROJECT_FILE.i:303.
+        Called from PROJECT_FILE.i:358.
 [value] Done for function mpz_clear
+[value] computing for function g <- main.
+        Called from PROJECT_FILE.i:362.
+PROJECT_FILE.i:240:[value] Assertion got status unknown.
+[value] computing for function mpz_init_set_si <- g <- main.
+        Called from PROJECT_FILE.i:245.
+[value] Done for function mpz_init_set_si
+[value] computing for function mpz_init_set_si <- g <- main.
+        Called from PROJECT_FILE.i:246.
+[value] Done for function mpz_init_set_si
+[value] computing for function mpz_cmp <- g <- main.
+        Called from PROJECT_FILE.i:247.
+[value] Done for function mpz_cmp
+[value] computing for function e_acsl_fail <- g <- main.
+        Called from PROJECT_FILE.i:248.
+[value] computing for function printf <- e_acsl_fail <- g <- main.
+        Called from PROJECT_FILE.i:129.
+[value] Done for function printf
+[value] computing for function exit <- e_acsl_fail <- g <- main.
+        Called from PROJECT_FILE.i:129.
+[value] Done for function exit
+[value] Recording results for e_acsl_fail
+[value] Done for function e_acsl_fail
+[value] computing for function mpz_clear <- g <- main.
+        Called from PROJECT_FILE.i:250.
+[value] Done for function mpz_clear
+[value] computing for function mpz_clear <- g <- main.
+        Called from PROJECT_FILE.i:251.
+[value] Done for function mpz_clear
+PROJECT_FILE.i:256:[value] Assertion got status unknown.
+[value] computing for function mpz_init_set_si <- g <- main.
+        Called from PROJECT_FILE.i:262.
+[value] Done for function mpz_init_set_si
+[value] computing for function mpz_init_set_si <- g <- main.
+        Called from PROJECT_FILE.i:263.
+[value] Done for function mpz_init_set_si
+[value] computing for function mpz_cmp <- g <- main.
+        Called from PROJECT_FILE.i:264.
+[value] Done for function mpz_cmp
+[value] computing for function e_acsl_fail <- g <- main.
+        Called from PROJECT_FILE.i:266.
+[value] computing for function printf <- e_acsl_fail <- g <- main.
+        Called from PROJECT_FILE.i:129.
+[value] Done for function printf
+[value] computing for function exit <- e_acsl_fail <- g <- main.
+        Called from PROJECT_FILE.i:129.
+[value] Done for function exit
+[value] Recording results for e_acsl_fail
+[value] Done for function e_acsl_fail
+[value] computing for function mpz_clear <- g <- main.
+        Called from PROJECT_FILE.i:268.
+[value] Done for function mpz_clear
+[value] computing for function mpz_clear <- g <- main.
+        Called from PROJECT_FILE.i:269.
+[value] Done for function mpz_clear
+[value] Recording results for g
+[value] Done for function g
 [value] computing for function mpz_clear <- main.
-        Called from PROJECT_FILE.i:308.
+        Called from PROJECT_FILE.i:364.
 [value] Done for function mpz_clear
 [value] Recording results for main
 [value] done for function main
@@ -294,10 +356,21 @@ PROJECT_FILE.i:289:[value] Assertion got status unknown.
           e_acsl_13 ∈ {0}
           e_acsl_14 ∈ {0}
           e_acsl_18 ∈ {3}
+[value] Values for function g:
+          A ∈ {4}
+          e_acsl_1 ∈ {0}
+          e_acsl_2 ∈ {2}
+          e_acsl_6 ∈ {0}
+          e_acsl_7 ∈ {2}
+          x ∈ {1}
+          t[0] ∈ {2}
+           [1] ∈ {3}
 [value] Values for function main:
-          A ∈ {3}
+          A ∈ {4}
           __retres ∈ {0}
-          x ∈ {2}
+          x ∈ {1}
+          t[0] ∈ {2}
+           [1] ∈ {3}
           e_acsl_4 ∈ {0}
           e_acsl_11[0] ∈ [--..--] or UNINITIALIZED
           e_acsl_14 ∈ {0}
@@ -442,10 +515,64 @@ void f(void)
   
 }
 
+void g(int *p, int *q)
+{
+  int e_acsl_1;
+  int e_acsl_2;
+  int e_acsl_6;
+  int e_acsl_7;
+  *p = 0;
+  *(p + 1) = 1;
+  *q = 0;
+  L1: e_acsl_6 = *q;
+  e_acsl_1 = *q;
+  *p = 2;
+  *(p + 1) = 3;
+  *q = 1;
+  L2: e_acsl_2 = *(p + e_acsl_1);
+  A = 4;
+  /*@ assert \at(*(p+\at(*q,L1)),L2) ≡ 2; */ ;
+  {
+    mpz_t e_acsl_3;
+    mpz_t e_acsl_4;
+    int e_acsl_5;
+    mpz_init_set_si((__mpz_struct *)(e_acsl_3),(long)e_acsl_2);
+    mpz_init_set_si((__mpz_struct *)(e_acsl_4),(long)2);
+    e_acsl_5 = mpz_cmp((__mpz_struct const *)(e_acsl_3),
+                       (__mpz_struct const *)(e_acsl_4));
+    if (! (e_acsl_5 == 0)) {
+      e_acsl_fail((char *)"(\\at(*(p+\\at(*q,L1)),L2) == 2)");
+    }
+    mpz_clear((__mpz_struct *)(e_acsl_3));
+    mpz_clear((__mpz_struct *)(e_acsl_4));
+  }
+  
+  L3: 
+  /*@ assert \at(*(p+\at(*q,L1)),Here) ≡ 2; */ ;
+  {
+    mpz_t e_acsl_8;
+    mpz_t e_acsl_9;
+    int e_acsl_10;
+    e_acsl_7 = *(p + e_acsl_6);
+    mpz_init_set_si((__mpz_struct *)(e_acsl_8),(long)e_acsl_7);
+    mpz_init_set_si((__mpz_struct *)(e_acsl_9),(long)2);
+    e_acsl_10 = mpz_cmp((__mpz_struct const *)(e_acsl_8),
+                        (__mpz_struct const *)(e_acsl_9));
+    if (! (e_acsl_10 == 0)) {
+      e_acsl_fail((char *)"(\\at(*(p+\\at(*q,L1)),Here) == 2)");
+    }
+    mpz_clear((__mpz_struct *)(e_acsl_8));
+    mpz_clear((__mpz_struct *)(e_acsl_9));
+  }
+  
+  return;
+}
+
 int main(void)
 {
   int __retres;
   int x;
+  int t[2];
   int e_acsl_4;
   mpz_t e_acsl_11;
   int e_acsl_14;
@@ -529,6 +656,7 @@ int main(void)
     mpz_clear((__mpz_struct *)(e_acsl_17));
   }
   
+  g(t,& x);
   __retres = 0;
   mpz_clear((__mpz_struct *)(e_acsl_11));
   return (__retres);
diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_at.c b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_at.c
index 2a78fbc5edb263eb52f2faf670dfb6514bdb2a09..70db2542d422729cca6f23e892719892600de362 100644
--- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_at.c
+++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_at.c
@@ -718,10 +718,64 @@ void f(void)
   
 }
 
+void g(int *p, int *q)
+{
+  int e_acsl_1;
+  int e_acsl_2;
+  int e_acsl_6;
+  int e_acsl_7;
+  *p = 0;
+  *(p + 1) = 1;
+  *q = 0;
+  L1: e_acsl_6 = *q;
+  e_acsl_1 = *q;
+  *p = 2;
+  *(p + 1) = 3;
+  *q = 1;
+  L2: e_acsl_2 = *(p + e_acsl_1);
+  A = 4;
+  /*@ assert \at(*(p+\at(*q,L1)),L2) ≡ 2; */ ;
+  {
+    mpz_t e_acsl_3;
+    mpz_t e_acsl_4;
+    int e_acsl_5;
+    __gmpz_init_set_si((__mpz_struct *)(e_acsl_3),(long)e_acsl_2);
+    __gmpz_init_set_si((__mpz_struct *)(e_acsl_4),(long)2);
+    e_acsl_5 = __gmpz_cmp((__mpz_struct const *)(e_acsl_3),
+                          (__mpz_struct const *)(e_acsl_4));
+    if (! (e_acsl_5 == 0)) {
+      e_acsl_fail((char *)"(\\at(*(p+\\at(*q,L1)),L2) == 2)");
+    }
+    __gmpz_clear((__mpz_struct *)(e_acsl_3));
+    __gmpz_clear((__mpz_struct *)(e_acsl_4));
+  }
+  
+  L3: 
+  /*@ assert \at(*(p+\at(*q,L1)),Here) ≡ 2; */ ;
+  {
+    mpz_t e_acsl_8;
+    mpz_t e_acsl_9;
+    int e_acsl_10;
+    e_acsl_7 = *(p + e_acsl_6);
+    __gmpz_init_set_si((__mpz_struct *)(e_acsl_8),(long)e_acsl_7);
+    __gmpz_init_set_si((__mpz_struct *)(e_acsl_9),(long)2);
+    e_acsl_10 = __gmpz_cmp((__mpz_struct const *)(e_acsl_8),
+                           (__mpz_struct const *)(e_acsl_9));
+    if (! (e_acsl_10 == 0)) {
+      e_acsl_fail((char *)"(\\at(*(p+\\at(*q,L1)),Here) == 2)");
+    }
+    __gmpz_clear((__mpz_struct *)(e_acsl_8));
+    __gmpz_clear((__mpz_struct *)(e_acsl_9));
+  }
+  
+  return;
+}
+
 int main(void)
 {
   int __retres;
   int x;
+  int t[2];
   int e_acsl_4;
   mpz_t e_acsl_11;
   int e_acsl_14;
@@ -805,6 +859,7 @@ int main(void)
     __gmpz_clear((__mpz_struct *)(e_acsl_17));
   }
   
+  g(t,& x);
   __retres = 0;
   __gmpz_clear((__mpz_struct *)(e_acsl_11));
   return (__retres);