diff --git a/src/plugins/e-acsl/tests/arith/oracle/functions.res.oracle b/src/plugins/e-acsl/tests/arith/oracle/functions.res.oracle
index cc5b0778cf10d9fcb9964f247f22b0cd626969f6..bb5a7cd1b3c49b8c32e0f0e920d1c1116b32fc3d 100644
--- a/src/plugins/e-acsl/tests/arith/oracle/functions.res.oracle
+++ b/src/plugins/e-acsl/tests/arith/oracle/functions.res.oracle
@@ -1,71 +1,73 @@
 [e-acsl] beginning translation.
-[e-acsl] functions.c:70: Warning: 
+[e-acsl] functions.c:73: Warning: 
   E-ACSL construct `function application' is not yet supported.
   Ignoring annotation.
 [e-acsl] translation done in project "e-acsl".
-[eva:alarm] functions.c:48: Warning: 
+[eva:alarm] functions.c:51: Warning: 
   function __e_acsl_assert_register_int: precondition data->values == \null ||
                                                       \valid(data->values) got status unknown.
-[eva:alarm] functions.c:48: Warning: 
+[eva:alarm] functions.c:51: Warning: 
   function __e_acsl_assert_register_int: precondition data->values == \null ||
                                                       \valid(data->values) got status unknown.
-[eva:alarm] functions.c:50: Warning: 
+[eva:alarm] functions.c:53: Warning: 
   function __e_acsl_assert, behavior blocking: precondition got status unknown.
-[eva:alarm] functions.c:52: Warning: 
+[eva:alarm] functions.c:55: Warning: 
   function __e_acsl_assert_register_int: precondition data->values == \null ||
                                                       \valid(data->values) got status unknown.
-[eva:alarm] functions.c:52: Warning: 
+[eva:alarm] functions.c:55: Warning: 
   function __e_acsl_assert_register_long: precondition data->values == \null ||
                                                        \valid(data->values) got status unknown.
-[eva:alarm] functions.c:53: Warning: 
+[eva:alarm] functions.c:56: Warning: 
   function __e_acsl_assert_register_int: precondition data->values == \null ||
                                                       \valid(data->values) got status unknown.
-[eva:alarm] functions.c:53: Warning: 
+[eva:alarm] functions.c:56: Warning: 
   function __e_acsl_assert_register_int: precondition data->values == \null ||
                                                       \valid(data->values) got status unknown.
-[eva:alarm] functions.c:54: Warning: 
+[eva:alarm] functions.c:57: Warning: 
   function __e_acsl_assert, behavior blocking: precondition got status unknown.
-[eva:alarm] functions.c:55: Warning: 
+[eva:alarm] functions.c:58: Warning: 
   function __e_acsl_assert, behavior blocking: precondition got status unknown.
-[eva:alarm] functions.c:60: Warning: 
+[eva:alarm] functions.c:63: Warning: 
   function __e_acsl_assert_register_int: precondition data->values == \null ||
                                                       \valid(data->values) got status unknown.
-[eva:alarm] functions.c:60: Warning: 
+[eva:alarm] functions.c:63: Warning: 
   function __e_acsl_assert_register_int: precondition data->values == \null ||
                                                       \valid(data->values) got status unknown.
-[eva:alarm] functions.c:63: Warning: 
+[eva:alarm] functions.c:66: Warning: 
   function __e_acsl_assert_register_char: precondition data->values == \null ||
                                                        \valid(data->values) got status unknown.
-[eva:alarm] functions.c:63: Warning: 
+[eva:alarm] functions.c:66: Warning: 
   function __e_acsl_assert_register_char: precondition data->values == \null ||
                                                        \valid(data->values) got status unknown.
-[eva:alarm] functions.c:65: Warning: 
+[eva:alarm] functions.c:68: Warning: 
   function __e_acsl_assert_register_short: precondition data->values == \null ||
                                                         \valid(data->values) got status unknown.
-[eva:alarm] functions.c:65: Warning: 
+[eva:alarm] functions.c:68: Warning: 
   function __e_acsl_assert_register_short: precondition data->values == \null ||
                                                         \valid(data->values) got status unknown.
-[eva:alarm] functions.c:70: Warning: 
+[eva:alarm] functions.c:73: Warning: 
   function __e_acsl_assert_register_struct: precondition data->values == \null ||
                                                          \valid(data->values) got status unknown.
-[eva:alarm] functions.c:70: Warning: 
+[eva:alarm] functions.c:73: Warning: 
   function __e_acsl_assert_register_struct: precondition data->values == \null ||
                                                          \valid(data->values) got status unknown.
-[eva:alarm] functions.c:70: Warning: assertion got status unknown.
-[eva:alarm] functions.c:71: Warning: 
+[eva:alarm] functions.c:73: Warning: assertion got status unknown.
+[eva:alarm] functions.c:74: Warning: 
   function __e_acsl_assert_register_struct: precondition data->values == \null ||
                                                          \valid(data->values) got status unknown.
-[eva:alarm] functions.c:71: Warning: 
+[eva:alarm] functions.c:74: Warning: 
   function __e_acsl_assert_register_long: precondition data->values == \null ||
                                                        \valid(data->values) got status unknown.
 [eva:alarm] functions.c:28: Warning: 
   function __e_acsl_assert_register_int: precondition data->values == \null ||
                                                       \valid(data->values) got status unknown.
-[eva:alarm] functions.c:76: Warning: 
+[eva:alarm] functions.c:79: Warning: 
   non-finite double value. assert \is_finite(__gen_e_acsl__9);
-[eva:alarm] functions.c:76: Warning: 
+[eva:alarm] functions.c:79: Warning: 
   function __e_acsl_assert_register_double: precondition data->values == \null ||
                                                          \valid(data->values) got status unknown.
-[eva:alarm] functions.c:76: Warning: 
+[eva:alarm] functions.c:79: Warning: 
+  function __e_acsl_assert, behavior blocking: precondition got status unknown.
+[eva:alarm] functions.c:81: Warning: assertion got status unknown.
+[eva:alarm] functions.c:83: Warning: 
   function __e_acsl_assert, behavior blocking: precondition got status unknown.
-[eva:alarm] functions.c:78: Warning: assertion got status unknown.
diff --git a/src/plugins/e-acsl/tests/arith/oracle/gen_functions.c b/src/plugins/e-acsl/tests/arith/oracle/gen_functions.c
index 7d6406619dfbbc8f4acb6b53e2f2e1e9db0eba91..8699808b755da65ff31130e928f3a703b1a85726 100644
--- a/src/plugins/e-acsl/tests/arith/oracle/gen_functions.c
+++ b/src/plugins/e-acsl/tests/arith/oracle/gen_functions.c
@@ -57,7 +57,7 @@ int __gen_e_acsl_g(int x);
 
 /*@ logic mystruct t1(mystruct m) = m;
  */
-mystruct __gen_e_acsl_t1(mystruct m);
+void __gen_e_acsl_t1(mystruct *__retres_arg, mystruct m);
 
 /*@ logic integer t2(mystruct m) = m.k + m.l;
  */
@@ -88,9 +88,13 @@ double __gen_e_acsl_f2(double x);
 /*@ logic integer f_notyet{L}(integer x) = x;
  */
 /*@ logic integer f_sum(integer x) = \sum(1, x, \lambda integer y; 1);
+ */
+int __gen_e_acsl_f_sum(int x);
+
+/*@ logic real over(real a, real b) = a / b;
 
 */
-int __gen_e_acsl_f_sum(int x);
+void __gen_e_acsl_over(__e_acsl_mpq_t *__retres_arg, double a, double b);
 
 int main(void)
 {
@@ -112,7 +116,7 @@ int main(void)
     __gen_e_acsl_assert_data.pred_txt = "p1(x, y)";
     __gen_e_acsl_assert_data.file = "functions.c";
     __gen_e_acsl_assert_data.fct = "main";
-    __gen_e_acsl_assert_data.line = 48;
+    __gen_e_acsl_assert_data.line = 51;
     __e_acsl_assert(__gen_e_acsl_p1_2,& __gen_e_acsl_assert_data);
     __e_acsl_assert_clean(& __gen_e_acsl_assert_data);
   }
@@ -129,7 +133,7 @@ int main(void)
     __gen_e_acsl_assert_data_2.pred_txt = "p2(3, 4)";
     __gen_e_acsl_assert_data_2.file = "functions.c";
     __gen_e_acsl_assert_data_2.fct = "main";
-    __gen_e_acsl_assert_data_2.line = 49;
+    __gen_e_acsl_assert_data_2.line = 52;
     __e_acsl_assert(__gen_e_acsl_p2_2,& __gen_e_acsl_assert_data_2);
     __e_acsl_assert_clean(& __gen_e_acsl_assert_data_2);
   }
@@ -150,7 +154,7 @@ int main(void)
     __gen_e_acsl_assert_data_3.pred_txt = "p2(5, 99999999999999999999999999999)";
     __gen_e_acsl_assert_data_3.file = "functions.c";
     __gen_e_acsl_assert_data_3.fct = "main";
-    __gen_e_acsl_assert_data_3.line = 50;
+    __gen_e_acsl_assert_data_3.line = 53;
     __e_acsl_assert(__gen_e_acsl_p2_4,& __gen_e_acsl_assert_data_3);
     __e_acsl_assert_clean(& __gen_e_acsl_assert_data_3);
     __gmpz_clear(__gen_e_acsl_);
@@ -170,7 +174,7 @@ int main(void)
     __gen_e_acsl_assert_data_4.pred_txt = "f1(x, y) == 3";
     __gen_e_acsl_assert_data_4.file = "functions.c";
     __gen_e_acsl_assert_data_4.fct = "main";
-    __gen_e_acsl_assert_data_4.line = 52;
+    __gen_e_acsl_assert_data_4.line = 55;
     __e_acsl_assert(__gen_e_acsl_f1_2 == 3L,& __gen_e_acsl_assert_data_4);
     __e_acsl_assert_clean(& __gen_e_acsl_assert_data_4);
   }
@@ -192,7 +196,7 @@ int main(void)
     __gen_e_acsl_assert_data_5.pred_txt = "p2(x, f1(3, 4))";
     __gen_e_acsl_assert_data_5.file = "functions.c";
     __gen_e_acsl_assert_data_5.fct = "main";
-    __gen_e_acsl_assert_data_5.line = 53;
+    __gen_e_acsl_assert_data_5.line = 56;
     __e_acsl_assert(__gen_e_acsl_p2_6,& __gen_e_acsl_assert_data_5);
     __e_acsl_assert_clean(& __gen_e_acsl_assert_data_5);
   }
@@ -218,7 +222,7 @@ int main(void)
     __gen_e_acsl_assert_data_6.pred_txt = "f1(9, 99999999999999999999999999999) > 0";
     __gen_e_acsl_assert_data_6.file = "functions.c";
     __gen_e_acsl_assert_data_6.fct = "main";
-    __gen_e_acsl_assert_data_6.line = 54;
+    __gen_e_acsl_assert_data_6.line = 57;
     __e_acsl_assert(__gen_e_acsl_gt_2 > 0,& __gen_e_acsl_assert_data_6);
     __e_acsl_assert_clean(& __gen_e_acsl_assert_data_6);
     __gmpz_clear(__gen_e_acsl__3);
@@ -249,7 +253,7 @@ int main(void)
     __gen_e_acsl_assert_data_7.pred_txt = "f1(99999999999999999999999999999, 99999999999999999999999999999) ==\n199999999999999999999999999998";
     __gen_e_acsl_assert_data_7.file = "functions.c";
     __gen_e_acsl_assert_data_7.fct = "main";
-    __gen_e_acsl_assert_data_7.line = 55;
+    __gen_e_acsl_assert_data_7.line = 58;
     __e_acsl_assert(__gen_e_acsl_eq == 0,& __gen_e_acsl_assert_data_7);
     __e_acsl_assert_clean(& __gen_e_acsl_assert_data_7);
     __gmpz_clear(__gen_e_acsl__5);
@@ -275,7 +279,7 @@ int main(void)
     __gen_e_acsl_assert_data_8.pred_txt = "g(x) == x";
     __gen_e_acsl_assert_data_8.file = "functions.c";
     __gen_e_acsl_assert_data_8.fct = "main";
-    __gen_e_acsl_assert_data_8.line = 60;
+    __gen_e_acsl_assert_data_8.line = 63;
     __e_acsl_assert(__gen_e_acsl_g_2 == x,& __gen_e_acsl_assert_data_8);
     __e_acsl_assert_clean(& __gen_e_acsl_assert_data_8);
   }
@@ -295,7 +299,7 @@ int main(void)
     __gen_e_acsl_assert_data_9.pred_txt = "h_char(c) == c";
     __gen_e_acsl_assert_data_9.file = "functions.c";
     __gen_e_acsl_assert_data_9.fct = "main";
-    __gen_e_acsl_assert_data_9.line = 63;
+    __gen_e_acsl_assert_data_9.line = 66;
     __e_acsl_assert((int)__gen_e_acsl_h_char_2 == (int)c,
                     & __gen_e_acsl_assert_data_9);
     __e_acsl_assert_clean(& __gen_e_acsl_assert_data_9);
@@ -316,7 +320,7 @@ int main(void)
     __gen_e_acsl_assert_data_10.pred_txt = "h_short(s) == s";
     __gen_e_acsl_assert_data_10.file = "functions.c";
     __gen_e_acsl_assert_data_10.fct = "main";
-    __gen_e_acsl_assert_data_10.line = 65;
+    __gen_e_acsl_assert_data_10.line = 68;
     __e_acsl_assert((int)__gen_e_acsl_h_short_2 == (int)s,
                     & __gen_e_acsl_assert_data_10);
     __e_acsl_assert_clean(& __gen_e_acsl_assert_data_10);
@@ -329,7 +333,7 @@ int main(void)
     mystruct __gen_e_acsl_t1_2;
     __e_acsl_assert_data_t __gen_e_acsl_assert_data_11 =
       {.values = (void *)0};
-    __gen_e_acsl_t1_2 = __gen_e_acsl_t1(m);
+    __gen_e_acsl_t1(& __gen_e_acsl_t1_2,m);
     __gen_e_acsl_r = __gen_e_acsl_t1_2;
     __e_acsl_assert_register_int(& __gen_e_acsl_assert_data_11,"r.k",0,
                                  __gen_e_acsl_r.k);
@@ -340,7 +344,7 @@ int main(void)
     __gen_e_acsl_assert_data_11.pred_txt = "\\let r = t1(m); r.k == 8";
     __gen_e_acsl_assert_data_11.file = "functions.c";
     __gen_e_acsl_assert_data_11.fct = "main";
-    __gen_e_acsl_assert_data_11.line = 70;
+    __gen_e_acsl_assert_data_11.line = 73;
     __e_acsl_assert(__gen_e_acsl_r.k == 8,& __gen_e_acsl_assert_data_11);
     __e_acsl_assert_clean(& __gen_e_acsl_assert_data_11);
   }
@@ -350,7 +354,7 @@ int main(void)
     long __gen_e_acsl_t2_2;
     __e_acsl_assert_data_t __gen_e_acsl_assert_data_12 =
       {.values = (void *)0};
-    __gen_e_acsl_t1_4 = __gen_e_acsl_t1(m);
+    __gen_e_acsl_t1(& __gen_e_acsl_t1_4,m);
     __gen_e_acsl_t2_2 = __gen_e_acsl_t2(__gen_e_acsl_t1_4);
     __e_acsl_assert_register_struct(& __gen_e_acsl_assert_data_12,"m");
     __e_acsl_assert_register_struct(& __gen_e_acsl_assert_data_12,"t1(m)");
@@ -361,7 +365,7 @@ int main(void)
     __gen_e_acsl_assert_data_12.pred_txt = "t2(t1(m)) == 17";
     __gen_e_acsl_assert_data_12.file = "functions.c";
     __gen_e_acsl_assert_data_12.fct = "main";
-    __gen_e_acsl_assert_data_12.line = 71;
+    __gen_e_acsl_assert_data_12.line = 74;
     __e_acsl_assert(__gen_e_acsl_t2_2 == 17L,& __gen_e_acsl_assert_data_12);
     __e_acsl_assert_clean(& __gen_e_acsl_assert_data_12);
   }
@@ -381,7 +385,7 @@ int main(void)
     __gen_e_acsl_assert_data_13.pred_txt = "f2(d) > 0";
     __gen_e_acsl_assert_data_13.file = "functions.c";
     __gen_e_acsl_assert_data_13.fct = "main";
-    __gen_e_acsl_assert_data_13.line = 76;
+    __gen_e_acsl_assert_data_13.line = 79;
     __e_acsl_assert(__gen_e_acsl_f2_2 > 0.,& __gen_e_acsl_assert_data_13);
     __e_acsl_assert_clean(& __gen_e_acsl_assert_data_13);
   }
@@ -398,12 +402,48 @@ int main(void)
     __gen_e_acsl_assert_data_14.pred_txt = "f_sum(100) == 100";
     __gen_e_acsl_assert_data_14.file = "functions.c";
     __gen_e_acsl_assert_data_14.fct = "main";
-    __gen_e_acsl_assert_data_14.line = 78;
+    __gen_e_acsl_assert_data_14.line = 81;
     __e_acsl_assert(__gen_e_acsl_f_sum_2 == 100,
                     & __gen_e_acsl_assert_data_14);
     __e_acsl_assert_clean(& __gen_e_acsl_assert_data_14);
   }
   /*@ assert f_sum(100) == 100; */ ;
+  {
+    __e_acsl_mpq_t __gen_e_acsl_over_2;
+    __e_acsl_mpq_t __gen_e_acsl__11;
+    __e_acsl_mpq_t __gen_e_acsl__12;
+    __e_acsl_mpq_t __gen_e_acsl_div_3;
+    int __gen_e_acsl_eq_2;
+    __e_acsl_assert_data_t __gen_e_acsl_assert_data_15 =
+      {.values = (void *)0};
+    __gen_e_acsl_over(& __gen_e_acsl_over_2,1.,2.);
+    __gmpq_init(__gen_e_acsl__11);
+    __gmpq_set_d(__gen_e_acsl__11,1.);
+    __gmpq_init(__gen_e_acsl__12);
+    __gmpq_set_d(__gen_e_acsl__12,2.);
+    __gmpq_init(__gen_e_acsl_div_3);
+    __gmpq_div(__gen_e_acsl_div_3,
+               (__e_acsl_mpq_struct const *)(__gen_e_acsl__11),
+               (__e_acsl_mpq_struct const *)(__gen_e_acsl__12));
+    __gen_e_acsl_eq_2 = __gmpq_cmp((__e_acsl_mpq_struct const *)(__gen_e_acsl_over_2),
+                                   (__e_acsl_mpq_struct const *)(__gen_e_acsl_div_3));
+    __e_acsl_assert_register_mpq(& __gen_e_acsl_assert_data_15,
+                                 "over(1., 2.)",
+                                 (__e_acsl_mpq_struct const *)(__gen_e_acsl_over_2));
+    __gen_e_acsl_assert_data_15.blocking = 1;
+    __gen_e_acsl_assert_data_15.kind = "Assertion";
+    __gen_e_acsl_assert_data_15.pred_txt = "over(1., 2.) == 1. / 2.";
+    __gen_e_acsl_assert_data_15.file = "functions.c";
+    __gen_e_acsl_assert_data_15.fct = "main";
+    __gen_e_acsl_assert_data_15.line = 83;
+    __e_acsl_assert(__gen_e_acsl_eq_2 == 0,& __gen_e_acsl_assert_data_15);
+    __e_acsl_assert_clean(& __gen_e_acsl_assert_data_15);
+    __gmpq_clear(__gen_e_acsl_over_2);
+    __gmpq_clear(__gen_e_acsl__11);
+    __gmpq_clear(__gen_e_acsl__12);
+    __gmpq_clear(__gen_e_acsl_div_3);
+  }
+  /*@ assert over(1., 2.) == 1. / 2.; */ ;
   __retres = 0;
   __e_acsl_memory_clean();
   return __retres;
@@ -561,11 +601,12 @@ int __gen_e_acsl_g(int x)
   return __gen_e_acsl_g_hidden_2;
 }
 
-/*@ assigns \result;
-    assigns \result \from m; */
-mystruct __gen_e_acsl_t1(mystruct m)
+/*@ assigns __retres_arg;
+    assigns __retres_arg \from m; */
+void __gen_e_acsl_t1(mystruct *__retres_arg, mystruct m)
 {
-  return m;
+  *__retres_arg = m;
+  return;
 }
 
 /*@ assigns \result;
@@ -633,4 +674,27 @@ int __gen_e_acsl_f_sum(int x)
   return __gen_e_acsl_accumulator;
 }
 
+/*@ assigns (*__retres_arg)[0];
+    assigns (*__retres_arg)[0] \from a, b; */
+void __gen_e_acsl_over(__e_acsl_mpq_t *__retres_arg, double a, double b)
+{
+  __e_acsl_mpq_t __gen_e_acsl_b;
+  __e_acsl_mpq_t __gen_e_acsl__10;
+  __e_acsl_mpq_t __gen_e_acsl_div_2;
+  __gmpq_init(__gen_e_acsl_b);
+  __gmpq_set_d(__gen_e_acsl_b,b);
+  __gmpq_init(__gen_e_acsl__10);
+  __gmpq_set_d(__gen_e_acsl__10,a);
+  __gmpq_init(__gen_e_acsl_div_2);
+  __gmpq_div(__gen_e_acsl_div_2,
+             (__e_acsl_mpq_struct const *)(__gen_e_acsl__10),
+             (__e_acsl_mpq_struct const *)(__gen_e_acsl_b));
+  __gmpq_init(*__retres_arg);
+  __gmpq_set(*__retres_arg,(__e_acsl_mpq_struct const *)(__gen_e_acsl_div_2));
+  __gmpq_clear(__gen_e_acsl_b);
+  __gmpq_clear(__gen_e_acsl__10);
+  __gmpq_clear(__gen_e_acsl_div_2);
+  return;
+}
+
 
diff --git a/src/plugins/e-acsl/tests/gmp-only/oracle/gen_functions.c b/src/plugins/e-acsl/tests/gmp-only/oracle/gen_functions.c
index 11e868ecff42b57483b231fea8c40d5782b95b31..8dacca6e91c64b25bd74aff9816d9713734b3a5f 100644
--- a/src/plugins/e-acsl/tests/gmp-only/oracle/gen_functions.c
+++ b/src/plugins/e-acsl/tests/gmp-only/oracle/gen_functions.c
@@ -58,7 +58,7 @@ int __gen_e_acsl_g(int x);
 
 /*@ logic mystruct t1(mystruct m) = m;
  */
-mystruct __gen_e_acsl_t1(mystruct m);
+void __gen_e_acsl_t1(mystruct *__retres_arg, mystruct m);
 
 /*@ logic integer t2(mystruct m) = m.k + m.l;
  */
@@ -378,7 +378,7 @@ int main(void)
     int __gen_e_acsl_eq_6;
     __e_acsl_assert_data_t __gen_e_acsl_assert_data_11 =
       {.values = (void *)0};
-    __gen_e_acsl_t1_2 = __gen_e_acsl_t1(m);
+    __gen_e_acsl_t1(& __gen_e_acsl_t1_2,m);
     __gen_e_acsl_t2(& __gen_e_acsl_t2_2,__gen_e_acsl_t1_2);
     __gmpz_init_set_si(__gen_e_acsl__16,17L);
     __gen_e_acsl_eq_6 = __gmpz_cmp((__e_acsl_mpz_struct const *)(__gen_e_acsl_t2_2),
@@ -657,11 +657,12 @@ int __gen_e_acsl_g(int x)
   return __gen_e_acsl_g_hidden_2;
 }
 
-/*@ assigns \result;
-    assigns \result \from m; */
-mystruct __gen_e_acsl_t1(mystruct m)
+/*@ assigns __retres_arg;
+    assigns __retres_arg \from m; */
+void __gen_e_acsl_t1(mystruct *__retres_arg, mystruct m)
 {
-  return m;
+  *__retres_arg = m;
+  return;
 }
 
 /*@ assigns (*__retres_arg)[0];