diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_at.c b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_at.c
new file mode 100644
index 0000000000000000000000000000000000000000..33386ccc44a15031dcc7a3ae9a75ab790a0eb195
--- /dev/null
+++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_at.c
@@ -0,0 +1,659 @@
+/* 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__));
+__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(__mpz_struct * /*[1]*/ z,
+                            __mpz_struct const * /*[1]*/ z_orig);
+/*@ ensures \valid(\old(z));
+    assigns *z;
+    assigns *z \from n;  */
+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("%s\n",msg);
+  exit(1);
+  return;
+}
+
+int main(void)
+{
+  int __retres;
+  int x;
+  int e_acsl_4;
+  mpz_t e_acsl_11;
+  int e_acsl_14;
+  x = 0;
+  L: e_acsl_14 = x;
+  { mpz_t e_acsl_8; mpz_t e_acsl_9; mpz_t e_acsl_10;
+    __gmpz_init_set_si((__mpz_struct *)(e_acsl_8),(long)x);
+    __gmpz_init_set_si((__mpz_struct *)(e_acsl_9),(long)1);
+    __gmpz_init((__mpz_struct *)(e_acsl_10));
+    __gmpz_add((__mpz_struct *)(e_acsl_10),(__mpz_struct const *)(e_acsl_8),
+               (__mpz_struct const *)(e_acsl_9));
+    __gmpz_init_set((__mpz_struct *)(e_acsl_11),
+                    (__mpz_struct const *)(e_acsl_10));
+    __gmpz_clear((__mpz_struct *)(e_acsl_8));
+    __gmpz_clear((__mpz_struct *)(e_acsl_9));
+    __gmpz_clear((__mpz_struct *)(e_acsl_10));
+  }
+  
+  e_acsl_4 = x;
+  /*@ assert x ≡ 0; */ ;
+  { mpz_t e_acsl_1; mpz_t e_acsl_2; int e_acsl_3;
+    __gmpz_init_set_si((__mpz_struct *)(e_acsl_1),(long)x);
+    __gmpz_init_set_si((__mpz_struct *)(e_acsl_2),(long)0);
+    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 *)"(x == 0)"); }
+    __gmpz_clear((__mpz_struct *)(e_acsl_1));
+    __gmpz_clear((__mpz_struct *)(e_acsl_2));
+  }
+  
+  x = 1;
+  x = 2;
+  /*@ assert \at(x,L) ≡ 0; */ ;
+  { mpz_t e_acsl_5; mpz_t e_acsl_6; int e_acsl_7;
+    __gmpz_init_set_si((__mpz_struct *)(e_acsl_5),(long)e_acsl_4);
+    __gmpz_init_set_si((__mpz_struct *)(e_acsl_6),(long)0);
+    e_acsl_7 = __gmpz_cmp((__mpz_struct const *)(e_acsl_5),
+                          (__mpz_struct const *)(e_acsl_6));
+    if (! (e_acsl_7 == 0)) { e_acsl_fail((char *)"(\\at(x,L) == 0)"); }
+    __gmpz_clear((__mpz_struct *)(e_acsl_5));
+    __gmpz_clear((__mpz_struct *)(e_acsl_6));
+  }
+  
+  /*@ assert \at(x+1,L) ≡ 1; */ ;
+  { mpz_t e_acsl_12; int e_acsl_13;
+    __gmpz_init_set_si((__mpz_struct *)(e_acsl_12),(long)1);
+    e_acsl_13 = __gmpz_cmp((__mpz_struct const *)(e_acsl_11),
+                           (__mpz_struct const *)(e_acsl_12));
+    if (! (e_acsl_13 == 0)) { e_acsl_fail((char *)"(\\at(x+1,L) == 1)"); }
+    __gmpz_clear((__mpz_struct *)(e_acsl_12));
+  }
+  
+  /*@ assert \at(x,L)+1 ≡ 1; */ ;
+  { mpz_t e_acsl_15; mpz_t e_acsl_16; mpz_t e_acsl_17; int e_acsl_18;
+    __gmpz_init_set_si((__mpz_struct *)(e_acsl_15),(long)e_acsl_14);
+    __gmpz_init_set_si((__mpz_struct *)(e_acsl_16),(long)1);
+    __gmpz_init((__mpz_struct *)(e_acsl_17));
+    __gmpz_add((__mpz_struct *)(e_acsl_17),(__mpz_struct const *)(e_acsl_15),
+               (__mpz_struct const *)(e_acsl_16));
+    e_acsl_18 = __gmpz_cmp((__mpz_struct const *)(e_acsl_17),
+                           (__mpz_struct const *)(e_acsl_16));
+    if (! (e_acsl_18 == 0)) { e_acsl_fail((char *)"(\\at(x,L)+1 == 1)"); }
+    __gmpz_clear((__mpz_struct *)(e_acsl_15));
+    __gmpz_clear((__mpz_struct *)(e_acsl_16));
+    __gmpz_clear((__mpz_struct *)(e_acsl_17));
+  }
+  
+  __retres = 0;
+  __gmpz_clear((__mpz_struct *)(e_acsl_11));
+  return (__retres);
+}
+
+