From fc6c62e2143418130162d72f5777ff226a083863 Mon Sep 17 00:00:00 2001
From: Julien Signoles <julien.signoles@cea.fr>
Date: Wed, 29 Jun 2011 08:19:01 +0000
Subject: [PATCH] [e-acsl] fixed bug with casts from integer to integral C type
 [e-acsl] support of field accesses in logic [e-acsl] support of array
 accesses (yet missing guards) in logic [e-acsl] support of pointer
 dereferences (yet missing guards) in logic [e-acsl] support of \null in logic

---
 src/plugins/e-acsl/TODO                       |   6 +-
 src/plugins/e-acsl/share/e-acsl/e_acsl_gmp.h  |  10 +
 .../e-acsl/tests/e-acsl-runtime/array.i       |  17 +
 .../e-acsl/tests/e-acsl-runtime/cast.i        |   5 +-
 .../e-acsl/tests/e-acsl-runtime/null.i        |   9 +
 .../e-acsl-runtime/oracle/addrOf.res.oracle   |   2 +-
 .../e-acsl-runtime/oracle/arith.res.oracle    | 492 ++++++------
 .../e-acsl-runtime/oracle/array.err.oracle    |   0
 .../e-acsl-runtime/oracle/array.res.oracle    | 192 +++++
 .../e-acsl-runtime/oracle/cast.res.oracle     | 103 ++-
 .../oracle/comparison.res.oracle              | 158 ++--
 .../oracle/function_contract.res.oracle       | 258 +++---
 .../tests/e-acsl-runtime/oracle/gen_addrOf.c  |  12 +-
 .../tests/e-acsl-runtime/oracle/gen_arith.c   |  12 +-
 .../tests/e-acsl-runtime/oracle/gen_array.c   | 604 ++++++++++++++
 .../tests/e-acsl-runtime/oracle/gen_cast.c    |  40 +-
 .../e-acsl-runtime/oracle/gen_comparison.c    |  12 +-
 .../tests/e-acsl-runtime/oracle/gen_false.c   |  12 +-
 .../oracle/gen_function_contract.c            |  12 +-
 .../oracle/gen_integer_constant.c             |  12 +-
 .../tests/e-acsl-runtime/oracle/gen_lazy.c    |  12 +-
 .../oracle/gen_nested_code_annot.c            |  12 +-
 .../tests/e-acsl-runtime/oracle/gen_not.c     |  12 +-
 .../tests/e-acsl-runtime/oracle/gen_null.c    | 577 ++++++++++++++
 .../oracle/gen_other_constants.c              |  12 +-
 .../tests/e-acsl-runtime/oracle/gen_ptr.c     | 738 ++++++++++++++++++
 .../tests/e-acsl-runtime/oracle/gen_sizeof.c  |  12 +-
 .../e-acsl-runtime/oracle/gen_stmt_contract.c |  12 +-
 .../tests/e-acsl-runtime/oracle/gen_true.c    |  12 +-
 .../oracle/integer_constant.res.oracle        |  60 +-
 .../e-acsl-runtime/oracle/lazy.res.oracle     | 176 ++---
 .../oracle/nested_code_annot.res.oracle       | 104 +--
 .../e-acsl-runtime/oracle/not.res.oracle      |   2 +-
 .../e-acsl-runtime/oracle/null.err.oracle     |   0
 .../e-acsl-runtime/oracle/null.res.oracle     |  96 +++
 .../oracle/other_constants.res.oracle         |  28 +-
 .../e-acsl-runtime/oracle/ptr.err.oracle      |   0
 .../e-acsl-runtime/oracle/ptr.res.oracle      | 720 +++++++++++++++++
 .../e-acsl-runtime/oracle/sizeof.res.oracle   |   4 +-
 .../oracle/stmt_contract.res.oracle           | 372 ++++-----
 .../e-acsl-runtime/oracle/true.res.oracle     |   2 +-
 src/plugins/e-acsl/tests/e-acsl-runtime/ptr.i |  29 +
 .../tests/e-acsl-runtime/stmt_contract.i      |   1 -
 src/plugins/e-acsl/visit.ml                   | 113 ++-
 44 files changed, 4141 insertions(+), 933 deletions(-)
 create mode 100644 src/plugins/e-acsl/tests/e-acsl-runtime/array.i
 create mode 100644 src/plugins/e-acsl/tests/e-acsl-runtime/null.i
 create mode 100644 src/plugins/e-acsl/tests/e-acsl-runtime/oracle/array.err.oracle
 create mode 100644 src/plugins/e-acsl/tests/e-acsl-runtime/oracle/array.res.oracle
 create mode 100644 src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_array.c
 create mode 100644 src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_null.c
 create mode 100644 src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_ptr.c
 create mode 100644 src/plugins/e-acsl/tests/e-acsl-runtime/oracle/null.err.oracle
 create mode 100644 src/plugins/e-acsl/tests/e-acsl-runtime/oracle/null.res.oracle
 create mode 100644 src/plugins/e-acsl/tests/e-acsl-runtime/oracle/ptr.err.oracle
 create mode 100644 src/plugins/e-acsl/tests/e-acsl-runtime/oracle/ptr.res.oracle
 create mode 100644 src/plugins/e-acsl/tests/e-acsl-runtime/ptr.i

diff --git a/src/plugins/e-acsl/TODO b/src/plugins/e-acsl/TODO
index 04583ed799f..02fddb6e621 100644
--- a/src/plugins/e-acsl/TODO
+++ b/src/plugins/e-acsl/TODO
@@ -21,16 +21,20 @@
 #########
 
 - stmt_contracts et only_behaviors... pas sur que je fasse ce qu'il faut
-- pb test stmt_contracts.i
 - tester les opérations binaires sur les pointeurs (requiert complex left value)
 - tester plusieurs fonctions contenant des annotations
 - améliorer test "integer_constant.i" quand bug fixed #745
 - améliorer test "arith.i" quand bug fixed #751
+- améliorer test "ptr.i" quand bug fixed #751
+- structs
+- unions
 
 ####################
 # AVANT LA DISTRIB #
 ####################
 
+- documentation
+
 en lien avec bts #743:
 - make distrib
 - headers (copyright 2011)
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 ece341eca97..690706017bb 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
@@ -73,3 +73,13 @@ extern void mpz_cdiv_q(mpz_t z1, const mpz_t z2, const mpz_t z3);
   @ requires \valid(z3);
   @ assigns *z1; */
 extern void mpz_mod(mpz_t z1, const mpz_t z2, const mpz_t z3);
+
+// coercions to C int
+
+/*@ requires \valid(z); 
+  @ assigns \nothing; */
+extern long mpz_get_si(const mpz_t z);
+
+/*@ requires \valid(z); 
+  @ assigns \nothing; */
+extern unsigned long mpz_get_ui(const mpz_t z);
diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/array.i b/src/plugins/e-acsl/tests/e-acsl-runtime/array.i
new file mode 100644
index 00000000000..daca1bb83b9
--- /dev/null
+++ b/src/plugins/e-acsl/tests/e-acsl-runtime/array.i
@@ -0,0 +1,17 @@
+/* run.config
+   COMMENT: arrays
+   EXECNOW: LOG gen_array.c BIN gen_array.out FRAMAC_SHARE=./share @frama-c@ ./tests/e-acsl-runtime/array.i -e-acsl-project p -e-acsl-include-headers -then-on p -print -ocode ./tests/e-acsl-runtime/result/gen_array.c > /dev/null && gcc -o ./tests/e-acsl-runtime/result/gen_array.out -lgmp ./tests/e-acsl-runtime/result/gen_array.c && ./tests/e-acsl-runtime/result/gen_array.out
+*/
+
+int T1[3],T2[4];
+
+int main(void) {
+
+  for(int i = 0; i < 3; i++) T1[i] = i;
+  for(int i = 0; i < 4; i++) T2[i] = 2*i;
+
+  /*@ assert T1[0] == T2[0]; */
+  /*@ assert T1[1] != T2[1]; */
+
+  return 0;
+}
diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/cast.i b/src/plugins/e-acsl/tests/e-acsl-runtime/cast.i
index a93d8a43637..a638febc84a 100644
--- a/src/plugins/e-acsl/tests/e-acsl-runtime/cast.i
+++ b/src/plugins/e-acsl/tests/e-acsl-runtime/cast.i
@@ -1,6 +1,6 @@
 /* run.config
    COMMENT: cast
-   EXECNOW: LOG gen_cast.c BIN gen_cast.out FRAMAC_SHARE=./share @frama-c@ ./tests/e-acsl-runtime/cast.i -e-acsl-project p -e-acsl-include-headers -then-on p -print -ocode ./tests/e-acsl-runtime/result/gen_cast.c > /dev/null && gcc -o ./tests/e-acsl-runtime/result/gen_cast.out ./tests/e-acsl-runtime/result/gen_cast.c && ./tests/e-acsl-runtime/result/gen_cast.out
+   EXECNOW: LOG gen_cast.c BIN gen_cast.out FRAMAC_SHARE=./share @frama-c@ ./tests/e-acsl-runtime/cast.i -e-acsl-project p -e-acsl-include-headers -then-on p -print -ocode ./tests/e-acsl-runtime/result/gen_cast.c > /dev/null && gcc -o ./tests/e-acsl-runtime/result/gen_cast.out -lgmp ./tests/e-acsl-runtime/result/gen_cast.c && ./tests/e-acsl-runtime/result/gen_cast.out
 */
 
 int main(void) {
@@ -8,5 +8,8 @@ int main(void) {
   int y = 0;
   /*@ assert (int)x == y; */ ;
   /*@ assert x == (long)y; */ ;
+  /*@ assert y == (int)0; */ ; // cast from integer to int
+  /*@ assert (unsigned int) y == (unsigned int)0; */ ; /* cast from integer 
+						          to unsigned int */
   return 0;
 }
diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/null.i b/src/plugins/e-acsl/tests/e-acsl-runtime/null.i
new file mode 100644
index 00000000000..3ffb6169483
--- /dev/null
+++ b/src/plugins/e-acsl/tests/e-acsl-runtime/null.i
@@ -0,0 +1,9 @@
+/* run.config
+   COMMENT: assert \null == 0
+   EXECNOW: LOG gen_null.c BIN gen_null.out FRAMAC_SHARE=./share @frama-c@ ./tests/e-acsl-runtime/null.i -e-acsl-project p -e-acsl-include-headers -then-on p -print -ocode ./tests/e-acsl-runtime/result/gen_null.c > /dev/null && gcc -o ./tests/e-acsl-runtime/result/gen_null.out -lgmp ./tests/e-acsl-runtime/result/gen_null.c && ./tests/e-acsl-runtime/result/gen_null.out
+*/
+
+int main(void) {
+  /*@ assert \null == 0; */
+  return 0;
+}
diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/addrOf.res.oracle b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/addrOf.res.oracle
index 053bf7e9d44..706fb2340be 100644
--- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/addrOf.res.oracle
+++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/addrOf.res.oracle
@@ -2,7 +2,7 @@
 [value] Computing initial state
 [value] Initial state computed
 [value] Values of globals at initialization
-PROJECT_FILE.i:122:[value] Assertion got status valid.
+PROJECT_FILE.i:132:[value] Assertion got status valid.
 [value] Recording results for main
 [value] done for function main
 [value] ====== VALUES COMPUTED ======
diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/arith.res.oracle b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/arith.res.oracle
index 12974be380e..57d6b0476ea 100644
--- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/arith.res.oracle
+++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/arith.res.oracle
@@ -2,742 +2,742 @@
 [value] Computing initial state
 [value] Initial state computed
 [value] Values of globals at initialization
-PROJECT_FILE.i:124:[value] Assertion got status valid.
+PROJECT_FILE.i:134:[value] Assertion got status valid.
 [value] computing for function mpz_init_set_si <- main.
-        Called from PROJECT_FILE.i:126.
+        Called from PROJECT_FILE.i:136.
 PROJECT_FILE.i:29:[value] Function mpz_init_set_si: postcondition got status unknown
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_init <- main.
-        Called from PROJECT_FILE.i:126.
+        Called from PROJECT_FILE.i:136.
 PROJECT_FILE.i:21:[value] Function mpz_init: postcondition got status unknown
 [value] Done for function mpz_init
 [value] computing for function mpz_neg <- main.
-        Called from PROJECT_FILE.i:127.
+        Called from PROJECT_FILE.i:137.
 PROJECT_FILE.i:55:[value] Function mpz_neg: precondition got status valid
 PROJECT_FILE.i:56:[value] Function mpz_neg: precondition got status valid
 [value] Done for function mpz_neg
 [value] computing for function mpz_init_set_si <- main.
-        Called from PROJECT_FILE.i:127.
+        Called from PROJECT_FILE.i:137.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_cmp <- main.
-        Called from PROJECT_FILE.i:128.
+        Called from PROJECT_FILE.i:138.
 PROJECT_FILE.i:45:[value] Function mpz_cmp: precondition got status valid
 PROJECT_FILE.i:46:[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:129.
+        Called from PROJECT_FILE.i:139.
 [value] computing for function printf <- e_acsl_fail <- main.
-        Called from PROJECT_FILE.i:115.
+        Called from PROJECT_FILE.i:125.
 [value] Done for function printf
 [value] computing for function exit <- e_acsl_fail <- main.
-        Called from PROJECT_FILE.i:115.
-PROJECT_FILE.i:105:[value] Function exit: postcondition got status invalid
+        Called from PROJECT_FILE.i:125.
+PROJECT_FILE.i:115:[value] Function exit: postcondition got status invalid
 [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 <- main.
-        Called from PROJECT_FILE.i:130.
+        Called from PROJECT_FILE.i:140.
 PROJECT_FILE.i:39:[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:130.
+        Called from PROJECT_FILE.i:140.
 [value] Done for function mpz_clear
 [value] computing for function mpz_clear <- main.
-        Called from PROJECT_FILE.i:130.
+        Called from PROJECT_FILE.i:140.
 [value] Done for function mpz_clear
-PROJECT_FILE.i:133:[value] Assertion got status valid.
+PROJECT_FILE.i:143:[value] Assertion got status valid.
 [value] computing for function mpz_init_set_si <- main.
-        Called from PROJECT_FILE.i:135.
+        Called from PROJECT_FILE.i:145.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_init_set_si <- main.
-        Called from PROJECT_FILE.i:135.
+        Called from PROJECT_FILE.i:145.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_init <- main.
-        Called from PROJECT_FILE.i:136.
+        Called from PROJECT_FILE.i:146.
 [value] Done for function mpz_init
 [value] computing for function mpz_neg <- main.
-        Called from PROJECT_FILE.i:136.
+        Called from PROJECT_FILE.i:146.
 [value] Done for function mpz_neg
 [value] computing for function mpz_cmp <- main.
-        Called from PROJECT_FILE.i:137.
+        Called from PROJECT_FILE.i:147.
 [value] Done for function mpz_cmp
 [value] computing for function e_acsl_fail <- main.
-        Called from PROJECT_FILE.i:138.
+        Called from PROJECT_FILE.i:148.
 [value] computing for function printf <- e_acsl_fail <- main.
-        Called from PROJECT_FILE.i:115.
+        Called from PROJECT_FILE.i:125.
 [value] Done for function printf
 [value] computing for function exit <- e_acsl_fail <- main.
-        Called from PROJECT_FILE.i:115.
+        Called from PROJECT_FILE.i:125.
 [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 <- main.
-        Called from PROJECT_FILE.i:139.
+        Called from PROJECT_FILE.i:149.
 [value] Done for function mpz_clear
 [value] computing for function mpz_clear <- main.
-        Called from PROJECT_FILE.i:139.
+        Called from PROJECT_FILE.i:149.
 [value] Done for function mpz_clear
 [value] computing for function mpz_clear <- main.
-        Called from PROJECT_FILE.i:139.
+        Called from PROJECT_FILE.i:149.
 [value] Done for function mpz_clear
-PROJECT_FILE.i:142:[value] Assertion got status valid.
+PROJECT_FILE.i:152:[value] Assertion got status valid.
 [value] computing for function mpz_init_set_si <- main.
-        Called from PROJECT_FILE.i:144.
+        Called from PROJECT_FILE.i:154.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_init_set_si <- main.
-        Called from PROJECT_FILE.i:144.
+        Called from PROJECT_FILE.i:154.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_init <- main.
-        Called from PROJECT_FILE.i:145.
+        Called from PROJECT_FILE.i:155.
 [value] Done for function mpz_init
 [value] computing for function mpz_com <- main.
-        Called from PROJECT_FILE.i:145.
+        Called from PROJECT_FILE.i:155.
 [kernel] warning: No code for function mpz_com, default assigns generated
 [value] Done for function mpz_com
 [value] computing for function mpz_cmp <- main.
-        Called from PROJECT_FILE.i:146.
+        Called from PROJECT_FILE.i:156.
 [value] Done for function mpz_cmp
 [value] computing for function e_acsl_fail <- main.
-        Called from PROJECT_FILE.i:147.
+        Called from PROJECT_FILE.i:157.
 [value] computing for function printf <- e_acsl_fail <- main.
-        Called from PROJECT_FILE.i:115.
+        Called from PROJECT_FILE.i:125.
 [value] Done for function printf
 [value] computing for function exit <- e_acsl_fail <- main.
-        Called from PROJECT_FILE.i:115.
+        Called from PROJECT_FILE.i:125.
 [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 <- main.
-        Called from PROJECT_FILE.i:148.
+        Called from PROJECT_FILE.i:158.
 [value] Done for function mpz_clear
 [value] computing for function mpz_clear <- main.
-        Called from PROJECT_FILE.i:148.
+        Called from PROJECT_FILE.i:158.
 [value] Done for function mpz_clear
 [value] computing for function mpz_clear <- main.
-        Called from PROJECT_FILE.i:148.
+        Called from PROJECT_FILE.i:158.
 [value] Done for function mpz_clear
-PROJECT_FILE.i:151:[value] Assertion got status valid.
+PROJECT_FILE.i:161:[value] Assertion got status valid.
 [value] computing for function mpz_init_set_si <- main.
-        Called from PROJECT_FILE.i:153.
+        Called from PROJECT_FILE.i:163.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_init_set_si <- main.
-        Called from PROJECT_FILE.i:154.
+        Called from PROJECT_FILE.i:164.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_init <- main.
-        Called from PROJECT_FILE.i:154.
+        Called from PROJECT_FILE.i:164.
 [value] Done for function mpz_init
 [value] computing for function mpz_add <- main.
-        Called from PROJECT_FILE.i:155.
+        Called from PROJECT_FILE.i:165.
 PROJECT_FILE.i:60:[value] Function mpz_add: precondition got status valid
 PROJECT_FILE.i:61:[value] Function mpz_add: precondition got status valid
 PROJECT_FILE.i:62:[value] Function mpz_add: precondition got status valid
 [value] Done for function mpz_add
 [value] computing for function mpz_init_set_si <- main.
-        Called from PROJECT_FILE.i:155.
+        Called from PROJECT_FILE.i:165.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_init <- main.
-        Called from PROJECT_FILE.i:156.
+        Called from PROJECT_FILE.i:166.
 [value] Done for function mpz_init
 [value] computing for function mpz_neg <- main.
-        Called from PROJECT_FILE.i:156.
+        Called from PROJECT_FILE.i:166.
 [value] Done for function mpz_neg
 [value] computing for function mpz_cmp <- main.
-        Called from PROJECT_FILE.i:157.
+        Called from PROJECT_FILE.i:167.
 [value] Done for function mpz_cmp
 [value] computing for function e_acsl_fail <- main.
-        Called from PROJECT_FILE.i:158.
+        Called from PROJECT_FILE.i:168.
 [value] computing for function printf <- e_acsl_fail <- main.
-        Called from PROJECT_FILE.i:115.
+        Called from PROJECT_FILE.i:125.
 [value] Done for function printf
 [value] computing for function exit <- e_acsl_fail <- main.
-        Called from PROJECT_FILE.i:115.
+        Called from PROJECT_FILE.i:125.
 [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 <- main.
-        Called from PROJECT_FILE.i:159.
+        Called from PROJECT_FILE.i:169.
 [value] Done for function mpz_clear
 [value] computing for function mpz_clear <- main.
-        Called from PROJECT_FILE.i:159.
+        Called from PROJECT_FILE.i:169.
 [value] Done for function mpz_clear
 [value] computing for function mpz_clear <- main.
-        Called from PROJECT_FILE.i:159.
+        Called from PROJECT_FILE.i:169.
 [value] Done for function mpz_clear
 [value] computing for function mpz_clear <- main.
-        Called from PROJECT_FILE.i:160.
+        Called from PROJECT_FILE.i:170.
 [value] Done for function mpz_clear
 [value] computing for function mpz_clear <- main.
-        Called from PROJECT_FILE.i:160.
+        Called from PROJECT_FILE.i:170.
 [value] Done for function mpz_clear
-PROJECT_FILE.i:163:[value] Assertion got status valid.
+PROJECT_FILE.i:173:[value] Assertion got status valid.
 [value] computing for function mpz_init_set_si <- main.
-        Called from PROJECT_FILE.i:165.
+        Called from PROJECT_FILE.i:175.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_init_set_si <- main.
-        Called from PROJECT_FILE.i:166.
+        Called from PROJECT_FILE.i:176.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_init <- main.
-        Called from PROJECT_FILE.i:166.
+        Called from PROJECT_FILE.i:176.
 [value] Done for function mpz_init
 [value] computing for function mpz_sub <- main.
-        Called from PROJECT_FILE.i:167.
+        Called from PROJECT_FILE.i:177.
 PROJECT_FILE.i:66:[value] Function mpz_sub: precondition got status valid
 PROJECT_FILE.i:67:[value] Function mpz_sub: precondition got status valid
 PROJECT_FILE.i:68:[value] Function mpz_sub: precondition got status valid
 [value] Done for function mpz_sub
 [value] computing for function mpz_init_set_si <- main.
-        Called from PROJECT_FILE.i:167.
+        Called from PROJECT_FILE.i:177.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_init <- main.
-        Called from PROJECT_FILE.i:168.
+        Called from PROJECT_FILE.i:178.
 [value] Done for function mpz_init
 [value] computing for function mpz_neg <- main.
-        Called from PROJECT_FILE.i:168.
+        Called from PROJECT_FILE.i:178.
 [value] Done for function mpz_neg
 [value] computing for function mpz_cmp <- main.
-        Called from PROJECT_FILE.i:169.
+        Called from PROJECT_FILE.i:179.
 [value] Done for function mpz_cmp
 [value] computing for function e_acsl_fail <- main.
-        Called from PROJECT_FILE.i:170.
+        Called from PROJECT_FILE.i:180.
 [value] computing for function printf <- e_acsl_fail <- main.
-        Called from PROJECT_FILE.i:115.
+        Called from PROJECT_FILE.i:125.
 [value] Done for function printf
 [value] computing for function exit <- e_acsl_fail <- main.
-        Called from PROJECT_FILE.i:115.
+        Called from PROJECT_FILE.i:125.
 [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 <- main.
-        Called from PROJECT_FILE.i:171.
+        Called from PROJECT_FILE.i:181.
 [value] Done for function mpz_clear
 [value] computing for function mpz_clear <- main.
-        Called from PROJECT_FILE.i:171.
+        Called from PROJECT_FILE.i:181.
 [value] Done for function mpz_clear
 [value] computing for function mpz_clear <- main.
-        Called from PROJECT_FILE.i:171.
+        Called from PROJECT_FILE.i:181.
 [value] Done for function mpz_clear
 [value] computing for function mpz_clear <- main.
-        Called from PROJECT_FILE.i:172.
+        Called from PROJECT_FILE.i:182.
 [value] Done for function mpz_clear
 [value] computing for function mpz_clear <- main.
-        Called from PROJECT_FILE.i:172.
+        Called from PROJECT_FILE.i:182.
 [value] Done for function mpz_clear
-PROJECT_FILE.i:175:[value] Assertion got status valid.
+PROJECT_FILE.i:185:[value] Assertion got status valid.
 [value] computing for function mpz_init_set_si <- main.
-        Called from PROJECT_FILE.i:177.
+        Called from PROJECT_FILE.i:187.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_init_set_si <- main.
-        Called from PROJECT_FILE.i:178.
+        Called from PROJECT_FILE.i:188.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_init <- main.
-        Called from PROJECT_FILE.i:178.
+        Called from PROJECT_FILE.i:188.
 [value] Done for function mpz_init
 [value] computing for function mpz_mul <- main.
-        Called from PROJECT_FILE.i:179.
+        Called from PROJECT_FILE.i:189.
 PROJECT_FILE.i:72:[value] Function mpz_mul: precondition got status valid
 PROJECT_FILE.i:73:[value] Function mpz_mul: precondition got status valid
 PROJECT_FILE.i:74:[value] Function mpz_mul: precondition got status valid
 [value] Done for function mpz_mul
 [value] computing for function mpz_init_set_si <- main.
-        Called from PROJECT_FILE.i:179.
+        Called from PROJECT_FILE.i:189.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_init <- main.
-        Called from PROJECT_FILE.i:180.
+        Called from PROJECT_FILE.i:190.
 [value] Done for function mpz_init
 [value] computing for function mpz_neg <- main.
-        Called from PROJECT_FILE.i:180.
+        Called from PROJECT_FILE.i:190.
 [value] Done for function mpz_neg
 [value] computing for function mpz_cmp <- main.
-        Called from PROJECT_FILE.i:181.
+        Called from PROJECT_FILE.i:191.
 [value] Done for function mpz_cmp
 [value] computing for function e_acsl_fail <- main.
-        Called from PROJECT_FILE.i:182.
+        Called from PROJECT_FILE.i:192.
 [value] computing for function printf <- e_acsl_fail <- main.
-        Called from PROJECT_FILE.i:115.
+        Called from PROJECT_FILE.i:125.
 [value] Done for function printf
 [value] computing for function exit <- e_acsl_fail <- main.
-        Called from PROJECT_FILE.i:115.
+        Called from PROJECT_FILE.i:125.
 [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 <- main.
-        Called from PROJECT_FILE.i:183.
+        Called from PROJECT_FILE.i:193.
 [value] Done for function mpz_clear
 [value] computing for function mpz_clear <- main.
-        Called from PROJECT_FILE.i:183.
+        Called from PROJECT_FILE.i:193.
 [value] Done for function mpz_clear
 [value] computing for function mpz_clear <- main.
-        Called from PROJECT_FILE.i:183.
+        Called from PROJECT_FILE.i:193.
 [value] Done for function mpz_clear
 [value] computing for function mpz_clear <- main.
-        Called from PROJECT_FILE.i:184.
+        Called from PROJECT_FILE.i:194.
 [value] Done for function mpz_clear
 [value] computing for function mpz_clear <- main.
-        Called from PROJECT_FILE.i:184.
+        Called from PROJECT_FILE.i:194.
 [value] Done for function mpz_clear
-PROJECT_FILE.i:187:[value] Assertion got status valid.
+PROJECT_FILE.i:197:[value] Assertion got status valid.
 [value] computing for function mpz_init_set_si <- main.
-        Called from PROJECT_FILE.i:190.
+        Called from PROJECT_FILE.i:200.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_init_set_si <- main.
-        Called from PROJECT_FILE.i:190.
+        Called from PROJECT_FILE.i:200.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_init_set_si <- main.
-        Called from PROJECT_FILE.i:191.
+        Called from PROJECT_FILE.i:201.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_init_set_ui <- main.
-        Called from PROJECT_FILE.i:191.
+        Called from PROJECT_FILE.i:201.
 PROJECT_FILE.i:25:[value] Function mpz_init_set_ui: postcondition got status unknown
 [value] Done for function mpz_init_set_ui
 [value] computing for function mpz_cmp <- main.
-        Called from PROJECT_FILE.i:192.
+        Called from PROJECT_FILE.i:202.
 [value] Done for function mpz_cmp
 [value] computing for function mpz_init <- main.
-        Called from PROJECT_FILE.i:192.
+        Called from PROJECT_FILE.i:202.
 [value] Done for function mpz_init
-PROJECT_FILE.i:193:[value] Assertion got status valid.
+PROJECT_FILE.i:203:[value] Assertion got status valid.
 [value] computing for function e_acsl_fail <- main.
-        Called from PROJECT_FILE.i:194.
+        Called from PROJECT_FILE.i:204.
 [value] computing for function printf <- e_acsl_fail <- main.
-        Called from PROJECT_FILE.i:115.
+        Called from PROJECT_FILE.i:125.
 [value] Done for function printf
 [value] computing for function exit <- e_acsl_fail <- main.
-        Called from PROJECT_FILE.i:115.
+        Called from PROJECT_FILE.i:125.
 [value] Done for function exit
 [value] Recording results for e_acsl_fail
 [value] Done for function e_acsl_fail
 [value] computing for function mpz_cdiv_q <- main.
-        Called from PROJECT_FILE.i:195.
+        Called from PROJECT_FILE.i:205.
 PROJECT_FILE.i:78:[value] Function mpz_cdiv_q: precondition got status valid
 PROJECT_FILE.i:79:[value] Function mpz_cdiv_q: precondition got status valid
 PROJECT_FILE.i:80:[value] Function mpz_cdiv_q: precondition got status valid
 [value] Done for function mpz_cdiv_q
 [value] computing for function mpz_init_set_si <- main.
-        Called from PROJECT_FILE.i:195.
+        Called from PROJECT_FILE.i:205.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_init <- main.
-        Called from PROJECT_FILE.i:196.
+        Called from PROJECT_FILE.i:206.
 [value] Done for function mpz_init
 [value] computing for function mpz_neg <- main.
-        Called from PROJECT_FILE.i:196.
+        Called from PROJECT_FILE.i:206.
 [value] Done for function mpz_neg
 [value] computing for function mpz_cmp <- main.
-        Called from PROJECT_FILE.i:197.
+        Called from PROJECT_FILE.i:207.
 [value] Done for function mpz_cmp
 [value] computing for function e_acsl_fail <- main.
-        Called from PROJECT_FILE.i:198.
+        Called from PROJECT_FILE.i:208.
 [value] computing for function printf <- e_acsl_fail <- main.
-        Called from PROJECT_FILE.i:115.
+        Called from PROJECT_FILE.i:125.
 [value] Done for function printf
 [value] computing for function exit <- e_acsl_fail <- main.
-        Called from PROJECT_FILE.i:115.
+        Called from PROJECT_FILE.i:125.
 [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 <- main.
-        Called from PROJECT_FILE.i:199.
+        Called from PROJECT_FILE.i:209.
 [value] Done for function mpz_clear
 [value] computing for function mpz_clear <- main.
-        Called from PROJECT_FILE.i:199.
+        Called from PROJECT_FILE.i:209.
 [value] Done for function mpz_clear
 [value] computing for function mpz_clear <- main.
-        Called from PROJECT_FILE.i:199.
+        Called from PROJECT_FILE.i:209.
 [value] Done for function mpz_clear
 [value] computing for function mpz_clear <- main.
-        Called from PROJECT_FILE.i:200.
+        Called from PROJECT_FILE.i:210.
 [value] Done for function mpz_clear
 [value] computing for function mpz_clear <- main.
-        Called from PROJECT_FILE.i:200.
+        Called from PROJECT_FILE.i:210.
 [value] Done for function mpz_clear
 [value] computing for function mpz_clear <- main.
-        Called from PROJECT_FILE.i:200.
+        Called from PROJECT_FILE.i:210.
 [value] Done for function mpz_clear
 [value] computing for function mpz_clear <- main.
-        Called from PROJECT_FILE.i:201.
+        Called from PROJECT_FILE.i:211.
 [value] Done for function mpz_clear
-PROJECT_FILE.i:204:[value] Assertion got status valid.
+PROJECT_FILE.i:214:[value] Assertion got status valid.
 [value] computing for function mpz_init_set_si <- main.
-        Called from PROJECT_FILE.i:207.
+        Called from PROJECT_FILE.i:217.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_init_set_si <- main.
-        Called from PROJECT_FILE.i:207.
+        Called from PROJECT_FILE.i:217.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_init_set_si <- main.
-        Called from PROJECT_FILE.i:208.
+        Called from PROJECT_FILE.i:218.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_init_set_ui <- main.
-        Called from PROJECT_FILE.i:208.
+        Called from PROJECT_FILE.i:218.
 [value] Done for function mpz_init_set_ui
 [value] computing for function mpz_cmp <- main.
-        Called from PROJECT_FILE.i:209.
+        Called from PROJECT_FILE.i:219.
 [value] Done for function mpz_cmp
 [value] computing for function mpz_init <- main.
-        Called from PROJECT_FILE.i:209.
+        Called from PROJECT_FILE.i:219.
 [value] Done for function mpz_init
-PROJECT_FILE.i:210:[value] Assertion got status valid.
+PROJECT_FILE.i:220:[value] Assertion got status valid.
 [value] computing for function e_acsl_fail <- main.
-        Called from PROJECT_FILE.i:211.
+        Called from PROJECT_FILE.i:221.
 [value] computing for function printf <- e_acsl_fail <- main.
-        Called from PROJECT_FILE.i:115.
+        Called from PROJECT_FILE.i:125.
 [value] Done for function printf
 [value] computing for function exit <- e_acsl_fail <- main.
-        Called from PROJECT_FILE.i:115.
+        Called from PROJECT_FILE.i:125.
 [value] Done for function exit
 [value] Recording results for e_acsl_fail
 [value] Done for function e_acsl_fail
 [value] computing for function mpz_mod_ui <- main.
-        Called from PROJECT_FILE.i:212.
+        Called from PROJECT_FILE.i:222.
 [kernel] warning: No code for function mpz_mod_ui, default assigns generated
 [value] Done for function mpz_mod_ui
 [value] computing for function mpz_init_set_si <- main.
-        Called from PROJECT_FILE.i:212.
+        Called from PROJECT_FILE.i:222.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_init <- main.
-        Called from PROJECT_FILE.i:213.
+        Called from PROJECT_FILE.i:223.
 [value] Done for function mpz_init
 [value] computing for function mpz_neg <- main.
-        Called from PROJECT_FILE.i:213.
+        Called from PROJECT_FILE.i:223.
 [value] Done for function mpz_neg
 [value] computing for function mpz_cmp <- main.
-        Called from PROJECT_FILE.i:214.
+        Called from PROJECT_FILE.i:224.
 [value] Done for function mpz_cmp
 [value] computing for function e_acsl_fail <- main.
-        Called from PROJECT_FILE.i:215.
+        Called from PROJECT_FILE.i:225.
 [value] computing for function printf <- e_acsl_fail <- main.
-        Called from PROJECT_FILE.i:115.
+        Called from PROJECT_FILE.i:125.
 [value] Done for function printf
 [value] computing for function exit <- e_acsl_fail <- main.
-        Called from PROJECT_FILE.i:115.
+        Called from PROJECT_FILE.i:125.
 [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 <- main.
-        Called from PROJECT_FILE.i:216.
+        Called from PROJECT_FILE.i:226.
 [value] Done for function mpz_clear
 [value] computing for function mpz_clear <- main.
-        Called from PROJECT_FILE.i:216.
+        Called from PROJECT_FILE.i:226.
 [value] Done for function mpz_clear
 [value] computing for function mpz_clear <- main.
-        Called from PROJECT_FILE.i:216.
+        Called from PROJECT_FILE.i:226.
 [value] Done for function mpz_clear
 [value] computing for function mpz_clear <- main.
-        Called from PROJECT_FILE.i:217.
+        Called from PROJECT_FILE.i:227.
 [value] Done for function mpz_clear
 [value] computing for function mpz_clear <- main.
-        Called from PROJECT_FILE.i:217.
+        Called from PROJECT_FILE.i:227.
 [value] Done for function mpz_clear
 [value] computing for function mpz_clear <- main.
-        Called from PROJECT_FILE.i:217.
+        Called from PROJECT_FILE.i:227.
 [value] Done for function mpz_clear
 [value] computing for function mpz_clear <- main.
-        Called from PROJECT_FILE.i:218.
+        Called from PROJECT_FILE.i:228.
 [value] Done for function mpz_clear
-PROJECT_FILE.i:221:[value] Assertion got status valid.
+PROJECT_FILE.i:231:[value] Assertion got status valid.
 [value] computing for function mpz_init_set_si <- main.
-        Called from PROJECT_FILE.i:226.
+        Called from PROJECT_FILE.i:236.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_init_set_si <- main.
-        Called from PROJECT_FILE.i:226.
+        Called from PROJECT_FILE.i:236.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_init <- main.
-        Called from PROJECT_FILE.i:227.
+        Called from PROJECT_FILE.i:237.
 [value] Done for function mpz_init
 [value] computing for function mpz_mul <- main.
-        Called from PROJECT_FILE.i:227.
+        Called from PROJECT_FILE.i:237.
 [value] Done for function mpz_mul
 [value] computing for function mpz_init_set_si <- main.
-        Called from PROJECT_FILE.i:228.
+        Called from PROJECT_FILE.i:238.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_init_set_si <- main.
-        Called from PROJECT_FILE.i:228.
+        Called from PROJECT_FILE.i:238.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_init <- main.
-        Called from PROJECT_FILE.i:229.
+        Called from PROJECT_FILE.i:239.
 [value] Done for function mpz_init
 [value] computing for function mpz_add <- main.
-        Called from PROJECT_FILE.i:229.
+        Called from PROJECT_FILE.i:239.
 [value] Done for function mpz_add
 [value] computing for function mpz_init <- main.
-        Called from PROJECT_FILE.i:230.
+        Called from PROJECT_FILE.i:240.
 [value] Done for function mpz_init
 [value] computing for function mpz_add <- main.
-        Called from PROJECT_FILE.i:230.
+        Called from PROJECT_FILE.i:240.
 [value] Done for function mpz_add
 [value] computing for function mpz_init_set_si <- main.
-        Called from PROJECT_FILE.i:231.
+        Called from PROJECT_FILE.i:241.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_init <- main.
-        Called from PROJECT_FILE.i:231.
+        Called from PROJECT_FILE.i:241.
 [value] Done for function mpz_init
 [value] computing for function mpz_sub <- main.
-        Called from PROJECT_FILE.i:232.
+        Called from PROJECT_FILE.i:242.
 [value] Done for function mpz_sub
 [value] computing for function mpz_init_set_si <- main.
-        Called from PROJECT_FILE.i:232.
+        Called from PROJECT_FILE.i:242.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_init_set_si <- main.
-        Called from PROJECT_FILE.i:233.
+        Called from PROJECT_FILE.i:243.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_init <- main.
-        Called from PROJECT_FILE.i:233.
+        Called from PROJECT_FILE.i:243.
 [value] Done for function mpz_init
 [value] computing for function mpz_sub <- main.
-        Called from PROJECT_FILE.i:234.
+        Called from PROJECT_FILE.i:244.
 [value] Done for function mpz_sub
 [value] computing for function mpz_init <- main.
-        Called from PROJECT_FILE.i:234.
+        Called from PROJECT_FILE.i:244.
 [value] Done for function mpz_init
 [value] computing for function mpz_add <- main.
-        Called from PROJECT_FILE.i:235.
+        Called from PROJECT_FILE.i:245.
 [value] Done for function mpz_add
 [value] computing for function mpz_init_set_si <- main.
-        Called from PROJECT_FILE.i:235.
+        Called from PROJECT_FILE.i:245.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_init <- main.
-        Called from PROJECT_FILE.i:236.
+        Called from PROJECT_FILE.i:246.
 [value] Done for function mpz_init
 [value] computing for function mpz_neg <- main.
-        Called from PROJECT_FILE.i:236.
+        Called from PROJECT_FILE.i:246.
 [value] Done for function mpz_neg
 [value] computing for function mpz_cmp <- main.
-        Called from PROJECT_FILE.i:237.
+        Called from PROJECT_FILE.i:247.
 [value] Done for function mpz_cmp
 [value] computing for function e_acsl_fail <- main.
-        Called from PROJECT_FILE.i:238.
+        Called from PROJECT_FILE.i:248.
 [value] computing for function printf <- e_acsl_fail <- main.
-        Called from PROJECT_FILE.i:115.
+        Called from PROJECT_FILE.i:125.
 [value] Done for function printf
 [value] computing for function exit <- e_acsl_fail <- main.
-        Called from PROJECT_FILE.i:115.
+        Called from PROJECT_FILE.i:125.
 [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 <- main.
-        Called from PROJECT_FILE.i:239.
+        Called from PROJECT_FILE.i:249.
 [value] Done for function mpz_clear
 [value] computing for function mpz_clear <- main.
-        Called from PROJECT_FILE.i:239.
+        Called from PROJECT_FILE.i:249.
 [value] Done for function mpz_clear
 [value] computing for function mpz_clear <- main.
-        Called from PROJECT_FILE.i:239.
+        Called from PROJECT_FILE.i:249.
 [value] Done for function mpz_clear
 [value] computing for function mpz_clear <- main.
-        Called from PROJECT_FILE.i:240.
+        Called from PROJECT_FILE.i:250.
 [value] Done for function mpz_clear
 [value] computing for function mpz_clear <- main.
-        Called from PROJECT_FILE.i:240.
+        Called from PROJECT_FILE.i:250.
 [value] Done for function mpz_clear
 [value] computing for function mpz_clear <- main.
-        Called from PROJECT_FILE.i:240.
+        Called from PROJECT_FILE.i:250.
 [value] Done for function mpz_clear
 [value] computing for function mpz_clear <- main.
-        Called from PROJECT_FILE.i:241.
+        Called from PROJECT_FILE.i:251.
 [value] Done for function mpz_clear
 [value] computing for function mpz_clear <- main.
-        Called from PROJECT_FILE.i:241.
+        Called from PROJECT_FILE.i:251.
 [value] Done for function mpz_clear
 [value] computing for function mpz_clear <- main.
-        Called from PROJECT_FILE.i:241.
+        Called from PROJECT_FILE.i:251.
 [value] Done for function mpz_clear
 [value] computing for function mpz_clear <- main.
-        Called from PROJECT_FILE.i:242.
+        Called from PROJECT_FILE.i:252.
 [value] Done for function mpz_clear
 [value] computing for function mpz_clear <- main.
-        Called from PROJECT_FILE.i:242.
+        Called from PROJECT_FILE.i:252.
 [value] Done for function mpz_clear
 [value] computing for function mpz_clear <- main.
-        Called from PROJECT_FILE.i:242.
+        Called from PROJECT_FILE.i:252.
 [value] Done for function mpz_clear
 [value] computing for function mpz_clear <- main.
-        Called from PROJECT_FILE.i:243.
+        Called from PROJECT_FILE.i:253.
 [value] Done for function mpz_clear
 [value] computing for function mpz_clear <- main.
-        Called from PROJECT_FILE.i:243.
+        Called from PROJECT_FILE.i:253.
 [value] Done for function mpz_clear
 [value] computing for function mpz_clear <- main.
-        Called from PROJECT_FILE.i:243.
+        Called from PROJECT_FILE.i:253.
 [value] Done for function mpz_clear
-PROJECT_FILE.i:246:[value] Assertion got status valid.
+PROJECT_FILE.i:256:[value] Assertion got status valid.
 [value] computing for function mpz_init_set_si <- main.
-        Called from PROJECT_FILE.i:248.
+        Called from PROJECT_FILE.i:258.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_init_set_si <- main.
-        Called from PROJECT_FILE.i:249.
+        Called from PROJECT_FILE.i:259.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_cmp <- main.
-        Called from PROJECT_FILE.i:249.
+        Called from PROJECT_FILE.i:259.
 [value] Done for function mpz_cmp
 [value] computing for function mpz_init_set_si <- main.
-        Called from PROJECT_FILE.i:250.
+        Called from PROJECT_FILE.i:260.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_init_set_si <- main.
-        Called from PROJECT_FILE.i:250.
+        Called from PROJECT_FILE.i:260.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_cmp <- main.
-        Called from PROJECT_FILE.i:251.
+        Called from PROJECT_FILE.i:261.
 [value] Done for function mpz_cmp
 [value] computing for function e_acsl_fail <- main.
-        Called from PROJECT_FILE.i:253.
+        Called from PROJECT_FILE.i:263.
 [value] computing for function printf <- e_acsl_fail <- main.
-        Called from PROJECT_FILE.i:115.
+        Called from PROJECT_FILE.i:125.
 [value] Done for function printf
 [value] computing for function exit <- e_acsl_fail <- main.
-        Called from PROJECT_FILE.i:115.
+        Called from PROJECT_FILE.i:125.
 [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 <- main.
-        Called from PROJECT_FILE.i:254.
+        Called from PROJECT_FILE.i:264.
 [value] Done for function mpz_clear
 [value] computing for function mpz_clear <- main.
-        Called from PROJECT_FILE.i:254.
+        Called from PROJECT_FILE.i:264.
 [value] Done for function mpz_clear
 [value] computing for function mpz_clear <- main.
-        Called from PROJECT_FILE.i:254.
+        Called from PROJECT_FILE.i:264.
 [value] Done for function mpz_clear
 [value] computing for function mpz_clear <- main.
-        Called from PROJECT_FILE.i:255.
+        Called from PROJECT_FILE.i:265.
 [value] Done for function mpz_clear
-PROJECT_FILE.i:258:[value] Assertion got status valid.
+PROJECT_FILE.i:268:[value] Assertion got status valid.
 [value] computing for function mpz_init_set_si <- main.
-        Called from PROJECT_FILE.i:261.
+        Called from PROJECT_FILE.i:271.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_init_set_si <- main.
-        Called from PROJECT_FILE.i:261.
+        Called from PROJECT_FILE.i:271.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_init <- main.
-        Called from PROJECT_FILE.i:262.
+        Called from PROJECT_FILE.i:272.
 [value] Done for function mpz_init
 [value] computing for function mpz_neg <- main.
-        Called from PROJECT_FILE.i:262.
+        Called from PROJECT_FILE.i:272.
 [value] Done for function mpz_neg
 [value] computing for function mpz_cmp <- main.
-        Called from PROJECT_FILE.i:263.
+        Called from PROJECT_FILE.i:273.
 [value] Done for function mpz_cmp
 [value] computing for function mpz_init_set_si <- main.
-        Called from PROJECT_FILE.i:263.
+        Called from PROJECT_FILE.i:273.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_init_set_si <- main.
-        Called from PROJECT_FILE.i:264.
+        Called from PROJECT_FILE.i:274.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_cmp <- main.
-        Called from PROJECT_FILE.i:264.
+        Called from PROJECT_FILE.i:274.
 [value] Done for function mpz_cmp
 [value] computing for function e_acsl_fail <- main.
-        Called from PROJECT_FILE.i:266.
+        Called from PROJECT_FILE.i:276.
 [value] computing for function printf <- e_acsl_fail <- main.
-        Called from PROJECT_FILE.i:115.
+        Called from PROJECT_FILE.i:125.
 [value] Done for function printf
 [value] computing for function exit <- e_acsl_fail <- main.
-        Called from PROJECT_FILE.i:115.
+        Called from PROJECT_FILE.i:125.
 [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 <- main.
-        Called from PROJECT_FILE.i:267.
+        Called from PROJECT_FILE.i:277.
 [value] Done for function mpz_clear
 [value] computing for function mpz_clear <- main.
-        Called from PROJECT_FILE.i:267.
+        Called from PROJECT_FILE.i:277.
 [value] Done for function mpz_clear
 [value] computing for function mpz_clear <- main.
-        Called from PROJECT_FILE.i:267.
+        Called from PROJECT_FILE.i:277.
 [value] Done for function mpz_clear
 [value] computing for function mpz_clear <- main.
-        Called from PROJECT_FILE.i:268.
+        Called from PROJECT_FILE.i:278.
 [value] Done for function mpz_clear
 [value] computing for function mpz_clear <- main.
-        Called from PROJECT_FILE.i:268.
+        Called from PROJECT_FILE.i:278.
 [value] Done for function mpz_clear
-PROJECT_FILE.i:271:[value] Assertion got status valid.
+PROJECT_FILE.i:281:[value] Assertion got status valid.
 [value] computing for function mpz_init_set_si <- main.
-        Called from PROJECT_FILE.i:274.
+        Called from PROJECT_FILE.i:284.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_init_set_si <- main.
-        Called from PROJECT_FILE.i:274.
+        Called from PROJECT_FILE.i:284.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_init <- main.
-        Called from PROJECT_FILE.i:275.
+        Called from PROJECT_FILE.i:285.
 [value] Done for function mpz_init
 [value] computing for function mpz_neg <- main.
-        Called from PROJECT_FILE.i:275.
+        Called from PROJECT_FILE.i:285.
 [value] Done for function mpz_neg
 [value] computing for function mpz_cmp <- main.
-        Called from PROJECT_FILE.i:276.
+        Called from PROJECT_FILE.i:286.
 [value] Done for function mpz_cmp
 [value] computing for function mpz_init_set_si <- main.
-        Called from PROJECT_FILE.i:276.
+        Called from PROJECT_FILE.i:286.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_init_set_si <- main.
-        Called from PROJECT_FILE.i:277.
+        Called from PROJECT_FILE.i:287.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_cmp <- main.
-        Called from PROJECT_FILE.i:277.
+        Called from PROJECT_FILE.i:287.
 [value] Done for function mpz_cmp
 [value] computing for function e_acsl_fail <- main.
-        Called from PROJECT_FILE.i:279.
+        Called from PROJECT_FILE.i:289.
 [value] computing for function printf <- e_acsl_fail <- main.
-        Called from PROJECT_FILE.i:115.
+        Called from PROJECT_FILE.i:125.
 [value] Done for function printf
 [value] computing for function exit <- e_acsl_fail <- main.
-        Called from PROJECT_FILE.i:115.
+        Called from PROJECT_FILE.i:125.
 [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 <- main.
-        Called from PROJECT_FILE.i:280.
+        Called from PROJECT_FILE.i:290.
 [value] Done for function mpz_clear
 [value] computing for function mpz_clear <- main.
-        Called from PROJECT_FILE.i:280.
+        Called from PROJECT_FILE.i:290.
 [value] Done for function mpz_clear
 [value] computing for function mpz_clear <- main.
-        Called from PROJECT_FILE.i:280.
+        Called from PROJECT_FILE.i:290.
 [value] Done for function mpz_clear
 [value] computing for function mpz_clear <- main.
-        Called from PROJECT_FILE.i:281.
+        Called from PROJECT_FILE.i:291.
 [value] Done for function mpz_clear
 [value] computing for function mpz_clear <- main.
-        Called from PROJECT_FILE.i:281.
+        Called from PROJECT_FILE.i:291.
 [value] Done for function mpz_clear
-PROJECT_FILE.i:284:[value] Assertion got status valid.
+PROJECT_FILE.i:294:[value] Assertion got status valid.
 [value] computing for function mpz_init_set_si <- main.
-        Called from PROJECT_FILE.i:286.
+        Called from PROJECT_FILE.i:296.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_init_set_si <- main.
-        Called from PROJECT_FILE.i:287.
+        Called from PROJECT_FILE.i:297.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_cmp <- main.
-        Called from PROJECT_FILE.i:287.
+        Called from PROJECT_FILE.i:297.
 [value] Done for function mpz_cmp
 [value] computing for function mpz_init_set_si <- main.
-        Called from PROJECT_FILE.i:288.
+        Called from PROJECT_FILE.i:298.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_init_set_si <- main.
-        Called from PROJECT_FILE.i:288.
+        Called from PROJECT_FILE.i:298.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_cmp <- main.
-        Called from PROJECT_FILE.i:289.
+        Called from PROJECT_FILE.i:299.
 [value] Done for function mpz_cmp
 [value] computing for function e_acsl_fail <- main.
-        Called from PROJECT_FILE.i:291.
+        Called from PROJECT_FILE.i:301.
 [value] computing for function printf <- e_acsl_fail <- main.
-        Called from PROJECT_FILE.i:115.
+        Called from PROJECT_FILE.i:125.
 [value] Done for function printf
 [value] computing for function exit <- e_acsl_fail <- main.
-        Called from PROJECT_FILE.i:115.
+        Called from PROJECT_FILE.i:125.
 [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 <- main.
-        Called from PROJECT_FILE.i:292.
+        Called from PROJECT_FILE.i:302.
 [value] Done for function mpz_clear
 [value] computing for function mpz_clear <- main.
-        Called from PROJECT_FILE.i:292.
+        Called from PROJECT_FILE.i:302.
 [value] Done for function mpz_clear
 [value] computing for function mpz_clear <- main.
-        Called from PROJECT_FILE.i:292.
+        Called from PROJECT_FILE.i:302.
 [value] Done for function mpz_clear
 [value] computing for function mpz_clear <- main.
-        Called from PROJECT_FILE.i:293.
+        Called from PROJECT_FILE.i:303.
 [value] Done for function mpz_clear
 [value] Recording results for main
 [value] done for function main
@@ -752,10 +752,10 @@ PROJECT_FILE.i:284:[value] Assertion got status valid.
 [from] Computing for function e_acsl_fail
 [from] Computing for function printf <-e_acsl_fail
 [from] Done for function printf
-PROJECT_FILE.i:115:[from] warning: variadic call detected. Using only 1 argument(s).
+PROJECT_FILE.i:125:[from] warning: variadic call detected. Using only 1 argument(s).
 [from] Computing for function exit <-e_acsl_fail
 [from] Done for function exit
-PROJECT_FILE.i:115:[from] Non terminating function (no dependencies)
+PROJECT_FILE.i:125:[from] Non terminating function (no dependencies)
 [from] Done for function e_acsl_fail
 [from] Computing for function mpz_clear
 [from] Done for function mpz_clear
diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/array.err.oracle b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/array.err.oracle
new file mode 100644
index 00000000000..e69de29bb2d
diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/array.res.oracle b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/array.res.oracle
new file mode 100644
index 00000000000..6e684c5bb0e
--- /dev/null
+++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/array.res.oracle
@@ -0,0 +1,192 @@
+:0:[e-acsl] warning: missing guard for ensuring that 0 is a valid array index
+:0:[e-acsl] warning: missing guard for ensuring that 1 is a valid array index
+[value] Analyzing a complete application starting at main
+[value] Computing initial state
+[value] Initial state computed
+[value] Values of globals at initialization
+        T1[0..2] ∈ {0}
+        T2[0..3] ∈ {0}
+PROJECT_FILE.i:132:[value] entering loop for the first time
+PROJECT_FILE.i:132:[value] assigning non deterministic value for the first time
+PROJECT_FILE.i:135:[value] entering loop for the first time
+PROJECT_FILE.i:138:[value] Assertion got status unknown.
+[value] computing for function mpz_init_set_si <- main.
+        Called from PROJECT_FILE.i:140.
+PROJECT_FILE.i:29:[value] Function mpz_init_set_si: postcondition got status unknown
+[value] Done for function mpz_init_set_si
+[value] computing for function mpz_get_si <- main.
+        Called from PROJECT_FILE.i:140.
+PROJECT_FILE.i:92:[value] Function mpz_get_si: precondition got status valid
+[value] Done for function mpz_get_si
+[value] computing for function mpz_init_set_si <- main.
+        Called from PROJECT_FILE.i:141.
+[value] Done for function mpz_init_set_si
+[value] computing for function mpz_get_si <- main.
+        Called from PROJECT_FILE.i:141.
+[value] Done for function mpz_get_si
+PROJECT_FILE.i:142:[kernel] warning: accessing out of bounds index [-2147483648..2147483647].
+                  assert 0 ≤ (int)e_acsl_2 ∧ (int)e_acsl_2 < 3;
+PROJECT_FILE.i:142:[kernel] warning: accessing out of bounds index [-2147483648..2147483647].
+                  assert 0 ≤ (int)e_acsl_4 ∧ (int)e_acsl_4 < 4;
+[value] computing for function e_acsl_fail <- main.
+        Called from PROJECT_FILE.i:143.
+[value] computing for function printf <- e_acsl_fail <- main.
+        Called from PROJECT_FILE.i:125.
+[value] Done for function printf
+[value] computing for function exit <- e_acsl_fail <- main.
+        Called from PROJECT_FILE.i:125.
+PROJECT_FILE.i:115:[value] Function exit: postcondition got status invalid
+[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 <- main.
+        Called from PROJECT_FILE.i:144.
+PROJECT_FILE.i:39:[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:144.
+[value] Done for function mpz_clear
+PROJECT_FILE.i:147:[value] Assertion got status unknown.
+[value] computing for function mpz_init_set_si <- main.
+        Called from PROJECT_FILE.i:149.
+[value] Done for function mpz_init_set_si
+[value] computing for function mpz_get_si <- main.
+        Called from PROJECT_FILE.i:149.
+[value] Done for function mpz_get_si
+[value] computing for function mpz_init_set_si <- main.
+        Called from PROJECT_FILE.i:150.
+[value] Done for function mpz_init_set_si
+[value] computing for function mpz_get_si <- main.
+        Called from PROJECT_FILE.i:150.
+[value] Done for function mpz_get_si
+PROJECT_FILE.i:151:[kernel] warning: accessing out of bounds index [-2147483648..2147483647].
+                  assert 0 ≤ (int)e_acsl_6 ∧ (int)e_acsl_6 < 3;
+PROJECT_FILE.i:151:[kernel] warning: accessing out of bounds index [-2147483648..2147483647].
+                  assert 0 ≤ (int)e_acsl_8 ∧ (int)e_acsl_8 < 4;
+[value] computing for function e_acsl_fail <- main.
+        Called from PROJECT_FILE.i:152.
+[value] computing for function printf <- e_acsl_fail <- main.
+        Called from PROJECT_FILE.i:125.
+[value] Done for function printf
+[value] computing for function exit <- e_acsl_fail <- main.
+        Called from PROJECT_FILE.i:125.
+[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 <- main.
+        Called from PROJECT_FILE.i:153.
+[value] Done for function mpz_clear
+[value] computing for function mpz_clear <- main.
+        Called from PROJECT_FILE.i:153.
+[value] Done for function mpz_clear
+[value] Recording results for main
+[value] done for function main
+[from] Computing for function mpz_init_set_si
+[from] Done for function mpz_init_set_si
+[from] Computing for function mpz_get_si
+[from] Done for function mpz_get_si
+[from] Computing for function e_acsl_fail
+[from] Computing for function printf <-e_acsl_fail
+[from] Done for function printf
+PROJECT_FILE.i:125:[from] warning: variadic call detected. Using only 1 argument(s).
+[from] Computing for function exit <-e_acsl_fail
+[from] Done for function exit
+PROJECT_FILE.i:125:[from] Non terminating function (no dependencies)
+[from] Done for function e_acsl_fail
+[from] Computing for function mpz_clear
+[from] Done for function mpz_clear
+[value] ====== VALUES COMPUTED ======
+[value] Values for function e_acsl_fail:
+          NON TERMINATING FUNCTION
+[value] Values for function main:
+          T1[0] ∈ {0; 2}
+            [1..2] ∈ {0; 1; 2}
+          T2[0] ∈ {0; 2}
+            [1..3] ∈ {0; 2; 4; 6}
+          __retres ∈ {0}
+/* Generated by Frama-C */
+struct __anonstruct___mpz_struct_1 {
+   int _mp_alloc ;
+   int _mp_size ;
+   unsigned long *_mp_d ;
+};
+typedef struct __anonstruct___mpz_struct_1 __mpz_struct;
+typedef __mpz_struct mpz_t[1];
+/*@ ensures \valid(\old(z));
+    assigns *z;  */
+extern void mpz_init_set_si(__mpz_struct * /*[1]*/ z, long n);
+/*@ requires \valid(x);
+    assigns *x;  */
+extern void mpz_clear(__mpz_struct * /*[1]*/ x);
+/*@ requires \valid(z);
+    assigns \nothing;  */
+extern long mpz_get_si(__mpz_struct const * /*[1]*/ z);
+/*@ terminates \false;
+    ensures \false;
+    assigns \nothing;  */
+extern void exit(int status);
+/*@ assigns \nothing;  */
+extern int printf(char const * , ...);
+void e_acsl_fail(char *msg)
+{
+  printf("%s\n",msg);
+  exit(1);
+  return;
+}
+
+int T1[3];
+int T2[4];
+int main(void)
+{
+  int __retres;
+  { int i; i = 0; while (1) { if (! (i < 3)) { break; } T1[i] = i; i ++; } }
+  
+  { int i_0; i_0 = 0;
+    while (1) { if (! (i_0 < 4)) { break; } T2[i_0] = 2 * i_0; i_0 ++; }
+  }
+  
+  /*@ assert T1[0] ≡ T2[0]; */ ;
+  { mpz_t e_acsl_1; long e_acsl_2; mpz_t e_acsl_3; long e_acsl_4;
+    mpz_init_set_si((__mpz_struct *)(e_acsl_1),(long)0);
+    e_acsl_2 = mpz_get_si((__mpz_struct const *)(e_acsl_1));
+    mpz_init_set_si((__mpz_struct *)(e_acsl_3),(long)0);
+    e_acsl_4 = mpz_get_si((__mpz_struct const *)(e_acsl_3));
+    /*@ assert 0 ≤ (int)e_acsl_2 ∧ (int)e_acsl_2 < 3;
+          // synthesized
+      
+    */
+    /*@ assert 0 ≤ (int)e_acsl_4 ∧ (int)e_acsl_4 < 4;
+          // synthesized
+      
+    */
+    if (! (T1[(int)e_acsl_2] == T2[(int)e_acsl_4])) {
+      e_acsl_fail((char *)"(T1[0] == T2[0])");
+    } mpz_clear((__mpz_struct *)(e_acsl_1));
+    mpz_clear((__mpz_struct *)(e_acsl_3));
+  }
+  
+  /*@ assert T1[1] ≢ T2[1]; */ ;
+  { mpz_t e_acsl_5; long e_acsl_6; mpz_t e_acsl_7; long e_acsl_8;
+    mpz_init_set_si((__mpz_struct *)(e_acsl_5),(long)1);
+    e_acsl_6 = mpz_get_si((__mpz_struct const *)(e_acsl_5));
+    mpz_init_set_si((__mpz_struct *)(e_acsl_7),(long)1);
+    e_acsl_8 = mpz_get_si((__mpz_struct const *)(e_acsl_7));
+    /*@ assert 0 ≤ (int)e_acsl_6 ∧ (int)e_acsl_6 < 3;
+          // synthesized
+      
+    */
+    /*@ assert 0 ≤ (int)e_acsl_8 ∧ (int)e_acsl_8 < 4;
+          // synthesized
+      
+    */
+    if (! (T1[(int)e_acsl_6] != T2[(int)e_acsl_8])) {
+      e_acsl_fail((char *)"(T1[1] != T2[1])");
+    } mpz_clear((__mpz_struct *)(e_acsl_5));
+    mpz_clear((__mpz_struct *)(e_acsl_7));
+  }
+  
+  __retres = 0;
+  return (__retres);
+}
+
+
diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/cast.res.oracle b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/cast.res.oracle
index 3528b36ac7d..21e68e75834 100644
--- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/cast.res.oracle
+++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/cast.res.oracle
@@ -2,16 +2,98 @@
 [value] Computing initial state
 [value] Initial state computed
 [value] Values of globals at initialization
-PROJECT_FILE.i:124:[value] Assertion got status valid.
-PROJECT_FILE.i:127:[value] Assertion got status valid.
+PROJECT_FILE.i:134:[value] Assertion got status valid.
+PROJECT_FILE.i:137:[value] Assertion got status valid.
+PROJECT_FILE.i:140:[value] Assertion got status valid.
+[value] computing for function mpz_init_set_si <- main.
+        Called from PROJECT_FILE.i:141.
+PROJECT_FILE.i:29:[value] Function mpz_init_set_si: postcondition got status unknown
+[value] Done for function mpz_init_set_si
+[value] computing for function mpz_get_si <- main.
+        Called from PROJECT_FILE.i:142.
+PROJECT_FILE.i:92:[value] Function mpz_get_si: precondition got status valid
+[value] Done for function mpz_get_si
+[value] computing for function e_acsl_fail <- main.
+        Called from PROJECT_FILE.i:143.
+[value] computing for function printf <- e_acsl_fail <- main.
+        Called from PROJECT_FILE.i:125.
+[value] Done for function printf
+[value] computing for function exit <- e_acsl_fail <- main.
+        Called from PROJECT_FILE.i:125.
+PROJECT_FILE.i:115:[value] Function exit: postcondition got status invalid
+[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 <- main.
+        Called from PROJECT_FILE.i:144.
+PROJECT_FILE.i:39:[value] Function mpz_clear: precondition got status valid
+[value] Done for function mpz_clear
+PROJECT_FILE.i:147:[value] Assertion got status valid.
+[value] computing for function mpz_init_set_si <- main.
+        Called from PROJECT_FILE.i:148.
+[value] Done for function mpz_init_set_si
+[value] computing for function mpz_get_ui <- main.
+        Called from PROJECT_FILE.i:149.
+PROJECT_FILE.i:96:[value] Function mpz_get_ui: precondition got status valid
+[value] Done for function mpz_get_ui
+[value] computing for function e_acsl_fail <- main.
+        Called from PROJECT_FILE.i:151.
+[value] computing for function printf <- e_acsl_fail <- main.
+        Called from PROJECT_FILE.i:125.
+[value] Done for function printf
+[value] computing for function exit <- e_acsl_fail <- main.
+        Called from PROJECT_FILE.i:125.
+[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 <- main.
+        Called from PROJECT_FILE.i:152.
+[value] Done for function mpz_clear
 [value] Recording results for main
 [value] done for function main
+[from] Computing for function mpz_init_set_si
+[from] Done for function mpz_init_set_si
+[from] Computing for function mpz_get_si
+[from] Done for function mpz_get_si
+[from] Computing for function e_acsl_fail
+[from] Computing for function printf <-e_acsl_fail
+[from] Done for function printf
+PROJECT_FILE.i:125:[from] warning: variadic call detected. Using only 1 argument(s).
+[from] Computing for function exit <-e_acsl_fail
+[from] Done for function exit
+PROJECT_FILE.i:125:[from] Non terminating function (no dependencies)
+[from] Done for function e_acsl_fail
+[from] Computing for function mpz_clear
+[from] Done for function mpz_clear
+[from] Computing for function mpz_get_ui
+[from] Done for function mpz_get_ui
 [value] ====== VALUES COMPUTED ======
+[value] Values for function e_acsl_fail:
+          NON TERMINATING FUNCTION
 [value] Values for function main:
           __retres ∈ {0}
           x ∈ {0}
           y ∈ {0}
 /* Generated by Frama-C */
+struct __anonstruct___mpz_struct_1 {
+   int _mp_alloc ;
+   int _mp_size ;
+   unsigned long *_mp_d ;
+};
+typedef struct __anonstruct___mpz_struct_1 __mpz_struct;
+typedef __mpz_struct mpz_t[1];
+/*@ ensures \valid(\old(z));
+    assigns *z;  */
+extern void mpz_init_set_si(__mpz_struct * /*[1]*/ z, long n);
+/*@ requires \valid(x);
+    assigns *x;  */
+extern void mpz_clear(__mpz_struct * /*[1]*/ x);
+/*@ requires \valid(z);
+    assigns \nothing;  */
+extern long mpz_get_si(__mpz_struct const * /*[1]*/ z);
+/*@ requires \valid(z);
+    assigns \nothing;  */
+extern unsigned long mpz_get_ui(__mpz_struct const * /*[1]*/ z);
 /*@ terminates \false;
     ensures \false;
     assigns \nothing;  */
@@ -36,6 +118,23 @@ int main(void)
   if (! ((int)x == y)) { e_acsl_fail((char *)"((int)x == y)"); }
   /*@ assert x ≡ (long)y; */ ;
   if (! (x == (long)y)) { e_acsl_fail((char *)"(x == (long)y)"); }
+  /*@ assert y ≡ (int)0; */ ;
+  { mpz_t e_acsl_1; long e_acsl_2;
+    mpz_init_set_si((__mpz_struct *)(e_acsl_1),(long)0);
+    e_acsl_2 = mpz_get_si((__mpz_struct const *)(e_acsl_1));
+    if (! (y == (int)e_acsl_2)) { e_acsl_fail((char *)"(y == (int)0)"); }
+    mpz_clear((__mpz_struct *)(e_acsl_1));
+  }
+  
+  /*@ assert (unsigned int)y ≡ (unsigned int)0; */ ;
+  { mpz_t e_acsl_3; unsigned long e_acsl_4;
+    mpz_init_set_si((__mpz_struct *)(e_acsl_3),(long)0);
+    e_acsl_4 = mpz_get_ui((__mpz_struct const *)(e_acsl_3));
+    if (! ((unsigned int)y == (unsigned int)e_acsl_4)) {
+      e_acsl_fail((char *)"((unsigned int)y == (unsigned int)0)");
+    } mpz_clear((__mpz_struct *)(e_acsl_3));
+  }
+  
   __retres = 0;
   return (__retres);
 }
diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/comparison.res.oracle b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/comparison.res.oracle
index c9ad92ac929..4f2e719de1f 100644
--- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/comparison.res.oracle
+++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/comparison.res.oracle
@@ -2,222 +2,222 @@
 [value] Computing initial state
 [value] Initial state computed
 [value] Values of globals at initialization
-PROJECT_FILE.i:125:[value] Assertion got status valid.
-PROJECT_FILE.i:128:[value] Assertion got status valid.
-PROJECT_FILE.i:131:[value] Assertion got status valid.
+PROJECT_FILE.i:135:[value] Assertion got status valid.
+PROJECT_FILE.i:138:[value] Assertion got status valid.
+PROJECT_FILE.i:141:[value] Assertion got status valid.
 [value] computing for function mpz_init_set_si <- main.
-        Called from PROJECT_FILE.i:133.
+        Called from PROJECT_FILE.i:143.
 PROJECT_FILE.i:29:[value] Function mpz_init_set_si: postcondition got status unknown
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_init_set_si <- main.
-        Called from PROJECT_FILE.i:133.
+        Called from PROJECT_FILE.i:143.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_cmp <- main.
-        Called from PROJECT_FILE.i:134.
+        Called from PROJECT_FILE.i:144.
 PROJECT_FILE.i:45:[value] Function mpz_cmp: precondition got status valid
 PROJECT_FILE.i:46:[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:135.
+        Called from PROJECT_FILE.i:145.
 [value] computing for function printf <- e_acsl_fail <- main.
-        Called from PROJECT_FILE.i:115.
+        Called from PROJECT_FILE.i:125.
 [value] Done for function printf
 [value] computing for function exit <- e_acsl_fail <- main.
-        Called from PROJECT_FILE.i:115.
-PROJECT_FILE.i:105:[value] Function exit: postcondition got status invalid
+        Called from PROJECT_FILE.i:125.
+PROJECT_FILE.i:115:[value] Function exit: postcondition got status invalid
 [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 <- main.
-        Called from PROJECT_FILE.i:136.
+        Called from PROJECT_FILE.i:146.
 PROJECT_FILE.i:39:[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:136.
+        Called from PROJECT_FILE.i:146.
 [value] Done for function mpz_clear
-PROJECT_FILE.i:139:[value] Assertion got status valid.
+PROJECT_FILE.i:149:[value] Assertion got status valid.
 [value] computing for function mpz_init_set_si <- main.
-        Called from PROJECT_FILE.i:141.
+        Called from PROJECT_FILE.i:151.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_init_set_si <- main.
-        Called from PROJECT_FILE.i:141.
+        Called from PROJECT_FILE.i:151.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_cmp <- main.
-        Called from PROJECT_FILE.i:142.
+        Called from PROJECT_FILE.i:152.
 [value] Done for function mpz_cmp
 [value] computing for function e_acsl_fail <- main.
-        Called from PROJECT_FILE.i:143.
+        Called from PROJECT_FILE.i:153.
 [value] computing for function printf <- e_acsl_fail <- main.
-        Called from PROJECT_FILE.i:115.
+        Called from PROJECT_FILE.i:125.
 [value] Done for function printf
 [value] computing for function exit <- e_acsl_fail <- main.
-        Called from PROJECT_FILE.i:115.
+        Called from PROJECT_FILE.i:125.
 [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 <- main.
-        Called from PROJECT_FILE.i:144.
+        Called from PROJECT_FILE.i:154.
 [value] Done for function mpz_clear
 [value] computing for function mpz_clear <- main.
-        Called from PROJECT_FILE.i:144.
+        Called from PROJECT_FILE.i:154.
 [value] Done for function mpz_clear
-PROJECT_FILE.i:148:[value] Assertion got status valid.
-PROJECT_FILE.i:151:[value] Assertion got status valid.
-PROJECT_FILE.i:154:[value] Assertion got status valid.
+PROJECT_FILE.i:158:[value] Assertion got status valid.
+PROJECT_FILE.i:161:[value] Assertion got status valid.
+PROJECT_FILE.i:164:[value] Assertion got status valid.
 [value] computing for function mpz_init_set_si <- main.
-        Called from PROJECT_FILE.i:156.
+        Called from PROJECT_FILE.i:166.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_init_set_si <- main.
-        Called from PROJECT_FILE.i:156.
+        Called from PROJECT_FILE.i:166.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_cmp <- main.
-        Called from PROJECT_FILE.i:157.
+        Called from PROJECT_FILE.i:167.
 [value] Done for function mpz_cmp
 [value] computing for function e_acsl_fail <- main.
-        Called from PROJECT_FILE.i:158.
+        Called from PROJECT_FILE.i:168.
 [value] computing for function printf <- e_acsl_fail <- main.
-        Called from PROJECT_FILE.i:115.
+        Called from PROJECT_FILE.i:125.
 [value] Done for function printf
 [value] computing for function exit <- e_acsl_fail <- main.
-        Called from PROJECT_FILE.i:115.
+        Called from PROJECT_FILE.i:125.
 [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 <- main.
-        Called from PROJECT_FILE.i:158.
+        Called from PROJECT_FILE.i:168.
 [value] Done for function mpz_clear
 [value] computing for function mpz_clear <- main.
-        Called from PROJECT_FILE.i:159.
+        Called from PROJECT_FILE.i:169.
 [value] Done for function mpz_clear
-PROJECT_FILE.i:162:[value] Assertion got status valid.
+PROJECT_FILE.i:172:[value] Assertion got status valid.
 [value] computing for function mpz_init_set_si <- main.
-        Called from PROJECT_FILE.i:164.
+        Called from PROJECT_FILE.i:174.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_init_set_si <- main.
-        Called from PROJECT_FILE.i:164.
+        Called from PROJECT_FILE.i:174.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_cmp <- main.
-        Called from PROJECT_FILE.i:165.
+        Called from PROJECT_FILE.i:175.
 [value] Done for function mpz_cmp
 [value] computing for function e_acsl_fail <- main.
-        Called from PROJECT_FILE.i:166.
+        Called from PROJECT_FILE.i:176.
 [value] computing for function printf <- e_acsl_fail <- main.
-        Called from PROJECT_FILE.i:115.
+        Called from PROJECT_FILE.i:125.
 [value] Done for function printf
 [value] computing for function exit <- e_acsl_fail <- main.
-        Called from PROJECT_FILE.i:115.
+        Called from PROJECT_FILE.i:125.
 [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 <- main.
-        Called from PROJECT_FILE.i:166.
+        Called from PROJECT_FILE.i:176.
 [value] Done for function mpz_clear
 [value] computing for function mpz_clear <- main.
-        Called from PROJECT_FILE.i:167.
+        Called from PROJECT_FILE.i:177.
 [value] Done for function mpz_clear
-PROJECT_FILE.i:170:[value] Assertion got status valid.
+PROJECT_FILE.i:180:[value] Assertion got status valid.
 [value] computing for function mpz_init_set_si <- main.
-        Called from PROJECT_FILE.i:172.
+        Called from PROJECT_FILE.i:182.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_init_set_si <- main.
-        Called from PROJECT_FILE.i:172.
+        Called from PROJECT_FILE.i:182.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_cmp <- main.
-        Called from PROJECT_FILE.i:173.
+        Called from PROJECT_FILE.i:183.
 [value] Done for function mpz_cmp
 [value] computing for function e_acsl_fail <- main.
-        Called from PROJECT_FILE.i:174.
+        Called from PROJECT_FILE.i:184.
 [value] computing for function printf <- e_acsl_fail <- main.
-        Called from PROJECT_FILE.i:115.
+        Called from PROJECT_FILE.i:125.
 [value] Done for function printf
 [value] computing for function exit <- e_acsl_fail <- main.
-        Called from PROJECT_FILE.i:115.
+        Called from PROJECT_FILE.i:125.
 [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 <- main.
-        Called from PROJECT_FILE.i:175.
+        Called from PROJECT_FILE.i:185.
 [value] Done for function mpz_clear
 [value] computing for function mpz_clear <- main.
-        Called from PROJECT_FILE.i:175.
+        Called from PROJECT_FILE.i:185.
 [value] Done for function mpz_clear
-PROJECT_FILE.i:178:[value] Assertion got status valid.
+PROJECT_FILE.i:188:[value] Assertion got status valid.
 [value] computing for function mpz_init_set_si <- main.
-        Called from PROJECT_FILE.i:180.
+        Called from PROJECT_FILE.i:190.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_init_set_si <- main.
-        Called from PROJECT_FILE.i:180.
+        Called from PROJECT_FILE.i:190.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_cmp <- main.
-        Called from PROJECT_FILE.i:181.
+        Called from PROJECT_FILE.i:191.
 [value] Done for function mpz_cmp
 [value] computing for function e_acsl_fail <- main.
-        Called from PROJECT_FILE.i:182.
+        Called from PROJECT_FILE.i:192.
 [value] computing for function printf <- e_acsl_fail <- main.
-        Called from PROJECT_FILE.i:115.
+        Called from PROJECT_FILE.i:125.
 [value] Done for function printf
 [value] computing for function exit <- e_acsl_fail <- main.
-        Called from PROJECT_FILE.i:115.
+        Called from PROJECT_FILE.i:125.
 [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 <- main.
-        Called from PROJECT_FILE.i:183.
+        Called from PROJECT_FILE.i:193.
 [value] Done for function mpz_clear
 [value] computing for function mpz_clear <- main.
-        Called from PROJECT_FILE.i:183.
+        Called from PROJECT_FILE.i:193.
 [value] Done for function mpz_clear
-PROJECT_FILE.i:186:[value] Assertion got status valid.
+PROJECT_FILE.i:196:[value] Assertion got status valid.
 [value] computing for function mpz_init_set_si <- main.
-        Called from PROJECT_FILE.i:188.
+        Called from PROJECT_FILE.i:198.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_init_set_si <- main.
-        Called from PROJECT_FILE.i:188.
+        Called from PROJECT_FILE.i:198.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_cmp <- main.
-        Called from PROJECT_FILE.i:189.
+        Called from PROJECT_FILE.i:199.
 [value] Done for function mpz_cmp
 [value] computing for function e_acsl_fail <- main.
-        Called from PROJECT_FILE.i:190.
+        Called from PROJECT_FILE.i:200.
 [value] computing for function printf <- e_acsl_fail <- main.
-        Called from PROJECT_FILE.i:115.
+        Called from PROJECT_FILE.i:125.
 [value] Done for function printf
 [value] computing for function exit <- e_acsl_fail <- main.
-        Called from PROJECT_FILE.i:115.
+        Called from PROJECT_FILE.i:125.
 [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 <- main.
-        Called from PROJECT_FILE.i:191.
+        Called from PROJECT_FILE.i:201.
 [value] Done for function mpz_clear
 [value] computing for function mpz_clear <- main.
-        Called from PROJECT_FILE.i:191.
+        Called from PROJECT_FILE.i:201.
 [value] Done for function mpz_clear
-PROJECT_FILE.i:194:[value] Assertion got status valid.
+PROJECT_FILE.i:204:[value] Assertion got status valid.
 [value] computing for function mpz_init_set_si <- main.
-        Called from PROJECT_FILE.i:196.
+        Called from PROJECT_FILE.i:206.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_init_set_si <- main.
-        Called from PROJECT_FILE.i:196.
+        Called from PROJECT_FILE.i:206.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_cmp <- main.
-        Called from PROJECT_FILE.i:197.
+        Called from PROJECT_FILE.i:207.
 [value] Done for function mpz_cmp
 [value] computing for function e_acsl_fail <- main.
-        Called from PROJECT_FILE.i:198.
+        Called from PROJECT_FILE.i:208.
 [value] computing for function printf <- e_acsl_fail <- main.
-        Called from PROJECT_FILE.i:115.
+        Called from PROJECT_FILE.i:125.
 [value] Done for function printf
 [value] computing for function exit <- e_acsl_fail <- main.
-        Called from PROJECT_FILE.i:115.
+        Called from PROJECT_FILE.i:125.
 [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 <- main.
-        Called from PROJECT_FILE.i:199.
+        Called from PROJECT_FILE.i:209.
 [value] Done for function mpz_clear
 [value] computing for function mpz_clear <- main.
-        Called from PROJECT_FILE.i:199.
+        Called from PROJECT_FILE.i:209.
 [value] Done for function mpz_clear
 [value] Recording results for main
 [value] done for function main
@@ -228,10 +228,10 @@ PROJECT_FILE.i:194:[value] Assertion got status valid.
 [from] Computing for function e_acsl_fail
 [from] Computing for function printf <-e_acsl_fail
 [from] Done for function printf
-PROJECT_FILE.i:115:[from] warning: variadic call detected. Using only 1 argument(s).
+PROJECT_FILE.i:125:[from] warning: variadic call detected. Using only 1 argument(s).
 [from] Computing for function exit <-e_acsl_fail
 [from] Done for function exit
-PROJECT_FILE.i:115:[from] Non terminating function (no dependencies)
+PROJECT_FILE.i:125:[from] Non terminating function (no dependencies)
 [from] Done for function e_acsl_fail
 [from] Computing for function mpz_clear
 [from] Done for function mpz_clear
diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/function_contract.res.oracle b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/function_contract.res.oracle
index 40015e5569c..a1bf328b270 100644
--- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/function_contract.res.oracle
+++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/function_contract.res.oracle
@@ -5,380 +5,380 @@
         X ∈ {0}
         Y ∈ {2}
 [value] computing for function f <- main.
-        Called from PROJECT_FILE.i:336.
-PROJECT_FILE.i:119:[value] Function f: postcondition got status valid
+        Called from PROJECT_FILE.i:346.
+PROJECT_FILE.i:129:[value] Function f: postcondition got status valid
 [value] Recording results for f
 [value] Done for function f
 [value] computing for function g <- main.
-        Called from PROJECT_FILE.i:337.
-PROJECT_FILE.i:133:[value] Function g: postcondition got status valid
-PROJECT_FILE.i:134:[value] Function g: postcondition got status valid
+        Called from PROJECT_FILE.i:347.
+PROJECT_FILE.i:143:[value] Function g: postcondition got status valid
+PROJECT_FILE.i:144:[value] Function g: postcondition got status valid
 [value] Recording results for g
 [value] Done for function g
 [value] computing for function h <- main.
-        Called from PROJECT_FILE.i:338.
-PROJECT_FILE.i:152:[value] Function h: precondition got status valid
+        Called from PROJECT_FILE.i:348.
+PROJECT_FILE.i:162:[value] Function h: precondition got status valid
 [value] computing for function mpz_init_set_si <- h <- main.
-        Called from PROJECT_FILE.i:156.
+        Called from PROJECT_FILE.i:166.
 PROJECT_FILE.i:29:[value] Function mpz_init_set_si: postcondition got status unknown
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_init_set_si <- h <- main.
-        Called from PROJECT_FILE.i:156.
+        Called from PROJECT_FILE.i:166.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_cmp <- h <- main.
-        Called from PROJECT_FILE.i:157.
+        Called from PROJECT_FILE.i:167.
 PROJECT_FILE.i:45:[value] Function mpz_cmp: precondition got status valid
 PROJECT_FILE.i:46:[value] Function mpz_cmp: precondition got status valid
 [value] Done for function mpz_cmp
 [value] computing for function e_acsl_fail <- h <- main.
-        Called from PROJECT_FILE.i:158.
+        Called from PROJECT_FILE.i:168.
 [value] computing for function printf <- e_acsl_fail <- h <- main.
-        Called from PROJECT_FILE.i:115.
+        Called from PROJECT_FILE.i:125.
 [value] Done for function printf
 [value] computing for function exit <- e_acsl_fail <- h <- main.
-        Called from PROJECT_FILE.i:115.
-PROJECT_FILE.i:105:[value] Function exit: postcondition got status invalid
+        Called from PROJECT_FILE.i:125.
+PROJECT_FILE.i:115:[value] Function exit: postcondition got status invalid
 [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 <- h <- main.
-        Called from PROJECT_FILE.i:159.
+        Called from PROJECT_FILE.i:169.
 PROJECT_FILE.i:39:[value] Function mpz_clear: precondition got status valid
 [value] Done for function mpz_clear
 [value] computing for function mpz_clear <- h <- main.
-        Called from PROJECT_FILE.i:159.
+        Called from PROJECT_FILE.i:169.
 [value] Done for function mpz_clear
 [value] Recording results for h
 [value] Done for function h
 [value] computing for function i <- main.
-        Called from PROJECT_FILE.i:339.
-PROJECT_FILE.i:166:[value] Function i: precondition got status valid
-PROJECT_FILE.i:167:[value] Function i: precondition got status valid
+        Called from PROJECT_FILE.i:349.
+PROJECT_FILE.i:176:[value] Function i: precondition got status valid
+PROJECT_FILE.i:177:[value] Function i: precondition got status valid
 [value] computing for function mpz_init_set_si <- i <- main.
-        Called from PROJECT_FILE.i:171.
+        Called from PROJECT_FILE.i:181.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_init_set_si <- i <- main.
-        Called from PROJECT_FILE.i:172.
+        Called from PROJECT_FILE.i:182.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_cmp <- i <- main.
-        Called from PROJECT_FILE.i:172.
+        Called from PROJECT_FILE.i:182.
 [value] Done for function mpz_cmp
 [value] computing for function e_acsl_fail <- i <- main.
-        Called from PROJECT_FILE.i:173.
+        Called from PROJECT_FILE.i:183.
 [value] computing for function printf <- e_acsl_fail <- i <- main.
-        Called from PROJECT_FILE.i:115.
+        Called from PROJECT_FILE.i:125.
 [value] Done for function printf
 [value] computing for function exit <- e_acsl_fail <- i <- main.
-        Called from PROJECT_FILE.i:115.
+        Called from PROJECT_FILE.i:125.
 [value] Done for function exit
 [value] Recording results for e_acsl_fail
 [value] Done for function e_acsl_fail
 [value] computing for function mpz_init_set_si <- i <- main.
-        Called from PROJECT_FILE.i:174.
+        Called from PROJECT_FILE.i:184.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_init_set_si <- i <- main.
-        Called from PROJECT_FILE.i:174.
+        Called from PROJECT_FILE.i:184.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_cmp <- i <- main.
-        Called from PROJECT_FILE.i:175.
+        Called from PROJECT_FILE.i:185.
 [value] Done for function mpz_cmp
 [value] computing for function e_acsl_fail <- i <- main.
-        Called from PROJECT_FILE.i:176.
+        Called from PROJECT_FILE.i:186.
 [value] computing for function printf <- e_acsl_fail <- i <- main.
-        Called from PROJECT_FILE.i:115.
+        Called from PROJECT_FILE.i:125.
 [value] Done for function printf
 [value] computing for function exit <- e_acsl_fail <- i <- main.
-        Called from PROJECT_FILE.i:115.
+        Called from PROJECT_FILE.i:125.
 [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 <- i <- main.
-        Called from PROJECT_FILE.i:177.
+        Called from PROJECT_FILE.i:187.
 [value] Done for function mpz_clear
 [value] computing for function mpz_clear <- i <- main.
-        Called from PROJECT_FILE.i:177.
+        Called from PROJECT_FILE.i:187.
 [value] Done for function mpz_clear
 [value] computing for function mpz_clear <- i <- main.
-        Called from PROJECT_FILE.i:177.
+        Called from PROJECT_FILE.i:187.
 [value] Done for function mpz_clear
 [value] computing for function mpz_clear <- i <- main.
-        Called from PROJECT_FILE.i:178.
+        Called from PROJECT_FILE.i:188.
 [value] Done for function mpz_clear
 [value] Recording results for i
 [value] Done for function i
 [value] computing for function j <- main.
-        Called from PROJECT_FILE.i:340.
-PROJECT_FILE.i:186:[value] Function j, behavior b1: precondition got status valid
-PROJECT_FILE.i:190:[value] Function j, behavior b2: precondition got status valid
-PROJECT_FILE.i:191:[value] Function j, behavior b2: precondition got status valid
+        Called from PROJECT_FILE.i:350.
+PROJECT_FILE.i:196:[value] Function j, behavior b1: precondition got status valid
+PROJECT_FILE.i:200:[value] Function j, behavior b2: precondition got status valid
+PROJECT_FILE.i:201:[value] Function j, behavior b2: precondition got status valid
 [value] computing for function mpz_init_set_si <- j <- main.
-        Called from PROJECT_FILE.i:201.
+        Called from PROJECT_FILE.i:211.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_init_set_si <- j <- main.
-        Called from PROJECT_FILE.i:201.
+        Called from PROJECT_FILE.i:211.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_cmp <- j <- main.
-        Called from PROJECT_FILE.i:202.
+        Called from PROJECT_FILE.i:212.
 [value] Done for function mpz_cmp
 [value] computing for function e_acsl_fail <- j <- main.
-        Called from PROJECT_FILE.i:203.
+        Called from PROJECT_FILE.i:213.
 [value] computing for function printf <- e_acsl_fail <- j <- main.
-        Called from PROJECT_FILE.i:115.
+        Called from PROJECT_FILE.i:125.
 [value] Done for function printf
 [value] computing for function exit <- e_acsl_fail <- j <- main.
-        Called from PROJECT_FILE.i:115.
+        Called from PROJECT_FILE.i:125.
 [value] Done for function exit
 [value] Recording results for e_acsl_fail
 [value] Done for function e_acsl_fail
 [value] computing for function mpz_init_set_si <- j <- main.
-        Called from PROJECT_FILE.i:204.
+        Called from PROJECT_FILE.i:214.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_init_set_si <- j <- main.
-        Called from PROJECT_FILE.i:204.
+        Called from PROJECT_FILE.i:214.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_init_set_si <- j <- main.
-        Called from PROJECT_FILE.i:205.
+        Called from PROJECT_FILE.i:215.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_init <- j <- main.
-        Called from PROJECT_FILE.i:205.
+        Called from PROJECT_FILE.i:215.
 PROJECT_FILE.i:21:[value] Function mpz_init: postcondition got status unknown
 [value] Done for function mpz_init
 [value] computing for function mpz_add <- j <- main.
-        Called from PROJECT_FILE.i:206.
+        Called from PROJECT_FILE.i:216.
 PROJECT_FILE.i:60:[value] Function mpz_add: precondition got status valid
 PROJECT_FILE.i:61:[value] Function mpz_add: precondition got status valid
 PROJECT_FILE.i:62:[value] Function mpz_add: precondition got status valid
 [value] Done for function mpz_add
 [value] computing for function mpz_cmp <- j <- main.
-        Called from PROJECT_FILE.i:207.
+        Called from PROJECT_FILE.i:217.
 [value] Done for function mpz_cmp
 [value] computing for function e_acsl_fail <- j <- main.
-        Called from PROJECT_FILE.i:208.
+        Called from PROJECT_FILE.i:218.
 [value] computing for function printf <- e_acsl_fail <- j <- main.
-        Called from PROJECT_FILE.i:115.
+        Called from PROJECT_FILE.i:125.
 [value] Done for function printf
 [value] computing for function exit <- e_acsl_fail <- j <- main.
-        Called from PROJECT_FILE.i:115.
+        Called from PROJECT_FILE.i:125.
 [value] Done for function exit
 [value] Recording results for e_acsl_fail
 [value] Done for function e_acsl_fail
 [value] computing for function mpz_init_set_si <- j <- main.
-        Called from PROJECT_FILE.i:209.
+        Called from PROJECT_FILE.i:219.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_init_set_si <- j <- main.
-        Called from PROJECT_FILE.i:209.
+        Called from PROJECT_FILE.i:219.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_cmp <- j <- main.
-        Called from PROJECT_FILE.i:210.
+        Called from PROJECT_FILE.i:220.
 [value] Done for function mpz_cmp
 [value] computing for function e_acsl_fail <- j <- main.
-        Called from PROJECT_FILE.i:211.
+        Called from PROJECT_FILE.i:221.
 [value] computing for function printf <- e_acsl_fail <- j <- main.
-        Called from PROJECT_FILE.i:115.
+        Called from PROJECT_FILE.i:125.
 [value] Done for function printf
 [value] computing for function exit <- e_acsl_fail <- j <- main.
-        Called from PROJECT_FILE.i:115.
+        Called from PROJECT_FILE.i:125.
 [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 <- j <- main.
-        Called from PROJECT_FILE.i:212.
+        Called from PROJECT_FILE.i:222.
 [value] Done for function mpz_clear
 [value] computing for function mpz_clear <- j <- main.
-        Called from PROJECT_FILE.i:212.
+        Called from PROJECT_FILE.i:222.
 [value] Done for function mpz_clear
 [value] computing for function mpz_clear <- j <- main.
-        Called from PROJECT_FILE.i:212.
+        Called from PROJECT_FILE.i:222.
 [value] Done for function mpz_clear
 [value] computing for function mpz_clear <- j <- main.
-        Called from PROJECT_FILE.i:213.
+        Called from PROJECT_FILE.i:223.
 [value] Done for function mpz_clear
 [value] computing for function mpz_clear <- j <- main.
-        Called from PROJECT_FILE.i:213.
+        Called from PROJECT_FILE.i:223.
 [value] Done for function mpz_clear
 [value] computing for function mpz_clear <- j <- main.
-        Called from PROJECT_FILE.i:213.
+        Called from PROJECT_FILE.i:223.
 [value] Done for function mpz_clear
 [value] computing for function mpz_clear <- j <- main.
-        Called from PROJECT_FILE.i:214.
+        Called from PROJECT_FILE.i:224.
 [value] Done for function mpz_clear
 [value] computing for function mpz_clear <- j <- main.
-        Called from PROJECT_FILE.i:214.
+        Called from PROJECT_FILE.i:224.
 [value] Done for function mpz_clear
-PROJECT_FILE.i:187:[value] Function j, behavior b1: postcondition got status valid
-PROJECT_FILE.i:192:[value] Function j, behavior b2: postcondition got status valid
+PROJECT_FILE.i:197:[value] Function j, behavior b1: postcondition got status valid
+PROJECT_FILE.i:202:[value] Function j, behavior b2: postcondition got status valid
 [value] Recording results for j
 [value] Done for function j
 [value] computing for function k <- main.
-        Called from PROJECT_FILE.i:341.
-PROJECT_FILE.i:237:[value] Function k, behavior b1: assumption got status invalid; precondition not evaluated
-PROJECT_FILE.i:242:[value] Function k, behavior b2: precondition got status valid
-PROJECT_FILE.i:243:[value] Function k, behavior b2: precondition got status valid
+        Called from PROJECT_FILE.i:351.
+PROJECT_FILE.i:247:[value] Function k, behavior b1: assumption got status invalid; precondition not evaluated
+PROJECT_FILE.i:252:[value] Function k, behavior b2: precondition got status valid
+PROJECT_FILE.i:253:[value] Function k, behavior b2: precondition got status valid
 [value] computing for function mpz_init_set_si <- k <- main.
-        Called from PROJECT_FILE.i:256.
+        Called from PROJECT_FILE.i:266.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_init_set_si <- k <- main.
-        Called from PROJECT_FILE.i:257.
+        Called from PROJECT_FILE.i:267.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_cmp <- k <- main.
-        Called from PROJECT_FILE.i:257.
+        Called from PROJECT_FILE.i:267.
 [value] Done for function mpz_cmp
 [value] computing for function mpz_init_set_si <- k <- main.
-        Called from PROJECT_FILE.i:263.
+        Called from PROJECT_FILE.i:273.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_init_set_si <- k <- main.
-        Called from PROJECT_FILE.i:264.
+        Called from PROJECT_FILE.i:274.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_cmp <- k <- main.
-        Called from PROJECT_FILE.i:265.
+        Called from PROJECT_FILE.i:275.
 [value] Done for function mpz_cmp
-PROJECT_FILE.i:266:[value] assigning non deterministic value for the first time
+PROJECT_FILE.i:276:[value] assigning non deterministic value for the first time
 [value] computing for function mpz_clear <- k <- main.
-        Called from PROJECT_FILE.i:267.
+        Called from PROJECT_FILE.i:277.
 [value] Done for function mpz_clear
 [value] computing for function mpz_clear <- k <- main.
-        Called from PROJECT_FILE.i:268.
+        Called from PROJECT_FILE.i:278.
 [value] Done for function mpz_clear
 [value] computing for function e_acsl_fail <- k <- main.
-        Called from PROJECT_FILE.i:269.
+        Called from PROJECT_FILE.i:279.
 [value] computing for function printf <- e_acsl_fail <- k <- main.
-        Called from PROJECT_FILE.i:115.
+        Called from PROJECT_FILE.i:125.
 [value] Done for function printf
 [value] computing for function exit <- e_acsl_fail <- k <- main.
-        Called from PROJECT_FILE.i:115.
+        Called from PROJECT_FILE.i:125.
 [value] Done for function exit
 [value] Recording results for e_acsl_fail
 [value] Done for function e_acsl_fail
 [value] computing for function mpz_init_set_si <- k <- main.
-        Called from PROJECT_FILE.i:270.
+        Called from PROJECT_FILE.i:280.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_init_set_si <- k <- main.
-        Called from PROJECT_FILE.i:270.
+        Called from PROJECT_FILE.i:280.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_cmp <- k <- main.
-        Called from PROJECT_FILE.i:271.
+        Called from PROJECT_FILE.i:281.
 [value] Done for function mpz_cmp
 [value] computing for function mpz_init_set_si <- k <- main.
-        Called from PROJECT_FILE.i:276.
+        Called from PROJECT_FILE.i:286.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_init_set_si <- k <- main.
-        Called from PROJECT_FILE.i:277.
+        Called from PROJECT_FILE.i:287.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_cmp <- k <- main.
-        Called from PROJECT_FILE.i:278.
+        Called from PROJECT_FILE.i:288.
 [value] Done for function mpz_cmp
 [value] computing for function mpz_clear <- k <- main.
-        Called from PROJECT_FILE.i:280.
+        Called from PROJECT_FILE.i:290.
 [value] Done for function mpz_clear
 [value] computing for function mpz_clear <- k <- main.
-        Called from PROJECT_FILE.i:281.
+        Called from PROJECT_FILE.i:291.
 [value] Done for function mpz_clear
 [value] computing for function mpz_init_set_si <- k <- main.
-        Called from PROJECT_FILE.i:287.
+        Called from PROJECT_FILE.i:297.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_init_set_si <- k <- main.
-        Called from PROJECT_FILE.i:288.
+        Called from PROJECT_FILE.i:298.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_cmp <- k <- main.
-        Called from PROJECT_FILE.i:289.
+        Called from PROJECT_FILE.i:299.
 [value] Done for function mpz_cmp
 [value] computing for function mpz_clear <- k <- main.
-        Called from PROJECT_FILE.i:291.
+        Called from PROJECT_FILE.i:301.
 [value] Done for function mpz_clear
 [value] computing for function mpz_clear <- k <- main.
-        Called from PROJECT_FILE.i:292.
+        Called from PROJECT_FILE.i:302.
 [value] Done for function mpz_clear
 [value] computing for function e_acsl_fail <- k <- main.
-        Called from PROJECT_FILE.i:293.
+        Called from PROJECT_FILE.i:303.
 [value] computing for function printf <- e_acsl_fail <- k <- main.
-        Called from PROJECT_FILE.i:115.
+        Called from PROJECT_FILE.i:125.
 [value] Done for function printf
 [value] computing for function exit <- e_acsl_fail <- k <- main.
-        Called from PROJECT_FILE.i:115.
+        Called from PROJECT_FILE.i:125.
 [value] Done for function exit
 [value] Recording results for e_acsl_fail
 [value] Done for function e_acsl_fail
 [value] computing for function mpz_init_set_si <- k <- main.
-        Called from PROJECT_FILE.i:294.
+        Called from PROJECT_FILE.i:304.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_init_set_si <- k <- main.
-        Called from PROJECT_FILE.i:294.
+        Called from PROJECT_FILE.i:304.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_cmp <- k <- main.
-        Called from PROJECT_FILE.i:295.
+        Called from PROJECT_FILE.i:305.
 [value] Done for function mpz_cmp
 [value] computing for function mpz_init_set_si <- k <- main.
-        Called from PROJECT_FILE.i:300.
+        Called from PROJECT_FILE.i:310.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_init_set_si <- k <- main.
-        Called from PROJECT_FILE.i:301.
+        Called from PROJECT_FILE.i:311.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_cmp <- k <- main.
-        Called from PROJECT_FILE.i:302.
+        Called from PROJECT_FILE.i:312.
 [value] Done for function mpz_cmp
 [value] computing for function mpz_clear <- k <- main.
-        Called from PROJECT_FILE.i:304.
+        Called from PROJECT_FILE.i:314.
 [value] Done for function mpz_clear
 [value] computing for function mpz_clear <- k <- main.
-        Called from PROJECT_FILE.i:305.
+        Called from PROJECT_FILE.i:315.
 [value] Done for function mpz_clear
 [value] computing for function mpz_init_set_si <- k <- main.
-        Called from PROJECT_FILE.i:313.
+        Called from PROJECT_FILE.i:323.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_init_set_si <- k <- main.
-        Called from PROJECT_FILE.i:314.
+        Called from PROJECT_FILE.i:324.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_init <- k <- main.
-        Called from PROJECT_FILE.i:315.
+        Called from PROJECT_FILE.i:325.
 [value] Done for function mpz_init
 [value] computing for function mpz_add <- k <- main.
-        Called from PROJECT_FILE.i:316.
+        Called from PROJECT_FILE.i:326.
 [value] Done for function mpz_add
 [value] computing for function mpz_init_set_si <- k <- main.
-        Called from PROJECT_FILE.i:317.
+        Called from PROJECT_FILE.i:327.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_cmp <- k <- main.
-        Called from PROJECT_FILE.i:318.
+        Called from PROJECT_FILE.i:328.
 [value] Done for function mpz_cmp
 [value] computing for function mpz_clear <- k <- main.
-        Called from PROJECT_FILE.i:320.
+        Called from PROJECT_FILE.i:330.
 [value] Done for function mpz_clear
 [value] computing for function mpz_clear <- k <- main.
-        Called from PROJECT_FILE.i:321.
+        Called from PROJECT_FILE.i:331.
 [value] Done for function mpz_clear
 [value] computing for function mpz_clear <- k <- main.
-        Called from PROJECT_FILE.i:322.
+        Called from PROJECT_FILE.i:332.
 [value] Done for function mpz_clear
 [value] computing for function mpz_clear <- k <- main.
-        Called from PROJECT_FILE.i:323.
+        Called from PROJECT_FILE.i:333.
 [value] Done for function mpz_clear
 [value] computing for function e_acsl_fail <- k <- main.
-        Called from PROJECT_FILE.i:324.
+        Called from PROJECT_FILE.i:334.
 [value] computing for function printf <- e_acsl_fail <- k <- main.
-        Called from PROJECT_FILE.i:115.
+        Called from PROJECT_FILE.i:125.
 [value] Done for function printf
 [value] computing for function exit <- e_acsl_fail <- k <- main.
-        Called from PROJECT_FILE.i:115.
+        Called from PROJECT_FILE.i:125.
 [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 <- k <- main.
-        Called from PROJECT_FILE.i:325.
+        Called from PROJECT_FILE.i:335.
 [value] Done for function mpz_clear
 [value] computing for function mpz_clear <- k <- main.
-        Called from PROJECT_FILE.i:325.
+        Called from PROJECT_FILE.i:335.
 [value] Done for function mpz_clear
 [value] computing for function mpz_clear <- k <- main.
-        Called from PROJECT_FILE.i:325.
+        Called from PROJECT_FILE.i:335.
 [value] Done for function mpz_clear
 [value] computing for function mpz_clear <- k <- main.
-        Called from PROJECT_FILE.i:326.
+        Called from PROJECT_FILE.i:336.
 [value] Done for function mpz_clear
 [value] computing for function mpz_clear <- k <- main.
-        Called from PROJECT_FILE.i:326.
+        Called from PROJECT_FILE.i:336.
 [value] Done for function mpz_clear
 [value] computing for function mpz_clear <- k <- main.
-        Called from PROJECT_FILE.i:326.
+        Called from PROJECT_FILE.i:336.
 [value] Done for function mpz_clear
 [value] Recording results for k
 [value] Done for function k
diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_addrOf.c b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_addrOf.c
index 55773197f9b..7361611b9f4 100644
--- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_addrOf.c
+++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_addrOf.c
@@ -30,7 +30,7 @@ __inline static int __gmpz_fits_ulong_p(mpz_srcptr __gmp_z) __attribute__((
 __pure__));
 __inline static int __gmpz_fits_ushort_p(mpz_srcptr __gmp_z) __attribute__((
 __pure__));
-__inline static unsigned long __gmpz_get_ui(mpz_srcptr __gmp_z) __attribute__((
+__inline static unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z) __attribute__((
 __pure__));
 __inline static mp_limb_t __gmpz_getlimbn(mpz_srcptr __gmp_z,
                                           mp_size_t __gmp_n) __attribute__((
@@ -153,16 +153,18 @@ __inline static int __gmpz_fits_ushort_p(mpz_srcptr __gmp_z)
   return (__retres);
 }
 
-__inline static unsigned long __gmpz_get_ui(mpz_srcptr __gmp_z) __attribute__((
+/*@ requires \valid(z);
+    assigns \nothing;  */
+__inline static unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z) __attribute__((
 __pure__));
-__inline static unsigned long __gmpz_get_ui(mpz_srcptr __gmp_z)
+__inline static unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z)
 {
   mp_ptr __gmp_p;
   mp_size_t __gmp_n;
   mp_limb_t __gmp_l;
   mp_limb_t tmp;
-  __gmp_p = __gmp_z->_mp_d;
-  __gmp_n = (long)__gmp_z->_mp_size;
+  __gmp_p = z->_mp_d;
+  __gmp_n = (long)z->_mp_size;
   __gmp_l = *(__gmp_p + 0);
   if (__gmp_n != (mp_size_t)0) { tmp = __gmp_l; }
   else { tmp = (unsigned long)0; }
diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_arith.c b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_arith.c
index b2bed027f32..ec1b8c15538 100644
--- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_arith.c
+++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_arith.c
@@ -58,7 +58,7 @@ __inline static int __gmpz_fits_ulong_p(mpz_srcptr __gmp_z) __attribute__((
 __pure__));
 __inline static int __gmpz_fits_ushort_p(mpz_srcptr __gmp_z) __attribute__((
 __pure__));
-__inline static unsigned long __gmpz_get_ui(mpz_srcptr __gmp_z) __attribute__((
+__inline static unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z) __attribute__((
 __pure__));
 __inline static mp_limb_t __gmpz_getlimbn(mpz_srcptr __gmp_z,
                                           mp_size_t __gmp_n) __attribute__((
@@ -206,16 +206,18 @@ __inline static int __gmpz_fits_ushort_p(mpz_srcptr __gmp_z)
   return (__retres);
 }
 
-__inline static unsigned long __gmpz_get_ui(mpz_srcptr __gmp_z) __attribute__((
+/*@ requires \valid(z);
+    assigns \nothing;  */
+__inline static unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z) __attribute__((
 __pure__));
-__inline static unsigned long __gmpz_get_ui(mpz_srcptr __gmp_z)
+__inline static unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z)
 {
   mp_ptr __gmp_p;
   mp_size_t __gmp_n;
   mp_limb_t __gmp_l;
   mp_limb_t tmp;
-  __gmp_p = __gmp_z->_mp_d;
-  __gmp_n = (long)__gmp_z->_mp_size;
+  __gmp_p = z->_mp_d;
+  __gmp_n = (long)z->_mp_size;
   __gmp_l = *(__gmp_p + 0);
   if (__gmp_n != (mp_size_t)0) { tmp = __gmp_l; }
   else { tmp = (unsigned long)0; }
diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_array.c b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_array.c
new file mode 100644
index 00000000000..9c9e4faecf3
--- /dev/null
+++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_array.c
@@ -0,0 +1,604 @@
+/* Generated by Frama-C */
+typedef unsigned long size_t;
+typedef unsigned long mp_limb_t;
+struct __anonstruct___mpz_struct_6 {
+   int _mp_alloc ;
+   int _mp_size ;
+   mp_limb_t *_mp_d ;
+};
+typedef struct __anonstruct___mpz_struct_6 __mpz_struct;
+typedef __mpz_struct mpz_t[1];
+typedef mp_limb_t *mp_ptr;
+typedef mp_limb_t const *mp_srcptr;
+typedef long mp_size_t;
+struct __anonstruct___mpq_struct_7 {
+   __mpz_struct _mp_num ;
+   __mpz_struct _mp_den ;
+};
+typedef struct __anonstruct___mpq_struct_7 __mpq_struct;
+typedef __mpz_struct const *mpz_srcptr;
+typedef __mpz_struct *mpz_ptr;
+typedef __mpq_struct const *mpq_srcptr;
+typedef __mpq_struct *mpq_ptr;
+/* compiler builtin: 
+   long __builtin_expect(long, long);   */
+/*@ assigns \nothing;  */
+extern int printf(char const * __restrict __format , ...);
+__inline static void __gmpz_abs(mpz_ptr __gmp_w, mpz_srcptr __gmp_u);
+/*@ requires \valid(x);
+    assigns *x;  */
+extern void __gmpz_clear(__mpz_struct * /*[1]*/ x);
+__inline static int __gmpz_fits_uint_p(mpz_srcptr __gmp_z) __attribute__((
+__pure__));
+__inline static int __gmpz_fits_ulong_p(mpz_srcptr __gmp_z) __attribute__((
+__pure__));
+__inline static int __gmpz_fits_ushort_p(mpz_srcptr __gmp_z) __attribute__((
+__pure__));
+/*@ requires \valid(z);
+    assigns \nothing;  */
+extern long __gmpz_get_si(__mpz_struct const * /*[1]*/ z) __attribute__((
+__pure__));
+__inline static unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z) __attribute__((
+__pure__));
+__inline static mp_limb_t __gmpz_getlimbn(mpz_srcptr __gmp_z,
+                                          mp_size_t __gmp_n) __attribute__((
+__pure__));
+/*@ ensures \valid(\old(z));
+    assigns *z;  */
+extern void __gmpz_init_set_si(__mpz_struct * /*[1]*/ z, long n);
+__inline static void __gmpz_neg(__mpz_struct * /*[1]*/ z1,
+                                __mpz_struct const * /*[1]*/ z2);
+__inline static int __gmpz_perfect_square_p(mpz_srcptr __gmp_a) __attribute__((
+__pure__));
+__inline static unsigned long __gmpz_popcount(mpz_srcptr __gmp_u) __attribute__((
+__pure__));
+extern void __gmpz_set(mpz_ptr, mpz_srcptr);
+__inline static void __gmpz_set_q(mpz_ptr __gmp_w, mpq_srcptr __gmp_u);
+__inline static size_t __gmpz_size(mpz_srcptr __gmp_z) __attribute__((
+__pure__));
+extern void __gmpz_tdiv_q(mpz_ptr, mpz_srcptr, mpz_srcptr);
+__inline static void __gmpq_abs(mpq_ptr __gmp_w, mpq_srcptr __gmp_u);
+__inline static void __gmpq_neg(mpq_ptr __gmp_w, mpq_srcptr __gmp_u);
+extern void __gmpq_set(mpq_ptr, mpq_srcptr);
+__inline static mp_limb_t __gmpn_add(mp_ptr __gmp_wp, mp_srcptr __gmp_xp,
+                                     mp_size_t __gmp_xsize,
+                                     mp_srcptr __gmp_yp,
+                                     mp_size_t __gmp_ysize);
+__inline static mp_limb_t __gmpn_add_1(mp_ptr __gmp_dst, mp_srcptr __gmp_src,
+                                       mp_size_t __gmp_size,
+                                       mp_limb_t __gmp_n);
+extern mp_limb_t __gmpn_add_n(mp_ptr, mp_srcptr, mp_srcptr, mp_size_t);
+__inline static int __gmpn_cmp(mp_srcptr __gmp_xp, mp_srcptr __gmp_yp,
+                               mp_size_t __gmp_size) __attribute__((__pure__));
+__inline static mp_limb_t __gmpn_neg_n(mp_ptr __gmp_rp, mp_srcptr __gmp_up,
+                                       mp_size_t __gmp_n);
+extern int __gmpn_perfect_square_p(mp_srcptr, mp_size_t) __attribute__((
+__pure__));
+extern unsigned long __gmpn_popcount(mp_srcptr, mp_size_t) __attribute__((
+__pure__));
+__inline static mp_limb_t __gmpn_sub(mp_ptr __gmp_wp, mp_srcptr __gmp_xp,
+                                     mp_size_t __gmp_xsize,
+                                     mp_srcptr __gmp_yp,
+                                     mp_size_t __gmp_ysize);
+__inline static mp_limb_t __gmpn_sub_1(mp_ptr __gmp_dst, mp_srcptr __gmp_src,
+                                       mp_size_t __gmp_size,
+                                       mp_limb_t __gmp_n);
+extern mp_limb_t __gmpn_sub_n(mp_ptr, mp_srcptr, mp_srcptr, mp_size_t);
+__inline static void __gmpz_abs(mpz_ptr __gmp_w, mpz_srcptr __gmp_u)
+{
+  if (__gmp_w != __gmp_u) { __gmpz_set(__gmp_w,__gmp_u); }
+  if (__gmp_w->_mp_size >= 0) { __gmp_w->_mp_size = __gmp_w->_mp_size; }
+  else { __gmp_w->_mp_size = - __gmp_w->_mp_size; }
+  return;
+}
+
+__inline static int __gmpz_fits_uint_p(mpz_srcptr __gmp_z) __attribute__((
+__pure__));
+__inline static int __gmpz_fits_uint_p(mpz_srcptr __gmp_z)
+{
+  int __retres;
+  mp_size_t __gmp_n;
+  mp_ptr __gmp_p;
+  int tmp;
+  __gmp_n = (long)__gmp_z->_mp_size;
+  __gmp_p = __gmp_z->_mp_d;
+  if (__gmp_n == (mp_size_t)0) { tmp = 1; }
+  else {
+    if (__gmp_n == (mp_size_t)1) {
+      if (*(__gmp_p + 0) <= (mp_limb_t)(~ ((unsigned int)0))) { tmp = 1; }
+      else { tmp = 0; }
+    }
+    else { tmp = 0; }
+  }
+  __retres = tmp;
+  goto return_label;
+  return_label: /* internal */ 
+  return (__retres);
+}
+
+__inline static int __gmpz_fits_ulong_p(mpz_srcptr __gmp_z) __attribute__((
+__pure__));
+__inline static int __gmpz_fits_ulong_p(mpz_srcptr __gmp_z)
+{
+  int __retres;
+  mp_size_t __gmp_n;
+  mp_ptr __gmp_p;
+  int tmp;
+  __gmp_n = (long)__gmp_z->_mp_size;
+  __gmp_p = __gmp_z->_mp_d;
+  if (__gmp_n == (mp_size_t)0) { tmp = 1; }
+  else {
+    if (__gmp_n == (mp_size_t)1) {
+      if (*(__gmp_p + 0) <= ~ ((unsigned long)0)) { tmp = 1; }
+      else { tmp = 0; }
+    }
+    else { tmp = 0; }
+  }
+  __retres = tmp;
+  goto return_label;
+  return_label: /* internal */ 
+  return (__retres);
+}
+
+__inline static int __gmpz_fits_ushort_p(mpz_srcptr __gmp_z) __attribute__((
+__pure__));
+__inline static int __gmpz_fits_ushort_p(mpz_srcptr __gmp_z)
+{
+  int __retres;
+  mp_size_t __gmp_n;
+  mp_ptr __gmp_p;
+  int tmp;
+  __gmp_n = (long)__gmp_z->_mp_size;
+  __gmp_p = __gmp_z->_mp_d;
+  if (__gmp_n == (mp_size_t)0) { tmp = 1; }
+  else {
+    if (__gmp_n == (mp_size_t)1) {
+      if (*(__gmp_p + 0) <= (mp_limb_t)((unsigned short)(~ 0))) { tmp = 1; }
+      else { tmp = 0; }
+    }
+    else { tmp = 0; }
+  }
+  __retres = tmp;
+  goto return_label;
+  return_label: /* internal */ 
+  return (__retres);
+}
+
+/*@ requires \valid(z);
+    assigns \nothing;  */
+__inline static unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z) __attribute__((
+__pure__));
+__inline static unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z)
+{
+  mp_ptr __gmp_p;
+  mp_size_t __gmp_n;
+  mp_limb_t __gmp_l;
+  mp_limb_t tmp;
+  __gmp_p = z->_mp_d;
+  __gmp_n = (long)z->_mp_size;
+  __gmp_l = *(__gmp_p + 0);
+  if (__gmp_n != (mp_size_t)0) { tmp = __gmp_l; }
+  else { tmp = (unsigned long)0; }
+  return (tmp);
+}
+
+__inline static mp_limb_t __gmpz_getlimbn(mpz_srcptr __gmp_z,
+                                          mp_size_t __gmp_n) __attribute__((
+__pure__));
+__inline static mp_limb_t __gmpz_getlimbn(mpz_srcptr __gmp_z,
+                                          mp_size_t __gmp_n)
+{
+  mp_limb_t __gmp_result;
+  long tmp_1;
+  int tmp_0;
+  __gmp_result = (unsigned long)0;
+  { /*undefined sequence*/ 
+    if (__gmp_n >= (mp_size_t)0) {
+      int tmp;
+      { /*undefined sequence*/ 
+        if (__gmp_z->_mp_size >= 0) { tmp = __gmp_z->_mp_size; }
+        else { tmp = - __gmp_z->_mp_size; }
+        ;
+      }
+      if (__gmp_n < (mp_size_t)tmp) { tmp_0 = 1; }
+      else { tmp_0 = 0; }
+    }
+    else { tmp_0 = 0; }
+    tmp_1 = __builtin_expect((long)(tmp_0 != 0),(long)1);
+  }
+  if (tmp_1) { __gmp_result = *(__gmp_z->_mp_d + __gmp_n); }
+  return (__gmp_result);
+}
+
+/*@ requires \valid(z1);
+    requires \valid(z2);
+    assigns *z1;  */
+__inline static void __gmpz_neg(__mpz_struct * /*[1]*/ z1,
+                                __mpz_struct const * /*[1]*/ z2)
+{
+  if (z1 != z2) { __gmpz_set(z1,z2); }
+  z1->_mp_size = - z1->_mp_size;
+  return;
+}
+
+__inline static int __gmpz_perfect_square_p(mpz_srcptr __gmp_a) __attribute__((
+__pure__));
+__inline static int __gmpz_perfect_square_p(mpz_srcptr __gmp_a)
+{
+  mp_size_t __gmp_asize;
+  int __gmp_result;
+  long tmp;
+  __gmp_asize = (long)__gmp_a->_mp_size;
+  __gmp_result = __gmp_asize >= (mp_size_t)0;
+  tmp = __builtin_expect((long)((__gmp_asize > (mp_size_t)0) != 0),(long)1);
+  if (tmp) {
+    __gmp_result = __gmpn_perfect_square_p((mp_limb_t const *)__gmp_a->_mp_d,
+                                           __gmp_asize);
+  }
+  return (__gmp_result);
+}
+
+__inline static unsigned long __gmpz_popcount(mpz_srcptr __gmp_u) __attribute__((
+__pure__));
+__inline static unsigned long __gmpz_popcount(mpz_srcptr __gmp_u)
+{
+  mp_size_t __gmp_usize;
+  unsigned long __gmp_result;
+  long tmp;
+  __gmp_usize = (long)__gmp_u->_mp_size;
+  if (__gmp_usize < (mp_size_t)0) { __gmp_result = ~ ((unsigned long)0); }
+  else { __gmp_result = (unsigned long)0; }
+  tmp = __builtin_expect((long)((__gmp_usize > (mp_size_t)0) != 0),(long)1);
+  if (tmp) {
+    __gmp_result = __gmpn_popcount((mp_limb_t const *)__gmp_u->_mp_d,
+                                   __gmp_usize);
+  }
+  return (__gmp_result);
+}
+
+__inline static void __gmpz_set_q(mpz_ptr __gmp_w, mpq_srcptr __gmp_u)
+{
+  __gmpz_tdiv_q(__gmp_w,& __gmp_u->_mp_num,& __gmp_u->_mp_den);
+  return;
+}
+
+__inline static size_t __gmpz_size(mpz_srcptr __gmp_z) __attribute__((
+__pure__));
+__inline static size_t __gmpz_size(mpz_srcptr __gmp_z)
+{
+  size_t __retres;
+  int tmp;
+  if (__gmp_z->_mp_size >= 0) { tmp = __gmp_z->_mp_size; }
+  else { tmp = - __gmp_z->_mp_size; }
+  __retres = (unsigned long)tmp;
+  return (__retres);
+}
+
+__inline static void __gmpq_abs(mpq_ptr __gmp_w, mpq_srcptr __gmp_u)
+{
+  if (__gmp_w != __gmp_u) { __gmpq_set(__gmp_w,__gmp_u); }
+  if (__gmp_w->_mp_num._mp_size >= 0) {
+    __gmp_w->_mp_num._mp_size = __gmp_w->_mp_num._mp_size;
+  }
+  else { __gmp_w->_mp_num._mp_size = - __gmp_w->_mp_num._mp_size; }
+  return;
+}
+
+__inline static void __gmpq_neg(mpq_ptr __gmp_w, mpq_srcptr __gmp_u)
+{
+  if (__gmp_w != __gmp_u) { __gmpq_set(__gmp_w,__gmp_u); }
+  __gmp_w->_mp_num._mp_size = - __gmp_w->_mp_num._mp_size;
+  return;
+}
+
+__inline static mp_limb_t __gmpn_add(mp_ptr __gmp_wp, mp_srcptr __gmp_xp,
+                                     mp_size_t __gmp_xsize,
+                                     mp_srcptr __gmp_yp,
+                                     mp_size_t __gmp_ysize)
+{
+  mp_limb_t __gmp_c;
+  while (1) {
+    { mp_size_t __gmp_i; mp_limb_t __gmp_x; __gmp_i = __gmp_ysize;
+      if (__gmp_i != (mp_size_t)0) {
+        mp_limb_t tmp_1;
+        tmp_1 = __gmpn_add_n(__gmp_wp,__gmp_xp,__gmp_yp,__gmp_i);
+        if (tmp_1) {
+          while (1) {
+            mp_size_t tmp;
+            mp_limb_t tmp_0;
+            if (__gmp_i >= __gmp_xsize) {
+              __gmp_c = (unsigned long)1;
+              goto __gmp_done;
+            }
+            __gmp_x = *(__gmp_xp + __gmp_i);
+            { /*undefined sequence*/ 
+              tmp = __gmp_i;
+              __gmp_i += (mp_size_t)1;
+              tmp_0 = (__gmp_x + (mp_limb_t)1) & (~ ((unsigned long)0) >> 0);
+              *(__gmp_wp + tmp) = tmp_0;
+            }
+            if (! (tmp_0 == (mp_limb_t)0)) { break; }
+          }
+        }
+      }
+      if (__gmp_wp != __gmp_xp) {
+        while (1) {
+          { mp_size_t __gmp_j; __gmp_j = __gmp_i;
+            while (__gmp_j < __gmp_xsize) {
+              *(__gmp_wp + __gmp_j) = *(__gmp_xp + __gmp_j);
+              __gmp_j += (mp_size_t)1;
+            }
+          }
+          
+          break;
+        }
+      } __gmp_c = (unsigned long)0; __gmp_done: ;
+    }
+    
+    break;
+  }
+  return (__gmp_c);
+}
+
+__inline static mp_limb_t __gmpn_add_1(mp_ptr __gmp_dst, mp_srcptr __gmp_src,
+                                       mp_size_t __gmp_size,
+                                       mp_limb_t __gmp_n)
+{
+  mp_limb_t __gmp_c;
+  while (1) {
+    { mp_size_t __gmp_i; mp_limb_t __gmp_x; mp_limb_t __gmp_r;
+      __gmp_x = *(__gmp_src + 0); __gmp_r = __gmp_x + __gmp_n;
+      *(__gmp_dst + 0) = __gmp_r;
+      if (__gmp_r < __gmp_n) {
+        __gmp_c = (unsigned long)1;
+        __gmp_i = (long)1;
+        while (__gmp_i < __gmp_size) {
+          __gmp_x = *(__gmp_src + __gmp_i);
+          __gmp_r = __gmp_x + (mp_limb_t)1;
+          *(__gmp_dst + __gmp_i) = __gmp_r;
+          __gmp_i += (mp_size_t)1;
+          if (! (__gmp_r < (mp_limb_t)1)) {
+            if (__gmp_src != __gmp_dst) {
+              while (1) {
+                { mp_size_t __gmp_j; __gmp_j = __gmp_i;
+                  while (__gmp_j < __gmp_size) {
+                    *(__gmp_dst + __gmp_j) = *(__gmp_src + __gmp_j);
+                    __gmp_j += (mp_size_t)1;
+                  }
+                }
+                
+                break;
+              }
+            }
+            __gmp_c = (unsigned long)0;
+            break;
+          }
+        }
+      }
+      else {
+        if (__gmp_src != __gmp_dst) {
+          while (1) {
+            { mp_size_t __gmp_j_0; __gmp_j_0 = (long)1;
+              while (__gmp_j_0 < __gmp_size) {
+                *(__gmp_dst + __gmp_j_0) = *(__gmp_src + __gmp_j_0);
+                __gmp_j_0 += (mp_size_t)1;
+              }
+            }
+            
+            break;
+          }
+        }
+        __gmp_c = (unsigned long)0;
+      }
+    }
+    
+    break;
+  }
+  return (__gmp_c);
+}
+
+__inline static int __gmpn_cmp(mp_srcptr __gmp_xp, mp_srcptr __gmp_yp,
+                               mp_size_t __gmp_size) __attribute__((__pure__));
+__inline static int __gmpn_cmp(mp_srcptr __gmp_xp, mp_srcptr __gmp_yp,
+                               mp_size_t __gmp_size)
+{
+  int __gmp_result;
+  while (1) {
+    { mp_size_t __gmp_i; mp_limb_t __gmp_x; mp_limb_t __gmp_y;
+      __gmp_result = 0; __gmp_i = __gmp_size;
+      while (1) {
+        __gmp_i -= (mp_size_t)1;
+        if (! (__gmp_i >= (mp_size_t)0)) { break; }
+        __gmp_x = *(__gmp_xp + __gmp_i);
+        __gmp_y = *(__gmp_yp + __gmp_i);
+        if (__gmp_x != __gmp_y) {
+          if (__gmp_x > __gmp_y) { __gmp_result = 1; }
+          else { __gmp_result = -1; }
+          break;
+        }
+      }
+    }
+    
+    break;
+  }
+  return (__gmp_result);
+}
+
+__inline static mp_limb_t __gmpn_sub(mp_ptr __gmp_wp, mp_srcptr __gmp_xp,
+                                     mp_size_t __gmp_xsize,
+                                     mp_srcptr __gmp_yp,
+                                     mp_size_t __gmp_ysize)
+{
+  mp_limb_t __gmp_c;
+  while (1) {
+    { mp_size_t __gmp_i; mp_limb_t __gmp_x; __gmp_i = __gmp_ysize;
+      if (__gmp_i != (mp_size_t)0) {
+        mp_limb_t tmp_0;
+        tmp_0 = __gmpn_sub_n(__gmp_wp,__gmp_xp,__gmp_yp,__gmp_i);
+        if (tmp_0) {
+          while (1) {
+            mp_size_t tmp;
+            if (__gmp_i >= __gmp_xsize) {
+              __gmp_c = (unsigned long)1;
+              goto __gmp_done;
+            }
+            __gmp_x = *(__gmp_xp + __gmp_i);
+            { /*undefined sequence*/ 
+              tmp = __gmp_i;
+              __gmp_i += (mp_size_t)1;
+              *(__gmp_wp + tmp) = (__gmp_x - (mp_limb_t)1) & (~ ((unsigned long)0) >> 0);
+            }
+            if (! (__gmp_x == (mp_limb_t)0)) { break; }
+          }
+        }
+      }
+      if (__gmp_wp != __gmp_xp) {
+        while (1) {
+          { mp_size_t __gmp_j; __gmp_j = __gmp_i;
+            while (__gmp_j < __gmp_xsize) {
+              *(__gmp_wp + __gmp_j) = *(__gmp_xp + __gmp_j);
+              __gmp_j += (mp_size_t)1;
+            }
+          }
+          
+          break;
+        }
+      } __gmp_c = (unsigned long)0; __gmp_done: ;
+    }
+    
+    break;
+  }
+  return (__gmp_c);
+}
+
+__inline static mp_limb_t __gmpn_sub_1(mp_ptr __gmp_dst, mp_srcptr __gmp_src,
+                                       mp_size_t __gmp_size,
+                                       mp_limb_t __gmp_n)
+{
+  mp_limb_t __gmp_c;
+  while (1) {
+    { mp_size_t __gmp_i; mp_limb_t __gmp_x; mp_limb_t __gmp_r;
+      __gmp_x = *(__gmp_src + 0); __gmp_r = __gmp_x - __gmp_n;
+      *(__gmp_dst + 0) = __gmp_r;
+      if (__gmp_x < __gmp_n) {
+        __gmp_c = (unsigned long)1;
+        __gmp_i = (long)1;
+        while (__gmp_i < __gmp_size) {
+          __gmp_x = *(__gmp_src + __gmp_i);
+          __gmp_r = __gmp_x - (mp_limb_t)1;
+          *(__gmp_dst + __gmp_i) = __gmp_r;
+          __gmp_i += (mp_size_t)1;
+          if (! (__gmp_x < (mp_limb_t)1)) {
+            if (__gmp_src != __gmp_dst) {
+              while (1) {
+                { mp_size_t __gmp_j; __gmp_j = __gmp_i;
+                  while (__gmp_j < __gmp_size) {
+                    *(__gmp_dst + __gmp_j) = *(__gmp_src + __gmp_j);
+                    __gmp_j += (mp_size_t)1;
+                  }
+                }
+                
+                break;
+              }
+            }
+            __gmp_c = (unsigned long)0;
+            break;
+          }
+        }
+      }
+      else {
+        if (__gmp_src != __gmp_dst) {
+          while (1) {
+            { mp_size_t __gmp_j_0; __gmp_j_0 = (long)1;
+              while (__gmp_j_0 < __gmp_size) {
+                *(__gmp_dst + __gmp_j_0) = *(__gmp_src + __gmp_j_0);
+                __gmp_j_0 += (mp_size_t)1;
+              }
+            }
+            
+            break;
+          }
+        }
+        __gmp_c = (unsigned long)0;
+      }
+    }
+    
+    break;
+  }
+  return (__gmp_c);
+}
+
+__inline static mp_limb_t __gmpn_neg_n(mp_ptr __gmp_rp, mp_srcptr __gmp_up,
+                                       mp_size_t __gmp_n)
+{
+  mp_limb_t __gmp_ul;
+  mp_limb_t __gmp_cy;
+  __gmp_cy = (unsigned long)0;
+  while (1) {
+    { mp_srcptr tmp; mp_ptr tmp_0;
+      { /*undefined sequence*/  tmp = __gmp_up; __gmp_up ++; __gmp_ul = *tmp;
+      }
+      { /*undefined sequence*/ 
+        tmp_0 = __gmp_rp;
+        __gmp_rp ++;
+        *tmp_0 = - __gmp_ul - __gmp_cy;
+      } __gmp_cy |= (unsigned long)(__gmp_ul != (mp_limb_t)0);
+    }
+    
+    __gmp_n -= (mp_size_t)1;
+    if (! (__gmp_n != (mp_size_t)0)) { break; }
+  }
+  return (__gmp_cy);
+}
+
+/*@ terminates \false;
+    ensures \false;
+    assigns \nothing;  */
+extern void exit(int status);
+void e_acsl_fail(char *msg)
+{
+  printf((char const *)"%s\n",msg);
+  exit(1);
+  return;
+}
+
+int T1[3];
+int T2[4];
+int main(void)
+{
+  int __retres;
+  { int i; i = 0; while (1) { if (! (i < 3)) { break; } T1[i] = i; i ++; } }
+  
+  { int i_0; i_0 = 0;
+    while (1) { if (! (i_0 < 4)) { break; } T2[i_0] = 2 * i_0; i_0 ++; }
+  }
+  
+  /*@ assert T1[0] ≡ T2[0]; */ ;
+  { mpz_t e_acsl_1; long e_acsl_2; mpz_t e_acsl_3; long e_acsl_4;
+    __gmpz_init_set_si((__mpz_struct *)(e_acsl_1),(long)0);
+    e_acsl_2 = __gmpz_get_si((__mpz_struct const *)(e_acsl_1));
+    __gmpz_init_set_si((__mpz_struct *)(e_acsl_3),(long)0);
+    e_acsl_4 = __gmpz_get_si((__mpz_struct const *)(e_acsl_3));
+    if (! (T1[(int)e_acsl_2] == T2[(int)e_acsl_4])) {
+      e_acsl_fail((char *)"(T1[0] == T2[0])");
+    } __gmpz_clear((__mpz_struct *)(e_acsl_1));
+    __gmpz_clear((__mpz_struct *)(e_acsl_3));
+  }
+  
+  /*@ assert T1[1] ≢ T2[1]; */ ;
+  { mpz_t e_acsl_5; long e_acsl_6; mpz_t e_acsl_7; long e_acsl_8;
+    __gmpz_init_set_si((__mpz_struct *)(e_acsl_5),(long)1);
+    e_acsl_6 = __gmpz_get_si((__mpz_struct const *)(e_acsl_5));
+    __gmpz_init_set_si((__mpz_struct *)(e_acsl_7),(long)1);
+    e_acsl_8 = __gmpz_get_si((__mpz_struct const *)(e_acsl_7));
+    if (! (T1[(int)e_acsl_6] != T2[(int)e_acsl_8])) {
+      e_acsl_fail((char *)"(T1[1] != T2[1])");
+    } __gmpz_clear((__mpz_struct *)(e_acsl_5));
+    __gmpz_clear((__mpz_struct *)(e_acsl_7));
+  }
+  
+  __retres = 0;
+  return (__retres);
+}
+
+
diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_cast.c b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_cast.c
index 35e5f2596d2..dfc83898c6d 100644
--- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_cast.c
+++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_cast.c
@@ -7,6 +7,7 @@ struct __anonstruct___mpz_struct_6 {
    mp_limb_t *_mp_d ;
 };
 typedef struct __anonstruct___mpz_struct_6 __mpz_struct;
+typedef __mpz_struct mpz_t[1];
 typedef mp_limb_t *mp_ptr;
 typedef mp_limb_t const *mp_srcptr;
 typedef long mp_size_t;
@@ -24,17 +25,27 @@ typedef __mpq_struct *mpq_ptr;
 /*@ assigns \nothing;  */
 extern int printf(char const * __restrict __format , ...);
 __inline static void __gmpz_abs(mpz_ptr __gmp_w, mpz_srcptr __gmp_u);
+/*@ requires \valid(x);
+    assigns *x;  */
+extern void __gmpz_clear(__mpz_struct * /*[1]*/ x);
 __inline static int __gmpz_fits_uint_p(mpz_srcptr __gmp_z) __attribute__((
 __pure__));
 __inline static int __gmpz_fits_ulong_p(mpz_srcptr __gmp_z) __attribute__((
 __pure__));
 __inline static int __gmpz_fits_ushort_p(mpz_srcptr __gmp_z) __attribute__((
 __pure__));
-__inline static unsigned long __gmpz_get_ui(mpz_srcptr __gmp_z) __attribute__((
+/*@ requires \valid(z);
+    assigns \nothing;  */
+extern long __gmpz_get_si(__mpz_struct const * /*[1]*/ z) __attribute__((
+__pure__));
+__inline static unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z) __attribute__((
 __pure__));
 __inline static mp_limb_t __gmpz_getlimbn(mpz_srcptr __gmp_z,
                                           mp_size_t __gmp_n) __attribute__((
 __pure__));
+/*@ ensures \valid(\old(z));
+    assigns *z;  */
+extern void __gmpz_init_set_si(__mpz_struct * /*[1]*/ z, long n);
 __inline static void __gmpz_neg(__mpz_struct * /*[1]*/ z1,
                                 __mpz_struct const * /*[1]*/ z2);
 __inline static int __gmpz_perfect_square_p(mpz_srcptr __gmp_a) __attribute__((
@@ -153,16 +164,18 @@ __inline static int __gmpz_fits_ushort_p(mpz_srcptr __gmp_z)
   return (__retres);
 }
 
-__inline static unsigned long __gmpz_get_ui(mpz_srcptr __gmp_z) __attribute__((
+/*@ requires \valid(z);
+    assigns \nothing;  */
+__inline static unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z) __attribute__((
 __pure__));
-__inline static unsigned long __gmpz_get_ui(mpz_srcptr __gmp_z)
+__inline static unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z)
 {
   mp_ptr __gmp_p;
   mp_size_t __gmp_n;
   mp_limb_t __gmp_l;
   mp_limb_t tmp;
-  __gmp_p = __gmp_z->_mp_d;
-  __gmp_n = (long)__gmp_z->_mp_size;
+  __gmp_p = z->_mp_d;
+  __gmp_n = (long)z->_mp_size;
   __gmp_l = *(__gmp_p + 0);
   if (__gmp_n != (mp_size_t)0) { tmp = __gmp_l; }
   else { tmp = (unsigned long)0; }
@@ -560,6 +573,23 @@ int main(void)
   if (! ((int)x == y)) { e_acsl_fail((char *)"((int)x == y)"); }
   /*@ assert x ≡ (long)y; */ ;
   if (! (x == (long)y)) { e_acsl_fail((char *)"(x == (long)y)"); }
+  /*@ assert y ≡ (int)0; */ ;
+  { mpz_t e_acsl_1; long e_acsl_2;
+    __gmpz_init_set_si((__mpz_struct *)(e_acsl_1),(long)0);
+    e_acsl_2 = __gmpz_get_si((__mpz_struct const *)(e_acsl_1));
+    if (! (y == (int)e_acsl_2)) { e_acsl_fail((char *)"(y == (int)0)"); }
+    __gmpz_clear((__mpz_struct *)(e_acsl_1));
+  }
+  
+  /*@ assert (unsigned int)y ≡ (unsigned int)0; */ ;
+  { mpz_t e_acsl_3; unsigned long e_acsl_4;
+    __gmpz_init_set_si((__mpz_struct *)(e_acsl_3),(long)0);
+    e_acsl_4 = __gmpz_get_ui((__mpz_struct const *)(e_acsl_3));
+    if (! ((unsigned int)y == (unsigned int)e_acsl_4)) {
+      e_acsl_fail((char *)"((unsigned int)y == (unsigned int)0)");
+    } __gmpz_clear((__mpz_struct *)(e_acsl_3));
+  }
+  
   __retres = 0;
   return (__retres);
 }
diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_comparison.c b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_comparison.c
index bffa806ee79..ef5c6acbbb6 100644
--- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_comparison.c
+++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_comparison.c
@@ -40,7 +40,7 @@ __inline static int __gmpz_fits_ulong_p(mpz_srcptr __gmp_z) __attribute__((
 __pure__));
 __inline static int __gmpz_fits_ushort_p(mpz_srcptr __gmp_z) __attribute__((
 __pure__));
-__inline static unsigned long __gmpz_get_ui(mpz_srcptr __gmp_z) __attribute__((
+__inline static unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z) __attribute__((
 __pure__));
 __inline static mp_limb_t __gmpz_getlimbn(mpz_srcptr __gmp_z,
                                           mp_size_t __gmp_n) __attribute__((
@@ -166,16 +166,18 @@ __inline static int __gmpz_fits_ushort_p(mpz_srcptr __gmp_z)
   return (__retres);
 }
 
-__inline static unsigned long __gmpz_get_ui(mpz_srcptr __gmp_z) __attribute__((
+/*@ requires \valid(z);
+    assigns \nothing;  */
+__inline static unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z) __attribute__((
 __pure__));
-__inline static unsigned long __gmpz_get_ui(mpz_srcptr __gmp_z)
+__inline static unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z)
 {
   mp_ptr __gmp_p;
   mp_size_t __gmp_n;
   mp_limb_t __gmp_l;
   mp_limb_t tmp;
-  __gmp_p = __gmp_z->_mp_d;
-  __gmp_n = (long)__gmp_z->_mp_size;
+  __gmp_p = z->_mp_d;
+  __gmp_n = (long)z->_mp_size;
   __gmp_l = *(__gmp_p + 0);
   if (__gmp_n != (mp_size_t)0) { tmp = __gmp_l; }
   else { tmp = (unsigned long)0; }
diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_false.c b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_false.c
index 28cb35703c8..05dd2926413 100644
--- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_false.c
+++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_false.c
@@ -30,7 +30,7 @@ __inline static int __gmpz_fits_ulong_p(mpz_srcptr __gmp_z) __attribute__((
 __pure__));
 __inline static int __gmpz_fits_ushort_p(mpz_srcptr __gmp_z) __attribute__((
 __pure__));
-__inline static unsigned long __gmpz_get_ui(mpz_srcptr __gmp_z) __attribute__((
+__inline static unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z) __attribute__((
 __pure__));
 __inline static mp_limb_t __gmpz_getlimbn(mpz_srcptr __gmp_z,
                                           mp_size_t __gmp_n) __attribute__((
@@ -153,16 +153,18 @@ __inline static int __gmpz_fits_ushort_p(mpz_srcptr __gmp_z)
   return (__retres);
 }
 
-__inline static unsigned long __gmpz_get_ui(mpz_srcptr __gmp_z) __attribute__((
+/*@ requires \valid(z);
+    assigns \nothing;  */
+__inline static unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z) __attribute__((
 __pure__));
-__inline static unsigned long __gmpz_get_ui(mpz_srcptr __gmp_z)
+__inline static unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z)
 {
   mp_ptr __gmp_p;
   mp_size_t __gmp_n;
   mp_limb_t __gmp_l;
   mp_limb_t tmp;
-  __gmp_p = __gmp_z->_mp_d;
-  __gmp_n = (long)__gmp_z->_mp_size;
+  __gmp_p = z->_mp_d;
+  __gmp_n = (long)z->_mp_size;
   __gmp_l = *(__gmp_p + 0);
   if (__gmp_n != (mp_size_t)0) { tmp = __gmp_l; }
   else { tmp = (unsigned long)0; }
diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_function_contract.c b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_function_contract.c
index d4c7a07c6a0..4c9805123aa 100644
--- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_function_contract.c
+++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_function_contract.c
@@ -48,7 +48,7 @@ __inline static int __gmpz_fits_ulong_p(mpz_srcptr __gmp_z) __attribute__((
 __pure__));
 __inline static int __gmpz_fits_ushort_p(mpz_srcptr __gmp_z) __attribute__((
 __pure__));
-__inline static unsigned long __gmpz_get_ui(mpz_srcptr __gmp_z) __attribute__((
+__inline static unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z) __attribute__((
 __pure__));
 __inline static mp_limb_t __gmpz_getlimbn(mpz_srcptr __gmp_z,
                                           mp_size_t __gmp_n) __attribute__((
@@ -177,16 +177,18 @@ __inline static int __gmpz_fits_ushort_p(mpz_srcptr __gmp_z)
   return (__retres);
 }
 
-__inline static unsigned long __gmpz_get_ui(mpz_srcptr __gmp_z) __attribute__((
+/*@ requires \valid(z);
+    assigns \nothing;  */
+__inline static unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z) __attribute__((
 __pure__));
-__inline static unsigned long __gmpz_get_ui(mpz_srcptr __gmp_z)
+__inline static unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z)
 {
   mp_ptr __gmp_p;
   mp_size_t __gmp_n;
   mp_limb_t __gmp_l;
   mp_limb_t tmp;
-  __gmp_p = __gmp_z->_mp_d;
-  __gmp_n = (long)__gmp_z->_mp_size;
+  __gmp_p = z->_mp_d;
+  __gmp_n = (long)z->_mp_size;
   __gmp_l = *(__gmp_p + 0);
   if (__gmp_n != (mp_size_t)0) { tmp = __gmp_l; }
   else { tmp = (unsigned long)0; }
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 397d3f50c84..4b4fb215760 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
@@ -40,7 +40,7 @@ __inline static int __gmpz_fits_ulong_p(mpz_srcptr __gmp_z) __attribute__((
 __pure__));
 __inline static int __gmpz_fits_ushort_p(mpz_srcptr __gmp_z) __attribute__((
 __pure__));
-__inline static unsigned long __gmpz_get_ui(mpz_srcptr __gmp_z) __attribute__((
+__inline static unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z) __attribute__((
 __pure__));
 __inline static mp_limb_t __gmpz_getlimbn(mpz_srcptr __gmp_z,
                                           mp_size_t __gmp_n) __attribute__((
@@ -170,16 +170,18 @@ __inline static int __gmpz_fits_ushort_p(mpz_srcptr __gmp_z)
   return (__retres);
 }
 
-__inline static unsigned long __gmpz_get_ui(mpz_srcptr __gmp_z) __attribute__((
+/*@ requires \valid(z);
+    assigns \nothing;  */
+__inline static unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z) __attribute__((
 __pure__));
-__inline static unsigned long __gmpz_get_ui(mpz_srcptr __gmp_z)
+__inline static unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z)
 {
   mp_ptr __gmp_p;
   mp_size_t __gmp_n;
   mp_limb_t __gmp_l;
   mp_limb_t tmp;
-  __gmp_p = __gmp_z->_mp_d;
-  __gmp_n = (long)__gmp_z->_mp_size;
+  __gmp_p = z->_mp_d;
+  __gmp_n = (long)z->_mp_size;
   __gmp_l = *(__gmp_p + 0);
   if (__gmp_n != (mp_size_t)0) { tmp = __gmp_l; }
   else { tmp = (unsigned long)0; }
diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_lazy.c b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_lazy.c
index c8521f9c1e5..7f15b38bc51 100644
--- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_lazy.c
+++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_lazy.c
@@ -48,7 +48,7 @@ __inline static int __gmpz_fits_ulong_p(mpz_srcptr __gmp_z) __attribute__((
 __pure__));
 __inline static int __gmpz_fits_ushort_p(mpz_srcptr __gmp_z) __attribute__((
 __pure__));
-__inline static unsigned long __gmpz_get_ui(mpz_srcptr __gmp_z) __attribute__((
+__inline static unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z) __attribute__((
 __pure__));
 __inline static mp_limb_t __gmpz_getlimbn(mpz_srcptr __gmp_z,
                                           mp_size_t __gmp_n) __attribute__((
@@ -180,16 +180,18 @@ __inline static int __gmpz_fits_ushort_p(mpz_srcptr __gmp_z)
   return (__retres);
 }
 
-__inline static unsigned long __gmpz_get_ui(mpz_srcptr __gmp_z) __attribute__((
+/*@ requires \valid(z);
+    assigns \nothing;  */
+__inline static unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z) __attribute__((
 __pure__));
-__inline static unsigned long __gmpz_get_ui(mpz_srcptr __gmp_z)
+__inline static unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z)
 {
   mp_ptr __gmp_p;
   mp_size_t __gmp_n;
   mp_limb_t __gmp_l;
   mp_limb_t tmp;
-  __gmp_p = __gmp_z->_mp_d;
-  __gmp_n = (long)__gmp_z->_mp_size;
+  __gmp_p = z->_mp_d;
+  __gmp_n = (long)z->_mp_size;
   __gmp_l = *(__gmp_p + 0);
   if (__gmp_n != (mp_size_t)0) { tmp = __gmp_l; }
   else { tmp = (unsigned long)0; }
diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_nested_code_annot.c b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_nested_code_annot.c
index 273cdd3409e..2a00e9922ce 100644
--- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_nested_code_annot.c
+++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_nested_code_annot.c
@@ -40,7 +40,7 @@ __inline static int __gmpz_fits_ulong_p(mpz_srcptr __gmp_z) __attribute__((
 __pure__));
 __inline static int __gmpz_fits_ushort_p(mpz_srcptr __gmp_z) __attribute__((
 __pure__));
-__inline static unsigned long __gmpz_get_ui(mpz_srcptr __gmp_z) __attribute__((
+__inline static unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z) __attribute__((
 __pure__));
 __inline static mp_limb_t __gmpz_getlimbn(mpz_srcptr __gmp_z,
                                           mp_size_t __gmp_n) __attribute__((
@@ -166,16 +166,18 @@ __inline static int __gmpz_fits_ushort_p(mpz_srcptr __gmp_z)
   return (__retres);
 }
 
-__inline static unsigned long __gmpz_get_ui(mpz_srcptr __gmp_z) __attribute__((
+/*@ requires \valid(z);
+    assigns \nothing;  */
+__inline static unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z) __attribute__((
 __pure__));
-__inline static unsigned long __gmpz_get_ui(mpz_srcptr __gmp_z)
+__inline static unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z)
 {
   mp_ptr __gmp_p;
   mp_size_t __gmp_n;
   mp_limb_t __gmp_l;
   mp_limb_t tmp;
-  __gmp_p = __gmp_z->_mp_d;
-  __gmp_n = (long)__gmp_z->_mp_size;
+  __gmp_p = z->_mp_d;
+  __gmp_n = (long)z->_mp_size;
   __gmp_l = *(__gmp_p + 0);
   if (__gmp_n != (mp_size_t)0) { tmp = __gmp_l; }
   else { tmp = (unsigned long)0; }
diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_not.c b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_not.c
index a365ad94736..9f9ad7bc51a 100644
--- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_not.c
+++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_not.c
@@ -30,7 +30,7 @@ __inline static int __gmpz_fits_ulong_p(mpz_srcptr __gmp_z) __attribute__((
 __pure__));
 __inline static int __gmpz_fits_ushort_p(mpz_srcptr __gmp_z) __attribute__((
 __pure__));
-__inline static unsigned long __gmpz_get_ui(mpz_srcptr __gmp_z) __attribute__((
+__inline static unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z) __attribute__((
 __pure__));
 __inline static mp_limb_t __gmpz_getlimbn(mpz_srcptr __gmp_z,
                                           mp_size_t __gmp_n) __attribute__((
@@ -153,16 +153,18 @@ __inline static int __gmpz_fits_ushort_p(mpz_srcptr __gmp_z)
   return (__retres);
 }
 
-__inline static unsigned long __gmpz_get_ui(mpz_srcptr __gmp_z) __attribute__((
+/*@ requires \valid(z);
+    assigns \nothing;  */
+__inline static unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z) __attribute__((
 __pure__));
-__inline static unsigned long __gmpz_get_ui(mpz_srcptr __gmp_z)
+__inline static unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z)
 {
   mp_ptr __gmp_p;
   mp_size_t __gmp_n;
   mp_limb_t __gmp_l;
   mp_limb_t tmp;
-  __gmp_p = __gmp_z->_mp_d;
-  __gmp_n = (long)__gmp_z->_mp_size;
+  __gmp_p = z->_mp_d;
+  __gmp_n = (long)z->_mp_size;
   __gmp_l = *(__gmp_p + 0);
   if (__gmp_n != (mp_size_t)0) { tmp = __gmp_l; }
   else { tmp = (unsigned long)0; }
diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_null.c b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_null.c
new file mode 100644
index 00000000000..7f14bebf9bb
--- /dev/null
+++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_null.c
@@ -0,0 +1,577 @@
+/* Generated by Frama-C */
+typedef unsigned long size_t;
+typedef unsigned long mp_limb_t;
+struct __anonstruct___mpz_struct_6 {
+   int _mp_alloc ;
+   int _mp_size ;
+   mp_limb_t *_mp_d ;
+};
+typedef struct __anonstruct___mpz_struct_6 __mpz_struct;
+typedef __mpz_struct mpz_t[1];
+typedef mp_limb_t *mp_ptr;
+typedef mp_limb_t const *mp_srcptr;
+typedef long mp_size_t;
+struct __anonstruct___mpq_struct_7 {
+   __mpz_struct _mp_num ;
+   __mpz_struct _mp_den ;
+};
+typedef struct __anonstruct___mpq_struct_7 __mpq_struct;
+typedef __mpz_struct const *mpz_srcptr;
+typedef __mpz_struct *mpz_ptr;
+typedef __mpq_struct const *mpq_srcptr;
+typedef __mpq_struct *mpq_ptr;
+/* compiler builtin: 
+   long __builtin_expect(long, long);   */
+/*@ assigns \nothing;  */
+extern int printf(char const * __restrict __format , ...);
+__inline static void __gmpz_abs(mpz_ptr __gmp_w, mpz_srcptr __gmp_u);
+/*@ requires \valid(x);
+    assigns *x;  */
+extern void __gmpz_clear(__mpz_struct * /*[1]*/ x);
+__inline static int __gmpz_fits_uint_p(mpz_srcptr __gmp_z) __attribute__((
+__pure__));
+__inline static int __gmpz_fits_ulong_p(mpz_srcptr __gmp_z) __attribute__((
+__pure__));
+__inline static int __gmpz_fits_ushort_p(mpz_srcptr __gmp_z) __attribute__((
+__pure__));
+__inline static unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z) __attribute__((
+__pure__));
+__inline static mp_limb_t __gmpz_getlimbn(mpz_srcptr __gmp_z,
+                                          mp_size_t __gmp_n) __attribute__((
+__pure__));
+/*@ ensures \valid(\old(z));
+    assigns *z;  */
+extern void __gmpz_init_set_si(__mpz_struct * /*[1]*/ z, long n);
+__inline static void __gmpz_neg(__mpz_struct * /*[1]*/ z1,
+                                __mpz_struct const * /*[1]*/ z2);
+__inline static int __gmpz_perfect_square_p(mpz_srcptr __gmp_a) __attribute__((
+__pure__));
+__inline static unsigned long __gmpz_popcount(mpz_srcptr __gmp_u) __attribute__((
+__pure__));
+extern void __gmpz_set(mpz_ptr, mpz_srcptr);
+__inline static void __gmpz_set_q(mpz_ptr __gmp_w, mpq_srcptr __gmp_u);
+__inline static size_t __gmpz_size(mpz_srcptr __gmp_z) __attribute__((
+__pure__));
+extern void __gmpz_tdiv_q(mpz_ptr, mpz_srcptr, mpz_srcptr);
+__inline static void __gmpq_abs(mpq_ptr __gmp_w, mpq_srcptr __gmp_u);
+__inline static void __gmpq_neg(mpq_ptr __gmp_w, mpq_srcptr __gmp_u);
+extern void __gmpq_set(mpq_ptr, mpq_srcptr);
+__inline static mp_limb_t __gmpn_add(mp_ptr __gmp_wp, mp_srcptr __gmp_xp,
+                                     mp_size_t __gmp_xsize,
+                                     mp_srcptr __gmp_yp,
+                                     mp_size_t __gmp_ysize);
+__inline static mp_limb_t __gmpn_add_1(mp_ptr __gmp_dst, mp_srcptr __gmp_src,
+                                       mp_size_t __gmp_size,
+                                       mp_limb_t __gmp_n);
+extern mp_limb_t __gmpn_add_n(mp_ptr, mp_srcptr, mp_srcptr, mp_size_t);
+__inline static int __gmpn_cmp(mp_srcptr __gmp_xp, mp_srcptr __gmp_yp,
+                               mp_size_t __gmp_size) __attribute__((__pure__));
+__inline static mp_limb_t __gmpn_neg_n(mp_ptr __gmp_rp, mp_srcptr __gmp_up,
+                                       mp_size_t __gmp_n);
+extern int __gmpn_perfect_square_p(mp_srcptr, mp_size_t) __attribute__((
+__pure__));
+extern unsigned long __gmpn_popcount(mp_srcptr, mp_size_t) __attribute__((
+__pure__));
+__inline static mp_limb_t __gmpn_sub(mp_ptr __gmp_wp, mp_srcptr __gmp_xp,
+                                     mp_size_t __gmp_xsize,
+                                     mp_srcptr __gmp_yp,
+                                     mp_size_t __gmp_ysize);
+__inline static mp_limb_t __gmpn_sub_1(mp_ptr __gmp_dst, mp_srcptr __gmp_src,
+                                       mp_size_t __gmp_size,
+                                       mp_limb_t __gmp_n);
+extern mp_limb_t __gmpn_sub_n(mp_ptr, mp_srcptr, mp_srcptr, mp_size_t);
+__inline static void __gmpz_abs(mpz_ptr __gmp_w, mpz_srcptr __gmp_u)
+{
+  if (__gmp_w != __gmp_u) { __gmpz_set(__gmp_w,__gmp_u); }
+  if (__gmp_w->_mp_size >= 0) { __gmp_w->_mp_size = __gmp_w->_mp_size; }
+  else { __gmp_w->_mp_size = - __gmp_w->_mp_size; }
+  return;
+}
+
+__inline static int __gmpz_fits_uint_p(mpz_srcptr __gmp_z) __attribute__((
+__pure__));
+__inline static int __gmpz_fits_uint_p(mpz_srcptr __gmp_z)
+{
+  int __retres;
+  mp_size_t __gmp_n;
+  mp_ptr __gmp_p;
+  int tmp;
+  __gmp_n = (long)__gmp_z->_mp_size;
+  __gmp_p = __gmp_z->_mp_d;
+  if (__gmp_n == (mp_size_t)0) { tmp = 1; }
+  else {
+    if (__gmp_n == (mp_size_t)1) {
+      if (*(__gmp_p + 0) <= (mp_limb_t)(~ ((unsigned int)0))) { tmp = 1; }
+      else { tmp = 0; }
+    }
+    else { tmp = 0; }
+  }
+  __retres = tmp;
+  goto return_label;
+  return_label: /* internal */ 
+  return (__retres);
+}
+
+__inline static int __gmpz_fits_ulong_p(mpz_srcptr __gmp_z) __attribute__((
+__pure__));
+__inline static int __gmpz_fits_ulong_p(mpz_srcptr __gmp_z)
+{
+  int __retres;
+  mp_size_t __gmp_n;
+  mp_ptr __gmp_p;
+  int tmp;
+  __gmp_n = (long)__gmp_z->_mp_size;
+  __gmp_p = __gmp_z->_mp_d;
+  if (__gmp_n == (mp_size_t)0) { tmp = 1; }
+  else {
+    if (__gmp_n == (mp_size_t)1) {
+      if (*(__gmp_p + 0) <= ~ ((unsigned long)0)) { tmp = 1; }
+      else { tmp = 0; }
+    }
+    else { tmp = 0; }
+  }
+  __retres = tmp;
+  goto return_label;
+  return_label: /* internal */ 
+  return (__retres);
+}
+
+__inline static int __gmpz_fits_ushort_p(mpz_srcptr __gmp_z) __attribute__((
+__pure__));
+__inline static int __gmpz_fits_ushort_p(mpz_srcptr __gmp_z)
+{
+  int __retres;
+  mp_size_t __gmp_n;
+  mp_ptr __gmp_p;
+  int tmp;
+  __gmp_n = (long)__gmp_z->_mp_size;
+  __gmp_p = __gmp_z->_mp_d;
+  if (__gmp_n == (mp_size_t)0) { tmp = 1; }
+  else {
+    if (__gmp_n == (mp_size_t)1) {
+      if (*(__gmp_p + 0) <= (mp_limb_t)((unsigned short)(~ 0))) { tmp = 1; }
+      else { tmp = 0; }
+    }
+    else { tmp = 0; }
+  }
+  __retres = tmp;
+  goto return_label;
+  return_label: /* internal */ 
+  return (__retres);
+}
+
+/*@ requires \valid(z);
+    assigns \nothing;  */
+__inline static unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z) __attribute__((
+__pure__));
+__inline static unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z)
+{
+  mp_ptr __gmp_p;
+  mp_size_t __gmp_n;
+  mp_limb_t __gmp_l;
+  mp_limb_t tmp;
+  __gmp_p = z->_mp_d;
+  __gmp_n = (long)z->_mp_size;
+  __gmp_l = *(__gmp_p + 0);
+  if (__gmp_n != (mp_size_t)0) { tmp = __gmp_l; }
+  else { tmp = (unsigned long)0; }
+  return (tmp);
+}
+
+__inline static mp_limb_t __gmpz_getlimbn(mpz_srcptr __gmp_z,
+                                          mp_size_t __gmp_n) __attribute__((
+__pure__));
+__inline static mp_limb_t __gmpz_getlimbn(mpz_srcptr __gmp_z,
+                                          mp_size_t __gmp_n)
+{
+  mp_limb_t __gmp_result;
+  long tmp_1;
+  int tmp_0;
+  __gmp_result = (unsigned long)0;
+  { /*undefined sequence*/ 
+    if (__gmp_n >= (mp_size_t)0) {
+      int tmp;
+      { /*undefined sequence*/ 
+        if (__gmp_z->_mp_size >= 0) { tmp = __gmp_z->_mp_size; }
+        else { tmp = - __gmp_z->_mp_size; }
+        ;
+      }
+      if (__gmp_n < (mp_size_t)tmp) { tmp_0 = 1; }
+      else { tmp_0 = 0; }
+    }
+    else { tmp_0 = 0; }
+    tmp_1 = __builtin_expect((long)(tmp_0 != 0),(long)1);
+  }
+  if (tmp_1) { __gmp_result = *(__gmp_z->_mp_d + __gmp_n); }
+  return (__gmp_result);
+}
+
+/*@ requires \valid(z1);
+    requires \valid(z2);
+    assigns *z1;  */
+__inline static void __gmpz_neg(__mpz_struct * /*[1]*/ z1,
+                                __mpz_struct const * /*[1]*/ z2)
+{
+  if (z1 != z2) { __gmpz_set(z1,z2); }
+  z1->_mp_size = - z1->_mp_size;
+  return;
+}
+
+__inline static int __gmpz_perfect_square_p(mpz_srcptr __gmp_a) __attribute__((
+__pure__));
+__inline static int __gmpz_perfect_square_p(mpz_srcptr __gmp_a)
+{
+  mp_size_t __gmp_asize;
+  int __gmp_result;
+  long tmp;
+  __gmp_asize = (long)__gmp_a->_mp_size;
+  __gmp_result = __gmp_asize >= (mp_size_t)0;
+  tmp = __builtin_expect((long)((__gmp_asize > (mp_size_t)0) != 0),(long)1);
+  if (tmp) {
+    __gmp_result = __gmpn_perfect_square_p((mp_limb_t const *)__gmp_a->_mp_d,
+                                           __gmp_asize);
+  }
+  return (__gmp_result);
+}
+
+__inline static unsigned long __gmpz_popcount(mpz_srcptr __gmp_u) __attribute__((
+__pure__));
+__inline static unsigned long __gmpz_popcount(mpz_srcptr __gmp_u)
+{
+  mp_size_t __gmp_usize;
+  unsigned long __gmp_result;
+  long tmp;
+  __gmp_usize = (long)__gmp_u->_mp_size;
+  if (__gmp_usize < (mp_size_t)0) { __gmp_result = ~ ((unsigned long)0); }
+  else { __gmp_result = (unsigned long)0; }
+  tmp = __builtin_expect((long)((__gmp_usize > (mp_size_t)0) != 0),(long)1);
+  if (tmp) {
+    __gmp_result = __gmpn_popcount((mp_limb_t const *)__gmp_u->_mp_d,
+                                   __gmp_usize);
+  }
+  return (__gmp_result);
+}
+
+__inline static void __gmpz_set_q(mpz_ptr __gmp_w, mpq_srcptr __gmp_u)
+{
+  __gmpz_tdiv_q(__gmp_w,& __gmp_u->_mp_num,& __gmp_u->_mp_den);
+  return;
+}
+
+__inline static size_t __gmpz_size(mpz_srcptr __gmp_z) __attribute__((
+__pure__));
+__inline static size_t __gmpz_size(mpz_srcptr __gmp_z)
+{
+  size_t __retres;
+  int tmp;
+  if (__gmp_z->_mp_size >= 0) { tmp = __gmp_z->_mp_size; }
+  else { tmp = - __gmp_z->_mp_size; }
+  __retres = (unsigned long)tmp;
+  return (__retres);
+}
+
+__inline static void __gmpq_abs(mpq_ptr __gmp_w, mpq_srcptr __gmp_u)
+{
+  if (__gmp_w != __gmp_u) { __gmpq_set(__gmp_w,__gmp_u); }
+  if (__gmp_w->_mp_num._mp_size >= 0) {
+    __gmp_w->_mp_num._mp_size = __gmp_w->_mp_num._mp_size;
+  }
+  else { __gmp_w->_mp_num._mp_size = - __gmp_w->_mp_num._mp_size; }
+  return;
+}
+
+__inline static void __gmpq_neg(mpq_ptr __gmp_w, mpq_srcptr __gmp_u)
+{
+  if (__gmp_w != __gmp_u) { __gmpq_set(__gmp_w,__gmp_u); }
+  __gmp_w->_mp_num._mp_size = - __gmp_w->_mp_num._mp_size;
+  return;
+}
+
+__inline static mp_limb_t __gmpn_add(mp_ptr __gmp_wp, mp_srcptr __gmp_xp,
+                                     mp_size_t __gmp_xsize,
+                                     mp_srcptr __gmp_yp,
+                                     mp_size_t __gmp_ysize)
+{
+  mp_limb_t __gmp_c;
+  while (1) {
+    { mp_size_t __gmp_i; mp_limb_t __gmp_x; __gmp_i = __gmp_ysize;
+      if (__gmp_i != (mp_size_t)0) {
+        mp_limb_t tmp_1;
+        tmp_1 = __gmpn_add_n(__gmp_wp,__gmp_xp,__gmp_yp,__gmp_i);
+        if (tmp_1) {
+          while (1) {
+            mp_size_t tmp;
+            mp_limb_t tmp_0;
+            if (__gmp_i >= __gmp_xsize) {
+              __gmp_c = (unsigned long)1;
+              goto __gmp_done;
+            }
+            __gmp_x = *(__gmp_xp + __gmp_i);
+            { /*undefined sequence*/ 
+              tmp = __gmp_i;
+              __gmp_i += (mp_size_t)1;
+              tmp_0 = (__gmp_x + (mp_limb_t)1) & (~ ((unsigned long)0) >> 0);
+              *(__gmp_wp + tmp) = tmp_0;
+            }
+            if (! (tmp_0 == (mp_limb_t)0)) { break; }
+          }
+        }
+      }
+      if (__gmp_wp != __gmp_xp) {
+        while (1) {
+          { mp_size_t __gmp_j; __gmp_j = __gmp_i;
+            while (__gmp_j < __gmp_xsize) {
+              *(__gmp_wp + __gmp_j) = *(__gmp_xp + __gmp_j);
+              __gmp_j += (mp_size_t)1;
+            }
+          }
+          
+          break;
+        }
+      } __gmp_c = (unsigned long)0; __gmp_done: ;
+    }
+    
+    break;
+  }
+  return (__gmp_c);
+}
+
+__inline static mp_limb_t __gmpn_add_1(mp_ptr __gmp_dst, mp_srcptr __gmp_src,
+                                       mp_size_t __gmp_size,
+                                       mp_limb_t __gmp_n)
+{
+  mp_limb_t __gmp_c;
+  while (1) {
+    { mp_size_t __gmp_i; mp_limb_t __gmp_x; mp_limb_t __gmp_r;
+      __gmp_x = *(__gmp_src + 0); __gmp_r = __gmp_x + __gmp_n;
+      *(__gmp_dst + 0) = __gmp_r;
+      if (__gmp_r < __gmp_n) {
+        __gmp_c = (unsigned long)1;
+        __gmp_i = (long)1;
+        while (__gmp_i < __gmp_size) {
+          __gmp_x = *(__gmp_src + __gmp_i);
+          __gmp_r = __gmp_x + (mp_limb_t)1;
+          *(__gmp_dst + __gmp_i) = __gmp_r;
+          __gmp_i += (mp_size_t)1;
+          if (! (__gmp_r < (mp_limb_t)1)) {
+            if (__gmp_src != __gmp_dst) {
+              while (1) {
+                { mp_size_t __gmp_j; __gmp_j = __gmp_i;
+                  while (__gmp_j < __gmp_size) {
+                    *(__gmp_dst + __gmp_j) = *(__gmp_src + __gmp_j);
+                    __gmp_j += (mp_size_t)1;
+                  }
+                }
+                
+                break;
+              }
+            }
+            __gmp_c = (unsigned long)0;
+            break;
+          }
+        }
+      }
+      else {
+        if (__gmp_src != __gmp_dst) {
+          while (1) {
+            { mp_size_t __gmp_j_0; __gmp_j_0 = (long)1;
+              while (__gmp_j_0 < __gmp_size) {
+                *(__gmp_dst + __gmp_j_0) = *(__gmp_src + __gmp_j_0);
+                __gmp_j_0 += (mp_size_t)1;
+              }
+            }
+            
+            break;
+          }
+        }
+        __gmp_c = (unsigned long)0;
+      }
+    }
+    
+    break;
+  }
+  return (__gmp_c);
+}
+
+__inline static int __gmpn_cmp(mp_srcptr __gmp_xp, mp_srcptr __gmp_yp,
+                               mp_size_t __gmp_size) __attribute__((__pure__));
+__inline static int __gmpn_cmp(mp_srcptr __gmp_xp, mp_srcptr __gmp_yp,
+                               mp_size_t __gmp_size)
+{
+  int __gmp_result;
+  while (1) {
+    { mp_size_t __gmp_i; mp_limb_t __gmp_x; mp_limb_t __gmp_y;
+      __gmp_result = 0; __gmp_i = __gmp_size;
+      while (1) {
+        __gmp_i -= (mp_size_t)1;
+        if (! (__gmp_i >= (mp_size_t)0)) { break; }
+        __gmp_x = *(__gmp_xp + __gmp_i);
+        __gmp_y = *(__gmp_yp + __gmp_i);
+        if (__gmp_x != __gmp_y) {
+          if (__gmp_x > __gmp_y) { __gmp_result = 1; }
+          else { __gmp_result = -1; }
+          break;
+        }
+      }
+    }
+    
+    break;
+  }
+  return (__gmp_result);
+}
+
+__inline static mp_limb_t __gmpn_sub(mp_ptr __gmp_wp, mp_srcptr __gmp_xp,
+                                     mp_size_t __gmp_xsize,
+                                     mp_srcptr __gmp_yp,
+                                     mp_size_t __gmp_ysize)
+{
+  mp_limb_t __gmp_c;
+  while (1) {
+    { mp_size_t __gmp_i; mp_limb_t __gmp_x; __gmp_i = __gmp_ysize;
+      if (__gmp_i != (mp_size_t)0) {
+        mp_limb_t tmp_0;
+        tmp_0 = __gmpn_sub_n(__gmp_wp,__gmp_xp,__gmp_yp,__gmp_i);
+        if (tmp_0) {
+          while (1) {
+            mp_size_t tmp;
+            if (__gmp_i >= __gmp_xsize) {
+              __gmp_c = (unsigned long)1;
+              goto __gmp_done;
+            }
+            __gmp_x = *(__gmp_xp + __gmp_i);
+            { /*undefined sequence*/ 
+              tmp = __gmp_i;
+              __gmp_i += (mp_size_t)1;
+              *(__gmp_wp + tmp) = (__gmp_x - (mp_limb_t)1) & (~ ((unsigned long)0) >> 0);
+            }
+            if (! (__gmp_x == (mp_limb_t)0)) { break; }
+          }
+        }
+      }
+      if (__gmp_wp != __gmp_xp) {
+        while (1) {
+          { mp_size_t __gmp_j; __gmp_j = __gmp_i;
+            while (__gmp_j < __gmp_xsize) {
+              *(__gmp_wp + __gmp_j) = *(__gmp_xp + __gmp_j);
+              __gmp_j += (mp_size_t)1;
+            }
+          }
+          
+          break;
+        }
+      } __gmp_c = (unsigned long)0; __gmp_done: ;
+    }
+    
+    break;
+  }
+  return (__gmp_c);
+}
+
+__inline static mp_limb_t __gmpn_sub_1(mp_ptr __gmp_dst, mp_srcptr __gmp_src,
+                                       mp_size_t __gmp_size,
+                                       mp_limb_t __gmp_n)
+{
+  mp_limb_t __gmp_c;
+  while (1) {
+    { mp_size_t __gmp_i; mp_limb_t __gmp_x; mp_limb_t __gmp_r;
+      __gmp_x = *(__gmp_src + 0); __gmp_r = __gmp_x - __gmp_n;
+      *(__gmp_dst + 0) = __gmp_r;
+      if (__gmp_x < __gmp_n) {
+        __gmp_c = (unsigned long)1;
+        __gmp_i = (long)1;
+        while (__gmp_i < __gmp_size) {
+          __gmp_x = *(__gmp_src + __gmp_i);
+          __gmp_r = __gmp_x - (mp_limb_t)1;
+          *(__gmp_dst + __gmp_i) = __gmp_r;
+          __gmp_i += (mp_size_t)1;
+          if (! (__gmp_x < (mp_limb_t)1)) {
+            if (__gmp_src != __gmp_dst) {
+              while (1) {
+                { mp_size_t __gmp_j; __gmp_j = __gmp_i;
+                  while (__gmp_j < __gmp_size) {
+                    *(__gmp_dst + __gmp_j) = *(__gmp_src + __gmp_j);
+                    __gmp_j += (mp_size_t)1;
+                  }
+                }
+                
+                break;
+              }
+            }
+            __gmp_c = (unsigned long)0;
+            break;
+          }
+        }
+      }
+      else {
+        if (__gmp_src != __gmp_dst) {
+          while (1) {
+            { mp_size_t __gmp_j_0; __gmp_j_0 = (long)1;
+              while (__gmp_j_0 < __gmp_size) {
+                *(__gmp_dst + __gmp_j_0) = *(__gmp_src + __gmp_j_0);
+                __gmp_j_0 += (mp_size_t)1;
+              }
+            }
+            
+            break;
+          }
+        }
+        __gmp_c = (unsigned long)0;
+      }
+    }
+    
+    break;
+  }
+  return (__gmp_c);
+}
+
+__inline static mp_limb_t __gmpn_neg_n(mp_ptr __gmp_rp, mp_srcptr __gmp_up,
+                                       mp_size_t __gmp_n)
+{
+  mp_limb_t __gmp_ul;
+  mp_limb_t __gmp_cy;
+  __gmp_cy = (unsigned long)0;
+  while (1) {
+    { mp_srcptr tmp; mp_ptr tmp_0;
+      { /*undefined sequence*/  tmp = __gmp_up; __gmp_up ++; __gmp_ul = *tmp;
+      }
+      { /*undefined sequence*/ 
+        tmp_0 = __gmp_rp;
+        __gmp_rp ++;
+        *tmp_0 = - __gmp_ul - __gmp_cy;
+      } __gmp_cy |= (unsigned long)(__gmp_ul != (mp_limb_t)0);
+    }
+    
+    __gmp_n -= (mp_size_t)1;
+    if (! (__gmp_n != (mp_size_t)0)) { break; }
+  }
+  return (__gmp_cy);
+}
+
+/*@ terminates \false;
+    ensures \false;
+    assigns \nothing;  */
+extern void exit(int status);
+void e_acsl_fail(char *msg)
+{
+  printf((char const *)"%s\n",msg);
+  exit(1);
+  return;
+}
+
+int main(void)
+{
+  int __retres;
+  /*@ assert \null ≡ (void *)0; */ ;
+  { mpz_t e_acsl_1; unsigned long e_acsl_2;
+    __gmpz_init_set_si((__mpz_struct *)(e_acsl_1),(long)0);
+    e_acsl_2 = __gmpz_get_ui((__mpz_struct const *)(e_acsl_1));
+    if (! ((void *)0 == (void *)e_acsl_2)) {
+      e_acsl_fail((char *)"(\\null == (void *)0)");
+    } __gmpz_clear((__mpz_struct *)(e_acsl_1));
+  }
+  
+  __retres = 0;
+  return (__retres);
+}
+
+
diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_other_constants.c b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_other_constants.c
index 79471acb879..f3570d72c0e 100644
--- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_other_constants.c
+++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_other_constants.c
@@ -44,7 +44,7 @@ __inline static int __gmpz_fits_ulong_p(mpz_srcptr __gmp_z) __attribute__((
 __pure__));
 __inline static int __gmpz_fits_ushort_p(mpz_srcptr __gmp_z) __attribute__((
 __pure__));
-__inline static unsigned long __gmpz_get_ui(mpz_srcptr __gmp_z) __attribute__((
+__inline static unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z) __attribute__((
 __pure__));
 __inline static mp_limb_t __gmpz_getlimbn(mpz_srcptr __gmp_z,
                                           mp_size_t __gmp_n) __attribute__((
@@ -170,16 +170,18 @@ __inline static int __gmpz_fits_ushort_p(mpz_srcptr __gmp_z)
   return (__retres);
 }
 
-__inline static unsigned long __gmpz_get_ui(mpz_srcptr __gmp_z) __attribute__((
+/*@ requires \valid(z);
+    assigns \nothing;  */
+__inline static unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z) __attribute__((
 __pure__));
-__inline static unsigned long __gmpz_get_ui(mpz_srcptr __gmp_z)
+__inline static unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z)
 {
   mp_ptr __gmp_p;
   mp_size_t __gmp_n;
   mp_limb_t __gmp_l;
   mp_limb_t tmp;
-  __gmp_p = __gmp_z->_mp_d;
-  __gmp_n = (long)__gmp_z->_mp_size;
+  __gmp_p = z->_mp_d;
+  __gmp_n = (long)z->_mp_size;
   __gmp_l = *(__gmp_p + 0);
   if (__gmp_n != (mp_size_t)0) { tmp = __gmp_l; }
   else { tmp = (unsigned long)0; }
diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_ptr.c b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_ptr.c
new file mode 100644
index 00000000000..76d41d25b06
--- /dev/null
+++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_ptr.c
@@ -0,0 +1,738 @@
+/* Generated by Frama-C */
+typedef unsigned long size_t;
+typedef unsigned long mp_limb_t;
+struct __anonstruct___mpz_struct_6 {
+   int _mp_alloc ;
+   int _mp_size ;
+   mp_limb_t *_mp_d ;
+};
+typedef struct __anonstruct___mpz_struct_6 __mpz_struct;
+typedef __mpz_struct mpz_t[1];
+typedef mp_limb_t *mp_ptr;
+typedef mp_limb_t const *mp_srcptr;
+typedef long mp_size_t;
+struct __anonstruct___mpq_struct_7 {
+   __mpz_struct _mp_num ;
+   __mpz_struct _mp_den ;
+};
+typedef struct __anonstruct___mpq_struct_7 __mpq_struct;
+typedef __mpz_struct const *mpz_srcptr;
+typedef __mpz_struct *mpz_ptr;
+typedef __mpq_struct const *mpq_srcptr;
+typedef __mpq_struct *mpq_ptr;
+/* compiler builtin: 
+   long __builtin_expect(long, long);   */
+/*@ assigns \nothing;  */
+extern int printf(char const * __restrict __format , ...);
+__inline static void __gmpz_abs(mpz_ptr __gmp_w, mpz_srcptr __gmp_u);
+/*@ requires \valid(z1);
+    requires \valid(z2);
+    requires \valid(z3);
+    assigns *z1; 
+*/
+extern void __gmpz_add(__mpz_struct * /*[1]*/ z1,
+                       __mpz_struct const * /*[1]*/ z2,
+                       __mpz_struct const * /*[1]*/ z3);
+/*@ requires \valid(x);
+    assigns *x;  */
+extern void __gmpz_clear(__mpz_struct * /*[1]*/ x);
+/*@ requires \valid(z1);
+    requires \valid(z2);
+    assigns \nothing;  */
+extern int __gmpz_cmp(__mpz_struct const * /*[1]*/ z1,
+                      __mpz_struct const * /*[1]*/ z2) __attribute__((
+__pure__));
+__inline static int __gmpz_fits_uint_p(mpz_srcptr __gmp_z) __attribute__((
+__pure__));
+__inline static int __gmpz_fits_ulong_p(mpz_srcptr __gmp_z) __attribute__((
+__pure__));
+__inline static int __gmpz_fits_ushort_p(mpz_srcptr __gmp_z) __attribute__((
+__pure__));
+/*@ requires \valid(z);
+    assigns \nothing;  */
+extern long __gmpz_get_si(__mpz_struct const * /*[1]*/ z) __attribute__((
+__pure__));
+__inline static unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z) __attribute__((
+__pure__));
+__inline static mp_limb_t __gmpz_getlimbn(mpz_srcptr __gmp_z,
+                                          mp_size_t __gmp_n) __attribute__((
+__pure__));
+/*@ ensures \valid(\old(x));
+    assigns *x;  */
+extern void __gmpz_init(__mpz_struct * /*[1]*/ x);
+/*@ ensures \valid(\old(z));
+    assigns *z;  */
+extern void __gmpz_init_set_si(__mpz_struct * /*[1]*/ z, long n);
+__inline static void __gmpz_neg(__mpz_struct * /*[1]*/ z1,
+                                __mpz_struct const * /*[1]*/ z2);
+__inline static int __gmpz_perfect_square_p(mpz_srcptr __gmp_a) __attribute__((
+__pure__));
+__inline static unsigned long __gmpz_popcount(mpz_srcptr __gmp_u) __attribute__((
+__pure__));
+extern void __gmpz_set(mpz_ptr, mpz_srcptr);
+__inline static void __gmpz_set_q(mpz_ptr __gmp_w, mpq_srcptr __gmp_u);
+__inline static size_t __gmpz_size(mpz_srcptr __gmp_z) __attribute__((
+__pure__));
+/*@ requires \valid(z1);
+    requires \valid(z2);
+    requires \valid(z3);
+    assigns *z1; 
+*/
+extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1,
+                       __mpz_struct const * /*[1]*/ z2,
+                       __mpz_struct const * /*[1]*/ z3);
+extern void __gmpz_tdiv_q(mpz_ptr, mpz_srcptr, mpz_srcptr);
+__inline static void __gmpq_abs(mpq_ptr __gmp_w, mpq_srcptr __gmp_u);
+__inline static void __gmpq_neg(mpq_ptr __gmp_w, mpq_srcptr __gmp_u);
+extern void __gmpq_set(mpq_ptr, mpq_srcptr);
+__inline static mp_limb_t __gmpn_add(mp_ptr __gmp_wp, mp_srcptr __gmp_xp,
+                                     mp_size_t __gmp_xsize,
+                                     mp_srcptr __gmp_yp,
+                                     mp_size_t __gmp_ysize);
+__inline static mp_limb_t __gmpn_add_1(mp_ptr __gmp_dst, mp_srcptr __gmp_src,
+                                       mp_size_t __gmp_size,
+                                       mp_limb_t __gmp_n);
+extern mp_limb_t __gmpn_add_n(mp_ptr, mp_srcptr, mp_srcptr, mp_size_t);
+__inline static int __gmpn_cmp(mp_srcptr __gmp_xp, mp_srcptr __gmp_yp,
+                               mp_size_t __gmp_size) __attribute__((__pure__));
+__inline static mp_limb_t __gmpn_neg_n(mp_ptr __gmp_rp, mp_srcptr __gmp_up,
+                                       mp_size_t __gmp_n);
+extern int __gmpn_perfect_square_p(mp_srcptr, mp_size_t) __attribute__((
+__pure__));
+extern unsigned long __gmpn_popcount(mp_srcptr, mp_size_t) __attribute__((
+__pure__));
+__inline static mp_limb_t __gmpn_sub(mp_ptr __gmp_wp, mp_srcptr __gmp_xp,
+                                     mp_size_t __gmp_xsize,
+                                     mp_srcptr __gmp_yp,
+                                     mp_size_t __gmp_ysize);
+__inline static mp_limb_t __gmpn_sub_1(mp_ptr __gmp_dst, mp_srcptr __gmp_src,
+                                       mp_size_t __gmp_size,
+                                       mp_limb_t __gmp_n);
+extern mp_limb_t __gmpn_sub_n(mp_ptr, mp_srcptr, mp_srcptr, mp_size_t);
+__inline static void __gmpz_abs(mpz_ptr __gmp_w, mpz_srcptr __gmp_u)
+{
+  if (__gmp_w != __gmp_u) { __gmpz_set(__gmp_w,__gmp_u); }
+  if (__gmp_w->_mp_size >= 0) { __gmp_w->_mp_size = __gmp_w->_mp_size; }
+  else { __gmp_w->_mp_size = - __gmp_w->_mp_size; }
+  return;
+}
+
+__inline static int __gmpz_fits_uint_p(mpz_srcptr __gmp_z) __attribute__((
+__pure__));
+__inline static int __gmpz_fits_uint_p(mpz_srcptr __gmp_z)
+{
+  int __retres;
+  mp_size_t __gmp_n;
+  mp_ptr __gmp_p;
+  int tmp;
+  __gmp_n = (long)__gmp_z->_mp_size;
+  __gmp_p = __gmp_z->_mp_d;
+  if (__gmp_n == (mp_size_t)0) { tmp = 1; }
+  else {
+    if (__gmp_n == (mp_size_t)1) {
+      if (*(__gmp_p + 0) <= (mp_limb_t)(~ ((unsigned int)0))) { tmp = 1; }
+      else { tmp = 0; }
+    }
+    else { tmp = 0; }
+  }
+  __retres = tmp;
+  goto return_label;
+  return_label: /* internal */ 
+  return (__retres);
+}
+
+__inline static int __gmpz_fits_ulong_p(mpz_srcptr __gmp_z) __attribute__((
+__pure__));
+__inline static int __gmpz_fits_ulong_p(mpz_srcptr __gmp_z)
+{
+  int __retres;
+  mp_size_t __gmp_n;
+  mp_ptr __gmp_p;
+  int tmp;
+  __gmp_n = (long)__gmp_z->_mp_size;
+  __gmp_p = __gmp_z->_mp_d;
+  if (__gmp_n == (mp_size_t)0) { tmp = 1; }
+  else {
+    if (__gmp_n == (mp_size_t)1) {
+      if (*(__gmp_p + 0) <= ~ ((unsigned long)0)) { tmp = 1; }
+      else { tmp = 0; }
+    }
+    else { tmp = 0; }
+  }
+  __retres = tmp;
+  goto return_label;
+  return_label: /* internal */ 
+  return (__retres);
+}
+
+__inline static int __gmpz_fits_ushort_p(mpz_srcptr __gmp_z) __attribute__((
+__pure__));
+__inline static int __gmpz_fits_ushort_p(mpz_srcptr __gmp_z)
+{
+  int __retres;
+  mp_size_t __gmp_n;
+  mp_ptr __gmp_p;
+  int tmp;
+  __gmp_n = (long)__gmp_z->_mp_size;
+  __gmp_p = __gmp_z->_mp_d;
+  if (__gmp_n == (mp_size_t)0) { tmp = 1; }
+  else {
+    if (__gmp_n == (mp_size_t)1) {
+      if (*(__gmp_p + 0) <= (mp_limb_t)((unsigned short)(~ 0))) { tmp = 1; }
+      else { tmp = 0; }
+    }
+    else { tmp = 0; }
+  }
+  __retres = tmp;
+  goto return_label;
+  return_label: /* internal */ 
+  return (__retres);
+}
+
+/*@ requires \valid(z);
+    assigns \nothing;  */
+__inline static unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z) __attribute__((
+__pure__));
+__inline static unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z)
+{
+  mp_ptr __gmp_p;
+  mp_size_t __gmp_n;
+  mp_limb_t __gmp_l;
+  mp_limb_t tmp;
+  __gmp_p = z->_mp_d;
+  __gmp_n = (long)z->_mp_size;
+  __gmp_l = *(__gmp_p + 0);
+  if (__gmp_n != (mp_size_t)0) { tmp = __gmp_l; }
+  else { tmp = (unsigned long)0; }
+  return (tmp);
+}
+
+__inline static mp_limb_t __gmpz_getlimbn(mpz_srcptr __gmp_z,
+                                          mp_size_t __gmp_n) __attribute__((
+__pure__));
+__inline static mp_limb_t __gmpz_getlimbn(mpz_srcptr __gmp_z,
+                                          mp_size_t __gmp_n)
+{
+  mp_limb_t __gmp_result;
+  long tmp_1;
+  int tmp_0;
+  __gmp_result = (unsigned long)0;
+  { /*undefined sequence*/ 
+    if (__gmp_n >= (mp_size_t)0) {
+      int tmp;
+      { /*undefined sequence*/ 
+        if (__gmp_z->_mp_size >= 0) { tmp = __gmp_z->_mp_size; }
+        else { tmp = - __gmp_z->_mp_size; }
+        ;
+      }
+      if (__gmp_n < (mp_size_t)tmp) { tmp_0 = 1; }
+      else { tmp_0 = 0; }
+    }
+    else { tmp_0 = 0; }
+    tmp_1 = __builtin_expect((long)(tmp_0 != 0),(long)1);
+  }
+  if (tmp_1) { __gmp_result = *(__gmp_z->_mp_d + __gmp_n); }
+  return (__gmp_result);
+}
+
+/*@ requires \valid(z1);
+    requires \valid(z2);
+    assigns *z1;  */
+__inline static void __gmpz_neg(__mpz_struct * /*[1]*/ z1,
+                                __mpz_struct const * /*[1]*/ z2)
+{
+  if (z1 != z2) { __gmpz_set(z1,z2); }
+  z1->_mp_size = - z1->_mp_size;
+  return;
+}
+
+__inline static int __gmpz_perfect_square_p(mpz_srcptr __gmp_a) __attribute__((
+__pure__));
+__inline static int __gmpz_perfect_square_p(mpz_srcptr __gmp_a)
+{
+  mp_size_t __gmp_asize;
+  int __gmp_result;
+  long tmp;
+  __gmp_asize = (long)__gmp_a->_mp_size;
+  __gmp_result = __gmp_asize >= (mp_size_t)0;
+  tmp = __builtin_expect((long)((__gmp_asize > (mp_size_t)0) != 0),(long)1);
+  if (tmp) {
+    __gmp_result = __gmpn_perfect_square_p((mp_limb_t const *)__gmp_a->_mp_d,
+                                           __gmp_asize);
+  }
+  return (__gmp_result);
+}
+
+__inline static unsigned long __gmpz_popcount(mpz_srcptr __gmp_u) __attribute__((
+__pure__));
+__inline static unsigned long __gmpz_popcount(mpz_srcptr __gmp_u)
+{
+  mp_size_t __gmp_usize;
+  unsigned long __gmp_result;
+  long tmp;
+  __gmp_usize = (long)__gmp_u->_mp_size;
+  if (__gmp_usize < (mp_size_t)0) { __gmp_result = ~ ((unsigned long)0); }
+  else { __gmp_result = (unsigned long)0; }
+  tmp = __builtin_expect((long)((__gmp_usize > (mp_size_t)0) != 0),(long)1);
+  if (tmp) {
+    __gmp_result = __gmpn_popcount((mp_limb_t const *)__gmp_u->_mp_d,
+                                   __gmp_usize);
+  }
+  return (__gmp_result);
+}
+
+__inline static void __gmpz_set_q(mpz_ptr __gmp_w, mpq_srcptr __gmp_u)
+{
+  __gmpz_tdiv_q(__gmp_w,& __gmp_u->_mp_num,& __gmp_u->_mp_den);
+  return;
+}
+
+__inline static size_t __gmpz_size(mpz_srcptr __gmp_z) __attribute__((
+__pure__));
+__inline static size_t __gmpz_size(mpz_srcptr __gmp_z)
+{
+  size_t __retres;
+  int tmp;
+  if (__gmp_z->_mp_size >= 0) { tmp = __gmp_z->_mp_size; }
+  else { tmp = - __gmp_z->_mp_size; }
+  __retres = (unsigned long)tmp;
+  return (__retres);
+}
+
+__inline static void __gmpq_abs(mpq_ptr __gmp_w, mpq_srcptr __gmp_u)
+{
+  if (__gmp_w != __gmp_u) { __gmpq_set(__gmp_w,__gmp_u); }
+  if (__gmp_w->_mp_num._mp_size >= 0) {
+    __gmp_w->_mp_num._mp_size = __gmp_w->_mp_num._mp_size;
+  }
+  else { __gmp_w->_mp_num._mp_size = - __gmp_w->_mp_num._mp_size; }
+  return;
+}
+
+__inline static void __gmpq_neg(mpq_ptr __gmp_w, mpq_srcptr __gmp_u)
+{
+  if (__gmp_w != __gmp_u) { __gmpq_set(__gmp_w,__gmp_u); }
+  __gmp_w->_mp_num._mp_size = - __gmp_w->_mp_num._mp_size;
+  return;
+}
+
+__inline static mp_limb_t __gmpn_add(mp_ptr __gmp_wp, mp_srcptr __gmp_xp,
+                                     mp_size_t __gmp_xsize,
+                                     mp_srcptr __gmp_yp,
+                                     mp_size_t __gmp_ysize)
+{
+  mp_limb_t __gmp_c;
+  while (1) {
+    { mp_size_t __gmp_i; mp_limb_t __gmp_x; __gmp_i = __gmp_ysize;
+      if (__gmp_i != (mp_size_t)0) {
+        mp_limb_t tmp_1;
+        tmp_1 = __gmpn_add_n(__gmp_wp,__gmp_xp,__gmp_yp,__gmp_i);
+        if (tmp_1) {
+          while (1) {
+            mp_size_t tmp;
+            mp_limb_t tmp_0;
+            if (__gmp_i >= __gmp_xsize) {
+              __gmp_c = (unsigned long)1;
+              goto __gmp_done;
+            }
+            __gmp_x = *(__gmp_xp + __gmp_i);
+            { /*undefined sequence*/ 
+              tmp = __gmp_i;
+              __gmp_i += (mp_size_t)1;
+              tmp_0 = (__gmp_x + (mp_limb_t)1) & (~ ((unsigned long)0) >> 0);
+              *(__gmp_wp + tmp) = tmp_0;
+            }
+            if (! (tmp_0 == (mp_limb_t)0)) { break; }
+          }
+        }
+      }
+      if (__gmp_wp != __gmp_xp) {
+        while (1) {
+          { mp_size_t __gmp_j; __gmp_j = __gmp_i;
+            while (__gmp_j < __gmp_xsize) {
+              *(__gmp_wp + __gmp_j) = *(__gmp_xp + __gmp_j);
+              __gmp_j += (mp_size_t)1;
+            }
+          }
+          
+          break;
+        }
+      } __gmp_c = (unsigned long)0; __gmp_done: ;
+    }
+    
+    break;
+  }
+  return (__gmp_c);
+}
+
+__inline static mp_limb_t __gmpn_add_1(mp_ptr __gmp_dst, mp_srcptr __gmp_src,
+                                       mp_size_t __gmp_size,
+                                       mp_limb_t __gmp_n)
+{
+  mp_limb_t __gmp_c;
+  while (1) {
+    { mp_size_t __gmp_i; mp_limb_t __gmp_x; mp_limb_t __gmp_r;
+      __gmp_x = *(__gmp_src + 0); __gmp_r = __gmp_x + __gmp_n;
+      *(__gmp_dst + 0) = __gmp_r;
+      if (__gmp_r < __gmp_n) {
+        __gmp_c = (unsigned long)1;
+        __gmp_i = (long)1;
+        while (__gmp_i < __gmp_size) {
+          __gmp_x = *(__gmp_src + __gmp_i);
+          __gmp_r = __gmp_x + (mp_limb_t)1;
+          *(__gmp_dst + __gmp_i) = __gmp_r;
+          __gmp_i += (mp_size_t)1;
+          if (! (__gmp_r < (mp_limb_t)1)) {
+            if (__gmp_src != __gmp_dst) {
+              while (1) {
+                { mp_size_t __gmp_j; __gmp_j = __gmp_i;
+                  while (__gmp_j < __gmp_size) {
+                    *(__gmp_dst + __gmp_j) = *(__gmp_src + __gmp_j);
+                    __gmp_j += (mp_size_t)1;
+                  }
+                }
+                
+                break;
+              }
+            }
+            __gmp_c = (unsigned long)0;
+            break;
+          }
+        }
+      }
+      else {
+        if (__gmp_src != __gmp_dst) {
+          while (1) {
+            { mp_size_t __gmp_j_0; __gmp_j_0 = (long)1;
+              while (__gmp_j_0 < __gmp_size) {
+                *(__gmp_dst + __gmp_j_0) = *(__gmp_src + __gmp_j_0);
+                __gmp_j_0 += (mp_size_t)1;
+              }
+            }
+            
+            break;
+          }
+        }
+        __gmp_c = (unsigned long)0;
+      }
+    }
+    
+    break;
+  }
+  return (__gmp_c);
+}
+
+__inline static int __gmpn_cmp(mp_srcptr __gmp_xp, mp_srcptr __gmp_yp,
+                               mp_size_t __gmp_size) __attribute__((__pure__));
+__inline static int __gmpn_cmp(mp_srcptr __gmp_xp, mp_srcptr __gmp_yp,
+                               mp_size_t __gmp_size)
+{
+  int __gmp_result;
+  while (1) {
+    { mp_size_t __gmp_i; mp_limb_t __gmp_x; mp_limb_t __gmp_y;
+      __gmp_result = 0; __gmp_i = __gmp_size;
+      while (1) {
+        __gmp_i -= (mp_size_t)1;
+        if (! (__gmp_i >= (mp_size_t)0)) { break; }
+        __gmp_x = *(__gmp_xp + __gmp_i);
+        __gmp_y = *(__gmp_yp + __gmp_i);
+        if (__gmp_x != __gmp_y) {
+          if (__gmp_x > __gmp_y) { __gmp_result = 1; }
+          else { __gmp_result = -1; }
+          break;
+        }
+      }
+    }
+    
+    break;
+  }
+  return (__gmp_result);
+}
+
+__inline static mp_limb_t __gmpn_sub(mp_ptr __gmp_wp, mp_srcptr __gmp_xp,
+                                     mp_size_t __gmp_xsize,
+                                     mp_srcptr __gmp_yp,
+                                     mp_size_t __gmp_ysize)
+{
+  mp_limb_t __gmp_c;
+  while (1) {
+    { mp_size_t __gmp_i; mp_limb_t __gmp_x; __gmp_i = __gmp_ysize;
+      if (__gmp_i != (mp_size_t)0) {
+        mp_limb_t tmp_0;
+        tmp_0 = __gmpn_sub_n(__gmp_wp,__gmp_xp,__gmp_yp,__gmp_i);
+        if (tmp_0) {
+          while (1) {
+            mp_size_t tmp;
+            if (__gmp_i >= __gmp_xsize) {
+              __gmp_c = (unsigned long)1;
+              goto __gmp_done;
+            }
+            __gmp_x = *(__gmp_xp + __gmp_i);
+            { /*undefined sequence*/ 
+              tmp = __gmp_i;
+              __gmp_i += (mp_size_t)1;
+              *(__gmp_wp + tmp) = (__gmp_x - (mp_limb_t)1) & (~ ((unsigned long)0) >> 0);
+            }
+            if (! (__gmp_x == (mp_limb_t)0)) { break; }
+          }
+        }
+      }
+      if (__gmp_wp != __gmp_xp) {
+        while (1) {
+          { mp_size_t __gmp_j; __gmp_j = __gmp_i;
+            while (__gmp_j < __gmp_xsize) {
+              *(__gmp_wp + __gmp_j) = *(__gmp_xp + __gmp_j);
+              __gmp_j += (mp_size_t)1;
+            }
+          }
+          
+          break;
+        }
+      } __gmp_c = (unsigned long)0; __gmp_done: ;
+    }
+    
+    break;
+  }
+  return (__gmp_c);
+}
+
+__inline static mp_limb_t __gmpn_sub_1(mp_ptr __gmp_dst, mp_srcptr __gmp_src,
+                                       mp_size_t __gmp_size,
+                                       mp_limb_t __gmp_n)
+{
+  mp_limb_t __gmp_c;
+  while (1) {
+    { mp_size_t __gmp_i; mp_limb_t __gmp_x; mp_limb_t __gmp_r;
+      __gmp_x = *(__gmp_src + 0); __gmp_r = __gmp_x - __gmp_n;
+      *(__gmp_dst + 0) = __gmp_r;
+      if (__gmp_x < __gmp_n) {
+        __gmp_c = (unsigned long)1;
+        __gmp_i = (long)1;
+        while (__gmp_i < __gmp_size) {
+          __gmp_x = *(__gmp_src + __gmp_i);
+          __gmp_r = __gmp_x - (mp_limb_t)1;
+          *(__gmp_dst + __gmp_i) = __gmp_r;
+          __gmp_i += (mp_size_t)1;
+          if (! (__gmp_x < (mp_limb_t)1)) {
+            if (__gmp_src != __gmp_dst) {
+              while (1) {
+                { mp_size_t __gmp_j; __gmp_j = __gmp_i;
+                  while (__gmp_j < __gmp_size) {
+                    *(__gmp_dst + __gmp_j) = *(__gmp_src + __gmp_j);
+                    __gmp_j += (mp_size_t)1;
+                  }
+                }
+                
+                break;
+              }
+            }
+            __gmp_c = (unsigned long)0;
+            break;
+          }
+        }
+      }
+      else {
+        if (__gmp_src != __gmp_dst) {
+          while (1) {
+            { mp_size_t __gmp_j_0; __gmp_j_0 = (long)1;
+              while (__gmp_j_0 < __gmp_size) {
+                *(__gmp_dst + __gmp_j_0) = *(__gmp_src + __gmp_j_0);
+                __gmp_j_0 += (mp_size_t)1;
+              }
+            }
+            
+            break;
+          }
+        }
+        __gmp_c = (unsigned long)0;
+      }
+    }
+    
+    break;
+  }
+  return (__gmp_c);
+}
+
+__inline static mp_limb_t __gmpn_neg_n(mp_ptr __gmp_rp, mp_srcptr __gmp_up,
+                                       mp_size_t __gmp_n)
+{
+  mp_limb_t __gmp_ul;
+  mp_limb_t __gmp_cy;
+  __gmp_cy = (unsigned long)0;
+  while (1) {
+    { mp_srcptr tmp; mp_ptr tmp_0;
+      { /*undefined sequence*/  tmp = __gmp_up; __gmp_up ++; __gmp_ul = *tmp;
+      }
+      { /*undefined sequence*/ 
+        tmp_0 = __gmp_rp;
+        __gmp_rp ++;
+        *tmp_0 = - __gmp_ul - __gmp_cy;
+      } __gmp_cy |= (unsigned long)(__gmp_ul != (mp_limb_t)0);
+    }
+    
+    __gmp_n -= (mp_size_t)1;
+    if (! (__gmp_n != (mp_size_t)0)) { break; }
+  }
+  return (__gmp_cy);
+}
+
+/*@ terminates \false;
+    ensures \false;
+    assigns \nothing;  */
+extern void exit(int status);
+void e_acsl_fail(char *msg)
+{
+  printf((char const *)"%s\n",msg);
+  exit(1);
+  return;
+}
+
+int main(void)
+{
+  int __retres;
+  int x;
+  int t[3];
+  int *p;
+  x = 1;
+  t[0] = 2;
+  t[1] = 3;
+  t[2] = 4;
+  p = & x;
+  /*@ assert *p ≡ 1; */ ;
+  { mpz_t e_acsl_1; mpz_t e_acsl_2; int e_acsl_3;
+    __gmpz_init_set_si((__mpz_struct *)(e_acsl_1),(long)*p);
+    __gmpz_init_set_si((__mpz_struct *)(e_acsl_2),(long)1);
+    e_acsl_3 = __gmpz_cmp((__mpz_struct const *)(e_acsl_1),
+                          (__mpz_struct const *)(e_acsl_2));
+    if (! (e_acsl_3 == 0)) { e_acsl_fail((char *)"(*p == 1)"); }
+    __gmpz_clear((__mpz_struct *)(e_acsl_1));
+    __gmpz_clear((__mpz_struct *)(e_acsl_2));
+  }
+  
+  /*@ assert t[0] ≡ 2; */ ;
+  { mpz_t e_acsl_4; mpz_t e_acsl_5; int e_acsl_6;
+    __gmpz_init_set_si((__mpz_struct *)(e_acsl_4),(long)t[0]);
+    __gmpz_init_set_si((__mpz_struct *)(e_acsl_5),(long)2);
+    e_acsl_6 = __gmpz_cmp((__mpz_struct const *)(e_acsl_4),
+                          (__mpz_struct const *)(e_acsl_5));
+    if (! (e_acsl_6 == 0)) { e_acsl_fail((char *)"(t[0] == 2)"); }
+    __gmpz_clear((__mpz_struct *)(e_acsl_4));
+    __gmpz_clear((__mpz_struct *)(e_acsl_5));
+  }
+  
+  /*@ assert t[2] ≡ 4; */ ;
+  { mpz_t e_acsl_7; long e_acsl_8; mpz_t e_acsl_9; mpz_t e_acsl_10;
+    int e_acsl_11; __gmpz_init_set_si((__mpz_struct *)(e_acsl_7),(long)2);
+    e_acsl_8 = __gmpz_get_si((__mpz_struct const *)(e_acsl_7));
+    __gmpz_init_set_si((__mpz_struct *)(e_acsl_9),(long)t[(int)e_acsl_8]);
+    __gmpz_init_set_si((__mpz_struct *)(e_acsl_10),(long)4);
+    e_acsl_11 = __gmpz_cmp((__mpz_struct const *)(e_acsl_9),
+                           (__mpz_struct const *)(e_acsl_10));
+    if (! (e_acsl_11 == 0)) { e_acsl_fail((char *)"(t[2] == 4)"); }
+    __gmpz_clear((__mpz_struct *)(e_acsl_7));
+    __gmpz_clear((__mpz_struct *)(e_acsl_9));
+    __gmpz_clear((__mpz_struct *)(e_acsl_10));
+  }
+  
+  { int i; i = 0;
+    while (1) {
+      if (! (i < 2)) { break; }
+      /*@ assert t[i] ≡ i+2; */ ;
+      { mpz_t e_acsl_12; mpz_t e_acsl_13; mpz_t e_acsl_14; mpz_t e_acsl_15;
+        int e_acsl_16;
+        __gmpz_init_set_si((__mpz_struct *)(e_acsl_12),(long)t[i]);
+        __gmpz_init_set_si((__mpz_struct *)(e_acsl_13),(long)i);
+        __gmpz_init_set_si((__mpz_struct *)(e_acsl_14),(long)2);
+        __gmpz_init((__mpz_struct *)(e_acsl_15));
+        __gmpz_add((__mpz_struct *)(e_acsl_15),
+                   (__mpz_struct const *)(e_acsl_13),
+                   (__mpz_struct const *)(e_acsl_14));
+        e_acsl_16 = __gmpz_cmp((__mpz_struct const *)(e_acsl_12),
+                               (__mpz_struct const *)(e_acsl_15));
+        if (! (e_acsl_16 == 0)) { e_acsl_fail((char *)"(t[i] == i+2)"); }
+        __gmpz_clear((__mpz_struct *)(e_acsl_12));
+        __gmpz_clear((__mpz_struct *)(e_acsl_13));
+        __gmpz_clear((__mpz_struct *)(e_acsl_14));
+        __gmpz_clear((__mpz_struct *)(e_acsl_15));
+      }
+      
+      /*@ assert t[2-i] ≡ 4-i; */ ;
+      { mpz_t e_acsl_17; mpz_t e_acsl_18; mpz_t e_acsl_19; long e_acsl_20;
+        mpz_t e_acsl_21; mpz_t e_acsl_22; mpz_t e_acsl_23; mpz_t e_acsl_24;
+        int e_acsl_25;
+        __gmpz_init_set_si((__mpz_struct *)(e_acsl_17),(long)2);
+        __gmpz_init_set_si((__mpz_struct *)(e_acsl_18),(long)i);
+        __gmpz_init((__mpz_struct *)(e_acsl_19));
+        __gmpz_sub((__mpz_struct *)(e_acsl_19),
+                   (__mpz_struct const *)(e_acsl_17),
+                   (__mpz_struct const *)(e_acsl_18));
+        e_acsl_20 = __gmpz_get_si((__mpz_struct const *)(e_acsl_19));
+        __gmpz_init_set_si((__mpz_struct *)(e_acsl_21),
+                           (long)t[(int)e_acsl_20]);
+        __gmpz_init_set_si((__mpz_struct *)(e_acsl_22),(long)4);
+        __gmpz_init_set_si((__mpz_struct *)(e_acsl_23),(long)i);
+        __gmpz_init((__mpz_struct *)(e_acsl_24));
+        __gmpz_sub((__mpz_struct *)(e_acsl_24),
+                   (__mpz_struct const *)(e_acsl_22),
+                   (__mpz_struct const *)(e_acsl_23));
+        e_acsl_25 = __gmpz_cmp((__mpz_struct const *)(e_acsl_21),
+                               (__mpz_struct const *)(e_acsl_24));
+        if (! (e_acsl_25 == 0)) { e_acsl_fail((char *)"(t[2-i] == 4-i)"); }
+        __gmpz_clear((__mpz_struct *)(e_acsl_17));
+        __gmpz_clear((__mpz_struct *)(e_acsl_18));
+        __gmpz_clear((__mpz_struct *)(e_acsl_19));
+        __gmpz_clear((__mpz_struct *)(e_acsl_21));
+        __gmpz_clear((__mpz_struct *)(e_acsl_22));
+        __gmpz_clear((__mpz_struct *)(e_acsl_23));
+        __gmpz_clear((__mpz_struct *)(e_acsl_24));
+      }
+      
+      /*@ assert *(&t[2]-i) ≡ 4-i; */ ;
+      { mpz_t e_acsl_26; long e_acsl_27; mpz_t e_acsl_28; long e_acsl_29;
+        mpz_t e_acsl_30; mpz_t e_acsl_31; mpz_t e_acsl_32; mpz_t e_acsl_33;
+        int e_acsl_34;
+        __gmpz_init_set_si((__mpz_struct *)(e_acsl_26),(long)2);
+        e_acsl_27 = __gmpz_get_si((__mpz_struct const *)(e_acsl_26));
+        __gmpz_init_set_si((__mpz_struct *)(e_acsl_28),(long)i);
+        e_acsl_29 = __gmpz_get_si((__mpz_struct const *)(e_acsl_28));
+        __gmpz_init_set_si((__mpz_struct *)(e_acsl_30),
+                           (long)*(& t[(int)e_acsl_27] - (int)e_acsl_29));
+        __gmpz_init_set_si((__mpz_struct *)(e_acsl_31),(long)4);
+        __gmpz_init_set_si((__mpz_struct *)(e_acsl_32),(long)i);
+        __gmpz_init((__mpz_struct *)(e_acsl_33));
+        __gmpz_sub((__mpz_struct *)(e_acsl_33),
+                   (__mpz_struct const *)(e_acsl_31),
+                   (__mpz_struct const *)(e_acsl_32));
+        e_acsl_34 = __gmpz_cmp((__mpz_struct const *)(e_acsl_30),
+                               (__mpz_struct const *)(e_acsl_33));
+        if (! (e_acsl_34 == 0)) { e_acsl_fail((char *)"(*(&t[2]-i) == 4-i)");
+        } __gmpz_clear((__mpz_struct *)(e_acsl_26));
+        __gmpz_clear((__mpz_struct *)(e_acsl_28));
+        __gmpz_clear((__mpz_struct *)(e_acsl_30));
+        __gmpz_clear((__mpz_struct *)(e_acsl_31));
+        __gmpz_clear((__mpz_struct *)(e_acsl_32));
+        __gmpz_clear((__mpz_struct *)(e_acsl_33));
+      }
+      
+      i ++;
+    }
+  }
+  
+  p = & t[2];
+  t[2] = 5;
+  /*@ assert *p ≡ 5; */ ;
+  { mpz_t e_acsl_35; mpz_t e_acsl_36; int e_acsl_37;
+    __gmpz_init_set_si((__mpz_struct *)(e_acsl_35),(long)*p);
+    __gmpz_init_set_si((__mpz_struct *)(e_acsl_36),(long)5);
+    e_acsl_37 = __gmpz_cmp((__mpz_struct const *)(e_acsl_35),
+                           (__mpz_struct const *)(e_acsl_36));
+    if (! (e_acsl_37 == 0)) { e_acsl_fail((char *)"(*p == 5)"); }
+    __gmpz_clear((__mpz_struct *)(e_acsl_35));
+    __gmpz_clear((__mpz_struct *)(e_acsl_36));
+  }
+  
+  __retres = 0;
+  return (__retres);
+}
+
+
diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_sizeof.c b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_sizeof.c
index 91e233f19d9..cdaa71c7f3a 100644
--- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_sizeof.c
+++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_sizeof.c
@@ -30,7 +30,7 @@ __inline static int __gmpz_fits_ulong_p(mpz_srcptr __gmp_z) __attribute__((
 __pure__));
 __inline static int __gmpz_fits_ushort_p(mpz_srcptr __gmp_z) __attribute__((
 __pure__));
-__inline static unsigned long __gmpz_get_ui(mpz_srcptr __gmp_z) __attribute__((
+__inline static unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z) __attribute__((
 __pure__));
 __inline static mp_limb_t __gmpz_getlimbn(mpz_srcptr __gmp_z,
                                           mp_size_t __gmp_n) __attribute__((
@@ -153,16 +153,18 @@ __inline static int __gmpz_fits_ushort_p(mpz_srcptr __gmp_z)
   return (__retres);
 }
 
-__inline static unsigned long __gmpz_get_ui(mpz_srcptr __gmp_z) __attribute__((
+/*@ requires \valid(z);
+    assigns \nothing;  */
+__inline static unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z) __attribute__((
 __pure__));
-__inline static unsigned long __gmpz_get_ui(mpz_srcptr __gmp_z)
+__inline static unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z)
 {
   mp_ptr __gmp_p;
   mp_size_t __gmp_n;
   mp_limb_t __gmp_l;
   mp_limb_t tmp;
-  __gmp_p = __gmp_z->_mp_d;
-  __gmp_n = (long)__gmp_z->_mp_size;
+  __gmp_p = z->_mp_d;
+  __gmp_n = (long)z->_mp_size;
   __gmp_l = *(__gmp_p + 0);
   if (__gmp_n != (mp_size_t)0) { tmp = __gmp_l; }
   else { tmp = (unsigned long)0; }
diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_stmt_contract.c b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_stmt_contract.c
index 9141713a57c..20093f2ad7f 100644
--- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_stmt_contract.c
+++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_stmt_contract.c
@@ -48,7 +48,7 @@ __inline static int __gmpz_fits_ulong_p(mpz_srcptr __gmp_z) __attribute__((
 __pure__));
 __inline static int __gmpz_fits_ushort_p(mpz_srcptr __gmp_z) __attribute__((
 __pure__));
-__inline static unsigned long __gmpz_get_ui(mpz_srcptr __gmp_z) __attribute__((
+__inline static unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z) __attribute__((
 __pure__));
 __inline static mp_limb_t __gmpz_getlimbn(mpz_srcptr __gmp_z,
                                           mp_size_t __gmp_n) __attribute__((
@@ -177,16 +177,18 @@ __inline static int __gmpz_fits_ushort_p(mpz_srcptr __gmp_z)
   return (__retres);
 }
 
-__inline static unsigned long __gmpz_get_ui(mpz_srcptr __gmp_z) __attribute__((
+/*@ requires \valid(z);
+    assigns \nothing;  */
+__inline static unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z) __attribute__((
 __pure__));
-__inline static unsigned long __gmpz_get_ui(mpz_srcptr __gmp_z)
+__inline static unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z)
 {
   mp_ptr __gmp_p;
   mp_size_t __gmp_n;
   mp_limb_t __gmp_l;
   mp_limb_t tmp;
-  __gmp_p = __gmp_z->_mp_d;
-  __gmp_n = (long)__gmp_z->_mp_size;
+  __gmp_p = z->_mp_d;
+  __gmp_n = (long)z->_mp_size;
   __gmp_l = *(__gmp_p + 0);
   if (__gmp_n != (mp_size_t)0) { tmp = __gmp_l; }
   else { tmp = (unsigned long)0; }
diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_true.c b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_true.c
index e65624f378f..a2a819c9663 100644
--- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_true.c
+++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_true.c
@@ -30,7 +30,7 @@ __inline static int __gmpz_fits_ulong_p(mpz_srcptr __gmp_z) __attribute__((
 __pure__));
 __inline static int __gmpz_fits_ushort_p(mpz_srcptr __gmp_z) __attribute__((
 __pure__));
-__inline static unsigned long __gmpz_get_ui(mpz_srcptr __gmp_z) __attribute__((
+__inline static unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z) __attribute__((
 __pure__));
 __inline static mp_limb_t __gmpz_getlimbn(mpz_srcptr __gmp_z,
                                           mp_size_t __gmp_n) __attribute__((
@@ -153,16 +153,18 @@ __inline static int __gmpz_fits_ushort_p(mpz_srcptr __gmp_z)
   return (__retres);
 }
 
-__inline static unsigned long __gmpz_get_ui(mpz_srcptr __gmp_z) __attribute__((
+/*@ requires \valid(z);
+    assigns \nothing;  */
+__inline static unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z) __attribute__((
 __pure__));
-__inline static unsigned long __gmpz_get_ui(mpz_srcptr __gmp_z)
+__inline static unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z)
 {
   mp_ptr __gmp_p;
   mp_size_t __gmp_n;
   mp_limb_t __gmp_l;
   mp_limb_t tmp;
-  __gmp_p = __gmp_z->_mp_d;
-  __gmp_n = (long)__gmp_z->_mp_size;
+  __gmp_p = z->_mp_d;
+  __gmp_n = (long)z->_mp_size;
   __gmp_l = *(__gmp_p + 0);
   if (__gmp_n != (mp_size_t)0) { tmp = __gmp_l; }
   else { tmp = (unsigned long)0; }
diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/integer_constant.res.oracle b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/integer_constant.res.oracle
index 7c32de6c332..7ac5075dd95 100644
--- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/integer_constant.res.oracle
+++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/integer_constant.res.oracle
@@ -2,89 +2,89 @@
 [value] Computing initial state
 [value] Initial state computed
 [value] Values of globals at initialization
-PROJECT_FILE.i:121:[value] Assertion got status valid.
+PROJECT_FILE.i:131:[value] Assertion got status valid.
 [value] computing for function mpz_init_set_si <- main.
-        Called from PROJECT_FILE.i:123.
+        Called from PROJECT_FILE.i:133.
 PROJECT_FILE.i:29:[value] Function mpz_init_set_si: postcondition got status unknown
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_init_set_si <- main.
-        Called from PROJECT_FILE.i:123.
+        Called from PROJECT_FILE.i:133.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_cmp <- main.
-        Called from PROJECT_FILE.i:124.
+        Called from PROJECT_FILE.i:134.
 PROJECT_FILE.i:45:[value] Function mpz_cmp: precondition got status valid
 PROJECT_FILE.i:46:[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:125.
+        Called from PROJECT_FILE.i:135.
 [value] computing for function printf <- e_acsl_fail <- main.
-        Called from PROJECT_FILE.i:115.
+        Called from PROJECT_FILE.i:125.
 [value] Done for function printf
 [value] computing for function exit <- e_acsl_fail <- main.
-        Called from PROJECT_FILE.i:115.
-PROJECT_FILE.i:105:[value] Function exit: postcondition got status invalid
+        Called from PROJECT_FILE.i:125.
+PROJECT_FILE.i:115:[value] Function exit: postcondition got status invalid
 [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 <- main.
-        Called from PROJECT_FILE.i:126.
+        Called from PROJECT_FILE.i:136.
 PROJECT_FILE.i:39:[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:126.
+        Called from PROJECT_FILE.i:136.
 [value] Done for function mpz_clear
-PROJECT_FILE.i:130:[value] Assertion got status valid.
+PROJECT_FILE.i:140:[value] Assertion got status valid.
 [value] computing for function mpz_init_set_si <- main.
-        Called from PROJECT_FILE.i:132.
+        Called from PROJECT_FILE.i:142.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_init_set_si <- main.
-        Called from PROJECT_FILE.i:132.
+        Called from PROJECT_FILE.i:142.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_cmp <- main.
-        Called from PROJECT_FILE.i:133.
+        Called from PROJECT_FILE.i:143.
 [value] Done for function mpz_cmp
 [value] computing for function e_acsl_fail <- main.
-        Called from PROJECT_FILE.i:134.
+        Called from PROJECT_FILE.i:144.
 [value] computing for function printf <- e_acsl_fail <- main.
-        Called from PROJECT_FILE.i:115.
+        Called from PROJECT_FILE.i:125.
 [value] Done for function printf
 [value] computing for function exit <- e_acsl_fail <- main.
-        Called from PROJECT_FILE.i:115.
+        Called from PROJECT_FILE.i:125.
 [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 <- main.
-        Called from PROJECT_FILE.i:135.
+        Called from PROJECT_FILE.i:145.
 [value] Done for function mpz_clear
 [value] computing for function mpz_clear <- main.
-        Called from PROJECT_FILE.i:135.
+        Called from PROJECT_FILE.i:145.
 [value] Done for function mpz_clear
-PROJECT_FILE.i:138:[value] Assertion got status valid.
+PROJECT_FILE.i:148:[value] Assertion got status valid.
 [value] computing for function mpz_init_set_str <- main.
-        Called from PROJECT_FILE.i:140.
+        Called from PROJECT_FILE.i:150.
 PROJECT_FILE.i:33:[value] Function mpz_init_set_str: postcondition got status unknown
 [value] Done for function mpz_init_set_str
 [value] computing for function mpz_init_set_str <- main.
-        Called from PROJECT_FILE.i:141.
+        Called from PROJECT_FILE.i:151.
 [value] Done for function mpz_init_set_str
 [value] computing for function mpz_cmp <- main.
-        Called from PROJECT_FILE.i:142.
+        Called from PROJECT_FILE.i:152.
 [value] Done for function mpz_cmp
 [value] computing for function e_acsl_fail <- main.
-        Called from PROJECT_FILE.i:144.
+        Called from PROJECT_FILE.i:154.
 [value] computing for function printf <- e_acsl_fail <- main.
-        Called from PROJECT_FILE.i:115.
+        Called from PROJECT_FILE.i:125.
 [value] Done for function printf
 [value] computing for function exit <- e_acsl_fail <- main.
-        Called from PROJECT_FILE.i:115.
+        Called from PROJECT_FILE.i:125.
 [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 <- main.
-        Called from PROJECT_FILE.i:145.
+        Called from PROJECT_FILE.i:155.
 [value] Done for function mpz_clear
 [value] computing for function mpz_clear <- main.
-        Called from PROJECT_FILE.i:145.
+        Called from PROJECT_FILE.i:155.
 [value] Done for function mpz_clear
 [value] Recording results for main
 [value] done for function main
@@ -95,10 +95,10 @@ PROJECT_FILE.i:33:[value] Function mpz_init_set_str: postcondition got status un
 [from] Computing for function e_acsl_fail
 [from] Computing for function printf <-e_acsl_fail
 [from] Done for function printf
-PROJECT_FILE.i:115:[from] warning: variadic call detected. Using only 1 argument(s).
+PROJECT_FILE.i:125:[from] warning: variadic call detected. Using only 1 argument(s).
 [from] Computing for function exit <-e_acsl_fail
 [from] Done for function exit
-PROJECT_FILE.i:115:[from] Non terminating function (no dependencies)
+PROJECT_FILE.i:125:[from] Non terminating function (no dependencies)
 [from] Done for function e_acsl_fail
 [from] Computing for function mpz_clear
 [from] Done for function mpz_clear
diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/lazy.res.oracle b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/lazy.res.oracle
index 2ec30eb619b..80ddfc0f77a 100644
--- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/lazy.res.oracle
+++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/lazy.res.oracle
@@ -2,250 +2,250 @@
 [value] Computing initial state
 [value] Initial state computed
 [value] Values of globals at initialization
-PROJECT_FILE.i:124:[value] Assertion got status valid.
+PROJECT_FILE.i:134:[value] Assertion got status valid.
 [value] computing for function mpz_init_set_si <- main.
-        Called from PROJECT_FILE.i:126.
+        Called from PROJECT_FILE.i:136.
 PROJECT_FILE.i:29:[value] Function mpz_init_set_si: postcondition got status unknown
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_init_set_si <- main.
-        Called from PROJECT_FILE.i:127.
+        Called from PROJECT_FILE.i:137.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_cmp <- main.
-        Called from PROJECT_FILE.i:127.
+        Called from PROJECT_FILE.i:137.
 PROJECT_FILE.i:45:[value] Function mpz_cmp: precondition got status valid
 PROJECT_FILE.i:46:[value] Function mpz_cmp: precondition got status valid
 [value] Done for function mpz_cmp
 [value] computing for function mpz_init_set_si <- main.
-        Called from PROJECT_FILE.i:132.
+        Called from PROJECT_FILE.i:142.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_init_set_si <- main.
-        Called from PROJECT_FILE.i:133.
+        Called from PROJECT_FILE.i:143.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_cmp <- main.
-        Called from PROJECT_FILE.i:134.
+        Called from PROJECT_FILE.i:144.
 [value] Done for function mpz_cmp
-PROJECT_FILE.i:135:[value] assigning non deterministic value for the first time
+PROJECT_FILE.i:145:[value] assigning non deterministic value for the first time
 [value] computing for function mpz_clear <- main.
-        Called from PROJECT_FILE.i:136.
+        Called from PROJECT_FILE.i:146.
 PROJECT_FILE.i:39:[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:137.
+        Called from PROJECT_FILE.i:147.
 [value] Done for function mpz_clear
 [value] computing for function e_acsl_fail <- main.
-        Called from PROJECT_FILE.i:139.
+        Called from PROJECT_FILE.i:149.
 [value] computing for function printf <- e_acsl_fail <- main.
-        Called from PROJECT_FILE.i:115.
+        Called from PROJECT_FILE.i:125.
 [value] Done for function printf
 [value] computing for function exit <- e_acsl_fail <- main.
-        Called from PROJECT_FILE.i:115.
-PROJECT_FILE.i:105:[value] Function exit: postcondition got status invalid
+        Called from PROJECT_FILE.i:125.
+PROJECT_FILE.i:115:[value] Function exit: postcondition got status invalid
 [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 <- main.
-        Called from PROJECT_FILE.i:140.
+        Called from PROJECT_FILE.i:150.
 [value] Done for function mpz_clear
 [value] computing for function mpz_clear <- main.
-        Called from PROJECT_FILE.i:140.
+        Called from PROJECT_FILE.i:150.
 [value] Done for function mpz_clear
-PROJECT_FILE.i:143:[value] Assertion got status valid.
+PROJECT_FILE.i:153:[value] Assertion got status valid.
 [value] computing for function mpz_init_set_si <- main.
-        Called from PROJECT_FILE.i:147.
+        Called from PROJECT_FILE.i:157.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_init_set_si <- main.
-        Called from PROJECT_FILE.i:147.
+        Called from PROJECT_FILE.i:157.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_cmp <- main.
-        Called from PROJECT_FILE.i:148.
+        Called from PROJECT_FILE.i:158.
 [value] Done for function mpz_cmp
 [value] computing for function mpz_init_set_si <- main.
-        Called from PROJECT_FILE.i:158.
+        Called from PROJECT_FILE.i:168.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_init_set_si <- main.
-        Called from PROJECT_FILE.i:159.
+        Called from PROJECT_FILE.i:169.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_init_set_si <- main.
-        Called from PROJECT_FILE.i:160.
+        Called from PROJECT_FILE.i:170.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_init_set_si <- main.
-        Called from PROJECT_FILE.i:161.
+        Called from PROJECT_FILE.i:171.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_init_set_ui <- main.
-        Called from PROJECT_FILE.i:162.
+        Called from PROJECT_FILE.i:172.
 PROJECT_FILE.i:25:[value] Function mpz_init_set_ui: postcondition got status unknown
 [value] Done for function mpz_init_set_ui
 [value] computing for function mpz_cmp <- main.
-        Called from PROJECT_FILE.i:163.
+        Called from PROJECT_FILE.i:173.
 [value] Done for function mpz_cmp
 [value] computing for function mpz_init <- main.
-        Called from PROJECT_FILE.i:164.
+        Called from PROJECT_FILE.i:174.
 PROJECT_FILE.i:21:[value] Function mpz_init: postcondition got status unknown
 [value] Done for function mpz_init
-PROJECT_FILE.i:165:[value] Assertion got status invalid (stopping propagation)..
+PROJECT_FILE.i:175:[value] Assertion got status invalid (stopping propagation)..
 [value] computing for function mpz_clear <- main.
-        Called from PROJECT_FILE.i:178.
+        Called from PROJECT_FILE.i:188.
 [value] Done for function mpz_clear
 [value] computing for function mpz_clear <- main.
-        Called from PROJECT_FILE.i:178.
+        Called from PROJECT_FILE.i:188.
 [value] Done for function mpz_clear
-PROJECT_FILE.i:181:[value] Assertion got status valid.
+PROJECT_FILE.i:191:[value] Assertion got status valid.
 [value] computing for function mpz_init_set_si <- main.
-        Called from PROJECT_FILE.i:183.
+        Called from PROJECT_FILE.i:193.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_init_set_si <- main.
-        Called from PROJECT_FILE.i:184.
+        Called from PROJECT_FILE.i:194.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_cmp <- main.
-        Called from PROJECT_FILE.i:184.
+        Called from PROJECT_FILE.i:194.
 [value] Done for function mpz_cmp
 [value] computing for function mpz_init_set_si <- main.
-        Called from PROJECT_FILE.i:190.
+        Called from PROJECT_FILE.i:200.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_init_set_si <- main.
-        Called from PROJECT_FILE.i:191.
+        Called from PROJECT_FILE.i:201.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_cmp <- main.
-        Called from PROJECT_FILE.i:192.
+        Called from PROJECT_FILE.i:202.
 [value] Done for function mpz_cmp
 [value] computing for function mpz_clear <- main.
-        Called from PROJECT_FILE.i:194.
+        Called from PROJECT_FILE.i:204.
 [value] Done for function mpz_clear
 [value] computing for function mpz_clear <- main.
-        Called from PROJECT_FILE.i:195.
+        Called from PROJECT_FILE.i:205.
 [value] Done for function mpz_clear
 [value] computing for function e_acsl_fail <- main.
-        Called from PROJECT_FILE.i:196.
+        Called from PROJECT_FILE.i:206.
 [value] computing for function printf <- e_acsl_fail <- main.
-        Called from PROJECT_FILE.i:115.
+        Called from PROJECT_FILE.i:125.
 [value] Done for function printf
 [value] computing for function exit <- e_acsl_fail <- main.
-        Called from PROJECT_FILE.i:115.
+        Called from PROJECT_FILE.i:125.
 [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 <- main.
-        Called from PROJECT_FILE.i:197.
+        Called from PROJECT_FILE.i:207.
 [value] Done for function mpz_clear
 [value] computing for function mpz_clear <- main.
-        Called from PROJECT_FILE.i:197.
+        Called from PROJECT_FILE.i:207.
 [value] Done for function mpz_clear
-PROJECT_FILE.i:200:[value] Assertion got status valid.
+PROJECT_FILE.i:210:[value] Assertion got status valid.
 [value] computing for function mpz_init_set_si <- main.
-        Called from PROJECT_FILE.i:204.
+        Called from PROJECT_FILE.i:214.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_init_set_si <- main.
-        Called from PROJECT_FILE.i:204.
+        Called from PROJECT_FILE.i:214.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_cmp <- main.
-        Called from PROJECT_FILE.i:205.
+        Called from PROJECT_FILE.i:215.
 [value] Done for function mpz_cmp
 [value] computing for function mpz_init_set_si <- main.
-        Called from PROJECT_FILE.i:216.
+        Called from PROJECT_FILE.i:226.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_init_set_si <- main.
-        Called from PROJECT_FILE.i:217.
+        Called from PROJECT_FILE.i:227.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_init_set_si <- main.
-        Called from PROJECT_FILE.i:218.
+        Called from PROJECT_FILE.i:228.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_init_set_si <- main.
-        Called from PROJECT_FILE.i:219.
+        Called from PROJECT_FILE.i:229.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_init_set_ui <- main.
-        Called from PROJECT_FILE.i:220.
+        Called from PROJECT_FILE.i:230.
 [value] Done for function mpz_init_set_ui
 [value] computing for function mpz_cmp <- main.
-        Called from PROJECT_FILE.i:221.
+        Called from PROJECT_FILE.i:231.
 [value] Done for function mpz_cmp
 [value] computing for function mpz_init <- main.
-        Called from PROJECT_FILE.i:222.
+        Called from PROJECT_FILE.i:232.
 [value] Done for function mpz_init
-PROJECT_FILE.i:223:[value] Assertion got status invalid (stopping propagation)..
+PROJECT_FILE.i:233:[value] Assertion got status invalid (stopping propagation)..
 [value] computing for function mpz_clear <- main.
-        Called from PROJECT_FILE.i:235.
+        Called from PROJECT_FILE.i:245.
 [value] Done for function mpz_clear
 [value] computing for function mpz_clear <- main.
-        Called from PROJECT_FILE.i:235.
+        Called from PROJECT_FILE.i:245.
 [value] Done for function mpz_clear
-PROJECT_FILE.i:238:[value] Assertion got status valid.
+PROJECT_FILE.i:248:[value] Assertion got status valid.
 [value] computing for function mpz_init_set_si <- main.
-        Called from PROJECT_FILE.i:240.
+        Called from PROJECT_FILE.i:250.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_init_set_si <- main.
-        Called from PROJECT_FILE.i:241.
+        Called from PROJECT_FILE.i:251.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_cmp <- main.
-        Called from PROJECT_FILE.i:241.
+        Called from PROJECT_FILE.i:251.
 [value] Done for function mpz_cmp
 [value] computing for function mpz_init_set_si <- main.
-        Called from PROJECT_FILE.i:247.
+        Called from PROJECT_FILE.i:257.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_init_set_si <- main.
-        Called from PROJECT_FILE.i:248.
+        Called from PROJECT_FILE.i:258.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_cmp <- main.
-        Called from PROJECT_FILE.i:249.
+        Called from PROJECT_FILE.i:259.
 [value] Done for function mpz_cmp
 [value] computing for function mpz_clear <- main.
-        Called from PROJECT_FILE.i:251.
+        Called from PROJECT_FILE.i:261.
 [value] Done for function mpz_clear
 [value] computing for function mpz_clear <- main.
-        Called from PROJECT_FILE.i:252.
+        Called from PROJECT_FILE.i:262.
 [value] Done for function mpz_clear
 [value] computing for function e_acsl_fail <- main.
-        Called from PROJECT_FILE.i:253.
+        Called from PROJECT_FILE.i:263.
 [value] computing for function printf <- e_acsl_fail <- main.
-        Called from PROJECT_FILE.i:115.
+        Called from PROJECT_FILE.i:125.
 [value] Done for function printf
 [value] computing for function exit <- e_acsl_fail <- main.
-        Called from PROJECT_FILE.i:115.
+        Called from PROJECT_FILE.i:125.
 [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 <- main.
-        Called from PROJECT_FILE.i:254.
+        Called from PROJECT_FILE.i:264.
 [value] Done for function mpz_clear
 [value] computing for function mpz_clear <- main.
-        Called from PROJECT_FILE.i:254.
+        Called from PROJECT_FILE.i:264.
 [value] Done for function mpz_clear
-PROJECT_FILE.i:257:[value] Assertion got status valid.
+PROJECT_FILE.i:267:[value] Assertion got status valid.
 [value] computing for function mpz_init_set_si <- main.
-        Called from PROJECT_FILE.i:261.
+        Called from PROJECT_FILE.i:271.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_init_set_si <- main.
-        Called from PROJECT_FILE.i:261.
+        Called from PROJECT_FILE.i:271.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_cmp <- main.
-        Called from PROJECT_FILE.i:262.
+        Called from PROJECT_FILE.i:272.
 [value] Done for function mpz_cmp
 [value] computing for function mpz_init_set_si <- main.
-        Called from PROJECT_FILE.i:273.
+        Called from PROJECT_FILE.i:283.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_init_set_si <- main.
-        Called from PROJECT_FILE.i:274.
+        Called from PROJECT_FILE.i:284.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_init_set_si <- main.
-        Called from PROJECT_FILE.i:275.
+        Called from PROJECT_FILE.i:285.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_init_set_si <- main.
-        Called from PROJECT_FILE.i:276.
+        Called from PROJECT_FILE.i:286.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_init_set_ui <- main.
-        Called from PROJECT_FILE.i:277.
+        Called from PROJECT_FILE.i:287.
 [value] Done for function mpz_init_set_ui
 [value] computing for function mpz_cmp <- main.
-        Called from PROJECT_FILE.i:278.
+        Called from PROJECT_FILE.i:288.
 [value] Done for function mpz_cmp
 [value] computing for function mpz_init <- main.
-        Called from PROJECT_FILE.i:279.
+        Called from PROJECT_FILE.i:289.
 [value] Done for function mpz_init
-PROJECT_FILE.i:280:[value] Assertion got status invalid (stopping propagation)..
+PROJECT_FILE.i:290:[value] Assertion got status invalid (stopping propagation)..
 [value] computing for function mpz_clear <- main.
-        Called from PROJECT_FILE.i:292.
+        Called from PROJECT_FILE.i:302.
 [value] Done for function mpz_clear
 [value] computing for function mpz_clear <- main.
-        Called from PROJECT_FILE.i:292.
+        Called from PROJECT_FILE.i:302.
 [value] Done for function mpz_clear
 [value] Recording results for main
 [value] done for function main
@@ -258,10 +258,10 @@ PROJECT_FILE.i:280:[value] Assertion got status invalid (stopping propagation)..
 [from] Computing for function e_acsl_fail
 [from] Computing for function printf <-e_acsl_fail
 [from] Done for function printf
-PROJECT_FILE.i:115:[from] warning: variadic call detected. Using only 1 argument(s).
+PROJECT_FILE.i:125:[from] warning: variadic call detected. Using only 1 argument(s).
 [from] Computing for function exit <-e_acsl_fail
 [from] Done for function exit
-PROJECT_FILE.i:115:[from] Non terminating function (no dependencies)
+PROJECT_FILE.i:125:[from] Non terminating function (no dependencies)
 [from] Done for function e_acsl_fail
 [from] Computing for function mpz_init_set_ui
 [from] Done for function mpz_init_set_ui
diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/nested_code_annot.res.oracle b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/nested_code_annot.res.oracle
index 18513fdc127..ab2a39e9d57 100644
--- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/nested_code_annot.res.oracle
+++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/nested_code_annot.res.oracle
@@ -3,161 +3,161 @@ tests/e-acsl-runtime/nested_code_annot.i:12:[kernel] warning: Body of function m
 [value] Computing initial state
 [value] Initial state computed
 [value] Values of globals at initialization
-PROJECT_FILE.i:124:[value] Assertion got status valid.
+PROJECT_FILE.i:134:[value] Assertion got status valid.
 [value] computing for function mpz_init_set_si <- main.
-        Called from PROJECT_FILE.i:131.
+        Called from PROJECT_FILE.i:141.
 PROJECT_FILE.i:29:[value] Function mpz_init_set_si: postcondition got status unknown
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_init_set_si <- main.
-        Called from PROJECT_FILE.i:131.
+        Called from PROJECT_FILE.i:141.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_cmp <- main.
-        Called from PROJECT_FILE.i:132.
+        Called from PROJECT_FILE.i:142.
 PROJECT_FILE.i:45:[value] Function mpz_cmp: precondition got status valid
 PROJECT_FILE.i:46:[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:133.
+        Called from PROJECT_FILE.i:143.
 [value] computing for function printf <- e_acsl_fail <- main.
-        Called from PROJECT_FILE.i:115.
+        Called from PROJECT_FILE.i:125.
 [value] Done for function printf
 [value] computing for function exit <- e_acsl_fail <- main.
-        Called from PROJECT_FILE.i:115.
-PROJECT_FILE.i:105:[value] Function exit: postcondition got status invalid
+        Called from PROJECT_FILE.i:125.
+PROJECT_FILE.i:115:[value] Function exit: postcondition got status invalid
 [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 <- main.
-        Called from PROJECT_FILE.i:134.
+        Called from PROJECT_FILE.i:144.
 PROJECT_FILE.i:39:[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:134.
+        Called from PROJECT_FILE.i:144.
 [value] Done for function mpz_clear
 [value] computing for function mpz_init_set_si <- main.
-        Called from PROJECT_FILE.i:143.
+        Called from PROJECT_FILE.i:153.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_init_set_si <- main.
-        Called from PROJECT_FILE.i:143.
+        Called from PROJECT_FILE.i:153.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_cmp <- main.
-        Called from PROJECT_FILE.i:144.
+        Called from PROJECT_FILE.i:154.
 [value] Done for function mpz_cmp
 [value] computing for function e_acsl_fail <- main.
-        Called from PROJECT_FILE.i:145.
+        Called from PROJECT_FILE.i:155.
 [value] computing for function printf <- e_acsl_fail <- main.
-        Called from PROJECT_FILE.i:115.
+        Called from PROJECT_FILE.i:125.
 [value] Done for function printf
 [value] computing for function exit <- e_acsl_fail <- main.
-        Called from PROJECT_FILE.i:115.
+        Called from PROJECT_FILE.i:125.
 [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 <- main.
-        Called from PROJECT_FILE.i:146.
+        Called from PROJECT_FILE.i:156.
 [value] Done for function mpz_clear
 [value] computing for function mpz_clear <- main.
-        Called from PROJECT_FILE.i:146.
+        Called from PROJECT_FILE.i:156.
 [value] Done for function mpz_clear
 [value] computing for function mpz_init_set_si <- main.
-        Called from PROJECT_FILE.i:150.
+        Called from PROJECT_FILE.i:160.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_init_set_si <- main.
-        Called from PROJECT_FILE.i:150.
+        Called from PROJECT_FILE.i:160.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_cmp <- main.
-        Called from PROJECT_FILE.i:151.
+        Called from PROJECT_FILE.i:161.
 [value] Done for function mpz_cmp
 [value] computing for function e_acsl_fail <- main.
-        Called from PROJECT_FILE.i:152.
+        Called from PROJECT_FILE.i:162.
 [value] computing for function printf <- e_acsl_fail <- main.
-        Called from PROJECT_FILE.i:115.
+        Called from PROJECT_FILE.i:125.
 [value] Done for function printf
 [value] computing for function exit <- e_acsl_fail <- main.
-        Called from PROJECT_FILE.i:115.
+        Called from PROJECT_FILE.i:125.
 [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 <- main.
-        Called from PROJECT_FILE.i:153.
+        Called from PROJECT_FILE.i:163.
 [value] Done for function mpz_clear
 [value] computing for function mpz_clear <- main.
-        Called from PROJECT_FILE.i:153.
+        Called from PROJECT_FILE.i:163.
 [value] Done for function mpz_clear
 [value] computing for function mpz_init_set_si <- main.
-        Called from PROJECT_FILE.i:162.
+        Called from PROJECT_FILE.i:172.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_init_set_si <- main.
-        Called from PROJECT_FILE.i:162.
+        Called from PROJECT_FILE.i:172.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_cmp <- main.
-        Called from PROJECT_FILE.i:163.
+        Called from PROJECT_FILE.i:173.
 [value] Done for function mpz_cmp
 [value] computing for function e_acsl_fail <- main.
-        Called from PROJECT_FILE.i:164.
+        Called from PROJECT_FILE.i:174.
 [value] computing for function printf <- e_acsl_fail <- main.
-        Called from PROJECT_FILE.i:115.
+        Called from PROJECT_FILE.i:125.
 [value] Done for function printf
 [value] computing for function exit <- e_acsl_fail <- main.
-        Called from PROJECT_FILE.i:115.
+        Called from PROJECT_FILE.i:125.
 [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 <- main.
-        Called from PROJECT_FILE.i:165.
+        Called from PROJECT_FILE.i:175.
 [value] Done for function mpz_clear
 [value] computing for function mpz_clear <- main.
-        Called from PROJECT_FILE.i:165.
+        Called from PROJECT_FILE.i:175.
 [value] Done for function mpz_clear
 [value] computing for function mpz_init_set_si <- main.
-        Called from PROJECT_FILE.i:169.
+        Called from PROJECT_FILE.i:179.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_init_set_si <- main.
-        Called from PROJECT_FILE.i:169.
+        Called from PROJECT_FILE.i:179.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_cmp <- main.
-        Called from PROJECT_FILE.i:170.
+        Called from PROJECT_FILE.i:180.
 [value] Done for function mpz_cmp
 [value] computing for function e_acsl_fail <- main.
-        Called from PROJECT_FILE.i:171.
+        Called from PROJECT_FILE.i:181.
 [value] computing for function printf <- e_acsl_fail <- main.
-        Called from PROJECT_FILE.i:115.
+        Called from PROJECT_FILE.i:125.
 [value] Done for function printf
 [value] computing for function exit <- e_acsl_fail <- main.
-        Called from PROJECT_FILE.i:115.
+        Called from PROJECT_FILE.i:125.
 [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 <- main.
-        Called from PROJECT_FILE.i:172.
+        Called from PROJECT_FILE.i:182.
 [value] Done for function mpz_clear
 [value] computing for function mpz_clear <- main.
-        Called from PROJECT_FILE.i:172.
+        Called from PROJECT_FILE.i:182.
 [value] Done for function mpz_clear
 [value] computing for function mpz_init_set_si <- main.
-        Called from PROJECT_FILE.i:181.
+        Called from PROJECT_FILE.i:191.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_init_set_si <- main.
-        Called from PROJECT_FILE.i:181.
+        Called from PROJECT_FILE.i:191.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_cmp <- main.
-        Called from PROJECT_FILE.i:182.
+        Called from PROJECT_FILE.i:192.
 [value] Done for function mpz_cmp
 [value] computing for function e_acsl_fail <- main.
-        Called from PROJECT_FILE.i:183.
+        Called from PROJECT_FILE.i:193.
 [value] computing for function printf <- e_acsl_fail <- main.
-        Called from PROJECT_FILE.i:115.
+        Called from PROJECT_FILE.i:125.
 [value] Done for function printf
 [value] computing for function exit <- e_acsl_fail <- main.
-        Called from PROJECT_FILE.i:115.
+        Called from PROJECT_FILE.i:125.
 [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 <- main.
-        Called from PROJECT_FILE.i:184.
+        Called from PROJECT_FILE.i:194.
 [value] Done for function mpz_clear
 [value] computing for function mpz_clear <- main.
-        Called from PROJECT_FILE.i:184.
+        Called from PROJECT_FILE.i:194.
 [value] Done for function mpz_clear
 [value] Recording results for main
 [value] done for function main
@@ -168,10 +168,10 @@ PROJECT_FILE.i:39:[value] Function mpz_clear: precondition got status valid
 [from] Computing for function e_acsl_fail
 [from] Computing for function printf <-e_acsl_fail
 [from] Done for function printf
-PROJECT_FILE.i:115:[from] warning: variadic call detected. Using only 1 argument(s).
+PROJECT_FILE.i:125:[from] warning: variadic call detected. Using only 1 argument(s).
 [from] Computing for function exit <-e_acsl_fail
 [from] Done for function exit
-PROJECT_FILE.i:115:[from] Non terminating function (no dependencies)
+PROJECT_FILE.i:125:[from] Non terminating function (no dependencies)
 [from] Done for function e_acsl_fail
 [from] Computing for function mpz_clear
 [from] Done for function mpz_clear
diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/not.res.oracle b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/not.res.oracle
index eb0e616ce0c..7aa2ea581ca 100644
--- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/not.res.oracle
+++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/not.res.oracle
@@ -2,7 +2,7 @@
 [value] Computing initial state
 [value] Initial state computed
 [value] Values of globals at initialization
-PROJECT_FILE.i:122:[value] Assertion got status valid.
+PROJECT_FILE.i:132:[value] Assertion got status valid.
 [value] Recording results for main
 [value] done for function main
 [value] ====== VALUES COMPUTED ======
diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/null.err.oracle b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/null.err.oracle
new file mode 100644
index 00000000000..e69de29bb2d
diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/null.res.oracle b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/null.res.oracle
new file mode 100644
index 00000000000..bbd528ab7b0
--- /dev/null
+++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/null.res.oracle
@@ -0,0 +1,96 @@
+[value] Analyzing a complete application starting at main
+[value] Computing initial state
+[value] Initial state computed
+[value] Values of globals at initialization
+PROJECT_FILE.i:130:[value] Assertion got status unknown.
+[value] computing for function mpz_init_set_si <- main.
+        Called from PROJECT_FILE.i:131.
+PROJECT_FILE.i:29:[value] Function mpz_init_set_si: postcondition got status unknown
+[value] Done for function mpz_init_set_si
+[value] computing for function mpz_get_ui <- main.
+        Called from PROJECT_FILE.i:132.
+PROJECT_FILE.i:96:[value] Function mpz_get_ui: precondition got status valid
+[value] Done for function mpz_get_ui
+[value] computing for function e_acsl_fail <- main.
+        Called from PROJECT_FILE.i:134.
+[value] computing for function printf <- e_acsl_fail <- main.
+        Called from PROJECT_FILE.i:125.
+[value] Done for function printf
+[value] computing for function exit <- e_acsl_fail <- main.
+        Called from PROJECT_FILE.i:125.
+PROJECT_FILE.i:115:[value] Function exit: postcondition got status invalid
+[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 <- main.
+        Called from PROJECT_FILE.i:135.
+PROJECT_FILE.i:39:[value] Function mpz_clear: precondition got status valid
+[value] Done for function mpz_clear
+[value] Recording results for main
+[value] done for function main
+[from] Computing for function mpz_init_set_si
+[from] Done for function mpz_init_set_si
+[from] Computing for function mpz_get_ui
+[from] Done for function mpz_get_ui
+[from] Computing for function e_acsl_fail
+[from] Computing for function printf <-e_acsl_fail
+[from] Done for function printf
+PROJECT_FILE.i:125:[from] warning: variadic call detected. Using only 1 argument(s).
+[from] Computing for function exit <-e_acsl_fail
+[from] Done for function exit
+PROJECT_FILE.i:125:[from] Non terminating function (no dependencies)
+[from] Done for function e_acsl_fail
+[from] Computing for function mpz_clear
+[from] Done for function mpz_clear
+[value] ====== VALUES COMPUTED ======
+[value] Values for function e_acsl_fail:
+          NON TERMINATING FUNCTION
+[value] Values for function main:
+          __retres ∈ {0}
+/* Generated by Frama-C */
+struct __anonstruct___mpz_struct_1 {
+   int _mp_alloc ;
+   int _mp_size ;
+   unsigned long *_mp_d ;
+};
+typedef struct __anonstruct___mpz_struct_1 __mpz_struct;
+typedef __mpz_struct mpz_t[1];
+/*@ ensures \valid(\old(z));
+    assigns *z;  */
+extern void mpz_init_set_si(__mpz_struct * /*[1]*/ z, long n);
+/*@ requires \valid(x);
+    assigns *x;  */
+extern void mpz_clear(__mpz_struct * /*[1]*/ x);
+/*@ requires \valid(z);
+    assigns \nothing;  */
+extern unsigned long mpz_get_ui(__mpz_struct const * /*[1]*/ z);
+/*@ terminates \false;
+    ensures \false;
+    assigns \nothing;  */
+extern void exit(int status);
+/*@ assigns \nothing;  */
+extern int printf(char const * , ...);
+void e_acsl_fail(char *msg)
+{
+  printf("%s\n",msg);
+  exit(1);
+  return;
+}
+
+int main(void)
+{
+  int __retres;
+  /*@ assert \null ≡ (void *)0; */ ;
+  { mpz_t e_acsl_1; unsigned long e_acsl_2;
+    mpz_init_set_si((__mpz_struct *)(e_acsl_1),(long)0);
+    e_acsl_2 = mpz_get_ui((__mpz_struct const *)(e_acsl_1));
+    if (! ((void *)0 == (void *)e_acsl_2)) {
+      e_acsl_fail((char *)"(\\null == (void *)0)");
+    } mpz_clear((__mpz_struct *)(e_acsl_1));
+  }
+  
+  __retres = 0;
+  return (__retres);
+}
+
+
diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/other_constants.res.oracle b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/other_constants.res.oracle
index f0a4498c942..f4920b64072 100644
--- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/other_constants.res.oracle
+++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/other_constants.res.oracle
@@ -2,39 +2,39 @@
 [value] Computing initial state
 [value] Initial state computed
 [value] Values of globals at initialization
-PROJECT_FILE.i:124:[value] Assertion got status valid.
-PROJECT_FILE.i:127:[value] Assertion got status valid.
+PROJECT_FILE.i:134:[value] Assertion got status valid.
+PROJECT_FILE.i:137:[value] Assertion got status valid.
 [value] computing for function mpz_init_set_si <- main.
-        Called from PROJECT_FILE.i:129.
+        Called from PROJECT_FILE.i:139.
 PROJECT_FILE.i:29:[value] Function mpz_init_set_si: postcondition got status unknown
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_init_set_si <- main.
-        Called from PROJECT_FILE.i:129.
+        Called from PROJECT_FILE.i:139.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_cmp <- main.
-        Called from PROJECT_FILE.i:130.
+        Called from PROJECT_FILE.i:140.
 PROJECT_FILE.i:45:[value] Function mpz_cmp: precondition got status valid
 PROJECT_FILE.i:46:[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:131.
+        Called from PROJECT_FILE.i:141.
 [value] computing for function printf <- e_acsl_fail <- main.
-        Called from PROJECT_FILE.i:115.
+        Called from PROJECT_FILE.i:125.
 [value] Done for function printf
 [value] computing for function exit <- e_acsl_fail <- main.
-        Called from PROJECT_FILE.i:115.
-PROJECT_FILE.i:105:[value] Function exit: postcondition got status invalid
+        Called from PROJECT_FILE.i:125.
+PROJECT_FILE.i:115:[value] Function exit: postcondition got status invalid
 [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 <- main.
-        Called from PROJECT_FILE.i:132.
+        Called from PROJECT_FILE.i:142.
 PROJECT_FILE.i:39:[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:132.
+        Called from PROJECT_FILE.i:142.
 [value] Done for function mpz_clear
-PROJECT_FILE.i:135:[value] Assertion got status valid.
+PROJECT_FILE.i:145:[value] Assertion got status valid.
 [value] Recording results for main
 [value] done for function main
 [from] Computing for function mpz_init_set_si
@@ -44,10 +44,10 @@ PROJECT_FILE.i:135:[value] Assertion got status valid.
 [from] Computing for function e_acsl_fail
 [from] Computing for function printf <-e_acsl_fail
 [from] Done for function printf
-PROJECT_FILE.i:115:[from] warning: variadic call detected. Using only 1 argument(s).
+PROJECT_FILE.i:125:[from] warning: variadic call detected. Using only 1 argument(s).
 [from] Computing for function exit <-e_acsl_fail
 [from] Done for function exit
-PROJECT_FILE.i:115:[from] Non terminating function (no dependencies)
+PROJECT_FILE.i:125:[from] Non terminating function (no dependencies)
 [from] Done for function e_acsl_fail
 [from] Computing for function mpz_clear
 [from] Done for function mpz_clear
diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/ptr.err.oracle b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/ptr.err.oracle
new file mode 100644
index 00000000000..e69de29bb2d
diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/ptr.res.oracle b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/ptr.res.oracle
new file mode 100644
index 00000000000..81bc57d7fbe
--- /dev/null
+++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/ptr.res.oracle
@@ -0,0 +1,720 @@
+:0:[e-acsl] warning: missing guard for ensuring that p is a valid memory access
+:0:[e-acsl] warning: missing guard for ensuring that 0 is a valid array index
+:0:[e-acsl] warning: missing guard for ensuring that 2 is a valid array index
+:0:[e-acsl] warning: missing guard for ensuring that i is a valid array index
+:0:[e-acsl] warning: missing guard for ensuring that 2-i is a valid array index
+:0:[e-acsl] warning: missing guard for ensuring that &t[2]-i is a valid pointer
+:0:[e-acsl] warning: missing guard for ensuring that &t[2]-i 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
+PROJECT_FILE.i:138:[value] Assertion got status valid.
+[value] computing for function mpz_init_set_si <- main.
+        Called from PROJECT_FILE.i:140.
+PROJECT_FILE.i:29:[value] Function mpz_init_set_si: postcondition got status unknown
+[value] Done for function mpz_init_set_si
+[value] computing for function mpz_init_set_si <- main.
+        Called from PROJECT_FILE.i:140.
+[value] Done for function mpz_init_set_si
+[value] computing for function mpz_cmp <- main.
+        Called from PROJECT_FILE.i:141.
+PROJECT_FILE.i:45:[value] Function mpz_cmp: precondition got status valid
+PROJECT_FILE.i:46:[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:142.
+[value] computing for function printf <- e_acsl_fail <- main.
+        Called from PROJECT_FILE.i:125.
+[value] Done for function printf
+[value] computing for function exit <- e_acsl_fail <- main.
+        Called from PROJECT_FILE.i:125.
+PROJECT_FILE.i:115:[value] Function exit: postcondition got status invalid
+[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 <- main.
+        Called from PROJECT_FILE.i:143.
+PROJECT_FILE.i:39:[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:143.
+[value] Done for function mpz_clear
+PROJECT_FILE.i:146:[value] Assertion got status valid.
+[value] computing for function mpz_init_set_si <- main.
+        Called from PROJECT_FILE.i:148.
+[value] Done for function mpz_init_set_si
+[value] computing for function mpz_init_set_si <- main.
+        Called from PROJECT_FILE.i:148.
+[value] Done for function mpz_init_set_si
+[value] computing for function mpz_cmp <- main.
+        Called from PROJECT_FILE.i:149.
+[value] Done for function mpz_cmp
+[value] computing for function e_acsl_fail <- main.
+        Called from PROJECT_FILE.i:150.
+[value] computing for function printf <- e_acsl_fail <- main.
+        Called from PROJECT_FILE.i:125.
+[value] Done for function printf
+[value] computing for function exit <- e_acsl_fail <- main.
+        Called from PROJECT_FILE.i:125.
+[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 <- main.
+        Called from PROJECT_FILE.i:151.
+[value] Done for function mpz_clear
+[value] computing for function mpz_clear <- main.
+        Called from PROJECT_FILE.i:151.
+[value] Done for function mpz_clear
+PROJECT_FILE.i:154:[value] Assertion got status valid.
+[value] computing for function mpz_init_set_si <- main.
+        Called from PROJECT_FILE.i:156.
+[value] Done for function mpz_init_set_si
+[value] computing for function mpz_get_si <- main.
+        Called from PROJECT_FILE.i:157.
+PROJECT_FILE.i:92:[value] Function mpz_get_si: precondition got status valid
+[value] Done for function mpz_get_si
+PROJECT_FILE.i:158:[kernel] warning: accessing out of bounds index [-2147483648..2147483647].
+                  assert 0 ≤ (int)e_acsl_8 ∧ (int)e_acsl_8 < 3;
+[value] computing for function mpz_init_set_si <- main.
+        Called from PROJECT_FILE.i:158.
+[value] Done for function mpz_init_set_si
+[value] computing for function mpz_init_set_si <- main.
+        Called from PROJECT_FILE.i:158.
+[value] Done for function mpz_init_set_si
+[value] computing for function mpz_cmp <- main.
+        Called from PROJECT_FILE.i:159.
+[value] Done for function mpz_cmp
+[value] computing for function e_acsl_fail <- main.
+        Called from PROJECT_FILE.i:160.
+[value] computing for function printf <- e_acsl_fail <- main.
+        Called from PROJECT_FILE.i:125.
+[value] Done for function printf
+[value] computing for function exit <- e_acsl_fail <- main.
+        Called from PROJECT_FILE.i:125.
+[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 <- main.
+        Called from PROJECT_FILE.i:161.
+[value] Done for function mpz_clear
+[value] computing for function mpz_clear <- main.
+        Called from PROJECT_FILE.i:161.
+[value] Done for function mpz_clear
+[value] computing for function mpz_clear <- main.
+        Called from PROJECT_FILE.i:161.
+[value] Done for function mpz_clear
+PROJECT_FILE.i:165:[value] entering loop for the first time
+PROJECT_FILE.i:167:[value] Assertion got status valid.
+[value] computing for function mpz_init_set_si <- main.
+        Called from PROJECT_FILE.i:169.
+[value] Done for function mpz_init_set_si
+[value] computing for function mpz_init_set_si <- main.
+        Called from PROJECT_FILE.i:170.
+[value] Done for function mpz_init_set_si
+[value] computing for function mpz_init_set_si <- main.
+        Called from PROJECT_FILE.i:170.
+[value] Done for function mpz_init_set_si
+[value] computing for function mpz_init <- main.
+        Called from PROJECT_FILE.i:171.
+PROJECT_FILE.i:21:[value] Function mpz_init: postcondition got status unknown
+[value] Done for function mpz_init
+[value] computing for function mpz_add <- main.
+        Called from PROJECT_FILE.i:171.
+PROJECT_FILE.i:60:[value] Function mpz_add: precondition got status valid
+PROJECT_FILE.i:61:[value] Function mpz_add: precondition got status valid
+PROJECT_FILE.i:62:[value] Function mpz_add: precondition got status valid
+[value] Done for function mpz_add
+[value] computing for function mpz_cmp <- main.
+        Called from PROJECT_FILE.i:172.
+[value] Done for function mpz_cmp
+[value] computing for function e_acsl_fail <- main.
+        Called from PROJECT_FILE.i:173.
+[value] computing for function printf <- e_acsl_fail <- main.
+        Called from PROJECT_FILE.i:125.
+[value] Done for function printf
+[value] computing for function exit <- e_acsl_fail <- main.
+        Called from PROJECT_FILE.i:125.
+[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 <- main.
+        Called from PROJECT_FILE.i:174.
+[value] Done for function mpz_clear
+[value] computing for function mpz_clear <- main.
+        Called from PROJECT_FILE.i:174.
+[value] Done for function mpz_clear
+[value] computing for function mpz_clear <- main.
+        Called from PROJECT_FILE.i:174.
+[value] Done for function mpz_clear
+[value] computing for function mpz_clear <- main.
+        Called from PROJECT_FILE.i:175.
+[value] Done for function mpz_clear
+PROJECT_FILE.i:178:[value] Assertion got status valid.
+[value] computing for function mpz_init_set_si <- main.
+        Called from PROJECT_FILE.i:181.
+[value] Done for function mpz_init_set_si
+[value] computing for function mpz_init_set_si <- main.
+        Called from PROJECT_FILE.i:182.
+[value] Done for function mpz_init_set_si
+[value] computing for function mpz_init <- main.
+        Called from PROJECT_FILE.i:182.
+[value] Done for function mpz_init
+[value] computing for function mpz_sub <- main.
+        Called from PROJECT_FILE.i:183.
+PROJECT_FILE.i:66:[value] Function mpz_sub: precondition got status valid
+PROJECT_FILE.i:67:[value] Function mpz_sub: precondition got status valid
+PROJECT_FILE.i:68:[value] Function mpz_sub: precondition got status valid
+[value] Done for function mpz_sub
+[value] computing for function mpz_get_si <- main.
+        Called from PROJECT_FILE.i:184.
+[value] Done for function mpz_get_si
+PROJECT_FILE.i:185:[kernel] warning: accessing out of bounds index [-2147483648..2147483647].
+                  assert 0 ≤ (int)e_acsl_20 ∧ (int)e_acsl_20 < 3;
+[value] computing for function mpz_init_set_si <- main.
+        Called from PROJECT_FILE.i:185.
+[value] Done for function mpz_init_set_si
+[value] computing for function mpz_init_set_si <- main.
+        Called from PROJECT_FILE.i:186.
+[value] Done for function mpz_init_set_si
+[value] computing for function mpz_init_set_si <- main.
+        Called from PROJECT_FILE.i:186.
+[value] Done for function mpz_init_set_si
+[value] computing for function mpz_init <- main.
+        Called from PROJECT_FILE.i:187.
+[value] Done for function mpz_init
+[value] computing for function mpz_sub <- main.
+        Called from PROJECT_FILE.i:187.
+[value] Done for function mpz_sub
+[value] computing for function mpz_cmp <- main.
+        Called from PROJECT_FILE.i:188.
+[value] Done for function mpz_cmp
+[value] computing for function e_acsl_fail <- main.
+        Called from PROJECT_FILE.i:189.
+[value] computing for function printf <- e_acsl_fail <- main.
+        Called from PROJECT_FILE.i:125.
+[value] Done for function printf
+[value] computing for function exit <- e_acsl_fail <- main.
+        Called from PROJECT_FILE.i:125.
+[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 <- main.
+        Called from PROJECT_FILE.i:190.
+[value] Done for function mpz_clear
+[value] computing for function mpz_clear <- main.
+        Called from PROJECT_FILE.i:190.
+[value] Done for function mpz_clear
+[value] computing for function mpz_clear <- main.
+        Called from PROJECT_FILE.i:190.
+[value] Done for function mpz_clear
+[value] computing for function mpz_clear <- main.
+        Called from PROJECT_FILE.i:191.
+[value] Done for function mpz_clear
+[value] computing for function mpz_clear <- main.
+        Called from PROJECT_FILE.i:191.
+[value] Done for function mpz_clear
+[value] computing for function mpz_clear <- main.
+        Called from PROJECT_FILE.i:191.
+[value] Done for function mpz_clear
+[value] computing for function mpz_clear <- main.
+        Called from PROJECT_FILE.i:192.
+[value] Done for function mpz_clear
+PROJECT_FILE.i:195:[value] Assertion got status valid.
+[value] computing for function mpz_init_set_si <- main.
+        Called from PROJECT_FILE.i:198.
+[value] Done for function mpz_init_set_si
+[value] computing for function mpz_get_si <- main.
+        Called from PROJECT_FILE.i:199.
+[value] Done for function mpz_get_si
+[value] computing for function mpz_init_set_si <- main.
+        Called from PROJECT_FILE.i:199.
+[value] Done for function mpz_init_set_si
+[value] computing for function mpz_get_si <- main.
+        Called from PROJECT_FILE.i:200.
+[value] Done for function mpz_get_si
+PROJECT_FILE.i:201:[kernel] warning: out of bounds read. assert \valid(&t[(int)e_acsl_27]-(int)e_acsl_29);
+[value] computing for function mpz_init_set_si <- main.
+        Called from PROJECT_FILE.i:201.
+[value] Done for function mpz_init_set_si
+[value] computing for function mpz_init_set_si <- main.
+        Called from PROJECT_FILE.i:202.
+[value] Done for function mpz_init_set_si
+[value] computing for function mpz_init_set_si <- main.
+        Called from PROJECT_FILE.i:202.
+[value] Done for function mpz_init_set_si
+[value] computing for function mpz_init <- main.
+        Called from PROJECT_FILE.i:203.
+[value] Done for function mpz_init
+[value] computing for function mpz_sub <- main.
+        Called from PROJECT_FILE.i:203.
+[value] Done for function mpz_sub
+[value] computing for function mpz_cmp <- main.
+        Called from PROJECT_FILE.i:204.
+[value] Done for function mpz_cmp
+[value] computing for function e_acsl_fail <- main.
+        Called from PROJECT_FILE.i:205.
+[value] computing for function printf <- e_acsl_fail <- main.
+        Called from PROJECT_FILE.i:125.
+[value] Done for function printf
+[value] computing for function exit <- e_acsl_fail <- main.
+        Called from PROJECT_FILE.i:125.
+[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 <- main.
+        Called from PROJECT_FILE.i:206.
+[value] Done for function mpz_clear
+[value] computing for function mpz_clear <- main.
+        Called from PROJECT_FILE.i:206.
+[value] Done for function mpz_clear
+[value] computing for function mpz_clear <- main.
+        Called from PROJECT_FILE.i:206.
+[value] Done for function mpz_clear
+[value] computing for function mpz_clear <- main.
+        Called from PROJECT_FILE.i:207.
+[value] Done for function mpz_clear
+[value] computing for function mpz_clear <- main.
+        Called from PROJECT_FILE.i:207.
+[value] Done for function mpz_clear
+[value] computing for function mpz_clear <- main.
+        Called from PROJECT_FILE.i:207.
+[value] Done for function mpz_clear
+PROJECT_FILE.i:167:[value] Assertion got status unknown.
+[value] computing for function mpz_init_set_si <- main.
+        Called from PROJECT_FILE.i:169.
+[value] Done for function mpz_init_set_si
+[value] computing for function mpz_init_set_si <- main.
+        Called from PROJECT_FILE.i:170.
+[value] Done for function mpz_init_set_si
+[value] computing for function mpz_init_set_si <- main.
+        Called from PROJECT_FILE.i:170.
+[value] Done for function mpz_init_set_si
+[value] computing for function mpz_init <- main.
+        Called from PROJECT_FILE.i:171.
+[value] Done for function mpz_init
+[value] computing for function mpz_add <- main.
+        Called from PROJECT_FILE.i:171.
+[value] Done for function mpz_add
+[value] computing for function mpz_cmp <- main.
+        Called from PROJECT_FILE.i:172.
+[value] Done for function mpz_cmp
+[value] computing for function e_acsl_fail <- main.
+        Called from PROJECT_FILE.i:173.
+[value] computing for function printf <- e_acsl_fail <- main.
+        Called from PROJECT_FILE.i:125.
+[value] Done for function printf
+[value] computing for function exit <- e_acsl_fail <- main.
+        Called from PROJECT_FILE.i:125.
+[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 <- main.
+        Called from PROJECT_FILE.i:174.
+[value] Done for function mpz_clear
+[value] computing for function mpz_clear <- main.
+        Called from PROJECT_FILE.i:174.
+[value] Done for function mpz_clear
+[value] computing for function mpz_clear <- main.
+        Called from PROJECT_FILE.i:174.
+[value] Done for function mpz_clear
+[value] computing for function mpz_clear <- main.
+        Called from PROJECT_FILE.i:175.
+[value] Done for function mpz_clear
+PROJECT_FILE.i:178:[value] Assertion got status unknown.
+[value] computing for function mpz_init_set_si <- main.
+        Called from PROJECT_FILE.i:181.
+[value] Done for function mpz_init_set_si
+[value] computing for function mpz_init_set_si <- main.
+        Called from PROJECT_FILE.i:182.
+[value] Done for function mpz_init_set_si
+[value] computing for function mpz_init <- main.
+        Called from PROJECT_FILE.i:182.
+[value] Done for function mpz_init
+[value] computing for function mpz_sub <- main.
+        Called from PROJECT_FILE.i:183.
+[value] Done for function mpz_sub
+[value] computing for function mpz_get_si <- main.
+        Called from PROJECT_FILE.i:184.
+[value] Done for function mpz_get_si
+[value] computing for function mpz_init_set_si <- main.
+        Called from PROJECT_FILE.i:185.
+[value] Done for function mpz_init_set_si
+[value] computing for function mpz_init_set_si <- main.
+        Called from PROJECT_FILE.i:186.
+[value] Done for function mpz_init_set_si
+[value] computing for function mpz_init_set_si <- main.
+        Called from PROJECT_FILE.i:186.
+[value] Done for function mpz_init_set_si
+[value] computing for function mpz_init <- main.
+        Called from PROJECT_FILE.i:187.
+[value] Done for function mpz_init
+[value] computing for function mpz_sub <- main.
+        Called from PROJECT_FILE.i:187.
+[value] Done for function mpz_sub
+[value] computing for function mpz_cmp <- main.
+        Called from PROJECT_FILE.i:188.
+[value] Done for function mpz_cmp
+[value] computing for function e_acsl_fail <- main.
+        Called from PROJECT_FILE.i:189.
+[value] computing for function printf <- e_acsl_fail <- main.
+        Called from PROJECT_FILE.i:125.
+[value] Done for function printf
+[value] computing for function exit <- e_acsl_fail <- main.
+        Called from PROJECT_FILE.i:125.
+[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 <- main.
+        Called from PROJECT_FILE.i:190.
+[value] Done for function mpz_clear
+[value] computing for function mpz_clear <- main.
+        Called from PROJECT_FILE.i:190.
+[value] Done for function mpz_clear
+[value] computing for function mpz_clear <- main.
+        Called from PROJECT_FILE.i:190.
+[value] Done for function mpz_clear
+[value] computing for function mpz_clear <- main.
+        Called from PROJECT_FILE.i:191.
+[value] Done for function mpz_clear
+[value] computing for function mpz_clear <- main.
+        Called from PROJECT_FILE.i:191.
+[value] Done for function mpz_clear
+[value] computing for function mpz_clear <- main.
+        Called from PROJECT_FILE.i:191.
+[value] Done for function mpz_clear
+[value] computing for function mpz_clear <- main.
+        Called from PROJECT_FILE.i:192.
+[value] Done for function mpz_clear
+PROJECT_FILE.i:195:[value] Assertion got status unknown.
+[value] computing for function mpz_init_set_si <- main.
+        Called from PROJECT_FILE.i:198.
+[value] Done for function mpz_init_set_si
+[value] computing for function mpz_get_si <- main.
+        Called from PROJECT_FILE.i:199.
+[value] Done for function mpz_get_si
+[value] computing for function mpz_init_set_si <- main.
+        Called from PROJECT_FILE.i:199.
+[value] Done for function mpz_init_set_si
+[value] computing for function mpz_get_si <- main.
+        Called from PROJECT_FILE.i:200.
+[value] Done for function mpz_get_si
+[value] computing for function mpz_init_set_si <- main.
+        Called from PROJECT_FILE.i:201.
+[value] Done for function mpz_init_set_si
+[value] computing for function mpz_init_set_si <- main.
+        Called from PROJECT_FILE.i:202.
+[value] Done for function mpz_init_set_si
+[value] computing for function mpz_init_set_si <- main.
+        Called from PROJECT_FILE.i:202.
+[value] Done for function mpz_init_set_si
+[value] computing for function mpz_init <- main.
+        Called from PROJECT_FILE.i:203.
+[value] Done for function mpz_init
+[value] computing for function mpz_sub <- main.
+        Called from PROJECT_FILE.i:203.
+[value] Done for function mpz_sub
+[value] computing for function mpz_cmp <- main.
+        Called from PROJECT_FILE.i:204.
+[value] Done for function mpz_cmp
+[value] computing for function e_acsl_fail <- main.
+        Called from PROJECT_FILE.i:205.
+[value] computing for function printf <- e_acsl_fail <- main.
+        Called from PROJECT_FILE.i:125.
+[value] Done for function printf
+[value] computing for function exit <- e_acsl_fail <- main.
+        Called from PROJECT_FILE.i:125.
+[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 <- main.
+        Called from PROJECT_FILE.i:206.
+[value] Done for function mpz_clear
+[value] computing for function mpz_clear <- main.
+        Called from PROJECT_FILE.i:206.
+[value] Done for function mpz_clear
+[value] computing for function mpz_clear <- main.
+        Called from PROJECT_FILE.i:206.
+[value] Done for function mpz_clear
+[value] computing for function mpz_clear <- main.
+        Called from PROJECT_FILE.i:207.
+[value] Done for function mpz_clear
+[value] computing for function mpz_clear <- main.
+        Called from PROJECT_FILE.i:207.
+[value] Done for function mpz_clear
+[value] computing for function mpz_clear <- main.
+        Called from PROJECT_FILE.i:207.
+[value] Done for function mpz_clear
+PROJECT_FILE.i:210:[value] assigning non deterministic value for the first time
+PROJECT_FILE.i:216:[value] Assertion got status valid.
+[value] computing for function mpz_init_set_si <- main.
+        Called from PROJECT_FILE.i:218.
+[value] Done for function mpz_init_set_si
+[value] computing for function mpz_init_set_si <- main.
+        Called from PROJECT_FILE.i:218.
+[value] Done for function mpz_init_set_si
+[value] computing for function mpz_cmp <- main.
+        Called from PROJECT_FILE.i:219.
+[value] Done for function mpz_cmp
+[value] computing for function e_acsl_fail <- main.
+        Called from PROJECT_FILE.i:220.
+[value] computing for function printf <- e_acsl_fail <- main.
+        Called from PROJECT_FILE.i:125.
+[value] Done for function printf
+[value] computing for function exit <- e_acsl_fail <- main.
+        Called from PROJECT_FILE.i:125.
+[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 <- main.
+        Called from PROJECT_FILE.i:221.
+[value] Done for function mpz_clear
+[value] computing for function mpz_clear <- main.
+        Called from PROJECT_FILE.i:221.
+[value] Done for function mpz_clear
+[value] Recording results for main
+[value] done for function main
+[from] Computing for function mpz_init_set_si
+[from] Done for function mpz_init_set_si
+[from] Computing for function mpz_cmp
+[from] Done for function mpz_cmp
+[from] Computing for function e_acsl_fail
+[from] Computing for function printf <-e_acsl_fail
+[from] Done for function printf
+PROJECT_FILE.i:125:[from] warning: variadic call detected. Using only 1 argument(s).
+[from] Computing for function exit <-e_acsl_fail
+[from] Done for function exit
+PROJECT_FILE.i:125:[from] Non terminating function (no dependencies)
+[from] Done for function e_acsl_fail
+[from] Computing for function mpz_clear
+[from] Done for function mpz_clear
+[from] Computing for function mpz_get_si
+[from] Done for function mpz_get_si
+[from] Computing for function mpz_init
+[from] Done for function mpz_init
+[from] Computing for function mpz_add
+[from] Done for function mpz_add
+[from] Computing for function mpz_sub
+[from] Done for function mpz_sub
+[value] ====== VALUES COMPUTED ======
+[value] Values for function e_acsl_fail:
+          NON TERMINATING FUNCTION
+[value] Values for function main:
+          __retres ∈ {0}
+          x ∈ {1}
+          t[0] ∈ {2}
+           [1] ∈ {3}
+           [2] ∈ {5}
+          p ∈ {{ &t + {8} }}
+/* Generated by Frama-C */
+struct __anonstruct___mpz_struct_1 {
+   int _mp_alloc ;
+   int _mp_size ;
+   unsigned long *_mp_d ;
+};
+typedef struct __anonstruct___mpz_struct_1 __mpz_struct;
+typedef __mpz_struct mpz_t[1];
+/*@ ensures \valid(\old(x));
+    assigns *x;  */
+extern void mpz_init(__mpz_struct * /*[1]*/ x);
+/*@ ensures \valid(\old(z));
+    assigns *z;  */
+extern void mpz_init_set_si(__mpz_struct * /*[1]*/ z, long n);
+/*@ requires \valid(x);
+    assigns *x;  */
+extern void mpz_clear(__mpz_struct * /*[1]*/ x);
+/*@ requires \valid(z1);
+    requires \valid(z2);
+    assigns \nothing;  */
+extern int mpz_cmp(__mpz_struct const * /*[1]*/ z1,
+                   __mpz_struct const * /*[1]*/ z2);
+/*@ requires \valid(z1);
+    requires \valid(z2);
+    requires \valid(z3);
+    assigns *z1; 
+*/
+extern void mpz_add(__mpz_struct * /*[1]*/ z1,
+                    __mpz_struct const * /*[1]*/ z2,
+                    __mpz_struct const * /*[1]*/ z3);
+/*@ requires \valid(z1);
+    requires \valid(z2);
+    requires \valid(z3);
+    assigns *z1; 
+*/
+extern void mpz_sub(__mpz_struct * /*[1]*/ z1,
+                    __mpz_struct const * /*[1]*/ z2,
+                    __mpz_struct const * /*[1]*/ z3);
+/*@ requires \valid(z);
+    assigns \nothing;  */
+extern long mpz_get_si(__mpz_struct const * /*[1]*/ z);
+/*@ terminates \false;
+    ensures \false;
+    assigns \nothing;  */
+extern void exit(int status);
+/*@ assigns \nothing;  */
+extern int printf(char const * , ...);
+void e_acsl_fail(char *msg)
+{
+  printf("%s\n",msg);
+  exit(1);
+  return;
+}
+
+int main(void)
+{
+  int __retres;
+  int x;
+  int t[3];
+  int *p;
+  x = 1;
+  t[0] = 2;
+  t[1] = 3;
+  t[2] = 4;
+  p = & x;
+  /*@ assert *p ≡ 1; */ ;
+  { mpz_t e_acsl_1; mpz_t e_acsl_2; int e_acsl_3;
+    mpz_init_set_si((__mpz_struct *)(e_acsl_1),(long)*p);
+    mpz_init_set_si((__mpz_struct *)(e_acsl_2),(long)1);
+    e_acsl_3 = mpz_cmp((__mpz_struct const *)(e_acsl_1),
+                       (__mpz_struct const *)(e_acsl_2));
+    if (! (e_acsl_3 == 0)) { e_acsl_fail((char *)"(*p == 1)"); }
+    mpz_clear((__mpz_struct *)(e_acsl_1));
+    mpz_clear((__mpz_struct *)(e_acsl_2));
+  }
+  
+  /*@ assert t[0] ≡ 2; */ ;
+  { mpz_t e_acsl_4; mpz_t e_acsl_5; int e_acsl_6;
+    mpz_init_set_si((__mpz_struct *)(e_acsl_4),(long)t[0]);
+    mpz_init_set_si((__mpz_struct *)(e_acsl_5),(long)2);
+    e_acsl_6 = mpz_cmp((__mpz_struct const *)(e_acsl_4),
+                       (__mpz_struct const *)(e_acsl_5));
+    if (! (e_acsl_6 == 0)) { e_acsl_fail((char *)"(t[0] == 2)"); }
+    mpz_clear((__mpz_struct *)(e_acsl_4));
+    mpz_clear((__mpz_struct *)(e_acsl_5));
+  }
+  
+  /*@ assert t[2] ≡ 4; */ ;
+  { mpz_t e_acsl_7; long e_acsl_8; mpz_t e_acsl_9; mpz_t e_acsl_10;
+    int e_acsl_11; mpz_init_set_si((__mpz_struct *)(e_acsl_7),(long)2);
+    e_acsl_8 = mpz_get_si((__mpz_struct const *)(e_acsl_7));
+    /*@ assert 0 ≤ (int)e_acsl_8 ∧ (int)e_acsl_8 < 3;
+          // synthesized
+      
+    */
+    mpz_init_set_si((__mpz_struct *)(e_acsl_9),(long)t[(int)e_acsl_8]);
+    mpz_init_set_si((__mpz_struct *)(e_acsl_10),(long)4);
+    e_acsl_11 = mpz_cmp((__mpz_struct const *)(e_acsl_9),
+                        (__mpz_struct const *)(e_acsl_10));
+    if (! (e_acsl_11 == 0)) { e_acsl_fail((char *)"(t[2] == 4)"); }
+    mpz_clear((__mpz_struct *)(e_acsl_7));
+    mpz_clear((__mpz_struct *)(e_acsl_9));
+    mpz_clear((__mpz_struct *)(e_acsl_10));
+  }
+  
+  { int i; i = 0;
+    while (1) {
+      if (! (i < 2)) { break; }
+      /*@ assert t[i] ≡ i+2; */ ;
+      { mpz_t e_acsl_12; mpz_t e_acsl_13; mpz_t e_acsl_14; mpz_t e_acsl_15;
+        int e_acsl_16;
+        mpz_init_set_si((__mpz_struct *)(e_acsl_12),(long)t[i]);
+        mpz_init_set_si((__mpz_struct *)(e_acsl_13),(long)i);
+        mpz_init_set_si((__mpz_struct *)(e_acsl_14),(long)2);
+        mpz_init((__mpz_struct *)(e_acsl_15));
+        mpz_add((__mpz_struct *)(e_acsl_15),
+                (__mpz_struct const *)(e_acsl_13),
+                (__mpz_struct const *)(e_acsl_14));
+        e_acsl_16 = mpz_cmp((__mpz_struct const *)(e_acsl_12),
+                            (__mpz_struct const *)(e_acsl_15));
+        if (! (e_acsl_16 == 0)) { e_acsl_fail((char *)"(t[i] == i+2)"); }
+        mpz_clear((__mpz_struct *)(e_acsl_12));
+        mpz_clear((__mpz_struct *)(e_acsl_13));
+        mpz_clear((__mpz_struct *)(e_acsl_14));
+        mpz_clear((__mpz_struct *)(e_acsl_15));
+      }
+      
+      /*@ assert t[2-i] ≡ 4-i; */ ;
+      { mpz_t e_acsl_17; mpz_t e_acsl_18; mpz_t e_acsl_19; long e_acsl_20;
+        mpz_t e_acsl_21; mpz_t e_acsl_22; mpz_t e_acsl_23; mpz_t e_acsl_24;
+        int e_acsl_25; mpz_init_set_si((__mpz_struct *)(e_acsl_17),(long)2);
+        mpz_init_set_si((__mpz_struct *)(e_acsl_18),(long)i);
+        mpz_init((__mpz_struct *)(e_acsl_19));
+        mpz_sub((__mpz_struct *)(e_acsl_19),
+                (__mpz_struct const *)(e_acsl_17),
+                (__mpz_struct const *)(e_acsl_18));
+        e_acsl_20 = mpz_get_si((__mpz_struct const *)(e_acsl_19));
+        /*@ assert 0 ≤ (int)e_acsl_20 ∧ (int)e_acsl_20 < 3;
+              // synthesized
+          
+        */
+        mpz_init_set_si((__mpz_struct *)(e_acsl_21),(long)t[(int)e_acsl_20]);
+        mpz_init_set_si((__mpz_struct *)(e_acsl_22),(long)4);
+        mpz_init_set_si((__mpz_struct *)(e_acsl_23),(long)i);
+        mpz_init((__mpz_struct *)(e_acsl_24));
+        mpz_sub((__mpz_struct *)(e_acsl_24),
+                (__mpz_struct const *)(e_acsl_22),
+                (__mpz_struct const *)(e_acsl_23));
+        e_acsl_25 = mpz_cmp((__mpz_struct const *)(e_acsl_21),
+                            (__mpz_struct const *)(e_acsl_24));
+        if (! (e_acsl_25 == 0)) { e_acsl_fail((char *)"(t[2-i] == 4-i)"); }
+        mpz_clear((__mpz_struct *)(e_acsl_17));
+        mpz_clear((__mpz_struct *)(e_acsl_18));
+        mpz_clear((__mpz_struct *)(e_acsl_19));
+        mpz_clear((__mpz_struct *)(e_acsl_21));
+        mpz_clear((__mpz_struct *)(e_acsl_22));
+        mpz_clear((__mpz_struct *)(e_acsl_23));
+        mpz_clear((__mpz_struct *)(e_acsl_24));
+      }
+      
+      /*@ assert *(&t[2]-i) ≡ 4-i; */ ;
+      { mpz_t e_acsl_26; long e_acsl_27; mpz_t e_acsl_28; long e_acsl_29;
+        mpz_t e_acsl_30; mpz_t e_acsl_31; mpz_t e_acsl_32; mpz_t e_acsl_33;
+        int e_acsl_34; mpz_init_set_si((__mpz_struct *)(e_acsl_26),(long)2);
+        e_acsl_27 = mpz_get_si((__mpz_struct const *)(e_acsl_26));
+        mpz_init_set_si((__mpz_struct *)(e_acsl_28),(long)i);
+        e_acsl_29 = mpz_get_si((__mpz_struct const *)(e_acsl_28));
+        /*@ assert \valid(&t[(int)e_acsl_27]-(int)e_acsl_29);
+              // synthesized
+          
+        */
+        mpz_init_set_si((__mpz_struct *)(e_acsl_30),
+                        (long)*(& t[(int)e_acsl_27] - (int)e_acsl_29));
+        mpz_init_set_si((__mpz_struct *)(e_acsl_31),(long)4);
+        mpz_init_set_si((__mpz_struct *)(e_acsl_32),(long)i);
+        mpz_init((__mpz_struct *)(e_acsl_33));
+        mpz_sub((__mpz_struct *)(e_acsl_33),
+                (__mpz_struct const *)(e_acsl_31),
+                (__mpz_struct const *)(e_acsl_32));
+        e_acsl_34 = mpz_cmp((__mpz_struct const *)(e_acsl_30),
+                            (__mpz_struct const *)(e_acsl_33));
+        if (! (e_acsl_34 == 0)) { e_acsl_fail((char *)"(*(&t[2]-i) == 4-i)");
+        } mpz_clear((__mpz_struct *)(e_acsl_26));
+        mpz_clear((__mpz_struct *)(e_acsl_28));
+        mpz_clear((__mpz_struct *)(e_acsl_30));
+        mpz_clear((__mpz_struct *)(e_acsl_31));
+        mpz_clear((__mpz_struct *)(e_acsl_32));
+        mpz_clear((__mpz_struct *)(e_acsl_33));
+      }
+      
+      i ++;
+    }
+  }
+  
+  p = & t[2];
+  t[2] = 5;
+  /*@ assert *p ≡ 5; */ ;
+  { mpz_t e_acsl_35; mpz_t e_acsl_36; int e_acsl_37;
+    mpz_init_set_si((__mpz_struct *)(e_acsl_35),(long)*p);
+    mpz_init_set_si((__mpz_struct *)(e_acsl_36),(long)5);
+    e_acsl_37 = mpz_cmp((__mpz_struct const *)(e_acsl_35),
+                        (__mpz_struct const *)(e_acsl_36));
+    if (! (e_acsl_37 == 0)) { e_acsl_fail((char *)"(*p == 5)"); }
+    mpz_clear((__mpz_struct *)(e_acsl_35));
+    mpz_clear((__mpz_struct *)(e_acsl_36));
+  }
+  
+  __retres = 0;
+  return (__retres);
+}
+
+
diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/sizeof.res.oracle b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/sizeof.res.oracle
index 8da14fb3b3c..290d64bdfb2 100644
--- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/sizeof.res.oracle
+++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/sizeof.res.oracle
@@ -2,8 +2,8 @@
 [value] Computing initial state
 [value] Initial state computed
 [value] Values of globals at initialization
-PROJECT_FILE.i:121:[value] Assertion got status valid.
-PROJECT_FILE.i:124:[value] Assertion got status valid.
+PROJECT_FILE.i:131:[value] Assertion got status valid.
+PROJECT_FILE.i:134:[value] Assertion got status valid.
 [value] Recording results for main
 [value] done for function main
 [value] ====== VALUES COMPUTED ======
diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/stmt_contract.res.oracle b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/stmt_contract.res.oracle
index 489d27a1e0a..b483a01554a 100644
--- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/stmt_contract.res.oracle
+++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/stmt_contract.res.oracle
@@ -3,584 +3,584 @@
 [value] Initial state computed
 [value] Values of globals at initialization
 [value] computing for function mpz_init_set_si <- main.
-        Called from PROJECT_FILE.i:127.
+        Called from PROJECT_FILE.i:137.
 PROJECT_FILE.i:29:[value] Function mpz_init_set_si: postcondition got status unknown
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_init_set_si <- main.
-        Called from PROJECT_FILE.i:127.
+        Called from PROJECT_FILE.i:137.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_cmp <- main.
-        Called from PROJECT_FILE.i:128.
+        Called from PROJECT_FILE.i:138.
 PROJECT_FILE.i:45:[value] Function mpz_cmp: precondition got status valid
 PROJECT_FILE.i:46:[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:129.
+        Called from PROJECT_FILE.i:139.
 [value] computing for function printf <- e_acsl_fail <- main.
-        Called from PROJECT_FILE.i:115.
+        Called from PROJECT_FILE.i:125.
 [value] Done for function printf
 [value] computing for function exit <- e_acsl_fail <- main.
-        Called from PROJECT_FILE.i:115.
-PROJECT_FILE.i:105:[value] Function exit: postcondition got status invalid
+        Called from PROJECT_FILE.i:125.
+PROJECT_FILE.i:115:[value] Function exit: postcondition got status invalid
 [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 <- main.
-        Called from PROJECT_FILE.i:130.
+        Called from PROJECT_FILE.i:140.
 PROJECT_FILE.i:39:[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:130.
+        Called from PROJECT_FILE.i:140.
 [value] Done for function mpz_clear
 [value] computing for function mpz_init_set_si <- main.
-        Called from PROJECT_FILE.i:138.
+        Called from PROJECT_FILE.i:148.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_init_set_si <- main.
-        Called from PROJECT_FILE.i:139.
+        Called from PROJECT_FILE.i:149.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_cmp <- main.
-        Called from PROJECT_FILE.i:140.
+        Called from PROJECT_FILE.i:150.
 [value] Done for function mpz_cmp
 [value] computing for function e_acsl_fail <- main.
-        Called from PROJECT_FILE.i:141.
+        Called from PROJECT_FILE.i:151.
 [value] computing for function printf <- e_acsl_fail <- main.
-        Called from PROJECT_FILE.i:115.
+        Called from PROJECT_FILE.i:125.
 [value] Done for function printf
 [value] computing for function exit <- e_acsl_fail <- main.
-        Called from PROJECT_FILE.i:115.
+        Called from PROJECT_FILE.i:125.
 [value] Done for function exit
 [value] Recording results for e_acsl_fail
 [value] Done for function e_acsl_fail
 [value] computing for function mpz_init_set_si <- main.
-        Called from PROJECT_FILE.i:142.
+        Called from PROJECT_FILE.i:152.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_init_set_si <- main.
-        Called from PROJECT_FILE.i:142.
+        Called from PROJECT_FILE.i:152.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_cmp <- main.
-        Called from PROJECT_FILE.i:143.
+        Called from PROJECT_FILE.i:153.
 [value] Done for function mpz_cmp
 [value] computing for function e_acsl_fail <- main.
-        Called from PROJECT_FILE.i:144.
+        Called from PROJECT_FILE.i:154.
 [value] computing for function printf <- e_acsl_fail <- main.
-        Called from PROJECT_FILE.i:115.
+        Called from PROJECT_FILE.i:125.
 [value] Done for function printf
 [value] computing for function exit <- e_acsl_fail <- main.
-        Called from PROJECT_FILE.i:115.
+        Called from PROJECT_FILE.i:125.
 [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 <- main.
-        Called from PROJECT_FILE.i:145.
+        Called from PROJECT_FILE.i:155.
 [value] Done for function mpz_clear
 [value] computing for function mpz_clear <- main.
-        Called from PROJECT_FILE.i:145.
+        Called from PROJECT_FILE.i:155.
 [value] Done for function mpz_clear
 [value] computing for function mpz_clear <- main.
-        Called from PROJECT_FILE.i:145.
+        Called from PROJECT_FILE.i:155.
 [value] Done for function mpz_clear
 [value] computing for function mpz_clear <- main.
-        Called from PROJECT_FILE.i:146.
+        Called from PROJECT_FILE.i:156.
 [value] Done for function mpz_clear
 [value] computing for function mpz_init_set_si <- main.
-        Called from PROJECT_FILE.i:152.
+        Called from PROJECT_FILE.i:162.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_init_set_si <- main.
-        Called from PROJECT_FILE.i:152.
+        Called from PROJECT_FILE.i:162.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_cmp <- main.
-        Called from PROJECT_FILE.i:153.
+        Called from PROJECT_FILE.i:163.
 [value] Done for function mpz_cmp
 [value] computing for function e_acsl_fail <- main.
-        Called from PROJECT_FILE.i:154.
+        Called from PROJECT_FILE.i:164.
 [value] computing for function printf <- e_acsl_fail <- main.
-        Called from PROJECT_FILE.i:115.
+        Called from PROJECT_FILE.i:125.
 [value] Done for function printf
 [value] computing for function exit <- e_acsl_fail <- main.
-        Called from PROJECT_FILE.i:115.
+        Called from PROJECT_FILE.i:125.
 [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 <- main.
-        Called from PROJECT_FILE.i:155.
+        Called from PROJECT_FILE.i:165.
 [value] Done for function mpz_clear
 [value] computing for function mpz_clear <- main.
-        Called from PROJECT_FILE.i:155.
+        Called from PROJECT_FILE.i:165.
 [value] Done for function mpz_clear
 [value] computing for function mpz_init_set_si <- main.
-        Called from PROJECT_FILE.i:162.
+        Called from PROJECT_FILE.i:172.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_init_set_si <- main.
-        Called from PROJECT_FILE.i:163.
+        Called from PROJECT_FILE.i:173.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_cmp <- main.
-        Called from PROJECT_FILE.i:163.
+        Called from PROJECT_FILE.i:173.
 [value] Done for function mpz_cmp
 [value] computing for function e_acsl_fail <- main.
-        Called from PROJECT_FILE.i:164.
+        Called from PROJECT_FILE.i:174.
 [value] computing for function printf <- e_acsl_fail <- main.
-        Called from PROJECT_FILE.i:115.
+        Called from PROJECT_FILE.i:125.
 [value] Done for function printf
 [value] computing for function exit <- e_acsl_fail <- main.
-        Called from PROJECT_FILE.i:115.
+        Called from PROJECT_FILE.i:125.
 [value] Done for function exit
 [value] Recording results for e_acsl_fail
 [value] Done for function e_acsl_fail
 [value] computing for function mpz_init_set_si <- main.
-        Called from PROJECT_FILE.i:165.
+        Called from PROJECT_FILE.i:175.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_init_set_si <- main.
-        Called from PROJECT_FILE.i:165.
+        Called from PROJECT_FILE.i:175.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_cmp <- main.
-        Called from PROJECT_FILE.i:166.
+        Called from PROJECT_FILE.i:176.
 [value] Done for function mpz_cmp
 [value] computing for function e_acsl_fail <- main.
-        Called from PROJECT_FILE.i:167.
+        Called from PROJECT_FILE.i:177.
 [value] computing for function printf <- e_acsl_fail <- main.
-        Called from PROJECT_FILE.i:115.
+        Called from PROJECT_FILE.i:125.
 [value] Done for function printf
 [value] computing for function exit <- e_acsl_fail <- main.
-        Called from PROJECT_FILE.i:115.
+        Called from PROJECT_FILE.i:125.
 [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 <- main.
-        Called from PROJECT_FILE.i:168.
+        Called from PROJECT_FILE.i:178.
 [value] Done for function mpz_clear
 [value] computing for function mpz_clear <- main.
-        Called from PROJECT_FILE.i:168.
+        Called from PROJECT_FILE.i:178.
 [value] Done for function mpz_clear
 [value] computing for function mpz_clear <- main.
-        Called from PROJECT_FILE.i:168.
+        Called from PROJECT_FILE.i:178.
 [value] Done for function mpz_clear
 [value] computing for function mpz_clear <- main.
-        Called from PROJECT_FILE.i:169.
+        Called from PROJECT_FILE.i:179.
 [value] Done for function mpz_clear
 [value] computing for function mpz_init_set_si <- main.
-        Called from PROJECT_FILE.i:187.
+        Called from PROJECT_FILE.i:197.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_init_set_si <- main.
-        Called from PROJECT_FILE.i:187.
+        Called from PROJECT_FILE.i:197.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_cmp <- main.
-        Called from PROJECT_FILE.i:188.
+        Called from PROJECT_FILE.i:198.
 [value] Done for function mpz_cmp
 [value] computing for function e_acsl_fail <- main.
-        Called from PROJECT_FILE.i:189.
+        Called from PROJECT_FILE.i:199.
 [value] computing for function printf <- e_acsl_fail <- main.
-        Called from PROJECT_FILE.i:115.
+        Called from PROJECT_FILE.i:125.
 [value] Done for function printf
 [value] computing for function exit <- e_acsl_fail <- main.
-        Called from PROJECT_FILE.i:115.
+        Called from PROJECT_FILE.i:125.
 [value] Done for function exit
 [value] Recording results for e_acsl_fail
 [value] Done for function e_acsl_fail
 [value] computing for function mpz_init_set_si <- main.
-        Called from PROJECT_FILE.i:190.
+        Called from PROJECT_FILE.i:200.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_init_set_si <- main.
-        Called from PROJECT_FILE.i:190.
+        Called from PROJECT_FILE.i:200.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_init_set_si <- main.
-        Called from PROJECT_FILE.i:191.
+        Called from PROJECT_FILE.i:201.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_init <- main.
-        Called from PROJECT_FILE.i:191.
+        Called from PROJECT_FILE.i:201.
 PROJECT_FILE.i:21:[value] Function mpz_init: postcondition got status unknown
 [value] Done for function mpz_init
 [value] computing for function mpz_add <- main.
-        Called from PROJECT_FILE.i:192.
+        Called from PROJECT_FILE.i:202.
 PROJECT_FILE.i:60:[value] Function mpz_add: precondition got status valid
 PROJECT_FILE.i:61:[value] Function mpz_add: precondition got status valid
 PROJECT_FILE.i:62:[value] Function mpz_add: precondition got status valid
 [value] Done for function mpz_add
 [value] computing for function mpz_cmp <- main.
-        Called from PROJECT_FILE.i:193.
+        Called from PROJECT_FILE.i:203.
 [value] Done for function mpz_cmp
 [value] computing for function e_acsl_fail <- main.
-        Called from PROJECT_FILE.i:194.
+        Called from PROJECT_FILE.i:204.
 [value] computing for function printf <- e_acsl_fail <- main.
-        Called from PROJECT_FILE.i:115.
+        Called from PROJECT_FILE.i:125.
 [value] Done for function printf
 [value] computing for function exit <- e_acsl_fail <- main.
-        Called from PROJECT_FILE.i:115.
+        Called from PROJECT_FILE.i:125.
 [value] Done for function exit
 [value] Recording results for e_acsl_fail
 [value] Done for function e_acsl_fail
 [value] computing for function mpz_init_set_si <- main.
-        Called from PROJECT_FILE.i:195.
+        Called from PROJECT_FILE.i:205.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_init_set_si <- main.
-        Called from PROJECT_FILE.i:195.
+        Called from PROJECT_FILE.i:205.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_cmp <- main.
-        Called from PROJECT_FILE.i:196.
+        Called from PROJECT_FILE.i:206.
 [value] Done for function mpz_cmp
 [value] computing for function e_acsl_fail <- main.
-        Called from PROJECT_FILE.i:197.
+        Called from PROJECT_FILE.i:207.
 [value] computing for function printf <- e_acsl_fail <- main.
-        Called from PROJECT_FILE.i:115.
+        Called from PROJECT_FILE.i:125.
 [value] Done for function printf
 [value] computing for function exit <- e_acsl_fail <- main.
-        Called from PROJECT_FILE.i:115.
+        Called from PROJECT_FILE.i:125.
 [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 <- main.
-        Called from PROJECT_FILE.i:198.
+        Called from PROJECT_FILE.i:208.
 [value] Done for function mpz_clear
 [value] computing for function mpz_clear <- main.
-        Called from PROJECT_FILE.i:198.
+        Called from PROJECT_FILE.i:208.
 [value] Done for function mpz_clear
 [value] computing for function mpz_clear <- main.
-        Called from PROJECT_FILE.i:198.
+        Called from PROJECT_FILE.i:208.
 [value] Done for function mpz_clear
 [value] computing for function mpz_clear <- main.
-        Called from PROJECT_FILE.i:199.
+        Called from PROJECT_FILE.i:209.
 [value] Done for function mpz_clear
 [value] computing for function mpz_clear <- main.
-        Called from PROJECT_FILE.i:199.
+        Called from PROJECT_FILE.i:209.
 [value] Done for function mpz_clear
 [value] computing for function mpz_clear <- main.
-        Called from PROJECT_FILE.i:199.
+        Called from PROJECT_FILE.i:209.
 [value] Done for function mpz_clear
 [value] computing for function mpz_clear <- main.
-        Called from PROJECT_FILE.i:200.
+        Called from PROJECT_FILE.i:210.
 [value] Done for function mpz_clear
 [value] computing for function mpz_clear <- main.
-        Called from PROJECT_FILE.i:200.
+        Called from PROJECT_FILE.i:210.
 [value] Done for function mpz_clear
 [value] computing for function mpz_init_set_si <- main.
-        Called from PROJECT_FILE.i:205.
+        Called from PROJECT_FILE.i:215.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_init_set_si <- main.
-        Called from PROJECT_FILE.i:205.
+        Called from PROJECT_FILE.i:215.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_cmp <- main.
-        Called from PROJECT_FILE.i:206.
+        Called from PROJECT_FILE.i:216.
 [value] Done for function mpz_cmp
 [value] computing for function e_acsl_fail <- main.
-        Called from PROJECT_FILE.i:207.
+        Called from PROJECT_FILE.i:217.
 [value] computing for function printf <- e_acsl_fail <- main.
-        Called from PROJECT_FILE.i:115.
+        Called from PROJECT_FILE.i:125.
 [value] Done for function printf
 [value] computing for function exit <- e_acsl_fail <- main.
-        Called from PROJECT_FILE.i:115.
+        Called from PROJECT_FILE.i:125.
 [value] Done for function exit
 [value] Recording results for e_acsl_fail
 [value] Done for function e_acsl_fail
 [value] computing for function mpz_init_set_si <- main.
-        Called from PROJECT_FILE.i:208.
+        Called from PROJECT_FILE.i:218.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_init_set_si <- main.
-        Called from PROJECT_FILE.i:208.
+        Called from PROJECT_FILE.i:218.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_init_set_si <- main.
-        Called from PROJECT_FILE.i:209.
+        Called from PROJECT_FILE.i:219.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_init <- main.
-        Called from PROJECT_FILE.i:209.
+        Called from PROJECT_FILE.i:219.
 [value] Done for function mpz_init
 [value] computing for function mpz_add <- main.
-        Called from PROJECT_FILE.i:210.
+        Called from PROJECT_FILE.i:220.
 [value] Done for function mpz_add
 [value] computing for function mpz_cmp <- main.
-        Called from PROJECT_FILE.i:211.
+        Called from PROJECT_FILE.i:221.
 [value] Done for function mpz_cmp
 [value] computing for function e_acsl_fail <- main.
-        Called from PROJECT_FILE.i:212.
+        Called from PROJECT_FILE.i:222.
 [value] computing for function printf <- e_acsl_fail <- main.
-        Called from PROJECT_FILE.i:115.
+        Called from PROJECT_FILE.i:125.
 [value] Done for function printf
 [value] computing for function exit <- e_acsl_fail <- main.
-        Called from PROJECT_FILE.i:115.
+        Called from PROJECT_FILE.i:125.
 [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 <- main.
-        Called from PROJECT_FILE.i:213.
+        Called from PROJECT_FILE.i:223.
 [value] Done for function mpz_clear
 [value] computing for function mpz_clear <- main.
-        Called from PROJECT_FILE.i:213.
+        Called from PROJECT_FILE.i:223.
 [value] Done for function mpz_clear
 [value] computing for function mpz_clear <- main.
-        Called from PROJECT_FILE.i:213.
+        Called from PROJECT_FILE.i:223.
 [value] Done for function mpz_clear
 [value] computing for function mpz_clear <- main.
-        Called from PROJECT_FILE.i:214.
+        Called from PROJECT_FILE.i:224.
 [value] Done for function mpz_clear
 [value] computing for function mpz_clear <- main.
-        Called from PROJECT_FILE.i:214.
+        Called from PROJECT_FILE.i:224.
 [value] Done for function mpz_clear
 [value] computing for function mpz_clear <- main.
-        Called from PROJECT_FILE.i:214.
+        Called from PROJECT_FILE.i:224.
 [value] Done for function mpz_clear
 [value] computing for function mpz_init_set_si <- main.
-        Called from PROJECT_FILE.i:236.
+        Called from PROJECT_FILE.i:246.
 [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:247.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_cmp <- main.
-        Called from PROJECT_FILE.i:237.
+        Called from PROJECT_FILE.i:247.
 [value] Done for function mpz_cmp
 [value] computing for function mpz_init_set_si <- main.
-        Called from PROJECT_FILE.i:243.
+        Called from PROJECT_FILE.i:253.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_init_set_si <- main.
-        Called from PROJECT_FILE.i:244.
+        Called from PROJECT_FILE.i:254.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_cmp <- main.
-        Called from PROJECT_FILE.i:245.
+        Called from PROJECT_FILE.i:255.
 [value] Done for function mpz_cmp
-PROJECT_FILE.i:246:[value] assigning non deterministic value for the first time
+PROJECT_FILE.i:256:[value] assigning non deterministic value for the first time
 [value] computing for function mpz_clear <- main.
-        Called from PROJECT_FILE.i:247.
+        Called from PROJECT_FILE.i:257.
 [value] Done for function mpz_clear
 [value] computing for function mpz_clear <- main.
-        Called from PROJECT_FILE.i:248.
+        Called from PROJECT_FILE.i:258.
 [value] Done for function mpz_clear
 [value] computing for function e_acsl_fail <- main.
-        Called from PROJECT_FILE.i:249.
+        Called from PROJECT_FILE.i:259.
 [value] computing for function printf <- e_acsl_fail <- main.
-        Called from PROJECT_FILE.i:115.
+        Called from PROJECT_FILE.i:125.
 [value] Done for function printf
 [value] computing for function exit <- e_acsl_fail <- main.
-        Called from PROJECT_FILE.i:115.
+        Called from PROJECT_FILE.i:125.
 [value] Done for function exit
 [value] Recording results for e_acsl_fail
 [value] Done for function e_acsl_fail
 [value] computing for function mpz_init_set_si <- main.
-        Called from PROJECT_FILE.i:250.
+        Called from PROJECT_FILE.i:260.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_init_set_si <- main.
-        Called from PROJECT_FILE.i:250.
+        Called from PROJECT_FILE.i:260.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_cmp <- main.
-        Called from PROJECT_FILE.i:251.
+        Called from PROJECT_FILE.i:261.
 [value] Done for function mpz_cmp
 [value] computing for function mpz_init_set_si <- main.
-        Called from PROJECT_FILE.i:256.
+        Called from PROJECT_FILE.i:266.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_init_set_si <- main.
-        Called from PROJECT_FILE.i:257.
+        Called from PROJECT_FILE.i:267.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_cmp <- main.
-        Called from PROJECT_FILE.i:258.
+        Called from PROJECT_FILE.i:268.
 [value] Done for function mpz_cmp
 [value] computing for function mpz_clear <- main.
-        Called from PROJECT_FILE.i:260.
+        Called from PROJECT_FILE.i:270.
 [value] Done for function mpz_clear
 [value] computing for function mpz_clear <- main.
-        Called from PROJECT_FILE.i:261.
+        Called from PROJECT_FILE.i:271.
 [value] Done for function mpz_clear
 [value] computing for function mpz_init_set_si <- main.
-        Called from PROJECT_FILE.i:267.
+        Called from PROJECT_FILE.i:277.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_init_set_si <- main.
-        Called from PROJECT_FILE.i:268.
+        Called from PROJECT_FILE.i:278.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_cmp <- main.
-        Called from PROJECT_FILE.i:269.
+        Called from PROJECT_FILE.i:279.
 [value] Done for function mpz_cmp
 [value] computing for function mpz_clear <- main.
-        Called from PROJECT_FILE.i:271.
+        Called from PROJECT_FILE.i:281.
 [value] Done for function mpz_clear
 [value] computing for function mpz_clear <- main.
-        Called from PROJECT_FILE.i:272.
+        Called from PROJECT_FILE.i:282.
 [value] Done for function mpz_clear
 [value] computing for function e_acsl_fail <- main.
-        Called from PROJECT_FILE.i:273.
+        Called from PROJECT_FILE.i:283.
 [value] computing for function printf <- e_acsl_fail <- main.
-        Called from PROJECT_FILE.i:115.
+        Called from PROJECT_FILE.i:125.
 [value] Done for function printf
 [value] computing for function exit <- e_acsl_fail <- main.
-        Called from PROJECT_FILE.i:115.
+        Called from PROJECT_FILE.i:125.
 [value] Done for function exit
 [value] Recording results for e_acsl_fail
 [value] Done for function e_acsl_fail
 [value] computing for function mpz_init_set_si <- main.
-        Called from PROJECT_FILE.i:274.
+        Called from PROJECT_FILE.i:284.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_init_set_si <- main.
-        Called from PROJECT_FILE.i:274.
+        Called from PROJECT_FILE.i:284.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_cmp <- main.
-        Called from PROJECT_FILE.i:275.
+        Called from PROJECT_FILE.i:285.
 [value] Done for function mpz_cmp
 [value] computing for function mpz_init_set_si <- main.
-        Called from PROJECT_FILE.i:280.
+        Called from PROJECT_FILE.i:290.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_init_set_si <- main.
-        Called from PROJECT_FILE.i:281.
+        Called from PROJECT_FILE.i:291.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_cmp <- main.
-        Called from PROJECT_FILE.i:282.
+        Called from PROJECT_FILE.i:292.
 [value] Done for function mpz_cmp
 [value] computing for function mpz_clear <- main.
-        Called from PROJECT_FILE.i:284.
+        Called from PROJECT_FILE.i:294.
 [value] Done for function mpz_clear
 [value] computing for function mpz_clear <- main.
-        Called from PROJECT_FILE.i:285.
+        Called from PROJECT_FILE.i:295.
 [value] Done for function mpz_clear
 [value] computing for function mpz_init_set_si <- main.
-        Called from PROJECT_FILE.i:293.
+        Called from PROJECT_FILE.i:303.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_init_set_si <- main.
-        Called from PROJECT_FILE.i:294.
+        Called from PROJECT_FILE.i:304.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_init <- main.
-        Called from PROJECT_FILE.i:295.
+        Called from PROJECT_FILE.i:305.
 [value] Done for function mpz_init
 [value] computing for function mpz_add <- main.
-        Called from PROJECT_FILE.i:296.
+        Called from PROJECT_FILE.i:306.
 [value] Done for function mpz_add
 [value] computing for function mpz_init_set_si <- main.
-        Called from PROJECT_FILE.i:297.
+        Called from PROJECT_FILE.i:307.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_cmp <- main.
-        Called from PROJECT_FILE.i:298.
+        Called from PROJECT_FILE.i:308.
 [value] Done for function mpz_cmp
 [value] computing for function mpz_clear <- main.
-        Called from PROJECT_FILE.i:300.
+        Called from PROJECT_FILE.i:310.
 [value] Done for function mpz_clear
 [value] computing for function mpz_clear <- main.
-        Called from PROJECT_FILE.i:301.
+        Called from PROJECT_FILE.i:311.
 [value] Done for function mpz_clear
 [value] computing for function mpz_clear <- main.
-        Called from PROJECT_FILE.i:302.
+        Called from PROJECT_FILE.i:312.
 [value] Done for function mpz_clear
 [value] computing for function mpz_clear <- main.
-        Called from PROJECT_FILE.i:303.
+        Called from PROJECT_FILE.i:313.
 [value] Done for function mpz_clear
 [value] computing for function e_acsl_fail <- main.
-        Called from PROJECT_FILE.i:304.
+        Called from PROJECT_FILE.i:314.
 [value] computing for function printf <- e_acsl_fail <- main.
-        Called from PROJECT_FILE.i:115.
+        Called from PROJECT_FILE.i:125.
 [value] Done for function printf
 [value] computing for function exit <- e_acsl_fail <- main.
-        Called from PROJECT_FILE.i:115.
+        Called from PROJECT_FILE.i:125.
 [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 <- main.
-        Called from PROJECT_FILE.i:305.
+        Called from PROJECT_FILE.i:315.
 [value] Done for function mpz_clear
 [value] computing for function mpz_clear <- main.
-        Called from PROJECT_FILE.i:305.
+        Called from PROJECT_FILE.i:315.
 [value] Done for function mpz_clear
 [value] computing for function mpz_clear <- main.
-        Called from PROJECT_FILE.i:305.
+        Called from PROJECT_FILE.i:315.
 [value] Done for function mpz_clear
 [value] computing for function mpz_clear <- main.
-        Called from PROJECT_FILE.i:306.
+        Called from PROJECT_FILE.i:316.
 [value] Done for function mpz_clear
 [value] computing for function mpz_clear <- main.
-        Called from PROJECT_FILE.i:306.
+        Called from PROJECT_FILE.i:316.
 [value] Done for function mpz_clear
 [value] computing for function mpz_clear <- main.
-        Called from PROJECT_FILE.i:306.
+        Called from PROJECT_FILE.i:316.
 [value] Done for function mpz_clear
 [value] computing for function mpz_init_set_si <- main.
-        Called from PROJECT_FILE.i:313.
+        Called from PROJECT_FILE.i:323.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_init_set_si <- main.
-        Called from PROJECT_FILE.i:313.
+        Called from PROJECT_FILE.i:323.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_cmp <- main.
-        Called from PROJECT_FILE.i:314.
+        Called from PROJECT_FILE.i:324.
 [value] Done for function mpz_cmp
 [value] computing for function e_acsl_fail <- main.
-        Called from PROJECT_FILE.i:315.
+        Called from PROJECT_FILE.i:325.
 [value] computing for function printf <- e_acsl_fail <- main.
-        Called from PROJECT_FILE.i:115.
+        Called from PROJECT_FILE.i:125.
 [value] Done for function printf
 [value] computing for function exit <- e_acsl_fail <- main.
-        Called from PROJECT_FILE.i:115.
+        Called from PROJECT_FILE.i:125.
 [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 <- main.
-        Called from PROJECT_FILE.i:316.
+        Called from PROJECT_FILE.i:326.
 [value] Done for function mpz_clear
 [value] computing for function mpz_clear <- main.
-        Called from PROJECT_FILE.i:316.
+        Called from PROJECT_FILE.i:326.
 [value] Done for function mpz_clear
 [value] computing for function mpz_init_set_si <- main.
-        Called from PROJECT_FILE.i:320.
+        Called from PROJECT_FILE.i:330.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_init_set_si <- main.
-        Called from PROJECT_FILE.i:320.
+        Called from PROJECT_FILE.i:330.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_cmp <- main.
-        Called from PROJECT_FILE.i:321.
+        Called from PROJECT_FILE.i:331.
 [value] Done for function mpz_cmp
 [value] computing for function e_acsl_fail <- main.
-        Called from PROJECT_FILE.i:322.
+        Called from PROJECT_FILE.i:332.
 [value] computing for function printf <- e_acsl_fail <- main.
-        Called from PROJECT_FILE.i:115.
+        Called from PROJECT_FILE.i:125.
 [value] Done for function printf
 [value] computing for function exit <- e_acsl_fail <- main.
-        Called from PROJECT_FILE.i:115.
+        Called from PROJECT_FILE.i:125.
 [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 <- main.
-        Called from PROJECT_FILE.i:323.
+        Called from PROJECT_FILE.i:333.
 [value] Done for function mpz_clear
 [value] computing for function mpz_clear <- main.
-        Called from PROJECT_FILE.i:323.
+        Called from PROJECT_FILE.i:333.
 [value] Done for function mpz_clear
 [value] computing for function mpz_init_set_si <- main.
-        Called from PROJECT_FILE.i:331.
+        Called from PROJECT_FILE.i:341.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_init_set_si <- main.
-        Called from PROJECT_FILE.i:331.
+        Called from PROJECT_FILE.i:341.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_cmp <- main.
-        Called from PROJECT_FILE.i:332.
+        Called from PROJECT_FILE.i:342.
 [value] Done for function mpz_cmp
 [value] computing for function e_acsl_fail <- main.
-        Called from PROJECT_FILE.i:333.
+        Called from PROJECT_FILE.i:343.
 [value] computing for function printf <- e_acsl_fail <- main.
-        Called from PROJECT_FILE.i:115.
+        Called from PROJECT_FILE.i:125.
 [value] Done for function printf
 [value] computing for function exit <- e_acsl_fail <- main.
-        Called from PROJECT_FILE.i:115.
+        Called from PROJECT_FILE.i:125.
 [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 <- main.
-        Called from PROJECT_FILE.i:334.
+        Called from PROJECT_FILE.i:344.
 [value] Done for function mpz_clear
 [value] computing for function mpz_clear <- main.
-        Called from PROJECT_FILE.i:334.
+        Called from PROJECT_FILE.i:344.
 [value] Done for function mpz_clear
 [value] computing for function mpz_init_set_si <- main.
-        Called from PROJECT_FILE.i:338.
+        Called from PROJECT_FILE.i:348.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_init_set_si <- main.
-        Called from PROJECT_FILE.i:338.
+        Called from PROJECT_FILE.i:348.
 [value] Done for function mpz_init_set_si
 [value] computing for function mpz_cmp <- main.
-        Called from PROJECT_FILE.i:339.
+        Called from PROJECT_FILE.i:349.
 [value] Done for function mpz_cmp
 [value] computing for function e_acsl_fail <- main.
-        Called from PROJECT_FILE.i:340.
+        Called from PROJECT_FILE.i:350.
 [value] computing for function printf <- e_acsl_fail <- main.
-        Called from PROJECT_FILE.i:115.
+        Called from PROJECT_FILE.i:125.
 [value] Done for function printf
 [value] computing for function exit <- e_acsl_fail <- main.
-        Called from PROJECT_FILE.i:115.
+        Called from PROJECT_FILE.i:125.
 [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 <- main.
-        Called from PROJECT_FILE.i:341.
+        Called from PROJECT_FILE.i:351.
 [value] Done for function mpz_clear
 [value] computing for function mpz_clear <- main.
-        Called from PROJECT_FILE.i:341.
+        Called from PROJECT_FILE.i:351.
 [value] Done for function mpz_clear
 [value] Recording results for main
 [value] done for function main
diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/true.res.oracle b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/true.res.oracle
index 44d1237a75d..cc46d0611d8 100644
--- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/true.res.oracle
+++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/true.res.oracle
@@ -2,7 +2,7 @@
 [value] Computing initial state
 [value] Initial state computed
 [value] Values of globals at initialization
-PROJECT_FILE.i:122:[value] Assertion got status valid.
+PROJECT_FILE.i:132:[value] Assertion got status valid.
 [value] Recording results for main
 [value] done for function main
 [value] ====== VALUES COMPUTED ======
diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/ptr.i b/src/plugins/e-acsl/tests/e-acsl-runtime/ptr.i
new file mode 100644
index 00000000000..5c5faa229cf
--- /dev/null
+++ b/src/plugins/e-acsl/tests/e-acsl-runtime/ptr.i
@@ -0,0 +1,29 @@
+/* run.config
+   COMMENT: pointers and pointer arithmetic
+   EXECNOW: LOG gen_ptr.c BIN gen_ptr.out FRAMAC_SHARE=./share @frama-c@ ./tests/e-acsl-runtime/ptr.i -e-acsl-project p -e-acsl-include-headers -then-on p -print -ocode ./tests/e-acsl-runtime/result/gen_ptr.c > /dev/null && gcc -o ./tests/e-acsl-runtime/result/gen_ptr.out -lgmp ./tests/e-acsl-runtime/result/gen_ptr.c && ./tests/e-acsl-runtime/result/gen_ptr.out
+*/
+
+int main(void) {
+
+  int x = 1;
+  int t[3] = { 2, 3, 4 };
+  int *p = &x;
+
+  /*@ assert *p == 1; */
+  /*@ assert *t == 2; */
+  /*@ assert *(t+2) == 4; */
+  //  /*@ assert *(t+2*sizeof(int)) == 4; */ // still this fucking subtyping bug
+
+  for(int i = 0; i < 2; i++) {
+       /*@ assert (*(t+i) == i+2); */ ;
+       /*@ assert (*(t+(2-i)) == 4-i); */ ;
+       /*@ assert (*(t+2-i) == 4-i); */ ;
+    ;
+  }
+
+  p = t+2;
+  t[2] = 5;
+  /*@ assert *p == 5; */
+
+  return 0;
+}
diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/stmt_contract.i b/src/plugins/e-acsl/tests/e-acsl-runtime/stmt_contract.i
index eb443f78b14..a7e13016e8e 100644
--- a/src/plugins/e-acsl/tests/e-acsl-runtime/stmt_contract.i
+++ b/src/plugins/e-acsl/tests/e-acsl-runtime/stmt_contract.i
@@ -38,7 +38,6 @@ int main(void) {
     @   requires x + y == 5; */
   x = x + y;
 
-  // TODO: break the CFG and I don't know why :(
   /*@ requires x == 5; */
   /*@ requires y == 2; */
   x = x + y;
diff --git a/src/plugins/e-acsl/visit.ml b/src/plugins/e-acsl/visit.ml
index fed2d0909f4..a2c45c8a874 100644
--- a/src/plugins/e-acsl/visit.ml
+++ b/src/plugins/e-acsl/visit.ml
@@ -27,25 +27,6 @@ open Cil
 (* Transforming terms and predicates into C expressions (if any) *)
 (* ************************************************************************** *)
 
-let constant_to_exp ?(loc=Location.unknown) = function
-  | CInt64(n, 
-	   (IBool | IChar | IUChar | IUInt | IUShort | IULong
-	       | ISChar | IShort | IInt | ILong as k), 
-	   s) ->
-    kinteger64_repr ?loc k n s
-  | CInt64(n, (ILongLong | IULongLong), _s) -> 
-    (* cannot use the string [s] (if any) since we do not know the base in which
-       it is written. Such a base is required by GMP.
-       [TODO] Actually possible to find the base for the string, but not done
-       yet *)
-    mkString ?loc (My_bigint.to_string n)
-  | CStr _ | CWStr _ | CChr _ | CReal _ | CEnum _ as c -> 
-    new_exp ?loc (Const c)
-
-let tlval_to_lval = function
-  | TVar { lv_origin = Some v }, TNoOffset -> Var v, NoOffset
-  | _ -> Misc.not_yet "complex left value"
-
 let relation_to_binop = function
   | Rlt -> Lt
   | Rgt -> Gt
@@ -72,15 +53,62 @@ let wrap_leaf env e = function
   | Lreal -> Misc.not_yet "real number"
   | Larrow _ -> Misc.not_yet "logic function"
 
+let constant_to_exp ?(loc=Location.unknown) = function
+  | CInt64(n, 
+	   (IBool | IChar | IUChar | IUInt | IUShort | IULong
+	       | ISChar | IShort | IInt | ILong as k), 
+	   s) ->
+    kinteger64_repr ?loc k n s
+  | CInt64(n, (ILongLong | IULongLong), _s) -> 
+    (* cannot use the string [s] (if any) since we do not know the base in which
+       it is written. Such a base is required by GMP.
+       [TODO] Actually possible to find the base for the string, but not done
+       yet *)
+    mkString ?loc (My_bigint.to_string n)
+  | CStr _ | CWStr _ | CChr _ | CReal _ | CEnum _ as c -> 
+    new_exp ?loc (Const c)
+
+let rec thost_to_host env = function
+  | TVar { lv_origin = Some v } -> Var v, env
+  | TVar { lv_origin = None } -> Misc.not_yet "logic variable"
+  | TResult _typ -> Misc.not_yet "\\result"
+  | TMem t ->
+    (* TODO: still untested *)
+    let e, env = term_to_exp env t in
+    Options.warning ~current:true ~once:true
+      "missing guard for ensuring that %a is a valid memory access"
+      d_term t;
+    Mem e, env
+
+and toffset_to_offset env = function
+  | TNoOffset -> NoOffset, env
+  | TField(f, offset) -> 
+    (* TODO: still untested *)
+    let offset, env = toffset_to_offset env offset in
+    Field(f, offset), env
+  | TIndex(t, offset) -> 
+    let e, env = ptr_arith_term_to_exp env t in
+    Options.warning ~current:true ~once:true
+      "missing guard for ensuring that %a is a valid array index"
+      d_term t;
+    let offset, env = toffset_to_offset env offset in
+    Index(e, offset), env
+
+and tlval_to_lval env (host, offset) = 
+  let host, env = thost_to_host env host in
+  let offset, env = toffset_to_offset env offset in
+  (host, offset), env
+
 (* Convert an ACSL term into a corresponding C expression (if any) in the given
    environment. Also extend this environment which includes the generating
    constructs. *)
-let rec term_to_exp env t = 
+and term_to_exp env t = 
   let loc = t.term_loc in
   match t.term_node with
   | TConst c -> wrap_leaf env (constant_to_exp ~loc c) t.term_type
   | TLval lv -> 
-    wrap_leaf env (new_exp ~loc (Lval (tlval_to_lval lv))) t.term_type
+    let lv, env = tlval_to_lval env lv in
+    wrap_leaf env (new_exp ~loc (Lval lv)) t.term_type
   | TSizeOf ty -> sizeOf ~loc ty, env
   | TSizeOfE t ->
     let e, env = term_to_exp env t in
@@ -143,8 +171,8 @@ let rec term_to_exp env t =
   | TBinOp(PlusPI | IndexPI | MinusPI | MinusPP as bop, t1, t2) ->
     (* binary operation over pointers *)
     (* [TODO] untested *)
-    let e1, env = term_to_exp env t1 in
-    let e2, env = term_to_exp env t2 in
+    let e1, env = ptr_arith_term_to_exp env t1 in
+    let e2, env = ptr_arith_term_to_exp env t2 in
     Options.warning ~current:true ~once:true
       "missing guard for ensuring that %a is a valid pointer"
       d_term t;
@@ -152,11 +180,31 @@ let rec term_to_exp env t =
        whatever is [e2] *)
     new_exp ~loc (BinOp(bop, e1, e2, typeOf e1)), env
   | TCastE(ty, t) ->
-    (* [TODO] missing guard for ensuring no overflow when casting *)
+    (* [TODO] missing guard for ensuring no overflow when casting.
+       Whether the guard should be emit depends on the subtyping relation. *)
     let e, env = term_to_exp env t in
+    let e, env =
+      if Mpz.e_got_t e then begin
+	(* casting mpz_t to C type is unsafe: 
+	   use dedicated gmp functions for coercions *)
+	let name, ty = 
+	  if isSignedInteger ty then "mpz_get_si", longType
+	  else "mpz_get_ui", ulongType
+	in
+	Env.new_var
+	  env
+	  ty
+	  (fun v _ -> [ Misc.mk_call ~loc ~result:(var v) name [ e ] ])
+      end else 
+	e, env
+    in
     mkCast e ty, env
-  | TAddrOf lv -> mkAddrOf ~loc (tlval_to_lval lv), env
-  | TStartOf _ -> Misc.not_yet "beginning of an array"
+  | TAddrOf lv -> 
+    let lv, env = tlval_to_lval env lv in
+    mkAddrOf ~loc lv, env
+  | TStartOf lv -> 
+    let lv, env = tlval_to_lval env lv in
+    mkAddrOrStartOf ~loc lv, env
   | Tapp _ -> Misc.not_yet "applying logic function"
   | Tlambda _ -> Misc.not_yet "functional"
   | TDataCons _ -> Misc.not_yet "constructor"
@@ -164,7 +212,7 @@ let rec term_to_exp env t =
   | Tat _ -> Misc.not_yet "\\at"
   | Tbase_addr _ -> Misc.not_yet "\\base_addr"
   | Tblock_length _ -> Misc.not_yet "\\block_length"
-  | Tnull -> Misc.not_yet "NULL"
+  | Tnull -> mkCast (zero ~loc) (TPtr(TVoid [], [])), env
   | TCoerce _ -> Misc.not_yet "coercion"
   | TCoerceE _ -> Misc.not_yet "expression coercion"
   | TUpdate _ -> Misc.not_yet "functional update"
@@ -177,11 +225,18 @@ let rec term_to_exp env t =
   | Trange _ -> Misc.not_yet "range"
   | Tlet _ -> Misc.not_yet "let binding"
 
+and ptr_arith_term_to_exp env t = match t.term_type with
+  | Linteger -> 
+    (* add cast to prevent generation of mpz_t values for ptr arithmetics *)
+    term_to_exp env (Logic_const.term (TCastE(intType, t)) (Ctype intType)) 
+  | Ctype _ -> term_to_exp env t
+  | Ltype _ | Lvar _ | Lreal | Larrow _ -> assert false
+
 (* generate the C code equivalent to [t1 bop t2]. *)
 and comparison_to_exp ?(loc=Location.unknown) env bop t1 t2 =
   let e1, env = term_to_exp env t1 in
   let e2, env = term_to_exp env t2 in
-  (*  Options.feedback "ty1=%a; ty2=%a" d_type (typeOf e1) d_type (typeOf e2);*)
+(*  Options.feedback "ty1=%a; ty2=%a" d_type (typeOf e1) d_type (typeOf e2);*)
   assert (Typ.equal (typeOf e1) (typeOf e2));
   if Mpz.e_got_t e1 then
     let e, env =
@@ -405,7 +460,7 @@ class e_acsl_visitor prj generate = object (self)
       let old_kf = Globals.Functions.get old_vi in
       let spec = 
 	Visitor.visitFramacFunspec
-	  (self :> Visitor.frama_c_visitor) 
+	  (self :> Visitor.frama_c_visitor)
 	  (Kernel_function.get_spec old_kf)
       in
       let pre_b, post_b, env = 
-- 
GitLab