From fbe9945958fbef010991e712c90096b767a1bfa0 Mon Sep 17 00:00:00 2001
From: Julien Signoles <julien.signoles@cea.fr>
Date: Fri, 1 Mar 2019 09:37:56 +0100
Subject: [PATCH] [tests] update oracles

---
 .../tests/gmp/oracle/functions.0.res.oracle   |   1 +
 .../tests/gmp/oracle/functions.1.res.oracle   |   1 +
 .../e-acsl/tests/gmp/oracle/gen_functions.c   | 114 +++---
 .../e-acsl/tests/gmp/oracle/gen_functions2.c  | 126 +++----
 .../tests/gmp/oracle/gen_functions_rec.c      |  92 ++---
 .../tests/gmp/oracle/gen_functions_rec2.c     | 348 +++++++++---------
 6 files changed, 344 insertions(+), 338 deletions(-)

diff --git a/src/plugins/e-acsl/tests/gmp/oracle/functions.0.res.oracle b/src/plugins/e-acsl/tests/gmp/oracle/functions.0.res.oracle
index 8784a09a0db..c60cf271f5f 100644
--- a/src/plugins/e-acsl/tests/gmp/oracle/functions.0.res.oracle
+++ b/src/plugins/e-acsl/tests/gmp/oracle/functions.0.res.oracle
@@ -20,6 +20,7 @@
   __e_acsl_math_HUGE_VALF ∈ [-3.40282346639e+38 .. 3.40282346639e+38]
   __e_acsl_math_INFINITY ∈ [-1.79769313486e+308 .. 1.79769313486e+308]
   glob ∈ {5}
+  __e_acsl_sound_verdict ∈ [--..--]
 [eva] using specification for function __e_acsl_memory_init
 [eva] using specification for function __e_acsl_assert
 [eva] using specification for function __gmpz_init_set_str
diff --git a/src/plugins/e-acsl/tests/gmp/oracle/functions.1.res.oracle b/src/plugins/e-acsl/tests/gmp/oracle/functions.1.res.oracle
index 46f1bb7194a..70b854b31ac 100644
--- a/src/plugins/e-acsl/tests/gmp/oracle/functions.1.res.oracle
+++ b/src/plugins/e-acsl/tests/gmp/oracle/functions.1.res.oracle
@@ -20,6 +20,7 @@
   __e_acsl_math_HUGE_VALF ∈ [-3.40282346639e+38 .. 3.40282346639e+38]
   __e_acsl_math_INFINITY ∈ [-1.79769313486e+308 .. 1.79769313486e+308]
   glob ∈ {5}
+  __e_acsl_sound_verdict ∈ [--..--]
 [eva] using specification for function __e_acsl_memory_init
 [eva] using specification for function __gmpz_init_set_si
 [eva] using specification for function __gmpz_init
diff --git a/src/plugins/e-acsl/tests/gmp/oracle/gen_functions.c b/src/plugins/e-acsl/tests/gmp/oracle/gen_functions.c
index 0c716f6c8bb..9e926f5e7cf 100644
--- a/src/plugins/e-acsl/tests/gmp/oracle/gen_functions.c
+++ b/src/plugins/e-acsl/tests/gmp/oracle/gen_functions.c
@@ -1,6 +1,8 @@
 /* Generated by Frama-C */
 #include "stdio.h"
 #include "stdlib.h"
+extern int __e_acsl_sound_verdict;
+
 struct mystruct {
    int k ;
    int l ;
@@ -13,25 +15,25 @@ int __gen_e_acsl_p1(int __gen_e_acsl_x_arg, int __gen_e_acsl_y_arg);
 /*@ predicate p2(ℤ x, ℤ y) = x + y > 0;
 
 */
-int __gen_e_acsl_p2_2(int __gen_e_acsl_x_arg,
-                      __e_acsl_mpz_struct * __gen_e_acsl_y_arg);
-
 int __gen_e_acsl_p2(int __gen_e_acsl_x_arg, int __gen_e_acsl_y_arg);
 
 int __gen_e_acsl_p2_3(int __gen_e_acsl_x_arg, long __gen_e_acsl_y_arg);
 
+int __gen_e_acsl_p2_2(int __gen_e_acsl_x_arg,
+                      __e_acsl_mpz_struct * __gen_e_acsl_y_arg);
+
 /*@ logic ℤ f1(ℤ x, ℤ y) = x + y;
 
 */
-long __gen_e_acsl_f1(int __gen_e_acsl_x_arg, int __gen_e_acsl_y_arg);
+void __gen_e_acsl_f1_3(__e_acsl_mpz_struct * __retres_arg,
+                       __e_acsl_mpz_struct * __gen_e_acsl_x_arg,
+                       __e_acsl_mpz_struct * __gen_e_acsl_y_arg);
 
 void __gen_e_acsl_f1_2(__e_acsl_mpz_struct * __retres_arg,
                        int __gen_e_acsl_x_arg,
                        __e_acsl_mpz_struct * __gen_e_acsl_y_arg);
 
-void __gen_e_acsl_f1_3(__e_acsl_mpz_struct * __retres_arg,
-                       __e_acsl_mpz_struct * __gen_e_acsl_x_arg,
-                       __e_acsl_mpz_struct * __gen_e_acsl_y_arg);
+long __gen_e_acsl_f1(int __gen_e_acsl_x_arg, int __gen_e_acsl_y_arg);
 
 /*@ logic char h_char(char c) = c;
  */
@@ -300,27 +302,11 @@ char __gen_e_acsl_h_char(int __gen_e_acsl_c_arg)
   return __retres;
 }
 
-void __gen_e_acsl_f1_3(__e_acsl_mpz_struct * __retres_arg,
-                       __e_acsl_mpz_struct * __gen_e_acsl_x_arg,
-                       __e_acsl_mpz_struct * __gen_e_acsl_y_arg)
+long __gen_e_acsl_f1(int __gen_e_acsl_x_arg, int __gen_e_acsl_y_arg)
 {
-  __e_acsl_mpz_t __gen_e_acsl_x_4;
-  __e_acsl_mpz_t __gen_e_acsl_y_4;
-  __e_acsl_mpz_t __gen_e_acsl_add_4;
-  __gmpz_init_set(__gen_e_acsl_x_4,
-                  (__e_acsl_mpz_struct const *)(__gen_e_acsl_x_arg));
-  __gmpz_init_set(__gen_e_acsl_y_4,
-                  (__e_acsl_mpz_struct const *)(__gen_e_acsl_y_arg));
-  __gmpz_init(__gen_e_acsl_add_4);
-  __gmpz_add(__gen_e_acsl_add_4,
-             (__e_acsl_mpz_struct const *)(__gen_e_acsl_x_4),
-             (__e_acsl_mpz_struct const *)(__gen_e_acsl_y_4));
-  __gmpz_init_set(__retres_arg,
-                  (__e_acsl_mpz_struct const *)(__gen_e_acsl_add_4));
-  __gmpz_clear(__gen_e_acsl_x_4);
-  __gmpz_clear(__gen_e_acsl_y_4);
-  __gmpz_clear(__gen_e_acsl_add_4);
-  return;
+  long __retres;
+  __retres = __gen_e_acsl_x_arg + (long)__gen_e_acsl_y_arg;
+  return __retres;
 }
 
 void __gen_e_acsl_f1_2(__e_acsl_mpz_struct * __retres_arg,
@@ -345,10 +331,52 @@ void __gen_e_acsl_f1_2(__e_acsl_mpz_struct * __retres_arg,
   return;
 }
 
-long __gen_e_acsl_f1(int __gen_e_acsl_x_arg, int __gen_e_acsl_y_arg)
+void __gen_e_acsl_f1_3(__e_acsl_mpz_struct * __retres_arg,
+                       __e_acsl_mpz_struct * __gen_e_acsl_x_arg,
+                       __e_acsl_mpz_struct * __gen_e_acsl_y_arg)
 {
-  long __retres;
-  __retres = __gen_e_acsl_x_arg + (long)__gen_e_acsl_y_arg;
+  __e_acsl_mpz_t __gen_e_acsl_x_4;
+  __e_acsl_mpz_t __gen_e_acsl_y_4;
+  __e_acsl_mpz_t __gen_e_acsl_add_4;
+  __gmpz_init_set(__gen_e_acsl_x_4,
+                  (__e_acsl_mpz_struct const *)(__gen_e_acsl_x_arg));
+  __gmpz_init_set(__gen_e_acsl_y_4,
+                  (__e_acsl_mpz_struct const *)(__gen_e_acsl_y_arg));
+  __gmpz_init(__gen_e_acsl_add_4);
+  __gmpz_add(__gen_e_acsl_add_4,
+             (__e_acsl_mpz_struct const *)(__gen_e_acsl_x_4),
+             (__e_acsl_mpz_struct const *)(__gen_e_acsl_y_4));
+  __gmpz_init_set(__retres_arg,
+                  (__e_acsl_mpz_struct const *)(__gen_e_acsl_add_4));
+  __gmpz_clear(__gen_e_acsl_x_4);
+  __gmpz_clear(__gen_e_acsl_y_4);
+  __gmpz_clear(__gen_e_acsl_add_4);
+  return;
+}
+
+int __gen_e_acsl_p2_2(int __gen_e_acsl_x_arg,
+                      __e_acsl_mpz_struct * __gen_e_acsl_y_arg)
+{
+  int __retres;
+  __e_acsl_mpz_t __gen_e_acsl_y;
+  __e_acsl_mpz_t __gen_e_acsl_x;
+  __e_acsl_mpz_t __gen_e_acsl_add;
+  __e_acsl_mpz_t __gen_e_acsl__2;
+  int __gen_e_acsl_gt;
+  __gmpz_init_set(__gen_e_acsl_y,
+                  (__e_acsl_mpz_struct const *)(__gen_e_acsl_y_arg));
+  __gmpz_init_set_si(__gen_e_acsl_x,(long)__gen_e_acsl_x_arg);
+  __gmpz_init(__gen_e_acsl_add);
+  __gmpz_add(__gen_e_acsl_add,(__e_acsl_mpz_struct const *)(__gen_e_acsl_x),
+             (__e_acsl_mpz_struct const *)(__gen_e_acsl_y));
+  __gmpz_init_set_si(__gen_e_acsl__2,0L);
+  __gen_e_acsl_gt = __gmpz_cmp((__e_acsl_mpz_struct const *)(__gen_e_acsl_add),
+                               (__e_acsl_mpz_struct const *)(__gen_e_acsl__2));
+  __retres = __gen_e_acsl_gt > 0;
+  __gmpz_clear(__gen_e_acsl_y);
+  __gmpz_clear(__gen_e_acsl_x);
+  __gmpz_clear(__gen_e_acsl_add);
+  __gmpz_clear(__gen_e_acsl__2);
   return __retres;
 }
 
@@ -384,32 +412,6 @@ int __gen_e_acsl_p2(int __gen_e_acsl_x_arg, int __gen_e_acsl_y_arg)
   return __retres;
 }
 
-int __gen_e_acsl_p2_2(int __gen_e_acsl_x_arg,
-                      __e_acsl_mpz_struct * __gen_e_acsl_y_arg)
-{
-  int __retres;
-  __e_acsl_mpz_t __gen_e_acsl_y;
-  __e_acsl_mpz_t __gen_e_acsl_x;
-  __e_acsl_mpz_t __gen_e_acsl_add;
-  __e_acsl_mpz_t __gen_e_acsl__2;
-  int __gen_e_acsl_gt;
-  __gmpz_init_set(__gen_e_acsl_y,
-                  (__e_acsl_mpz_struct const *)(__gen_e_acsl_y_arg));
-  __gmpz_init_set_si(__gen_e_acsl_x,(long)__gen_e_acsl_x_arg);
-  __gmpz_init(__gen_e_acsl_add);
-  __gmpz_add(__gen_e_acsl_add,(__e_acsl_mpz_struct const *)(__gen_e_acsl_x),
-             (__e_acsl_mpz_struct const *)(__gen_e_acsl_y));
-  __gmpz_init_set_si(__gen_e_acsl__2,0L);
-  __gen_e_acsl_gt = __gmpz_cmp((__e_acsl_mpz_struct const *)(__gen_e_acsl_add),
-                               (__e_acsl_mpz_struct const *)(__gen_e_acsl__2));
-  __retres = __gen_e_acsl_gt > 0;
-  __gmpz_clear(__gen_e_acsl_y);
-  __gmpz_clear(__gen_e_acsl_x);
-  __gmpz_clear(__gen_e_acsl_add);
-  __gmpz_clear(__gen_e_acsl__2);
-  return __retres;
-}
-
 int __gen_e_acsl_p1(int __gen_e_acsl_x_arg, int __gen_e_acsl_y_arg)
 {
   int __retres;
diff --git a/src/plugins/e-acsl/tests/gmp/oracle/gen_functions2.c b/src/plugins/e-acsl/tests/gmp/oracle/gen_functions2.c
index 890ef4bf2c6..bbf29e6ab39 100644
--- a/src/plugins/e-acsl/tests/gmp/oracle/gen_functions2.c
+++ b/src/plugins/e-acsl/tests/gmp/oracle/gen_functions2.c
@@ -1,6 +1,8 @@
 /* Generated by Frama-C */
 #include "stdio.h"
 #include "stdlib.h"
+extern int __e_acsl_sound_verdict;
+
 struct mystruct {
    int k ;
    int l ;
@@ -13,23 +15,23 @@ int __gen_e_acsl_p1(int __gen_e_acsl_x_arg, int __gen_e_acsl_y_arg);
 /*@ predicate p2(ℤ x, ℤ y) = x + y > 0;
 
 */
+int __gen_e_acsl_p2(int __gen_e_acsl_x_arg, int __gen_e_acsl_y_arg);
+
 int __gen_e_acsl_p2_2(int __gen_e_acsl_x_arg,
                       __e_acsl_mpz_struct * __gen_e_acsl_y_arg);
 
-int __gen_e_acsl_p2(int __gen_e_acsl_x_arg, int __gen_e_acsl_y_arg);
-
 /*@ logic ℤ f1(ℤ x, ℤ y) = x + y;
 
 */
-void __gen_e_acsl_f1_2(__e_acsl_mpz_struct * __retres_arg,
-                       int __gen_e_acsl_x_arg,
+void __gen_e_acsl_f1_3(__e_acsl_mpz_struct * __retres_arg,
+                       __e_acsl_mpz_struct * __gen_e_acsl_x_arg,
                        __e_acsl_mpz_struct * __gen_e_acsl_y_arg);
 
 void __gen_e_acsl_f1(__e_acsl_mpz_struct * __retres_arg,
                      int __gen_e_acsl_x_arg, int __gen_e_acsl_y_arg);
 
-void __gen_e_acsl_f1_3(__e_acsl_mpz_struct * __retres_arg,
-                       __e_acsl_mpz_struct * __gen_e_acsl_x_arg,
+void __gen_e_acsl_f1_2(__e_acsl_mpz_struct * __retres_arg,
+                       int __gen_e_acsl_x_arg,
                        __e_acsl_mpz_struct * __gen_e_acsl_y_arg);
 
 /*@ logic char h_char(char c) = c;
@@ -369,26 +371,25 @@ char __gen_e_acsl_h_char(int __gen_e_acsl_c_arg)
   return __retres;
 }
 
-void __gen_e_acsl_f1_3(__e_acsl_mpz_struct * __retres_arg,
-                       __e_acsl_mpz_struct * __gen_e_acsl_x_arg,
+void __gen_e_acsl_f1_2(__e_acsl_mpz_struct * __retres_arg,
+                       int __gen_e_acsl_x_arg,
                        __e_acsl_mpz_struct * __gen_e_acsl_y_arg)
 {
-  __e_acsl_mpz_t __gen_e_acsl_x_6;
-  __e_acsl_mpz_t __gen_e_acsl_y_6;
-  __e_acsl_mpz_t __gen_e_acsl_add_6;
-  __gmpz_init_set(__gen_e_acsl_x_6,
-                  (__e_acsl_mpz_struct const *)(__gen_e_acsl_x_arg));
-  __gmpz_init_set(__gen_e_acsl_y_6,
+  __e_acsl_mpz_t __gen_e_acsl_y_5;
+  __e_acsl_mpz_t __gen_e_acsl_x_5;
+  __e_acsl_mpz_t __gen_e_acsl_add_5;
+  __gmpz_init_set(__gen_e_acsl_y_5,
                   (__e_acsl_mpz_struct const *)(__gen_e_acsl_y_arg));
-  __gmpz_init(__gen_e_acsl_add_6);
-  __gmpz_add(__gen_e_acsl_add_6,
-             (__e_acsl_mpz_struct const *)(__gen_e_acsl_x_6),
-             (__e_acsl_mpz_struct const *)(__gen_e_acsl_y_6));
+  __gmpz_init_set_si(__gen_e_acsl_x_5,(long)__gen_e_acsl_x_arg);
+  __gmpz_init(__gen_e_acsl_add_5);
+  __gmpz_add(__gen_e_acsl_add_5,
+             (__e_acsl_mpz_struct const *)(__gen_e_acsl_x_5),
+             (__e_acsl_mpz_struct const *)(__gen_e_acsl_y_5));
   __gmpz_init_set(__retres_arg,
-                  (__e_acsl_mpz_struct const *)(__gen_e_acsl_add_6));
-  __gmpz_clear(__gen_e_acsl_x_6);
-  __gmpz_clear(__gen_e_acsl_y_6);
-  __gmpz_clear(__gen_e_acsl_add_6);
+                  (__e_acsl_mpz_struct const *)(__gen_e_acsl_add_5));
+  __gmpz_clear(__gen_e_acsl_y_5);
+  __gmpz_clear(__gen_e_acsl_x_5);
+  __gmpz_clear(__gen_e_acsl_add_5);
   return;
 }
 
@@ -412,53 +413,29 @@ void __gen_e_acsl_f1(__e_acsl_mpz_struct * __retres_arg,
   return;
 }
 
-void __gen_e_acsl_f1_2(__e_acsl_mpz_struct * __retres_arg,
-                       int __gen_e_acsl_x_arg,
+void __gen_e_acsl_f1_3(__e_acsl_mpz_struct * __retres_arg,
+                       __e_acsl_mpz_struct * __gen_e_acsl_x_arg,
                        __e_acsl_mpz_struct * __gen_e_acsl_y_arg)
 {
-  __e_acsl_mpz_t __gen_e_acsl_y_5;
-  __e_acsl_mpz_t __gen_e_acsl_x_5;
-  __e_acsl_mpz_t __gen_e_acsl_add_5;
-  __gmpz_init_set(__gen_e_acsl_y_5,
+  __e_acsl_mpz_t __gen_e_acsl_x_6;
+  __e_acsl_mpz_t __gen_e_acsl_y_6;
+  __e_acsl_mpz_t __gen_e_acsl_add_6;
+  __gmpz_init_set(__gen_e_acsl_x_6,
+                  (__e_acsl_mpz_struct const *)(__gen_e_acsl_x_arg));
+  __gmpz_init_set(__gen_e_acsl_y_6,
                   (__e_acsl_mpz_struct const *)(__gen_e_acsl_y_arg));
-  __gmpz_init_set_si(__gen_e_acsl_x_5,(long)__gen_e_acsl_x_arg);
-  __gmpz_init(__gen_e_acsl_add_5);
-  __gmpz_add(__gen_e_acsl_add_5,
-             (__e_acsl_mpz_struct const *)(__gen_e_acsl_x_5),
-             (__e_acsl_mpz_struct const *)(__gen_e_acsl_y_5));
+  __gmpz_init(__gen_e_acsl_add_6);
+  __gmpz_add(__gen_e_acsl_add_6,
+             (__e_acsl_mpz_struct const *)(__gen_e_acsl_x_6),
+             (__e_acsl_mpz_struct const *)(__gen_e_acsl_y_6));
   __gmpz_init_set(__retres_arg,
-                  (__e_acsl_mpz_struct const *)(__gen_e_acsl_add_5));
-  __gmpz_clear(__gen_e_acsl_y_5);
-  __gmpz_clear(__gen_e_acsl_x_5);
-  __gmpz_clear(__gen_e_acsl_add_5);
+                  (__e_acsl_mpz_struct const *)(__gen_e_acsl_add_6));
+  __gmpz_clear(__gen_e_acsl_x_6);
+  __gmpz_clear(__gen_e_acsl_y_6);
+  __gmpz_clear(__gen_e_acsl_add_6);
   return;
 }
 
-int __gen_e_acsl_p2(int __gen_e_acsl_x_arg, int __gen_e_acsl_y_arg)
-{
-  int __retres;
-  __e_acsl_mpz_t __gen_e_acsl_x_2;
-  __e_acsl_mpz_t __gen_e_acsl_y_2;
-  __e_acsl_mpz_t __gen_e_acsl_add_2;
-  __e_acsl_mpz_t __gen_e_acsl__2;
-  int __gen_e_acsl_gt_2;
-  __gmpz_init_set_si(__gen_e_acsl_x_2,(long)__gen_e_acsl_x_arg);
-  __gmpz_init_set_si(__gen_e_acsl_y_2,(long)__gen_e_acsl_y_arg);
-  __gmpz_init(__gen_e_acsl_add_2);
-  __gmpz_add(__gen_e_acsl_add_2,
-             (__e_acsl_mpz_struct const *)(__gen_e_acsl_x_2),
-             (__e_acsl_mpz_struct const *)(__gen_e_acsl_y_2));
-  __gmpz_init_set_si(__gen_e_acsl__2,0L);
-  __gen_e_acsl_gt_2 = __gmpz_cmp((__e_acsl_mpz_struct const *)(__gen_e_acsl_add_2),
-                                 (__e_acsl_mpz_struct const *)(__gen_e_acsl__2));
-  __retres = __gen_e_acsl_gt_2 > 0;
-  __gmpz_clear(__gen_e_acsl_x_2);
-  __gmpz_clear(__gen_e_acsl_y_2);
-  __gmpz_clear(__gen_e_acsl_add_2);
-  __gmpz_clear(__gen_e_acsl__2);
-  return __retres;
-}
-
 int __gen_e_acsl_p2_2(int __gen_e_acsl_x_arg,
                       __e_acsl_mpz_struct * __gen_e_acsl_y_arg)
 {
@@ -486,6 +463,31 @@ int __gen_e_acsl_p2_2(int __gen_e_acsl_x_arg,
   return __retres;
 }
 
+int __gen_e_acsl_p2(int __gen_e_acsl_x_arg, int __gen_e_acsl_y_arg)
+{
+  int __retres;
+  __e_acsl_mpz_t __gen_e_acsl_x_2;
+  __e_acsl_mpz_t __gen_e_acsl_y_2;
+  __e_acsl_mpz_t __gen_e_acsl_add_2;
+  __e_acsl_mpz_t __gen_e_acsl__2;
+  int __gen_e_acsl_gt_2;
+  __gmpz_init_set_si(__gen_e_acsl_x_2,(long)__gen_e_acsl_x_arg);
+  __gmpz_init_set_si(__gen_e_acsl_y_2,(long)__gen_e_acsl_y_arg);
+  __gmpz_init(__gen_e_acsl_add_2);
+  __gmpz_add(__gen_e_acsl_add_2,
+             (__e_acsl_mpz_struct const *)(__gen_e_acsl_x_2),
+             (__e_acsl_mpz_struct const *)(__gen_e_acsl_y_2));
+  __gmpz_init_set_si(__gen_e_acsl__2,0L);
+  __gen_e_acsl_gt_2 = __gmpz_cmp((__e_acsl_mpz_struct const *)(__gen_e_acsl_add_2),
+                                 (__e_acsl_mpz_struct const *)(__gen_e_acsl__2));
+  __retres = __gen_e_acsl_gt_2 > 0;
+  __gmpz_clear(__gen_e_acsl_x_2);
+  __gmpz_clear(__gen_e_acsl_y_2);
+  __gmpz_clear(__gen_e_acsl_add_2);
+  __gmpz_clear(__gen_e_acsl__2);
+  return __retres;
+}
+
 int __gen_e_acsl_p1(int __gen_e_acsl_x_arg, int __gen_e_acsl_y_arg)
 {
   int __retres;
diff --git a/src/plugins/e-acsl/tests/gmp/oracle/gen_functions_rec.c b/src/plugins/e-acsl/tests/gmp/oracle/gen_functions_rec.c
index c747ce87540..10ad7f46881 100644
--- a/src/plugins/e-acsl/tests/gmp/oracle/gen_functions_rec.c
+++ b/src/plugins/e-acsl/tests/gmp/oracle/gen_functions_rec.c
@@ -45,12 +45,12 @@ logic ℤ f4(ℤ n) =
   n < 100? f4(n + 1): (n < 0x7fffffffffffffffL? 0x7fffffffffffffffL: 6);
 
 */
-long __gen_e_acsl_f4_3(__e_acsl_mpz_struct * __gen_e_acsl_n_arg);
-
 long __gen_e_acsl_f4(int __gen_e_acsl_n_arg);
 
 long __gen_e_acsl_f4_2(long __gen_e_acsl_n_arg);
 
+long __gen_e_acsl_f4_3(__e_acsl_mpz_struct * __gen_e_acsl_n_arg);
+
 int main(void)
 {
   int __retres;
@@ -129,6 +129,50 @@ int main(void)
   return __retres;
 }
 
+long __gen_e_acsl_f4_3(__e_acsl_mpz_struct * __gen_e_acsl_n_arg)
+{
+  long __retres;
+  __e_acsl_mpz_t __gen_e_acsl_n_11;
+  __e_acsl_mpz_t __gen_e_acsl__23;
+  int __gen_e_acsl_lt_2;
+  long __gen_e_acsl_if_11;
+  __gmpz_init_set(__gen_e_acsl_n_11,
+                  (__e_acsl_mpz_struct const *)(__gen_e_acsl_n_arg));
+  __gmpz_init_set_si(__gen_e_acsl__23,100L);
+  __gen_e_acsl_lt_2 = __gmpz_cmp((__e_acsl_mpz_struct const *)(__gen_e_acsl_n_11),
+                                 (__e_acsl_mpz_struct const *)(__gen_e_acsl__23));
+  if (__gen_e_acsl_lt_2 < 0) {
+    __e_acsl_mpz_t __gen_e_acsl__24;
+    __e_acsl_mpz_t __gen_e_acsl_add_7;
+    long __gen_e_acsl_f4_tapp_4;
+    __gmpz_init_set_si(__gen_e_acsl__24,1L);
+    __gmpz_init(__gen_e_acsl_add_7);
+    __gmpz_add(__gen_e_acsl_add_7,
+               (__e_acsl_mpz_struct const *)(__gen_e_acsl_n_11),
+               (__e_acsl_mpz_struct const *)(__gen_e_acsl__24));
+    __gen_e_acsl_f4_tapp_4 = __gen_e_acsl_f4_3((__e_acsl_mpz_struct *)__gen_e_acsl_add_7);
+    __gen_e_acsl_if_11 = __gen_e_acsl_f4_tapp_4;
+    __gmpz_clear(__gen_e_acsl__24);
+    __gmpz_clear(__gen_e_acsl_add_7);
+  }
+  else {
+    __e_acsl_mpz_t __gen_e_acsl__25;
+    int __gen_e_acsl_lt_3;
+    unsigned long __gen_e_acsl_if_10;
+    __gmpz_init_set_ui(__gen_e_acsl__25,9223372036854775807UL);
+    __gen_e_acsl_lt_3 = __gmpz_cmp((__e_acsl_mpz_struct const *)(__gen_e_acsl_n_11),
+                                   (__e_acsl_mpz_struct const *)(__gen_e_acsl__25));
+    if (__gen_e_acsl_lt_3 < 0) __gen_e_acsl_if_10 = 9223372036854775807UL;
+    else __gen_e_acsl_if_10 = 6UL;
+    __gen_e_acsl_if_11 = (long)__gen_e_acsl_if_10;
+    __gmpz_clear(__gen_e_acsl__25);
+  }
+  __retres = __gen_e_acsl_if_11;
+  __gmpz_clear(__gen_e_acsl_n_11);
+  __gmpz_clear(__gen_e_acsl__23);
+  return __retres;
+}
+
 long __gen_e_acsl_f4_2(long __gen_e_acsl_n_arg)
 {
   long __retres;
@@ -179,50 +223,6 @@ long __gen_e_acsl_f4(int __gen_e_acsl_n_arg)
   return __retres;
 }
 
-long __gen_e_acsl_f4_3(__e_acsl_mpz_struct * __gen_e_acsl_n_arg)
-{
-  long __retres;
-  __e_acsl_mpz_t __gen_e_acsl_n_11;
-  __e_acsl_mpz_t __gen_e_acsl__23;
-  int __gen_e_acsl_lt_2;
-  long __gen_e_acsl_if_11;
-  __gmpz_init_set(__gen_e_acsl_n_11,
-                  (__e_acsl_mpz_struct const *)(__gen_e_acsl_n_arg));
-  __gmpz_init_set_si(__gen_e_acsl__23,100L);
-  __gen_e_acsl_lt_2 = __gmpz_cmp((__e_acsl_mpz_struct const *)(__gen_e_acsl_n_11),
-                                 (__e_acsl_mpz_struct const *)(__gen_e_acsl__23));
-  if (__gen_e_acsl_lt_2 < 0) {
-    __e_acsl_mpz_t __gen_e_acsl__24;
-    __e_acsl_mpz_t __gen_e_acsl_add_7;
-    long __gen_e_acsl_f4_tapp_4;
-    __gmpz_init_set_si(__gen_e_acsl__24,1L);
-    __gmpz_init(__gen_e_acsl_add_7);
-    __gmpz_add(__gen_e_acsl_add_7,
-               (__e_acsl_mpz_struct const *)(__gen_e_acsl_n_11),
-               (__e_acsl_mpz_struct const *)(__gen_e_acsl__24));
-    __gen_e_acsl_f4_tapp_4 = __gen_e_acsl_f4_3((__e_acsl_mpz_struct *)__gen_e_acsl_add_7);
-    __gen_e_acsl_if_11 = __gen_e_acsl_f4_tapp_4;
-    __gmpz_clear(__gen_e_acsl__24);
-    __gmpz_clear(__gen_e_acsl_add_7);
-  }
-  else {
-    __e_acsl_mpz_t __gen_e_acsl__25;
-    int __gen_e_acsl_lt_3;
-    unsigned long __gen_e_acsl_if_10;
-    __gmpz_init_set_ui(__gen_e_acsl__25,9223372036854775807UL);
-    __gen_e_acsl_lt_3 = __gmpz_cmp((__e_acsl_mpz_struct const *)(__gen_e_acsl_n_11),
-                                   (__e_acsl_mpz_struct const *)(__gen_e_acsl__25));
-    if (__gen_e_acsl_lt_3 < 0) __gen_e_acsl_if_10 = 9223372036854775807UL;
-    else __gen_e_acsl_if_10 = 6UL;
-    __gen_e_acsl_if_11 = (long)__gen_e_acsl_if_10;
-    __gmpz_clear(__gen_e_acsl__25);
-  }
-  __retres = __gen_e_acsl_if_11;
-  __gmpz_clear(__gen_e_acsl_n_11);
-  __gmpz_clear(__gen_e_acsl__23);
-  return __retres;
-}
-
 int __gen_e_acsl_f3_3(__e_acsl_mpz_struct * __gen_e_acsl_n_arg)
 {
   int __retres;
diff --git a/src/plugins/e-acsl/tests/gmp/oracle/gen_functions_rec2.c b/src/plugins/e-acsl/tests/gmp/oracle/gen_functions_rec2.c
index 35f5f695298..fe7af1124fe 100644
--- a/src/plugins/e-acsl/tests/gmp/oracle/gen_functions_rec2.c
+++ b/src/plugins/e-acsl/tests/gmp/oracle/gen_functions_rec2.c
@@ -13,21 +13,21 @@ void __gen_e_acsl_f1_2(__e_acsl_mpz_struct * __retres_arg,
 /*@ logic ℤ f2(ℤ n) = n < 0? 1: (f2(n - 1) * f2(n - 2)) / f2(n - 3);
 
 */
-void __gen_e_acsl_f2_2(__e_acsl_mpz_struct * __retres_arg,
-                       __e_acsl_mpz_struct * __gen_e_acsl_n_arg);
-
 void __gen_e_acsl_f2(__e_acsl_mpz_struct * __retres_arg,
                      int __gen_e_acsl_n_arg);
 
+void __gen_e_acsl_f2_2(__e_acsl_mpz_struct * __retres_arg,
+                       __e_acsl_mpz_struct * __gen_e_acsl_n_arg);
+
 /*@ logic ℤ g(ℤ n) = 0;
 
 */
-void __gen_e_acsl_g_2(__e_acsl_mpz_struct * __retres_arg,
-                      __e_acsl_mpz_struct * __gen_e_acsl_n_arg);
-
 void __gen_e_acsl_g(__e_acsl_mpz_struct * __retres_arg,
                     int __gen_e_acsl_n_arg);
 
+void __gen_e_acsl_g_2(__e_acsl_mpz_struct * __retres_arg,
+                      __e_acsl_mpz_struct * __gen_e_acsl_n_arg);
+
 /*@ logic ℤ f3(ℤ n) = n > 0? g(n) * f3(n - 1) - 5: g(n + 1);
 
 */
@@ -42,12 +42,12 @@ logic ℤ f4(ℤ n) =
   n < 100? f4(n + 1): (n < 0x7fffffffffffffffL? 0x7fffffffffffffffL: 6);
 
 */
-void __gen_e_acsl_f4(__e_acsl_mpz_struct * __retres_arg,
-                     int __gen_e_acsl_n_arg);
-
 void __gen_e_acsl_f4_2(__e_acsl_mpz_struct * __retres_arg,
                        __e_acsl_mpz_struct * __gen_e_acsl_n_arg);
 
+void __gen_e_acsl_f4(__e_acsl_mpz_struct * __retres_arg,
+                     int __gen_e_acsl_n_arg);
+
 int main(void)
 {
   int __retres;
@@ -155,70 +155,6 @@ int main(void)
   return __retres;
 }
 
-void __gen_e_acsl_f4_2(__e_acsl_mpz_struct * __retres_arg,
-                       __e_acsl_mpz_struct * __gen_e_acsl_n_arg)
-{
-  __e_acsl_mpz_t __gen_e_acsl_n_14;
-  __e_acsl_mpz_t __gen_e_acsl__36;
-  int __gen_e_acsl_lt_4;
-  __e_acsl_mpz_t __gen_e_acsl_if_8;
-  __gmpz_init_set(__gen_e_acsl_n_14,
-                  (__e_acsl_mpz_struct const *)(__gen_e_acsl_n_arg));
-  __gmpz_init_set_si(__gen_e_acsl__36,100L);
-  __gen_e_acsl_lt_4 = __gmpz_cmp((__e_acsl_mpz_struct const *)(__gen_e_acsl_n_14),
-                                 (__e_acsl_mpz_struct const *)(__gen_e_acsl__36));
-  if (__gen_e_acsl_lt_4 < 0) {
-    __e_acsl_mpz_t __gen_e_acsl__37;
-    __e_acsl_mpz_t __gen_e_acsl_add_6;
-    __e_acsl_mpz_t __gen_e_acsl_f4_tapp_3;
-    __gmpz_init_set_si(__gen_e_acsl__37,1L);
-    __gmpz_init(__gen_e_acsl_add_6);
-    __gmpz_add(__gen_e_acsl_add_6,
-               (__e_acsl_mpz_struct const *)(__gen_e_acsl_n_14),
-               (__e_acsl_mpz_struct const *)(__gen_e_acsl__37));
-    __gmpz_init(__gen_e_acsl_f4_tapp_3);
-    __gen_e_acsl_f4_2((__e_acsl_mpz_struct *)__gen_e_acsl_f4_tapp_3,
-                      (__e_acsl_mpz_struct *)__gen_e_acsl_add_6);
-    __gmpz_init_set(__gen_e_acsl_if_8,
-                    (__e_acsl_mpz_struct const *)(__gen_e_acsl_f4_tapp_3));
-    __gmpz_clear(__gen_e_acsl__37);
-    __gmpz_clear(__gen_e_acsl_add_6);
-    __gmpz_clear(__gen_e_acsl_f4_tapp_3);
-  }
-  else {
-    __e_acsl_mpz_t __gen_e_acsl__38;
-    int __gen_e_acsl_lt_5;
-    __e_acsl_mpz_t __gen_e_acsl_if_7;
-    __gmpz_init_set_ui(__gen_e_acsl__38,9223372036854775807UL);
-    __gen_e_acsl_lt_5 = __gmpz_cmp((__e_acsl_mpz_struct const *)(__gen_e_acsl_n_14),
-                                   (__e_acsl_mpz_struct const *)(__gen_e_acsl__38));
-    if (__gen_e_acsl_lt_5 < 0) {
-      __e_acsl_mpz_t __gen_e_acsl__39;
-      __gmpz_init_set_ui(__gen_e_acsl__39,9223372036854775807UL);
-      __gmpz_init_set(__gen_e_acsl_if_7,
-                      (__e_acsl_mpz_struct const *)(__gen_e_acsl__39));
-      __gmpz_clear(__gen_e_acsl__39);
-    }
-    else {
-      __e_acsl_mpz_t __gen_e_acsl__40;
-      __gmpz_init_set_si(__gen_e_acsl__40,6L);
-      __gmpz_init_set(__gen_e_acsl_if_7,
-                      (__e_acsl_mpz_struct const *)(__gen_e_acsl__40));
-      __gmpz_clear(__gen_e_acsl__40);
-    }
-    __gmpz_init_set(__gen_e_acsl_if_8,
-                    (__e_acsl_mpz_struct const *)(__gen_e_acsl_if_7));
-    __gmpz_clear(__gen_e_acsl__38);
-    __gmpz_clear(__gen_e_acsl_if_7);
-  }
-  __gmpz_init_set(__retres_arg,
-                  (__e_acsl_mpz_struct const *)(__gen_e_acsl_if_8));
-  __gmpz_clear(__gen_e_acsl_n_14);
-  __gmpz_clear(__gen_e_acsl__36);
-  __gmpz_clear(__gen_e_acsl_if_8);
-  return;
-}
-
 void __gen_e_acsl_f4(__e_acsl_mpz_struct * __retres_arg,
                      int __gen_e_acsl_n_arg)
 {
@@ -288,6 +224,70 @@ void __gen_e_acsl_f4(__e_acsl_mpz_struct * __retres_arg,
   return;
 }
 
+void __gen_e_acsl_f4_2(__e_acsl_mpz_struct * __retres_arg,
+                       __e_acsl_mpz_struct * __gen_e_acsl_n_arg)
+{
+  __e_acsl_mpz_t __gen_e_acsl_n_14;
+  __e_acsl_mpz_t __gen_e_acsl__36;
+  int __gen_e_acsl_lt_4;
+  __e_acsl_mpz_t __gen_e_acsl_if_8;
+  __gmpz_init_set(__gen_e_acsl_n_14,
+                  (__e_acsl_mpz_struct const *)(__gen_e_acsl_n_arg));
+  __gmpz_init_set_si(__gen_e_acsl__36,100L);
+  __gen_e_acsl_lt_4 = __gmpz_cmp((__e_acsl_mpz_struct const *)(__gen_e_acsl_n_14),
+                                 (__e_acsl_mpz_struct const *)(__gen_e_acsl__36));
+  if (__gen_e_acsl_lt_4 < 0) {
+    __e_acsl_mpz_t __gen_e_acsl__37;
+    __e_acsl_mpz_t __gen_e_acsl_add_6;
+    __e_acsl_mpz_t __gen_e_acsl_f4_tapp_3;
+    __gmpz_init_set_si(__gen_e_acsl__37,1L);
+    __gmpz_init(__gen_e_acsl_add_6);
+    __gmpz_add(__gen_e_acsl_add_6,
+               (__e_acsl_mpz_struct const *)(__gen_e_acsl_n_14),
+               (__e_acsl_mpz_struct const *)(__gen_e_acsl__37));
+    __gmpz_init(__gen_e_acsl_f4_tapp_3);
+    __gen_e_acsl_f4_2((__e_acsl_mpz_struct *)__gen_e_acsl_f4_tapp_3,
+                      (__e_acsl_mpz_struct *)__gen_e_acsl_add_6);
+    __gmpz_init_set(__gen_e_acsl_if_8,
+                    (__e_acsl_mpz_struct const *)(__gen_e_acsl_f4_tapp_3));
+    __gmpz_clear(__gen_e_acsl__37);
+    __gmpz_clear(__gen_e_acsl_add_6);
+    __gmpz_clear(__gen_e_acsl_f4_tapp_3);
+  }
+  else {
+    __e_acsl_mpz_t __gen_e_acsl__38;
+    int __gen_e_acsl_lt_5;
+    __e_acsl_mpz_t __gen_e_acsl_if_7;
+    __gmpz_init_set_ui(__gen_e_acsl__38,9223372036854775807UL);
+    __gen_e_acsl_lt_5 = __gmpz_cmp((__e_acsl_mpz_struct const *)(__gen_e_acsl_n_14),
+                                   (__e_acsl_mpz_struct const *)(__gen_e_acsl__38));
+    if (__gen_e_acsl_lt_5 < 0) {
+      __e_acsl_mpz_t __gen_e_acsl__39;
+      __gmpz_init_set_ui(__gen_e_acsl__39,9223372036854775807UL);
+      __gmpz_init_set(__gen_e_acsl_if_7,
+                      (__e_acsl_mpz_struct const *)(__gen_e_acsl__39));
+      __gmpz_clear(__gen_e_acsl__39);
+    }
+    else {
+      __e_acsl_mpz_t __gen_e_acsl__40;
+      __gmpz_init_set_si(__gen_e_acsl__40,6L);
+      __gmpz_init_set(__gen_e_acsl_if_7,
+                      (__e_acsl_mpz_struct const *)(__gen_e_acsl__40));
+      __gmpz_clear(__gen_e_acsl__40);
+    }
+    __gmpz_init_set(__gen_e_acsl_if_8,
+                    (__e_acsl_mpz_struct const *)(__gen_e_acsl_if_7));
+    __gmpz_clear(__gen_e_acsl__38);
+    __gmpz_clear(__gen_e_acsl_if_7);
+  }
+  __gmpz_init_set(__retres_arg,
+                  (__e_acsl_mpz_struct const *)(__gen_e_acsl_if_8));
+  __gmpz_clear(__gen_e_acsl_n_14);
+  __gmpz_clear(__gen_e_acsl__36);
+  __gmpz_clear(__gen_e_acsl_if_8);
+  return;
+}
+
 void __gen_e_acsl_f3_2(__e_acsl_mpz_struct * __retres_arg,
                        __e_acsl_mpz_struct * __gen_e_acsl_n_arg)
 {
@@ -445,17 +445,6 @@ void __gen_e_acsl_f3(__e_acsl_mpz_struct * __retres_arg,
   return;
 }
 
-void __gen_e_acsl_g(__e_acsl_mpz_struct * __retres_arg,
-                    int __gen_e_acsl_n_arg)
-{
-  __e_acsl_mpz_t __gen_e_acsl__24;
-  __gmpz_init_set_si(__gen_e_acsl__24,0L);
-  __gmpz_init_set(__retres_arg,
-                  (__e_acsl_mpz_struct const *)(__gen_e_acsl__24));
-  __gmpz_clear(__gen_e_acsl__24);
-  return;
-}
-
 void __gen_e_acsl_g_2(__e_acsl_mpz_struct * __retres_arg,
                       __e_acsl_mpz_struct * __gen_e_acsl_n_arg)
 {
@@ -471,98 +460,14 @@ void __gen_e_acsl_g_2(__e_acsl_mpz_struct * __retres_arg,
   return;
 }
 
-void __gen_e_acsl_f2(__e_acsl_mpz_struct * __retres_arg,
-                     int __gen_e_acsl_n_arg)
+void __gen_e_acsl_g(__e_acsl_mpz_struct * __retres_arg,
+                    int __gen_e_acsl_n_arg)
 {
-  __e_acsl_mpz_t __gen_e_acsl_n_4;
-  __e_acsl_mpz_t __gen_e_acsl__10;
-  int __gen_e_acsl_lt;
-  __e_acsl_mpz_t __gen_e_acsl_if_4;
-  __gmpz_init_set_si(__gen_e_acsl_n_4,(long)__gen_e_acsl_n_arg);
-  __gmpz_init_set_si(__gen_e_acsl__10,0L);
-  __gen_e_acsl_lt = __gmpz_cmp((__e_acsl_mpz_struct const *)(__gen_e_acsl_n_4),
-                               (__e_acsl_mpz_struct const *)(__gen_e_acsl__10));
-  if (__gen_e_acsl_lt < 0) {
-    __e_acsl_mpz_t __gen_e_acsl__11;
-    __gmpz_init_set_si(__gen_e_acsl__11,1L);
-    __gmpz_init_set(__gen_e_acsl_if_4,
-                    (__e_acsl_mpz_struct const *)(__gen_e_acsl__11));
-    __gmpz_clear(__gen_e_acsl__11);
-  }
-  else {
-    __e_acsl_mpz_t __gen_e_acsl_n_5;
-    __e_acsl_mpz_t __gen_e_acsl__12;
-    __e_acsl_mpz_t __gen_e_acsl_sub_3;
-    __e_acsl_mpz_t __gen_e_acsl_f2_tapp_2;
-    __e_acsl_mpz_t __gen_e_acsl__19;
-    __e_acsl_mpz_t __gen_e_acsl_sub_7;
-    __e_acsl_mpz_t __gen_e_acsl_f2_tapp_6;
-    __e_acsl_mpz_t __gen_e_acsl_mul_2;
-    __e_acsl_mpz_t __gen_e_acsl__20;
-    __e_acsl_mpz_t __gen_e_acsl_sub_8;
-    __e_acsl_mpz_t __gen_e_acsl_f2_tapp_7;
-    __e_acsl_mpz_t __gen_e_acsl__21;
-    int __gen_e_acsl_div_guard_2;
-    __e_acsl_mpz_t __gen_e_acsl_div_2;
-    __gmpz_init_set_si(__gen_e_acsl_n_5,(long)__gen_e_acsl_n_arg);
-    __gmpz_init_set_si(__gen_e_acsl__12,1L);
-    __gmpz_init(__gen_e_acsl_sub_3);
-    __gmpz_sub(__gen_e_acsl_sub_3,
-               (__e_acsl_mpz_struct const *)(__gen_e_acsl_n_5),
-               (__e_acsl_mpz_struct const *)(__gen_e_acsl__12));
-    __gmpz_init(__gen_e_acsl_f2_tapp_2);
-    __gen_e_acsl_f2_2((__e_acsl_mpz_struct *)__gen_e_acsl_f2_tapp_2,
-                      (__e_acsl_mpz_struct *)__gen_e_acsl_sub_3);
-    __gmpz_init_set_si(__gen_e_acsl__19,2L);
-    __gmpz_init(__gen_e_acsl_sub_7);
-    __gmpz_sub(__gen_e_acsl_sub_7,
-               (__e_acsl_mpz_struct const *)(__gen_e_acsl_n_5),
-               (__e_acsl_mpz_struct const *)(__gen_e_acsl__19));
-    __gmpz_init(__gen_e_acsl_f2_tapp_6);
-    __gen_e_acsl_f2_2((__e_acsl_mpz_struct *)__gen_e_acsl_f2_tapp_6,
-                      (__e_acsl_mpz_struct *)__gen_e_acsl_sub_7);
-    __gmpz_init(__gen_e_acsl_mul_2);
-    __gmpz_mul(__gen_e_acsl_mul_2,
-               (__e_acsl_mpz_struct const *)(__gen_e_acsl_f2_tapp_2),
-               (__e_acsl_mpz_struct const *)(__gen_e_acsl_f2_tapp_6));
-    __gmpz_init_set_si(__gen_e_acsl__20,3L);
-    __gmpz_init(__gen_e_acsl_sub_8);
-    __gmpz_sub(__gen_e_acsl_sub_8,
-               (__e_acsl_mpz_struct const *)(__gen_e_acsl_n_5),
-               (__e_acsl_mpz_struct const *)(__gen_e_acsl__20));
-    __gmpz_init(__gen_e_acsl_f2_tapp_7);
-    __gen_e_acsl_f2_2((__e_acsl_mpz_struct *)__gen_e_acsl_f2_tapp_7,
-                      (__e_acsl_mpz_struct *)__gen_e_acsl_sub_8);
-    __gmpz_init_set_si(__gen_e_acsl__21,0L);
-    __gen_e_acsl_div_guard_2 = __gmpz_cmp((__e_acsl_mpz_struct const *)(__gen_e_acsl_f2_tapp_7),
-                                          (__e_acsl_mpz_struct const *)(__gen_e_acsl__21));
-    __gmpz_init(__gen_e_acsl_div_2);
-    __e_acsl_assert(! (__gen_e_acsl_div_guard_2 == 0),(char *)"Assertion",
-                    (char *)"f2_2",(char *)"f2(n - 3) == 0",9);
-    __gmpz_tdiv_q(__gen_e_acsl_div_2,
-                  (__e_acsl_mpz_struct const *)(__gen_e_acsl_mul_2),
-                  (__e_acsl_mpz_struct const *)(__gen_e_acsl_f2_tapp_7));
-    __gmpz_init_set(__gen_e_acsl_if_4,
-                    (__e_acsl_mpz_struct const *)(__gen_e_acsl_div_2));
-    __gmpz_clear(__gen_e_acsl_n_5);
-    __gmpz_clear(__gen_e_acsl__12);
-    __gmpz_clear(__gen_e_acsl_sub_3);
-    __gmpz_clear(__gen_e_acsl_f2_tapp_2);
-    __gmpz_clear(__gen_e_acsl__19);
-    __gmpz_clear(__gen_e_acsl_sub_7);
-    __gmpz_clear(__gen_e_acsl_f2_tapp_6);
-    __gmpz_clear(__gen_e_acsl_mul_2);
-    __gmpz_clear(__gen_e_acsl__20);
-    __gmpz_clear(__gen_e_acsl_sub_8);
-    __gmpz_clear(__gen_e_acsl_f2_tapp_7);
-    __gmpz_clear(__gen_e_acsl__21);
-    __gmpz_clear(__gen_e_acsl_div_2);
-  }
+  __e_acsl_mpz_t __gen_e_acsl__24;
+  __gmpz_init_set_si(__gen_e_acsl__24,0L);
   __gmpz_init_set(__retres_arg,
-                  (__e_acsl_mpz_struct const *)(__gen_e_acsl_if_4));
-  __gmpz_clear(__gen_e_acsl_n_4);
-  __gmpz_clear(__gen_e_acsl__10);
-  __gmpz_clear(__gen_e_acsl_if_4);
+                  (__e_acsl_mpz_struct const *)(__gen_e_acsl__24));
+  __gmpz_clear(__gen_e_acsl__24);
   return;
 }
 
@@ -659,6 +564,101 @@ void __gen_e_acsl_f2_2(__e_acsl_mpz_struct * __retres_arg,
   return;
 }
 
+void __gen_e_acsl_f2(__e_acsl_mpz_struct * __retres_arg,
+                     int __gen_e_acsl_n_arg)
+{
+  __e_acsl_mpz_t __gen_e_acsl_n_4;
+  __e_acsl_mpz_t __gen_e_acsl__10;
+  int __gen_e_acsl_lt;
+  __e_acsl_mpz_t __gen_e_acsl_if_4;
+  __gmpz_init_set_si(__gen_e_acsl_n_4,(long)__gen_e_acsl_n_arg);
+  __gmpz_init_set_si(__gen_e_acsl__10,0L);
+  __gen_e_acsl_lt = __gmpz_cmp((__e_acsl_mpz_struct const *)(__gen_e_acsl_n_4),
+                               (__e_acsl_mpz_struct const *)(__gen_e_acsl__10));
+  if (__gen_e_acsl_lt < 0) {
+    __e_acsl_mpz_t __gen_e_acsl__11;
+    __gmpz_init_set_si(__gen_e_acsl__11,1L);
+    __gmpz_init_set(__gen_e_acsl_if_4,
+                    (__e_acsl_mpz_struct const *)(__gen_e_acsl__11));
+    __gmpz_clear(__gen_e_acsl__11);
+  }
+  else {
+    __e_acsl_mpz_t __gen_e_acsl_n_5;
+    __e_acsl_mpz_t __gen_e_acsl__12;
+    __e_acsl_mpz_t __gen_e_acsl_sub_3;
+    __e_acsl_mpz_t __gen_e_acsl_f2_tapp_2;
+    __e_acsl_mpz_t __gen_e_acsl__19;
+    __e_acsl_mpz_t __gen_e_acsl_sub_7;
+    __e_acsl_mpz_t __gen_e_acsl_f2_tapp_6;
+    __e_acsl_mpz_t __gen_e_acsl_mul_2;
+    __e_acsl_mpz_t __gen_e_acsl__20;
+    __e_acsl_mpz_t __gen_e_acsl_sub_8;
+    __e_acsl_mpz_t __gen_e_acsl_f2_tapp_7;
+    __e_acsl_mpz_t __gen_e_acsl__21;
+    int __gen_e_acsl_div_guard_2;
+    __e_acsl_mpz_t __gen_e_acsl_div_2;
+    __gmpz_init_set_si(__gen_e_acsl_n_5,(long)__gen_e_acsl_n_arg);
+    __gmpz_init_set_si(__gen_e_acsl__12,1L);
+    __gmpz_init(__gen_e_acsl_sub_3);
+    __gmpz_sub(__gen_e_acsl_sub_3,
+               (__e_acsl_mpz_struct const *)(__gen_e_acsl_n_5),
+               (__e_acsl_mpz_struct const *)(__gen_e_acsl__12));
+    __gmpz_init(__gen_e_acsl_f2_tapp_2);
+    __gen_e_acsl_f2_2((__e_acsl_mpz_struct *)__gen_e_acsl_f2_tapp_2,
+                      (__e_acsl_mpz_struct *)__gen_e_acsl_sub_3);
+    __gmpz_init_set_si(__gen_e_acsl__19,2L);
+    __gmpz_init(__gen_e_acsl_sub_7);
+    __gmpz_sub(__gen_e_acsl_sub_7,
+               (__e_acsl_mpz_struct const *)(__gen_e_acsl_n_5),
+               (__e_acsl_mpz_struct const *)(__gen_e_acsl__19));
+    __gmpz_init(__gen_e_acsl_f2_tapp_6);
+    __gen_e_acsl_f2_2((__e_acsl_mpz_struct *)__gen_e_acsl_f2_tapp_6,
+                      (__e_acsl_mpz_struct *)__gen_e_acsl_sub_7);
+    __gmpz_init(__gen_e_acsl_mul_2);
+    __gmpz_mul(__gen_e_acsl_mul_2,
+               (__e_acsl_mpz_struct const *)(__gen_e_acsl_f2_tapp_2),
+               (__e_acsl_mpz_struct const *)(__gen_e_acsl_f2_tapp_6));
+    __gmpz_init_set_si(__gen_e_acsl__20,3L);
+    __gmpz_init(__gen_e_acsl_sub_8);
+    __gmpz_sub(__gen_e_acsl_sub_8,
+               (__e_acsl_mpz_struct const *)(__gen_e_acsl_n_5),
+               (__e_acsl_mpz_struct const *)(__gen_e_acsl__20));
+    __gmpz_init(__gen_e_acsl_f2_tapp_7);
+    __gen_e_acsl_f2_2((__e_acsl_mpz_struct *)__gen_e_acsl_f2_tapp_7,
+                      (__e_acsl_mpz_struct *)__gen_e_acsl_sub_8);
+    __gmpz_init_set_si(__gen_e_acsl__21,0L);
+    __gen_e_acsl_div_guard_2 = __gmpz_cmp((__e_acsl_mpz_struct const *)(__gen_e_acsl_f2_tapp_7),
+                                          (__e_acsl_mpz_struct const *)(__gen_e_acsl__21));
+    __gmpz_init(__gen_e_acsl_div_2);
+    __e_acsl_assert(! (__gen_e_acsl_div_guard_2 == 0),(char *)"Assertion",
+                    (char *)"f2_2",(char *)"f2(n - 3) == 0",9);
+    __gmpz_tdiv_q(__gen_e_acsl_div_2,
+                  (__e_acsl_mpz_struct const *)(__gen_e_acsl_mul_2),
+                  (__e_acsl_mpz_struct const *)(__gen_e_acsl_f2_tapp_7));
+    __gmpz_init_set(__gen_e_acsl_if_4,
+                    (__e_acsl_mpz_struct const *)(__gen_e_acsl_div_2));
+    __gmpz_clear(__gen_e_acsl_n_5);
+    __gmpz_clear(__gen_e_acsl__12);
+    __gmpz_clear(__gen_e_acsl_sub_3);
+    __gmpz_clear(__gen_e_acsl_f2_tapp_2);
+    __gmpz_clear(__gen_e_acsl__19);
+    __gmpz_clear(__gen_e_acsl_sub_7);
+    __gmpz_clear(__gen_e_acsl_f2_tapp_6);
+    __gmpz_clear(__gen_e_acsl_mul_2);
+    __gmpz_clear(__gen_e_acsl__20);
+    __gmpz_clear(__gen_e_acsl_sub_8);
+    __gmpz_clear(__gen_e_acsl_f2_tapp_7);
+    __gmpz_clear(__gen_e_acsl__21);
+    __gmpz_clear(__gen_e_acsl_div_2);
+  }
+  __gmpz_init_set(__retres_arg,
+                  (__e_acsl_mpz_struct const *)(__gen_e_acsl_if_4));
+  __gmpz_clear(__gen_e_acsl_n_4);
+  __gmpz_clear(__gen_e_acsl__10);
+  __gmpz_clear(__gen_e_acsl_if_4);
+  return;
+}
+
 void __gen_e_acsl_f1_2(__e_acsl_mpz_struct * __retres_arg,
                        __e_acsl_mpz_struct * __gen_e_acsl_n_arg)
 {
-- 
GitLab