diff --git a/src/plugins/e-acsl/TODO b/src/plugins/e-acsl/TODO
index d6ebf7ed7d8e1ec7df7e7928941672078e390c01..efbbd3c6aa1d8fcdb25a24a84a390ae9c89960de 100644
--- a/src/plugins/e-acsl/TODO
+++ b/src/plugins/e-acsl/TODO
@@ -80,6 +80,7 @@
   (voir aussi result.i et ./at_stmt_contract.i)
 - interprétation des tableaux logiques
 [Dillon] Windows
+- \valid(p) is not true if p is a const pointer
 
 [to be check]: no call to full_init or initialize for the assigned result of a 
 function call
diff --git a/src/plugins/e-acsl/share/e-acsl/e_acsl_gmp.h b/src/plugins/e-acsl/share/e-acsl/e_acsl_gmp.h
index 7ef14b60c2addc67b82b06188045a0e045a23b4b..7df9fcdec5428123ca49b940e7d6ea0d74262515 100644
--- a/src/plugins/e-acsl/share/e-acsl/e_acsl_gmp.h
+++ b/src/plugins/e-acsl/share/e-acsl/e_acsl_gmp.h
@@ -43,7 +43,7 @@
 extern void __gmpz_init(mpz_t z)
   __attribute__((FC_BUILTIN));
 
-/*@ requires \valid(z_orig);
+/*@ requires \valid_read(z_orig);
   @ requires ! \initialized(z);
   @ allocates z;
   @ ensures \valid(z);
@@ -91,7 +91,7 @@ extern void __gmpz_import (mpz_t z, size_t, int, size_t, int, size_t, const void
 /* Assignments */
 /***************/
 
-/*@ requires \valid(z_orig);
+/*@ requires \valid_read(z_orig);
   @ requires \valid(z);
 //  @ ensures z->n == z_orig->n;
   @ assigns *z \from *z_orig; */
@@ -124,8 +124,8 @@ extern void __gmpz_clear(mpz_t x)
 /* Logical operator */
 /********************/
 
-/*@ requires \valid(z1);
-  @ requires \valid(z2);
+/*@ requires \valid_read(z1);
+  @ requires \valid_read(z2);
   @ assigns \result \from *z1, *z2; */
 extern int __gmpz_cmp(const mpz_t z1, const mpz_t z2)
   __attribute__((FC_BUILTIN));
@@ -135,42 +135,42 @@ extern int __gmpz_cmp(const mpz_t z1, const mpz_t z2)
 /************************/
 
 /*@ requires \valid(z1);
-  @ requires \valid(z2);
+  @ requires \valid_read(z2);
   @ assigns *z1 \from *z2; */
 extern void __gmpz_neg(mpz_t z1, const mpz_t z2)
   __attribute__((FC_BUILTIN));
 
 /*@ requires \valid(z1);
-  @ requires \valid(z2);
-  @ requires \valid(z3);
+  @ requires \valid_read(z2);
+  @ requires \valid_read(z3);
   @ assigns *z1 \from *z2, *z3; */
 extern void __gmpz_add(mpz_t z1, const mpz_t z2, const mpz_t z3)
   __attribute__((FC_BUILTIN));
 
 /*@ requires \valid(z1);
-  @ requires \valid(z2);
-  @ requires \valid(z3);
+  @ requires \valid_read(z2);
+  @ requires \valid_read(z3);
   @ assigns *z1 \from *z2, *z3; */
 extern void __gmpz_sub(mpz_t z1, const mpz_t z2, const mpz_t z3)
   __attribute__((FC_BUILTIN));
 
 /*@ requires \valid(z1);
-  @ requires \valid(z2);
-  @ requires \valid(z3);
+  @ requires \valid_read(z2);
+  @ requires \valid_read(z3);
   @ assigns *z1 \from *z2, *z3; */
 extern void __gmpz_mul(mpz_t z1, const mpz_t z2, const mpz_t z3)
   __attribute__((FC_BUILTIN));
 
 /*@ requires \valid(z1);
-  @ requires \valid(z2);
-  @ requires \valid(z3);
+  @ requires \valid_read(z2);
+  @ requires \valid_read(z3);
   @ assigns *z1 \from *z2, *z3; */
 extern void __gmpz_tdiv_q(mpz_t z1, const mpz_t z2, const mpz_t z3)
   __attribute__((FC_BUILTIN));
 
 /*@ requires \valid(z1);
-  @ requires \valid(z2);
-  @ requires \valid(z3);
+  @ requires \valid_read(z2);
+  @ requires \valid_read(z3);
   @ assigns *z1 \from *z2, *z3; */
 extern void __gmpz_tdiv_r(mpz_t z1, const mpz_t z2, const mpz_t z3)
   __attribute__((FC_BUILTIN));
@@ -180,7 +180,7 @@ extern void __gmpz_tdiv_r(mpz_t z1, const mpz_t z2, const mpz_t z3)
 /*********************/
 
 /*@ requires \valid(z1);
-  @ requires \valid(z2);
+  @ requires \valid_read(z2);
   @ assigns *z1 \from *z2; 
   @ assigns \result \from *z1,*z2; */
 extern int __gmpz_com(mpz_t z1, const mpz_t z2)
@@ -190,12 +190,12 @@ extern int __gmpz_com(mpz_t z1, const mpz_t z2)
 /* Coercions to C types */
 /************************/
 
-/*@ requires \valid(z); 
+/*@ requires \valid_read(z); 
   @ assigns \result \from *z; */
 extern long __gmpz_get_si(const mpz_t z)
   __attribute__((FC_BUILTIN));
 
-/*@ requires \valid(z); 
+/*@ requires \valid_read(z); 
   @ assigns \result \from *z; */
 extern unsigned long __gmpz_get_ui(const mpz_t z)
   __attribute__((FC_BUILTIN));
diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_arith2.c b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_arith2.c
index 820086317114462508624a70a06064a4945a2433..f51c537f6c4ced15af767b68e1b77f6e4e98f724 100644
--- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_arith2.c
+++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_arith2.c
@@ -67,8 +67,8 @@ extern  __attribute__((__FC_BUILTIN__)) int __gmpz_init_set_str(__mpz_struct * /
     assigns *x \from *x; */
 extern  __attribute__((__FC_BUILTIN__)) void __gmpz_clear(__mpz_struct * /*[1]*/ x);
 
-/*@ requires \valid(z1);
-    requires \valid(z2);
+/*@ requires \valid_read(z1);
+    requires \valid_read(z2);
     assigns \result;
     assigns \result \from *z1, *z2;
  */
@@ -76,7 +76,7 @@ extern  __attribute__((__FC_BUILTIN__)) int __gmpz_cmp(__mpz_struct const * /*[1
                                                        __mpz_struct const * /*[1]*/ z2);
 
 /*@ requires \valid(z1);
-    requires \valid(z2);
+    requires \valid_read(z2);
     assigns *z1;
     assigns *z1 \from *z2;
  */
@@ -84,8 +84,8 @@ extern  __attribute__((__FC_BUILTIN__)) void __gmpz_neg(__mpz_struct * /*[1]*/ z
                                                         __mpz_struct const * /*[1]*/ z2);
 
 /*@ requires \valid(z1);
-    requires \valid(z2);
-    requires \valid(z3);
+    requires \valid_read(z2);
+    requires \valid_read(z3);
     assigns *z1;
     assigns *z1 \from *z2, *z3;
  */
@@ -94,8 +94,8 @@ extern  __attribute__((__FC_BUILTIN__)) void __gmpz_add(__mpz_struct * /*[1]*/ z
                                                         __mpz_struct const * /*[1]*/ z3);
 
 /*@ requires \valid(z1);
-    requires \valid(z2);
-    requires \valid(z3);
+    requires \valid_read(z2);
+    requires \valid_read(z3);
     assigns *z1;
     assigns *z1 \from *z2, *z3;
  */
@@ -104,8 +104,8 @@ extern  __attribute__((__FC_BUILTIN__)) void __gmpz_sub(__mpz_struct * /*[1]*/ z
                                                         __mpz_struct const * /*[1]*/ z3);
 
 /*@ requires \valid(z1);
-    requires \valid(z2);
-    requires \valid(z3);
+    requires \valid_read(z2);
+    requires \valid_read(z3);
     assigns *z1;
     assigns *z1 \from *z2, *z3;
  */
@@ -114,8 +114,8 @@ extern  __attribute__((__FC_BUILTIN__)) void __gmpz_mul(__mpz_struct * /*[1]*/ z
                                                         __mpz_struct const * /*[1]*/ z3);
 
 /*@ requires \valid(z1);
-    requires \valid(z2);
-    requires \valid(z3);
+    requires \valid_read(z2);
+    requires \valid_read(z3);
     assigns *z1;
     assigns *z1 \from *z2, *z3;
  */
@@ -124,8 +124,8 @@ extern  __attribute__((__FC_BUILTIN__)) void __gmpz_tdiv_q(__mpz_struct * /*[1]*
                                                            __mpz_struct const * /*[1]*/ z3);
 
 /*@ requires \valid(z1);
-    requires \valid(z2);
-    requires \valid(z3);
+    requires \valid_read(z2);
+    requires \valid_read(z3);
     assigns *z1;
     assigns *z1 \from *z2, *z3;
  */
@@ -134,7 +134,7 @@ extern  __attribute__((__FC_BUILTIN__)) void __gmpz_tdiv_r(__mpz_struct * /*[1]*
                                                            __mpz_struct const * /*[1]*/ z3);
 
 /*@ requires \valid(z1);
-    requires \valid(z2);
+    requires \valid_read(z2);
     assigns *z1, \result;
     assigns *z1 \from *z2;
     assigns \result \from *z1, *z2;
diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_array2.c b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_array2.c
index bf258eef4aa8b408b9f9f6614ed08ae1140ea16b..f20a0e8f72bfe69a262e8296a3d83aa8a8e9b9b4 100644
--- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_array2.c
+++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_array2.c
@@ -47,8 +47,8 @@ extern  __attribute__((__FC_BUILTIN__)) void __gmpz_init_set_si(__mpz_struct * /
     assigns *x \from *x; */
 extern  __attribute__((__FC_BUILTIN__)) void __gmpz_clear(__mpz_struct * /*[1]*/ x);
 
-/*@ requires \valid(z1);
-    requires \valid(z2);
+/*@ requires \valid_read(z1);
+    requires \valid_read(z2);
     assigns \result;
     assigns \result \from *z1, *z2;
  */
diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_at2.c b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_at2.c
index c69173bbeae7168a53b9f1c88f132b95e8bda473..679a07f8431622c1124e50b9c3d478be7b7ad873 100644
--- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_at2.c
+++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_at2.c
@@ -40,7 +40,7 @@ axiomatic
  */
 extern  __attribute__((__FC_BUILTIN__)) void __gmpz_init(__mpz_struct * /*[1]*/ z);
 
-/*@ requires \valid(z_orig);
+/*@ requires \valid_read(z_orig);
     requires ¬\initialized(z);
     ensures \valid(\old(z));
     assigns *z;
@@ -65,8 +65,8 @@ extern  __attribute__((__FC_BUILTIN__)) void __gmpz_init_set_si(__mpz_struct * /
     assigns *x \from *x; */
 extern  __attribute__((__FC_BUILTIN__)) void __gmpz_clear(__mpz_struct * /*[1]*/ x);
 
-/*@ requires \valid(z1);
-    requires \valid(z2);
+/*@ requires \valid_read(z1);
+    requires \valid_read(z2);
     assigns \result;
     assigns \result \from *z1, *z2;
  */
@@ -74,8 +74,8 @@ extern  __attribute__((__FC_BUILTIN__)) int __gmpz_cmp(__mpz_struct const * /*[1
                                                        __mpz_struct const * /*[1]*/ z2);
 
 /*@ requires \valid(z1);
-    requires \valid(z2);
-    requires \valid(z3);
+    requires \valid_read(z2);
+    requires \valid_read(z3);
     assigns *z1;
     assigns *z1 \from *z2, *z3;
  */
diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_bts13072.c b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_bts13072.c
index 3b4af93775d4e858061c87f93a503a03dc7ff2ab..444d463a0d231e1da2b7fd9b979ff96dc8ea30be 100644
--- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_bts13072.c
+++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_bts13072.c
@@ -40,7 +40,7 @@ axiomatic
  */
 extern  __attribute__((__FC_BUILTIN__)) void __gmpz_init(__mpz_struct * /*[1]*/ z);
 
-/*@ requires \valid(z_orig);
+/*@ requires \valid_read(z_orig);
     requires ¬\initialized(z);
     ensures \valid(\old(z));
     assigns *z;
@@ -65,8 +65,8 @@ extern  __attribute__((__FC_BUILTIN__)) void __gmpz_init_set_si(__mpz_struct * /
     assigns *x \from *x; */
 extern  __attribute__((__FC_BUILTIN__)) void __gmpz_clear(__mpz_struct * /*[1]*/ x);
 
-/*@ requires \valid(z1);
-    requires \valid(z2);
+/*@ requires \valid_read(z1);
+    requires \valid_read(z2);
     assigns \result;
     assigns \result \from *z1, *z2;
  */
@@ -74,8 +74,8 @@ extern  __attribute__((__FC_BUILTIN__)) int __gmpz_cmp(__mpz_struct const * /*[1
                                                        __mpz_struct const * /*[1]*/ z2);
 
 /*@ requires \valid(z1);
-    requires \valid(z2);
-    requires \valid(z3);
+    requires \valid_read(z2);
+    requires \valid_read(z3);
     assigns *z1;
     assigns *z1 \from *z2, *z3;
  */
@@ -83,7 +83,7 @@ extern  __attribute__((__FC_BUILTIN__)) void __gmpz_tdiv_q(__mpz_struct * /*[1]*
                                                            __mpz_struct const * /*[1]*/ z2,
                                                            __mpz_struct const * /*[1]*/ z3);
 
-/*@ requires \valid(z);
+/*@ requires \valid_read(z);
     assigns \result;
     assigns \result \from *z; */
 extern  __attribute__((__FC_BUILTIN__)) unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z);
diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_bts13242.c b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_bts13242.c
index 89edfb78504c7af7a6753a678d3f93c8c27952e0..a448bc0be5105246308c6a50a07a4cc037843706 100644
--- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_bts13242.c
+++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_bts13242.c
@@ -50,7 +50,7 @@ extern  __attribute__((__FC_BUILTIN__)) void __gmpz_init(__mpz_struct * /*[1]*/
 extern  __attribute__((__FC_BUILTIN__)) void __gmpz_init_set_si(__mpz_struct * /*[1]*/ z,
                                                                 long n);
 
-/*@ requires \valid(z_orig);
+/*@ requires \valid_read(z_orig);
     requires \valid(z);
     assigns *z;
     assigns *z \from *z_orig;
@@ -63,8 +63,8 @@ extern  __attribute__((__FC_BUILTIN__)) void __gmpz_set(__mpz_struct * /*[1]*/ z
     assigns *x \from *x; */
 extern  __attribute__((__FC_BUILTIN__)) void __gmpz_clear(__mpz_struct * /*[1]*/ x);
 
-/*@ requires \valid(z1);
-    requires \valid(z2);
+/*@ requires \valid_read(z1);
+    requires \valid_read(z2);
     assigns \result;
     assigns \result \from *z1, *z2;
  */
@@ -72,8 +72,8 @@ extern  __attribute__((__FC_BUILTIN__)) int __gmpz_cmp(__mpz_struct const * /*[1
                                                        __mpz_struct const * /*[1]*/ z2);
 
 /*@ requires \valid(z1);
-    requires \valid(z2);
-    requires \valid(z3);
+    requires \valid_read(z2);
+    requires \valid_read(z3);
     assigns *z1;
     assigns *z1 \from *z2, *z3;
  */
@@ -82,8 +82,8 @@ extern  __attribute__((__FC_BUILTIN__)) void __gmpz_add(__mpz_struct * /*[1]*/ z
                                                         __mpz_struct const * /*[1]*/ z3);
 
 /*@ requires \valid(z1);
-    requires \valid(z2);
-    requires \valid(z3);
+    requires \valid_read(z2);
+    requires \valid_read(z3);
     assigns *z1;
     assigns *z1 \from *z2, *z3;
  */
@@ -91,7 +91,7 @@ extern  __attribute__((__FC_BUILTIN__)) void __gmpz_sub(__mpz_struct * /*[1]*/ z
                                                         __mpz_struct const * /*[1]*/ z2,
                                                         __mpz_struct const * /*[1]*/ z3);
 
-/*@ requires \valid(z);
+/*@ requires \valid_read(z);
     assigns \result;
     assigns \result \from *z; */
 extern  __attribute__((__FC_BUILTIN__)) unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z);
diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_bts13262.c b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_bts13262.c
index 8c3ebbe99700f48e7476ffde0cfdbf6f473e803d..72b0e104ce997eff5875dfc742d5cc92c05b46a8 100644
--- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_bts13262.c
+++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_bts13262.c
@@ -56,8 +56,8 @@ extern  __attribute__((__FC_BUILTIN__)) void __gmpz_init_set_si(__mpz_struct * /
     assigns *x \from *x; */
 extern  __attribute__((__FC_BUILTIN__)) void __gmpz_clear(__mpz_struct * /*[1]*/ x);
 
-/*@ requires \valid(z1);
-    requires \valid(z2);
+/*@ requires \valid_read(z1);
+    requires \valid_read(z2);
     assigns \result;
     assigns \result \from *z1, *z2;
  */
@@ -65,8 +65,8 @@ extern  __attribute__((__FC_BUILTIN__)) int __gmpz_cmp(__mpz_struct const * /*[1
                                                        __mpz_struct const * /*[1]*/ z2);
 
 /*@ requires \valid(z1);
-    requires \valid(z2);
-    requires \valid(z3);
+    requires \valid_read(z2);
+    requires \valid_read(z3);
     assigns *z1;
     assigns *z1 \from *z2, *z3;
  */
@@ -75,8 +75,8 @@ extern  __attribute__((__FC_BUILTIN__)) void __gmpz_add(__mpz_struct * /*[1]*/ z
                                                         __mpz_struct const * /*[1]*/ z3);
 
 /*@ requires \valid(z1);
-    requires \valid(z2);
-    requires \valid(z3);
+    requires \valid_read(z2);
+    requires \valid_read(z3);
     assigns *z1;
     assigns *z1 \from *z2, *z3;
  */
diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_bts13902.c b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_bts13902.c
index b4ea1d9be57be3006931d9da16780fea4f06541e..a08c2a6692fd3823e7bfd3d950ad08871ed83095 100644
--- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_bts13902.c
+++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_bts13902.c
@@ -60,7 +60,7 @@ extern  __attribute__((__FC_BUILTIN__)) void __gmpz_init_set_ui(__mpz_struct * /
 extern  __attribute__((__FC_BUILTIN__)) void __gmpz_init_set_si(__mpz_struct * /*[1]*/ z,
                                                                 long n);
 
-/*@ requires \valid(z_orig);
+/*@ requires \valid_read(z_orig);
     requires \valid(z);
     assigns *z;
     assigns *z \from *z_orig;
@@ -73,8 +73,8 @@ extern  __attribute__((__FC_BUILTIN__)) void __gmpz_set(__mpz_struct * /*[1]*/ z
     assigns *x \from *x; */
 extern  __attribute__((__FC_BUILTIN__)) void __gmpz_clear(__mpz_struct * /*[1]*/ x);
 
-/*@ requires \valid(z1);
-    requires \valid(z2);
+/*@ requires \valid_read(z1);
+    requires \valid_read(z2);
     assigns \result;
     assigns \result \from *z1, *z2;
  */
@@ -82,8 +82,8 @@ extern  __attribute__((__FC_BUILTIN__)) int __gmpz_cmp(__mpz_struct const * /*[1
                                                        __mpz_struct const * /*[1]*/ z2);
 
 /*@ requires \valid(z1);
-    requires \valid(z2);
-    requires \valid(z3);
+    requires \valid_read(z2);
+    requires \valid_read(z3);
     assigns *z1;
     assigns *z1 \from *z2, *z3;
  */
@@ -91,7 +91,7 @@ extern  __attribute__((__FC_BUILTIN__)) void __gmpz_add(__mpz_struct * /*[1]*/ z
                                                         __mpz_struct const * /*[1]*/ z2,
                                                         __mpz_struct const * /*[1]*/ z3);
 
-/*@ requires \valid(z);
+/*@ requires \valid_read(z);
     assigns \result;
     assigns \result \from *z; */
 extern  __attribute__((__FC_BUILTIN__)) unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z);
diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_bts13992.c b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_bts13992.c
index 9b75f0ffe84564c135e12bad95eabd3e811ef524..d265181dd9d1f38d5cd9adb1f7c1e93cd2627475 100644
--- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_bts13992.c
+++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_bts13992.c
@@ -116,8 +116,8 @@ extern  __attribute__((__FC_BUILTIN__)) void __gmpz_init_set_si(__mpz_struct * /
     assigns *x \from *x; */
 extern  __attribute__((__FC_BUILTIN__)) void __gmpz_clear(__mpz_struct * /*[1]*/ x);
 
-/*@ requires \valid(z1);
-    requires \valid(z2);
+/*@ requires \valid_read(z1);
+    requires \valid_read(z2);
     assigns \result;
     assigns \result \from *z1, *z2;
  */
@@ -125,8 +125,8 @@ extern  __attribute__((__FC_BUILTIN__)) int __gmpz_cmp(__mpz_struct const * /*[1
                                                        __mpz_struct const * /*[1]*/ z2);
 
 /*@ requires \valid(z1);
-    requires \valid(z2);
-    requires \valid(z3);
+    requires \valid_read(z2);
+    requires \valid_read(z3);
     assigns *z1;
     assigns *z1 \from *z2, *z3;
  */
@@ -134,7 +134,7 @@ extern  __attribute__((__FC_BUILTIN__)) void __gmpz_tdiv_q(__mpz_struct * /*[1]*
                                                            __mpz_struct const * /*[1]*/ z2,
                                                            __mpz_struct const * /*[1]*/ z3);
 
-/*@ requires \valid(z);
+/*@ requires \valid_read(z);
     assigns \result;
     assigns \result \from *z; */
 extern  __attribute__((__FC_BUILTIN__)) unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z);
diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_bts14782.c b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_bts14782.c
index 2f5253714910fda4ff031c1058dcd8c4d0e1a4db..dfe69e1c88d7f3fc2fa5d1dfcbbb08e5ea8b74f1 100644
--- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_bts14782.c
+++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_bts14782.c
@@ -47,8 +47,8 @@ extern  __attribute__((__FC_BUILTIN__)) void __gmpz_init_set_si(__mpz_struct * /
     assigns *x \from *x; */
 extern  __attribute__((__FC_BUILTIN__)) void __gmpz_clear(__mpz_struct * /*[1]*/ x);
 
-/*@ requires \valid(z1);
-    requires \valid(z2);
+/*@ requires \valid_read(z1);
+    requires \valid_read(z2);
     assigns \result;
     assigns \result \from *z1, *z2;
  */
diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_cast2.c b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_cast2.c
index 291d9b6fdc6db0e2bfeb1adcf8df77a4bf982024..98f8ec27baf9ef9d98d37eb48f4021b96a03f7a1 100644
--- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_cast2.c
+++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_cast2.c
@@ -69,15 +69,15 @@ extern  __attribute__((__FC_BUILTIN__)) int __gmpz_init_set_str(__mpz_struct * /
     assigns *x \from *x; */
 extern  __attribute__((__FC_BUILTIN__)) void __gmpz_clear(__mpz_struct * /*[1]*/ x);
 
-/*@ requires \valid(z1);
-    requires \valid(z2);
+/*@ requires \valid_read(z1);
+    requires \valid_read(z2);
     assigns \result;
     assigns \result \from *z1, *z2;
  */
 extern  __attribute__((__FC_BUILTIN__)) int __gmpz_cmp(__mpz_struct const * /*[1]*/ z1,
                                                        __mpz_struct const * /*[1]*/ z2);
 
-/*@ requires \valid(z);
+/*@ requires \valid_read(z);
     assigns \result;
     assigns \result \from *z; */
 extern  __attribute__((__FC_BUILTIN__)) unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z);
diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_comparison2.c b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_comparison2.c
index 5759207338083c55c108456a88bb4448b11e0aad..149fb7ae8e94c66249fe41c431f1e9f48937505d 100644
--- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_comparison2.c
+++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_comparison2.c
@@ -55,8 +55,8 @@ extern  __attribute__((__FC_BUILTIN__)) void __gmpz_init_set_si(__mpz_struct * /
     assigns *x \from *x; */
 extern  __attribute__((__FC_BUILTIN__)) void __gmpz_clear(__mpz_struct * /*[1]*/ x);
 
-/*@ requires \valid(z1);
-    requires \valid(z2);
+/*@ requires \valid_read(z1);
+    requires \valid_read(z2);
     assigns \result;
     assigns \result \from *z1, *z2;
  */
@@ -64,7 +64,7 @@ extern  __attribute__((__FC_BUILTIN__)) int __gmpz_cmp(__mpz_struct const * /*[1
                                                        __mpz_struct const * /*[1]*/ z2);
 
 /*@ requires \valid(z1);
-    requires \valid(z2);
+    requires \valid_read(z2);
     assigns *z1;
     assigns *z1 \from *z2;
  */
diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_function_contract2.c b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_function_contract2.c
index 18ed30062a9047a7c040b1997af25ec767a75a13..4fd16fafea57599487930b5481f58c816cfa3ca3 100644
--- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_function_contract2.c
+++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_function_contract2.c
@@ -55,8 +55,8 @@ extern  __attribute__((__FC_BUILTIN__)) void __gmpz_init_set_si(__mpz_struct * /
     assigns *x \from *x; */
 extern  __attribute__((__FC_BUILTIN__)) void __gmpz_clear(__mpz_struct * /*[1]*/ x);
 
-/*@ requires \valid(z1);
-    requires \valid(z2);
+/*@ requires \valid_read(z1);
+    requires \valid_read(z2);
     assigns \result;
     assigns \result \from *z1, *z2;
  */
@@ -64,8 +64,8 @@ extern  __attribute__((__FC_BUILTIN__)) int __gmpz_cmp(__mpz_struct const * /*[1
                                                        __mpz_struct const * /*[1]*/ z2);
 
 /*@ requires \valid(z1);
-    requires \valid(z2);
-    requires \valid(z3);
+    requires \valid_read(z2);
+    requires \valid_read(z3);
     assigns *z1;
     assigns *z1 \from *z2, *z3;
  */
diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_ghost2.c b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_ghost2.c
index d117e37824f81a1787743d3fcb9d9d4986aefbf7..edc38d0e77d6df3015fa1cbff6b8a3b4f37456ad 100644
--- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_ghost2.c
+++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_ghost2.c
@@ -47,8 +47,8 @@ extern  __attribute__((__FC_BUILTIN__)) void __gmpz_init_set_si(__mpz_struct * /
     assigns *x \from *x; */
 extern  __attribute__((__FC_BUILTIN__)) void __gmpz_clear(__mpz_struct * /*[1]*/ x);
 
-/*@ requires \valid(z1);
-    requires \valid(z2);
+/*@ requires \valid_read(z1);
+    requires \valid_read(z2);
     assigns \result;
     assigns \result \from *z1, *z2;
  */
diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_integer_constant.c b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_integer_constant.c
index 596b7b58c76cbd7859636f3ab82d3b348314657d..8ce91c0dbef1a5537c983bbde77c4045899e21b6 100644
--- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_integer_constant.c
+++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_integer_constant.c
@@ -49,8 +49,8 @@ extern  __attribute__((__FC_BUILTIN__)) int __gmpz_init_set_str(__mpz_struct * /
     assigns *x \from *x; */
 extern  __attribute__((__FC_BUILTIN__)) void __gmpz_clear(__mpz_struct * /*[1]*/ x);
 
-/*@ requires \valid(z1);
-    requires \valid(z2);
+/*@ requires \valid_read(z1);
+    requires \valid_read(z2);
     assigns \result;
     assigns \result \from *z1, *z2;
  */
diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_integer_constant2.c b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_integer_constant2.c
index 24f06299028b9211179101a8f3bf4947f93cb32b..44899d75a9d3381987b7bbf7ed7ff310f81b19d2 100644
--- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_integer_constant2.c
+++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_integer_constant2.c
@@ -59,8 +59,8 @@ extern  __attribute__((__FC_BUILTIN__)) int __gmpz_init_set_str(__mpz_struct * /
     assigns *x \from *x; */
 extern  __attribute__((__FC_BUILTIN__)) void __gmpz_clear(__mpz_struct * /*[1]*/ x);
 
-/*@ requires \valid(z1);
-    requires \valid(z2);
+/*@ requires \valid_read(z1);
+    requires \valid_read(z2);
     assigns \result;
     assigns \result \from *z1, *z2;
  */
diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_invariant2.c b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_invariant2.c
index 13d42707706e11ac2d102ed1e9e75f5b8e469227..06994dd7f2eb9302c6256c9bfe70d5269c6ba7ad 100644
--- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_invariant2.c
+++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_invariant2.c
@@ -47,8 +47,8 @@ extern  __attribute__((__FC_BUILTIN__)) void __gmpz_init_set_si(__mpz_struct * /
     assigns *x \from *x; */
 extern  __attribute__((__FC_BUILTIN__)) void __gmpz_clear(__mpz_struct * /*[1]*/ x);
 
-/*@ requires \valid(z1);
-    requires \valid(z2);
+/*@ requires \valid_read(z1);
+    requires \valid_read(z2);
     assigns \result;
     assigns \result \from *z1, *z2;
  */
diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_labeled_stmt2.c b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_labeled_stmt2.c
index 36cffb7e59c81717cca1db5d380dd1940e68f000..7816d4df0c47d2b5cd26a8421c663aa229e1c76f 100644
--- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_labeled_stmt2.c
+++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_labeled_stmt2.c
@@ -47,8 +47,8 @@ extern  __attribute__((__FC_BUILTIN__)) void __gmpz_init_set_si(__mpz_struct * /
     assigns *x \from *x; */
 extern  __attribute__((__FC_BUILTIN__)) void __gmpz_clear(__mpz_struct * /*[1]*/ x);
 
-/*@ requires \valid(z1);
-    requires \valid(z2);
+/*@ requires \valid_read(z1);
+    requires \valid_read(z2);
     assigns \result;
     assigns \result \from *z1, *z2;
  */
diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_lazy2.c b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_lazy2.c
index 7482fd27fd74c812d4f7c825fbfa40f08912ca22..34ae8c2cefe070f0e54e8f1a76c3e40decf421da 100644
--- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_lazy2.c
+++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_lazy2.c
@@ -40,7 +40,7 @@ axiomatic
  */
 extern  __attribute__((__FC_BUILTIN__)) void __gmpz_init(__mpz_struct * /*[1]*/ z);
 
-/*@ requires \valid(z_orig);
+/*@ requires \valid_read(z_orig);
     requires ¬\initialized(z);
     ensures \valid(\old(z));
     assigns *z;
@@ -65,8 +65,8 @@ extern  __attribute__((__FC_BUILTIN__)) void __gmpz_init_set_si(__mpz_struct * /
     assigns *x \from *x; */
 extern  __attribute__((__FC_BUILTIN__)) void __gmpz_clear(__mpz_struct * /*[1]*/ x);
 
-/*@ requires \valid(z1);
-    requires \valid(z2);
+/*@ requires \valid_read(z1);
+    requires \valid_read(z2);
     assigns \result;
     assigns \result \from *z1, *z2;
  */
@@ -74,8 +74,8 @@ extern  __attribute__((__FC_BUILTIN__)) int __gmpz_cmp(__mpz_struct const * /*[1
                                                        __mpz_struct const * /*[1]*/ z2);
 
 /*@ requires \valid(z1);
-    requires \valid(z2);
-    requires \valid(z3);
+    requires \valid_read(z2);
+    requires \valid_read(z3);
     assigns *z1;
     assigns *z1 \from *z2, *z3;
  */
diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_linear_search2.c b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_linear_search2.c
index 42e1ad147407904ec6b650760a3556f148b9db2b..f844748eb6cf8fed0b1cc63b89caadbe57ac130a 100644
--- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_linear_search2.c
+++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_linear_search2.c
@@ -50,7 +50,7 @@ extern  __attribute__((__FC_BUILTIN__)) void __gmpz_init(__mpz_struct * /*[1]*/
 extern  __attribute__((__FC_BUILTIN__)) void __gmpz_init_set_si(__mpz_struct * /*[1]*/ z,
                                                                 long n);
 
-/*@ requires \valid(z_orig);
+/*@ requires \valid_read(z_orig);
     requires \valid(z);
     assigns *z;
     assigns *z \from *z_orig;
@@ -63,8 +63,8 @@ extern  __attribute__((__FC_BUILTIN__)) void __gmpz_set(__mpz_struct * /*[1]*/ z
     assigns *x \from *x; */
 extern  __attribute__((__FC_BUILTIN__)) void __gmpz_clear(__mpz_struct * /*[1]*/ x);
 
-/*@ requires \valid(z1);
-    requires \valid(z2);
+/*@ requires \valid_read(z1);
+    requires \valid_read(z2);
     assigns \result;
     assigns \result \from *z1, *z2;
  */
@@ -72,8 +72,8 @@ extern  __attribute__((__FC_BUILTIN__)) int __gmpz_cmp(__mpz_struct const * /*[1
                                                        __mpz_struct const * /*[1]*/ z2);
 
 /*@ requires \valid(z1);
-    requires \valid(z2);
-    requires \valid(z3);
+    requires \valid_read(z2);
+    requires \valid_read(z3);
     assigns *z1;
     assigns *z1 \from *z2, *z3;
  */
@@ -81,7 +81,7 @@ extern  __attribute__((__FC_BUILTIN__)) void __gmpz_add(__mpz_struct * /*[1]*/ z
                                                         __mpz_struct const * /*[1]*/ z2,
                                                         __mpz_struct const * /*[1]*/ z3);
 
-/*@ requires \valid(z);
+/*@ requires \valid_read(z);
     assigns \result;
     assigns \result \from *z; */
 extern  __attribute__((__FC_BUILTIN__)) unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z);
diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_literal_string2.c b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_literal_string2.c
index 9f6168dcc9a5e92b35164120addc3adeb4bb02f7..f1c4480d60e1fdd1c33915107f6d94a0309d44b5 100644
--- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_literal_string2.c
+++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_literal_string2.c
@@ -47,8 +47,8 @@ extern  __attribute__((__FC_BUILTIN__)) void __gmpz_init_set_si(__mpz_struct * /
     assigns *x \from *x; */
 extern  __attribute__((__FC_BUILTIN__)) void __gmpz_clear(__mpz_struct * /*[1]*/ x);
 
-/*@ requires \valid(z1);
-    requires \valid(z2);
+/*@ requires \valid_read(z1);
+    requires \valid_read(z2);
     assigns \result;
     assigns \result \from *z1, *z2;
  */
diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_longlong.c b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_longlong.c
index c03705c4cf4c88fecb78112efa5f35308c6aa614..08df9312e669efd4b0072ca262abf88f178a145b 100644
--- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_longlong.c
+++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_longlong.c
@@ -68,8 +68,8 @@ extern  __attribute__((__FC_BUILTIN__)) void __gmpz_import(__mpz_struct * /*[1]*
     assigns *x \from *x; */
 extern  __attribute__((__FC_BUILTIN__)) void __gmpz_clear(__mpz_struct * /*[1]*/ x);
 
-/*@ requires \valid(z1);
-    requires \valid(z2);
+/*@ requires \valid_read(z1);
+    requires \valid_read(z2);
     assigns \result;
     assigns \result \from *z1, *z2;
  */
@@ -77,8 +77,8 @@ extern  __attribute__((__FC_BUILTIN__)) int __gmpz_cmp(__mpz_struct const * /*[1
                                                        __mpz_struct const * /*[1]*/ z2);
 
 /*@ requires \valid(z1);
-    requires \valid(z2);
-    requires \valid(z3);
+    requires \valid_read(z2);
+    requires \valid_read(z3);
     assigns *z1;
     assigns *z1 \from *z2, *z3;
  */
@@ -87,8 +87,8 @@ extern  __attribute__((__FC_BUILTIN__)) void __gmpz_add(__mpz_struct * /*[1]*/ z
                                                         __mpz_struct const * /*[1]*/ z3);
 
 /*@ requires \valid(z1);
-    requires \valid(z2);
-    requires \valid(z3);
+    requires \valid_read(z2);
+    requires \valid_read(z3);
     assigns *z1;
     assigns *z1 \from *z2, *z3;
  */
@@ -97,8 +97,8 @@ extern  __attribute__((__FC_BUILTIN__)) void __gmpz_mul(__mpz_struct * /*[1]*/ z
                                                         __mpz_struct const * /*[1]*/ z3);
 
 /*@ requires \valid(z1);
-    requires \valid(z2);
-    requires \valid(z3);
+    requires \valid_read(z2);
+    requires \valid_read(z3);
     assigns *z1;
     assigns *z1 \from *z2, *z3;
  */
@@ -106,7 +106,7 @@ extern  __attribute__((__FC_BUILTIN__)) void __gmpz_tdiv_r(__mpz_struct * /*[1]*
                                                            __mpz_struct const * /*[1]*/ z2,
                                                            __mpz_struct const * /*[1]*/ z3);
 
-/*@ requires \valid(z);
+/*@ requires \valid_read(z);
     assigns \result;
     assigns \result \from *z; */
 extern  __attribute__((__FC_BUILTIN__)) unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z);
diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_longlong2.c b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_longlong2.c
index 1adfb29a18108f461487273c013749d66cffb736..c83d640e1134723c61dd9642964c87a55809bae2 100644
--- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_longlong2.c
+++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_longlong2.c
@@ -68,8 +68,8 @@ extern  __attribute__((__FC_BUILTIN__)) void __gmpz_import(__mpz_struct * /*[1]*
     assigns *x \from *x; */
 extern  __attribute__((__FC_BUILTIN__)) void __gmpz_clear(__mpz_struct * /*[1]*/ x);
 
-/*@ requires \valid(z1);
-    requires \valid(z2);
+/*@ requires \valid_read(z1);
+    requires \valid_read(z2);
     assigns \result;
     assigns \result \from *z1, *z2;
  */
@@ -77,8 +77,8 @@ extern  __attribute__((__FC_BUILTIN__)) int __gmpz_cmp(__mpz_struct const * /*[1
                                                        __mpz_struct const * /*[1]*/ z2);
 
 /*@ requires \valid(z1);
-    requires \valid(z2);
-    requires \valid(z3);
+    requires \valid_read(z2);
+    requires \valid_read(z3);
     assigns *z1;
     assigns *z1 \from *z2, *z3;
  */
@@ -87,8 +87,8 @@ extern  __attribute__((__FC_BUILTIN__)) void __gmpz_add(__mpz_struct * /*[1]*/ z
                                                         __mpz_struct const * /*[1]*/ z3);
 
 /*@ requires \valid(z1);
-    requires \valid(z2);
-    requires \valid(z3);
+    requires \valid_read(z2);
+    requires \valid_read(z3);
     assigns *z1;
     assigns *z1 \from *z2, *z3;
  */
@@ -97,8 +97,8 @@ extern  __attribute__((__FC_BUILTIN__)) void __gmpz_mul(__mpz_struct * /*[1]*/ z
                                                         __mpz_struct const * /*[1]*/ z3);
 
 /*@ requires \valid(z1);
-    requires \valid(z2);
-    requires \valid(z3);
+    requires \valid_read(z2);
+    requires \valid_read(z3);
     assigns *z1;
     assigns *z1 \from *z2, *z3;
  */
diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_loop2.c b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_loop2.c
index cad4c41a492a588be98576c86e287205451fb83c..82cb91e3600e8300a781886087a7dc65a060109e 100644
--- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_loop2.c
+++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_loop2.c
@@ -50,7 +50,7 @@ extern  __attribute__((__FC_BUILTIN__)) void __gmpz_init(__mpz_struct * /*[1]*/
 extern  __attribute__((__FC_BUILTIN__)) void __gmpz_init_set_si(__mpz_struct * /*[1]*/ z,
                                                                 long n);
 
-/*@ requires \valid(z_orig);
+/*@ requires \valid_read(z_orig);
     requires \valid(z);
     assigns *z;
     assigns *z \from *z_orig;
@@ -63,8 +63,8 @@ extern  __attribute__((__FC_BUILTIN__)) void __gmpz_set(__mpz_struct * /*[1]*/ z
     assigns *x \from *x; */
 extern  __attribute__((__FC_BUILTIN__)) void __gmpz_clear(__mpz_struct * /*[1]*/ x);
 
-/*@ requires \valid(z1);
-    requires \valid(z2);
+/*@ requires \valid_read(z1);
+    requires \valid_read(z2);
     assigns \result;
     assigns \result \from *z1, *z2;
  */
@@ -72,8 +72,8 @@ extern  __attribute__((__FC_BUILTIN__)) int __gmpz_cmp(__mpz_struct const * /*[1
                                                        __mpz_struct const * /*[1]*/ z2);
 
 /*@ requires \valid(z1);
-    requires \valid(z2);
-    requires \valid(z3);
+    requires \valid_read(z2);
+    requires \valid_read(z3);
     assigns *z1;
     assigns *z1 \from *z2, *z3;
  */
@@ -82,8 +82,8 @@ extern  __attribute__((__FC_BUILTIN__)) void __gmpz_add(__mpz_struct * /*[1]*/ z
                                                         __mpz_struct const * /*[1]*/ z3);
 
 /*@ requires \valid(z1);
-    requires \valid(z2);
-    requires \valid(z3);
+    requires \valid_read(z2);
+    requires \valid_read(z3);
     assigns *z1;
     assigns *z1 \from *z2, *z3;
  */
@@ -91,7 +91,7 @@ extern  __attribute__((__FC_BUILTIN__)) void __gmpz_mul(__mpz_struct * /*[1]*/ z
                                                         __mpz_struct const * /*[1]*/ z2,
                                                         __mpz_struct const * /*[1]*/ z3);
 
-/*@ requires \valid(z);
+/*@ requires \valid_read(z);
     assigns \result;
     assigns \result \from *z; */
 extern  __attribute__((__FC_BUILTIN__)) unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z);
diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_nested_code_annot2.c b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_nested_code_annot2.c
index e44f41c1996a57d9e12e6f7c86becdec64587faf..4b079ab0cc12b7049106491136d9a94d97b68a18 100644
--- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_nested_code_annot2.c
+++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_nested_code_annot2.c
@@ -47,8 +47,8 @@ extern  __attribute__((__FC_BUILTIN__)) void __gmpz_init_set_si(__mpz_struct * /
     assigns *x \from *x; */
 extern  __attribute__((__FC_BUILTIN__)) void __gmpz_clear(__mpz_struct * /*[1]*/ x);
 
-/*@ requires \valid(z1);
-    requires \valid(z2);
+/*@ requires \valid_read(z1);
+    requires \valid_read(z2);
     assigns \result;
     assigns \result \from *z1, *z2;
  */
diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_not2.c b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_not2.c
index 9a26741265bbe2a4ff8713917c7430f6e12db4f1..a6009c1c2c4d32b9ade259755dbe3411c443b07e 100644
--- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_not2.c
+++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_not2.c
@@ -47,8 +47,8 @@ extern  __attribute__((__FC_BUILTIN__)) void __gmpz_init_set_si(__mpz_struct * /
     assigns *x \from *x; */
 extern  __attribute__((__FC_BUILTIN__)) void __gmpz_clear(__mpz_struct * /*[1]*/ x);
 
-/*@ requires \valid(z1);
-    requires \valid(z2);
+/*@ requires \valid_read(z1);
+    requires \valid_read(z2);
     assigns \result;
     assigns \result \from *z1, *z2;
  */
diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_other_constants2.c b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_other_constants2.c
index 3ad84cb6966ff8e0be24c1e57320cdc16f4a624d..e25ff06fa597189b8af9defc20c9241ecc0a4285 100644
--- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_other_constants2.c
+++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_other_constants2.c
@@ -51,8 +51,8 @@ extern  __attribute__((__FC_BUILTIN__)) void __gmpz_init_set_si(__mpz_struct * /
     assigns *x \from *x; */
 extern  __attribute__((__FC_BUILTIN__)) void __gmpz_clear(__mpz_struct * /*[1]*/ x);
 
-/*@ requires \valid(z1);
-    requires \valid(z2);
+/*@ requires \valid_read(z1);
+    requires \valid_read(z2);
     assigns \result;
     assigns \result \from *z1, *z2;
  */
diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_ptr2.c b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_ptr2.c
index 44d9f3c173f4765c975913345a70f92504e91329..59051aa42d601086b39fa22ceec81b3b0dd30660 100644
--- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_ptr2.c
+++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_ptr2.c
@@ -55,8 +55,8 @@ extern  __attribute__((__FC_BUILTIN__)) void __gmpz_init_set_si(__mpz_struct * /
     assigns *x \from *x; */
 extern  __attribute__((__FC_BUILTIN__)) void __gmpz_clear(__mpz_struct * /*[1]*/ x);
 
-/*@ requires \valid(z1);
-    requires \valid(z2);
+/*@ requires \valid_read(z1);
+    requires \valid_read(z2);
     assigns \result;
     assigns \result \from *z1, *z2;
  */
@@ -64,8 +64,8 @@ extern  __attribute__((__FC_BUILTIN__)) int __gmpz_cmp(__mpz_struct const * /*[1
                                                        __mpz_struct const * /*[1]*/ z2);
 
 /*@ requires \valid(z1);
-    requires \valid(z2);
-    requires \valid(z3);
+    requires \valid_read(z2);
+    requires \valid_read(z3);
     assigns *z1;
     assigns *z1 \from *z2, *z3;
  */
@@ -74,8 +74,8 @@ extern  __attribute__((__FC_BUILTIN__)) void __gmpz_add(__mpz_struct * /*[1]*/ z
                                                         __mpz_struct const * /*[1]*/ z3);
 
 /*@ requires \valid(z1);
-    requires \valid(z2);
-    requires \valid(z3);
+    requires \valid_read(z2);
+    requires \valid_read(z3);
     assigns *z1;
     assigns *z1 \from *z2, *z3;
  */
@@ -84,8 +84,8 @@ extern  __attribute__((__FC_BUILTIN__)) void __gmpz_sub(__mpz_struct * /*[1]*/ z
                                                         __mpz_struct const * /*[1]*/ z3);
 
 /*@ requires \valid(z1);
-    requires \valid(z2);
-    requires \valid(z3);
+    requires \valid_read(z2);
+    requires \valid_read(z3);
     assigns *z1;
     assigns *z1 \from *z2, *z3;
  */
@@ -94,8 +94,8 @@ extern  __attribute__((__FC_BUILTIN__)) void __gmpz_mul(__mpz_struct * /*[1]*/ z
                                                         __mpz_struct const * /*[1]*/ z3);
 
 /*@ requires \valid(z1);
-    requires \valid(z2);
-    requires \valid(z3);
+    requires \valid_read(z2);
+    requires \valid_read(z3);
     assigns *z1;
     assigns *z1 \from *z2, *z3;
  */
@@ -103,7 +103,7 @@ extern  __attribute__((__FC_BUILTIN__)) void __gmpz_tdiv_q(__mpz_struct * /*[1]*
                                                            __mpz_struct const * /*[1]*/ z2,
                                                            __mpz_struct const * /*[1]*/ z3);
 
-/*@ requires \valid(z);
+/*@ requires \valid_read(z);
     assigns \result;
     assigns \result \from *z; */
 extern  __attribute__((__FC_BUILTIN__)) unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z);
diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_quantif2.c b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_quantif2.c
index ee2348c85abb33d831fea492d0ada74b81bf9d28..648bbf062743f3e7ed3fea7184dfabc659f0d68f 100644
--- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_quantif2.c
+++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_quantif2.c
@@ -50,7 +50,7 @@ extern  __attribute__((__FC_BUILTIN__)) void __gmpz_init(__mpz_struct * /*[1]*/
 extern  __attribute__((__FC_BUILTIN__)) void __gmpz_init_set_si(__mpz_struct * /*[1]*/ z,
                                                                 long n);
 
-/*@ requires \valid(z_orig);
+/*@ requires \valid_read(z_orig);
     requires \valid(z);
     assigns *z;
     assigns *z \from *z_orig;
@@ -63,8 +63,8 @@ extern  __attribute__((__FC_BUILTIN__)) void __gmpz_set(__mpz_struct * /*[1]*/ z
     assigns *x \from *x; */
 extern  __attribute__((__FC_BUILTIN__)) void __gmpz_clear(__mpz_struct * /*[1]*/ x);
 
-/*@ requires \valid(z1);
-    requires \valid(z2);
+/*@ requires \valid_read(z1);
+    requires \valid_read(z2);
     assigns \result;
     assigns \result \from *z1, *z2;
  */
@@ -72,8 +72,8 @@ extern  __attribute__((__FC_BUILTIN__)) int __gmpz_cmp(__mpz_struct const * /*[1
                                                        __mpz_struct const * /*[1]*/ z2);
 
 /*@ requires \valid(z1);
-    requires \valid(z2);
-    requires \valid(z3);
+    requires \valid_read(z2);
+    requires \valid_read(z3);
     assigns *z1;
     assigns *z1 \from *z2, *z3;
  */
@@ -82,8 +82,8 @@ extern  __attribute__((__FC_BUILTIN__)) void __gmpz_add(__mpz_struct * /*[1]*/ z
                                                         __mpz_struct const * /*[1]*/ z3);
 
 /*@ requires \valid(z1);
-    requires \valid(z2);
-    requires \valid(z3);
+    requires \valid_read(z2);
+    requires \valid_read(z3);
     assigns *z1;
     assigns *z1 \from *z2, *z3;
  */
@@ -92,8 +92,8 @@ extern  __attribute__((__FC_BUILTIN__)) void __gmpz_mul(__mpz_struct * /*[1]*/ z
                                                         __mpz_struct const * /*[1]*/ z3);
 
 /*@ requires \valid(z1);
-    requires \valid(z2);
-    requires \valid(z3);
+    requires \valid_read(z2);
+    requires \valid_read(z3);
     assigns *z1;
     assigns *z1 \from *z2, *z3;
  */
@@ -102,8 +102,8 @@ extern  __attribute__((__FC_BUILTIN__)) void __gmpz_tdiv_q(__mpz_struct * /*[1]*
                                                            __mpz_struct const * /*[1]*/ z3);
 
 /*@ requires \valid(z1);
-    requires \valid(z2);
-    requires \valid(z3);
+    requires \valid_read(z2);
+    requires \valid_read(z3);
     assigns *z1;
     assigns *z1 \from *z2, *z3;
  */
diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_result2.c b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_result2.c
index 6ec0ed2c7c3b2513bc15bd5d47694adcc840bbba..f1a5938054474a0a2f8864f191fed31f1f14c06c 100644
--- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_result2.c
+++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_result2.c
@@ -55,8 +55,8 @@ extern  __attribute__((__FC_BUILTIN__)) void __gmpz_init_set_si(__mpz_struct * /
     assigns *x \from *x; */
 extern  __attribute__((__FC_BUILTIN__)) void __gmpz_clear(__mpz_struct * /*[1]*/ x);
 
-/*@ requires \valid(z1);
-    requires \valid(z2);
+/*@ requires \valid_read(z1);
+    requires \valid_read(z2);
     assigns \result;
     assigns \result \from *z1, *z2;
  */
@@ -64,8 +64,8 @@ extern  __attribute__((__FC_BUILTIN__)) int __gmpz_cmp(__mpz_struct const * /*[1
                                                        __mpz_struct const * /*[1]*/ z2);
 
 /*@ requires \valid(z1);
-    requires \valid(z2);
-    requires \valid(z3);
+    requires \valid_read(z2);
+    requires \valid_read(z3);
     assigns *z1;
     assigns *z1 \from *z2, *z3;
  */
@@ -73,7 +73,7 @@ extern  __attribute__((__FC_BUILTIN__)) void __gmpz_sub(__mpz_struct * /*[1]*/ z
                                                         __mpz_struct const * /*[1]*/ z2,
                                                         __mpz_struct const * /*[1]*/ z3);
 
-/*@ requires \valid(z);
+/*@ requires \valid_read(z);
     assigns \result;
     assigns \result \from *z; */
 extern  __attribute__((__FC_BUILTIN__)) unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z);
diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_sizeof2.c b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_sizeof2.c
index 9eb072c28e9e88766e62ba30e11221227be11cee..116f237427ca61ee7e4995da5a47d60a51ce2c3c 100644
--- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_sizeof2.c
+++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_sizeof2.c
@@ -47,8 +47,8 @@ extern  __attribute__((__FC_BUILTIN__)) void __gmpz_init_set_si(__mpz_struct * /
     assigns *x \from *x; */
 extern  __attribute__((__FC_BUILTIN__)) void __gmpz_clear(__mpz_struct * /*[1]*/ x);
 
-/*@ requires \valid(z1);
-    requires \valid(z2);
+/*@ requires \valid_read(z1);
+    requires \valid_read(z2);
     assigns \result;
     assigns \result \from *z1, *z2;
  */
diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_stmt_contract2.c b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_stmt_contract2.c
index b52f58679e5d7326aaba30891ae6cfb041a92c21..a853808cb266edb6b1780a0527869d9db77cde59 100644
--- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_stmt_contract2.c
+++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_stmt_contract2.c
@@ -55,8 +55,8 @@ extern  __attribute__((__FC_BUILTIN__)) void __gmpz_init_set_si(__mpz_struct * /
     assigns *x \from *x; */
 extern  __attribute__((__FC_BUILTIN__)) void __gmpz_clear(__mpz_struct * /*[1]*/ x);
 
-/*@ requires \valid(z1);
-    requires \valid(z2);
+/*@ requires \valid_read(z1);
+    requires \valid_read(z2);
     assigns \result;
     assigns \result \from *z1, *z2;
  */
@@ -64,8 +64,8 @@ extern  __attribute__((__FC_BUILTIN__)) int __gmpz_cmp(__mpz_struct const * /*[1
                                                        __mpz_struct const * /*[1]*/ z2);
 
 /*@ requires \valid(z1);
-    requires \valid(z2);
-    requires \valid(z3);
+    requires \valid_read(z2);
+    requires \valid_read(z3);
     assigns *z1;
     assigns *z1 \from *z2, *z3;
  */
diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_typedef2.c b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_typedef2.c
index 624b42cfe889dfe466c516ebfd8043e14d2f0843..e245eae9e7c82a6e4de74f4d7c8f2ff62951ad0b 100644
--- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_typedef2.c
+++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_typedef2.c
@@ -58,8 +58,8 @@ extern  __attribute__((__FC_BUILTIN__)) void __gmpz_init_set_si(__mpz_struct * /
     assigns *x \from *x; */
 extern  __attribute__((__FC_BUILTIN__)) void __gmpz_clear(__mpz_struct * /*[1]*/ x);
 
-/*@ requires \valid(z1);
-    requires \valid(z2);
+/*@ requires \valid_read(z1);
+    requires \valid_read(z2);
     assigns \result;
     assigns \result \from *z1, *z2;
  */
diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_valid_alias2.c b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_valid_alias2.c
index 1321097141898e1b21435751b8d4bca0d446aad1..1923735970b546cb5336f86a50e692f79e73437a 100644
--- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_valid_alias2.c
+++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_valid_alias2.c
@@ -92,8 +92,8 @@ extern  __attribute__((__FC_BUILTIN__)) void __gmpz_init_set_si(__mpz_struct * /
     assigns *x \from *x; */
 extern  __attribute__((__FC_BUILTIN__)) void __gmpz_clear(__mpz_struct * /*[1]*/ x);
 
-/*@ requires \valid(z1);
-    requires \valid(z2);
+/*@ requires \valid_read(z1);
+    requires \valid_read(z2);
     assigns \result;
     assigns \result \from *z1, *z2;
  */
diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_vector2.c b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_vector2.c
index e7645e29a7488e9c4f185cf8088f6504b80c3938..a69e887eaab1594e00a236e95f1607aa6bdfe2b7 100644
--- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_vector2.c
+++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_vector2.c
@@ -92,8 +92,8 @@ extern  __attribute__((__FC_BUILTIN__)) void __gmpz_init_set_si(__mpz_struct * /
     assigns *x \from *x; */
 extern  __attribute__((__FC_BUILTIN__)) void __gmpz_clear(__mpz_struct * /*[1]*/ x);
 
-/*@ requires \valid(z1);
-    requires \valid(z2);
+/*@ requires \valid_read(z1);
+    requires \valid_read(z2);
     assigns \result;
     assigns \result \from *z1, *z2;
  */
diff --git a/src/plugins/e-acsl/typing.ml b/src/plugins/e-acsl/typing.ml
index 615d30efd7e59adee38ee97038f998c67bdcc0c4..11fc2f5e576dd0e72b99d2e4d48d00e612722efa 100644
--- a/src/plugins/e-acsl/typing.ml
+++ b/src/plugins/e-acsl/typing.ml
@@ -214,9 +214,8 @@ let type_constant ty = function
     if Cil.fitsInInt ILongLong n || Cil.fitsInInt IULongLong n then Interv(n, n)
     else Z
   | LChr c -> 
-    (match Cil.charConstToInt c with
-    | CInt64(n, _, _) -> Interv(n, n)
-    | _ -> assert false)
+    let n = Cil.charConstToInt c in
+    Interv(n, n)
   | LStr _ | LWStr _ | LReal _ | LEnum _ -> No_integral ty
 
 let size_of ty =