diff --git a/src/plugins/e-acsl/Makefile.in b/src/plugins/e-acsl/Makefile.in
index cf4b2d96fba050665137daf326ba0d53d77073d2..b2befe524f232d45cb7fed6b7e9e57a17be2337c 100644
--- a/src/plugins/e-acsl/Makefile.in
+++ b/src/plugins/e-acsl/Makefile.in
@@ -176,10 +176,8 @@ PLUGIN_TESTS_DIRS := \
 	full-mtracking \
 	format \
 	temporal \
-	special
-# [JS 2019/02/26] deactivate tests 'builtin' as long as setjmp/longjmp is not
-# supported.
-#	builtin
+	special \
+	builtin
 
 PLUGIN_TESTS_LIB := $(EACSL_PLUGIN_DIR)/tests/print.ml
 
diff --git a/src/plugins/e-acsl/src/code_generator/contract.ml b/src/plugins/e-acsl/src/code_generator/contract.ml
index 38afc6288840e7c39a71d9eabf7fd8a7e2795f5c..cb4a3c212685dc4e8f20091ea5880480c8a4f4f8 100644
--- a/src/plugins/e-acsl/src/code_generator/contract.ml
+++ b/src/plugins/e-acsl/src/code_generator/contract.ml
@@ -595,7 +595,7 @@ let check_complete_and_disjoint kf kinstr env contract =
     Cil.CurrentLoc.set contract.location;
     Options.warning
       ~current:true
-      "@[Some assumes clauses couldn't be translated.@ Ignoring complete and \
+      "@[Some assumes clauses could not be translated.@ Ignoring complete and \
        disjoint behaviors annotations.@]";
     env
   end
diff --git a/src/plugins/e-acsl/tests/bts/oracle_ci/bts2252.res.oracle b/src/plugins/e-acsl/tests/bts/oracle_ci/bts2252.res.oracle
index e4a25f71358d728b76754a5a5f6e7a839b9fd553..75fbf8d3a073d69762ab1e527bc29beaf9abf4c7 100644
--- a/src/plugins/e-acsl/tests/bts/oracle_ci/bts2252.res.oracle
+++ b/src/plugins/e-acsl/tests/bts/oracle_ci/bts2252.res.oracle
@@ -14,7 +14,7 @@
   E-ACSL construct `logic functions with labels' is not yet supported.
   Ignoring annotation.
 [e-acsl] FRAMAC_SHARE/libc/string.h:365: Warning: 
-  Some assumes clauses couldn't be translated.
+  Some assumes clauses could not be translated.
   Ignoring complete and disjoint behaviors annotations.
 [e-acsl] FRAMAC_SHARE/libc/string.h:365: Warning: 
   E-ACSL construct `assigns clause in behavior' is not yet supported.
diff --git a/src/plugins/e-acsl/tests/builtin/oracle_ci/gen_strcat.c b/src/plugins/e-acsl/tests/builtin/oracle_ci/gen_strcat.c
index 26c57de7b341828a1aa8202d4ebde22536cd7572..ae145b13224ff965dc48e8a56ce5258fbbce5896 100644
--- a/src/plugins/e-acsl/tests/builtin/oracle_ci/gen_strcat.c
+++ b/src/plugins/e-acsl/tests/builtin/oracle_ci/gen_strcat.c
@@ -1,9 +1,18 @@
 /* Generated by Frama-C */
-#include "setjmp.h"
 #include "signal.h"
+#include "stddef.h"
 #include "stdio.h"
 #include "stdlib.h"
 #include "string.h"
+#include "sys/select.h"
+#include "sys/time.h"
+#include "sys/types.h"
+#include "sys/wait.h"
+#include "unistd.h"
+char *__gen_e_acsl_literal_string_29;
+char *__gen_e_acsl_literal_string_28;
+char *__gen_e_acsl_literal_string_27;
+char *__gen_e_acsl_literal_string_26;
 char *__gen_e_acsl_literal_string_25;
 char *__gen_e_acsl_literal_string_24;
 char *__gen_e_acsl_literal_string_23;
@@ -22,161 +31,463 @@ char *__gen_e_acsl_literal_string_11;
 char *__gen_e_acsl_literal_string_10;
 char *__gen_e_acsl_literal_string_9;
 char *__gen_e_acsl_literal_string_8;
-char *__gen_e_acsl_literal_string_7;
 char *__gen_e_acsl_literal_string_6;
-char *__gen_e_acsl_literal_string_5;
-char *__gen_e_acsl_literal_string_3;
 char *__gen_e_acsl_literal_string;
-char *__gen_e_acsl_literal_string_4;
 char *__gen_e_acsl_literal_string_2;
+char *__gen_e_acsl_literal_string_3;
+char *__gen_e_acsl_literal_string_5;
+char *__gen_e_acsl_literal_string_4;
+char *__gen_e_acsl_literal_string_7;
 extern int __e_acsl_sound_verdict;
 
+/*@ exits status: \exit_status ≡ \old(status);
+    ensures never_terminates: \false;
+    
+    assigns \exit_status \from status;
+ */
+void __gen_e_acsl_exit(int status);
+
+/*@ ensures result_ok_or_error: \result ≡ -1 ∨ \result ≥ 0;
+    ensures
+      initialization: stat_loc_init_on_success:
+        \result ≥ 0 ∧ \old(stat_loc) ≢ \null ⇒
+        \initialized(\old(stat_loc));
+    assigns \result, *stat_loc;
+    assigns \result \from (indirect: options);
+    assigns *stat_loc \from (indirect: options);
+    
+    behavior stat_loc_null:
+      assumes stat_loc_null: stat_loc ≡ \null;
+      assigns \result;
+      assigns \result \from \nothing;
+    
+    behavior stat_loc_non_null:
+      assumes stat_loc_non_null: stat_loc ≢ \null;
+      requires valid_stat_loc: \valid(stat_loc);
+ */
+pid_t __gen_e_acsl_waitpid(pid_t pid, int *stat_loc, int options);
+
+/*@ ensures
+      result_ok_child_or_error:
+        \result ≡ 0 ∨ \result > 0 ∨ \result ≡ -1;
+    assigns \result;
+    assigns \result \from \nothing;
+ */
+pid_t __gen_e_acsl_fork(void);
+
+/*@ requires valid_string_src: valid_read_string(src);
+    requires valid_string_dest: valid_string(dest);
+    requires room_string: \valid(dest + (0 .. strlen(dest) + strlen(src)));
+    ensures
+      sum_of_lengths: strlen(\old(dest)) ≡ \old(strlen(dest) + strlen(src));
+    ensures
+      initialization: dest:
+        \initialized(\old(dest) + (0 .. \old(strlen(dest) + strlen(src))));
+    ensures
+      dest_null_terminated:
+        *(\old(dest) + \old(strlen(dest) + strlen(src))) ≡ 0;
+    ensures result_ptr: \result ≡ \old(dest);
+    assigns *(dest +
+              (strlen{Old}(dest) .. strlen{Old}(dest) + strlen{Old}(src))),
+            \result;
+    assigns
+    *(dest + (strlen{Old}(dest) .. strlen{Old}(dest) + strlen{Old}(src)))
+      \from *(src + (0 .. strlen{Old}(src)));
+    assigns \result \from dest;
+ */
+char *__gen_e_acsl_strcat(char * restrict dest, char const * restrict src);
+
+/*@ requires valid_nstring_src: valid_read_nstring(src, n);
+    requires valid_string_dest: valid_string(dest);
+    ensures result_ptr: \result ≡ \old(dest);
+    assigns *(dest + (strlen{Old}(dest) .. strlen{Old}(dest) + n)), \result;
+    assigns *(dest + (strlen{Old}(dest) .. strlen{Old}(dest) + n))
+      \from *(src + (0 .. n));
+    assigns \result \from dest;
+    
+    behavior complete:
+      assumes
+        valid_string_src_fits: valid_read_string(src) ∧ strlen(src) ≤ n;
+      requires
+        room_string: \valid((dest + strlen(dest)) + (0 .. strlen(src)));
+      ensures
+        sum_of_lengths:
+          strlen(\old(dest)) ≡ \old(strlen(dest) + strlen(src));
+      assigns *(dest +
+                (strlen{Old}(dest) .. strlen{Old}(dest) + strlen{Old}(src))),
+              \result;
+      assigns
+      *(dest + (strlen{Old}(dest) .. strlen{Old}(dest) + strlen{Old}(src)))
+        \from *(src + (0 .. strlen{Old}(src)));
+      assigns \result \from dest;
+    
+    behavior partial:
+      assumes
+        valid_string_src_too_large:
+          ¬(valid_read_string(src) ∧ strlen(src) ≤ n);
+      requires room_string: \valid((dest + strlen(dest)) + (0 .. n));
+      ensures
+        sum_of_bounded_lengths:
+          strlen(\old(dest)) ≡ \old(strlen(dest)) + \old(n);
+      assigns *(dest + (strlen{Old}(dest) .. strlen{Old}(dest) + n)),
+              \result;
+      assigns *(dest + (strlen{Old}(dest) .. strlen{Old}(dest) + n))
+        \from *(src + (0 .. strlen{Old}(src)));
+      assigns \result \from dest;
+ */
+char *__gen_e_acsl_strncat(char * restrict dest, char const * restrict src,
+                           size_t n);
+
+/*@ requires valid_nstring_src: valid_read_nstring(src, n);
+    requires valid_string_dest: valid_string(dest);
+    ensures result_ptr: \result ≡ \old(dest);
+    assigns *(dest + (strlen{Old}(dest) .. strlen{Old}(dest) + n)), \result;
+    assigns *(dest + (strlen{Old}(dest) .. strlen{Old}(dest) + n))
+      \from *(src + (0 .. n));
+    assigns \result \from dest;
+    
+    behavior complete:
+      assumes
+        valid_string_src_fits: valid_read_string(src) ∧ strlen(src) ≤ n;
+      requires
+        room_string: \valid((dest + strlen(dest)) + (0 .. strlen(src)));
+      ensures
+        sum_of_lengths:
+          strlen(\old(dest)) ≡ \old(strlen(dest) + strlen(src));
+      assigns *(dest +
+                (strlen{Old}(dest) .. strlen{Old}(dest) + strlen{Old}(src))),
+              \result;
+      assigns
+      *(dest + (strlen{Old}(dest) .. strlen{Old}(dest) + strlen{Old}(src)))
+        \from *(src + (0 .. strlen{Old}(src)));
+      assigns \result \from dest;
+    
+    behavior partial:
+      assumes
+        valid_string_src_too_large:
+          ¬(valid_read_string(src) ∧ strlen(src) ≤ n);
+      requires room_string: \valid((dest + strlen(dest)) + (0 .. n));
+      ensures
+        sum_of_bounded_lengths:
+          strlen(\old(dest)) ≡ \old(strlen(dest)) + \old(n);
+      assigns *(dest + (strlen{Old}(dest) .. strlen{Old}(dest) + n)),
+              \result;
+      assigns *(dest + (strlen{Old}(dest) .. strlen{Old}(dest) + n))
+        \from *(src + (0 .. strlen{Old}(src)));
+      assigns \result \from dest;
+ */
+char *__gen_e_acsl_strncat(char * restrict dest, char const * restrict src,
+                           size_t n)
+{
+  char *__gen_e_acsl_at;
+  __e_acsl_contract_t *__gen_e_acsl_contract;
+  char *__retres;
+  __e_acsl_store_block((void *)(& dest),(size_t)8);
+  __gen_e_acsl_contract = __e_acsl_contract_init((size_t)2);
+  __gen_e_acsl_at = dest;
+  __retres = __e_acsl_builtin_strncat(dest,src,n);
+  __e_acsl_assert(__retres == __gen_e_acsl_at,1,"Postcondition","strncat",
+                  "result_ptr: \\result == \\old(dest)",
+                  "FRAMAC_SHARE/libc/string.h",430);
+  __e_acsl_contract_clean(__gen_e_acsl_contract);
+  __e_acsl_delete_block((void *)(& dest));
+  return __retres;
+}
+
+/*@ requires valid_string_src: valid_read_string(src);
+    requires valid_string_dest: valid_string(dest);
+    requires room_string: \valid(dest + (0 .. strlen(dest) + strlen(src)));
+    ensures
+      sum_of_lengths: strlen(\old(dest)) ≡ \old(strlen(dest) + strlen(src));
+    ensures
+      initialization: dest:
+        \initialized(\old(dest) + (0 .. \old(strlen(dest) + strlen(src))));
+    ensures
+      dest_null_terminated:
+        *(\old(dest) + \old(strlen(dest) + strlen(src))) ≡ 0;
+    ensures result_ptr: \result ≡ \old(dest);
+    assigns *(dest +
+              (strlen{Old}(dest) .. strlen{Old}(dest) + strlen{Old}(src))),
+            \result;
+    assigns
+    *(dest + (strlen{Old}(dest) .. strlen{Old}(dest) + strlen{Old}(src)))
+      \from *(src + (0 .. strlen{Old}(src)));
+    assigns \result \from dest;
+ */
+char *__gen_e_acsl_strcat(char * restrict dest, char const * restrict src)
+{
+  char *__gen_e_acsl_at;
+  char *__retres;
+  __e_acsl_store_block((void *)(& dest),(size_t)8);
+  __gen_e_acsl_at = dest;
+  __retres = __e_acsl_builtin_strcat(dest,src);
+  __e_acsl_assert(__retres == __gen_e_acsl_at,1,"Postcondition","strcat",
+                  "result_ptr: \\result == \\old(dest)",
+                  "FRAMAC_SHARE/libc/string.h",421);
+  __e_acsl_delete_block((void *)(& dest));
+  return __retres;
+}
+
+/*@ ensures
+      result_ok_child_or_error:
+        \result ≡ 0 ∨ \result > 0 ∨ \result ≡ -1;
+    assigns \result;
+    assigns \result \from \nothing;
+ */
+pid_t __gen_e_acsl_fork(void)
+{
+  pid_t __retres;
+  __retres = fork();
+  {
+    int __gen_e_acsl_or;
+    int __gen_e_acsl_or_2;
+    if (__retres == 0) __gen_e_acsl_or = 1;
+    else __gen_e_acsl_or = __retres > 0;
+    if (__gen_e_acsl_or) __gen_e_acsl_or_2 = 1;
+    else __gen_e_acsl_or_2 = __retres == -1;
+    __e_acsl_assert(__gen_e_acsl_or_2,1,"Postcondition","fork",
+                    "result_ok_child_or_error: \\result == 0 || \\result > 0 || \\result == -1",
+                    "FRAMAC_SHARE/libc/unistd.h",859);
+    return __retres;
+  }
+}
+
+/*@ ensures result_ok_or_error: \result ≡ -1 ∨ \result ≥ 0;
+    ensures
+      initialization: stat_loc_init_on_success:
+        \result ≥ 0 ∧ \old(stat_loc) ≢ \null ⇒
+        \initialized(\old(stat_loc));
+    assigns \result, *stat_loc;
+    assigns \result \from (indirect: options);
+    assigns *stat_loc \from (indirect: options);
+    
+    behavior stat_loc_null:
+      assumes stat_loc_null: stat_loc ≡ \null;
+      assigns \result;
+      assigns \result \from \nothing;
+    
+    behavior stat_loc_non_null:
+      assumes stat_loc_non_null: stat_loc ≢ \null;
+      requires valid_stat_loc: \valid(stat_loc);
+ */
+pid_t __gen_e_acsl_waitpid(pid_t pid, int *stat_loc, int options)
+{
+  int *__gen_e_acsl_at_2;
+  int *__gen_e_acsl_at;
+  __e_acsl_contract_t *__gen_e_acsl_contract;
+  pid_t __retres;
+  {
+    int __gen_e_acsl_assumes_value;
+    __e_acsl_store_block((void *)(& stat_loc),(size_t)8);
+    __gen_e_acsl_contract = __e_acsl_contract_init((size_t)2);
+    __e_acsl_contract_set_behavior_assumes(__gen_e_acsl_contract,(size_t)0,
+                                           stat_loc == (int *)0);
+    __e_acsl_contract_set_behavior_assumes(__gen_e_acsl_contract,(size_t)1,
+                                           stat_loc != (int *)0);
+    __gen_e_acsl_assumes_value = __e_acsl_contract_get_behavior_assumes
+    ((__e_acsl_contract_t const *)__gen_e_acsl_contract,(size_t)1);
+    if (__gen_e_acsl_assumes_value) {
+      int __gen_e_acsl_valid;
+      __gen_e_acsl_valid = __e_acsl_valid((void *)stat_loc,sizeof(int),
+                                          (void *)stat_loc,
+                                          (void *)(& stat_loc));
+      __e_acsl_assert(__gen_e_acsl_valid,1,"Precondition","waitpid",
+                      "stat_loc_non_null: valid_stat_loc: \\valid(stat_loc)",
+                      "FRAMAC_SHARE/libc/sys/wait.h",92);
+    }
+  }
+  __gen_e_acsl_at_2 = stat_loc;
+  __gen_e_acsl_at = stat_loc;
+  __retres = waitpid(pid,stat_loc,options);
+  {
+    int __gen_e_acsl_or;
+    int __gen_e_acsl_and;
+    int __gen_e_acsl_implies;
+    if (__retres == -1) __gen_e_acsl_or = 1;
+    else __gen_e_acsl_or = __retres >= 0;
+    __e_acsl_assert(__gen_e_acsl_or,1,"Postcondition","waitpid",
+                    "result_ok_or_error: \\result == -1 || \\result >= 0",
+                    "FRAMAC_SHARE/libc/sys/wait.h",84);
+    if (__retres >= 0) __gen_e_acsl_and = __gen_e_acsl_at != (int *)0;
+    else __gen_e_acsl_and = 0;
+    if (! __gen_e_acsl_and) __gen_e_acsl_implies = 1;
+    else {
+      int __gen_e_acsl_initialized;
+      __gen_e_acsl_initialized = __e_acsl_initialized((void *)__gen_e_acsl_at_2,
+                                                      sizeof(int));
+      __gen_e_acsl_implies = __gen_e_acsl_initialized;
+    }
+    __e_acsl_assert(__gen_e_acsl_implies,1,"Postcondition","waitpid",
+                    "initialization: stat_loc_init_on_success:\n  \\result >= 0 && \\old(stat_loc) != \\null ==> \\initialized(\\old(stat_loc))",
+                    "FRAMAC_SHARE/libc/sys/wait.h",86);
+    __e_acsl_contract_clean(__gen_e_acsl_contract);
+    __e_acsl_delete_block((void *)(& stat_loc));
+    return __retres;
+  }
+}
+
+/*@ exits status: \exit_status ≡ \old(status);
+    ensures never_terminates: \false;
+    
+    assigns \exit_status \from status;
+ */
+void __gen_e_acsl_exit(int status)
+{
+  exit(status);
+  __e_acsl_assert(0,1,"Postcondition","exit","never_terminates: \\false",
+                  "FRAMAC_SHARE/libc/stdlib.h",473);
+  return;
+}
+
 void __e_acsl_globals_init(void)
 {
   static char __e_acsl_already_run = 0;
   if (! __e_acsl_already_run) {
     __e_acsl_already_run = 1;
-    __gen_e_acsl_literal_string_25 = "tests/builtin/strcat.c:61";
-    __e_acsl_store_block((void *)__gen_e_acsl_literal_string_25,
+    __gen_e_acsl_literal_string_29 = "tests/builtin/strcat.c:61";
+    __e_acsl_store_block((void *)__gen_e_acsl_literal_string_29,
                          sizeof("tests/builtin/strcat.c:61"));
+    __e_acsl_full_init((void *)__gen_e_acsl_literal_string_29);
+    __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_29);
+    __gen_e_acsl_literal_string_28 = "tests/builtin/strcat.c:60";
+    __e_acsl_store_block((void *)__gen_e_acsl_literal_string_28,
+                         sizeof("tests/builtin/strcat.c:60"));
+    __e_acsl_full_init((void *)__gen_e_acsl_literal_string_28);
+    __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_28);
+    __gen_e_acsl_literal_string_27 = "tests/builtin/strcat.c:59";
+    __e_acsl_store_block((void *)__gen_e_acsl_literal_string_27,
+                         sizeof("tests/builtin/strcat.c:59"));
+    __e_acsl_full_init((void *)__gen_e_acsl_literal_string_27);
+    __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_27);
+    __gen_e_acsl_literal_string_26 = "tests/builtin/strcat.c:57";
+    __e_acsl_store_block((void *)__gen_e_acsl_literal_string_26,
+                         sizeof("tests/builtin/strcat.c:57"));
+    __e_acsl_full_init((void *)__gen_e_acsl_literal_string_26);
+    __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_26);
+    __gen_e_acsl_literal_string_25 = "tests/builtin/strcat.c:56";
+    __e_acsl_store_block((void *)__gen_e_acsl_literal_string_25,
+                         sizeof("tests/builtin/strcat.c:56"));
     __e_acsl_full_init((void *)__gen_e_acsl_literal_string_25);
     __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_25);
-    __gen_e_acsl_literal_string_24 = "tests/builtin/strcat.c:60";
+    __gen_e_acsl_literal_string_24 = "tests/builtin/strcat.c:55";
     __e_acsl_store_block((void *)__gen_e_acsl_literal_string_24,
-                         sizeof("tests/builtin/strcat.c:60"));
+                         sizeof("tests/builtin/strcat.c:55"));
     __e_acsl_full_init((void *)__gen_e_acsl_literal_string_24);
     __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_24);
-    __gen_e_acsl_literal_string_23 = "tests/builtin/strcat.c:59";
+    __gen_e_acsl_literal_string_23 = "tests/builtin/strcat.c:54";
     __e_acsl_store_block((void *)__gen_e_acsl_literal_string_23,
-                         sizeof("tests/builtin/strcat.c:59"));
+                         sizeof("tests/builtin/strcat.c:54"));
     __e_acsl_full_init((void *)__gen_e_acsl_literal_string_23);
     __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_23);
-    __gen_e_acsl_literal_string_22 = "tests/builtin/strcat.c:57";
+    __gen_e_acsl_literal_string_22 = "tests/builtin/strcat.c:53";
     __e_acsl_store_block((void *)__gen_e_acsl_literal_string_22,
-                         sizeof("tests/builtin/strcat.c:57"));
+                         sizeof("tests/builtin/strcat.c:53"));
     __e_acsl_full_init((void *)__gen_e_acsl_literal_string_22);
     __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_22);
-    __gen_e_acsl_literal_string_21 = "tests/builtin/strcat.c:56";
+    __gen_e_acsl_literal_string_21 = "tests/builtin/strcat.c:52";
     __e_acsl_store_block((void *)__gen_e_acsl_literal_string_21,
-                         sizeof("tests/builtin/strcat.c:56"));
+                         sizeof("tests/builtin/strcat.c:52"));
     __e_acsl_full_init((void *)__gen_e_acsl_literal_string_21);
     __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_21);
-    __gen_e_acsl_literal_string_20 = "tests/builtin/strcat.c:55";
+    __gen_e_acsl_literal_string_20 = "tests/builtin/strcat.c:51";
     __e_acsl_store_block((void *)__gen_e_acsl_literal_string_20,
-                         sizeof("tests/builtin/strcat.c:55"));
+                         sizeof("tests/builtin/strcat.c:51"));
     __e_acsl_full_init((void *)__gen_e_acsl_literal_string_20);
     __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_20);
-    __gen_e_acsl_literal_string_19 = "tests/builtin/strcat.c:54";
+    __gen_e_acsl_literal_string_19 = "tests/builtin/strcat.c:38";
     __e_acsl_store_block((void *)__gen_e_acsl_literal_string_19,
-                         sizeof("tests/builtin/strcat.c:54"));
+                         sizeof("tests/builtin/strcat.c:38"));
     __e_acsl_full_init((void *)__gen_e_acsl_literal_string_19);
     __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_19);
-    __gen_e_acsl_literal_string_18 = "tests/builtin/strcat.c:53";
+    __gen_e_acsl_literal_string_18 = "tests/builtin/strcat.c:37";
     __e_acsl_store_block((void *)__gen_e_acsl_literal_string_18,
-                         sizeof("tests/builtin/strcat.c:53"));
+                         sizeof("tests/builtin/strcat.c:37"));
     __e_acsl_full_init((void *)__gen_e_acsl_literal_string_18);
     __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_18);
-    __gen_e_acsl_literal_string_17 = "tests/builtin/strcat.c:52";
+    __gen_e_acsl_literal_string_17 = "tests/builtin/strcat.c:36";
     __e_acsl_store_block((void *)__gen_e_acsl_literal_string_17,
-                         sizeof("tests/builtin/strcat.c:52"));
+                         sizeof("tests/builtin/strcat.c:36"));
     __e_acsl_full_init((void *)__gen_e_acsl_literal_string_17);
     __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_17);
-    __gen_e_acsl_literal_string_16 = "tests/builtin/strcat.c:51";
+    __gen_e_acsl_literal_string_16 = "tests/builtin/strcat.c:35";
     __e_acsl_store_block((void *)__gen_e_acsl_literal_string_16,
-                         sizeof("tests/builtin/strcat.c:51"));
+                         sizeof("tests/builtin/strcat.c:35"));
     __e_acsl_full_init((void *)__gen_e_acsl_literal_string_16);
     __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_16);
-    __gen_e_acsl_literal_string_15 = "tests/builtin/strcat.c:38";
+    __gen_e_acsl_literal_string_15 = "tests/builtin/strcat.c:34";
     __e_acsl_store_block((void *)__gen_e_acsl_literal_string_15,
-                         sizeof("tests/builtin/strcat.c:38"));
+                         sizeof("tests/builtin/strcat.c:34"));
     __e_acsl_full_init((void *)__gen_e_acsl_literal_string_15);
     __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_15);
-    __gen_e_acsl_literal_string_14 = "tests/builtin/strcat.c:37";
+    __gen_e_acsl_literal_string_14 = "tests/builtin/strcat.c:33";
     __e_acsl_store_block((void *)__gen_e_acsl_literal_string_14,
-                         sizeof("tests/builtin/strcat.c:37"));
+                         sizeof("tests/builtin/strcat.c:33"));
     __e_acsl_full_init((void *)__gen_e_acsl_literal_string_14);
     __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_14);
-    __gen_e_acsl_literal_string_13 = "tests/builtin/strcat.c:36";
+    __gen_e_acsl_literal_string_13 = "tests/builtin/strcat.c:32";
     __e_acsl_store_block((void *)__gen_e_acsl_literal_string_13,
-                         sizeof("tests/builtin/strcat.c:36"));
+                         sizeof("tests/builtin/strcat.c:32"));
     __e_acsl_full_init((void *)__gen_e_acsl_literal_string_13);
     __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_13);
-    __gen_e_acsl_literal_string_12 = "tests/builtin/strcat.c:35";
+    __gen_e_acsl_literal_string_12 = "tests/builtin/strcat.c:31";
     __e_acsl_store_block((void *)__gen_e_acsl_literal_string_12,
-                         sizeof("tests/builtin/strcat.c:35"));
+                         sizeof("tests/builtin/strcat.c:31"));
     __e_acsl_full_init((void *)__gen_e_acsl_literal_string_12);
     __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_12);
-    __gen_e_acsl_literal_string_11 = "tests/builtin/strcat.c:34";
+    __gen_e_acsl_literal_string_11 = "tests/builtin/strcat.c:30";
     __e_acsl_store_block((void *)__gen_e_acsl_literal_string_11,
-                         sizeof("tests/builtin/strcat.c:34"));
+                         sizeof("tests/builtin/strcat.c:30"));
     __e_acsl_full_init((void *)__gen_e_acsl_literal_string_11);
     __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_11);
-    __gen_e_acsl_literal_string_10 = "tests/builtin/strcat.c:33";
+    __gen_e_acsl_literal_string_10 = "tests/builtin/strcat.c:29";
     __e_acsl_store_block((void *)__gen_e_acsl_literal_string_10,
-                         sizeof("tests/builtin/strcat.c:33"));
+                         sizeof("tests/builtin/strcat.c:29"));
     __e_acsl_full_init((void *)__gen_e_acsl_literal_string_10);
     __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_10);
-    __gen_e_acsl_literal_string_9 = "tests/builtin/strcat.c:32";
+    __gen_e_acsl_literal_string_9 = "tests/builtin/strcat.c:28";
     __e_acsl_store_block((void *)__gen_e_acsl_literal_string_9,
-                         sizeof("tests/builtin/strcat.c:32"));
+                         sizeof("tests/builtin/strcat.c:28"));
     __e_acsl_full_init((void *)__gen_e_acsl_literal_string_9);
     __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_9);
-    __gen_e_acsl_literal_string_8 = "tests/builtin/strcat.c:31";
+    __gen_e_acsl_literal_string_8 = "tests/builtin/strcat.c:27";
     __e_acsl_store_block((void *)__gen_e_acsl_literal_string_8,
-                         sizeof("tests/builtin/strcat.c:31"));
+                         sizeof("tests/builtin/strcat.c:27"));
     __e_acsl_full_init((void *)__gen_e_acsl_literal_string_8);
     __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_8);
-    __gen_e_acsl_literal_string_7 = "tests/builtin/strcat.c:30";
-    __e_acsl_store_block((void *)__gen_e_acsl_literal_string_7,
-                         sizeof("tests/builtin/strcat.c:30"));
-    __e_acsl_full_init((void *)__gen_e_acsl_literal_string_7);
-    __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_7);
-    __gen_e_acsl_literal_string_6 = "tests/builtin/strcat.c:29";
+    __gen_e_acsl_literal_string_6 = "abcd";
     __e_acsl_store_block((void *)__gen_e_acsl_literal_string_6,
-                         sizeof("tests/builtin/strcat.c:29"));
+                         sizeof("abcd"));
     __e_acsl_full_init((void *)__gen_e_acsl_literal_string_6);
     __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_6);
-    __gen_e_acsl_literal_string_5 = "tests/builtin/strcat.c:28";
-    __e_acsl_store_block((void *)__gen_e_acsl_literal_string_5,
-                         sizeof("tests/builtin/strcat.c:28"));
-    __e_acsl_full_init((void *)__gen_e_acsl_literal_string_5);
-    __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_5);
-    __gen_e_acsl_literal_string_3 = "tests/builtin/strcat.c:27";
+    __gen_e_acsl_literal_string = "TEST %d: ";
+    __e_acsl_store_block((void *)__gen_e_acsl_literal_string,
+                         sizeof("TEST %d: "));
+    __e_acsl_full_init((void *)__gen_e_acsl_literal_string);
+    __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string);
+    __gen_e_acsl_literal_string_2 = "OK: Expected signal at %s\n";
+    __e_acsl_store_block((void *)__gen_e_acsl_literal_string_2,
+                         sizeof("OK: Expected signal at %s\n"));
+    __e_acsl_full_init((void *)__gen_e_acsl_literal_string_2);
+    __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_2);
+    __gen_e_acsl_literal_string_3 = "OK: Expected execution at %s\n";
     __e_acsl_store_block((void *)__gen_e_acsl_literal_string_3,
-                         sizeof("tests/builtin/strcat.c:27"));
+                         sizeof("OK: Expected execution at %s\n"));
     __e_acsl_full_init((void *)__gen_e_acsl_literal_string_3);
     __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_3);
-    __gen_e_acsl_literal_string = "abcd";
-    __e_acsl_store_block((void *)__gen_e_acsl_literal_string,sizeof("abcd"));
-    __e_acsl_full_init((void *)__gen_e_acsl_literal_string);
-    __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string);
-    __gen_e_acsl_literal_string_4 = "FAIL: Unexpected value return from test at %s\n";
+    __gen_e_acsl_literal_string_5 = "FAIL: Unexpected signal at %s\n";
+    __e_acsl_store_block((void *)__gen_e_acsl_literal_string_5,
+                         sizeof("FAIL: Unexpected signal at %s\n"));
+    __e_acsl_full_init((void *)__gen_e_acsl_literal_string_5);
+    __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_5);
+    __gen_e_acsl_literal_string_4 = "FAIL: Unexpected execution at %s\n";
     __e_acsl_store_block((void *)__gen_e_acsl_literal_string_4,
-                         sizeof("FAIL: Unexpected value return from test at %s\n"));
+                         sizeof("FAIL: Unexpected execution at %s\n"));
     __e_acsl_full_init((void *)__gen_e_acsl_literal_string_4);
     __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_4);
-    __gen_e_acsl_literal_string_2 = "";
-    __e_acsl_store_block((void *)__gen_e_acsl_literal_string_2,sizeof(""));
-    __e_acsl_full_init((void *)__gen_e_acsl_literal_string_2);
-    __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_2);
-    __e_acsl_store_block((void *)(& __gen_e_acsl_strncat),(size_t)1);
-    __e_acsl_full_init((void *)(& __gen_e_acsl_strncat));
-    __e_acsl_store_block((void *)(& __gen_e_acsl_strcat),(size_t)1);
-    __e_acsl_full_init((void *)(& __gen_e_acsl_strcat));
-    __e_acsl_store_block((void *)(& __gen_e_acsl_exit),(size_t)1);
-    __e_acsl_full_init((void *)(& __gen_e_acsl_exit));
-    __e_acsl_store_block((void *)(& __fc_p_strerror),(size_t)8);
-    __e_acsl_full_init((void *)(& __fc_p_strerror));
-    __e_acsl_store_block((void *)(strerror),(size_t)64);
-    __e_acsl_full_init((void *)(& strerror));
-    __e_acsl_store_block((void *)(& __fc_strtok_ptr),(size_t)8);
-    __e_acsl_full_init((void *)(& __fc_strtok_ptr));
-    __e_acsl_store_block((void *)(& __fc_p_fopen),(size_t)8);
-    __e_acsl_full_init((void *)(& __fc_p_fopen));
-    __e_acsl_store_block((void *)(__fc_fopen),(size_t)128);
-    __e_acsl_full_init((void *)(& __fc_fopen));
-    __e_acsl_store_block((void *)(& __fc_rand_max),(size_t)8);
-    __e_acsl_full_init((void *)(& __fc_rand_max));
+    __gen_e_acsl_literal_string_7 = "";
+    __e_acsl_store_block((void *)__gen_e_acsl_literal_string_7,sizeof(""));
+    __e_acsl_full_init((void *)__gen_e_acsl_literal_string_7);
+    __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_7);
   }
   return;
 }
@@ -186,19 +497,14 @@ int main(int argc, char const **argv)
   int __retres;
   __e_acsl_memory_init(& argc,(char ***)(& argv),(size_t)8);
   __e_acsl_globals_init();
-  __e_acsl_store_block((void *)(& __retres),(size_t)4);
-  char *const_str = (char *)__gen_e_acsl_literal_string;
+  char *const_str = (char *)__gen_e_acsl_literal_string_6;
   __e_acsl_store_block((void *)(& const_str),(size_t)8);
   __e_acsl_full_init((void *)(& const_str));
   char *unalloc_str = malloc((unsigned long)5);
   __e_acsl_store_block((void *)(& unalloc_str),(size_t)8);
   __e_acsl_full_init((void *)(& unalloc_str));
   char *_barrier = malloc((unsigned long)1);
-  __e_acsl_store_block((void *)(& _barrier),(size_t)8);
-  __e_acsl_full_init((void *)(& _barrier));
-  char *empty_str = (char *)__gen_e_acsl_literal_string_2;
-  __e_acsl_store_block((void *)(& empty_str),(size_t)8);
-  __e_acsl_full_init((void *)(& empty_str));
+  char *empty_str = (char *)__gen_e_acsl_literal_string_7;
   free((void *)unalloc_str);
   {
     char dest1[9] =
@@ -230,409 +536,174 @@ int main(int argc, char const **argv)
     __e_acsl_store_block((void *)(& pd4),(size_t)8);
     __e_acsl_full_init((void *)(& pd4));
     {
-      int tmp_2;
-      __e_acsl_store_block((void *)(& tmp_2),(size_t)4);
-      sigjmp_buf *jmp_ctxt = get_jmp_ctxt();
-      __e_acsl_store_block((void *)(& jmp_ctxt),(size_t)8);
-      __e_acsl_full_init((void *)(& jmp_ctxt));
-      __e_acsl_full_init((void *)(& tmp_2));
-      /*@ assert Eva: mem_access: \valid_read(jmp_ctxt); */
-      tmp_2 = sigsetjmp(*jmp_ctxt,1);
-      switch (tmp_2) {
-        case 0:
-        {
-          set_handler();
-          __gen_e_acsl_strcat(dest1,(char const *)const_str);
-          test_successful();
-          break;
-        }
-        case 1: {
-                  signal_eval(0,0,__gen_e_acsl_literal_string_3);
-                  break;
-                }
-        case 2: {
-                  signal_eval(1,0,__gen_e_acsl_literal_string_3);
-                  break;
-                }
-        default:
-        {
-          printf(__gen_e_acsl_literal_string_4,__gen_e_acsl_literal_string_3);
-          __gen_e_acsl_exit(3);
-        }
+      pid_t pid = __gen_e_acsl_fork();
+      if (! pid) {
+        __gen_e_acsl_strcat(dest1,(char const *)const_str);
+        __gen_e_acsl_exit(0);
+      }
+      else {
+        int process_status;
+        __e_acsl_store_block((void *)(& process_status),(size_t)4);
+        __gen_e_acsl_waitpid(pid,& process_status,0);
+        signal_eval(process_status,0,__gen_e_acsl_literal_string_8);
+        __e_acsl_delete_block((void *)(& process_status));
       }
-      __e_acsl_delete_block((void *)(& tmp_2));
-      __e_acsl_delete_block((void *)(& jmp_ctxt));
     }
     {
-      int tmp_4;
-      __e_acsl_store_block((void *)(& tmp_4),(size_t)4);
-      sigjmp_buf *jmp_ctxt_0 = get_jmp_ctxt();
-      __e_acsl_store_block((void *)(& jmp_ctxt_0),(size_t)8);
-      __e_acsl_full_init((void *)(& jmp_ctxt_0));
-      __e_acsl_full_init((void *)(& tmp_4));
-      tmp_4 = sigsetjmp(*jmp_ctxt_0,1);
-      switch (tmp_4) {
-        case 0:
-        {
-          set_handler();
-          __gen_e_acsl_strcat(dest3,(char const *)empty_str);
-          test_successful();
-          break;
-        }
-        case 1: {
-                  signal_eval(0,0,__gen_e_acsl_literal_string_5);
-                  break;
-                }
-        case 2: {
-                  signal_eval(1,0,__gen_e_acsl_literal_string_5);
-                  break;
-                }
-        default:
-        {
-          printf(__gen_e_acsl_literal_string_4,__gen_e_acsl_literal_string_5);
-          __gen_e_acsl_exit(3);
-        }
+      pid_t pid_0 = __gen_e_acsl_fork();
+      if (! pid_0) {
+        __gen_e_acsl_strcat(dest3,(char const *)empty_str);
+        __gen_e_acsl_exit(0);
+      }
+      else {
+        int process_status_0;
+        __e_acsl_store_block((void *)(& process_status_0),(size_t)4);
+        __gen_e_acsl_waitpid(pid_0,& process_status_0,0);
+        signal_eval(process_status_0,0,__gen_e_acsl_literal_string_9);
+        __e_acsl_delete_block((void *)(& process_status_0));
       }
-      __e_acsl_delete_block((void *)(& tmp_4));
-      __e_acsl_delete_block((void *)(& jmp_ctxt_0));
     }
     {
-      int tmp_6;
-      __e_acsl_store_block((void *)(& tmp_6),(size_t)4);
-      sigjmp_buf *jmp_ctxt_1 = get_jmp_ctxt();
-      __e_acsl_store_block((void *)(& jmp_ctxt_1),(size_t)8);
-      __e_acsl_full_init((void *)(& jmp_ctxt_1));
-      __e_acsl_full_init((void *)(& tmp_6));
-      tmp_6 = sigsetjmp(*jmp_ctxt_1,1);
-      switch (tmp_6) {
-        case 0:
-        {
-          set_handler();
-          __gen_e_acsl_strcat(dest2,(char const *)const_str);
-          test_successful();
-          break;
-        }
-        case 1: {
-                  signal_eval(0,1,__gen_e_acsl_literal_string_6);
-                  break;
-                }
-        case 2: {
-                  signal_eval(1,1,__gen_e_acsl_literal_string_6);
-                  break;
-                }
-        default:
-        {
-          printf(__gen_e_acsl_literal_string_4,__gen_e_acsl_literal_string_6);
-          __gen_e_acsl_exit(3);
-        }
+      pid_t pid_1 = __gen_e_acsl_fork();
+      if (! pid_1) {
+        __gen_e_acsl_strcat(dest2,(char const *)const_str);
+        __gen_e_acsl_exit(0);
+      }
+      else {
+        int process_status_1;
+        __e_acsl_store_block((void *)(& process_status_1),(size_t)4);
+        __gen_e_acsl_waitpid(pid_1,& process_status_1,0);
+        signal_eval(process_status_1,1,__gen_e_acsl_literal_string_10);
+        __e_acsl_delete_block((void *)(& process_status_1));
       }
-      __e_acsl_delete_block((void *)(& tmp_6));
-      __e_acsl_delete_block((void *)(& jmp_ctxt_1));
     }
     {
-      int tmp_8;
-      __e_acsl_store_block((void *)(& tmp_8),(size_t)4);
-      sigjmp_buf *jmp_ctxt_2 = get_jmp_ctxt();
-      __e_acsl_store_block((void *)(& jmp_ctxt_2),(size_t)8);
-      __e_acsl_full_init((void *)(& jmp_ctxt_2));
-      __e_acsl_full_init((void *)(& tmp_8));
-      tmp_8 = sigsetjmp(*jmp_ctxt_2,1);
-      switch (tmp_8) {
-        case 0:
-        {
-          set_handler();
-          __gen_e_acsl_strcat(unalloc_str,(char const *)const_str);
-          test_successful();
-          break;
-        }
-        case 1: {
-                  signal_eval(0,1,__gen_e_acsl_literal_string_7);
-                  break;
-                }
-        case 2: {
-                  signal_eval(1,1,__gen_e_acsl_literal_string_7);
-                  break;
-                }
-        default:
-        {
-          printf(__gen_e_acsl_literal_string_4,__gen_e_acsl_literal_string_7);
-          __gen_e_acsl_exit(3);
-        }
+      pid_t pid_2 = __gen_e_acsl_fork();
+      if (! pid_2) {
+        __gen_e_acsl_strcat(unalloc_str,(char const *)const_str);
+        __gen_e_acsl_exit(0);
+      }
+      else {
+        int process_status_2;
+        __e_acsl_store_block((void *)(& process_status_2),(size_t)4);
+        __gen_e_acsl_waitpid(pid_2,& process_status_2,0);
+        signal_eval(process_status_2,1,__gen_e_acsl_literal_string_11);
+        __e_acsl_delete_block((void *)(& process_status_2));
       }
-      __e_acsl_delete_block((void *)(& tmp_8));
-      __e_acsl_delete_block((void *)(& jmp_ctxt_2));
     }
     {
-      int tmp_10;
-      __e_acsl_store_block((void *)(& tmp_10),(size_t)4);
-      sigjmp_buf *jmp_ctxt_3 = get_jmp_ctxt();
-      __e_acsl_store_block((void *)(& jmp_ctxt_3),(size_t)8);
-      __e_acsl_full_init((void *)(& jmp_ctxt_3));
-      __e_acsl_full_init((void *)(& tmp_10));
-      tmp_10 = sigsetjmp(*jmp_ctxt_3,1);
-      switch (tmp_10) {
-        case 0:
-        {
-          set_handler();
-          __gen_e_acsl_strcat(dest2,(char const *)unalloc_str);
-          test_successful();
-          break;
-        }
-        case 1: {
-                  signal_eval(0,1,__gen_e_acsl_literal_string_8);
-                  break;
-                }
-        case 2: {
-                  signal_eval(1,1,__gen_e_acsl_literal_string_8);
-                  break;
-                }
-        default:
-        {
-          printf(__gen_e_acsl_literal_string_4,__gen_e_acsl_literal_string_8);
-          __gen_e_acsl_exit(3);
-        }
+      pid_t pid_3 = __gen_e_acsl_fork();
+      if (! pid_3) {
+        __gen_e_acsl_strcat(dest2,(char const *)unalloc_str);
+        __gen_e_acsl_exit(0);
+      }
+      else {
+        int process_status_3;
+        __e_acsl_store_block((void *)(& process_status_3),(size_t)4);
+        __gen_e_acsl_waitpid(pid_3,& process_status_3,0);
+        signal_eval(process_status_3,1,__gen_e_acsl_literal_string_12);
+        __e_acsl_delete_block((void *)(& process_status_3));
       }
-      __e_acsl_delete_block((void *)(& tmp_10));
-      __e_acsl_delete_block((void *)(& jmp_ctxt_3));
     }
     {
-      int tmp_12;
-      __e_acsl_store_block((void *)(& tmp_12),(size_t)4);
-      sigjmp_buf *jmp_ctxt_4 = get_jmp_ctxt();
-      __e_acsl_store_block((void *)(& jmp_ctxt_4),(size_t)8);
-      __e_acsl_full_init((void *)(& jmp_ctxt_4));
-      __e_acsl_full_init((void *)(& tmp_12));
-      tmp_12 = sigsetjmp(*jmp_ctxt_4,1);
-      switch (tmp_12) {
-        case 0:
-        {
-          set_handler();
-          __gen_e_acsl_strcat((char *)0,__gen_e_acsl_literal_string_2);
-          test_successful();
-          break;
-        }
-        case 1: {
-                  signal_eval(0,1,__gen_e_acsl_literal_string_9);
-                  break;
-                }
-        case 2: {
-                  signal_eval(1,1,__gen_e_acsl_literal_string_9);
-                  break;
-                }
-        default:
-        {
-          printf(__gen_e_acsl_literal_string_4,__gen_e_acsl_literal_string_9);
-          __gen_e_acsl_exit(3);
-        }
+      pid_t pid_4 = __gen_e_acsl_fork();
+      if (! pid_4) {
+        __gen_e_acsl_strcat((char *)0,__gen_e_acsl_literal_string_7);
+        __gen_e_acsl_exit(0);
+      }
+      else {
+        int process_status_4;
+        __e_acsl_store_block((void *)(& process_status_4),(size_t)4);
+        __gen_e_acsl_waitpid(pid_4,& process_status_4,0);
+        signal_eval(process_status_4,1,__gen_e_acsl_literal_string_13);
+        __e_acsl_delete_block((void *)(& process_status_4));
       }
-      __e_acsl_delete_block((void *)(& tmp_12));
-      __e_acsl_delete_block((void *)(& jmp_ctxt_4));
     }
     {
-      int tmp_14;
-      __e_acsl_store_block((void *)(& tmp_14),(size_t)4);
-      sigjmp_buf *jmp_ctxt_5 = get_jmp_ctxt();
-      __e_acsl_store_block((void *)(& jmp_ctxt_5),(size_t)8);
-      __e_acsl_full_init((void *)(& jmp_ctxt_5));
-      __e_acsl_full_init((void *)(& tmp_14));
-      tmp_14 = sigsetjmp(*jmp_ctxt_5,1);
-      switch (tmp_14) {
-        case 0:
-        {
-          set_handler();
-          __gen_e_acsl_strcat(dest1,(char const *)0);
-          test_successful();
-          break;
-        }
-        case 1: {
-                  signal_eval(0,1,__gen_e_acsl_literal_string_10);
-                  break;
-                }
-        case 2: {
-                  signal_eval(1,1,__gen_e_acsl_literal_string_10);
-                  break;
-                }
-        default:
-        {
-          printf(__gen_e_acsl_literal_string_4,
-                 __gen_e_acsl_literal_string_10);
-          __gen_e_acsl_exit(3);
-        }
+      pid_t pid_5 = __gen_e_acsl_fork();
+      if (! pid_5) {
+        __gen_e_acsl_strcat(dest1,(char const *)0);
+        __gen_e_acsl_exit(0);
+      }
+      else {
+        int process_status_5;
+        __e_acsl_store_block((void *)(& process_status_5),(size_t)4);
+        __gen_e_acsl_waitpid(pid_5,& process_status_5,0);
+        signal_eval(process_status_5,1,__gen_e_acsl_literal_string_14);
+        __e_acsl_delete_block((void *)(& process_status_5));
       }
-      __e_acsl_delete_block((void *)(& tmp_14));
-      __e_acsl_delete_block((void *)(& jmp_ctxt_5));
     }
     {
-      int tmp_16;
-      __e_acsl_store_block((void *)(& tmp_16),(size_t)4);
-      sigjmp_buf *jmp_ctxt_6 = get_jmp_ctxt();
-      __e_acsl_store_block((void *)(& jmp_ctxt_6),(size_t)8);
-      __e_acsl_full_init((void *)(& jmp_ctxt_6));
-      __e_acsl_full_init((void *)(& tmp_16));
-      tmp_16 = sigsetjmp(*jmp_ctxt_6,1);
-      switch (tmp_16) {
-        case 0:
-        {
-          set_handler();
-          __gen_e_acsl_strcat(const_str,(char const *)const_str);
-          test_successful();
-          break;
-        }
-        case 1: {
-                  signal_eval(0,1,__gen_e_acsl_literal_string_11);
-                  break;
-                }
-        case 2: {
-                  signal_eval(1,1,__gen_e_acsl_literal_string_11);
-                  break;
-                }
-        default:
-        {
-          printf(__gen_e_acsl_literal_string_4,
-                 __gen_e_acsl_literal_string_11);
-          __gen_e_acsl_exit(3);
-        }
+      pid_t pid_6 = __gen_e_acsl_fork();
+      if (! pid_6) {
+        __gen_e_acsl_strcat(const_str,(char const *)const_str);
+        __gen_e_acsl_exit(0);
+      }
+      else {
+        int process_status_6;
+        __e_acsl_store_block((void *)(& process_status_6),(size_t)4);
+        __gen_e_acsl_waitpid(pid_6,& process_status_6,0);
+        signal_eval(process_status_6,1,__gen_e_acsl_literal_string_15);
+        __e_acsl_delete_block((void *)(& process_status_6));
       }
-      __e_acsl_delete_block((void *)(& tmp_16));
-      __e_acsl_delete_block((void *)(& jmp_ctxt_6));
     }
     {
-      int tmp_18;
-      __e_acsl_store_block((void *)(& tmp_18),(size_t)4);
-      sigjmp_buf *jmp_ctxt_7 = get_jmp_ctxt();
-      __e_acsl_store_block((void *)(& jmp_ctxt_7),(size_t)8);
-      __e_acsl_full_init((void *)(& jmp_ctxt_7));
-      __e_acsl_full_init((void *)(& tmp_18));
-      tmp_18 = sigsetjmp(*jmp_ctxt_7,1);
-      switch (tmp_18) {
-        case 0:
-        {
-          set_handler();
-          __gen_e_acsl_strcat(pd1,(char const *)pd1);
-          test_successful();
-          break;
-        }
-        case 1: {
-                  signal_eval(0,1,__gen_e_acsl_literal_string_12);
-                  break;
-                }
-        case 2: {
-                  signal_eval(1,1,__gen_e_acsl_literal_string_12);
-                  break;
-                }
-        default:
-        {
-          printf(__gen_e_acsl_literal_string_4,
-                 __gen_e_acsl_literal_string_12);
-          __gen_e_acsl_exit(3);
-        }
+      pid_t pid_7 = __gen_e_acsl_fork();
+      if (! pid_7) {
+        __gen_e_acsl_strcat(pd1,(char const *)pd1);
+        __gen_e_acsl_exit(0);
+      }
+      else {
+        int process_status_7;
+        __e_acsl_store_block((void *)(& process_status_7),(size_t)4);
+        __gen_e_acsl_waitpid(pid_7,& process_status_7,0);
+        signal_eval(process_status_7,1,__gen_e_acsl_literal_string_16);
+        __e_acsl_delete_block((void *)(& process_status_7));
       }
-      __e_acsl_delete_block((void *)(& tmp_18));
-      __e_acsl_delete_block((void *)(& jmp_ctxt_7));
     }
     {
-      int tmp_20;
-      __e_acsl_store_block((void *)(& tmp_20),(size_t)4);
-      sigjmp_buf *jmp_ctxt_8 = get_jmp_ctxt();
-      __e_acsl_store_block((void *)(& jmp_ctxt_8),(size_t)8);
-      __e_acsl_full_init((void *)(& jmp_ctxt_8));
-      __e_acsl_full_init((void *)(& tmp_20));
-      tmp_20 = sigsetjmp(*jmp_ctxt_8,1);
-      switch (tmp_20) {
-        case 0:
-        {
-          set_handler();
-          __gen_e_acsl_strcat(pd1 + 3,(char const *)pd1);
-          test_successful();
-          break;
-        }
-        case 1: {
-                  signal_eval(0,1,__gen_e_acsl_literal_string_13);
-                  break;
-                }
-        case 2: {
-                  signal_eval(1,1,__gen_e_acsl_literal_string_13);
-                  break;
-                }
-        default:
-        {
-          printf(__gen_e_acsl_literal_string_4,
-                 __gen_e_acsl_literal_string_13);
-          __gen_e_acsl_exit(3);
-        }
+      pid_t pid_8 = __gen_e_acsl_fork();
+      if (! pid_8) {
+        __gen_e_acsl_strcat(pd1 + 3,(char const *)pd1);
+        __gen_e_acsl_exit(0);
+      }
+      else {
+        int process_status_8;
+        __e_acsl_store_block((void *)(& process_status_8),(size_t)4);
+        __gen_e_acsl_waitpid(pid_8,& process_status_8,0);
+        signal_eval(process_status_8,1,__gen_e_acsl_literal_string_17);
+        __e_acsl_delete_block((void *)(& process_status_8));
       }
-      __e_acsl_delete_block((void *)(& tmp_20));
-      __e_acsl_delete_block((void *)(& jmp_ctxt_8));
     }
     {
-      int tmp_22;
-      __e_acsl_store_block((void *)(& tmp_22),(size_t)4);
-      sigjmp_buf *jmp_ctxt_9 = get_jmp_ctxt();
-      __e_acsl_store_block((void *)(& jmp_ctxt_9),(size_t)8);
-      __e_acsl_full_init((void *)(& jmp_ctxt_9));
-      __e_acsl_full_init((void *)(& tmp_22));
-      tmp_22 = sigsetjmp(*jmp_ctxt_9,1);
-      switch (tmp_22) {
-        case 0:
-        {
-          set_handler();
-          __gen_e_acsl_strcat(pd4 + 4,(char const *)pd4);
-          test_successful();
-          break;
-        }
-        case 1: {
-                  signal_eval(0,1,__gen_e_acsl_literal_string_14);
-                  break;
-                }
-        case 2: {
-                  signal_eval(1,1,__gen_e_acsl_literal_string_14);
-                  break;
-                }
-        default:
-        {
-          printf(__gen_e_acsl_literal_string_4,
-                 __gen_e_acsl_literal_string_14);
-          __gen_e_acsl_exit(3);
-        }
+      pid_t pid_9 = __gen_e_acsl_fork();
+      if (! pid_9) {
+        __gen_e_acsl_strcat(pd4 + 4,(char const *)pd4);
+        __gen_e_acsl_exit(0);
+      }
+      else {
+        int process_status_9;
+        __e_acsl_store_block((void *)(& process_status_9),(size_t)4);
+        __gen_e_acsl_waitpid(pid_9,& process_status_9,0);
+        signal_eval(process_status_9,1,__gen_e_acsl_literal_string_18);
+        __e_acsl_delete_block((void *)(& process_status_9));
       }
-      __e_acsl_delete_block((void *)(& tmp_22));
-      __e_acsl_delete_block((void *)(& jmp_ctxt_9));
     }
     {
-      int tmp_24;
-      __e_acsl_store_block((void *)(& tmp_24),(size_t)4);
-      sigjmp_buf *jmp_ctxt_10 = get_jmp_ctxt();
-      __e_acsl_store_block((void *)(& jmp_ctxt_10),(size_t)8);
-      __e_acsl_full_init((void *)(& jmp_ctxt_10));
-      __e_acsl_full_init((void *)(& tmp_24));
-      tmp_24 = sigsetjmp(*jmp_ctxt_10,1);
-      switch (tmp_24) {
-        case 0:
-        {
-          set_handler();
-          __e_acsl_initialize((void *)(pd4 + 5),sizeof(char));
-          *(pd4 + 5) = (char)'\000';
-          __gen_e_acsl_strcat(pd4 + 5,(char const *)pd4);
-          test_successful();
-          break;
-        }
-        case 1: {
-                  signal_eval(0,0,__gen_e_acsl_literal_string_15);
-                  break;
-                }
-        case 2: {
-                  signal_eval(1,0,__gen_e_acsl_literal_string_15);
-                  break;
-                }
-        default:
-        {
-          printf(__gen_e_acsl_literal_string_4,
-                 __gen_e_acsl_literal_string_15);
-          __gen_e_acsl_exit(3);
-        }
+      pid_t pid_10 = __gen_e_acsl_fork();
+      if (! pid_10) {
+        __e_acsl_initialize((void *)(pd4 + 5),sizeof(char));
+        *(pd4 + 5) = (char)'\000';
+        __gen_e_acsl_strcat(pd4 + 5,(char const *)pd4);
+        __gen_e_acsl_exit(0);
+      }
+      else {
+        int process_status_10;
+        __e_acsl_store_block((void *)(& process_status_10),(size_t)4);
+        __gen_e_acsl_waitpid(pid_10,& process_status_10,0);
+        signal_eval(process_status_10,0,__gen_e_acsl_literal_string_19);
+        __e_acsl_delete_block((void *)(& process_status_10));
       }
-      __e_acsl_delete_block((void *)(& tmp_24));
-      __e_acsl_delete_block((void *)(& jmp_ctxt_10));
       __e_acsl_delete_block((void *)(& pd4));
       __e_acsl_delete_block((void *)(& pd3));
       __e_acsl_delete_block((void *)(& pd2));
@@ -673,352 +744,150 @@ int main(int argc, char const **argv)
     __e_acsl_store_block((void *)(& pd4_0),(size_t)8);
     __e_acsl_full_init((void *)(& pd4_0));
     {
-      int tmp_26;
-      __e_acsl_store_block((void *)(& tmp_26),(size_t)4);
-      sigjmp_buf *jmp_ctxt_11 = get_jmp_ctxt();
-      __e_acsl_store_block((void *)(& jmp_ctxt_11),(size_t)8);
-      __e_acsl_full_init((void *)(& jmp_ctxt_11));
-      __e_acsl_full_init((void *)(& tmp_26));
-      tmp_26 = sigsetjmp(*jmp_ctxt_11,1);
-      switch (tmp_26) {
-        case 0:
-        {
-          set_handler();
-          __gen_e_acsl_strncat(dest1_0,(char const *)const_str,
-                               (unsigned long)4);
-          test_successful();
-          break;
-        }
-        case 1: {
-                  signal_eval(0,0,__gen_e_acsl_literal_string_16);
-                  break;
-                }
-        case 2: {
-                  signal_eval(1,0,__gen_e_acsl_literal_string_16);
-                  break;
-                }
-        default:
-        {
-          printf(__gen_e_acsl_literal_string_4,
-                 __gen_e_acsl_literal_string_16);
-          __gen_e_acsl_exit(3);
-        }
+      pid_t pid_11 = __gen_e_acsl_fork();
+      if (! pid_11) {
+        __gen_e_acsl_strncat(dest1_0,(char const *)const_str,
+                             (unsigned long)4);
+        __gen_e_acsl_exit(0);
+      }
+      else {
+        int process_status_11;
+        __e_acsl_store_block((void *)(& process_status_11),(size_t)4);
+        __gen_e_acsl_waitpid(pid_11,& process_status_11,0);
+        signal_eval(process_status_11,0,__gen_e_acsl_literal_string_20);
+        __e_acsl_delete_block((void *)(& process_status_11));
       }
-      __e_acsl_delete_block((void *)(& tmp_26));
-      __e_acsl_delete_block((void *)(& jmp_ctxt_11));
     }
     {
-      int tmp_28;
-      __e_acsl_store_block((void *)(& tmp_28),(size_t)4);
-      sigjmp_buf *jmp_ctxt_12 = get_jmp_ctxt();
-      __e_acsl_store_block((void *)(& jmp_ctxt_12),(size_t)8);
-      __e_acsl_full_init((void *)(& jmp_ctxt_12));
-      __e_acsl_full_init((void *)(& tmp_28));
-      tmp_28 = sigsetjmp(*jmp_ctxt_12,1);
-      switch (tmp_28) {
-        case 0:
-        {
-          set_handler();
-          __gen_e_acsl_strncat(dest2_0,(char const *)const_str,
-                               (unsigned long)4);
-          test_successful();
-          break;
-        }
-        case 1: {
-                  signal_eval(0,1,__gen_e_acsl_literal_string_17);
-                  break;
-                }
-        case 2: {
-                  signal_eval(1,1,__gen_e_acsl_literal_string_17);
-                  break;
-                }
-        default:
-        {
-          printf(__gen_e_acsl_literal_string_4,
-                 __gen_e_acsl_literal_string_17);
-          __gen_e_acsl_exit(3);
-        }
+      pid_t pid_12 = __gen_e_acsl_fork();
+      if (! pid_12) {
+        __gen_e_acsl_strncat(dest2_0,(char const *)const_str,
+                             (unsigned long)4);
+        __gen_e_acsl_exit(0);
+      }
+      else {
+        int process_status_12;
+        __e_acsl_store_block((void *)(& process_status_12),(size_t)4);
+        __gen_e_acsl_waitpid(pid_12,& process_status_12,0);
+        signal_eval(process_status_12,1,__gen_e_acsl_literal_string_21);
+        __e_acsl_delete_block((void *)(& process_status_12));
       }
-      __e_acsl_delete_block((void *)(& tmp_28));
-      __e_acsl_delete_block((void *)(& jmp_ctxt_12));
     }
     {
-      int tmp_30;
-      __e_acsl_store_block((void *)(& tmp_30),(size_t)4);
-      sigjmp_buf *jmp_ctxt_13 = get_jmp_ctxt();
-      __e_acsl_store_block((void *)(& jmp_ctxt_13),(size_t)8);
-      __e_acsl_full_init((void *)(& jmp_ctxt_13));
-      __e_acsl_full_init((void *)(& tmp_30));
-      tmp_30 = sigsetjmp(*jmp_ctxt_13,1);
-      switch (tmp_30) {
-        case 0:
-        {
-          set_handler();
-          __gen_e_acsl_strncat(unalloc_str,(char const *)const_str,
-                               (unsigned long)1);
-          test_successful();
-          break;
-        }
-        case 1: {
-                  signal_eval(0,1,__gen_e_acsl_literal_string_18);
-                  break;
-                }
-        case 2: {
-                  signal_eval(1,1,__gen_e_acsl_literal_string_18);
-                  break;
-                }
-        default:
-        {
-          printf(__gen_e_acsl_literal_string_4,
-                 __gen_e_acsl_literal_string_18);
-          __gen_e_acsl_exit(3);
-        }
+      pid_t pid_13 = __gen_e_acsl_fork();
+      if (! pid_13) {
+        __gen_e_acsl_strncat(unalloc_str,(char const *)const_str,
+                             (unsigned long)1);
+        __gen_e_acsl_exit(0);
+      }
+      else {
+        int process_status_13;
+        __e_acsl_store_block((void *)(& process_status_13),(size_t)4);
+        __gen_e_acsl_waitpid(pid_13,& process_status_13,0);
+        signal_eval(process_status_13,1,__gen_e_acsl_literal_string_22);
+        __e_acsl_delete_block((void *)(& process_status_13));
       }
-      __e_acsl_delete_block((void *)(& tmp_30));
-      __e_acsl_delete_block((void *)(& jmp_ctxt_13));
     }
     {
-      int tmp_32;
-      __e_acsl_store_block((void *)(& tmp_32),(size_t)4);
-      sigjmp_buf *jmp_ctxt_14 = get_jmp_ctxt();
-      __e_acsl_store_block((void *)(& jmp_ctxt_14),(size_t)8);
-      __e_acsl_full_init((void *)(& jmp_ctxt_14));
-      __e_acsl_full_init((void *)(& tmp_32));
-      tmp_32 = sigsetjmp(*jmp_ctxt_14,1);
-      switch (tmp_32) {
-        case 0:
-        {
-          set_handler();
-          __gen_e_acsl_strncat(dest2_0,(char const *)unalloc_str,
-                               (unsigned long)1);
-          test_successful();
-          break;
-        }
-        case 1: {
-                  signal_eval(0,1,__gen_e_acsl_literal_string_19);
-                  break;
-                }
-        case 2: {
-                  signal_eval(1,1,__gen_e_acsl_literal_string_19);
-                  break;
-                }
-        default:
-        {
-          printf(__gen_e_acsl_literal_string_4,
-                 __gen_e_acsl_literal_string_19);
-          __gen_e_acsl_exit(3);
-        }
+      pid_t pid_14 = __gen_e_acsl_fork();
+      if (! pid_14) {
+        __gen_e_acsl_strncat(dest2_0,(char const *)unalloc_str,
+                             (unsigned long)1);
+        __gen_e_acsl_exit(0);
+      }
+      else {
+        int process_status_14;
+        __e_acsl_store_block((void *)(& process_status_14),(size_t)4);
+        __gen_e_acsl_waitpid(pid_14,& process_status_14,0);
+        signal_eval(process_status_14,1,__gen_e_acsl_literal_string_23);
+        __e_acsl_delete_block((void *)(& process_status_14));
       }
-      __e_acsl_delete_block((void *)(& tmp_32));
-      __e_acsl_delete_block((void *)(& jmp_ctxt_14));
     }
     {
-      int tmp_34;
-      __e_acsl_store_block((void *)(& tmp_34),(size_t)4);
-      sigjmp_buf *jmp_ctxt_15 = get_jmp_ctxt();
-      __e_acsl_store_block((void *)(& jmp_ctxt_15),(size_t)8);
-      __e_acsl_full_init((void *)(& jmp_ctxt_15));
-      __e_acsl_full_init((void *)(& tmp_34));
-      tmp_34 = sigsetjmp(*jmp_ctxt_15,1);
-      switch (tmp_34) {
-        case 0:
-        {
-          set_handler();
-          __gen_e_acsl_strncat((char *)0,(char const *)const_str,
-                               (unsigned long)1);
-          test_successful();
-          break;
-        }
-        case 1: {
-                  signal_eval(0,1,__gen_e_acsl_literal_string_20);
-                  break;
-                }
-        case 2: {
-                  signal_eval(1,1,__gen_e_acsl_literal_string_20);
-                  break;
-                }
-        default:
-        {
-          printf(__gen_e_acsl_literal_string_4,
-                 __gen_e_acsl_literal_string_20);
-          __gen_e_acsl_exit(3);
-        }
+      pid_t pid_15 = __gen_e_acsl_fork();
+      if (! pid_15) {
+        __gen_e_acsl_strncat((char *)0,(char const *)const_str,
+                             (unsigned long)1);
+        __gen_e_acsl_exit(0);
+      }
+      else {
+        int process_status_15;
+        __e_acsl_store_block((void *)(& process_status_15),(size_t)4);
+        __gen_e_acsl_waitpid(pid_15,& process_status_15,0);
+        signal_eval(process_status_15,1,__gen_e_acsl_literal_string_24);
+        __e_acsl_delete_block((void *)(& process_status_15));
       }
-      __e_acsl_delete_block((void *)(& tmp_34));
-      __e_acsl_delete_block((void *)(& jmp_ctxt_15));
     }
     {
-      int tmp_36;
-      __e_acsl_store_block((void *)(& tmp_36),(size_t)4);
-      sigjmp_buf *jmp_ctxt_16 = get_jmp_ctxt();
-      __e_acsl_store_block((void *)(& jmp_ctxt_16),(size_t)8);
-      __e_acsl_full_init((void *)(& jmp_ctxt_16));
-      __e_acsl_full_init((void *)(& tmp_36));
-      tmp_36 = sigsetjmp(*jmp_ctxt_16,1);
-      switch (tmp_36) {
-        case 0:
-        {
-          set_handler();
-          __gen_e_acsl_strncat(dest2_0,(char const *)0,(unsigned long)1);
-          test_successful();
-          break;
-        }
-        case 1: {
-                  signal_eval(0,1,__gen_e_acsl_literal_string_21);
-                  break;
-                }
-        case 2: {
-                  signal_eval(1,1,__gen_e_acsl_literal_string_21);
-                  break;
-                }
-        default:
-        {
-          printf(__gen_e_acsl_literal_string_4,
-                 __gen_e_acsl_literal_string_21);
-          __gen_e_acsl_exit(3);
-        }
+      pid_t pid_16 = __gen_e_acsl_fork();
+      if (! pid_16) {
+        __gen_e_acsl_strncat(dest2_0,(char const *)0,(unsigned long)1);
+        __gen_e_acsl_exit(0);
+      }
+      else {
+        int process_status_16;
+        __e_acsl_store_block((void *)(& process_status_16),(size_t)4);
+        __gen_e_acsl_waitpid(pid_16,& process_status_16,0);
+        signal_eval(process_status_16,1,__gen_e_acsl_literal_string_25);
+        __e_acsl_delete_block((void *)(& process_status_16));
       }
-      __e_acsl_delete_block((void *)(& tmp_36));
-      __e_acsl_delete_block((void *)(& jmp_ctxt_16));
     }
     {
-      int tmp_38;
-      __e_acsl_store_block((void *)(& tmp_38),(size_t)4);
-      sigjmp_buf *jmp_ctxt_17 = get_jmp_ctxt();
-      __e_acsl_store_block((void *)(& jmp_ctxt_17),(size_t)8);
-      __e_acsl_full_init((void *)(& jmp_ctxt_17));
-      __e_acsl_full_init((void *)(& tmp_38));
-      tmp_38 = sigsetjmp(*jmp_ctxt_17,1);
-      switch (tmp_38) {
-        case 0:
-        {
-          set_handler();
-          __gen_e_acsl_strncat(const_str,(char const *)const_str,
-                               (unsigned long)1);
-          test_successful();
-          break;
-        }
-        case 1: {
-                  signal_eval(0,1,__gen_e_acsl_literal_string_22);
-                  break;
-                }
-        case 2: {
-                  signal_eval(1,1,__gen_e_acsl_literal_string_22);
-                  break;
-                }
-        default:
-        {
-          printf(__gen_e_acsl_literal_string_4,
-                 __gen_e_acsl_literal_string_22);
-          __gen_e_acsl_exit(3);
-        }
+      pid_t pid_17 = __gen_e_acsl_fork();
+      if (! pid_17) {
+        __gen_e_acsl_strncat(const_str,(char const *)const_str,
+                             (unsigned long)1);
+        __gen_e_acsl_exit(0);
+      }
+      else {
+        int process_status_17;
+        __e_acsl_store_block((void *)(& process_status_17),(size_t)4);
+        __gen_e_acsl_waitpid(pid_17,& process_status_17,0);
+        signal_eval(process_status_17,1,__gen_e_acsl_literal_string_26);
+        __e_acsl_delete_block((void *)(& process_status_17));
       }
-      __e_acsl_delete_block((void *)(& tmp_38));
-      __e_acsl_delete_block((void *)(& jmp_ctxt_17));
     }
     {
-      int tmp_40;
-      __e_acsl_store_block((void *)(& tmp_40),(size_t)4);
-      sigjmp_buf *jmp_ctxt_18 = get_jmp_ctxt();
-      __e_acsl_store_block((void *)(& jmp_ctxt_18),(size_t)8);
-      __e_acsl_full_init((void *)(& jmp_ctxt_18));
-      __e_acsl_full_init((void *)(& tmp_40));
-      tmp_40 = sigsetjmp(*jmp_ctxt_18,1);
-      switch (tmp_40) {
-        case 0:
-        {
-          set_handler();
-          __gen_e_acsl_strncat(pd1_0,(char const *)pd1_0,(unsigned long)1);
-          test_successful();
-          break;
-        }
-        case 1: {
-                  signal_eval(0,1,__gen_e_acsl_literal_string_23);
-                  break;
-                }
-        case 2: {
-                  signal_eval(1,1,__gen_e_acsl_literal_string_23);
-                  break;
-                }
-        default:
-        {
-          printf(__gen_e_acsl_literal_string_4,
-                 __gen_e_acsl_literal_string_23);
-          __gen_e_acsl_exit(3);
-        }
+      pid_t pid_18 = __gen_e_acsl_fork();
+      if (! pid_18) {
+        __gen_e_acsl_strncat(pd1_0,(char const *)pd1_0,(unsigned long)1);
+        __gen_e_acsl_exit(0);
+      }
+      else {
+        int process_status_18;
+        __e_acsl_store_block((void *)(& process_status_18),(size_t)4);
+        __gen_e_acsl_waitpid(pid_18,& process_status_18,0);
+        signal_eval(process_status_18,1,__gen_e_acsl_literal_string_27);
+        __e_acsl_delete_block((void *)(& process_status_18));
       }
-      __e_acsl_delete_block((void *)(& tmp_40));
-      __e_acsl_delete_block((void *)(& jmp_ctxt_18));
     }
     {
-      int tmp_42;
-      __e_acsl_store_block((void *)(& tmp_42),(size_t)4);
-      sigjmp_buf *jmp_ctxt_19 = get_jmp_ctxt();
-      __e_acsl_store_block((void *)(& jmp_ctxt_19),(size_t)8);
-      __e_acsl_full_init((void *)(& jmp_ctxt_19));
-      __e_acsl_full_init((void *)(& tmp_42));
-      tmp_42 = sigsetjmp(*jmp_ctxt_19,1);
-      switch (tmp_42) {
-        case 0:
-        {
-          set_handler();
-          __gen_e_acsl_strncat(pd1_0 + 3,(char const *)pd1_0,
-                               (unsigned long)5);
-          test_successful();
-          break;
-        }
-        case 1: {
-                  signal_eval(0,1,__gen_e_acsl_literal_string_24);
-                  break;
-                }
-        case 2: {
-                  signal_eval(1,1,__gen_e_acsl_literal_string_24);
-                  break;
-                }
-        default:
-        {
-          printf(__gen_e_acsl_literal_string_4,
-                 __gen_e_acsl_literal_string_24);
-          __gen_e_acsl_exit(3);
-        }
+      pid_t pid_19 = __gen_e_acsl_fork();
+      if (! pid_19) {
+        __gen_e_acsl_strncat(pd1_0 + 3,(char const *)pd1_0,(unsigned long)5);
+        __gen_e_acsl_exit(0);
+      }
+      else {
+        int process_status_19;
+        __e_acsl_store_block((void *)(& process_status_19),(size_t)4);
+        __gen_e_acsl_waitpid(pid_19,& process_status_19,0);
+        signal_eval(process_status_19,1,__gen_e_acsl_literal_string_28);
+        __e_acsl_delete_block((void *)(& process_status_19));
       }
-      __e_acsl_delete_block((void *)(& tmp_42));
-      __e_acsl_delete_block((void *)(& jmp_ctxt_19));
     }
     {
-      int tmp_44;
-      __e_acsl_store_block((void *)(& tmp_44),(size_t)4);
-      sigjmp_buf *jmp_ctxt_20 = get_jmp_ctxt();
-      __e_acsl_store_block((void *)(& jmp_ctxt_20),(size_t)8);
-      __e_acsl_full_init((void *)(& jmp_ctxt_20));
-      __e_acsl_full_init((void *)(& tmp_44));
-      tmp_44 = sigsetjmp(*jmp_ctxt_20,1);
-      switch (tmp_44) {
-        case 0:
-        {
-          set_handler();
-          __gen_e_acsl_strncat(pd4_0 + 4,(char const *)pd4_0,
-                               (unsigned long)5);
-          test_successful();
-          break;
-        }
-        case 1: {
-                  signal_eval(0,1,__gen_e_acsl_literal_string_25);
-                  break;
-                }
-        case 2: {
-                  signal_eval(1,1,__gen_e_acsl_literal_string_25);
-                  break;
-                }
-        default:
-        {
-          printf(__gen_e_acsl_literal_string_4,
-                 __gen_e_acsl_literal_string_25);
-          __gen_e_acsl_exit(3);
-        }
+      pid_t pid_20 = __gen_e_acsl_fork();
+      if (! pid_20) {
+        __gen_e_acsl_strncat(pd4_0 + 4,(char const *)pd4_0,(unsigned long)5);
+        __gen_e_acsl_exit(0);
+      }
+      else {
+        int process_status_20;
+        __e_acsl_store_block((void *)(& process_status_20),(size_t)4);
+        __gen_e_acsl_waitpid(pid_20,& process_status_20,0);
+        signal_eval(process_status_20,1,__gen_e_acsl_literal_string_29);
+        __e_acsl_delete_block((void *)(& process_status_20));
       }
-      __e_acsl_delete_block((void *)(& tmp_44));
-      __e_acsl_delete_block((void *)(& jmp_ctxt_20));
       __e_acsl_delete_block((void *)(& pd4_0));
       __e_acsl_delete_block((void *)(& pd3_0));
       __e_acsl_delete_block((void *)(& pd2_0));
@@ -1029,21 +898,9 @@ int main(int argc, char const **argv)
       __e_acsl_delete_block((void *)(dest1_0));
     }
   }
-  __e_acsl_full_init((void *)(& __retres));
   __retres = 0;
-  __e_acsl_delete_block((void *)(& argv));
-  __e_acsl_delete_block((void *)(& argc));
-  __e_acsl_delete_block((void *)(& __fc_p_strerror));
-  __e_acsl_delete_block((void *)(strerror));
-  __e_acsl_delete_block((void *)(& __fc_strtok_ptr));
-  __e_acsl_delete_block((void *)(& __fc_p_fopen));
-  __e_acsl_delete_block((void *)(__fc_fopen));
-  __e_acsl_delete_block((void *)(& __fc_rand_max));
-  __e_acsl_delete_block((void *)(& empty_str));
-  __e_acsl_delete_block((void *)(& _barrier));
   __e_acsl_delete_block((void *)(& unalloc_str));
   __e_acsl_delete_block((void *)(& const_str));
-  __e_acsl_delete_block((void *)(& __retres));
   __e_acsl_memory_clean();
   return __retres;
 }
diff --git a/src/plugins/e-acsl/tests/builtin/oracle_ci/gen_strcmp.c b/src/plugins/e-acsl/tests/builtin/oracle_ci/gen_strcmp.c
index 6f6f697e18a8f9b2be86d320185e08b36d897296..5032458f73323645d0ec6794819761816c63528d 100644
--- a/src/plugins/e-acsl/tests/builtin/oracle_ci/gen_strcmp.c
+++ b/src/plugins/e-acsl/tests/builtin/oracle_ci/gen_strcmp.c
@@ -1,17 +1,26 @@
 /* Generated by Frama-C */
-#include "setjmp.h"
 #include "signal.h"
+#include "stddef.h"
 #include "stdio.h"
 #include "stdlib.h"
 #include "string.h"
+#include "sys/select.h"
+#include "sys/time.h"
+#include "sys/types.h"
+#include "sys/wait.h"
+#include "unistd.h"
+char *__gen_e_acsl_literal_string_32;
+char *__gen_e_acsl_literal_string_31;
+char *__gen_e_acsl_literal_string_30;
+char *__gen_e_acsl_literal_string_29;
 char *__gen_e_acsl_literal_string_28;
 char *__gen_e_acsl_literal_string_27;
 char *__gen_e_acsl_literal_string_26;
 char *__gen_e_acsl_literal_string_25;
-char *__gen_e_acsl_literal_string_24;
 char *__gen_e_acsl_literal_string_23;
 char *__gen_e_acsl_literal_string_22;
 char *__gen_e_acsl_literal_string_21;
+char *__gen_e_acsl_literal_string_20;
 char *__gen_e_acsl_literal_string_19;
 char *__gen_e_acsl_literal_string_18;
 char *__gen_e_acsl_literal_string_17;
@@ -25,29 +34,323 @@ char *__gen_e_acsl_literal_string_10;
 char *__gen_e_acsl_literal_string_9;
 char *__gen_e_acsl_literal_string_8;
 char *__gen_e_acsl_literal_string_7;
+char *__gen_e_acsl_literal_string_24;
 char *__gen_e_acsl_literal_string_6;
-char *__gen_e_acsl_literal_string_5;
-char *__gen_e_acsl_literal_string_3;
-char *__gen_e_acsl_literal_string_2;
-char *__gen_e_acsl_literal_string_20;
 char *__gen_e_acsl_literal_string;
+char *__gen_e_acsl_literal_string_2;
+char *__gen_e_acsl_literal_string_3;
+char *__gen_e_acsl_literal_string_5;
 char *__gen_e_acsl_literal_string_4;
 extern int __e_acsl_sound_verdict;
 
+/*@ exits status: \exit_status ≢ 0;
+    ensures never_terminates: \false;
+    
+    assigns \exit_status \from \nothing;
+ */
+void __gen_e_acsl_abort(void);
+
+/*@ exits status: \exit_status ≡ \old(status);
+    ensures never_terminates: \false;
+    
+    assigns \exit_status \from status;
+ */
+void __gen_e_acsl_exit(int status);
+
+/*@ ensures result_ok_or_error: \result ≡ -1 ∨ \result ≥ 0;
+    ensures
+      initialization: stat_loc_init_on_success:
+        \result ≥ 0 ∧ \old(stat_loc) ≢ \null ⇒
+        \initialized(\old(stat_loc));
+    assigns \result, *stat_loc;
+    assigns \result \from (indirect: options);
+    assigns *stat_loc \from (indirect: options);
+    
+    behavior stat_loc_null:
+      assumes stat_loc_null: stat_loc ≡ \null;
+      assigns \result;
+      assigns \result \from \nothing;
+    
+    behavior stat_loc_non_null:
+      assumes stat_loc_non_null: stat_loc ≢ \null;
+      requires valid_stat_loc: \valid(stat_loc);
+ */
+pid_t __gen_e_acsl_waitpid(pid_t pid, int *stat_loc, int options);
+
+/*@ ensures
+      result_ok_child_or_error:
+        \result ≡ 0 ∨ \result > 0 ∨ \result ≡ -1;
+    assigns \result;
+    assigns \result \from \nothing;
+ */
+pid_t __gen_e_acsl_fork(void);
+
+/*@ requires valid_string_s1: valid_read_string(s1);
+    requires valid_string_s2: valid_read_string(s2);
+    ensures acsl_c_equiv: \result ≡ strcmp(\old(s1), \old(s2));
+    assigns \result;
+    assigns \result
+      \from (indirect: *(s1 + (0 ..))), (indirect: *(s2 + (0 ..)));
+ */
+int __gen_e_acsl_strcmp(char const *s1, char const *s2);
+
+/*@ requires valid_string_s1: valid_read_nstring(s1, n);
+    requires valid_string_s2: valid_read_nstring(s2, n);
+    ensures acsl_c_equiv: \result ≡ strncmp(\old(s1), \old(s2), \old(n));
+    assigns \result;
+    assigns \result
+      \from (indirect: *(s1 + (0 .. n - 1))),
+            (indirect: *(s2 + (0 .. n - 1))), (indirect: n);
+ */
+int __gen_e_acsl_strncmp(char const *s1, char const *s2, size_t n);
+
+/*@ requires valid_string_s: valid_read_string(s);
+    assigns \result;
+    assigns \result
+      \from (indirect: *(s + (0 .. strlen{Old}(s)))),
+            (indirect: __fc_heap_status);
+    allocates \result;
+    
+    behavior allocation:
+      assumes can_allocate: is_allocable(strlen(s));
+      ensures allocation: \fresh{Old, Here}(\result,strlen(\old(s)));
+      ensures
+        result_valid_string_and_same_contents:
+          valid_string(\result) ∧ strcmp(\result, \old(s)) ≡ 0;
+      assigns __fc_heap_status, \result;
+      assigns __fc_heap_status \from (indirect: s), __fc_heap_status;
+      assigns \result
+        \from (indirect: *(s + (0 .. strlen{Old}(s)))),
+              (indirect: __fc_heap_status);
+    
+    behavior no_allocation:
+      assumes cannot_allocate: ¬is_allocable(strlen(s));
+      ensures result_null: \result ≡ \null;
+      assigns \result;
+      assigns \result \from \nothing;
+      allocates \nothing;
+ */
+char *__gen_e_acsl_strdup(char const *s);
+
 __inline static void fail_ncomp(int cond, char *fmt, int l, int r)
 {
-  __e_acsl_store_block((void *)(& r),(size_t)4);
-  __e_acsl_store_block((void *)(& l),(size_t)4);
-  __e_acsl_store_block((void *)(& fmt),(size_t)8);
-  __e_acsl_store_block((void *)(& cond),(size_t)4);
   if (cond) {
-    fprintf(stderr,(char const *)fmt,l,r);
+    {
+      int __va_arg0 = l;
+      __e_acsl_store_block((void *)(& __va_arg0),(size_t)4);
+      __e_acsl_full_init((void *)(& __va_arg0));
+      int __va_arg1 = r;
+      __e_acsl_store_block((void *)(& __va_arg1),(size_t)4);
+      __e_acsl_full_init((void *)(& __va_arg1));
+      void *__va_args[2] = {& __va_arg0, & __va_arg1};
+      __e_acsl_store_block((void *)(__va_args),(size_t)16);
+      __e_acsl_full_init((void *)(& __va_args));
+      fprintf(stderr,(char const *)fmt,(void * const *)(__va_args));
+      __e_acsl_delete_block((void *)(& __va_arg0));
+      __e_acsl_delete_block((void *)(& __va_arg1));
+      __e_acsl_delete_block((void *)(__va_args));
+    }
     __gen_e_acsl_abort();
   }
-  __e_acsl_delete_block((void *)(& r));
-  __e_acsl_delete_block((void *)(& l));
-  __e_acsl_delete_block((void *)(& fmt));
-  __e_acsl_delete_block((void *)(& cond));
+  return;
+}
+
+/*@ requires valid_string_s: valid_read_string(s);
+    assigns \result;
+    assigns \result
+      \from (indirect: *(s + (0 .. strlen{Old}(s)))),
+            (indirect: __fc_heap_status);
+    allocates \result;
+    
+    behavior allocation:
+      assumes can_allocate: is_allocable(strlen(s));
+      ensures allocation: \fresh{Old, Here}(\result,strlen(\old(s)));
+      ensures
+        result_valid_string_and_same_contents:
+          valid_string(\result) ∧ strcmp(\result, \old(s)) ≡ 0;
+      assigns __fc_heap_status, \result;
+      assigns __fc_heap_status \from (indirect: s), __fc_heap_status;
+      assigns \result
+        \from (indirect: *(s + (0 .. strlen{Old}(s)))),
+              (indirect: __fc_heap_status);
+    
+    behavior no_allocation:
+      assumes cannot_allocate: ¬is_allocable(strlen(s));
+      ensures result_null: \result ≡ \null;
+      assigns \result;
+      assigns \result \from \nothing;
+      allocates \nothing;
+ */
+char *__gen_e_acsl_strdup(char const *s)
+{
+  __e_acsl_contract_t *__gen_e_acsl_contract;
+  char *__retres;
+  __gen_e_acsl_contract = __e_acsl_contract_init((size_t)2);
+  __retres = strdup(s);
+  {
+    int __gen_e_acsl_assumes_value;
+    __gen_e_acsl_assumes_value = __e_acsl_contract_get_behavior_assumes
+    ((__e_acsl_contract_t const *)__gen_e_acsl_contract,(size_t)1);
+    if (__gen_e_acsl_assumes_value) __e_acsl_assert(__retres == (char *)0,1,
+                                                    "Postcondition","strdup",
+                                                    "no_allocation: result_null: \\result == \\null",
+                                                    "FRAMAC_SHARE/libc/string.h",
+                                                    485);
+    __e_acsl_contract_clean(__gen_e_acsl_contract);
+    return __retres;
+  }
+}
+
+/*@ requires valid_string_s1: valid_read_nstring(s1, n);
+    requires valid_string_s2: valid_read_nstring(s2, n);
+    ensures acsl_c_equiv: \result ≡ strncmp(\old(s1), \old(s2), \old(n));
+    assigns \result;
+    assigns \result
+      \from (indirect: *(s1 + (0 .. n - 1))),
+            (indirect: *(s2 + (0 .. n - 1))), (indirect: n);
+ */
+int __gen_e_acsl_strncmp(char const *s1, char const *s2, size_t n)
+{
+  int __retres;
+  __retres = __e_acsl_builtin_strncmp(s1,s2,n);
+  return __retres;
+}
+
+/*@ requires valid_string_s1: valid_read_string(s1);
+    requires valid_string_s2: valid_read_string(s2);
+    ensures acsl_c_equiv: \result ≡ strcmp(\old(s1), \old(s2));
+    assigns \result;
+    assigns \result
+      \from (indirect: *(s1 + (0 ..))), (indirect: *(s2 + (0 ..)));
+ */
+int __gen_e_acsl_strcmp(char const *s1, char const *s2)
+{
+  int __retres;
+  __retres = __e_acsl_builtin_strcmp(s1,s2);
+  return __retres;
+}
+
+/*@ ensures
+      result_ok_child_or_error:
+        \result ≡ 0 ∨ \result > 0 ∨ \result ≡ -1;
+    assigns \result;
+    assigns \result \from \nothing;
+ */
+pid_t __gen_e_acsl_fork(void)
+{
+  pid_t __retres;
+  __retres = fork();
+  {
+    int __gen_e_acsl_or;
+    int __gen_e_acsl_or_2;
+    if (__retres == 0) __gen_e_acsl_or = 1;
+    else __gen_e_acsl_or = __retres > 0;
+    if (__gen_e_acsl_or) __gen_e_acsl_or_2 = 1;
+    else __gen_e_acsl_or_2 = __retres == -1;
+    __e_acsl_assert(__gen_e_acsl_or_2,1,"Postcondition","fork",
+                    "result_ok_child_or_error: \\result == 0 || \\result > 0 || \\result == -1",
+                    "FRAMAC_SHARE/libc/unistd.h",859);
+    return __retres;
+  }
+}
+
+/*@ ensures result_ok_or_error: \result ≡ -1 ∨ \result ≥ 0;
+    ensures
+      initialization: stat_loc_init_on_success:
+        \result ≥ 0 ∧ \old(stat_loc) ≢ \null ⇒
+        \initialized(\old(stat_loc));
+    assigns \result, *stat_loc;
+    assigns \result \from (indirect: options);
+    assigns *stat_loc \from (indirect: options);
+    
+    behavior stat_loc_null:
+      assumes stat_loc_null: stat_loc ≡ \null;
+      assigns \result;
+      assigns \result \from \nothing;
+    
+    behavior stat_loc_non_null:
+      assumes stat_loc_non_null: stat_loc ≢ \null;
+      requires valid_stat_loc: \valid(stat_loc);
+ */
+pid_t __gen_e_acsl_waitpid(pid_t pid, int *stat_loc, int options)
+{
+  int *__gen_e_acsl_at_2;
+  int *__gen_e_acsl_at;
+  __e_acsl_contract_t *__gen_e_acsl_contract;
+  pid_t __retres;
+  {
+    int __gen_e_acsl_assumes_value;
+    __e_acsl_store_block((void *)(& stat_loc),(size_t)8);
+    __gen_e_acsl_contract = __e_acsl_contract_init((size_t)2);
+    __e_acsl_contract_set_behavior_assumes(__gen_e_acsl_contract,(size_t)0,
+                                           stat_loc == (int *)0);
+    __e_acsl_contract_set_behavior_assumes(__gen_e_acsl_contract,(size_t)1,
+                                           stat_loc != (int *)0);
+    __gen_e_acsl_assumes_value = __e_acsl_contract_get_behavior_assumes
+    ((__e_acsl_contract_t const *)__gen_e_acsl_contract,(size_t)1);
+    if (__gen_e_acsl_assumes_value) {
+      int __gen_e_acsl_valid;
+      __gen_e_acsl_valid = __e_acsl_valid((void *)stat_loc,sizeof(int),
+                                          (void *)stat_loc,
+                                          (void *)(& stat_loc));
+      __e_acsl_assert(__gen_e_acsl_valid,1,"Precondition","waitpid",
+                      "stat_loc_non_null: valid_stat_loc: \\valid(stat_loc)",
+                      "FRAMAC_SHARE/libc/sys/wait.h",92);
+    }
+  }
+  __gen_e_acsl_at_2 = stat_loc;
+  __gen_e_acsl_at = stat_loc;
+  __retres = waitpid(pid,stat_loc,options);
+  {
+    int __gen_e_acsl_or;
+    int __gen_e_acsl_and;
+    int __gen_e_acsl_implies;
+    if (__retres == -1) __gen_e_acsl_or = 1;
+    else __gen_e_acsl_or = __retres >= 0;
+    __e_acsl_assert(__gen_e_acsl_or,1,"Postcondition","waitpid",
+                    "result_ok_or_error: \\result == -1 || \\result >= 0",
+                    "FRAMAC_SHARE/libc/sys/wait.h",84);
+    if (__retres >= 0) __gen_e_acsl_and = __gen_e_acsl_at != (int *)0;
+    else __gen_e_acsl_and = 0;
+    if (! __gen_e_acsl_and) __gen_e_acsl_implies = 1;
+    else {
+      int __gen_e_acsl_initialized;
+      __gen_e_acsl_initialized = __e_acsl_initialized((void *)__gen_e_acsl_at_2,
+                                                      sizeof(int));
+      __gen_e_acsl_implies = __gen_e_acsl_initialized;
+    }
+    __e_acsl_assert(__gen_e_acsl_implies,1,"Postcondition","waitpid",
+                    "initialization: stat_loc_init_on_success:\n  \\result >= 0 && \\old(stat_loc) != \\null ==> \\initialized(\\old(stat_loc))",
+                    "FRAMAC_SHARE/libc/sys/wait.h",86);
+    __e_acsl_contract_clean(__gen_e_acsl_contract);
+    __e_acsl_delete_block((void *)(& stat_loc));
+    return __retres;
+  }
+}
+
+/*@ exits status: \exit_status ≡ \old(status);
+    ensures never_terminates: \false;
+    
+    assigns \exit_status \from status;
+ */
+void __gen_e_acsl_exit(int status)
+{
+  exit(status);
+  __e_acsl_assert(0,1,"Postcondition","exit","never_terminates: \\false",
+                  "FRAMAC_SHARE/libc/stdlib.h",473);
+  return;
+}
+
+/*@ exits status: \exit_status ≢ 0;
+    ensures never_terminates: \false;
+    
+    assigns \exit_status \from \nothing;
+ */
+void __gen_e_acsl_abort(void)
+{
+  abort();
+  __e_acsl_assert(0,1,"Postcondition","abort","never_terminates: \\false",
+                  "FRAMAC_SHARE/libc/stdlib.h",460);
   return;
 }
 
@@ -56,177 +359,165 @@ void __e_acsl_globals_init(void)
   static char __e_acsl_already_run = 0;
   if (! __e_acsl_already_run) {
     __e_acsl_already_run = 1;
-    __gen_e_acsl_literal_string_28 = "tests/builtin/strcmp.c:87";
-    __e_acsl_store_block((void *)__gen_e_acsl_literal_string_28,
+    __gen_e_acsl_literal_string_32 = "tests/builtin/strcmp.c:87";
+    __e_acsl_store_block((void *)__gen_e_acsl_literal_string_32,
                          sizeof("tests/builtin/strcmp.c:87"));
+    __e_acsl_full_init((void *)__gen_e_acsl_literal_string_32);
+    __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_32);
+    __gen_e_acsl_literal_string_31 = "tests/builtin/strcmp.c:85";
+    __e_acsl_store_block((void *)__gen_e_acsl_literal_string_31,
+                         sizeof("tests/builtin/strcmp.c:85"));
+    __e_acsl_full_init((void *)__gen_e_acsl_literal_string_31);
+    __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_31);
+    __gen_e_acsl_literal_string_30 = "tests/builtin/strcmp.c:84";
+    __e_acsl_store_block((void *)__gen_e_acsl_literal_string_30,
+                         sizeof("tests/builtin/strcmp.c:84"));
+    __e_acsl_full_init((void *)__gen_e_acsl_literal_string_30);
+    __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_30);
+    __gen_e_acsl_literal_string_29 = "tests/builtin/strcmp.c:82";
+    __e_acsl_store_block((void *)__gen_e_acsl_literal_string_29,
+                         sizeof("tests/builtin/strcmp.c:82"));
+    __e_acsl_full_init((void *)__gen_e_acsl_literal_string_29);
+    __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_29);
+    __gen_e_acsl_literal_string_28 = "tests/builtin/strcmp.c:79";
+    __e_acsl_store_block((void *)__gen_e_acsl_literal_string_28,
+                         sizeof("tests/builtin/strcmp.c:79"));
     __e_acsl_full_init((void *)__gen_e_acsl_literal_string_28);
     __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_28);
-    __gen_e_acsl_literal_string_27 = "tests/builtin/strcmp.c:85";
+    __gen_e_acsl_literal_string_27 = "tests/builtin/strcmp.c:77";
     __e_acsl_store_block((void *)__gen_e_acsl_literal_string_27,
-                         sizeof("tests/builtin/strcmp.c:85"));
+                         sizeof("tests/builtin/strcmp.c:77"));
     __e_acsl_full_init((void *)__gen_e_acsl_literal_string_27);
     __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_27);
-    __gen_e_acsl_literal_string_26 = "tests/builtin/strcmp.c:84";
+    __gen_e_acsl_literal_string_26 = "tests/builtin/strcmp.c:75";
     __e_acsl_store_block((void *)__gen_e_acsl_literal_string_26,
-                         sizeof("tests/builtin/strcmp.c:84"));
+                         sizeof("tests/builtin/strcmp.c:75"));
     __e_acsl_full_init((void *)__gen_e_acsl_literal_string_26);
     __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_26);
-    __gen_e_acsl_literal_string_25 = "tests/builtin/strcmp.c:82";
+    __gen_e_acsl_literal_string_25 = "tests/builtin/strcmp.c:73";
     __e_acsl_store_block((void *)__gen_e_acsl_literal_string_25,
-                         sizeof("tests/builtin/strcmp.c:82"));
+                         sizeof("tests/builtin/strcmp.c:73"));
     __e_acsl_full_init((void *)__gen_e_acsl_literal_string_25);
     __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_25);
-    __gen_e_acsl_literal_string_24 = "tests/builtin/strcmp.c:79";
-    __e_acsl_store_block((void *)__gen_e_acsl_literal_string_24,
-                         sizeof("tests/builtin/strcmp.c:79"));
-    __e_acsl_full_init((void *)__gen_e_acsl_literal_string_24);
-    __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_24);
-    __gen_e_acsl_literal_string_23 = "tests/builtin/strcmp.c:77";
+    __gen_e_acsl_literal_string_23 = "tests/builtin/strcmp.c:69";
     __e_acsl_store_block((void *)__gen_e_acsl_literal_string_23,
-                         sizeof("tests/builtin/strcmp.c:77"));
+                         sizeof("tests/builtin/strcmp.c:69"));
     __e_acsl_full_init((void *)__gen_e_acsl_literal_string_23);
     __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_23);
-    __gen_e_acsl_literal_string_22 = "tests/builtin/strcmp.c:75";
+    __gen_e_acsl_literal_string_22 = "tests/builtin/strcmp.c:68";
     __e_acsl_store_block((void *)__gen_e_acsl_literal_string_22,
-                         sizeof("tests/builtin/strcmp.c:75"));
+                         sizeof("tests/builtin/strcmp.c:68"));
     __e_acsl_full_init((void *)__gen_e_acsl_literal_string_22);
     __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_22);
-    __gen_e_acsl_literal_string_21 = "tests/builtin/strcmp.c:73";
+    __gen_e_acsl_literal_string_21 = "tests/builtin/strcmp.c:66";
     __e_acsl_store_block((void *)__gen_e_acsl_literal_string_21,
-                         sizeof("tests/builtin/strcmp.c:73"));
+                         sizeof("tests/builtin/strcmp.c:66"));
     __e_acsl_full_init((void *)__gen_e_acsl_literal_string_21);
     __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_21);
-    __gen_e_acsl_literal_string_19 = "tests/builtin/strcmp.c:69";
+    __gen_e_acsl_literal_string_20 = "tests/builtin/strcmp.c:65";
+    __e_acsl_store_block((void *)__gen_e_acsl_literal_string_20,
+                         sizeof("tests/builtin/strcmp.c:65"));
+    __e_acsl_full_init((void *)__gen_e_acsl_literal_string_20);
+    __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_20);
+    __gen_e_acsl_literal_string_19 = "tests/builtin/strcmp.c:64";
     __e_acsl_store_block((void *)__gen_e_acsl_literal_string_19,
-                         sizeof("tests/builtin/strcmp.c:69"));
+                         sizeof("tests/builtin/strcmp.c:64"));
     __e_acsl_full_init((void *)__gen_e_acsl_literal_string_19);
     __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_19);
-    __gen_e_acsl_literal_string_18 = "tests/builtin/strcmp.c:68";
+    __gen_e_acsl_literal_string_18 = "tests/builtin/strcmp.c:52";
     __e_acsl_store_block((void *)__gen_e_acsl_literal_string_18,
-                         sizeof("tests/builtin/strcmp.c:68"));
+                         sizeof("tests/builtin/strcmp.c:52"));
     __e_acsl_full_init((void *)__gen_e_acsl_literal_string_18);
     __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_18);
-    __gen_e_acsl_literal_string_17 = "tests/builtin/strcmp.c:66";
+    __gen_e_acsl_literal_string_17 = "tests/builtin/strcmp.c:51";
     __e_acsl_store_block((void *)__gen_e_acsl_literal_string_17,
-                         sizeof("tests/builtin/strcmp.c:66"));
+                         sizeof("tests/builtin/strcmp.c:51"));
     __e_acsl_full_init((void *)__gen_e_acsl_literal_string_17);
     __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_17);
-    __gen_e_acsl_literal_string_16 = "tests/builtin/strcmp.c:65";
+    __gen_e_acsl_literal_string_16 = "tests/builtin/strcmp.c:46";
     __e_acsl_store_block((void *)__gen_e_acsl_literal_string_16,
-                         sizeof("tests/builtin/strcmp.c:65"));
+                         sizeof("tests/builtin/strcmp.c:46"));
     __e_acsl_full_init((void *)__gen_e_acsl_literal_string_16);
     __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_16);
-    __gen_e_acsl_literal_string_15 = "tests/builtin/strcmp.c:64";
+    __gen_e_acsl_literal_string_15 = "tests/builtin/strcmp.c:45";
     __e_acsl_store_block((void *)__gen_e_acsl_literal_string_15,
-                         sizeof("tests/builtin/strcmp.c:64"));
+                         sizeof("tests/builtin/strcmp.c:45"));
     __e_acsl_full_init((void *)__gen_e_acsl_literal_string_15);
     __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_15);
-    __gen_e_acsl_literal_string_14 = "tests/builtin/strcmp.c:52";
+    __gen_e_acsl_literal_string_14 = "tests/builtin/strcmp.c:43";
     __e_acsl_store_block((void *)__gen_e_acsl_literal_string_14,
-                         sizeof("tests/builtin/strcmp.c:52"));
+                         sizeof("tests/builtin/strcmp.c:43"));
     __e_acsl_full_init((void *)__gen_e_acsl_literal_string_14);
     __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_14);
-    __gen_e_acsl_literal_string_13 = "tests/builtin/strcmp.c:51";
+    __gen_e_acsl_literal_string_13 = "tests/builtin/strcmp.c:41";
     __e_acsl_store_block((void *)__gen_e_acsl_literal_string_13,
-                         sizeof("tests/builtin/strcmp.c:51"));
+                         sizeof("tests/builtin/strcmp.c:41"));
     __e_acsl_full_init((void *)__gen_e_acsl_literal_string_13);
     __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_13);
-    __gen_e_acsl_literal_string_12 = "tests/builtin/strcmp.c:46";
+    __gen_e_acsl_literal_string_12 = "tests/builtin/strcmp.c:39";
     __e_acsl_store_block((void *)__gen_e_acsl_literal_string_12,
-                         sizeof("tests/builtin/strcmp.c:46"));
+                         sizeof("tests/builtin/strcmp.c:39"));
     __e_acsl_full_init((void *)__gen_e_acsl_literal_string_12);
     __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_12);
-    __gen_e_acsl_literal_string_11 = "tests/builtin/strcmp.c:45";
+    __gen_e_acsl_literal_string_11 = "tests/builtin/strcmp.c:37";
     __e_acsl_store_block((void *)__gen_e_acsl_literal_string_11,
-                         sizeof("tests/builtin/strcmp.c:45"));
+                         sizeof("tests/builtin/strcmp.c:37"));
     __e_acsl_full_init((void *)__gen_e_acsl_literal_string_11);
     __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_11);
-    __gen_e_acsl_literal_string_10 = "tests/builtin/strcmp.c:43";
+    __gen_e_acsl_literal_string_10 = "tests/builtin/strcmp.c:34";
     __e_acsl_store_block((void *)__gen_e_acsl_literal_string_10,
-                         sizeof("tests/builtin/strcmp.c:43"));
+                         sizeof("tests/builtin/strcmp.c:34"));
     __e_acsl_full_init((void *)__gen_e_acsl_literal_string_10);
     __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_10);
-    __gen_e_acsl_literal_string_9 = "tests/builtin/strcmp.c:41";
+    __gen_e_acsl_literal_string_9 = "tests/builtin/strcmp.c:33";
     __e_acsl_store_block((void *)__gen_e_acsl_literal_string_9,
-                         sizeof("tests/builtin/strcmp.c:41"));
+                         sizeof("tests/builtin/strcmp.c:33"));
     __e_acsl_full_init((void *)__gen_e_acsl_literal_string_9);
     __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_9);
-    __gen_e_acsl_literal_string_8 = "tests/builtin/strcmp.c:39";
+    __gen_e_acsl_literal_string_8 = "tests/builtin/strcmp.c:32";
     __e_acsl_store_block((void *)__gen_e_acsl_literal_string_8,
-                         sizeof("tests/builtin/strcmp.c:39"));
+                         sizeof("tests/builtin/strcmp.c:32"));
     __e_acsl_full_init((void *)__gen_e_acsl_literal_string_8);
     __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_8);
-    __gen_e_acsl_literal_string_7 = "tests/builtin/strcmp.c:37";
+    __gen_e_acsl_literal_string_7 = "comparison failure: %d == %d\n";
     __e_acsl_store_block((void *)__gen_e_acsl_literal_string_7,
-                         sizeof("tests/builtin/strcmp.c:37"));
+                         sizeof("comparison failure: %d == %d\n"));
     __e_acsl_full_init((void *)__gen_e_acsl_literal_string_7);
     __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_7);
-    __gen_e_acsl_literal_string_6 = "tests/builtin/strcmp.c:34";
-    __e_acsl_store_block((void *)__gen_e_acsl_literal_string_6,
-                         sizeof("tests/builtin/strcmp.c:34"));
+    __gen_e_acsl_literal_string_24 = "comparison failure: %d != %d\n";
+    __e_acsl_store_block((void *)__gen_e_acsl_literal_string_24,
+                         sizeof("comparison failure: %d != %d\n"));
+    __e_acsl_full_init((void *)__gen_e_acsl_literal_string_24);
+    __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_24);
+    __gen_e_acsl_literal_string_6 = "abc";
+    __e_acsl_store_block((void *)__gen_e_acsl_literal_string_6,sizeof("abc"));
     __e_acsl_full_init((void *)__gen_e_acsl_literal_string_6);
     __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_6);
-    __gen_e_acsl_literal_string_5 = "tests/builtin/strcmp.c:33";
-    __e_acsl_store_block((void *)__gen_e_acsl_literal_string_5,
-                         sizeof("tests/builtin/strcmp.c:33"));
-    __e_acsl_full_init((void *)__gen_e_acsl_literal_string_5);
-    __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_5);
-    __gen_e_acsl_literal_string_3 = "tests/builtin/strcmp.c:32";
-    __e_acsl_store_block((void *)__gen_e_acsl_literal_string_3,
-                         sizeof("tests/builtin/strcmp.c:32"));
-    __e_acsl_full_init((void *)__gen_e_acsl_literal_string_3);
-    __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_3);
-    __gen_e_acsl_literal_string_2 = "comparison failure: %d == %d\n";
+    __gen_e_acsl_literal_string = "TEST %d: ";
+    __e_acsl_store_block((void *)__gen_e_acsl_literal_string,
+                         sizeof("TEST %d: "));
+    __e_acsl_full_init((void *)__gen_e_acsl_literal_string);
+    __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string);
+    __gen_e_acsl_literal_string_2 = "OK: Expected signal at %s\n";
     __e_acsl_store_block((void *)__gen_e_acsl_literal_string_2,
-                         sizeof("comparison failure: %d == %d\n"));
+                         sizeof("OK: Expected signal at %s\n"));
     __e_acsl_full_init((void *)__gen_e_acsl_literal_string_2);
     __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_2);
-    __gen_e_acsl_literal_string_20 = "comparison failure: %d != %d\n";
-    __e_acsl_store_block((void *)__gen_e_acsl_literal_string_20,
-                         sizeof("comparison failure: %d != %d\n"));
-    __e_acsl_full_init((void *)__gen_e_acsl_literal_string_20);
-    __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_20);
-    __gen_e_acsl_literal_string = "abc";
-    __e_acsl_store_block((void *)__gen_e_acsl_literal_string,sizeof("abc"));
-    __e_acsl_full_init((void *)__gen_e_acsl_literal_string);
-    __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string);
-    __gen_e_acsl_literal_string_4 = "FAIL: Unexpected value return from test at %s\n";
+    __gen_e_acsl_literal_string_3 = "OK: Expected execution at %s\n";
+    __e_acsl_store_block((void *)__gen_e_acsl_literal_string_3,
+                         sizeof("OK: Expected execution at %s\n"));
+    __e_acsl_full_init((void *)__gen_e_acsl_literal_string_3);
+    __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_3);
+    __gen_e_acsl_literal_string_5 = "FAIL: Unexpected signal at %s\n";
+    __e_acsl_store_block((void *)__gen_e_acsl_literal_string_5,
+                         sizeof("FAIL: Unexpected signal at %s\n"));
+    __e_acsl_full_init((void *)__gen_e_acsl_literal_string_5);
+    __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_5);
+    __gen_e_acsl_literal_string_4 = "FAIL: Unexpected execution at %s\n";
     __e_acsl_store_block((void *)__gen_e_acsl_literal_string_4,
-                         sizeof("FAIL: Unexpected value return from test at %s\n"));
+                         sizeof("FAIL: Unexpected execution at %s\n"));
     __e_acsl_full_init((void *)__gen_e_acsl_literal_string_4);
     __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_4);
-    __e_acsl_store_block((void *)(& __gen_e_acsl_strdup),(size_t)1);
-    __e_acsl_full_init((void *)(& __gen_e_acsl_strdup));
-    __e_acsl_store_block((void *)(& __gen_e_acsl_strncmp),(size_t)1);
-    __e_acsl_full_init((void *)(& __gen_e_acsl_strncmp));
-    __e_acsl_store_block((void *)(& __gen_e_acsl_strcmp),(size_t)1);
-    __e_acsl_full_init((void *)(& __gen_e_acsl_strcmp));
-    __e_acsl_store_block((void *)(& __gen_e_acsl_exit),(size_t)1);
-    __e_acsl_full_init((void *)(& __gen_e_acsl_exit));
-    __e_acsl_store_block((void *)(& __gen_e_acsl_abort),(size_t)1);
-    __e_acsl_full_init((void *)(& __gen_e_acsl_abort));
-    __e_acsl_store_block((void *)(& fail_ncomp),(size_t)1);
-    __e_acsl_full_init((void *)(& fail_ncomp));
-    __e_acsl_store_block((void *)(& __fc_p_strerror),(size_t)8);
-    __e_acsl_full_init((void *)(& __fc_p_strerror));
-    __e_acsl_store_block((void *)(strerror),(size_t)64);
-    __e_acsl_full_init((void *)(& strerror));
-    __e_acsl_store_block((void *)(& __fc_strtok_ptr),(size_t)8);
-    __e_acsl_full_init((void *)(& __fc_strtok_ptr));
-    __e_acsl_store_block((void *)(& __fc_p_fopen),(size_t)8);
-    __e_acsl_full_init((void *)(& __fc_p_fopen));
-    __e_acsl_store_block((void *)(__fc_fopen),(size_t)128);
-    __e_acsl_full_init((void *)(& __fc_fopen));
-    __e_acsl_store_block((void *)(& stderr),(size_t)8);
-    __e_acsl_full_init((void *)(& stderr));
-    __e_acsl_store_block((void *)(& __fc_p_random48_counter),(size_t)8);
-    __e_acsl_full_init((void *)(& __fc_p_random48_counter));
-    __e_acsl_store_block((void *)(random48_counter),(size_t)6);
-    __e_acsl_full_init((void *)(& random48_counter));
-    __e_acsl_store_block((void *)(& __fc_random48_init),(size_t)4);
-    __e_acsl_full_init((void *)(& __fc_random48_init));
-    __e_acsl_store_block((void *)(& __fc_rand_max),(size_t)8);
-    __e_acsl_full_init((void *)(& __fc_rand_max));
   }
   return;
 }
@@ -237,1172 +528,473 @@ int main(int argc, char const **argv)
   int res;
   __e_acsl_memory_init(& argc,(char ***)(& argv),(size_t)8);
   __e_acsl_globals_init();
-  __e_acsl_store_block((void *)(& res),(size_t)4);
-  __e_acsl_store_block((void *)(& __retres),(size_t)4);
-  char const *cl = __gen_e_acsl_literal_string;
-  __e_acsl_store_block((void *)(& cl),(size_t)8);
-  __e_acsl_full_init((void *)(& cl));
-  char const *cr = __gen_e_acsl_literal_string;
-  __e_acsl_store_block((void *)(& cr),(size_t)8);
-  __e_acsl_full_init((void *)(& cr));
+  char const *cl = __gen_e_acsl_literal_string_6;
+  char const *cr = __gen_e_acsl_literal_string_6;
   char al[4] = {(char)'a', (char)'b', (char)'c', (char)'\000'};
-  __e_acsl_store_block((void *)(al),(size_t)4);
-  __e_acsl_full_init((void *)(& al));
   char ar[4] = {(char)'a', (char)'b', (char)'c', (char)'\000'};
-  __e_acsl_store_block((void *)(ar),(size_t)4);
-  __e_acsl_full_init((void *)(& ar));
-  char *dl = __gen_e_acsl_strdup(__gen_e_acsl_literal_string);
-  __e_acsl_store_block((void *)(& dl),(size_t)8);
-  __e_acsl_full_init((void *)(& dl));
-  char *dr = __gen_e_acsl_strdup(__gen_e_acsl_literal_string);
-  __e_acsl_store_block((void *)(& dr),(size_t)8);
-  __e_acsl_full_init((void *)(& dr));
+  char *dl = __gen_e_acsl_strdup(__gen_e_acsl_literal_string_6);
+  char *dr = __gen_e_acsl_strdup(__gen_e_acsl_literal_string_6);
   {
-    int tmp_2;
-    __e_acsl_store_block((void *)(& tmp_2),(size_t)4);
-    sigjmp_buf *jmp_ctxt = get_jmp_ctxt();
-    __e_acsl_store_block((void *)(& jmp_ctxt),(size_t)8);
-    __e_acsl_full_init((void *)(& jmp_ctxt));
-    __e_acsl_full_init((void *)(& tmp_2));
-    /*@ assert Eva: mem_access: \valid_read(jmp_ctxt); */
-    tmp_2 = sigsetjmp(*jmp_ctxt,1);
-    switch (tmp_2) {
-      case 0:
-      {
-        int tmp_3;
-        int tmp_4;
-        __e_acsl_store_block((void *)(& tmp_4),(size_t)4);
-        __e_acsl_store_block((void *)(& tmp_3),(size_t)4);
-        set_handler();
-        __e_acsl_full_init((void *)(& tmp_3));
-        tmp_3 = __gen_e_acsl_strcmp(cl,cr);
-        __e_acsl_full_init((void *)(& tmp_4));
-        tmp_4 = __gen_e_acsl_strcmp(cl,cr);
-        fail_ncomp(tmp_4 != 0,(char *)__gen_e_acsl_literal_string_2,tmp_3,0);
-        test_successful();
-        __e_acsl_delete_block((void *)(& tmp_3));
-        __e_acsl_delete_block((void *)(& tmp_4));
-        break;
-        __e_acsl_delete_block((void *)(& tmp_4));
-        __e_acsl_delete_block((void *)(& tmp_3));
-      }
-      case 1: {
-                signal_eval(0,0,__gen_e_acsl_literal_string_3);
-                break;
-              }
-      case 2: {
-                signal_eval(1,0,__gen_e_acsl_literal_string_3);
-                break;
-              }
-      default:
-      {
-        printf(__gen_e_acsl_literal_string_4,__gen_e_acsl_literal_string_3);
-        __gen_e_acsl_exit(3);
-      }
+    pid_t pid = __gen_e_acsl_fork();
+    if (! pid) {
+      int tmp_2;
+      int tmp_3;
+      tmp_2 = __gen_e_acsl_strcmp(cl,cr);
+      tmp_3 = __gen_e_acsl_strcmp(cl,cr);
+      fail_ncomp(tmp_3 != 0,(char *)__gen_e_acsl_literal_string_7,tmp_2,0);
+      __gen_e_acsl_exit(0);
+    }
+    else {
+      int process_status;
+      __e_acsl_store_block((void *)(& process_status),(size_t)4);
+      __gen_e_acsl_waitpid(pid,& process_status,0);
+      signal_eval(process_status,0,__gen_e_acsl_literal_string_8);
+      __e_acsl_delete_block((void *)(& process_status));
     }
-    __e_acsl_delete_block((void *)(& tmp_2));
-    __e_acsl_delete_block((void *)(& jmp_ctxt));
   }
   {
-    int tmp_6;
-    __e_acsl_store_block((void *)(& tmp_6),(size_t)4);
-    sigjmp_buf *jmp_ctxt_0 = get_jmp_ctxt();
-    __e_acsl_store_block((void *)(& jmp_ctxt_0),(size_t)8);
-    __e_acsl_full_init((void *)(& jmp_ctxt_0));
-    __e_acsl_full_init((void *)(& tmp_6));
-    tmp_6 = sigsetjmp(*jmp_ctxt_0,1);
-    switch (tmp_6) {
-      case 0:
-      {
-        int tmp_7;
-        int tmp_8;
-        __e_acsl_store_block((void *)(& tmp_8),(size_t)4);
-        __e_acsl_store_block((void *)(& tmp_7),(size_t)4);
-        set_handler();
-        __e_acsl_full_init((void *)(& tmp_7));
-        tmp_7 = __gen_e_acsl_strcmp((char const *)(al),(char const *)(ar));
-        __e_acsl_full_init((void *)(& tmp_8));
-        tmp_8 = __gen_e_acsl_strcmp((char const *)(al),(char const *)(ar));
-        fail_ncomp(tmp_8 != 0,(char *)__gen_e_acsl_literal_string_2,tmp_7,0);
-        test_successful();
-        __e_acsl_delete_block((void *)(& tmp_7));
-        __e_acsl_delete_block((void *)(& tmp_8));
-        break;
-        __e_acsl_delete_block((void *)(& tmp_8));
-        __e_acsl_delete_block((void *)(& tmp_7));
-      }
-      case 1: {
-                signal_eval(0,0,__gen_e_acsl_literal_string_5);
-                break;
-              }
-      case 2: {
-                signal_eval(1,0,__gen_e_acsl_literal_string_5);
-                break;
-              }
-      default:
-      {
-        printf(__gen_e_acsl_literal_string_4,__gen_e_acsl_literal_string_5);
-        __gen_e_acsl_exit(3);
-      }
+    pid_t pid_0 = __gen_e_acsl_fork();
+    if (! pid_0) {
+      int tmp_5;
+      int tmp_6;
+      tmp_5 = __gen_e_acsl_strcmp((char const *)(al),(char const *)(ar));
+      tmp_6 = __gen_e_acsl_strcmp((char const *)(al),(char const *)(ar));
+      fail_ncomp(tmp_6 != 0,(char *)__gen_e_acsl_literal_string_7,tmp_5,0);
+      __gen_e_acsl_exit(0);
+    }
+    else {
+      int process_status_0;
+      __e_acsl_store_block((void *)(& process_status_0),(size_t)4);
+      __gen_e_acsl_waitpid(pid_0,& process_status_0,0);
+      signal_eval(process_status_0,0,__gen_e_acsl_literal_string_9);
+      __e_acsl_delete_block((void *)(& process_status_0));
     }
-    __e_acsl_delete_block((void *)(& tmp_6));
-    __e_acsl_delete_block((void *)(& jmp_ctxt_0));
   }
   {
-    int tmp_10;
-    __e_acsl_store_block((void *)(& tmp_10),(size_t)4);
-    sigjmp_buf *jmp_ctxt_1 = get_jmp_ctxt();
-    __e_acsl_store_block((void *)(& jmp_ctxt_1),(size_t)8);
-    __e_acsl_full_init((void *)(& jmp_ctxt_1));
-    __e_acsl_full_init((void *)(& tmp_10));
-    tmp_10 = sigsetjmp(*jmp_ctxt_1,1);
-    switch (tmp_10) {
-      case 0:
-      {
-        int tmp_11;
-        int tmp_12;
-        __e_acsl_store_block((void *)(& tmp_12),(size_t)4);
-        __e_acsl_store_block((void *)(& tmp_11),(size_t)4);
-        set_handler();
-        __e_acsl_full_init((void *)(& tmp_11));
-        tmp_11 = __gen_e_acsl_strcmp((char const *)dl,(char const *)dr);
-        __e_acsl_full_init((void *)(& tmp_12));
-        tmp_12 = __gen_e_acsl_strcmp((char const *)dl,(char const *)dr);
-        fail_ncomp(tmp_12 != 0,(char *)__gen_e_acsl_literal_string_2,tmp_11,
-                   0);
-        test_successful();
-        __e_acsl_delete_block((void *)(& tmp_11));
-        __e_acsl_delete_block((void *)(& tmp_12));
-        break;
-        __e_acsl_delete_block((void *)(& tmp_12));
-        __e_acsl_delete_block((void *)(& tmp_11));
-      }
-      case 1: {
-                signal_eval(0,0,__gen_e_acsl_literal_string_6);
-                break;
-              }
-      case 2: {
-                signal_eval(1,0,__gen_e_acsl_literal_string_6);
-                break;
-              }
-      default:
-      {
-        printf(__gen_e_acsl_literal_string_4,__gen_e_acsl_literal_string_6);
-        __gen_e_acsl_exit(3);
-      }
+    pid_t pid_1 = __gen_e_acsl_fork();
+    if (! pid_1) {
+      int tmp_8;
+      int tmp_9;
+      tmp_8 = __gen_e_acsl_strcmp((char const *)dl,(char const *)dr);
+      tmp_9 = __gen_e_acsl_strcmp((char const *)dl,(char const *)dr);
+      fail_ncomp(tmp_9 != 0,(char *)__gen_e_acsl_literal_string_7,tmp_8,0);
+      __gen_e_acsl_exit(0);
+    }
+    else {
+      int process_status_1;
+      __e_acsl_store_block((void *)(& process_status_1),(size_t)4);
+      __gen_e_acsl_waitpid(pid_1,& process_status_1,0);
+      signal_eval(process_status_1,0,__gen_e_acsl_literal_string_10);
+      __e_acsl_delete_block((void *)(& process_status_1));
     }
-    __e_acsl_delete_block((void *)(& tmp_10));
-    __e_acsl_delete_block((void *)(& jmp_ctxt_1));
   }
-  __e_acsl_initialize((void *)(& al[3]),sizeof(char));
   al[3] = (char)'a';
   {
-    int tmp_14;
-    __e_acsl_store_block((void *)(& tmp_14),(size_t)4);
-    sigjmp_buf *jmp_ctxt_2 = get_jmp_ctxt();
-    __e_acsl_store_block((void *)(& jmp_ctxt_2),(size_t)8);
-    __e_acsl_full_init((void *)(& jmp_ctxt_2));
-    __e_acsl_full_init((void *)(& tmp_14));
-    tmp_14 = sigsetjmp(*jmp_ctxt_2,1);
-    switch (tmp_14) {
-      case 0:
-      {
-        int tmp_15;
-        int tmp_16;
-        __e_acsl_store_block((void *)(& tmp_16),(size_t)4);
-        __e_acsl_store_block((void *)(& tmp_15),(size_t)4);
-        set_handler();
-        __e_acsl_full_init((void *)(& tmp_15));
-        tmp_15 = __gen_e_acsl_strcmp((char const *)(al),(char const *)(ar));
-        __e_acsl_full_init((void *)(& tmp_16));
-        tmp_16 = __gen_e_acsl_strcmp((char const *)(al),(char const *)(ar));
-        fail_ncomp(tmp_16 != 0,(char *)__gen_e_acsl_literal_string_2,tmp_15,
-                   0);
-        test_successful();
-        __e_acsl_delete_block((void *)(& tmp_15));
-        __e_acsl_delete_block((void *)(& tmp_16));
-        break;
-        __e_acsl_delete_block((void *)(& tmp_16));
-        __e_acsl_delete_block((void *)(& tmp_15));
-      }
-      case 1: {
-                signal_eval(0,1,__gen_e_acsl_literal_string_7);
-                break;
-              }
-      case 2: {
-                signal_eval(1,1,__gen_e_acsl_literal_string_7);
-                break;
-              }
-      default:
-      {
-        printf(__gen_e_acsl_literal_string_4,__gen_e_acsl_literal_string_7);
-        __gen_e_acsl_exit(3);
-      }
+    pid_t pid_2 = __gen_e_acsl_fork();
+    if (! pid_2) {
+      int tmp_11;
+      int tmp_12;
+      tmp_11 = __gen_e_acsl_strcmp((char const *)(al),(char const *)(ar));
+      tmp_12 = __gen_e_acsl_strcmp((char const *)(al),(char const *)(ar));
+      fail_ncomp(tmp_12 != 0,(char *)__gen_e_acsl_literal_string_7,tmp_11,0);
+      __gen_e_acsl_exit(0);
+    }
+    else {
+      int process_status_2;
+      __e_acsl_store_block((void *)(& process_status_2),(size_t)4);
+      __gen_e_acsl_waitpid(pid_2,& process_status_2,0);
+      signal_eval(process_status_2,1,__gen_e_acsl_literal_string_11);
+      __e_acsl_delete_block((void *)(& process_status_2));
     }
-    __e_acsl_delete_block((void *)(& tmp_14));
-    __e_acsl_delete_block((void *)(& jmp_ctxt_2));
   }
-  __e_acsl_initialize((void *)(& ar[3]),sizeof(char));
   ar[3] = (char)'a';
-  __e_acsl_initialize((void *)(& al[3]),sizeof(char));
   al[3] = (char)0;
   {
-    int tmp_18;
-    __e_acsl_store_block((void *)(& tmp_18),(size_t)4);
-    sigjmp_buf *jmp_ctxt_3 = get_jmp_ctxt();
-    __e_acsl_store_block((void *)(& jmp_ctxt_3),(size_t)8);
-    __e_acsl_full_init((void *)(& jmp_ctxt_3));
-    __e_acsl_full_init((void *)(& tmp_18));
-    tmp_18 = sigsetjmp(*jmp_ctxt_3,1);
-    switch (tmp_18) {
-      case 0:
-      {
-        int tmp_19;
-        int tmp_20;
-        __e_acsl_store_block((void *)(& tmp_20),(size_t)4);
-        __e_acsl_store_block((void *)(& tmp_19),(size_t)4);
-        set_handler();
-        __e_acsl_full_init((void *)(& tmp_19));
-        tmp_19 = __gen_e_acsl_strcmp((char const *)(al),(char const *)(ar));
-        __e_acsl_full_init((void *)(& tmp_20));
-        tmp_20 = __gen_e_acsl_strcmp((char const *)(al),(char const *)(ar));
-        fail_ncomp(tmp_20 != 0,(char *)__gen_e_acsl_literal_string_2,tmp_19,
-                   0);
-        test_successful();
-        __e_acsl_delete_block((void *)(& tmp_19));
-        __e_acsl_delete_block((void *)(& tmp_20));
-        break;
-        __e_acsl_delete_block((void *)(& tmp_20));
-        __e_acsl_delete_block((void *)(& tmp_19));
-      }
-      case 1: {
-                signal_eval(0,1,__gen_e_acsl_literal_string_8);
-                break;
-              }
-      case 2: {
-                signal_eval(1,1,__gen_e_acsl_literal_string_8);
-                break;
-              }
-      default:
-      {
-        printf(__gen_e_acsl_literal_string_4,__gen_e_acsl_literal_string_8);
-        __gen_e_acsl_exit(3);
-      }
+    pid_t pid_3 = __gen_e_acsl_fork();
+    if (! pid_3) {
+      int tmp_14;
+      int tmp_15;
+      tmp_14 = __gen_e_acsl_strcmp((char const *)(al),(char const *)(ar));
+      tmp_15 = __gen_e_acsl_strcmp((char const *)(al),(char const *)(ar));
+      fail_ncomp(tmp_15 != 0,(char *)__gen_e_acsl_literal_string_7,tmp_14,0);
+      __gen_e_acsl_exit(0);
+    }
+    else {
+      int process_status_3;
+      __e_acsl_store_block((void *)(& process_status_3),(size_t)4);
+      __gen_e_acsl_waitpid(pid_3,& process_status_3,0);
+      signal_eval(process_status_3,1,__gen_e_acsl_literal_string_12);
+      __e_acsl_delete_block((void *)(& process_status_3));
     }
-    __e_acsl_delete_block((void *)(& tmp_18));
-    __e_acsl_delete_block((void *)(& jmp_ctxt_3));
   }
-  __e_acsl_initialize((void *)(dl + 3),sizeof(char));
   *(dl + 3) = (char)'a';
   {
-    int tmp_22;
-    __e_acsl_store_block((void *)(& tmp_22),(size_t)4);
-    sigjmp_buf *jmp_ctxt_4 = get_jmp_ctxt();
-    __e_acsl_store_block((void *)(& jmp_ctxt_4),(size_t)8);
-    __e_acsl_full_init((void *)(& jmp_ctxt_4));
-    __e_acsl_full_init((void *)(& tmp_22));
-    tmp_22 = sigsetjmp(*jmp_ctxt_4,1);
-    switch (tmp_22) {
-      case 0:
-      {
-        int tmp_23;
-        int tmp_24;
-        __e_acsl_store_block((void *)(& tmp_24),(size_t)4);
-        __e_acsl_store_block((void *)(& tmp_23),(size_t)4);
-        set_handler();
-        __e_acsl_full_init((void *)(& tmp_23));
-        tmp_23 = __gen_e_acsl_strcmp((char const *)dl,(char const *)dr);
-        __e_acsl_full_init((void *)(& tmp_24));
-        tmp_24 = __gen_e_acsl_strcmp((char const *)dl,(char const *)dr);
-        fail_ncomp(tmp_24 != 0,(char *)__gen_e_acsl_literal_string_2,tmp_23,
-                   0);
-        test_successful();
-        __e_acsl_delete_block((void *)(& tmp_23));
-        __e_acsl_delete_block((void *)(& tmp_24));
-        break;
-        __e_acsl_delete_block((void *)(& tmp_24));
-        __e_acsl_delete_block((void *)(& tmp_23));
-      }
-      case 1: {
-                signal_eval(0,1,__gen_e_acsl_literal_string_9);
-                break;
-              }
-      case 2: {
-                signal_eval(1,1,__gen_e_acsl_literal_string_9);
-                break;
-              }
-      default:
-      {
-        printf(__gen_e_acsl_literal_string_4,__gen_e_acsl_literal_string_9);
-        __gen_e_acsl_exit(3);
-      }
+    pid_t pid_4 = __gen_e_acsl_fork();
+    if (! pid_4) {
+      int tmp_17;
+      int tmp_18;
+      tmp_17 = __gen_e_acsl_strcmp((char const *)dl,(char const *)dr);
+      tmp_18 = __gen_e_acsl_strcmp((char const *)dl,(char const *)dr);
+      fail_ncomp(tmp_18 != 0,(char *)__gen_e_acsl_literal_string_7,tmp_17,0);
+      __gen_e_acsl_exit(0);
+    }
+    else {
+      int process_status_4;
+      __e_acsl_store_block((void *)(& process_status_4),(size_t)4);
+      __gen_e_acsl_waitpid(pid_4,& process_status_4,0);
+      signal_eval(process_status_4,1,__gen_e_acsl_literal_string_13);
+      __e_acsl_delete_block((void *)(& process_status_4));
     }
-    __e_acsl_delete_block((void *)(& tmp_22));
-    __e_acsl_delete_block((void *)(& jmp_ctxt_4));
   }
-  __e_acsl_initialize((void *)(dr + 3),sizeof(char));
   *(dr + 3) = (char)'a';
-  __e_acsl_initialize((void *)(dl + 3),sizeof(char));
   *(dl + 3) = (char)0;
   {
-    int tmp_26;
-    __e_acsl_store_block((void *)(& tmp_26),(size_t)4);
-    sigjmp_buf *jmp_ctxt_5 = get_jmp_ctxt();
-    __e_acsl_store_block((void *)(& jmp_ctxt_5),(size_t)8);
-    __e_acsl_full_init((void *)(& jmp_ctxt_5));
-    __e_acsl_full_init((void *)(& tmp_26));
-    tmp_26 = sigsetjmp(*jmp_ctxt_5,1);
-    switch (tmp_26) {
-      case 0:
-      {
-        int tmp_27;
-        int tmp_28;
-        __e_acsl_store_block((void *)(& tmp_28),(size_t)4);
-        __e_acsl_store_block((void *)(& tmp_27),(size_t)4);
-        set_handler();
-        __e_acsl_full_init((void *)(& tmp_27));
-        tmp_27 = __gen_e_acsl_strcmp((char const *)dl,(char const *)dr);
-        __e_acsl_full_init((void *)(& tmp_28));
-        tmp_28 = __gen_e_acsl_strcmp((char const *)dl,(char const *)dr);
-        fail_ncomp(tmp_28 != 0,(char *)__gen_e_acsl_literal_string_2,tmp_27,
-                   0);
-        test_successful();
-        __e_acsl_delete_block((void *)(& tmp_27));
-        __e_acsl_delete_block((void *)(& tmp_28));
-        break;
-        __e_acsl_delete_block((void *)(& tmp_28));
-        __e_acsl_delete_block((void *)(& tmp_27));
-      }
-      case 1: {
-                signal_eval(0,1,__gen_e_acsl_literal_string_10);
-                break;
-              }
-      case 2: {
-                signal_eval(1,1,__gen_e_acsl_literal_string_10);
-                break;
-              }
-      default:
-      {
-        printf(__gen_e_acsl_literal_string_4,__gen_e_acsl_literal_string_10);
-        __gen_e_acsl_exit(3);
-      }
+    pid_t pid_5 = __gen_e_acsl_fork();
+    if (! pid_5) {
+      int tmp_20;
+      int tmp_21;
+      tmp_20 = __gen_e_acsl_strcmp((char const *)dl,(char const *)dr);
+      tmp_21 = __gen_e_acsl_strcmp((char const *)dl,(char const *)dr);
+      fail_ncomp(tmp_21 != 0,(char *)__gen_e_acsl_literal_string_7,tmp_20,0);
+      __gen_e_acsl_exit(0);
+    }
+    else {
+      int process_status_5;
+      __e_acsl_store_block((void *)(& process_status_5),(size_t)4);
+      __gen_e_acsl_waitpid(pid_5,& process_status_5,0);
+      signal_eval(process_status_5,1,__gen_e_acsl_literal_string_14);
+      __e_acsl_delete_block((void *)(& process_status_5));
     }
-    __e_acsl_delete_block((void *)(& tmp_26));
-    __e_acsl_delete_block((void *)(& jmp_ctxt_5));
   }
   {
-    int tmp_30;
-    __e_acsl_store_block((void *)(& tmp_30),(size_t)4);
-    sigjmp_buf *jmp_ctxt_6 = get_jmp_ctxt();
-    __e_acsl_store_block((void *)(& jmp_ctxt_6),(size_t)8);
-    __e_acsl_full_init((void *)(& jmp_ctxt_6));
-    __e_acsl_full_init((void *)(& tmp_30));
-    tmp_30 = sigsetjmp(*jmp_ctxt_6,1);
-    switch (tmp_30) {
-      case 0:
-      {
-        int tmp_31;
-        int tmp_32;
-        __e_acsl_store_block((void *)(& tmp_32),(size_t)4);
-        __e_acsl_store_block((void *)(& tmp_31),(size_t)4);
-        set_handler();
-        __e_acsl_full_init((void *)(& tmp_31));
-        tmp_31 = __gen_e_acsl_strcmp((char const *)dl,(char const *)0);
-        __e_acsl_full_init((void *)(& tmp_32));
-        tmp_32 = __gen_e_acsl_strcmp((char const *)dl,(char const *)0);
-        fail_ncomp(tmp_32 != 0,(char *)__gen_e_acsl_literal_string_2,tmp_31,
-                   0);
-        test_successful();
-        __e_acsl_delete_block((void *)(& tmp_31));
-        __e_acsl_delete_block((void *)(& tmp_32));
-        break;
-        __e_acsl_delete_block((void *)(& tmp_32));
-        __e_acsl_delete_block((void *)(& tmp_31));
-      }
-      case 1: {
-                signal_eval(0,1,__gen_e_acsl_literal_string_11);
-                break;
-              }
-      case 2: {
-                signal_eval(1,1,__gen_e_acsl_literal_string_11);
-                break;
-              }
-      default:
-      {
-        printf(__gen_e_acsl_literal_string_4,__gen_e_acsl_literal_string_11);
-        __gen_e_acsl_exit(3);
-      }
+    pid_t pid_6 = __gen_e_acsl_fork();
+    if (! pid_6) {
+      int tmp_23;
+      int tmp_24;
+      tmp_23 = __gen_e_acsl_strcmp((char const *)dl,(char const *)0);
+      tmp_24 = __gen_e_acsl_strcmp((char const *)dl,(char const *)0);
+      fail_ncomp(tmp_24 != 0,(char *)__gen_e_acsl_literal_string_7,tmp_23,0);
+      __gen_e_acsl_exit(0);
+    }
+    else {
+      int process_status_6;
+      __e_acsl_store_block((void *)(& process_status_6),(size_t)4);
+      __gen_e_acsl_waitpid(pid_6,& process_status_6,0);
+      signal_eval(process_status_6,1,__gen_e_acsl_literal_string_15);
+      __e_acsl_delete_block((void *)(& process_status_6));
     }
-    __e_acsl_delete_block((void *)(& tmp_30));
-    __e_acsl_delete_block((void *)(& jmp_ctxt_6));
   }
   {
-    int tmp_34;
-    __e_acsl_store_block((void *)(& tmp_34),(size_t)4);
-    sigjmp_buf *jmp_ctxt_7 = get_jmp_ctxt();
-    __e_acsl_store_block((void *)(& jmp_ctxt_7),(size_t)8);
-    __e_acsl_full_init((void *)(& jmp_ctxt_7));
-    __e_acsl_full_init((void *)(& tmp_34));
-    tmp_34 = sigsetjmp(*jmp_ctxt_7,1);
-    switch (tmp_34) {
-      case 0:
-      {
-        int tmp_35;
-        int tmp_36;
-        __e_acsl_store_block((void *)(& tmp_36),(size_t)4);
-        __e_acsl_store_block((void *)(& tmp_35),(size_t)4);
-        set_handler();
-        __e_acsl_full_init((void *)(& tmp_35));
-        tmp_35 = __gen_e_acsl_strcmp((char const *)0,(char const *)dr);
-        __e_acsl_full_init((void *)(& tmp_36));
-        tmp_36 = __gen_e_acsl_strcmp((char const *)0,(char const *)dr);
-        fail_ncomp(tmp_36 != 0,(char *)__gen_e_acsl_literal_string_2,tmp_35,
-                   0);
-        test_successful();
-        __e_acsl_delete_block((void *)(& tmp_35));
-        __e_acsl_delete_block((void *)(& tmp_36));
-        break;
-        __e_acsl_delete_block((void *)(& tmp_36));
-        __e_acsl_delete_block((void *)(& tmp_35));
-      }
-      case 1: {
-                signal_eval(0,1,__gen_e_acsl_literal_string_12);
-                break;
-              }
-      case 2: {
-                signal_eval(1,1,__gen_e_acsl_literal_string_12);
-                break;
-              }
-      default:
-      {
-        printf(__gen_e_acsl_literal_string_4,__gen_e_acsl_literal_string_12);
-        __gen_e_acsl_exit(3);
-      }
+    pid_t pid_7 = __gen_e_acsl_fork();
+    if (! pid_7) {
+      int tmp_26;
+      int tmp_27;
+      tmp_26 = __gen_e_acsl_strcmp((char const *)0,(char const *)dr);
+      tmp_27 = __gen_e_acsl_strcmp((char const *)0,(char const *)dr);
+      fail_ncomp(tmp_27 != 0,(char *)__gen_e_acsl_literal_string_7,tmp_26,0);
+      __gen_e_acsl_exit(0);
+    }
+    else {
+      int process_status_7;
+      __e_acsl_store_block((void *)(& process_status_7),(size_t)4);
+      __gen_e_acsl_waitpid(pid_7,& process_status_7,0);
+      signal_eval(process_status_7,1,__gen_e_acsl_literal_string_16);
+      __e_acsl_delete_block((void *)(& process_status_7));
     }
-    __e_acsl_delete_block((void *)(& tmp_34));
-    __e_acsl_delete_block((void *)(& jmp_ctxt_7));
   }
   free((void *)dl);
   free((void *)dr);
   {
-    int tmp_38;
-    __e_acsl_store_block((void *)(& tmp_38),(size_t)4);
-    sigjmp_buf *jmp_ctxt_8 = get_jmp_ctxt();
-    __e_acsl_store_block((void *)(& jmp_ctxt_8),(size_t)8);
-    __e_acsl_full_init((void *)(& jmp_ctxt_8));
-    __e_acsl_full_init((void *)(& tmp_38));
-    tmp_38 = sigsetjmp(*jmp_ctxt_8,1);
-    switch (tmp_38) {
-      case 0:
-      {
-        int tmp_39;
-        int tmp_40;
-        __e_acsl_store_block((void *)(& tmp_40),(size_t)4);
-        __e_acsl_store_block((void *)(& tmp_39),(size_t)4);
-        set_handler();
-        __e_acsl_full_init((void *)(& tmp_39));
-        tmp_39 = __gen_e_acsl_strcmp((char const *)dl,(char const *)(ar));
-        __e_acsl_full_init((void *)(& tmp_40));
-        tmp_40 = __gen_e_acsl_strcmp((char const *)dl,(char const *)(ar));
-        fail_ncomp(tmp_40 != 0,(char *)__gen_e_acsl_literal_string_2,tmp_39,
-                   0);
-        test_successful();
-        __e_acsl_delete_block((void *)(& tmp_39));
-        __e_acsl_delete_block((void *)(& tmp_40));
-        break;
-        __e_acsl_delete_block((void *)(& tmp_40));
-        __e_acsl_delete_block((void *)(& tmp_39));
-      }
-      case 1: {
-                signal_eval(0,1,__gen_e_acsl_literal_string_13);
-                break;
-              }
-      case 2: {
-                signal_eval(1,1,__gen_e_acsl_literal_string_13);
-                break;
-              }
-      default:
-      {
-        printf(__gen_e_acsl_literal_string_4,__gen_e_acsl_literal_string_13);
-        __gen_e_acsl_exit(3);
-      }
+    pid_t pid_8 = __gen_e_acsl_fork();
+    if (! pid_8) {
+      int tmp_29;
+      int tmp_30;
+      tmp_29 = __gen_e_acsl_strcmp((char const *)dl,(char const *)(ar));
+      tmp_30 = __gen_e_acsl_strcmp((char const *)dl,(char const *)(ar));
+      fail_ncomp(tmp_30 != 0,(char *)__gen_e_acsl_literal_string_7,tmp_29,0);
+      __gen_e_acsl_exit(0);
+    }
+    else {
+      int process_status_8;
+      __e_acsl_store_block((void *)(& process_status_8),(size_t)4);
+      __gen_e_acsl_waitpid(pid_8,& process_status_8,0);
+      signal_eval(process_status_8,1,__gen_e_acsl_literal_string_17);
+      __e_acsl_delete_block((void *)(& process_status_8));
     }
-    __e_acsl_delete_block((void *)(& tmp_38));
-    __e_acsl_delete_block((void *)(& jmp_ctxt_8));
   }
   {
-    int tmp_42;
-    __e_acsl_store_block((void *)(& tmp_42),(size_t)4);
-    sigjmp_buf *jmp_ctxt_9 = get_jmp_ctxt();
-    __e_acsl_store_block((void *)(& jmp_ctxt_9),(size_t)8);
-    __e_acsl_full_init((void *)(& jmp_ctxt_9));
-    __e_acsl_full_init((void *)(& tmp_42));
-    tmp_42 = sigsetjmp(*jmp_ctxt_9,1);
-    switch (tmp_42) {
-      case 0:
-      {
-        int tmp_43;
-        int tmp_44;
-        __e_acsl_store_block((void *)(& tmp_44),(size_t)4);
-        __e_acsl_store_block((void *)(& tmp_43),(size_t)4);
-        set_handler();
-        __e_acsl_full_init((void *)(& tmp_43));
-        tmp_43 = __gen_e_acsl_strcmp((char const *)(al),(char const *)dr);
-        __e_acsl_full_init((void *)(& tmp_44));
-        tmp_44 = __gen_e_acsl_strcmp((char const *)(al),(char const *)dr);
-        fail_ncomp(tmp_44 != 0,(char *)__gen_e_acsl_literal_string_2,tmp_43,
-                   0);
-        test_successful();
-        __e_acsl_delete_block((void *)(& tmp_43));
-        __e_acsl_delete_block((void *)(& tmp_44));
-        break;
-        __e_acsl_delete_block((void *)(& tmp_44));
-        __e_acsl_delete_block((void *)(& tmp_43));
-      }
-      case 1: {
-                signal_eval(0,1,__gen_e_acsl_literal_string_14);
-                break;
-              }
-      case 2: {
-                signal_eval(1,1,__gen_e_acsl_literal_string_14);
-                break;
-              }
-      default:
-      {
-        printf(__gen_e_acsl_literal_string_4,__gen_e_acsl_literal_string_14);
-        __gen_e_acsl_exit(3);
-      }
+    pid_t pid_9 = __gen_e_acsl_fork();
+    if (! pid_9) {
+      int tmp_32;
+      int tmp_33;
+      tmp_32 = __gen_e_acsl_strcmp((char const *)(al),(char const *)dr);
+      tmp_33 = __gen_e_acsl_strcmp((char const *)(al),(char const *)dr);
+      fail_ncomp(tmp_33 != 0,(char *)__gen_e_acsl_literal_string_7,tmp_32,0);
+      __gen_e_acsl_exit(0);
+    }
+    else {
+      int process_status_9;
+      __e_acsl_store_block((void *)(& process_status_9),(size_t)4);
+      __gen_e_acsl_waitpid(pid_9,& process_status_9,0);
+      signal_eval(process_status_9,1,__gen_e_acsl_literal_string_18);
+      __e_acsl_delete_block((void *)(& process_status_9));
     }
-    __e_acsl_delete_block((void *)(& tmp_42));
-    __e_acsl_delete_block((void *)(& jmp_ctxt_9));
   }
-  __e_acsl_full_init((void *)(& dl));
-  dl = __gen_e_acsl_strdup(__gen_e_acsl_literal_string);
-  __e_acsl_full_init((void *)(& dr));
-  dr = __gen_e_acsl_strdup(__gen_e_acsl_literal_string);
+  dl = __gen_e_acsl_strdup(__gen_e_acsl_literal_string_6);
+  dr = __gen_e_acsl_strdup(__gen_e_acsl_literal_string_6);
   char nal[4] = {(char)'a', (char)'b', (char)'c', (char)'\000'};
-  __e_acsl_store_block((void *)(nal),(size_t)4);
-  __e_acsl_full_init((void *)(& nal));
   char nar[4] = {(char)'a', (char)'b', (char)'c', (char)'\000'};
-  __e_acsl_store_block((void *)(nar),(size_t)4);
-  __e_acsl_full_init((void *)(& nar));
   {
-    int tmp_46;
-    __e_acsl_store_block((void *)(& tmp_46),(size_t)4);
-    sigjmp_buf *jmp_ctxt_10 = get_jmp_ctxt();
-    __e_acsl_store_block((void *)(& jmp_ctxt_10),(size_t)8);
-    __e_acsl_full_init((void *)(& jmp_ctxt_10));
-    __e_acsl_full_init((void *)(& tmp_46));
-    tmp_46 = sigsetjmp(*jmp_ctxt_10,1);
-    switch (tmp_46) {
-      case 0:
-      {
-        int tmp_47;
-        int tmp_48;
-        __e_acsl_store_block((void *)(& tmp_48),(size_t)4);
-        __e_acsl_store_block((void *)(& tmp_47),(size_t)4);
-        set_handler();
-        __e_acsl_full_init((void *)(& tmp_47));
-        tmp_47 = __gen_e_acsl_strncmp(cl,cr,(unsigned long)3);
-        __e_acsl_full_init((void *)(& tmp_48));
-        tmp_48 = __gen_e_acsl_strncmp(cl,cr,(unsigned long)3);
-        fail_ncomp(tmp_48 != 0,(char *)__gen_e_acsl_literal_string_2,tmp_47,
-                   0);
-        test_successful();
-        __e_acsl_delete_block((void *)(& tmp_47));
-        __e_acsl_delete_block((void *)(& tmp_48));
-        break;
-        __e_acsl_delete_block((void *)(& tmp_48));
-        __e_acsl_delete_block((void *)(& tmp_47));
-      }
-      case 1: {
-                signal_eval(0,0,__gen_e_acsl_literal_string_15);
-                break;
-              }
-      case 2: {
-                signal_eval(1,0,__gen_e_acsl_literal_string_15);
-                break;
-              }
-      default:
-      {
-        printf(__gen_e_acsl_literal_string_4,__gen_e_acsl_literal_string_15);
-        __gen_e_acsl_exit(3);
-      }
+    pid_t pid_10 = __gen_e_acsl_fork();
+    if (! pid_10) {
+      int tmp_35;
+      int tmp_36;
+      tmp_35 = __gen_e_acsl_strncmp(cl,cr,(unsigned long)3);
+      tmp_36 = __gen_e_acsl_strncmp(cl,cr,(unsigned long)3);
+      fail_ncomp(tmp_36 != 0,(char *)__gen_e_acsl_literal_string_7,tmp_35,0);
+      __gen_e_acsl_exit(0);
+    }
+    else {
+      int process_status_10;
+      __e_acsl_store_block((void *)(& process_status_10),(size_t)4);
+      __gen_e_acsl_waitpid(pid_10,& process_status_10,0);
+      signal_eval(process_status_10,0,__gen_e_acsl_literal_string_19);
+      __e_acsl_delete_block((void *)(& process_status_10));
     }
-    __e_acsl_delete_block((void *)(& tmp_46));
-    __e_acsl_delete_block((void *)(& jmp_ctxt_10));
   }
   {
-    int tmp_50;
-    __e_acsl_store_block((void *)(& tmp_50),(size_t)4);
-    sigjmp_buf *jmp_ctxt_11 = get_jmp_ctxt();
-    __e_acsl_store_block((void *)(& jmp_ctxt_11),(size_t)8);
-    __e_acsl_full_init((void *)(& jmp_ctxt_11));
-    __e_acsl_full_init((void *)(& tmp_50));
-    tmp_50 = sigsetjmp(*jmp_ctxt_11,1);
-    switch (tmp_50) {
-      case 0:
-      {
-        int tmp_51;
-        int tmp_52;
-        __e_acsl_store_block((void *)(& tmp_52),(size_t)4);
-        __e_acsl_store_block((void *)(& tmp_51),(size_t)4);
-        set_handler();
-        __e_acsl_full_init((void *)(& tmp_51));
-        tmp_51 = __gen_e_acsl_strncmp((char const *)(nal),
-                                      (char const *)(nar),(unsigned long)3);
-        __e_acsl_full_init((void *)(& tmp_52));
-        tmp_52 = __gen_e_acsl_strncmp((char const *)(nal),
-                                      (char const *)(nar),(unsigned long)3);
-        fail_ncomp(tmp_52 != 0,(char *)__gen_e_acsl_literal_string_2,tmp_51,
-                   0);
-        test_successful();
-        __e_acsl_delete_block((void *)(& tmp_51));
-        __e_acsl_delete_block((void *)(& tmp_52));
-        break;
-        __e_acsl_delete_block((void *)(& tmp_52));
-        __e_acsl_delete_block((void *)(& tmp_51));
-      }
-      case 1: {
-                signal_eval(0,0,__gen_e_acsl_literal_string_16);
-                break;
-              }
-      case 2: {
-                signal_eval(1,0,__gen_e_acsl_literal_string_16);
-                break;
-              }
-      default:
-      {
-        printf(__gen_e_acsl_literal_string_4,__gen_e_acsl_literal_string_16);
-        __gen_e_acsl_exit(3);
-      }
+    pid_t pid_11 = __gen_e_acsl_fork();
+    if (! pid_11) {
+      int tmp_38;
+      int tmp_39;
+      tmp_38 = __gen_e_acsl_strncmp((char const *)(nal),(char const *)(nar),
+                                    (unsigned long)3);
+      tmp_39 = __gen_e_acsl_strncmp((char const *)(nal),(char const *)(nar),
+                                    (unsigned long)3);
+      fail_ncomp(tmp_39 != 0,(char *)__gen_e_acsl_literal_string_7,tmp_38,0);
+      __gen_e_acsl_exit(0);
+    }
+    else {
+      int process_status_11;
+      __e_acsl_store_block((void *)(& process_status_11),(size_t)4);
+      __gen_e_acsl_waitpid(pid_11,& process_status_11,0);
+      signal_eval(process_status_11,0,__gen_e_acsl_literal_string_20);
+      __e_acsl_delete_block((void *)(& process_status_11));
     }
-    __e_acsl_delete_block((void *)(& tmp_50));
-    __e_acsl_delete_block((void *)(& jmp_ctxt_11));
   }
   {
-    int tmp_54;
-    __e_acsl_store_block((void *)(& tmp_54),(size_t)4);
-    sigjmp_buf *jmp_ctxt_12 = get_jmp_ctxt();
-    __e_acsl_store_block((void *)(& jmp_ctxt_12),(size_t)8);
-    __e_acsl_full_init((void *)(& jmp_ctxt_12));
-    __e_acsl_full_init((void *)(& tmp_54));
-    tmp_54 = sigsetjmp(*jmp_ctxt_12,1);
-    switch (tmp_54) {
-      case 0:
-      {
-        int tmp_55;
-        int tmp_56;
-        __e_acsl_store_block((void *)(& tmp_56),(size_t)4);
-        __e_acsl_store_block((void *)(& tmp_55),(size_t)4);
-        set_handler();
-        __e_acsl_full_init((void *)(& tmp_55));
-        tmp_55 = __gen_e_acsl_strncmp((char const *)dl,(char const *)dr,
-                                      (unsigned long)3);
-        __e_acsl_full_init((void *)(& tmp_56));
-        tmp_56 = __gen_e_acsl_strncmp((char const *)dl,(char const *)dr,
-                                      (unsigned long)3);
-        fail_ncomp(tmp_56 != 0,(char *)__gen_e_acsl_literal_string_2,tmp_55,
-                   0);
-        test_successful();
-        __e_acsl_delete_block((void *)(& tmp_55));
-        __e_acsl_delete_block((void *)(& tmp_56));
-        break;
-        __e_acsl_delete_block((void *)(& tmp_56));
-        __e_acsl_delete_block((void *)(& tmp_55));
-      }
-      case 1: {
-                signal_eval(0,0,__gen_e_acsl_literal_string_17);
-                break;
-              }
-      case 2: {
-                signal_eval(1,0,__gen_e_acsl_literal_string_17);
-                break;
-              }
-      default:
-      {
-        printf(__gen_e_acsl_literal_string_4,__gen_e_acsl_literal_string_17);
-        __gen_e_acsl_exit(3);
-      }
+    pid_t pid_12 = __gen_e_acsl_fork();
+    if (! pid_12) {
+      int tmp_41;
+      int tmp_42;
+      tmp_41 = __gen_e_acsl_strncmp((char const *)dl,(char const *)dr,
+                                    (unsigned long)3);
+      tmp_42 = __gen_e_acsl_strncmp((char const *)dl,(char const *)dr,
+                                    (unsigned long)3);
+      fail_ncomp(tmp_42 != 0,(char *)__gen_e_acsl_literal_string_7,tmp_41,0);
+      __gen_e_acsl_exit(0);
+    }
+    else {
+      int process_status_12;
+      __e_acsl_store_block((void *)(& process_status_12),(size_t)4);
+      __gen_e_acsl_waitpid(pid_12,& process_status_12,0);
+      signal_eval(process_status_12,0,__gen_e_acsl_literal_string_21);
+      __e_acsl_delete_block((void *)(& process_status_12));
     }
-    __e_acsl_delete_block((void *)(& tmp_54));
-    __e_acsl_delete_block((void *)(& jmp_ctxt_12));
   }
   {
-    int tmp_58;
-    __e_acsl_store_block((void *)(& tmp_58),(size_t)4);
-    sigjmp_buf *jmp_ctxt_13 = get_jmp_ctxt();
-    __e_acsl_store_block((void *)(& jmp_ctxt_13),(size_t)8);
-    __e_acsl_full_init((void *)(& jmp_ctxt_13));
-    __e_acsl_full_init((void *)(& tmp_58));
-    tmp_58 = sigsetjmp(*jmp_ctxt_13,1);
-    switch (tmp_58) {
-      case 0:
-      {
-        int tmp_59;
-        int tmp_60;
-        __e_acsl_store_block((void *)(& tmp_60),(size_t)4);
-        __e_acsl_store_block((void *)(& tmp_59),(size_t)4);
-        set_handler();
-        __e_acsl_full_init((void *)(& tmp_59));
-        tmp_59 = __gen_e_acsl_strncmp((char const *)(nal),
-                                      (char const *)(nar),(unsigned long)6);
-        __e_acsl_full_init((void *)(& tmp_60));
-        tmp_60 = __gen_e_acsl_strncmp((char const *)(nal),
-                                      (char const *)(nar),(unsigned long)6);
-        fail_ncomp(tmp_60 != 0,(char *)__gen_e_acsl_literal_string_2,tmp_59,
-                   0);
-        test_successful();
-        __e_acsl_delete_block((void *)(& tmp_59));
-        __e_acsl_delete_block((void *)(& tmp_60));
-        break;
-        __e_acsl_delete_block((void *)(& tmp_60));
-        __e_acsl_delete_block((void *)(& tmp_59));
-      }
-      case 1: {
-                signal_eval(0,0,__gen_e_acsl_literal_string_18);
-                break;
-              }
-      case 2: {
-                signal_eval(1,0,__gen_e_acsl_literal_string_18);
-                break;
-              }
-      default:
-      {
-        printf(__gen_e_acsl_literal_string_4,__gen_e_acsl_literal_string_18);
-        __gen_e_acsl_exit(3);
-      }
+    pid_t pid_13 = __gen_e_acsl_fork();
+    if (! pid_13) {
+      int tmp_44;
+      int tmp_45;
+      tmp_44 = __gen_e_acsl_strncmp((char const *)(nal),(char const *)(nar),
+                                    (unsigned long)6);
+      tmp_45 = __gen_e_acsl_strncmp((char const *)(nal),(char const *)(nar),
+                                    (unsigned long)6);
+      fail_ncomp(tmp_45 != 0,(char *)__gen_e_acsl_literal_string_7,tmp_44,0);
+      __gen_e_acsl_exit(0);
+    }
+    else {
+      int process_status_13;
+      __e_acsl_store_block((void *)(& process_status_13),(size_t)4);
+      __gen_e_acsl_waitpid(pid_13,& process_status_13,0);
+      signal_eval(process_status_13,0,__gen_e_acsl_literal_string_22);
+      __e_acsl_delete_block((void *)(& process_status_13));
     }
-    __e_acsl_delete_block((void *)(& tmp_58));
-    __e_acsl_delete_block((void *)(& jmp_ctxt_13));
   }
   {
-    int tmp_62;
-    __e_acsl_store_block((void *)(& tmp_62),(size_t)4);
-    sigjmp_buf *jmp_ctxt_14 = get_jmp_ctxt();
-    __e_acsl_store_block((void *)(& jmp_ctxt_14),(size_t)8);
-    __e_acsl_full_init((void *)(& jmp_ctxt_14));
-    __e_acsl_full_init((void *)(& tmp_62));
-    tmp_62 = sigsetjmp(*jmp_ctxt_14,1);
-    switch (tmp_62) {
-      case 0:
-      {
-        int tmp_63;
-        int tmp_64;
-        __e_acsl_store_block((void *)(& tmp_64),(size_t)4);
-        __e_acsl_store_block((void *)(& tmp_63),(size_t)4);
-        set_handler();
-        __e_acsl_full_init((void *)(& tmp_63));
-        tmp_63 = __gen_e_acsl_strncmp((char const *)dl,(char const *)dr,
-                                      (unsigned long)6);
-        __e_acsl_full_init((void *)(& tmp_64));
-        tmp_64 = __gen_e_acsl_strncmp((char const *)dl,(char const *)dr,
-                                      (unsigned long)6);
-        fail_ncomp(tmp_64 != 0,(char *)__gen_e_acsl_literal_string_2,tmp_63,
-                   0);
-        test_successful();
-        __e_acsl_delete_block((void *)(& tmp_63));
-        __e_acsl_delete_block((void *)(& tmp_64));
-        break;
-        __e_acsl_delete_block((void *)(& tmp_64));
-        __e_acsl_delete_block((void *)(& tmp_63));
-      }
-      case 1: {
-                signal_eval(0,0,__gen_e_acsl_literal_string_19);
-                break;
-              }
-      case 2: {
-                signal_eval(1,0,__gen_e_acsl_literal_string_19);
-                break;
-              }
-      default:
-      {
-        printf(__gen_e_acsl_literal_string_4,__gen_e_acsl_literal_string_19);
-        __gen_e_acsl_exit(3);
-      }
+    pid_t pid_14 = __gen_e_acsl_fork();
+    if (! pid_14) {
+      int tmp_47;
+      int tmp_48;
+      tmp_47 = __gen_e_acsl_strncmp((char const *)dl,(char const *)dr,
+                                    (unsigned long)6);
+      tmp_48 = __gen_e_acsl_strncmp((char const *)dl,(char const *)dr,
+                                    (unsigned long)6);
+      fail_ncomp(tmp_48 != 0,(char *)__gen_e_acsl_literal_string_7,tmp_47,0);
+      __gen_e_acsl_exit(0);
+    }
+    else {
+      int process_status_14;
+      __e_acsl_store_block((void *)(& process_status_14),(size_t)4);
+      __gen_e_acsl_waitpid(pid_14,& process_status_14,0);
+      signal_eval(process_status_14,0,__gen_e_acsl_literal_string_23);
+      __e_acsl_delete_block((void *)(& process_status_14));
     }
-    __e_acsl_delete_block((void *)(& tmp_62));
-    __e_acsl_delete_block((void *)(& jmp_ctxt_14));
   }
-  __e_acsl_initialize((void *)(& nal[3]),sizeof(char));
   nal[3] = (char)'d';
   {
-    int tmp_66;
-    __e_acsl_store_block((void *)(& tmp_66),(size_t)4);
-    sigjmp_buf *jmp_ctxt_15 = get_jmp_ctxt();
-    __e_acsl_store_block((void *)(& jmp_ctxt_15),(size_t)8);
-    __e_acsl_full_init((void *)(& jmp_ctxt_15));
-    __e_acsl_full_init((void *)(& tmp_66));
-    tmp_66 = sigsetjmp(*jmp_ctxt_15,1);
-    switch (tmp_66) {
-      case 0:
-      {
-        int tmp_67;
-        int tmp_68;
-        __e_acsl_store_block((void *)(& tmp_68),(size_t)4);
-        __e_acsl_store_block((void *)(& tmp_67),(size_t)4);
-        set_handler();
-        __e_acsl_full_init((void *)(& tmp_67));
-        tmp_67 = __gen_e_acsl_strncmp((char const *)(nal),
-                                      (char const *)(nar),(unsigned long)4);
-        __e_acsl_full_init((void *)(& tmp_68));
-        tmp_68 = __gen_e_acsl_strncmp((char const *)(nal),
-                                      (char const *)(nar),(unsigned long)4);
-        fail_ncomp(tmp_68 == 0,(char *)__gen_e_acsl_literal_string_20,tmp_67,
-                   0);
-        test_successful();
-        __e_acsl_delete_block((void *)(& tmp_67));
-        __e_acsl_delete_block((void *)(& tmp_68));
-        break;
-        __e_acsl_delete_block((void *)(& tmp_68));
-        __e_acsl_delete_block((void *)(& tmp_67));
-      }
-      case 1: {
-                signal_eval(0,0,__gen_e_acsl_literal_string_21);
-                break;
-              }
-      case 2: {
-                signal_eval(1,0,__gen_e_acsl_literal_string_21);
-                break;
-              }
-      default:
-      {
-        printf(__gen_e_acsl_literal_string_4,__gen_e_acsl_literal_string_21);
-        __gen_e_acsl_exit(3);
-      }
+    pid_t pid_15 = __gen_e_acsl_fork();
+    if (! pid_15) {
+      int tmp_50;
+      int tmp_51;
+      tmp_50 = __gen_e_acsl_strncmp((char const *)(nal),(char const *)(nar),
+                                    (unsigned long)4);
+      tmp_51 = __gen_e_acsl_strncmp((char const *)(nal),(char const *)(nar),
+                                    (unsigned long)4);
+      fail_ncomp(tmp_51 == 0,(char *)__gen_e_acsl_literal_string_24,tmp_50,0);
+      __gen_e_acsl_exit(0);
+    }
+    else {
+      int process_status_15;
+      __e_acsl_store_block((void *)(& process_status_15),(size_t)4);
+      __gen_e_acsl_waitpid(pid_15,& process_status_15,0);
+      signal_eval(process_status_15,0,__gen_e_acsl_literal_string_25);
+      __e_acsl_delete_block((void *)(& process_status_15));
     }
-    __e_acsl_delete_block((void *)(& tmp_66));
-    __e_acsl_delete_block((void *)(& jmp_ctxt_15));
   }
-  __e_acsl_initialize((void *)(& nar[3]),sizeof(char));
   nar[3] = (char)'d';
-  __e_acsl_initialize((void *)(& nal[3]),sizeof(char));
   nal[3] = (char)0;
   {
-    int tmp_70;
-    __e_acsl_store_block((void *)(& tmp_70),(size_t)4);
-    sigjmp_buf *jmp_ctxt_16 = get_jmp_ctxt();
-    __e_acsl_store_block((void *)(& jmp_ctxt_16),(size_t)8);
-    __e_acsl_full_init((void *)(& jmp_ctxt_16));
-    __e_acsl_full_init((void *)(& tmp_70));
-    tmp_70 = sigsetjmp(*jmp_ctxt_16,1);
-    switch (tmp_70) {
-      case 0:
-      {
-        int tmp_71;
-        int tmp_72;
-        __e_acsl_store_block((void *)(& tmp_72),(size_t)4);
-        __e_acsl_store_block((void *)(& tmp_71),(size_t)4);
-        set_handler();
-        __e_acsl_full_init((void *)(& tmp_71));
-        tmp_71 = __gen_e_acsl_strncmp((char const *)(nal),
-                                      (char const *)(nar),(unsigned long)4);
-        __e_acsl_full_init((void *)(& tmp_72));
-        tmp_72 = __gen_e_acsl_strncmp((char const *)(nal),
-                                      (char const *)(nar),(unsigned long)4);
-        fail_ncomp(tmp_72 == 0,(char *)__gen_e_acsl_literal_string_20,tmp_71,
-                   0);
-        test_successful();
-        __e_acsl_delete_block((void *)(& tmp_71));
-        __e_acsl_delete_block((void *)(& tmp_72));
-        break;
-        __e_acsl_delete_block((void *)(& tmp_72));
-        __e_acsl_delete_block((void *)(& tmp_71));
-      }
-      case 1: {
-                signal_eval(0,0,__gen_e_acsl_literal_string_22);
-                break;
-              }
-      case 2: {
-                signal_eval(1,0,__gen_e_acsl_literal_string_22);
-                break;
-              }
-      default:
-      {
-        printf(__gen_e_acsl_literal_string_4,__gen_e_acsl_literal_string_22);
-        __gen_e_acsl_exit(3);
-      }
+    pid_t pid_16 = __gen_e_acsl_fork();
+    if (! pid_16) {
+      int tmp_53;
+      int tmp_54;
+      tmp_53 = __gen_e_acsl_strncmp((char const *)(nal),(char const *)(nar),
+                                    (unsigned long)4);
+      tmp_54 = __gen_e_acsl_strncmp((char const *)(nal),(char const *)(nar),
+                                    (unsigned long)4);
+      fail_ncomp(tmp_54 == 0,(char *)__gen_e_acsl_literal_string_24,tmp_53,0);
+      __gen_e_acsl_exit(0);
+    }
+    else {
+      int process_status_16;
+      __e_acsl_store_block((void *)(& process_status_16),(size_t)4);
+      __gen_e_acsl_waitpid(pid_16,& process_status_16,0);
+      signal_eval(process_status_16,0,__gen_e_acsl_literal_string_26);
+      __e_acsl_delete_block((void *)(& process_status_16));
     }
-    __e_acsl_delete_block((void *)(& tmp_70));
-    __e_acsl_delete_block((void *)(& jmp_ctxt_16));
   }
-  __e_acsl_initialize((void *)(dl + 3),sizeof(char));
   *(dl + 3) = (char)'d';
   {
-    int tmp_74;
-    __e_acsl_store_block((void *)(& tmp_74),(size_t)4);
-    sigjmp_buf *jmp_ctxt_17 = get_jmp_ctxt();
-    __e_acsl_store_block((void *)(& jmp_ctxt_17),(size_t)8);
-    __e_acsl_full_init((void *)(& jmp_ctxt_17));
-    __e_acsl_full_init((void *)(& tmp_74));
-    tmp_74 = sigsetjmp(*jmp_ctxt_17,1);
-    switch (tmp_74) {
-      case 0:
-      {
-        int tmp_75;
-        int tmp_76;
-        __e_acsl_store_block((void *)(& tmp_76),(size_t)4);
-        __e_acsl_store_block((void *)(& tmp_75),(size_t)4);
-        set_handler();
-        __e_acsl_full_init((void *)(& tmp_75));
-        tmp_75 = __gen_e_acsl_strncmp((char const *)dl,(char const *)dr,
-                                      (unsigned long)4);
-        __e_acsl_full_init((void *)(& tmp_76));
-        tmp_76 = __gen_e_acsl_strncmp((char const *)dl,(char const *)dr,
-                                      (unsigned long)4);
-        fail_ncomp(tmp_76 == 0,(char *)__gen_e_acsl_literal_string_20,tmp_75,
-                   0);
-        test_successful();
-        __e_acsl_delete_block((void *)(& tmp_75));
-        __e_acsl_delete_block((void *)(& tmp_76));
-        break;
-        __e_acsl_delete_block((void *)(& tmp_76));
-        __e_acsl_delete_block((void *)(& tmp_75));
-      }
-      case 1: {
-                signal_eval(0,0,__gen_e_acsl_literal_string_23);
-                break;
-              }
-      case 2: {
-                signal_eval(1,0,__gen_e_acsl_literal_string_23);
-                break;
-              }
-      default:
-      {
-        printf(__gen_e_acsl_literal_string_4,__gen_e_acsl_literal_string_23);
-        __gen_e_acsl_exit(3);
-      }
+    pid_t pid_17 = __gen_e_acsl_fork();
+    if (! pid_17) {
+      int tmp_56;
+      int tmp_57;
+      tmp_56 = __gen_e_acsl_strncmp((char const *)dl,(char const *)dr,
+                                    (unsigned long)4);
+      tmp_57 = __gen_e_acsl_strncmp((char const *)dl,(char const *)dr,
+                                    (unsigned long)4);
+      fail_ncomp(tmp_57 == 0,(char *)__gen_e_acsl_literal_string_24,tmp_56,0);
+      __gen_e_acsl_exit(0);
+    }
+    else {
+      int process_status_17;
+      __e_acsl_store_block((void *)(& process_status_17),(size_t)4);
+      __gen_e_acsl_waitpid(pid_17,& process_status_17,0);
+      signal_eval(process_status_17,0,__gen_e_acsl_literal_string_27);
+      __e_acsl_delete_block((void *)(& process_status_17));
     }
-    __e_acsl_delete_block((void *)(& tmp_74));
-    __e_acsl_delete_block((void *)(& jmp_ctxt_17));
   }
-  __e_acsl_initialize((void *)(dr + 3),sizeof(char));
   *(dr + 3) = (char)'d';
-  __e_acsl_initialize((void *)(dl + 3),sizeof(char));
   *(dl + 3) = (char)0;
   {
-    int tmp_78;
-    __e_acsl_store_block((void *)(& tmp_78),(size_t)4);
-    sigjmp_buf *jmp_ctxt_18 = get_jmp_ctxt();
-    __e_acsl_store_block((void *)(& jmp_ctxt_18),(size_t)8);
-    __e_acsl_full_init((void *)(& jmp_ctxt_18));
-    __e_acsl_full_init((void *)(& tmp_78));
-    tmp_78 = sigsetjmp(*jmp_ctxt_18,1);
-    switch (tmp_78) {
-      case 0:
-      {
-        int tmp_79;
-        int tmp_80;
-        __e_acsl_store_block((void *)(& tmp_80),(size_t)4);
-        __e_acsl_store_block((void *)(& tmp_79),(size_t)4);
-        set_handler();
-        __e_acsl_full_init((void *)(& tmp_79));
-        tmp_79 = __gen_e_acsl_strncmp((char const *)dl,(char const *)dr,
-                                      (unsigned long)4);
-        __e_acsl_full_init((void *)(& tmp_80));
-        tmp_80 = __gen_e_acsl_strncmp((char const *)dl,(char const *)dr,
-                                      (unsigned long)4);
-        fail_ncomp(tmp_80 == 0,(char *)__gen_e_acsl_literal_string_20,tmp_79,
-                   0);
-        test_successful();
-        __e_acsl_delete_block((void *)(& tmp_79));
-        __e_acsl_delete_block((void *)(& tmp_80));
-        break;
-        __e_acsl_delete_block((void *)(& tmp_80));
-        __e_acsl_delete_block((void *)(& tmp_79));
-      }
-      case 1: {
-                signal_eval(0,0,__gen_e_acsl_literal_string_24);
-                break;
-              }
-      case 2: {
-                signal_eval(1,0,__gen_e_acsl_literal_string_24);
-                break;
-              }
-      default:
-      {
-        printf(__gen_e_acsl_literal_string_4,__gen_e_acsl_literal_string_24);
-        __gen_e_acsl_exit(3);
-      }
+    pid_t pid_18 = __gen_e_acsl_fork();
+    if (! pid_18) {
+      int tmp_59;
+      int tmp_60;
+      tmp_59 = __gen_e_acsl_strncmp((char const *)dl,(char const *)dr,
+                                    (unsigned long)4);
+      tmp_60 = __gen_e_acsl_strncmp((char const *)dl,(char const *)dr,
+                                    (unsigned long)4);
+      fail_ncomp(tmp_60 == 0,(char *)__gen_e_acsl_literal_string_24,tmp_59,0);
+      __gen_e_acsl_exit(0);
+    }
+    else {
+      int process_status_18;
+      __e_acsl_store_block((void *)(& process_status_18),(size_t)4);
+      __gen_e_acsl_waitpid(pid_18,& process_status_18,0);
+      signal_eval(process_status_18,0,__gen_e_acsl_literal_string_28);
+      __e_acsl_delete_block((void *)(& process_status_18));
     }
-    __e_acsl_delete_block((void *)(& tmp_78));
-    __e_acsl_delete_block((void *)(& jmp_ctxt_18));
   }
   {
-    int tmp_82;
-    __e_acsl_store_block((void *)(& tmp_82),(size_t)4);
-    sigjmp_buf *jmp_ctxt_19 = get_jmp_ctxt();
-    __e_acsl_store_block((void *)(& jmp_ctxt_19),(size_t)8);
-    __e_acsl_full_init((void *)(& jmp_ctxt_19));
-    __e_acsl_full_init((void *)(& tmp_82));
-    tmp_82 = sigsetjmp(*jmp_ctxt_19,1);
-    switch (tmp_82) {
-      case 0:
-      {
-        set_handler();
-        __e_acsl_full_init((void *)(& res));
-        res = __gen_e_acsl_strncmp((char const *)(nal),(char const *)(nar),
-                                   (unsigned long)5);
-        test_successful();
-        break;
-      }
-      case 1: {
-                signal_eval(0,1,__gen_e_acsl_literal_string_25);
-                break;
-              }
-      case 2: {
-                signal_eval(1,1,__gen_e_acsl_literal_string_25);
-                break;
-              }
-      default:
-      {
-        printf(__gen_e_acsl_literal_string_4,__gen_e_acsl_literal_string_25);
-        __gen_e_acsl_exit(3);
-      }
+    pid_t pid_19 = __gen_e_acsl_fork();
+    if (! pid_19) {
+      res = __gen_e_acsl_strncmp((char const *)(nal),(char const *)(nar),
+                                 (unsigned long)5);
+      __gen_e_acsl_exit(0);
+    }
+    else {
+      int process_status_19;
+      __e_acsl_store_block((void *)(& process_status_19),(size_t)4);
+      __gen_e_acsl_waitpid(pid_19,& process_status_19,0);
+      signal_eval(process_status_19,1,__gen_e_acsl_literal_string_29);
+      __e_acsl_delete_block((void *)(& process_status_19));
     }
-    __e_acsl_delete_block((void *)(& tmp_82));
-    __e_acsl_delete_block((void *)(& jmp_ctxt_19));
   }
-  __e_acsl_initialize((void *)(& nal[3]),sizeof(char));
   nal[3] = (char)'d';
-  __e_acsl_initialize((void *)(& nar[3]),sizeof(char));
   nar[3] = (char)0;
   {
-    int tmp_84;
-    __e_acsl_store_block((void *)(& tmp_84),(size_t)4);
-    sigjmp_buf *jmp_ctxt_20 = get_jmp_ctxt();
-    __e_acsl_store_block((void *)(& jmp_ctxt_20),(size_t)8);
-    __e_acsl_full_init((void *)(& jmp_ctxt_20));
-    __e_acsl_full_init((void *)(& tmp_84));
-    tmp_84 = sigsetjmp(*jmp_ctxt_20,1);
-    switch (tmp_84) {
-      case 0:
-      {
-        set_handler();
-        __e_acsl_full_init((void *)(& res));
-        res = __gen_e_acsl_strncmp((char const *)(al),(char const *)(ar),
-                                   (unsigned long)5);
-        test_successful();
-        break;
-      }
-      case 1: {
-                signal_eval(0,1,__gen_e_acsl_literal_string_26);
-                break;
-              }
-      case 2: {
-                signal_eval(1,1,__gen_e_acsl_literal_string_26);
-                break;
-              }
-      default:
-      {
-        printf(__gen_e_acsl_literal_string_4,__gen_e_acsl_literal_string_26);
-        __gen_e_acsl_exit(3);
-      }
+    pid_t pid_20 = __gen_e_acsl_fork();
+    if (! pid_20) {
+      res = __gen_e_acsl_strncmp((char const *)(al),(char const *)(ar),
+                                 (unsigned long)5);
+      __gen_e_acsl_exit(0);
+    }
+    else {
+      int process_status_20;
+      __e_acsl_store_block((void *)(& process_status_20),(size_t)4);
+      __gen_e_acsl_waitpid(pid_20,& process_status_20,0);
+      signal_eval(process_status_20,1,__gen_e_acsl_literal_string_30);
+      __e_acsl_delete_block((void *)(& process_status_20));
     }
-    __e_acsl_delete_block((void *)(& tmp_84));
-    __e_acsl_delete_block((void *)(& jmp_ctxt_20));
   }
   {
-    int tmp_86;
-    __e_acsl_store_block((void *)(& tmp_86),(size_t)4);
-    sigjmp_buf *jmp_ctxt_21 = get_jmp_ctxt();
-    __e_acsl_store_block((void *)(& jmp_ctxt_21),(size_t)8);
-    __e_acsl_full_init((void *)(& jmp_ctxt_21));
-    __e_acsl_full_init((void *)(& tmp_86));
-    tmp_86 = sigsetjmp(*jmp_ctxt_21,1);
-    switch (tmp_86) {
-      case 0:
-      {
-        set_handler();
-        __e_acsl_full_init((void *)(& res));
-        res = __gen_e_acsl_strncmp((char const *)dl,(char const *)dr,
-                                   (unsigned long)5);
-        test_successful();
-        break;
-      }
-      case 1: {
-                signal_eval(0,1,__gen_e_acsl_literal_string_27);
-                break;
-              }
-      case 2: {
-                signal_eval(1,1,__gen_e_acsl_literal_string_27);
-                break;
-              }
-      default:
-      {
-        printf(__gen_e_acsl_literal_string_4,__gen_e_acsl_literal_string_27);
-        __gen_e_acsl_exit(3);
-      }
+    pid_t pid_21 = __gen_e_acsl_fork();
+    if (! pid_21) {
+      res = __gen_e_acsl_strncmp((char const *)dl,(char const *)dr,
+                                 (unsigned long)5);
+      __gen_e_acsl_exit(0);
+    }
+    else {
+      int process_status_21;
+      __e_acsl_store_block((void *)(& process_status_21),(size_t)4);
+      __gen_e_acsl_waitpid(pid_21,& process_status_21,0);
+      signal_eval(process_status_21,1,__gen_e_acsl_literal_string_31);
+      __e_acsl_delete_block((void *)(& process_status_21));
     }
-    __e_acsl_delete_block((void *)(& tmp_86));
-    __e_acsl_delete_block((void *)(& jmp_ctxt_21));
   }
-  __e_acsl_initialize((void *)(dl + 3),sizeof(char));
   *(dl + 3) = (char)'d';
-  __e_acsl_initialize((void *)(dr + 3),sizeof(char));
   *(dr + 3) = (char)0;
   {
-    int tmp_88;
-    __e_acsl_store_block((void *)(& tmp_88),(size_t)4);
-    sigjmp_buf *jmp_ctxt_22 = get_jmp_ctxt();
-    __e_acsl_store_block((void *)(& jmp_ctxt_22),(size_t)8);
-    __e_acsl_full_init((void *)(& jmp_ctxt_22));
-    __e_acsl_full_init((void *)(& tmp_88));
-    tmp_88 = sigsetjmp(*jmp_ctxt_22,1);
-    switch (tmp_88) {
-      case 0:
-      {
-        set_handler();
-        __e_acsl_full_init((void *)(& res));
-        res = __gen_e_acsl_strncmp((char const *)dl,(char const *)dr,
-                                   (unsigned long)5);
-        test_successful();
-        break;
-      }
-      case 1: {
-                signal_eval(0,1,__gen_e_acsl_literal_string_28);
-                break;
-              }
-      case 2: {
-                signal_eval(1,1,__gen_e_acsl_literal_string_28);
-                break;
-              }
-      default:
-      {
-        printf(__gen_e_acsl_literal_string_4,__gen_e_acsl_literal_string_28);
-        __gen_e_acsl_exit(3);
-      }
+    pid_t pid_22 = __gen_e_acsl_fork();
+    if (! pid_22) {
+      res = __gen_e_acsl_strncmp((char const *)dl,(char const *)dr,
+                                 (unsigned long)5);
+      __gen_e_acsl_exit(0);
+    }
+    else {
+      int process_status_22;
+      __e_acsl_store_block((void *)(& process_status_22),(size_t)4);
+      __gen_e_acsl_waitpid(pid_22,& process_status_22,0);
+      signal_eval(process_status_22,1,__gen_e_acsl_literal_string_32);
+      __e_acsl_delete_block((void *)(& process_status_22));
     }
-    __e_acsl_delete_block((void *)(& tmp_88));
-    __e_acsl_delete_block((void *)(& jmp_ctxt_22));
   }
   free((void *)dl);
   free((void *)dr);
-  __e_acsl_full_init((void *)(& __retres));
   __retres = 0;
-  __e_acsl_delete_block((void *)(& argv));
-  __e_acsl_delete_block((void *)(& argc));
-  __e_acsl_delete_block((void *)(& fail_ncomp));
-  __e_acsl_delete_block((void *)(& __fc_p_strerror));
-  __e_acsl_delete_block((void *)(strerror));
-  __e_acsl_delete_block((void *)(& __fc_strtok_ptr));
-  __e_acsl_delete_block((void *)(& __fc_p_fopen));
-  __e_acsl_delete_block((void *)(__fc_fopen));
-  __e_acsl_delete_block((void *)(& stderr));
-  __e_acsl_delete_block((void *)(& __fc_p_random48_counter));
-  __e_acsl_delete_block((void *)(random48_counter));
-  __e_acsl_delete_block((void *)(& __fc_random48_init));
-  __e_acsl_delete_block((void *)(& __fc_rand_max));
-  __e_acsl_delete_block((void *)(nar));
-  __e_acsl_delete_block((void *)(nal));
-  __e_acsl_delete_block((void *)(& res));
-  __e_acsl_delete_block((void *)(& dr));
-  __e_acsl_delete_block((void *)(& dl));
-  __e_acsl_delete_block((void *)(ar));
-  __e_acsl_delete_block((void *)(al));
-  __e_acsl_delete_block((void *)(& cr));
-  __e_acsl_delete_block((void *)(& cl));
-  __e_acsl_delete_block((void *)(& __retres));
   __e_acsl_memory_clean();
   return __retres;
 }
diff --git a/src/plugins/e-acsl/tests/builtin/oracle_ci/gen_strcpy.c b/src/plugins/e-acsl/tests/builtin/oracle_ci/gen_strcpy.c
index 9e679e5810106c7d8204433ef64b6aca91e092d9..93d63197ed80be0e7170a58068a95c2d46d23744 100644
--- a/src/plugins/e-acsl/tests/builtin/oracle_ci/gen_strcpy.c
+++ b/src/plugins/e-acsl/tests/builtin/oracle_ci/gen_strcpy.c
@@ -1,9 +1,18 @@
 /* Generated by Frama-C */
-#include "setjmp.h"
 #include "signal.h"
+#include "stddef.h"
 #include "stdio.h"
 #include "stdlib.h"
 #include "string.h"
+#include "sys/select.h"
+#include "sys/time.h"
+#include "sys/types.h"
+#include "sys/wait.h"
+#include "unistd.h"
+char *__gen_e_acsl_literal_string_24;
+char *__gen_e_acsl_literal_string_23;
+char *__gen_e_acsl_literal_string_22;
+char *__gen_e_acsl_literal_string_21;
 char *__gen_e_acsl_literal_string_20;
 char *__gen_e_acsl_literal_string_19;
 char *__gen_e_acsl_literal_string_18;
@@ -16,139 +25,613 @@ char *__gen_e_acsl_literal_string_12;
 char *__gen_e_acsl_literal_string_11;
 char *__gen_e_acsl_literal_string_10;
 char *__gen_e_acsl_literal_string_9;
-char *__gen_e_acsl_literal_string_8;
 char *__gen_e_acsl_literal_string_7;
 char *__gen_e_acsl_literal_string_6;
-char *__gen_e_acsl_literal_string_5;
-char *__gen_e_acsl_literal_string_2;
 char *__gen_e_acsl_literal_string;
+char *__gen_e_acsl_literal_string_2;
 char *__gen_e_acsl_literal_string_3;
+char *__gen_e_acsl_literal_string_5;
 char *__gen_e_acsl_literal_string_4;
+char *__gen_e_acsl_literal_string_8;
 extern int __e_acsl_sound_verdict;
 
+/*@ exits status: \exit_status ≡ \old(status);
+    ensures never_terminates: \false;
+    
+    assigns \exit_status \from status;
+ */
+void __gen_e_acsl_exit(int status);
+
+/*@ ensures result_ok_or_error: \result ≡ -1 ∨ \result ≥ 0;
+    ensures
+      initialization: stat_loc_init_on_success:
+        \result ≥ 0 ∧ \old(stat_loc) ≢ \null ⇒
+        \initialized(\old(stat_loc));
+    assigns \result, *stat_loc;
+    assigns \result \from (indirect: options);
+    assigns *stat_loc \from (indirect: options);
+    
+    behavior stat_loc_null:
+      assumes stat_loc_null: stat_loc ≡ \null;
+      assigns \result;
+      assigns \result \from \nothing;
+    
+    behavior stat_loc_non_null:
+      assumes stat_loc_non_null: stat_loc ≢ \null;
+      requires valid_stat_loc: \valid(stat_loc);
+ */
+pid_t __gen_e_acsl_waitpid(pid_t pid, int *stat_loc, int options);
+
+/*@ ensures
+      result_ok_child_or_error:
+        \result ≡ 0 ∨ \result > 0 ∨ \result ≡ -1;
+    assigns \result;
+    assigns \result \from \nothing;
+ */
+pid_t __gen_e_acsl_fork(void);
+
+/*@ requires valid_string_src: valid_read_string(src);
+    requires room_string: \valid(dest + (0 .. strlen(src)));
+    requires
+      separation:
+        \separated(dest + (0 .. strlen(src)), src + (0 .. strlen(src)));
+    ensures equal_contents: strcmp(\old(dest), \old(src)) ≡ 0;
+    ensures result_ptr: \result ≡ \old(dest);
+    assigns *(dest + (0 .. strlen{Old}(src))), \result;
+    assigns *(dest + (0 .. strlen{Old}(src)))
+      \from *(src + (0 .. strlen{Old}(src)));
+    assigns \result \from dest;
+ */
+char *__gen_e_acsl_strcpy(char * restrict dest, char const * restrict src);
+
+/*@ requires valid_nstring_src: valid_read_nstring(src, n);
+    requires room_nstring: \valid(dest + (0 .. n - 1));
+    requires separation: \separated(dest + (0 .. n - 1), src + (0 .. n - 1));
+    ensures result_ptr: \result ≡ \old(dest);
+    ensures initialization: \initialized(\old(dest) + (0 .. \old(n) - 1));
+    assigns *(dest + (0 .. n - 1)), \result;
+    assigns *(dest + (0 .. n - 1)) \from *(src + (0 .. n - 1));
+    assigns \result \from dest;
+    
+    behavior complete:
+      assumes src_fits: strlen(src) < n;
+      ensures equal_after_copy: strcmp(\old(dest), \old(src)) ≡ 0;
+    
+    behavior partial:
+      assumes src_too_long: n ≤ strlen(src);
+      ensures
+        equal_prefix:
+          memcmp{Post, Post}(\old(dest), \old(src), \old(n)) ≡ 0;
+ */
+char *__gen_e_acsl_strncpy(char * restrict dest, char const * restrict src,
+                           size_t n);
+
+/*@ requires valid_string_s: valid_read_string(s);
+    assigns \result;
+    assigns \result
+      \from (indirect: *(s + (0 .. strlen{Old}(s)))),
+            (indirect: __fc_heap_status);
+    allocates \result;
+    
+    behavior allocation:
+      assumes can_allocate: is_allocable(strlen(s));
+      ensures allocation: \fresh{Old, Here}(\result,strlen(\old(s)));
+      ensures
+        result_valid_string_and_same_contents:
+          valid_string(\result) ∧ strcmp(\result, \old(s)) ≡ 0;
+      assigns __fc_heap_status, \result;
+      assigns __fc_heap_status \from (indirect: s), __fc_heap_status;
+      assigns \result
+        \from (indirect: *(s + (0 .. strlen{Old}(s)))),
+              (indirect: __fc_heap_status);
+    
+    behavior no_allocation:
+      assumes cannot_allocate: ¬is_allocable(strlen(s));
+      ensures result_null: \result ≡ \null;
+      assigns \result;
+      assigns \result \from \nothing;
+      allocates \nothing;
+ */
+char *__gen_e_acsl_strdup(char const *s);
+
+/*@ requires valid_string_s: valid_read_string(s);
+    assigns \result;
+    assigns \result
+      \from (indirect: *(s + (0 .. strlen{Old}(s)))),
+            (indirect: __fc_heap_status);
+    allocates \result;
+    
+    behavior allocation:
+      assumes can_allocate: is_allocable(strlen(s));
+      ensures allocation: \fresh{Old, Here}(\result,strlen(\old(s)));
+      ensures
+        result_valid_string_and_same_contents:
+          valid_string(\result) ∧ strcmp(\result, \old(s)) ≡ 0;
+      assigns __fc_heap_status, \result;
+      assigns __fc_heap_status \from (indirect: s), __fc_heap_status;
+      assigns \result
+        \from (indirect: *(s + (0 .. strlen{Old}(s)))),
+              (indirect: __fc_heap_status);
+    
+    behavior no_allocation:
+      assumes cannot_allocate: ¬is_allocable(strlen(s));
+      ensures result_null: \result ≡ \null;
+      assigns \result;
+      assigns \result \from \nothing;
+      allocates \nothing;
+ */
+char *__gen_e_acsl_strdup(char const *s)
+{
+  __e_acsl_contract_t *__gen_e_acsl_contract;
+  char *__retres;
+  __e_acsl_store_block((void *)(& __retres),(size_t)8);
+  __gen_e_acsl_contract = __e_acsl_contract_init((size_t)2);
+  __retres = strdup(s);
+  {
+    int __gen_e_acsl_assumes_value;
+    __gen_e_acsl_assumes_value = __e_acsl_contract_get_behavior_assumes
+    ((__e_acsl_contract_t const *)__gen_e_acsl_contract,(size_t)1);
+    if (__gen_e_acsl_assumes_value) __e_acsl_assert(__retres == (char *)0,1,
+                                                    "Postcondition","strdup",
+                                                    "no_allocation: result_null: \\result == \\null",
+                                                    "FRAMAC_SHARE/libc/string.h",
+                                                    485);
+    __e_acsl_contract_clean(__gen_e_acsl_contract);
+    __e_acsl_delete_block((void *)(& __retres));
+    return __retres;
+  }
+}
+
+/*@ requires valid_nstring_src: valid_read_nstring(src, n);
+    requires room_nstring: \valid(dest + (0 .. n - 1));
+    requires separation: \separated(dest + (0 .. n - 1), src + (0 .. n - 1));
+    ensures result_ptr: \result ≡ \old(dest);
+    ensures initialization: \initialized(\old(dest) + (0 .. \old(n) - 1));
+    assigns *(dest + (0 .. n - 1)), \result;
+    assigns *(dest + (0 .. n - 1)) \from *(src + (0 .. n - 1));
+    assigns \result \from dest;
+    
+    behavior complete:
+      assumes src_fits: strlen(src) < n;
+      ensures equal_after_copy: strcmp(\old(dest), \old(src)) ≡ 0;
+    
+    behavior partial:
+      assumes src_too_long: n ≤ strlen(src);
+      ensures
+        equal_prefix:
+          memcmp{Post, Post}(\old(dest), \old(src), \old(n)) ≡ 0;
+ */
+char *__gen_e_acsl_strncpy(char * restrict dest, char const * restrict src,
+                           size_t n)
+{
+  __e_acsl_mpz_t __gen_e_acsl_at_3;
+  char *__gen_e_acsl_at_2;
+  char *__gen_e_acsl_at;
+  __e_acsl_contract_t *__gen_e_acsl_contract;
+  char *__retres;
+  {
+    unsigned long __gen_e_acsl_size;
+    __e_acsl_mpz_t __gen_e_acsl_n;
+    __e_acsl_mpz_t __gen_e_acsl_;
+    __e_acsl_mpz_t __gen_e_acsl_sub;
+    __e_acsl_mpz_t __gen_e_acsl__2;
+    __e_acsl_mpz_t __gen_e_acsl_sub_2;
+    __e_acsl_mpz_t __gen_e_acsl_add;
+    unsigned long __gen_e_acsl__3;
+    unsigned long __gen_e_acsl_if;
+    int __gen_e_acsl_valid;
+    unsigned long __gen_e_acsl_size_2;
+    unsigned long __gen_e_acsl__4;
+    unsigned long __gen_e_acsl_if_2;
+    int __gen_e_acsl_valid_read;
+    unsigned long __gen_e_acsl_size_3;
+    unsigned long __gen_e_acsl__5;
+    unsigned long __gen_e_acsl_if_3;
+    int __gen_e_acsl_valid_read_2;
+    unsigned long __gen_e_acsl_size_4;
+    unsigned long __gen_e_acsl__6;
+    unsigned long __gen_e_acsl_if_4;
+    unsigned long __gen_e_acsl_size_5;
+    unsigned long __gen_e_acsl__7;
+    unsigned long __gen_e_acsl_if_5;
+    int __gen_e_acsl_separated;
+    __e_acsl_store_block((void *)(& src),(size_t)8);
+    __e_acsl_store_block((void *)(& dest),(size_t)8);
+    __gen_e_acsl_contract = __e_acsl_contract_init((size_t)2);
+    __gmpz_init_set_ui(__gen_e_acsl_n,n);
+    __gmpz_init_set_si(__gen_e_acsl_,1L);
+    __gmpz_init(__gen_e_acsl_sub);
+    __gmpz_sub(__gen_e_acsl_sub,
+               (__e_acsl_mpz_struct const *)(__gen_e_acsl_n),
+               (__e_acsl_mpz_struct const *)(__gen_e_acsl_));
+    __gmpz_init_set_si(__gen_e_acsl__2,0L);
+    __gmpz_init(__gen_e_acsl_sub_2);
+    __gmpz_sub(__gen_e_acsl_sub_2,
+               (__e_acsl_mpz_struct const *)(__gen_e_acsl_sub),
+               (__e_acsl_mpz_struct const *)(__gen_e_acsl__2));
+    __gmpz_init(__gen_e_acsl_add);
+    __gmpz_add(__gen_e_acsl_add,
+               (__e_acsl_mpz_struct const *)(__gen_e_acsl_sub_2),
+               (__e_acsl_mpz_struct const *)(__gen_e_acsl_));
+    __gen_e_acsl__3 = __gmpz_get_ui((__e_acsl_mpz_struct const *)(__gen_e_acsl_add));
+    __gen_e_acsl_size = 1UL * __gen_e_acsl__3;
+    if (__gen_e_acsl_size <= 0UL) __gen_e_acsl_if = 0UL;
+    else __gen_e_acsl_if = __gen_e_acsl_size;
+    __gen_e_acsl_valid = __e_acsl_valid((void *)(dest + 1 * 0),
+                                        __gen_e_acsl_if,(void *)dest,
+                                        (void *)(& dest));
+    __e_acsl_assert(__gen_e_acsl_valid,1,"Precondition","strncpy",
+                    "room_nstring: \\valid(dest + (0 .. n - 1))",
+                    "FRAMAC_SHARE/libc/string.h",367);
+    __gen_e_acsl__4 = __gmpz_get_ui((__e_acsl_mpz_struct const *)(__gen_e_acsl_add));
+    __gen_e_acsl_size_2 = 1UL * __gen_e_acsl__4;
+    if (__gen_e_acsl_size_2 <= 0UL) __gen_e_acsl_if_2 = 0UL;
+    else __gen_e_acsl_if_2 = __gen_e_acsl_size_2;
+    __gen_e_acsl_valid_read = __e_acsl_valid_read((void *)(dest + 1 * 0),
+                                                  __gen_e_acsl_if_2,
+                                                  (void *)dest,
+                                                  (void *)(& dest));
+    /*@ assert E_ACSL: separated_guard: \valid_read(dest + (0 .. n - 1)); */
+    __e_acsl_assert(__gen_e_acsl_valid_read,1,"RTE","strncpy",
+                    "separated_guard: \\valid_read(dest + (0 .. n - 1))",
+                    "FRAMAC_SHARE/libc/string.h",369);
+    __gen_e_acsl__5 = __gmpz_get_ui((__e_acsl_mpz_struct const *)(__gen_e_acsl_add));
+    __gen_e_acsl_size_3 = 1UL * __gen_e_acsl__5;
+    if (__gen_e_acsl_size_3 <= 0UL) __gen_e_acsl_if_3 = 0UL;
+    else __gen_e_acsl_if_3 = __gen_e_acsl_size_3;
+    __gen_e_acsl_valid_read_2 = __e_acsl_valid_read((void *)(src + 1 * 0),
+                                                    __gen_e_acsl_if_3,
+                                                    (void *)src,
+                                                    (void *)(& src));
+    /*@ assert E_ACSL: separated_guard: \valid_read(src + (0 .. n - 1)); */
+    __e_acsl_assert(__gen_e_acsl_valid_read_2,1,"RTE","strncpy",
+                    "separated_guard: \\valid_read(src + (0 .. n - 1))",
+                    "FRAMAC_SHARE/libc/string.h",369);
+    __gen_e_acsl__6 = __gmpz_get_ui((__e_acsl_mpz_struct const *)(__gen_e_acsl_add));
+    __gen_e_acsl_size_4 = 1UL * __gen_e_acsl__6;
+    if (__gen_e_acsl_size_4 <= 0UL) __gen_e_acsl_if_4 = 0UL;
+    else __gen_e_acsl_if_4 = __gen_e_acsl_size_4;
+    __gen_e_acsl__7 = __gmpz_get_ui((__e_acsl_mpz_struct const *)(__gen_e_acsl_add));
+    __gen_e_acsl_size_5 = 1UL * __gen_e_acsl__7;
+    if (__gen_e_acsl_size_5 <= 0UL) __gen_e_acsl_if_5 = 0UL;
+    else __gen_e_acsl_if_5 = __gen_e_acsl_size_5;
+    __gen_e_acsl_separated = __e_acsl_separated((size_t)2,dest + 1 * 0,
+                                                __gen_e_acsl_if_4,
+                                                src + 1 * 0,
+                                                __gen_e_acsl_if_5);
+    __e_acsl_assert(__gen_e_acsl_separated,1,"Precondition","strncpy",
+                    "separation: \\separated(dest + (0 .. n - 1), src + (0 .. n - 1))",
+                    "FRAMAC_SHARE/libc/string.h",369);
+    __gmpz_clear(__gen_e_acsl_n);
+    __gmpz_clear(__gen_e_acsl_);
+    __gmpz_clear(__gen_e_acsl_sub);
+    __gmpz_clear(__gen_e_acsl__2);
+    __gmpz_clear(__gen_e_acsl_sub_2);
+    __gmpz_clear(__gen_e_acsl_add);
+  }
+  {
+    __e_acsl_mpz_t __gen_e_acsl_n_2;
+    __gmpz_init_set_ui(__gen_e_acsl_n_2,n);
+    __gmpz_init_set(__gen_e_acsl_at_3,
+                    (__e_acsl_mpz_struct const *)(__gen_e_acsl_n_2));
+    __gmpz_clear(__gen_e_acsl_n_2);
+  }
+  __gen_e_acsl_at_2 = dest;
+  __gen_e_acsl_at = dest;
+  __retres = __e_acsl_builtin_strncpy(dest,src,n);
+  {
+    unsigned long __gen_e_acsl_size_6;
+    __e_acsl_mpz_t __gen_e_acsl__8;
+    __e_acsl_mpz_t __gen_e_acsl_sub_3;
+    __e_acsl_mpz_t __gen_e_acsl__9;
+    __e_acsl_mpz_t __gen_e_acsl_sub_4;
+    __e_acsl_mpz_t __gen_e_acsl_add_2;
+    unsigned long __gen_e_acsl__10;
+    unsigned long __gen_e_acsl_if_6;
+    int __gen_e_acsl_initialized;
+    __e_acsl_assert(__retres == __gen_e_acsl_at,1,"Postcondition","strncpy",
+                    "result_ptr: \\result == \\old(dest)",
+                    "FRAMAC_SHARE/libc/string.h",372);
+    __gmpz_init_set_si(__gen_e_acsl__8,1L);
+    __gmpz_init(__gen_e_acsl_sub_3);
+    __gmpz_sub(__gen_e_acsl_sub_3,
+               (__e_acsl_mpz_struct const *)(__gen_e_acsl_at_3),
+               (__e_acsl_mpz_struct const *)(__gen_e_acsl__8));
+    __gmpz_init_set_si(__gen_e_acsl__9,0L);
+    __gmpz_init(__gen_e_acsl_sub_4);
+    __gmpz_sub(__gen_e_acsl_sub_4,
+               (__e_acsl_mpz_struct const *)(__gen_e_acsl_sub_3),
+               (__e_acsl_mpz_struct const *)(__gen_e_acsl__9));
+    __gmpz_init(__gen_e_acsl_add_2);
+    __gmpz_add(__gen_e_acsl_add_2,
+               (__e_acsl_mpz_struct const *)(__gen_e_acsl_sub_4),
+               (__e_acsl_mpz_struct const *)(__gen_e_acsl__8));
+    __gen_e_acsl__10 = __gmpz_get_ui((__e_acsl_mpz_struct const *)(__gen_e_acsl_add_2));
+    __gen_e_acsl_size_6 = 1UL * __gen_e_acsl__10;
+    if (__gen_e_acsl_size_6 <= 0UL) __gen_e_acsl_if_6 = 0UL;
+    else __gen_e_acsl_if_6 = __gen_e_acsl_size_6;
+    __gen_e_acsl_initialized = __e_acsl_initialized((void *)(__gen_e_acsl_at_2 + 
+                                                             1 * 0),
+                                                    __gen_e_acsl_if_6);
+    __e_acsl_assert(__gen_e_acsl_initialized,1,"Postcondition","strncpy",
+                    "initialization: \\initialized(\\old(dest) + (0 .. \\old(n) - 1))",
+                    "FRAMAC_SHARE/libc/string.h",373);
+    __e_acsl_contract_clean(__gen_e_acsl_contract);
+    __e_acsl_delete_block((void *)(& src));
+    __e_acsl_delete_block((void *)(& dest));
+    __gmpz_clear(__gen_e_acsl__8);
+    __gmpz_clear(__gen_e_acsl_sub_3);
+    __gmpz_clear(__gen_e_acsl__9);
+    __gmpz_clear(__gen_e_acsl_sub_4);
+    __gmpz_clear(__gen_e_acsl_add_2);
+    __gmpz_clear(__gen_e_acsl_at_3);
+    return __retres;
+  }
+}
+
+/*@ requires valid_string_src: valid_read_string(src);
+    requires room_string: \valid(dest + (0 .. strlen(src)));
+    requires
+      separation:
+        \separated(dest + (0 .. strlen(src)), src + (0 .. strlen(src)));
+    ensures equal_contents: strcmp(\old(dest), \old(src)) ≡ 0;
+    ensures result_ptr: \result ≡ \old(dest);
+    assigns *(dest + (0 .. strlen{Old}(src))), \result;
+    assigns *(dest + (0 .. strlen{Old}(src)))
+      \from *(src + (0 .. strlen{Old}(src)));
+    assigns \result \from dest;
+ */
+char *__gen_e_acsl_strcpy(char * restrict dest, char const * restrict src)
+{
+  char *__gen_e_acsl_at;
+  char *__retres;
+  __e_acsl_store_block((void *)(& src),(size_t)8);
+  __e_acsl_store_block((void *)(& dest),(size_t)8);
+  __gen_e_acsl_at = dest;
+  __retres = __e_acsl_builtin_strcpy(dest,src);
+  __e_acsl_assert(__retres == __gen_e_acsl_at,1,"Postcondition","strcpy",
+                  "result_ptr: \\result == \\old(dest)",
+                  "FRAMAC_SHARE/libc/string.h",361);
+  __e_acsl_delete_block((void *)(& src));
+  __e_acsl_delete_block((void *)(& dest));
+  return __retres;
+}
+
+/*@ ensures
+      result_ok_child_or_error:
+        \result ≡ 0 ∨ \result > 0 ∨ \result ≡ -1;
+    assigns \result;
+    assigns \result \from \nothing;
+ */
+pid_t __gen_e_acsl_fork(void)
+{
+  pid_t __retres;
+  __retres = fork();
+  {
+    int __gen_e_acsl_or;
+    int __gen_e_acsl_or_2;
+    if (__retres == 0) __gen_e_acsl_or = 1;
+    else __gen_e_acsl_or = __retres > 0;
+    if (__gen_e_acsl_or) __gen_e_acsl_or_2 = 1;
+    else __gen_e_acsl_or_2 = __retres == -1;
+    __e_acsl_assert(__gen_e_acsl_or_2,1,"Postcondition","fork",
+                    "result_ok_child_or_error: \\result == 0 || \\result > 0 || \\result == -1",
+                    "FRAMAC_SHARE/libc/unistd.h",859);
+    return __retres;
+  }
+}
+
+/*@ ensures result_ok_or_error: \result ≡ -1 ∨ \result ≥ 0;
+    ensures
+      initialization: stat_loc_init_on_success:
+        \result ≥ 0 ∧ \old(stat_loc) ≢ \null ⇒
+        \initialized(\old(stat_loc));
+    assigns \result, *stat_loc;
+    assigns \result \from (indirect: options);
+    assigns *stat_loc \from (indirect: options);
+    
+    behavior stat_loc_null:
+      assumes stat_loc_null: stat_loc ≡ \null;
+      assigns \result;
+      assigns \result \from \nothing;
+    
+    behavior stat_loc_non_null:
+      assumes stat_loc_non_null: stat_loc ≢ \null;
+      requires valid_stat_loc: \valid(stat_loc);
+ */
+pid_t __gen_e_acsl_waitpid(pid_t pid, int *stat_loc, int options)
+{
+  int *__gen_e_acsl_at_2;
+  int *__gen_e_acsl_at;
+  __e_acsl_contract_t *__gen_e_acsl_contract;
+  pid_t __retres;
+  {
+    int __gen_e_acsl_assumes_value;
+    __e_acsl_store_block((void *)(& stat_loc),(size_t)8);
+    __gen_e_acsl_contract = __e_acsl_contract_init((size_t)2);
+    __e_acsl_contract_set_behavior_assumes(__gen_e_acsl_contract,(size_t)0,
+                                           stat_loc == (int *)0);
+    __e_acsl_contract_set_behavior_assumes(__gen_e_acsl_contract,(size_t)1,
+                                           stat_loc != (int *)0);
+    __gen_e_acsl_assumes_value = __e_acsl_contract_get_behavior_assumes
+    ((__e_acsl_contract_t const *)__gen_e_acsl_contract,(size_t)1);
+    if (__gen_e_acsl_assumes_value) {
+      int __gen_e_acsl_valid;
+      __gen_e_acsl_valid = __e_acsl_valid((void *)stat_loc,sizeof(int),
+                                          (void *)stat_loc,
+                                          (void *)(& stat_loc));
+      __e_acsl_assert(__gen_e_acsl_valid,1,"Precondition","waitpid",
+                      "stat_loc_non_null: valid_stat_loc: \\valid(stat_loc)",
+                      "FRAMAC_SHARE/libc/sys/wait.h",92);
+    }
+  }
+  __gen_e_acsl_at_2 = stat_loc;
+  __gen_e_acsl_at = stat_loc;
+  __retres = waitpid(pid,stat_loc,options);
+  {
+    int __gen_e_acsl_or;
+    int __gen_e_acsl_and;
+    int __gen_e_acsl_implies;
+    if (__retres == -1) __gen_e_acsl_or = 1;
+    else __gen_e_acsl_or = __retres >= 0;
+    __e_acsl_assert(__gen_e_acsl_or,1,"Postcondition","waitpid",
+                    "result_ok_or_error: \\result == -1 || \\result >= 0",
+                    "FRAMAC_SHARE/libc/sys/wait.h",84);
+    if (__retres >= 0) __gen_e_acsl_and = __gen_e_acsl_at != (int *)0;
+    else __gen_e_acsl_and = 0;
+    if (! __gen_e_acsl_and) __gen_e_acsl_implies = 1;
+    else {
+      int __gen_e_acsl_initialized;
+      __gen_e_acsl_initialized = __e_acsl_initialized((void *)__gen_e_acsl_at_2,
+                                                      sizeof(int));
+      __gen_e_acsl_implies = __gen_e_acsl_initialized;
+    }
+    __e_acsl_assert(__gen_e_acsl_implies,1,"Postcondition","waitpid",
+                    "initialization: stat_loc_init_on_success:\n  \\result >= 0 && \\old(stat_loc) != \\null ==> \\initialized(\\old(stat_loc))",
+                    "FRAMAC_SHARE/libc/sys/wait.h",86);
+    __e_acsl_contract_clean(__gen_e_acsl_contract);
+    __e_acsl_delete_block((void *)(& stat_loc));
+    return __retres;
+  }
+}
+
+/*@ exits status: \exit_status ≡ \old(status);
+    ensures never_terminates: \false;
+    
+    assigns \exit_status \from status;
+ */
+void __gen_e_acsl_exit(int status)
+{
+  exit(status);
+  __e_acsl_assert(0,1,"Postcondition","exit","never_terminates: \\false",
+                  "FRAMAC_SHARE/libc/stdlib.h",473);
+  return;
+}
+
 void __e_acsl_globals_init(void)
 {
   static char __e_acsl_already_run = 0;
   if (! __e_acsl_already_run) {
     __e_acsl_already_run = 1;
-    __gen_e_acsl_literal_string_20 = "tests/builtin/strcpy.c:39";
-    __e_acsl_store_block((void *)__gen_e_acsl_literal_string_20,
+    __gen_e_acsl_literal_string_24 = "tests/builtin/strcpy.c:39";
+    __e_acsl_store_block((void *)__gen_e_acsl_literal_string_24,
                          sizeof("tests/builtin/strcpy.c:39"));
+    __e_acsl_full_init((void *)__gen_e_acsl_literal_string_24);
+    __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_24);
+    __gen_e_acsl_literal_string_23 = "tests/builtin/strcpy.c:38";
+    __e_acsl_store_block((void *)__gen_e_acsl_literal_string_23,
+                         sizeof("tests/builtin/strcpy.c:38"));
+    __e_acsl_full_init((void *)__gen_e_acsl_literal_string_23);
+    __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_23);
+    __gen_e_acsl_literal_string_22 = "tests/builtin/strcpy.c:37";
+    __e_acsl_store_block((void *)__gen_e_acsl_literal_string_22,
+                         sizeof("tests/builtin/strcpy.c:37"));
+    __e_acsl_full_init((void *)__gen_e_acsl_literal_string_22);
+    __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_22);
+    __gen_e_acsl_literal_string_21 = "tests/builtin/strcpy.c:36";
+    __e_acsl_store_block((void *)__gen_e_acsl_literal_string_21,
+                         sizeof("tests/builtin/strcpy.c:36"));
+    __e_acsl_full_init((void *)__gen_e_acsl_literal_string_21);
+    __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_21);
+    __gen_e_acsl_literal_string_20 = "tests/builtin/strcpy.c:35";
+    __e_acsl_store_block((void *)__gen_e_acsl_literal_string_20,
+                         sizeof("tests/builtin/strcpy.c:35"));
     __e_acsl_full_init((void *)__gen_e_acsl_literal_string_20);
     __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_20);
-    __gen_e_acsl_literal_string_19 = "tests/builtin/strcpy.c:38";
+    __gen_e_acsl_literal_string_19 = "tests/builtin/strcpy.c:34";
     __e_acsl_store_block((void *)__gen_e_acsl_literal_string_19,
-                         sizeof("tests/builtin/strcpy.c:38"));
+                         sizeof("tests/builtin/strcpy.c:34"));
     __e_acsl_full_init((void *)__gen_e_acsl_literal_string_19);
     __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_19);
-    __gen_e_acsl_literal_string_18 = "tests/builtin/strcpy.c:37";
+    __gen_e_acsl_literal_string_18 = "tests/builtin/strcpy.c:33";
     __e_acsl_store_block((void *)__gen_e_acsl_literal_string_18,
-                         sizeof("tests/builtin/strcpy.c:37"));
+                         sizeof("tests/builtin/strcpy.c:33"));
     __e_acsl_full_init((void *)__gen_e_acsl_literal_string_18);
     __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_18);
-    __gen_e_acsl_literal_string_17 = "tests/builtin/strcpy.c:36";
+    __gen_e_acsl_literal_string_17 = "tests/builtin/strcpy.c:32";
     __e_acsl_store_block((void *)__gen_e_acsl_literal_string_17,
-                         sizeof("tests/builtin/strcpy.c:36"));
+                         sizeof("tests/builtin/strcpy.c:32"));
     __e_acsl_full_init((void *)__gen_e_acsl_literal_string_17);
     __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_17);
-    __gen_e_acsl_literal_string_16 = "tests/builtin/strcpy.c:35";
+    __gen_e_acsl_literal_string_16 = "tests/builtin/strcpy.c:29";
     __e_acsl_store_block((void *)__gen_e_acsl_literal_string_16,
-                         sizeof("tests/builtin/strcpy.c:35"));
+                         sizeof("tests/builtin/strcpy.c:29"));
     __e_acsl_full_init((void *)__gen_e_acsl_literal_string_16);
     __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_16);
-    __gen_e_acsl_literal_string_15 = "tests/builtin/strcpy.c:34";
+    __gen_e_acsl_literal_string_15 = "tests/builtin/strcpy.c:28";
     __e_acsl_store_block((void *)__gen_e_acsl_literal_string_15,
-                         sizeof("tests/builtin/strcpy.c:34"));
+                         sizeof("tests/builtin/strcpy.c:28"));
     __e_acsl_full_init((void *)__gen_e_acsl_literal_string_15);
     __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_15);
-    __gen_e_acsl_literal_string_14 = "tests/builtin/strcpy.c:33";
+    __gen_e_acsl_literal_string_14 = "tests/builtin/strcpy.c:27";
     __e_acsl_store_block((void *)__gen_e_acsl_literal_string_14,
-                         sizeof("tests/builtin/strcpy.c:33"));
+                         sizeof("tests/builtin/strcpy.c:27"));
     __e_acsl_full_init((void *)__gen_e_acsl_literal_string_14);
     __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_14);
-    __gen_e_acsl_literal_string_13 = "tests/builtin/strcpy.c:32";
+    __gen_e_acsl_literal_string_13 = "tests/builtin/strcpy.c:26";
     __e_acsl_store_block((void *)__gen_e_acsl_literal_string_13,
-                         sizeof("tests/builtin/strcpy.c:32"));
+                         sizeof("tests/builtin/strcpy.c:26"));
     __e_acsl_full_init((void *)__gen_e_acsl_literal_string_13);
     __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_13);
-    __gen_e_acsl_literal_string_12 = "tests/builtin/strcpy.c:29";
+    __gen_e_acsl_literal_string_12 = "tests/builtin/strcpy.c:25";
     __e_acsl_store_block((void *)__gen_e_acsl_literal_string_12,
-                         sizeof("tests/builtin/strcpy.c:29"));
+                         sizeof("tests/builtin/strcpy.c:25"));
     __e_acsl_full_init((void *)__gen_e_acsl_literal_string_12);
     __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_12);
-    __gen_e_acsl_literal_string_11 = "tests/builtin/strcpy.c:28";
+    __gen_e_acsl_literal_string_11 = "tests/builtin/strcpy.c:24";
     __e_acsl_store_block((void *)__gen_e_acsl_literal_string_11,
-                         sizeof("tests/builtin/strcpy.c:28"));
+                         sizeof("tests/builtin/strcpy.c:24"));
     __e_acsl_full_init((void *)__gen_e_acsl_literal_string_11);
     __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_11);
-    __gen_e_acsl_literal_string_10 = "tests/builtin/strcpy.c:27";
+    __gen_e_acsl_literal_string_10 = "tests/builtin/strcpy.c:23";
     __e_acsl_store_block((void *)__gen_e_acsl_literal_string_10,
-                         sizeof("tests/builtin/strcpy.c:27"));
+                         sizeof("tests/builtin/strcpy.c:23"));
     __e_acsl_full_init((void *)__gen_e_acsl_literal_string_10);
     __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_10);
-    __gen_e_acsl_literal_string_9 = "tests/builtin/strcpy.c:26";
+    __gen_e_acsl_literal_string_9 = "tests/builtin/strcpy.c:22";
     __e_acsl_store_block((void *)__gen_e_acsl_literal_string_9,
-                         sizeof("tests/builtin/strcpy.c:26"));
+                         sizeof("tests/builtin/strcpy.c:22"));
     __e_acsl_full_init((void *)__gen_e_acsl_literal_string_9);
     __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_9);
-    __gen_e_acsl_literal_string_8 = "tests/builtin/strcpy.c:25";
-    __e_acsl_store_block((void *)__gen_e_acsl_literal_string_8,
-                         sizeof("tests/builtin/strcpy.c:25"));
-    __e_acsl_full_init((void *)__gen_e_acsl_literal_string_8);
-    __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_8);
-    __gen_e_acsl_literal_string_7 = "tests/builtin/strcpy.c:24";
+    __gen_e_acsl_literal_string_7 = "tests/builtin/strcpy.c:21";
     __e_acsl_store_block((void *)__gen_e_acsl_literal_string_7,
-                         sizeof("tests/builtin/strcpy.c:24"));
+                         sizeof("tests/builtin/strcpy.c:21"));
     __e_acsl_full_init((void *)__gen_e_acsl_literal_string_7);
     __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_7);
-    __gen_e_acsl_literal_string_6 = "tests/builtin/strcpy.c:23";
+    __gen_e_acsl_literal_string_6 = "abcd";
     __e_acsl_store_block((void *)__gen_e_acsl_literal_string_6,
-                         sizeof("tests/builtin/strcpy.c:23"));
+                         sizeof("abcd"));
     __e_acsl_full_init((void *)__gen_e_acsl_literal_string_6);
     __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_6);
-    __gen_e_acsl_literal_string_5 = "tests/builtin/strcpy.c:22";
-    __e_acsl_store_block((void *)__gen_e_acsl_literal_string_5,
-                         sizeof("tests/builtin/strcpy.c:22"));
-    __e_acsl_full_init((void *)__gen_e_acsl_literal_string_5);
-    __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_5);
-    __gen_e_acsl_literal_string_2 = "tests/builtin/strcpy.c:21";
+    __gen_e_acsl_literal_string = "TEST %d: ";
+    __e_acsl_store_block((void *)__gen_e_acsl_literal_string,
+                         sizeof("TEST %d: "));
+    __e_acsl_full_init((void *)__gen_e_acsl_literal_string);
+    __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string);
+    __gen_e_acsl_literal_string_2 = "OK: Expected signal at %s\n";
     __e_acsl_store_block((void *)__gen_e_acsl_literal_string_2,
-                         sizeof("tests/builtin/strcpy.c:21"));
+                         sizeof("OK: Expected signal at %s\n"));
     __e_acsl_full_init((void *)__gen_e_acsl_literal_string_2);
     __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_2);
-    __gen_e_acsl_literal_string = "abcd";
-    __e_acsl_store_block((void *)__gen_e_acsl_literal_string,sizeof("abcd"));
-    __e_acsl_full_init((void *)__gen_e_acsl_literal_string);
-    __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string);
-    __gen_e_acsl_literal_string_3 = "FAIL: Unexpected value return from test at %s\n";
+    __gen_e_acsl_literal_string_3 = "OK: Expected execution at %s\n";
     __e_acsl_store_block((void *)__gen_e_acsl_literal_string_3,
-                         sizeof("FAIL: Unexpected value return from test at %s\n"));
+                         sizeof("OK: Expected execution at %s\n"));
     __e_acsl_full_init((void *)__gen_e_acsl_literal_string_3);
     __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_3);
-    __gen_e_acsl_literal_string_4 = "";
-    __e_acsl_store_block((void *)__gen_e_acsl_literal_string_4,sizeof(""));
+    __gen_e_acsl_literal_string_5 = "FAIL: Unexpected signal at %s\n";
+    __e_acsl_store_block((void *)__gen_e_acsl_literal_string_5,
+                         sizeof("FAIL: Unexpected signal at %s\n"));
+    __e_acsl_full_init((void *)__gen_e_acsl_literal_string_5);
+    __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_5);
+    __gen_e_acsl_literal_string_4 = "FAIL: Unexpected execution at %s\n";
+    __e_acsl_store_block((void *)__gen_e_acsl_literal_string_4,
+                         sizeof("FAIL: Unexpected execution at %s\n"));
     __e_acsl_full_init((void *)__gen_e_acsl_literal_string_4);
     __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_4);
-    __e_acsl_store_block((void *)(& __gen_e_acsl_strdup),(size_t)1);
-    __e_acsl_full_init((void *)(& __gen_e_acsl_strdup));
-    __e_acsl_store_block((void *)(& __gen_e_acsl_strncpy),(size_t)1);
-    __e_acsl_full_init((void *)(& __gen_e_acsl_strncpy));
-    __e_acsl_store_block((void *)(& __gen_e_acsl_strcpy),(size_t)1);
-    __e_acsl_full_init((void *)(& __gen_e_acsl_strcpy));
-    __e_acsl_store_block((void *)(& __gen_e_acsl_exit),(size_t)1);
-    __e_acsl_full_init((void *)(& __gen_e_acsl_exit));
-    __e_acsl_store_block((void *)(& __fc_p_strerror),(size_t)8);
-    __e_acsl_full_init((void *)(& __fc_p_strerror));
-    __e_acsl_store_block((void *)(strerror),(size_t)64);
-    __e_acsl_full_init((void *)(& strerror));
-    __e_acsl_store_block((void *)(& __fc_strtok_ptr),(size_t)8);
-    __e_acsl_full_init((void *)(& __fc_strtok_ptr));
-    __e_acsl_store_block((void *)(& __fc_p_fopen),(size_t)8);
-    __e_acsl_full_init((void *)(& __fc_p_fopen));
-    __e_acsl_store_block((void *)(__fc_fopen),(size_t)128);
-    __e_acsl_full_init((void *)(& __fc_fopen));
-    __e_acsl_store_block((void *)(& __fc_rand_max),(size_t)8);
-    __e_acsl_full_init((void *)(& __fc_rand_max));
+    __gen_e_acsl_literal_string_8 = "";
+    __e_acsl_store_block((void *)__gen_e_acsl_literal_string_8,sizeof(""));
+    __e_acsl_full_init((void *)__gen_e_acsl_literal_string_8);
+    __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_8);
   }
   return;
 }
@@ -158,14 +641,13 @@ int main(int argc, char const **argv)
   int __retres;
   __e_acsl_memory_init(& argc,(char ***)(& argv),(size_t)8);
   __e_acsl_globals_init();
-  __e_acsl_store_block((void *)(& __retres),(size_t)4);
   char empty_str[1] = {(char)'\000'};
   __e_acsl_store_block((void *)(empty_str),(size_t)1);
   __e_acsl_full_init((void *)(& empty_str));
-  char *const_str = (char *)__gen_e_acsl_literal_string;
+  char *const_str = (char *)__gen_e_acsl_literal_string_6;
   __e_acsl_store_block((void *)(& const_str),(size_t)8);
   __e_acsl_full_init((void *)(& const_str));
-  char *src = __gen_e_acsl_strdup(__gen_e_acsl_literal_string);
+  char *src = __gen_e_acsl_strdup(__gen_e_acsl_literal_string_6);
   __e_acsl_store_block((void *)(& src),(size_t)8);
   __e_acsl_full_init((void *)(& src));
   char *dest1 = malloc((unsigned long)5);
@@ -179,602 +661,260 @@ int main(int argc, char const **argv)
   __e_acsl_store_block((void *)(dest3),(size_t)256);
   __e_acsl_full_init((void *)(& dest3));
   size_t len = (unsigned long)0;
-  __e_acsl_store_block((void *)(& len),(size_t)8);
-  __e_acsl_full_init((void *)(& len));
   char *unalloc_str = malloc((unsigned long)5);
   __e_acsl_store_block((void *)(& unalloc_str),(size_t)8);
   __e_acsl_full_init((void *)(& unalloc_str));
   char *_barrier = malloc((unsigned long)1);
-  __e_acsl_store_block((void *)(& _barrier),(size_t)8);
-  __e_acsl_full_init((void *)(& _barrier));
   free((void *)unalloc_str);
   {
-    int tmp_5;
-    __e_acsl_store_block((void *)(& tmp_5),(size_t)4);
-    sigjmp_buf *jmp_ctxt = get_jmp_ctxt();
-    __e_acsl_store_block((void *)(& jmp_ctxt),(size_t)8);
-    __e_acsl_full_init((void *)(& jmp_ctxt));
-    __e_acsl_full_init((void *)(& tmp_5));
-    /*@ assert Eva: mem_access: \valid_read(jmp_ctxt); */
-    tmp_5 = sigsetjmp(*jmp_ctxt,1);
-    switch (tmp_5) {
-      case 0:
-      {
-        set_handler();
-        __gen_e_acsl_strcpy(dest1,(char const *)src);
-        test_successful();
-        break;
-      }
-      case 1: {
-                signal_eval(0,0,__gen_e_acsl_literal_string_2);
-                break;
-              }
-      case 2: {
-                signal_eval(1,0,__gen_e_acsl_literal_string_2);
-                break;
-              }
-      default:
-      {
-        printf(__gen_e_acsl_literal_string_3,__gen_e_acsl_literal_string_2);
-        __gen_e_acsl_exit(3);
-      }
-    }
-    __e_acsl_delete_block((void *)(& tmp_5));
-    __e_acsl_delete_block((void *)(& jmp_ctxt));
+    pid_t pid = __gen_e_acsl_fork();
+    if (! pid) {
+      __gen_e_acsl_strcpy(dest1,(char const *)src);
+      __gen_e_acsl_exit(0);
+    }
+    else {
+      int process_status;
+      __e_acsl_store_block((void *)(& process_status),(size_t)4);
+      __gen_e_acsl_waitpid(pid,& process_status,0);
+      signal_eval(process_status,0,__gen_e_acsl_literal_string_7);
+      __e_acsl_delete_block((void *)(& process_status));
+    }
   }
   {
-    int tmp_7;
-    __e_acsl_store_block((void *)(& tmp_7),(size_t)4);
-    sigjmp_buf *jmp_ctxt_0 = get_jmp_ctxt();
-    __e_acsl_store_block((void *)(& jmp_ctxt_0),(size_t)8);
-    __e_acsl_full_init((void *)(& jmp_ctxt_0));
-    __e_acsl_full_init((void *)(& tmp_7));
-    tmp_7 = sigsetjmp(*jmp_ctxt_0,1);
-    switch (tmp_7) {
-      case 0:
-      {
-        set_handler();
-        __gen_e_acsl_strcpy(empty_str,__gen_e_acsl_literal_string_4);
-        test_successful();
-        break;
-      }
-      case 1: {
-                signal_eval(0,0,__gen_e_acsl_literal_string_5);
-                break;
-              }
-      case 2: {
-                signal_eval(1,0,__gen_e_acsl_literal_string_5);
-                break;
-              }
-      default:
-      {
-        printf(__gen_e_acsl_literal_string_3,__gen_e_acsl_literal_string_5);
-        __gen_e_acsl_exit(3);
-      }
-    }
-    __e_acsl_delete_block((void *)(& tmp_7));
-    __e_acsl_delete_block((void *)(& jmp_ctxt_0));
+    pid_t pid_0 = __gen_e_acsl_fork();
+    if (! pid_0) {
+      __gen_e_acsl_strcpy(empty_str,__gen_e_acsl_literal_string_8);
+      __gen_e_acsl_exit(0);
+    }
+    else {
+      int process_status_0;
+      __e_acsl_store_block((void *)(& process_status_0),(size_t)4);
+      __gen_e_acsl_waitpid(pid_0,& process_status_0,0);
+      signal_eval(process_status_0,0,__gen_e_acsl_literal_string_9);
+      __e_acsl_delete_block((void *)(& process_status_0));
+    }
   }
   {
-    int tmp_9;
-    __e_acsl_store_block((void *)(& tmp_9),(size_t)4);
-    sigjmp_buf *jmp_ctxt_1 = get_jmp_ctxt();
-    __e_acsl_store_block((void *)(& jmp_ctxt_1),(size_t)8);
-    __e_acsl_full_init((void *)(& jmp_ctxt_1));
-    __e_acsl_full_init((void *)(& tmp_9));
-    tmp_9 = sigsetjmp(*jmp_ctxt_1,1);
-    switch (tmp_9) {
-      case 0:
-      {
-        set_handler();
-        __gen_e_acsl_strcpy(dest2,(char const *)src);
-        test_successful();
-        break;
-      }
-      case 1: {
-                signal_eval(0,1,__gen_e_acsl_literal_string_6);
-                break;
-              }
-      case 2: {
-                signal_eval(1,1,__gen_e_acsl_literal_string_6);
-                break;
-              }
-      default:
-      {
-        printf(__gen_e_acsl_literal_string_3,__gen_e_acsl_literal_string_6);
-        __gen_e_acsl_exit(3);
-      }
-    }
-    __e_acsl_delete_block((void *)(& tmp_9));
-    __e_acsl_delete_block((void *)(& jmp_ctxt_1));
+    pid_t pid_1 = __gen_e_acsl_fork();
+    if (! pid_1) {
+      __gen_e_acsl_strcpy(dest2,(char const *)src);
+      __gen_e_acsl_exit(0);
+    }
+    else {
+      int process_status_1;
+      __e_acsl_store_block((void *)(& process_status_1),(size_t)4);
+      __gen_e_acsl_waitpid(pid_1,& process_status_1,0);
+      signal_eval(process_status_1,1,__gen_e_acsl_literal_string_10);
+      __e_acsl_delete_block((void *)(& process_status_1));
+    }
   }
   {
-    int tmp_11;
-    __e_acsl_store_block((void *)(& tmp_11),(size_t)4);
-    sigjmp_buf *jmp_ctxt_2 = get_jmp_ctxt();
-    __e_acsl_store_block((void *)(& jmp_ctxt_2),(size_t)8);
-    __e_acsl_full_init((void *)(& jmp_ctxt_2));
-    __e_acsl_full_init((void *)(& tmp_11));
-    tmp_11 = sigsetjmp(*jmp_ctxt_2,1);
-    switch (tmp_11) {
-      case 0:
-      {
-        set_handler();
-        __gen_e_acsl_strcpy(unalloc_str,(char const *)src);
-        test_successful();
-        break;
-      }
-      case 1: {
-                signal_eval(0,1,__gen_e_acsl_literal_string_7);
-                break;
-              }
-      case 2: {
-                signal_eval(1,1,__gen_e_acsl_literal_string_7);
-                break;
-              }
-      default:
-      {
-        printf(__gen_e_acsl_literal_string_3,__gen_e_acsl_literal_string_7);
-        __gen_e_acsl_exit(3);
-      }
-    }
-    __e_acsl_delete_block((void *)(& tmp_11));
-    __e_acsl_delete_block((void *)(& jmp_ctxt_2));
+    pid_t pid_2 = __gen_e_acsl_fork();
+    if (! pid_2) {
+      __gen_e_acsl_strcpy(unalloc_str,(char const *)src);
+      __gen_e_acsl_exit(0);
+    }
+    else {
+      int process_status_2;
+      __e_acsl_store_block((void *)(& process_status_2),(size_t)4);
+      __gen_e_acsl_waitpid(pid_2,& process_status_2,0);
+      signal_eval(process_status_2,1,__gen_e_acsl_literal_string_11);
+      __e_acsl_delete_block((void *)(& process_status_2));
+    }
   }
   {
-    int tmp_13;
-    __e_acsl_store_block((void *)(& tmp_13),(size_t)4);
-    sigjmp_buf *jmp_ctxt_3 = get_jmp_ctxt();
-    __e_acsl_store_block((void *)(& jmp_ctxt_3),(size_t)8);
-    __e_acsl_full_init((void *)(& jmp_ctxt_3));
-    __e_acsl_full_init((void *)(& tmp_13));
-    tmp_13 = sigsetjmp(*jmp_ctxt_3,1);
-    switch (tmp_13) {
-      case 0:
-      {
-        set_handler();
-        __gen_e_acsl_strcpy(const_str,(char const *)src);
-        test_successful();
-        break;
-      }
-      case 1: {
-                signal_eval(0,1,__gen_e_acsl_literal_string_8);
-                break;
-              }
-      case 2: {
-                signal_eval(1,1,__gen_e_acsl_literal_string_8);
-                break;
-              }
-      default:
-      {
-        printf(__gen_e_acsl_literal_string_3,__gen_e_acsl_literal_string_8);
-        __gen_e_acsl_exit(3);
-      }
-    }
-    __e_acsl_delete_block((void *)(& tmp_13));
-    __e_acsl_delete_block((void *)(& jmp_ctxt_3));
+    pid_t pid_3 = __gen_e_acsl_fork();
+    if (! pid_3) {
+      __gen_e_acsl_strcpy(const_str,(char const *)src);
+      __gen_e_acsl_exit(0);
+    }
+    else {
+      int process_status_3;
+      __e_acsl_store_block((void *)(& process_status_3),(size_t)4);
+      __gen_e_acsl_waitpid(pid_3,& process_status_3,0);
+      signal_eval(process_status_3,1,__gen_e_acsl_literal_string_12);
+      __e_acsl_delete_block((void *)(& process_status_3));
+    }
   }
   {
-    int tmp_15;
-    __e_acsl_store_block((void *)(& tmp_15),(size_t)4);
-    sigjmp_buf *jmp_ctxt_4 = get_jmp_ctxt();
-    __e_acsl_store_block((void *)(& jmp_ctxt_4),(size_t)8);
-    __e_acsl_full_init((void *)(& jmp_ctxt_4));
-    __e_acsl_full_init((void *)(& tmp_15));
-    tmp_15 = sigsetjmp(*jmp_ctxt_4,1);
-    switch (tmp_15) {
-      case 0:
-      {
-        set_handler();
-        __gen_e_acsl_strcpy(src,(char const *)const_str);
-        test_successful();
-        break;
-      }
-      case 1: {
-                signal_eval(0,0,__gen_e_acsl_literal_string_9);
-                break;
-              }
-      case 2: {
-                signal_eval(1,0,__gen_e_acsl_literal_string_9);
-                break;
-              }
-      default:
-      {
-        printf(__gen_e_acsl_literal_string_3,__gen_e_acsl_literal_string_9);
-        __gen_e_acsl_exit(3);
-      }
-    }
-    __e_acsl_delete_block((void *)(& tmp_15));
-    __e_acsl_delete_block((void *)(& jmp_ctxt_4));
+    pid_t pid_4 = __gen_e_acsl_fork();
+    if (! pid_4) {
+      __gen_e_acsl_strcpy(src,(char const *)const_str);
+      __gen_e_acsl_exit(0);
+    }
+    else {
+      int process_status_4;
+      __e_acsl_store_block((void *)(& process_status_4),(size_t)4);
+      __gen_e_acsl_waitpid(pid_4,& process_status_4,0);
+      signal_eval(process_status_4,0,__gen_e_acsl_literal_string_13);
+      __e_acsl_delete_block((void *)(& process_status_4));
+    }
   }
   {
-    int tmp_17;
-    __e_acsl_store_block((void *)(& tmp_17),(size_t)4);
-    sigjmp_buf *jmp_ctxt_5 = get_jmp_ctxt();
-    __e_acsl_store_block((void *)(& jmp_ctxt_5),(size_t)8);
-    __e_acsl_full_init((void *)(& jmp_ctxt_5));
-    __e_acsl_full_init((void *)(& tmp_17));
-    tmp_17 = sigsetjmp(*jmp_ctxt_5,1);
-    switch (tmp_17) {
-      case 0:
-      {
-        set_handler();
-        __gen_e_acsl_strcpy(src,(char const *)src);
-        test_successful();
-        break;
-      }
-      case 1: {
-                signal_eval(0,1,__gen_e_acsl_literal_string_10);
-                break;
-              }
-      case 2: {
-                signal_eval(1,1,__gen_e_acsl_literal_string_10);
-                break;
-              }
-      default:
-      {
-        printf(__gen_e_acsl_literal_string_3,__gen_e_acsl_literal_string_10);
-        __gen_e_acsl_exit(3);
-      }
-    }
-    __e_acsl_delete_block((void *)(& tmp_17));
-    __e_acsl_delete_block((void *)(& jmp_ctxt_5));
+    pid_t pid_5 = __gen_e_acsl_fork();
+    if (! pid_5) {
+      __gen_e_acsl_strcpy(src,(char const *)src);
+      __gen_e_acsl_exit(0);
+    }
+    else {
+      int process_status_5;
+      __e_acsl_store_block((void *)(& process_status_5),(size_t)4);
+      __gen_e_acsl_waitpid(pid_5,& process_status_5,0);
+      signal_eval(process_status_5,1,__gen_e_acsl_literal_string_14);
+      __e_acsl_delete_block((void *)(& process_status_5));
+    }
   }
   {
-    int tmp_19;
-    __e_acsl_store_block((void *)(& tmp_19),(size_t)4);
-    sigjmp_buf *jmp_ctxt_6 = get_jmp_ctxt();
-    __e_acsl_store_block((void *)(& jmp_ctxt_6),(size_t)8);
-    __e_acsl_full_init((void *)(& jmp_ctxt_6));
-    __e_acsl_full_init((void *)(& tmp_19));
-    tmp_19 = sigsetjmp(*jmp_ctxt_6,1);
-    switch (tmp_19) {
-      case 0:
-      {
-        set_handler();
-        __gen_e_acsl_strcpy(& dest3[5],(char const *)(dest3));
-        test_successful();
-        break;
-      }
-      case 1: {
-                signal_eval(0,0,__gen_e_acsl_literal_string_11);
-                break;
-              }
-      case 2: {
-                signal_eval(1,0,__gen_e_acsl_literal_string_11);
-                break;
-              }
-      default:
-      {
-        printf(__gen_e_acsl_literal_string_3,__gen_e_acsl_literal_string_11);
-        __gen_e_acsl_exit(3);
-      }
-    }
-    __e_acsl_delete_block((void *)(& tmp_19));
-    __e_acsl_delete_block((void *)(& jmp_ctxt_6));
+    pid_t pid_6 = __gen_e_acsl_fork();
+    if (! pid_6) {
+      __gen_e_acsl_strcpy(& dest3[5],(char const *)(dest3));
+      __gen_e_acsl_exit(0);
+    }
+    else {
+      int process_status_6;
+      __e_acsl_store_block((void *)(& process_status_6),(size_t)4);
+      __gen_e_acsl_waitpid(pid_6,& process_status_6,0);
+      signal_eval(process_status_6,0,__gen_e_acsl_literal_string_15);
+      __e_acsl_delete_block((void *)(& process_status_6));
+    }
   }
   {
-    int tmp_21;
-    __e_acsl_store_block((void *)(& tmp_21),(size_t)4);
-    sigjmp_buf *jmp_ctxt_7 = get_jmp_ctxt();
-    __e_acsl_store_block((void *)(& jmp_ctxt_7),(size_t)8);
-    __e_acsl_full_init((void *)(& jmp_ctxt_7));
-    __e_acsl_full_init((void *)(& tmp_21));
-    tmp_21 = sigsetjmp(*jmp_ctxt_7,1);
-    switch (tmp_21) {
-      case 0:
-      {
-        set_handler();
-        __gen_e_acsl_strcpy(& dest3[4],(char const *)(dest3));
-        test_successful();
-        break;
-      }
-      case 1: {
-                signal_eval(0,1,__gen_e_acsl_literal_string_12);
-                break;
-              }
-      case 2: {
-                signal_eval(1,1,__gen_e_acsl_literal_string_12);
-                break;
-              }
-      default:
-      {
-        printf(__gen_e_acsl_literal_string_3,__gen_e_acsl_literal_string_12);
-        __gen_e_acsl_exit(3);
-      }
-    }
-    __e_acsl_delete_block((void *)(& tmp_21));
-    __e_acsl_delete_block((void *)(& jmp_ctxt_7));
+    pid_t pid_7 = __gen_e_acsl_fork();
+    if (! pid_7) {
+      __gen_e_acsl_strcpy(& dest3[4],(char const *)(dest3));
+      __gen_e_acsl_exit(0);
+    }
+    else {
+      int process_status_7;
+      __e_acsl_store_block((void *)(& process_status_7),(size_t)4);
+      __gen_e_acsl_waitpid(pid_7,& process_status_7,0);
+      signal_eval(process_status_7,1,__gen_e_acsl_literal_string_16);
+      __e_acsl_delete_block((void *)(& process_status_7));
+    }
   }
   {
-    int tmp_23;
-    __e_acsl_store_block((void *)(& tmp_23),(size_t)4);
-    sigjmp_buf *jmp_ctxt_8 = get_jmp_ctxt();
-    __e_acsl_store_block((void *)(& jmp_ctxt_8),(size_t)8);
-    __e_acsl_full_init((void *)(& jmp_ctxt_8));
-    __e_acsl_full_init((void *)(& tmp_23));
-    tmp_23 = sigsetjmp(*jmp_ctxt_8,1);
-    switch (tmp_23) {
-      case 0:
-      {
-        set_handler();
-        __gen_e_acsl_strncpy(dest1,(char const *)src,(unsigned long)5);
-        test_successful();
-        break;
-      }
-      case 1: {
-                signal_eval(0,0,__gen_e_acsl_literal_string_13);
-                break;
-              }
-      case 2: {
-                signal_eval(1,0,__gen_e_acsl_literal_string_13);
-                break;
-              }
-      default:
-      {
-        printf(__gen_e_acsl_literal_string_3,__gen_e_acsl_literal_string_13);
-        __gen_e_acsl_exit(3);
-      }
-    }
-    __e_acsl_delete_block((void *)(& tmp_23));
-    __e_acsl_delete_block((void *)(& jmp_ctxt_8));
+    pid_t pid_8 = __gen_e_acsl_fork();
+    if (! pid_8) {
+      __gen_e_acsl_strncpy(dest1,(char const *)src,(unsigned long)5);
+      __gen_e_acsl_exit(0);
+    }
+    else {
+      int process_status_8;
+      __e_acsl_store_block((void *)(& process_status_8),(size_t)4);
+      __gen_e_acsl_waitpid(pid_8,& process_status_8,0);
+      signal_eval(process_status_8,0,__gen_e_acsl_literal_string_17);
+      __e_acsl_delete_block((void *)(& process_status_8));
+    }
   }
   {
-    int tmp_25;
-    __e_acsl_store_block((void *)(& tmp_25),(size_t)4);
-    sigjmp_buf *jmp_ctxt_9 = get_jmp_ctxt();
-    __e_acsl_store_block((void *)(& jmp_ctxt_9),(size_t)8);
-    __e_acsl_full_init((void *)(& jmp_ctxt_9));
-    __e_acsl_full_init((void *)(& tmp_25));
-    tmp_25 = sigsetjmp(*jmp_ctxt_9,1);
-    switch (tmp_25) {
-      case 0:
-      {
-        set_handler();
-        __gen_e_acsl_strncpy(dest1,(char const *)src,(unsigned long)6);
-        test_successful();
-        break;
-      }
-      case 1: {
-                signal_eval(0,1,__gen_e_acsl_literal_string_14);
-                break;
-              }
-      case 2: {
-                signal_eval(1,1,__gen_e_acsl_literal_string_14);
-                break;
-              }
-      default:
-      {
-        printf(__gen_e_acsl_literal_string_3,__gen_e_acsl_literal_string_14);
-        __gen_e_acsl_exit(3);
-      }
-    }
-    __e_acsl_delete_block((void *)(& tmp_25));
-    __e_acsl_delete_block((void *)(& jmp_ctxt_9));
+    pid_t pid_9 = __gen_e_acsl_fork();
+    if (! pid_9) {
+      __gen_e_acsl_strncpy(dest1,(char const *)src,(unsigned long)6);
+      __gen_e_acsl_exit(0);
+    }
+    else {
+      int process_status_9;
+      __e_acsl_store_block((void *)(& process_status_9),(size_t)4);
+      __gen_e_acsl_waitpid(pid_9,& process_status_9,0);
+      signal_eval(process_status_9,1,__gen_e_acsl_literal_string_18);
+      __e_acsl_delete_block((void *)(& process_status_9));
+    }
   }
   {
-    int tmp_27;
-    __e_acsl_store_block((void *)(& tmp_27),(size_t)4);
-    sigjmp_buf *jmp_ctxt_10 = get_jmp_ctxt();
-    __e_acsl_store_block((void *)(& jmp_ctxt_10),(size_t)8);
-    __e_acsl_full_init((void *)(& jmp_ctxt_10));
-    __e_acsl_full_init((void *)(& tmp_27));
-    tmp_27 = sigsetjmp(*jmp_ctxt_10,1);
-    switch (tmp_27) {
-      case 0:
-      {
-        set_handler();
-        __gen_e_acsl_strncpy(unalloc_str,(char const *)src,(unsigned long)5);
-        test_successful();
-        break;
-      }
-      case 1: {
-                signal_eval(0,1,__gen_e_acsl_literal_string_15);
-                break;
-              }
-      case 2: {
-                signal_eval(1,1,__gen_e_acsl_literal_string_15);
-                break;
-              }
-      default:
-      {
-        printf(__gen_e_acsl_literal_string_3,__gen_e_acsl_literal_string_15);
-        __gen_e_acsl_exit(3);
-      }
-    }
-    __e_acsl_delete_block((void *)(& tmp_27));
-    __e_acsl_delete_block((void *)(& jmp_ctxt_10));
+    pid_t pid_10 = __gen_e_acsl_fork();
+    if (! pid_10) {
+      __gen_e_acsl_strncpy(unalloc_str,(char const *)src,(unsigned long)5);
+      __gen_e_acsl_exit(0);
+    }
+    else {
+      int process_status_10;
+      __e_acsl_store_block((void *)(& process_status_10),(size_t)4);
+      __gen_e_acsl_waitpid(pid_10,& process_status_10,0);
+      signal_eval(process_status_10,1,__gen_e_acsl_literal_string_19);
+      __e_acsl_delete_block((void *)(& process_status_10));
+    }
   }
   {
-    int tmp_29;
-    __e_acsl_store_block((void *)(& tmp_29),(size_t)4);
-    sigjmp_buf *jmp_ctxt_11 = get_jmp_ctxt();
-    __e_acsl_store_block((void *)(& jmp_ctxt_11),(size_t)8);
-    __e_acsl_full_init((void *)(& jmp_ctxt_11));
-    __e_acsl_full_init((void *)(& tmp_29));
-    tmp_29 = sigsetjmp(*jmp_ctxt_11,1);
-    switch (tmp_29) {
-      case 0:
-      {
-        set_handler();
-        __gen_e_acsl_strncpy(const_str,(char const *)src,(unsigned long)5);
-        test_successful();
-        break;
-      }
-      case 1: {
-                signal_eval(0,1,__gen_e_acsl_literal_string_16);
-                break;
-              }
-      case 2: {
-                signal_eval(1,1,__gen_e_acsl_literal_string_16);
-                break;
-              }
-      default:
-      {
-        printf(__gen_e_acsl_literal_string_3,__gen_e_acsl_literal_string_16);
-        __gen_e_acsl_exit(3);
-      }
-    }
-    __e_acsl_delete_block((void *)(& tmp_29));
-    __e_acsl_delete_block((void *)(& jmp_ctxt_11));
+    pid_t pid_11 = __gen_e_acsl_fork();
+    if (! pid_11) {
+      __gen_e_acsl_strncpy(const_str,(char const *)src,(unsigned long)5);
+      __gen_e_acsl_exit(0);
+    }
+    else {
+      int process_status_11;
+      __e_acsl_store_block((void *)(& process_status_11),(size_t)4);
+      __gen_e_acsl_waitpid(pid_11,& process_status_11,0);
+      signal_eval(process_status_11,1,__gen_e_acsl_literal_string_20);
+      __e_acsl_delete_block((void *)(& process_status_11));
+    }
   }
   {
-    int tmp_31;
-    __e_acsl_store_block((void *)(& tmp_31),(size_t)4);
-    sigjmp_buf *jmp_ctxt_12 = get_jmp_ctxt();
-    __e_acsl_store_block((void *)(& jmp_ctxt_12),(size_t)8);
-    __e_acsl_full_init((void *)(& jmp_ctxt_12));
-    __e_acsl_full_init((void *)(& tmp_31));
-    tmp_31 = sigsetjmp(*jmp_ctxt_12,1);
-    switch (tmp_31) {
-      case 0:
-      {
-        set_handler();
-        __gen_e_acsl_strncpy(src,(char const *)const_str,(unsigned long)5);
-        test_successful();
-        break;
-      }
-      case 1: {
-                signal_eval(0,0,__gen_e_acsl_literal_string_17);
-                break;
-              }
-      case 2: {
-                signal_eval(1,0,__gen_e_acsl_literal_string_17);
-                break;
-              }
-      default:
-      {
-        printf(__gen_e_acsl_literal_string_3,__gen_e_acsl_literal_string_17);
-        __gen_e_acsl_exit(3);
-      }
-    }
-    __e_acsl_delete_block((void *)(& tmp_31));
-    __e_acsl_delete_block((void *)(& jmp_ctxt_12));
+    pid_t pid_12 = __gen_e_acsl_fork();
+    if (! pid_12) {
+      __gen_e_acsl_strncpy(src,(char const *)const_str,(unsigned long)5);
+      __gen_e_acsl_exit(0);
+    }
+    else {
+      int process_status_12;
+      __e_acsl_store_block((void *)(& process_status_12),(size_t)4);
+      __gen_e_acsl_waitpid(pid_12,& process_status_12,0);
+      signal_eval(process_status_12,0,__gen_e_acsl_literal_string_21);
+      __e_acsl_delete_block((void *)(& process_status_12));
+    }
   }
   {
-    int tmp_33;
-    __e_acsl_store_block((void *)(& tmp_33),(size_t)4);
-    sigjmp_buf *jmp_ctxt_13 = get_jmp_ctxt();
-    __e_acsl_store_block((void *)(& jmp_ctxt_13),(size_t)8);
-    __e_acsl_full_init((void *)(& jmp_ctxt_13));
-    __e_acsl_full_init((void *)(& tmp_33));
-    tmp_33 = sigsetjmp(*jmp_ctxt_13,1);
-    switch (tmp_33) {
-      case 0:
-      {
-        set_handler();
-        __gen_e_acsl_strncpy(src,(char const *)src,(unsigned long)5);
-        test_successful();
-        break;
-      }
-      case 1: {
-                signal_eval(0,1,__gen_e_acsl_literal_string_18);
-                break;
-              }
-      case 2: {
-                signal_eval(1,1,__gen_e_acsl_literal_string_18);
-                break;
-              }
-      default:
-      {
-        printf(__gen_e_acsl_literal_string_3,__gen_e_acsl_literal_string_18);
-        __gen_e_acsl_exit(3);
-      }
-    }
-    __e_acsl_delete_block((void *)(& tmp_33));
-    __e_acsl_delete_block((void *)(& jmp_ctxt_13));
+    pid_t pid_13 = __gen_e_acsl_fork();
+    if (! pid_13) {
+      __gen_e_acsl_strncpy(src,(char const *)src,(unsigned long)5);
+      __gen_e_acsl_exit(0);
+    }
+    else {
+      int process_status_13;
+      __e_acsl_store_block((void *)(& process_status_13),(size_t)4);
+      __gen_e_acsl_waitpid(pid_13,& process_status_13,0);
+      signal_eval(process_status_13,1,__gen_e_acsl_literal_string_22);
+      __e_acsl_delete_block((void *)(& process_status_13));
+    }
   }
   {
-    int tmp_35;
-    __e_acsl_store_block((void *)(& tmp_35),(size_t)4);
-    sigjmp_buf *jmp_ctxt_14 = get_jmp_ctxt();
-    __e_acsl_store_block((void *)(& jmp_ctxt_14),(size_t)8);
-    __e_acsl_full_init((void *)(& jmp_ctxt_14));
-    __e_acsl_full_init((void *)(& tmp_35));
-    tmp_35 = sigsetjmp(*jmp_ctxt_14,1);
-    switch (tmp_35) {
-      case 0:
-      {
-        set_handler();
-        __gen_e_acsl_strncpy(& dest3[5],(char const *)(dest3),
-                             (unsigned long)5);
-        test_successful();
-        break;
-      }
-      case 1: {
-                signal_eval(0,0,__gen_e_acsl_literal_string_19);
-                break;
-              }
-      case 2: {
-                signal_eval(1,0,__gen_e_acsl_literal_string_19);
-                break;
-              }
-      default:
-      {
-        printf(__gen_e_acsl_literal_string_3,__gen_e_acsl_literal_string_19);
-        __gen_e_acsl_exit(3);
-      }
-    }
-    __e_acsl_delete_block((void *)(& tmp_35));
-    __e_acsl_delete_block((void *)(& jmp_ctxt_14));
+    pid_t pid_14 = __gen_e_acsl_fork();
+    if (! pid_14) {
+      __gen_e_acsl_strncpy(& dest3[5],(char const *)(dest3),(unsigned long)5);
+      __gen_e_acsl_exit(0);
+    }
+    else {
+      int process_status_14;
+      __e_acsl_store_block((void *)(& process_status_14),(size_t)4);
+      __gen_e_acsl_waitpid(pid_14,& process_status_14,0);
+      signal_eval(process_status_14,0,__gen_e_acsl_literal_string_23);
+      __e_acsl_delete_block((void *)(& process_status_14));
+    }
   }
   {
-    int tmp_37;
-    __e_acsl_store_block((void *)(& tmp_37),(size_t)4);
-    sigjmp_buf *jmp_ctxt_15 = get_jmp_ctxt();
-    __e_acsl_store_block((void *)(& jmp_ctxt_15),(size_t)8);
-    __e_acsl_full_init((void *)(& jmp_ctxt_15));
-    __e_acsl_full_init((void *)(& tmp_37));
-    tmp_37 = sigsetjmp(*jmp_ctxt_15,1);
-    switch (tmp_37) {
-      case 0:
-      {
-        set_handler();
-        __gen_e_acsl_strncpy(& dest3[4],(char const *)(dest3),
-                             (unsigned long)5);
-        test_successful();
-        break;
-      }
-      case 1: {
-                signal_eval(0,1,__gen_e_acsl_literal_string_20);
-                break;
-              }
-      case 2: {
-                signal_eval(1,1,__gen_e_acsl_literal_string_20);
-                break;
-              }
-      default:
-      {
-        printf(__gen_e_acsl_literal_string_3,__gen_e_acsl_literal_string_20);
-        __gen_e_acsl_exit(3);
-      }
-    }
-    __e_acsl_delete_block((void *)(& tmp_37));
-    __e_acsl_delete_block((void *)(& jmp_ctxt_15));
+    pid_t pid_15 = __gen_e_acsl_fork();
+    if (! pid_15) {
+      __gen_e_acsl_strncpy(& dest3[4],(char const *)(dest3),(unsigned long)5);
+      __gen_e_acsl_exit(0);
+    }
+    else {
+      int process_status_15;
+      __e_acsl_store_block((void *)(& process_status_15),(size_t)4);
+      __gen_e_acsl_waitpid(pid_15,& process_status_15,0);
+      signal_eval(process_status_15,1,__gen_e_acsl_literal_string_24);
+      __e_acsl_delete_block((void *)(& process_status_15));
+    }
   }
   free((void *)src);
   free((void *)dest1);
   free((void *)dest2);
-  __e_acsl_full_init((void *)(& __retres));
   __retres = 0;
-  __e_acsl_delete_block((void *)(& argv));
-  __e_acsl_delete_block((void *)(& argc));
-  __e_acsl_delete_block((void *)(& __fc_p_strerror));
-  __e_acsl_delete_block((void *)(strerror));
-  __e_acsl_delete_block((void *)(& __fc_strtok_ptr));
-  __e_acsl_delete_block((void *)(& __fc_p_fopen));
-  __e_acsl_delete_block((void *)(__fc_fopen));
-  __e_acsl_delete_block((void *)(& __fc_rand_max));
-  __e_acsl_delete_block((void *)(& _barrier));
   __e_acsl_delete_block((void *)(& unalloc_str));
-  __e_acsl_delete_block((void *)(& len));
   __e_acsl_delete_block((void *)(dest3));
   __e_acsl_delete_block((void *)(& dest2));
   __e_acsl_delete_block((void *)(& dest1));
   __e_acsl_delete_block((void *)(& src));
   __e_acsl_delete_block((void *)(& const_str));
   __e_acsl_delete_block((void *)(empty_str));
-  __e_acsl_delete_block((void *)(& __retres));
   __e_acsl_memory_clean();
   return __retres;
 }
diff --git a/src/plugins/e-acsl/tests/builtin/oracle_ci/gen_strlen.c b/src/plugins/e-acsl/tests/builtin/oracle_ci/gen_strlen.c
index 7867b6295cb6891ecc6de1aec8adc86cf7f4aaf5..c41b52a79621e44ffd8faabe1a653779c03485f0 100644
--- a/src/plugins/e-acsl/tests/builtin/oracle_ci/gen_strlen.c
+++ b/src/plugins/e-acsl/tests/builtin/oracle_ci/gen_strlen.c
@@ -1,107 +1,369 @@
 /* Generated by Frama-C */
-#include "setjmp.h"
 #include "signal.h"
+#include "stddef.h"
 #include "stdio.h"
 #include "stdlib.h"
 #include "string.h"
-char *__gen_e_acsl_literal_string_3;
-char *__gen_e_acsl_literal_string_2;
+#include "sys/select.h"
+#include "sys/time.h"
+#include "sys/types.h"
+#include "sys/wait.h"
+#include "unistd.h"
+char *__gen_e_acsl_literal_string_8;
+char *__gen_e_acsl_literal_string_7;
+char *__gen_e_acsl_literal_string_15;
+char *__gen_e_acsl_literal_string_14;
+char *__gen_e_acsl_literal_string_13;
+char *__gen_e_acsl_literal_string_12;
 char *__gen_e_acsl_literal_string_11;
 char *__gen_e_acsl_literal_string_10;
 char *__gen_e_acsl_literal_string_9;
-char *__gen_e_acsl_literal_string_8;
-char *__gen_e_acsl_literal_string_7;
-char *__gen_e_acsl_literal_string_6;
-char *__gen_e_acsl_literal_string_4;
-char *__gen_e_acsl_literal_string_5;
 char *__gen_e_acsl_literal_string;
+char *__gen_e_acsl_literal_string_2;
+char *__gen_e_acsl_literal_string_3;
+char *__gen_e_acsl_literal_string_5;
+char *__gen_e_acsl_literal_string_4;
+char *__gen_e_acsl_literal_string_6;
 extern int __e_acsl_sound_verdict;
 
+/*@ exits status: \exit_status ≢ 0;
+    ensures never_terminates: \false;
+    
+    assigns \exit_status \from \nothing;
+ */
+void __gen_e_acsl_abort(void);
+
+/*@ exits status: \exit_status ≡ \old(status);
+    ensures never_terminates: \false;
+    
+    assigns \exit_status \from status;
+ */
+void __gen_e_acsl_exit(int status);
+
+/*@ ensures result_ok_or_error: \result ≡ -1 ∨ \result ≥ 0;
+    ensures
+      initialization: stat_loc_init_on_success:
+        \result ≥ 0 ∧ \old(stat_loc) ≢ \null ⇒
+        \initialized(\old(stat_loc));
+    assigns \result, *stat_loc;
+    assigns \result \from (indirect: options);
+    assigns *stat_loc \from (indirect: options);
+    
+    behavior stat_loc_null:
+      assumes stat_loc_null: stat_loc ≡ \null;
+      assigns \result;
+      assigns \result \from \nothing;
+    
+    behavior stat_loc_non_null:
+      assumes stat_loc_non_null: stat_loc ≢ \null;
+      requires valid_stat_loc: \valid(stat_loc);
+ */
+pid_t __gen_e_acsl_waitpid(pid_t pid, int *stat_loc, int options);
+
+/*@ ensures
+      result_ok_child_or_error:
+        \result ≡ 0 ∨ \result > 0 ∨ \result ≡ -1;
+    assigns \result;
+    assigns \result \from \nothing;
+ */
+pid_t __gen_e_acsl_fork(void);
+
+/*@ requires valid_string_s: valid_read_string(s);
+    ensures acsl_c_equiv: \result ≡ strlen(\old(s));
+    assigns \result;
+    assigns \result \from (indirect: *(s + (0 ..)));
+ */
+size_t __gen_e_acsl_strlen(char const *s);
+
+/*@ requires valid_string_s: valid_read_string(s);
+    assigns \result;
+    assigns \result
+      \from (indirect: *(s + (0 .. strlen{Old}(s)))),
+            (indirect: __fc_heap_status);
+    allocates \result;
+    
+    behavior allocation:
+      assumes can_allocate: is_allocable(strlen(s));
+      ensures allocation: \fresh{Old, Here}(\result,strlen(\old(s)));
+      ensures
+        result_valid_string_and_same_contents:
+          valid_string(\result) ∧ strcmp(\result, \old(s)) ≡ 0;
+      assigns __fc_heap_status, \result;
+      assigns __fc_heap_status \from (indirect: s), __fc_heap_status;
+      assigns \result
+        \from (indirect: *(s + (0 .. strlen{Old}(s)))),
+              (indirect: __fc_heap_status);
+    
+    behavior no_allocation:
+      assumes cannot_allocate: ¬is_allocable(strlen(s));
+      ensures result_null: \result ≡ \null;
+      assigns \result;
+      assigns \result \from \nothing;
+      allocates \nothing;
+ */
+char *__gen_e_acsl_strdup(char const *s);
+
+/*@ requires valid_string_s: valid_read_string(s);
+    assigns \result;
+    assigns \result
+      \from (indirect: *(s + (0 .. strlen{Old}(s)))),
+            (indirect: __fc_heap_status);
+    allocates \result;
+    
+    behavior allocation:
+      assumes can_allocate: is_allocable(strlen(s));
+      ensures allocation: \fresh{Old, Here}(\result,strlen(\old(s)));
+      ensures
+        result_valid_string_and_same_contents:
+          valid_string(\result) ∧ strcmp(\result, \old(s)) ≡ 0;
+      assigns __fc_heap_status, \result;
+      assigns __fc_heap_status \from (indirect: s), __fc_heap_status;
+      assigns \result
+        \from (indirect: *(s + (0 .. strlen{Old}(s)))),
+              (indirect: __fc_heap_status);
+    
+    behavior no_allocation:
+      assumes cannot_allocate: ¬is_allocable(strlen(s));
+      ensures result_null: \result ≡ \null;
+      assigns \result;
+      assigns \result \from \nothing;
+      allocates \nothing;
+ */
+char *__gen_e_acsl_strdup(char const *s)
+{
+  __e_acsl_contract_t *__gen_e_acsl_contract;
+  char *__retres;
+  __gen_e_acsl_contract = __e_acsl_contract_init((size_t)2);
+  __retres = strdup(s);
+  {
+    int __gen_e_acsl_assumes_value;
+    __gen_e_acsl_assumes_value = __e_acsl_contract_get_behavior_assumes
+    ((__e_acsl_contract_t const *)__gen_e_acsl_contract,(size_t)1);
+    if (__gen_e_acsl_assumes_value) __e_acsl_assert(__retres == (char *)0,1,
+                                                    "Postcondition","strdup",
+                                                    "no_allocation: result_null: \\result == \\null",
+                                                    "FRAMAC_SHARE/libc/string.h",
+                                                    485);
+    __e_acsl_contract_clean(__gen_e_acsl_contract);
+    return __retres;
+  }
+}
+
+/*@ requires valid_string_s: valid_read_string(s);
+    ensures acsl_c_equiv: \result ≡ strlen(\old(s));
+    assigns \result;
+    assigns \result \from (indirect: *(s + (0 ..)));
+ */
+size_t __gen_e_acsl_strlen(char const *s)
+{
+  size_t __retres;
+  __retres = __e_acsl_builtin_strlen(s);
+  return __retres;
+}
+
+/*@ ensures
+      result_ok_child_or_error:
+        \result ≡ 0 ∨ \result > 0 ∨ \result ≡ -1;
+    assigns \result;
+    assigns \result \from \nothing;
+ */
+pid_t __gen_e_acsl_fork(void)
+{
+  pid_t __retres;
+  __retres = fork();
+  {
+    int __gen_e_acsl_or;
+    int __gen_e_acsl_or_2;
+    if (__retres == 0) __gen_e_acsl_or = 1;
+    else __gen_e_acsl_or = __retres > 0;
+    if (__gen_e_acsl_or) __gen_e_acsl_or_2 = 1;
+    else __gen_e_acsl_or_2 = __retres == -1;
+    __e_acsl_assert(__gen_e_acsl_or_2,1,"Postcondition","fork",
+                    "result_ok_child_or_error: \\result == 0 || \\result > 0 || \\result == -1",
+                    "FRAMAC_SHARE/libc/unistd.h",859);
+    return __retres;
+  }
+}
+
+/*@ ensures result_ok_or_error: \result ≡ -1 ∨ \result ≥ 0;
+    ensures
+      initialization: stat_loc_init_on_success:
+        \result ≥ 0 ∧ \old(stat_loc) ≢ \null ⇒
+        \initialized(\old(stat_loc));
+    assigns \result, *stat_loc;
+    assigns \result \from (indirect: options);
+    assigns *stat_loc \from (indirect: options);
+    
+    behavior stat_loc_null:
+      assumes stat_loc_null: stat_loc ≡ \null;
+      assigns \result;
+      assigns \result \from \nothing;
+    
+    behavior stat_loc_non_null:
+      assumes stat_loc_non_null: stat_loc ≢ \null;
+      requires valid_stat_loc: \valid(stat_loc);
+ */
+pid_t __gen_e_acsl_waitpid(pid_t pid, int *stat_loc, int options)
+{
+  int *__gen_e_acsl_at_2;
+  int *__gen_e_acsl_at;
+  __e_acsl_contract_t *__gen_e_acsl_contract;
+  pid_t __retres;
+  {
+    int __gen_e_acsl_assumes_value;
+    __e_acsl_store_block((void *)(& stat_loc),(size_t)8);
+    __gen_e_acsl_contract = __e_acsl_contract_init((size_t)2);
+    __e_acsl_contract_set_behavior_assumes(__gen_e_acsl_contract,(size_t)0,
+                                           stat_loc == (int *)0);
+    __e_acsl_contract_set_behavior_assumes(__gen_e_acsl_contract,(size_t)1,
+                                           stat_loc != (int *)0);
+    __gen_e_acsl_assumes_value = __e_acsl_contract_get_behavior_assumes
+    ((__e_acsl_contract_t const *)__gen_e_acsl_contract,(size_t)1);
+    if (__gen_e_acsl_assumes_value) {
+      int __gen_e_acsl_valid;
+      __gen_e_acsl_valid = __e_acsl_valid((void *)stat_loc,sizeof(int),
+                                          (void *)stat_loc,
+                                          (void *)(& stat_loc));
+      __e_acsl_assert(__gen_e_acsl_valid,1,"Precondition","waitpid",
+                      "stat_loc_non_null: valid_stat_loc: \\valid(stat_loc)",
+                      "FRAMAC_SHARE/libc/sys/wait.h",92);
+    }
+  }
+  __gen_e_acsl_at_2 = stat_loc;
+  __gen_e_acsl_at = stat_loc;
+  __retres = waitpid(pid,stat_loc,options);
+  {
+    int __gen_e_acsl_or;
+    int __gen_e_acsl_and;
+    int __gen_e_acsl_implies;
+    if (__retres == -1) __gen_e_acsl_or = 1;
+    else __gen_e_acsl_or = __retres >= 0;
+    __e_acsl_assert(__gen_e_acsl_or,1,"Postcondition","waitpid",
+                    "result_ok_or_error: \\result == -1 || \\result >= 0",
+                    "FRAMAC_SHARE/libc/sys/wait.h",84);
+    if (__retres >= 0) __gen_e_acsl_and = __gen_e_acsl_at != (int *)0;
+    else __gen_e_acsl_and = 0;
+    if (! __gen_e_acsl_and) __gen_e_acsl_implies = 1;
+    else {
+      int __gen_e_acsl_initialized;
+      __gen_e_acsl_initialized = __e_acsl_initialized((void *)__gen_e_acsl_at_2,
+                                                      sizeof(int));
+      __gen_e_acsl_implies = __gen_e_acsl_initialized;
+    }
+    __e_acsl_assert(__gen_e_acsl_implies,1,"Postcondition","waitpid",
+                    "initialization: stat_loc_init_on_success:\n  \\result >= 0 && \\old(stat_loc) != \\null ==> \\initialized(\\old(stat_loc))",
+                    "FRAMAC_SHARE/libc/sys/wait.h",86);
+    __e_acsl_contract_clean(__gen_e_acsl_contract);
+    __e_acsl_delete_block((void *)(& stat_loc));
+    return __retres;
+  }
+}
+
+/*@ exits status: \exit_status ≡ \old(status);
+    ensures never_terminates: \false;
+    
+    assigns \exit_status \from status;
+ */
+void __gen_e_acsl_exit(int status)
+{
+  exit(status);
+  __e_acsl_assert(0,1,"Postcondition","exit","never_terminates: \\false",
+                  "FRAMAC_SHARE/libc/stdlib.h",473);
+  return;
+}
+
+/*@ exits status: \exit_status ≢ 0;
+    ensures never_terminates: \false;
+    
+    assigns \exit_status \from \nothing;
+ */
+void __gen_e_acsl_abort(void)
+{
+  abort();
+  __e_acsl_assert(0,1,"Postcondition","abort","never_terminates: \\false",
+                  "FRAMAC_SHARE/libc/stdlib.h",460);
+  return;
+}
+
 void __e_acsl_globals_init(void)
 {
   static char __e_acsl_already_run = 0;
   if (! __e_acsl_already_run) {
     __e_acsl_already_run = 1;
-    __gen_e_acsl_literal_string_3 = "the hog";
-    __e_acsl_store_block((void *)__gen_e_acsl_literal_string_3,
+    __gen_e_acsl_literal_string_8 = "the hog";
+    __e_acsl_store_block((void *)__gen_e_acsl_literal_string_8,
                          sizeof("the hog"));
-    __e_acsl_full_init((void *)__gen_e_acsl_literal_string_3);
-    __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_3);
-    __gen_e_acsl_literal_string_2 = "the cat";
-    __e_acsl_store_block((void *)__gen_e_acsl_literal_string_2,
+    __e_acsl_full_init((void *)__gen_e_acsl_literal_string_8);
+    __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_8);
+    __gen_e_acsl_literal_string_7 = "the cat";
+    __e_acsl_store_block((void *)__gen_e_acsl_literal_string_7,
                          sizeof("the cat"));
-    __e_acsl_full_init((void *)__gen_e_acsl_literal_string_2);
-    __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_2);
-    __gen_e_acsl_literal_string_11 = "tests/builtin/strlen.c:28";
-    __e_acsl_store_block((void *)__gen_e_acsl_literal_string_11,
+    __e_acsl_full_init((void *)__gen_e_acsl_literal_string_7);
+    __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_7);
+    __gen_e_acsl_literal_string_15 = "tests/builtin/strlen.c:28";
+    __e_acsl_store_block((void *)__gen_e_acsl_literal_string_15,
                          sizeof("tests/builtin/strlen.c:28"));
+    __e_acsl_full_init((void *)__gen_e_acsl_literal_string_15);
+    __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_15);
+    __gen_e_acsl_literal_string_14 = "tests/builtin/strlen.c:26";
+    __e_acsl_store_block((void *)__gen_e_acsl_literal_string_14,
+                         sizeof("tests/builtin/strlen.c:26"));
+    __e_acsl_full_init((void *)__gen_e_acsl_literal_string_14);
+    __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_14);
+    __gen_e_acsl_literal_string_13 = "tests/builtin/strlen.c:25";
+    __e_acsl_store_block((void *)__gen_e_acsl_literal_string_13,
+                         sizeof("tests/builtin/strlen.c:25"));
+    __e_acsl_full_init((void *)__gen_e_acsl_literal_string_13);
+    __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_13);
+    __gen_e_acsl_literal_string_12 = "tests/builtin/strlen.c:21";
+    __e_acsl_store_block((void *)__gen_e_acsl_literal_string_12,
+                         sizeof("tests/builtin/strlen.c:21"));
+    __e_acsl_full_init((void *)__gen_e_acsl_literal_string_12);
+    __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_12);
+    __gen_e_acsl_literal_string_11 = "tests/builtin/strlen.c:20";
+    __e_acsl_store_block((void *)__gen_e_acsl_literal_string_11,
+                         sizeof("tests/builtin/strlen.c:20"));
     __e_acsl_full_init((void *)__gen_e_acsl_literal_string_11);
     __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_11);
-    __gen_e_acsl_literal_string_10 = "tests/builtin/strlen.c:26";
+    __gen_e_acsl_literal_string_10 = "tests/builtin/strlen.c:19";
     __e_acsl_store_block((void *)__gen_e_acsl_literal_string_10,
-                         sizeof("tests/builtin/strlen.c:26"));
+                         sizeof("tests/builtin/strlen.c:19"));
     __e_acsl_full_init((void *)__gen_e_acsl_literal_string_10);
     __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_10);
-    __gen_e_acsl_literal_string_9 = "tests/builtin/strlen.c:25";
+    __gen_e_acsl_literal_string_9 = "tests/builtin/strlen.c:18";
     __e_acsl_store_block((void *)__gen_e_acsl_literal_string_9,
-                         sizeof("tests/builtin/strlen.c:25"));
+                         sizeof("tests/builtin/strlen.c:18"));
     __e_acsl_full_init((void *)__gen_e_acsl_literal_string_9);
     __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_9);
-    __gen_e_acsl_literal_string_8 = "tests/builtin/strlen.c:21";
-    __e_acsl_store_block((void *)__gen_e_acsl_literal_string_8,
-                         sizeof("tests/builtin/strlen.c:21"));
-    __e_acsl_full_init((void *)__gen_e_acsl_literal_string_8);
-    __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_8);
-    __gen_e_acsl_literal_string_7 = "tests/builtin/strlen.c:20";
-    __e_acsl_store_block((void *)__gen_e_acsl_literal_string_7,
-                         sizeof("tests/builtin/strlen.c:20"));
-    __e_acsl_full_init((void *)__gen_e_acsl_literal_string_7);
-    __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_7);
-    __gen_e_acsl_literal_string_6 = "tests/builtin/strlen.c:19";
-    __e_acsl_store_block((void *)__gen_e_acsl_literal_string_6,
-                         sizeof("tests/builtin/strlen.c:19"));
-    __e_acsl_full_init((void *)__gen_e_acsl_literal_string_6);
-    __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_6);
-    __gen_e_acsl_literal_string_4 = "tests/builtin/strlen.c:18";
-    __e_acsl_store_block((void *)__gen_e_acsl_literal_string_4,
-                         sizeof("tests/builtin/strlen.c:18"));
-    __e_acsl_full_init((void *)__gen_e_acsl_literal_string_4);
-    __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_4);
-    __gen_e_acsl_literal_string_5 = "FAIL: Unexpected value return from test at %s\n";
+    __gen_e_acsl_literal_string = "TEST %d: ";
+    __e_acsl_store_block((void *)__gen_e_acsl_literal_string,
+                         sizeof("TEST %d: "));
+    __e_acsl_full_init((void *)__gen_e_acsl_literal_string);
+    __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string);
+    __gen_e_acsl_literal_string_2 = "OK: Expected signal at %s\n";
+    __e_acsl_store_block((void *)__gen_e_acsl_literal_string_2,
+                         sizeof("OK: Expected signal at %s\n"));
+    __e_acsl_full_init((void *)__gen_e_acsl_literal_string_2);
+    __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_2);
+    __gen_e_acsl_literal_string_3 = "OK: Expected execution at %s\n";
+    __e_acsl_store_block((void *)__gen_e_acsl_literal_string_3,
+                         sizeof("OK: Expected execution at %s\n"));
+    __e_acsl_full_init((void *)__gen_e_acsl_literal_string_3);
+    __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_3);
+    __gen_e_acsl_literal_string_5 = "FAIL: Unexpected signal at %s\n";
     __e_acsl_store_block((void *)__gen_e_acsl_literal_string_5,
-                         sizeof("FAIL: Unexpected value return from test at %s\n"));
+                         sizeof("FAIL: Unexpected signal at %s\n"));
     __e_acsl_full_init((void *)__gen_e_acsl_literal_string_5);
     __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_5);
-    __gen_e_acsl_literal_string = "";
-    __e_acsl_store_block((void *)__gen_e_acsl_literal_string,sizeof(""));
-    __e_acsl_full_init((void *)__gen_e_acsl_literal_string);
-    __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string);
-    __e_acsl_store_block((void *)(& __gen_e_acsl_strdup),(size_t)1);
-    __e_acsl_full_init((void *)(& __gen_e_acsl_strdup));
-    __e_acsl_store_block((void *)(& __gen_e_acsl_strlen),(size_t)1);
-    __e_acsl_full_init((void *)(& __gen_e_acsl_strlen));
-    __e_acsl_store_block((void *)(& __gen_e_acsl_exit),(size_t)1);
-    __e_acsl_full_init((void *)(& __gen_e_acsl_exit));
-    __e_acsl_store_block((void *)(& __gen_e_acsl_abort),(size_t)1);
-    __e_acsl_full_init((void *)(& __gen_e_acsl_abort));
-    __e_acsl_store_block((void *)(& __fc_p_strerror),(size_t)8);
-    __e_acsl_full_init((void *)(& __fc_p_strerror));
-    __e_acsl_store_block((void *)(strerror),(size_t)64);
-    __e_acsl_full_init((void *)(& strerror));
-    __e_acsl_store_block((void *)(& __fc_strtok_ptr),(size_t)8);
-    __e_acsl_full_init((void *)(& __fc_strtok_ptr));
-    __e_acsl_store_block((void *)(& __fc_p_fopen),(size_t)8);
-    __e_acsl_full_init((void *)(& __fc_p_fopen));
-    __e_acsl_store_block((void *)(__fc_fopen),(size_t)128);
-    __e_acsl_full_init((void *)(& __fc_fopen));
-    __e_acsl_store_block((void *)(& __fc_p_random48_counter),(size_t)8);
-    __e_acsl_full_init((void *)(& __fc_p_random48_counter));
-    __e_acsl_store_block((void *)(random48_counter),(size_t)6);
-    __e_acsl_full_init((void *)(& random48_counter));
-    __e_acsl_store_block((void *)(& __fc_random48_init),(size_t)4);
-    __e_acsl_full_init((void *)(& __fc_random48_init));
-    __e_acsl_store_block((void *)(& __fc_rand_max),(size_t)8);
-    __e_acsl_full_init((void *)(& __fc_rand_max));
+    __gen_e_acsl_literal_string_4 = "FAIL: Unexpected execution at %s\n";
+    __e_acsl_store_block((void *)__gen_e_acsl_literal_string_4,
+                         sizeof("FAIL: Unexpected execution at %s\n"));
+    __e_acsl_full_init((void *)__gen_e_acsl_literal_string_4);
+    __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_4);
+    __gen_e_acsl_literal_string_6 = "";
+    __e_acsl_store_block((void *)__gen_e_acsl_literal_string_6,sizeof(""));
+    __e_acsl_full_init((void *)__gen_e_acsl_literal_string_6);
+    __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_6);
   }
   return;
 }
@@ -112,14 +374,8 @@ int main(int argc, char const **argv)
   int len;
   __e_acsl_memory_init(& argc,(char ***)(& argv),(size_t)8);
   __e_acsl_globals_init();
-  __e_acsl_store_block((void *)(& len),(size_t)4);
-  __e_acsl_store_block((void *)(& __retres),(size_t)4);
-  char *empty_str = (char *)__gen_e_acsl_literal_string;
-  __e_acsl_store_block((void *)(& empty_str),(size_t)8);
-  __e_acsl_full_init((void *)(& empty_str));
-  char *heap_str = __gen_e_acsl_strdup(__gen_e_acsl_literal_string_2);
-  __e_acsl_store_block((void *)(& heap_str),(size_t)8);
-  __e_acsl_full_init((void *)(& heap_str));
+  char *empty_str = (char *)__gen_e_acsl_literal_string_6;
+  char *heap_str = __gen_e_acsl_strdup(__gen_e_acsl_literal_string_7);
   char stack_str[8] =
     {(char)'t',
      (char)'h',
@@ -129,323 +385,130 @@ int main(int argc, char const **argv)
      (char)'o',
      (char)'g',
      (char)'\000'};
-  __e_acsl_store_block((void *)(stack_str),(size_t)8);
-  __e_acsl_full_init((void *)(& stack_str));
-  char *const_str = (char *)__gen_e_acsl_literal_string_3;
-  __e_acsl_store_block((void *)(& const_str),(size_t)8);
-  __e_acsl_full_init((void *)(& const_str));
+  char *const_str = (char *)__gen_e_acsl_literal_string_8;
   {
-    int tmp_1;
-    __e_acsl_store_block((void *)(& tmp_1),(size_t)4);
-    sigjmp_buf *jmp_ctxt = get_jmp_ctxt();
-    __e_acsl_store_block((void *)(& jmp_ctxt),(size_t)8);
-    __e_acsl_full_init((void *)(& jmp_ctxt));
-    __e_acsl_full_init((void *)(& tmp_1));
-    /*@ assert Eva: mem_access: \valid_read(jmp_ctxt); */
-    tmp_1 = sigsetjmp(*jmp_ctxt,1);
-    switch (tmp_1) {
-      case 0:
-      {
-        size_t tmp_2;
-        __e_acsl_store_block((void *)(& tmp_2),(size_t)8);
-        set_handler();
-        __e_acsl_full_init((void *)(& tmp_2));
-        tmp_2 = __gen_e_acsl_strlen((char const *)empty_str);
-        __e_acsl_full_init((void *)(& len));
-        len = tmp_2 != (size_t)0;
-        if (len) __gen_e_acsl_abort();
-        test_successful();
-        __e_acsl_delete_block((void *)(& tmp_2));
-        break;
-        __e_acsl_delete_block((void *)(& tmp_2));
-      }
-      case 1: {
-                signal_eval(0,0,__gen_e_acsl_literal_string_4);
-                break;
-              }
-      case 2: {
-                signal_eval(1,0,__gen_e_acsl_literal_string_4);
-                break;
-              }
-      default:
-      {
-        printf(__gen_e_acsl_literal_string_5,__gen_e_acsl_literal_string_4);
-        __gen_e_acsl_exit(3);
-      }
+    pid_t pid = __gen_e_acsl_fork();
+    if (! pid) {
+      size_t tmp_1;
+      tmp_1 = __gen_e_acsl_strlen((char const *)empty_str);
+      len = tmp_1 != (size_t)0;
+      if (len) __gen_e_acsl_abort();
+      __gen_e_acsl_exit(0);
+    }
+    else {
+      int process_status;
+      __e_acsl_store_block((void *)(& process_status),(size_t)4);
+      __gen_e_acsl_waitpid(pid,& process_status,0);
+      signal_eval(process_status,0,__gen_e_acsl_literal_string_9);
+      __e_acsl_delete_block((void *)(& process_status));
     }
-    __e_acsl_delete_block((void *)(& tmp_1));
-    __e_acsl_delete_block((void *)(& jmp_ctxt));
   }
   {
-    int tmp_4;
-    __e_acsl_store_block((void *)(& tmp_4),(size_t)4);
-    sigjmp_buf *jmp_ctxt_0 = get_jmp_ctxt();
-    __e_acsl_store_block((void *)(& jmp_ctxt_0),(size_t)8);
-    __e_acsl_full_init((void *)(& jmp_ctxt_0));
-    __e_acsl_full_init((void *)(& tmp_4));
-    tmp_4 = sigsetjmp(*jmp_ctxt_0,1);
-    switch (tmp_4) {
-      case 0:
-      {
-        size_t tmp_5;
-        __e_acsl_store_block((void *)(& tmp_5),(size_t)8);
-        set_handler();
-        __e_acsl_full_init((void *)(& tmp_5));
-        tmp_5 = __gen_e_acsl_strlen((char const *)heap_str);
-        __e_acsl_full_init((void *)(& len));
-        len = tmp_5 != (size_t)7;
-        if (len) __gen_e_acsl_abort();
-        test_successful();
-        __e_acsl_delete_block((void *)(& tmp_5));
-        break;
-        __e_acsl_delete_block((void *)(& tmp_5));
-      }
-      case 1: {
-                signal_eval(0,0,__gen_e_acsl_literal_string_6);
-                break;
-              }
-      case 2: {
-                signal_eval(1,0,__gen_e_acsl_literal_string_6);
-                break;
-              }
-      default:
-      {
-        printf(__gen_e_acsl_literal_string_5,__gen_e_acsl_literal_string_6);
-        __gen_e_acsl_exit(3);
-      }
+    pid_t pid_0 = __gen_e_acsl_fork();
+    if (! pid_0) {
+      size_t tmp_3;
+      tmp_3 = __gen_e_acsl_strlen((char const *)heap_str);
+      len = tmp_3 != (size_t)7;
+      if (len) __gen_e_acsl_abort();
+      __gen_e_acsl_exit(0);
+    }
+    else {
+      int process_status_0;
+      __e_acsl_store_block((void *)(& process_status_0),(size_t)4);
+      __gen_e_acsl_waitpid(pid_0,& process_status_0,0);
+      signal_eval(process_status_0,0,__gen_e_acsl_literal_string_10);
+      __e_acsl_delete_block((void *)(& process_status_0));
     }
-    __e_acsl_delete_block((void *)(& tmp_4));
-    __e_acsl_delete_block((void *)(& jmp_ctxt_0));
   }
   {
-    int tmp_7;
-    __e_acsl_store_block((void *)(& tmp_7),(size_t)4);
-    sigjmp_buf *jmp_ctxt_1 = get_jmp_ctxt();
-    __e_acsl_store_block((void *)(& jmp_ctxt_1),(size_t)8);
-    __e_acsl_full_init((void *)(& jmp_ctxt_1));
-    __e_acsl_full_init((void *)(& tmp_7));
-    tmp_7 = sigsetjmp(*jmp_ctxt_1,1);
-    switch (tmp_7) {
-      case 0:
-      {
-        size_t tmp_8;
-        __e_acsl_store_block((void *)(& tmp_8),(size_t)8);
-        set_handler();
-        __e_acsl_full_init((void *)(& tmp_8));
-        tmp_8 = __gen_e_acsl_strlen((char const *)(stack_str));
-        __e_acsl_full_init((void *)(& len));
-        len = tmp_8 != (size_t)7;
-        if (len) __gen_e_acsl_abort();
-        test_successful();
-        __e_acsl_delete_block((void *)(& tmp_8));
-        break;
-        __e_acsl_delete_block((void *)(& tmp_8));
-      }
-      case 1: {
-                signal_eval(0,0,__gen_e_acsl_literal_string_7);
-                break;
-              }
-      case 2: {
-                signal_eval(1,0,__gen_e_acsl_literal_string_7);
-                break;
-              }
-      default:
-      {
-        printf(__gen_e_acsl_literal_string_5,__gen_e_acsl_literal_string_7);
-        __gen_e_acsl_exit(3);
-      }
+    pid_t pid_1 = __gen_e_acsl_fork();
+    if (! pid_1) {
+      size_t tmp_5;
+      tmp_5 = __gen_e_acsl_strlen((char const *)(stack_str));
+      len = tmp_5 != (size_t)7;
+      if (len) __gen_e_acsl_abort();
+      __gen_e_acsl_exit(0);
+    }
+    else {
+      int process_status_1;
+      __e_acsl_store_block((void *)(& process_status_1),(size_t)4);
+      __gen_e_acsl_waitpid(pid_1,& process_status_1,0);
+      signal_eval(process_status_1,0,__gen_e_acsl_literal_string_11);
+      __e_acsl_delete_block((void *)(& process_status_1));
     }
-    __e_acsl_delete_block((void *)(& tmp_7));
-    __e_acsl_delete_block((void *)(& jmp_ctxt_1));
   }
   {
-    int tmp_10;
-    __e_acsl_store_block((void *)(& tmp_10),(size_t)4);
-    sigjmp_buf *jmp_ctxt_2 = get_jmp_ctxt();
-    __e_acsl_store_block((void *)(& jmp_ctxt_2),(size_t)8);
-    __e_acsl_full_init((void *)(& jmp_ctxt_2));
-    __e_acsl_full_init((void *)(& tmp_10));
-    tmp_10 = sigsetjmp(*jmp_ctxt_2,1);
-    switch (tmp_10) {
-      case 0:
-      {
-        size_t tmp_11;
-        __e_acsl_store_block((void *)(& tmp_11),(size_t)8);
-        set_handler();
-        __e_acsl_full_init((void *)(& tmp_11));
-        tmp_11 = __gen_e_acsl_strlen((char const *)const_str);
-        __e_acsl_full_init((void *)(& len));
-        len = tmp_11 != (size_t)7;
-        if (len) __gen_e_acsl_abort();
-        test_successful();
-        __e_acsl_delete_block((void *)(& tmp_11));
-        break;
-        __e_acsl_delete_block((void *)(& tmp_11));
-      }
-      case 1: {
-                signal_eval(0,0,__gen_e_acsl_literal_string_8);
-                break;
-              }
-      case 2: {
-                signal_eval(1,0,__gen_e_acsl_literal_string_8);
-                break;
-              }
-      default:
-      {
-        printf(__gen_e_acsl_literal_string_5,__gen_e_acsl_literal_string_8);
-        __gen_e_acsl_exit(3);
-      }
+    pid_t pid_2 = __gen_e_acsl_fork();
+    if (! pid_2) {
+      size_t tmp_7;
+      tmp_7 = __gen_e_acsl_strlen((char const *)const_str);
+      len = tmp_7 != (size_t)7;
+      if (len) __gen_e_acsl_abort();
+      __gen_e_acsl_exit(0);
+    }
+    else {
+      int process_status_2;
+      __e_acsl_store_block((void *)(& process_status_2),(size_t)4);
+      __gen_e_acsl_waitpid(pid_2,& process_status_2,0);
+      signal_eval(process_status_2,0,__gen_e_acsl_literal_string_12);
+      __e_acsl_delete_block((void *)(& process_status_2));
     }
-    __e_acsl_delete_block((void *)(& tmp_10));
-    __e_acsl_delete_block((void *)(& jmp_ctxt_2));
   }
-  __e_acsl_initialize((void *)(heap_str + 7),sizeof(char));
   *(heap_str + 7) = (char)'a';
-  __e_acsl_initialize((void *)(& stack_str[7]),sizeof(char));
   stack_str[7] = (char)'a';
   {
-    int tmp_13;
-    __e_acsl_store_block((void *)(& tmp_13),(size_t)4);
-    sigjmp_buf *jmp_ctxt_3 = get_jmp_ctxt();
-    __e_acsl_store_block((void *)(& jmp_ctxt_3),(size_t)8);
-    __e_acsl_full_init((void *)(& jmp_ctxt_3));
-    __e_acsl_full_init((void *)(& tmp_13));
-    tmp_13 = sigsetjmp(*jmp_ctxt_3,1);
-    switch (tmp_13) {
-      case 0:
-      {
-        size_t tmp_14;
-        __e_acsl_store_block((void *)(& tmp_14),(size_t)8);
-        set_handler();
-        __e_acsl_full_init((void *)(& tmp_14));
-        tmp_14 = __gen_e_acsl_strlen((char const *)heap_str);
-        __e_acsl_full_init((void *)(& len));
-        len = tmp_14 != (size_t)7;
-        if (len) __gen_e_acsl_abort();
-        test_successful();
-        __e_acsl_delete_block((void *)(& tmp_14));
-        break;
-        __e_acsl_delete_block((void *)(& tmp_14));
-      }
-      case 1: {
-                signal_eval(0,1,__gen_e_acsl_literal_string_9);
-                break;
-              }
-      case 2: {
-                signal_eval(1,1,__gen_e_acsl_literal_string_9);
-                break;
-              }
-      default:
-      {
-        printf(__gen_e_acsl_literal_string_5,__gen_e_acsl_literal_string_9);
-        __gen_e_acsl_exit(3);
-      }
+    pid_t pid_3 = __gen_e_acsl_fork();
+    if (! pid_3) {
+      size_t tmp_9;
+      tmp_9 = __gen_e_acsl_strlen((char const *)heap_str);
+      len = tmp_9 != (size_t)7;
+      if (len) __gen_e_acsl_abort();
+      __gen_e_acsl_exit(0);
+    }
+    else {
+      int process_status_3;
+      __e_acsl_store_block((void *)(& process_status_3),(size_t)4);
+      __gen_e_acsl_waitpid(pid_3,& process_status_3,0);
+      signal_eval(process_status_3,1,__gen_e_acsl_literal_string_13);
+      __e_acsl_delete_block((void *)(& process_status_3));
     }
-    __e_acsl_delete_block((void *)(& tmp_13));
-    __e_acsl_delete_block((void *)(& jmp_ctxt_3));
   }
   {
-    int tmp_16;
-    __e_acsl_store_block((void *)(& tmp_16),(size_t)4);
-    sigjmp_buf *jmp_ctxt_4 = get_jmp_ctxt();
-    __e_acsl_store_block((void *)(& jmp_ctxt_4),(size_t)8);
-    __e_acsl_full_init((void *)(& jmp_ctxt_4));
-    __e_acsl_full_init((void *)(& tmp_16));
-    tmp_16 = sigsetjmp(*jmp_ctxt_4,1);
-    switch (tmp_16) {
-      case 0:
-      {
-        size_t tmp_17;
-        __e_acsl_store_block((void *)(& tmp_17),(size_t)8);
-        set_handler();
-        __e_acsl_full_init((void *)(& tmp_17));
-        tmp_17 = __gen_e_acsl_strlen((char const *)(stack_str));
-        __e_acsl_full_init((void *)(& len));
-        len = tmp_17 != (size_t)7;
-        if (len) __gen_e_acsl_abort();
-        test_successful();
-        __e_acsl_delete_block((void *)(& tmp_17));
-        break;
-        __e_acsl_delete_block((void *)(& tmp_17));
-      }
-      case 1: {
-                signal_eval(0,1,__gen_e_acsl_literal_string_10);
-                break;
-              }
-      case 2: {
-                signal_eval(1,1,__gen_e_acsl_literal_string_10);
-                break;
-              }
-      default:
-      {
-        printf(__gen_e_acsl_literal_string_5,__gen_e_acsl_literal_string_10);
-        __gen_e_acsl_exit(3);
-      }
+    pid_t pid_4 = __gen_e_acsl_fork();
+    if (! pid_4) {
+      size_t tmp_11;
+      tmp_11 = __gen_e_acsl_strlen((char const *)(stack_str));
+      len = tmp_11 != (size_t)7;
+      if (len) __gen_e_acsl_abort();
+      __gen_e_acsl_exit(0);
+    }
+    else {
+      int process_status_4;
+      __e_acsl_store_block((void *)(& process_status_4),(size_t)4);
+      __gen_e_acsl_waitpid(pid_4,& process_status_4,0);
+      signal_eval(process_status_4,1,__gen_e_acsl_literal_string_14);
+      __e_acsl_delete_block((void *)(& process_status_4));
     }
-    __e_acsl_delete_block((void *)(& tmp_16));
-    __e_acsl_delete_block((void *)(& jmp_ctxt_4));
   }
   free((void *)heap_str);
   {
-    int tmp_19;
-    __e_acsl_store_block((void *)(& tmp_19),(size_t)4);
-    sigjmp_buf *jmp_ctxt_5 = get_jmp_ctxt();
-    __e_acsl_store_block((void *)(& jmp_ctxt_5),(size_t)8);
-    __e_acsl_full_init((void *)(& jmp_ctxt_5));
-    __e_acsl_full_init((void *)(& tmp_19));
-    tmp_19 = sigsetjmp(*jmp_ctxt_5,1);
-    switch (tmp_19) {
-      case 0:
-      {
-        size_t tmp_20;
-        __e_acsl_store_block((void *)(& tmp_20),(size_t)8);
-        set_handler();
-        __e_acsl_full_init((void *)(& tmp_20));
-        tmp_20 = __gen_e_acsl_strlen((char const *)heap_str);
-        __e_acsl_full_init((void *)(& len));
-        len = tmp_20 != (size_t)7;
-        if (len) __gen_e_acsl_abort();
-        test_successful();
-        __e_acsl_delete_block((void *)(& tmp_20));
-        break;
-        __e_acsl_delete_block((void *)(& tmp_20));
-      }
-      case 1: {
-                signal_eval(0,1,__gen_e_acsl_literal_string_11);
-                break;
-              }
-      case 2: {
-                signal_eval(1,1,__gen_e_acsl_literal_string_11);
-                break;
-              }
-      default:
-      {
-        printf(__gen_e_acsl_literal_string_5,__gen_e_acsl_literal_string_11);
-        __gen_e_acsl_exit(3);
-      }
+    pid_t pid_5 = __gen_e_acsl_fork();
+    if (! pid_5) {
+      size_t tmp_13;
+      tmp_13 = __gen_e_acsl_strlen((char const *)heap_str);
+      len = tmp_13 != (size_t)7;
+      if (len) __gen_e_acsl_abort();
+      __gen_e_acsl_exit(0);
+    }
+    else {
+      int process_status_5;
+      __e_acsl_store_block((void *)(& process_status_5),(size_t)4);
+      __gen_e_acsl_waitpid(pid_5,& process_status_5,0);
+      signal_eval(process_status_5,1,__gen_e_acsl_literal_string_15);
+      __e_acsl_delete_block((void *)(& process_status_5));
     }
-    __e_acsl_delete_block((void *)(& tmp_19));
-    __e_acsl_delete_block((void *)(& jmp_ctxt_5));
   }
-  __e_acsl_full_init((void *)(& __retres));
   __retres = 0;
-  __e_acsl_delete_block((void *)(& argv));
-  __e_acsl_delete_block((void *)(& argc));
-  __e_acsl_delete_block((void *)(& __fc_p_strerror));
-  __e_acsl_delete_block((void *)(strerror));
-  __e_acsl_delete_block((void *)(& __fc_strtok_ptr));
-  __e_acsl_delete_block((void *)(& __fc_p_fopen));
-  __e_acsl_delete_block((void *)(__fc_fopen));
-  __e_acsl_delete_block((void *)(& __fc_p_random48_counter));
-  __e_acsl_delete_block((void *)(random48_counter));
-  __e_acsl_delete_block((void *)(& __fc_random48_init));
-  __e_acsl_delete_block((void *)(& __fc_rand_max));
-  __e_acsl_delete_block((void *)(& const_str));
-  __e_acsl_delete_block((void *)(stack_str));
-  __e_acsl_delete_block((void *)(& heap_str));
-  __e_acsl_delete_block((void *)(& empty_str));
-  __e_acsl_delete_block((void *)(& len));
-  __e_acsl_delete_block((void *)(& __retres));
   __e_acsl_memory_clean();
   return __retres;
 }
diff --git a/src/plugins/e-acsl/tests/builtin/oracle_ci/strcat.res.oracle b/src/plugins/e-acsl/tests/builtin/oracle_ci/strcat.res.oracle
index db06f9cb2ec734289a0ff74f65f844fded8e2b94..c671cb08c98861ff4f19e9bb3975242b6eadd4c7 100644
--- a/src/plugins/e-acsl/tests/builtin/oracle_ci/strcat.res.oracle
+++ b/src/plugins/e-acsl/tests/builtin/oracle_ci/strcat.res.oracle
@@ -2,112 +2,105 @@
 [e-acsl] Warning: annotating undefined function `exit':
   the generated program may miss memory instrumentation
   if there are memory-related annotations.
+[e-acsl] Warning: annotating undefined function `waitpid':
+  the generated program may miss memory instrumentation
+  if there are memory-related annotations.
+[e-acsl] Warning: annotating undefined function `fork':
+  the generated program may miss memory instrumentation
+  if there are memory-related annotations.
 [e-acsl] Warning: annotating undefined function `strcat':
   the generated program may miss memory instrumentation
   if there are memory-related annotations.
 [e-acsl] Warning: annotating undefined function `strncat':
   the generated program may miss memory instrumentation
   if there are memory-related annotations.
-[kernel:annot:missing-spec] FRAMAC_SHARE/libc/stdio.h:169: Warning: 
-  Neither code nor specification for function printf, generating default assigns from the prototype
-[kernel:annot:missing-spec] FRAMAC_SHARE/libc/setjmp.h:47: Warning: 
-  Neither code nor specification for function sigsetjmp, generating default assigns from the prototype
-[kernel:annot:missing-spec] tests/builtin/signalled.h:14: Warning: 
-  Neither code nor specification for function signal_eval, generating default assigns from the prototype
-[kernel:annot:missing-spec] tests/builtin/signalled.h:18: Warning: 
-  Neither code nor specification for function get_jmp_ctxt, generating default assigns from the prototype
-[kernel:annot:missing-spec] tests/builtin/signalled.h:20: Warning: 
-  Neither code nor specification for function set_handler, generating default assigns from the prototype
-[kernel:annot:missing-spec] tests/builtin/signalled.h:22: Warning: 
-  Neither code nor specification for function test_successful, generating default assigns from the prototype
-[e-acsl] FRAMAC_SHARE/libc/string.h:421: Warning: 
-  E-ACSL construct `logic function application' is not yet supported.
-  Ignoring annotation.
-[e-acsl] FRAMAC_SHARE/libc/string.h:422: Warning: 
-  E-ACSL construct `logic function application' is not yet supported.
+[e-acsl] FRAMAC_SHARE/libc/string.h:432: Warning: 
+  E-ACSL construct `logic functions performing read accesses'
+  is not yet supported.
+  Ignoring annotation.
+[e-acsl] FRAMAC_SHARE/libc/string.h:440: Warning: 
+  E-ACSL construct `logic functions performing read accesses'
+  is not yet supported.
+  Ignoring annotation.
+[e-acsl] FRAMAC_SHARE/libc/string.h:426: Warning: 
+  E-ACSL construct `logic functions with labels' is not yet supported.
   Ignoring annotation.
 [e-acsl] FRAMAC_SHARE/libc/string.h:427: Warning: 
-  E-ACSL construct `logic function application' is not yet supported.
+  E-ACSL construct `logic functions with labels' is not yet supported.
   Ignoring annotation.
-[e-acsl] FRAMAC_SHARE/libc/string.h:435: Warning: 
-  E-ACSL construct `logic function application' is not yet supported.
+[e-acsl] FRAMAC_SHARE/libc/string.h:433: Warning: 
+  E-ACSL construct `logic functions performing read accesses'
+  is not yet supported.
   Ignoring annotation.
-[e-acsl] FRAMAC_SHARE/libc/string.h:435: Warning: 
+[e-acsl] FRAMAC_SHARE/libc/string.h:441: Warning: 
+  E-ACSL construct `logic functions performing read accesses'
+  is not yet supported.
+  Ignoring annotation.
+[e-acsl] FRAMAC_SHARE/libc/string.h:425: Warning: 
+  Some assumes clauses could not be translated.
+  Ignoring complete and disjoint behaviors annotations.
+[e-acsl] FRAMAC_SHARE/libc/string.h:425: Warning: 
   E-ACSL construct `assigns clause in behavior' is not yet supported.
   Ignoring annotation.
-[e-acsl] FRAMAC_SHARE/libc/string.h:427: Warning: 
+[e-acsl] FRAMAC_SHARE/libc/string.h:430: Warning: 
   E-ACSL construct `assigns clause in behavior' is not yet supported.
   Ignoring annotation.
-[e-acsl] FRAMAC_SHARE/libc/string.h:425: Warning: 
+[e-acsl] FRAMAC_SHARE/libc/string.h:437: Warning: 
+  E-ACSL construct `logic functions performing read accesses'
+  is not yet supported.
+  Ignoring annotation.
+[e-acsl] FRAMAC_SHARE/libc/string.h:437: Warning: 
   E-ACSL construct `assigns clause in behavior' is not yet supported.
   Ignoring annotation.
-[e-acsl] FRAMAC_SHARE/libc/string.h:406: Warning: 
-  E-ACSL construct `logic function application' is not yet supported.
+[e-acsl] FRAMAC_SHARE/libc/string.h:445: Warning: 
+  E-ACSL construct `logic functions performing read accesses'
+  is not yet supported.
   Ignoring annotation.
-[e-acsl] FRAMAC_SHARE/libc/string.h:407: Warning: 
-  E-ACSL construct `logic function application' is not yet supported.
+[e-acsl] FRAMAC_SHARE/libc/string.h:411: Warning: 
+  E-ACSL construct `logic functions with labels' is not yet supported.
+  Ignoring annotation.
+[e-acsl] FRAMAC_SHARE/libc/string.h:412: Warning: 
+  E-ACSL construct `logic functions with labels' is not yet supported.
   Ignoring annotation.
-[e-acsl] FRAMAC_SHARE/libc/string.h:408: Warning: 
-  E-ACSL construct `logic function returning an integer' is not yet supported.
+[e-acsl] FRAMAC_SHARE/libc/string.h:413: Warning: 
+  E-ACSL construct `logic functions performing read accesses'
+  is not yet supported.
   Ignoring annotation.
-[e-acsl] FRAMAC_SHARE/libc/string.h:408: Warning: 
+[e-acsl] FRAMAC_SHARE/libc/string.h:410: Warning: 
   E-ACSL construct `assigns clause in behavior' is not yet supported.
   Ignoring annotation.
-[e-acsl] FRAMAC_SHARE/libc/string.h:411: Warning: 
-  E-ACSL construct `logic function returning an integer' is not yet supported.
+[e-acsl] FRAMAC_SHARE/libc/string.h:416: Warning: 
+  E-ACSL construct `logic functions performing read accesses'
+  is not yet supported.
   Ignoring annotation.
-[e-acsl] FRAMAC_SHARE/libc/string.h:414: Warning: 
-  E-ACSL construct `logic function returning an integer' is not yet supported.
+[e-acsl] FRAMAC_SHARE/libc/string.h:419: Warning: 
+  E-ACSL construct `logic functions performing read accesses'
+  is not yet supported.
   Ignoring annotation.
-[e-acsl] FRAMAC_SHARE/libc/string.h:415: Warning: 
-  E-ACSL construct `logic function returning an integer' is not yet supported.
+[e-acsl] FRAMAC_SHARE/libc/string.h:420: Warning: 
+  E-ACSL construct `logic functions performing read accesses'
+  is not yet supported.
   Ignoring annotation.
-[e-acsl] FRAMAC_SHARE/libc/string.h:416: Warning: 
+[e-acsl] FRAMAC_SHARE/libc/unistd.h:856: Warning: 
+  E-ACSL construct `assigns clause in behavior' is not yet supported.
+  Ignoring annotation.
+[e-acsl] FRAMAC_SHARE/libc/sys/wait.h:79: Warning: 
+  E-ACSL construct `assigns clause in behavior' is not yet supported.
+  Ignoring annotation.
+[e-acsl] FRAMAC_SHARE/libc/sys/wait.h:86: Warning: 
   E-ACSL construct `assigns clause in behavior' is not yet supported.
   Ignoring annotation.
+[e-acsl] FRAMAC_SHARE/libc/stdlib.h:470: Warning: 
+  E-ACSL construct `assigns clause in behavior' is not yet supported.
+  Ignoring annotation.
+[e-acsl] FRAMAC_SHARE/libc/stdlib.h:472: Warning: 
+  E-ACSL construct `abnormal termination case in behavior'
+  is not yet supported.
+  Ignoring annotation.
 [e-acsl] translation done in project "e-acsl".
-[eva] Analyzing a complete application starting at main
-[eva] Computing initial state
-[eva] Initial state computed
-[eva:initial-state] Values of globals at initialization
-  __e_acsl_init ∈ [--..--]
-  __e_acsl_heap_allocation_size ∈ [--..--]
-  __e_acsl_math_HUGE_VAL ∈ [-1.79769313486e+308 .. 1.79769313486e+308]
-  __e_acsl_math_HUGE_VALF ∈ [-3.40282346639e+38 .. 3.40282346639e+38]
-  __e_acsl_math_INFINITY ∈ [-1.79769313486e+308 .. 1.79769313486e+308]
-  __e_acsl_sound_verdict ∈ [--..--]
-  __gen_e_acsl_literal_string ∈ {0}
-  __gen_e_acsl_literal_string_2 ∈ {0}
-  __gen_e_acsl_literal_string_3 ∈ {0}
-  __gen_e_acsl_literal_string_4 ∈ {0}
-  __gen_e_acsl_literal_string_5 ∈ {0}
-  __gen_e_acsl_literal_string_6 ∈ {0}
-  __gen_e_acsl_literal_string_7 ∈ {0}
-  __gen_e_acsl_literal_string_8 ∈ {0}
-  __gen_e_acsl_literal_string_9 ∈ {0}
-  __gen_e_acsl_literal_string_10 ∈ {0}
-  __gen_e_acsl_literal_string_11 ∈ {0}
-  __gen_e_acsl_literal_string_12 ∈ {0}
-  __gen_e_acsl_literal_string_13 ∈ {0}
-  __gen_e_acsl_literal_string_14 ∈ {0}
-  __gen_e_acsl_literal_string_15 ∈ {0}
-  __gen_e_acsl_literal_string_16 ∈ {0}
-  __gen_e_acsl_literal_string_17 ∈ {0}
-  __gen_e_acsl_literal_string_18 ∈ {0}
-  __gen_e_acsl_literal_string_19 ∈ {0}
-  __gen_e_acsl_literal_string_20 ∈ {0}
-  __gen_e_acsl_literal_string_21 ∈ {0}
-  __gen_e_acsl_literal_string_22 ∈ {0}
-  __gen_e_acsl_literal_string_23 ∈ {0}
-  __gen_e_acsl_literal_string_24 ∈ {0}
-  __gen_e_acsl_literal_string_25 ∈ {0}
-[eva] using specification for function __e_acsl_memory_init
-[eva] using specification for function __e_acsl_store_block
-[eva] using specification for function __e_acsl_full_init
-[eva] using specification for function __e_acsl_mark_readonly
-[eva] tests/builtin/strcat.c:11: allocating variable __malloc_main_l11
-[eva] tests/builtin/strcat.c:12: allocating variable __malloc_main_l12
-[eva] using specification for function get_jmp_ctxt
-[eva:alarm] tests/builtin/strcat.c:27: Warning: 
-  out of bounds read. assert \valid_read(jmp_ctxt);
-[eva] done for function main
+[eva:alarm] FRAMAC_SHARE/libc/unistd.h:859: Warning: 
+  function __e_acsl_assert, behavior blocking: precondition got status unknown.
+[eva:alarm] FRAMAC_SHARE/libc/unistd.h:859: Warning: 
+  function __gen_e_acsl_fork: postcondition 'result_ok_child_or_error' got status unknown.
+[eva:alarm] FRAMAC_SHARE/libc/string.h:416: Warning: 
+  function __gen_e_acsl_strcat: postcondition 'sum_of_lengths' got status unknown.
diff --git a/src/plugins/e-acsl/tests/builtin/oracle_ci/strcmp.res.oracle b/src/plugins/e-acsl/tests/builtin/oracle_ci/strcmp.res.oracle
index 008bdcc7f190644e55759a874790c59c6d659fa7..f6cbb2f80f2b420d8c1f639511a592fe4f85adec 100644
--- a/src/plugins/e-acsl/tests/builtin/oracle_ci/strcmp.res.oracle
+++ b/src/plugins/e-acsl/tests/builtin/oracle_ci/strcmp.res.oracle
@@ -1,3 +1,6 @@
+[variadic] tests/builtin/strcmp.c:11: Warning: 
+  Call to function fprintf with non-static format argument:
+  no specification will be generated.
 [e-acsl] beginning translation.
 [e-acsl] Warning: annotating undefined function `abort':
   the generated program may miss memory instrumentation
@@ -5,6 +8,12 @@
 [e-acsl] Warning: annotating undefined function `exit':
   the generated program may miss memory instrumentation
   if there are memory-related annotations.
+[e-acsl] Warning: annotating undefined function `waitpid':
+  the generated program may miss memory instrumentation
+  if there are memory-related annotations.
+[e-acsl] Warning: annotating undefined function `fork':
+  the generated program may miss memory instrumentation
+  if there are memory-related annotations.
 [e-acsl] Warning: annotating undefined function `strcmp':
   the generated program may miss memory instrumentation
   if there are memory-related annotations.
@@ -14,120 +23,79 @@
 [e-acsl] Warning: annotating undefined function `strdup':
   the generated program may miss memory instrumentation
   if there are memory-related annotations.
-[kernel:annot:missing-spec] FRAMAC_SHARE/libc/stdio.h:165: Warning: 
-  Neither code nor specification for function fprintf, generating default assigns from the prototype
-[kernel:annot:missing-spec] FRAMAC_SHARE/libc/stdio.h:169: Warning: 
-  Neither code nor specification for function printf, generating default assigns from the prototype
-[kernel:annot:missing-spec] FRAMAC_SHARE/libc/setjmp.h:47: Warning: 
-  Neither code nor specification for function sigsetjmp, generating default assigns from the prototype
-[kernel:annot:missing-spec] tests/builtin/signalled.h:14: Warning: 
-  Neither code nor specification for function signal_eval, generating default assigns from the prototype
-[kernel:annot:missing-spec] tests/builtin/signalled.h:18: Warning: 
-  Neither code nor specification for function get_jmp_ctxt, generating default assigns from the prototype
-[kernel:annot:missing-spec] tests/builtin/signalled.h:20: Warning: 
-  Neither code nor specification for function set_handler, generating default assigns from the prototype
-[kernel:annot:missing-spec] tests/builtin/signalled.h:22: Warning: 
-  Neither code nor specification for function test_successful, generating default assigns from the prototype
-[e-acsl] FRAMAC_SHARE/libc/stdlib.h:457: Warning: 
-  E-ACSL construct `assigns clause in behavior' is not yet supported.
+[e-acsl] FRAMAC_SHARE/libc/string.h:471: Warning: 
+  E-ACSL construct `\fresh' is not yet supported. Ignoring annotation.
+[e-acsl] FRAMAC_SHARE/libc/string.h:475: Warning: 
+  E-ACSL construct `predicate performing read accesses' is not yet supported.
   Ignoring annotation.
-[e-acsl] FRAMAC_SHARE/libc/string.h:469: Warning: 
-  E-ACSL construct `logic function application' is not yet supported.
+[e-acsl] FRAMAC_SHARE/libc/string.h:482: Warning: 
+  E-ACSL construct `predicate performing read accesses' is not yet supported.
   Ignoring annotation.
-[e-acsl] FRAMAC_SHARE/libc/string.h:469: Warning: 
-  E-ACSL construct `assigns clause in behavior' is not yet supported.
+[e-acsl] FRAMAC_SHARE/libc/string.h:471: Warning: 
+  E-ACSL construct `logic functions with labels' is not yet supported.
   Ignoring annotation.
-[e-acsl] FRAMAC_SHARE/libc/string.h:476: Warning: 
-  E-ACSL construct `logic function application' is not yet supported.
-  Ignoring annotation.
-[e-acsl] FRAMAC_SHARE/libc/string.h:144: Warning: 
-  E-ACSL construct `logic function application' is not yet supported.
+[e-acsl] FRAMAC_SHARE/libc/string.h:471: Warning: 
+  Some assumes clauses could not be translated.
+  Ignoring complete and disjoint behaviors annotations.
+[e-acsl] FRAMAC_SHARE/libc/string.h:471: Warning: 
+  E-ACSL construct `assigns clause in behavior' is not yet supported.
   Ignoring annotation.
-[e-acsl] FRAMAC_SHARE/libc/string.h:145: Warning: 
-  E-ACSL construct `logic function application' is not yet supported.
+[e-acsl] FRAMAC_SHARE/libc/string.h:478: Warning: 
+  E-ACSL construct `\fresh' is not yet supported. Ignoring annotation.
+[e-acsl] FRAMAC_SHARE/libc/string.h:480: Warning: 
+  E-ACSL construct `logic functions performing read accesses'
+  is not yet supported.
   Ignoring annotation.
-[e-acsl] FRAMAC_SHARE/libc/string.h:145: Warning: 
+[e-acsl] FRAMAC_SHARE/libc/string.h:480: Warning: 
   E-ACSL construct `assigns clause in behavior' is not yet supported.
   Ignoring annotation.
 [e-acsl] FRAMAC_SHARE/libc/string.h:147: Warning: 
-  E-ACSL construct `logic function returning an integer' is not yet supported.
-  Ignoring annotation.
-[e-acsl] FRAMAC_SHARE/libc/string.h:137: Warning: 
-  E-ACSL construct `logic function application' is not yet supported.
+  E-ACSL construct `logic functions with labels' is not yet supported.
   Ignoring annotation.
-[e-acsl] FRAMAC_SHARE/libc/string.h:138: Warning: 
-  E-ACSL construct `logic function application' is not yet supported.
+[e-acsl] FRAMAC_SHARE/libc/string.h:148: Warning: 
+  E-ACSL construct `logic functions with labels' is not yet supported.
   Ignoring annotation.
-[e-acsl] FRAMAC_SHARE/libc/string.h:138: Warning: 
+[e-acsl] FRAMAC_SHARE/libc/string.h:147: Warning: 
   E-ACSL construct `assigns clause in behavior' is not yet supported.
   Ignoring annotation.
+[e-acsl] FRAMAC_SHARE/libc/string.h:150: Warning: 
+  E-ACSL construct `logic functions performing read accesses'
+  is not yet supported.
+  Ignoring annotation.
 [e-acsl] FRAMAC_SHARE/libc/string.h:140: Warning: 
-  E-ACSL construct `logic function returning an integer' is not yet supported.
+  E-ACSL construct `logic functions with labels' is not yet supported.
+  Ignoring annotation.
+[e-acsl] FRAMAC_SHARE/libc/string.h:141: Warning: 
+  E-ACSL construct `logic functions with labels' is not yet supported.
   Ignoring annotation.
 [e-acsl] FRAMAC_SHARE/libc/string.h:140: Warning: 
   E-ACSL construct `assigns clause in behavior' is not yet supported.
   Ignoring annotation.
-[e-acsl] FRAMAC_SHARE/libc/stdlib.h:469: Warning: 
+[e-acsl] FRAMAC_SHARE/libc/string.h:143: Warning: 
+  E-ACSL construct `logic functions performing read accesses'
+  is not yet supported.
+  Ignoring annotation.
+[e-acsl] FRAMAC_SHARE/libc/unistd.h:856: Warning: 
+  E-ACSL construct `assigns clause in behavior' is not yet supported.
+  Ignoring annotation.
+[e-acsl] FRAMAC_SHARE/libc/sys/wait.h:79: Warning: 
+  E-ACSL construct `assigns clause in behavior' is not yet supported.
+  Ignoring annotation.
+[e-acsl] FRAMAC_SHARE/libc/sys/wait.h:86: Warning: 
+  E-ACSL construct `assigns clause in behavior' is not yet supported.
+  Ignoring annotation.
+[e-acsl] FRAMAC_SHARE/libc/stdlib.h:470: Warning: 
+  E-ACSL construct `assigns clause in behavior' is not yet supported.
+  Ignoring annotation.
+[e-acsl] FRAMAC_SHARE/libc/stdlib.h:472: Warning: 
+  E-ACSL construct `abnormal termination case in behavior'
+  is not yet supported.
+  Ignoring annotation.
+[e-acsl] FRAMAC_SHARE/libc/stdlib.h:457: Warning: 
   E-ACSL construct `assigns clause in behavior' is not yet supported.
   Ignoring annotation.
+[e-acsl] FRAMAC_SHARE/libc/stdlib.h:459: Warning: 
+  E-ACSL construct `abnormal termination case in behavior'
+  is not yet supported.
+  Ignoring annotation.
 [e-acsl] translation done in project "e-acsl".
-[eva] Analyzing a complete application starting at main
-[eva] Computing initial state
-[eva] Initial state computed
-[eva:initial-state] Values of globals at initialization
-  __e_acsl_init ∈ [--..--]
-  __e_acsl_heap_allocation_size ∈ [--..--]
-  __e_acsl_math_HUGE_VAL ∈ [-1.79769313486e+308 .. 1.79769313486e+308]
-  __e_acsl_math_HUGE_VALF ∈ [-3.40282346639e+38 .. 3.40282346639e+38]
-  __e_acsl_math_INFINITY ∈ [-1.79769313486e+308 .. 1.79769313486e+308]
-  __e_acsl_sound_verdict ∈ [--..--]
-  __gen_e_acsl_literal_string ∈ {0}
-  __gen_e_acsl_literal_string_2 ∈ {0}
-  __gen_e_acsl_literal_string_3 ∈ {0}
-  __gen_e_acsl_literal_string_4 ∈ {0}
-  __gen_e_acsl_literal_string_5 ∈ {0}
-  __gen_e_acsl_literal_string_6 ∈ {0}
-  __gen_e_acsl_literal_string_7 ∈ {0}
-  __gen_e_acsl_literal_string_8 ∈ {0}
-  __gen_e_acsl_literal_string_9 ∈ {0}
-  __gen_e_acsl_literal_string_10 ∈ {0}
-  __gen_e_acsl_literal_string_11 ∈ {0}
-  __gen_e_acsl_literal_string_12 ∈ {0}
-  __gen_e_acsl_literal_string_13 ∈ {0}
-  __gen_e_acsl_literal_string_14 ∈ {0}
-  __gen_e_acsl_literal_string_15 ∈ {0}
-  __gen_e_acsl_literal_string_16 ∈ {0}
-  __gen_e_acsl_literal_string_17 ∈ {0}
-  __gen_e_acsl_literal_string_18 ∈ {0}
-  __gen_e_acsl_literal_string_19 ∈ {0}
-  __gen_e_acsl_literal_string_20 ∈ {0}
-  __gen_e_acsl_literal_string_21 ∈ {0}
-  __gen_e_acsl_literal_string_22 ∈ {0}
-  __gen_e_acsl_literal_string_23 ∈ {0}
-  __gen_e_acsl_literal_string_24 ∈ {0}
-  __gen_e_acsl_literal_string_25 ∈ {0}
-  __gen_e_acsl_literal_string_26 ∈ {0}
-  __gen_e_acsl_literal_string_27 ∈ {0}
-  __gen_e_acsl_literal_string_28 ∈ {0}
-[eva] using specification for function __e_acsl_memory_init
-[eva] using specification for function __e_acsl_store_block
-[eva] using specification for function __e_acsl_full_init
-[eva] using specification for function __e_acsl_mark_readonly
-[eva] using specification for function strdup
-[eva:libc:unsupported-spec] FRAMAC_SHARE/libc/string.h:466: Warning: 
-  The specification of function 'strdup' is currently not supported by Eva.
-  Consider adding FRAMAC_SHARE/libc/string.c
-  to the analyzed source files.
-[eva] FRAMAC_SHARE/libc/string.h:466: Warning: 
-  ignoring unsupported \allocates clause
-[eva] using specification for function __e_acsl_delete_block
-[eva:alarm] FRAMAC_SHARE/libc/string.h:472: Warning: 
-  function __gen_e_acsl_strdup, behavior allocation: postcondition 'allocation' got status unknown. (Behavior may be inactive, no reduction performed.)
-[eva:alarm] FRAMAC_SHARE/libc/string.h:474: Warning: 
-  function __gen_e_acsl_strdup, behavior allocation: postcondition 'result_valid_string_and_same_contents' got status invalid. (Behavior may be inactive, no reduction performed.)
-[eva:alarm] FRAMAC_SHARE/libc/string.h:479: Warning: 
-  function __gen_e_acsl_strdup, behavior no_allocation: postcondition 'result_null' got status unknown. (Behavior may be inactive, no reduction performed.)
-[eva] using specification for function get_jmp_ctxt
-[eva:alarm] tests/builtin/strcmp.c:32: Warning: 
-  out of bounds read. assert \valid_read(jmp_ctxt);
-[eva] done for function main
diff --git a/src/plugins/e-acsl/tests/builtin/oracle_ci/strcpy.res.oracle b/src/plugins/e-acsl/tests/builtin/oracle_ci/strcpy.res.oracle
index bfb97b289981bcf30441d74821038c0a8281eaad..b36d6936026e912519fc77c972b7cbd084fb1fce 100644
--- a/src/plugins/e-acsl/tests/builtin/oracle_ci/strcpy.res.oracle
+++ b/src/plugins/e-acsl/tests/builtin/oracle_ci/strcpy.res.oracle
@@ -2,6 +2,12 @@
 [e-acsl] Warning: annotating undefined function `exit':
   the generated program may miss memory instrumentation
   if there are memory-related annotations.
+[e-acsl] Warning: annotating undefined function `waitpid':
+  the generated program may miss memory instrumentation
+  if there are memory-related annotations.
+[e-acsl] Warning: annotating undefined function `fork':
+  the generated program may miss memory instrumentation
+  if there are memory-related annotations.
 [e-acsl] Warning: annotating undefined function `strcpy':
   the generated program may miss memory instrumentation
   if there are memory-related annotations.
@@ -11,115 +17,89 @@
 [e-acsl] Warning: annotating undefined function `strdup':
   the generated program may miss memory instrumentation
   if there are memory-related annotations.
-[kernel:annot:missing-spec] FRAMAC_SHARE/libc/stdio.h:169: Warning: 
-  Neither code nor specification for function printf, generating default assigns from the prototype
-[kernel:annot:missing-spec] FRAMAC_SHARE/libc/setjmp.h:47: Warning: 
-  Neither code nor specification for function sigsetjmp, generating default assigns from the prototype
-[kernel:annot:missing-spec] tests/builtin/signalled.h:14: Warning: 
-  Neither code nor specification for function signal_eval, generating default assigns from the prototype
-[kernel:annot:missing-spec] tests/builtin/signalled.h:18: Warning: 
-  Neither code nor specification for function get_jmp_ctxt, generating default assigns from the prototype
-[kernel:annot:missing-spec] tests/builtin/signalled.h:20: Warning: 
-  Neither code nor specification for function set_handler, generating default assigns from the prototype
-[kernel:annot:missing-spec] tests/builtin/signalled.h:22: Warning: 
-  Neither code nor specification for function test_successful, generating default assigns from the prototype
-[e-acsl] FRAMAC_SHARE/libc/stdlib.h:404: Warning: 
+[e-acsl] FRAMAC_SHARE/libc/string.h:471: Warning: 
+  E-ACSL construct `\fresh' is not yet supported. Ignoring annotation.
+[e-acsl] FRAMAC_SHARE/libc/string.h:475: Warning: 
+  E-ACSL construct `predicate performing read accesses' is not yet supported.
+  Ignoring annotation.
+[e-acsl] FRAMAC_SHARE/libc/string.h:482: Warning: 
+  E-ACSL construct `predicate performing read accesses' is not yet supported.
+  Ignoring annotation.
+[e-acsl] FRAMAC_SHARE/libc/string.h:471: Warning: 
+  E-ACSL construct `logic functions with labels' is not yet supported.
+  Ignoring annotation.
+[e-acsl] FRAMAC_SHARE/libc/string.h:471: Warning: 
+  Some assumes clauses could not be translated.
+  Ignoring complete and disjoint behaviors annotations.
+[e-acsl] FRAMAC_SHARE/libc/string.h:471: Warning: 
   E-ACSL construct `assigns clause in behavior' is not yet supported.
   Ignoring annotation.
-[e-acsl] FRAMAC_SHARE/libc/string.h:469: Warning: 
-  E-ACSL construct `logic function application' is not yet supported.
+[e-acsl] FRAMAC_SHARE/libc/string.h:478: Warning: 
+  E-ACSL construct `\fresh' is not yet supported. Ignoring annotation.
+[e-acsl] FRAMAC_SHARE/libc/string.h:480: Warning: 
+  E-ACSL construct `logic functions performing read accesses'
+  is not yet supported.
   Ignoring annotation.
-[e-acsl] FRAMAC_SHARE/libc/string.h:469: Warning: 
+[e-acsl] FRAMAC_SHARE/libc/string.h:480: Warning: 
   E-ACSL construct `assigns clause in behavior' is not yet supported.
   Ignoring annotation.
-[e-acsl] FRAMAC_SHARE/libc/string.h:476: Warning: 
-  E-ACSL construct `logic function application' is not yet supported.
+[e-acsl] FRAMAC_SHARE/libc/string.h:375: Warning: 
+  E-ACSL construct `logic functions performing read accesses'
+  is not yet supported.
   Ignoring annotation.
-[e-acsl] FRAMAC_SHARE/libc/string.h:359: Warning: 
-  E-ACSL construct `logic function application' is not yet supported.
+[e-acsl] FRAMAC_SHARE/libc/string.h:378: Warning: 
+  E-ACSL construct `logic functions performing read accesses'
+  is not yet supported.
   Ignoring annotation.
-[e-acsl] FRAMAC_SHARE/libc/string.h:362: Warning: 
-  E-ACSL construct `\separated' is not yet supported. Ignoring annotation.
-[e-acsl] FRAMAC_SHARE/libc/string.h:368: Warning: 
-  E-ACSL construct `logic function returning an integer' is not yet supported.
+[e-acsl] FRAMAC_SHARE/libc/string.h:366: Warning: 
+  E-ACSL construct `logic functions with labels' is not yet supported.
   Ignoring annotation.
-[e-acsl] FRAMAC_SHARE/libc/string.h:368: Warning: 
+[e-acsl] FRAMAC_SHARE/libc/string.h:365: Warning: 
+  Some assumes clauses could not be translated.
+  Ignoring complete and disjoint behaviors annotations.
+[e-acsl] FRAMAC_SHARE/libc/string.h:365: Warning: 
   E-ACSL construct `assigns clause in behavior' is not yet supported.
   Ignoring annotation.
-[e-acsl] FRAMAC_SHARE/libc/string.h:371: Warning: 
-  E-ACSL construct `logic function returning an integer' is not yet supported.
+[e-acsl] FRAMAC_SHARE/libc/string.h:376: Warning: 
+  E-ACSL construct `logic functions performing read accesses'
+  is not yet supported.
   Ignoring annotation.
-[e-acsl] FRAMAC_SHARE/libc/string.h:347: Warning: 
-  E-ACSL construct `logic function application' is not yet supported.
+[e-acsl] FRAMAC_SHARE/libc/string.h:379: Warning: 
+  E-ACSL construct `logic functions performing read accesses'
+  is not yet supported.
   Ignoring annotation.
-[e-acsl] FRAMAC_SHARE/libc/string.h:348: Warning: 
-  E-ACSL construct `logic function returning an integer' is not yet supported.
+[e-acsl] FRAMAC_SHARE/libc/string.h:354: Warning: 
+  E-ACSL construct `logic functions with labels' is not yet supported.
   Ignoring annotation.
-[e-acsl] FRAMAC_SHARE/libc/string.h:350: Warning: 
-  E-ACSL construct `\separated' is not yet supported. Ignoring annotation.
-[e-acsl] FRAMAC_SHARE/libc/string.h:350: Warning: 
-  E-ACSL construct `assigns clause in behavior' is not yet supported.
+[e-acsl] FRAMAC_SHARE/libc/string.h:355: Warning: 
+  E-ACSL construct `logic functions performing read accesses'
+  is not yet supported.
   Ignoring annotation.
-[e-acsl] FRAMAC_SHARE/libc/string.h:353: Warning: 
-  E-ACSL construct `logic function returning an integer' is not yet supported.
+[e-acsl] FRAMAC_SHARE/libc/string.h:357: Warning: 
+  E-ACSL construct `logic functions performing read accesses'
+  is not yet supported.
   Ignoring annotation.
 [e-acsl] FRAMAC_SHARE/libc/string.h:354: Warning: 
   E-ACSL construct `assigns clause in behavior' is not yet supported.
   Ignoring annotation.
+[e-acsl] FRAMAC_SHARE/libc/string.h:360: Warning: 
+  E-ACSL construct `logic functions performing read accesses'
+  is not yet supported.
+  Ignoring annotation.
+[e-acsl] FRAMAC_SHARE/libc/unistd.h:856: Warning: 
+  E-ACSL construct `assigns clause in behavior' is not yet supported.
+  Ignoring annotation.
+[e-acsl] FRAMAC_SHARE/libc/sys/wait.h:79: Warning: 
+  E-ACSL construct `assigns clause in behavior' is not yet supported.
+  Ignoring annotation.
+[e-acsl] FRAMAC_SHARE/libc/sys/wait.h:86: Warning: 
+  E-ACSL construct `assigns clause in behavior' is not yet supported.
+  Ignoring annotation.
+[e-acsl] FRAMAC_SHARE/libc/stdlib.h:470: Warning: 
+  E-ACSL construct `assigns clause in behavior' is not yet supported.
+  Ignoring annotation.
+[e-acsl] FRAMAC_SHARE/libc/stdlib.h:472: Warning: 
+  E-ACSL construct `abnormal termination case in behavior'
+  is not yet supported.
+  Ignoring annotation.
 [e-acsl] translation done in project "e-acsl".
-[eva] Analyzing a complete application starting at main
-[eva] Computing initial state
-[eva] Initial state computed
-[eva:initial-state] Values of globals at initialization
-  __e_acsl_init ∈ [--..--]
-  __e_acsl_heap_allocation_size ∈ [--..--]
-  __e_acsl_math_HUGE_VAL ∈ [-1.79769313486e+308 .. 1.79769313486e+308]
-  __e_acsl_math_HUGE_VALF ∈ [-3.40282346639e+38 .. 3.40282346639e+38]
-  __e_acsl_math_INFINITY ∈ [-1.79769313486e+308 .. 1.79769313486e+308]
-  __e_acsl_sound_verdict ∈ [--..--]
-  __gen_e_acsl_literal_string ∈ {0}
-  __gen_e_acsl_literal_string_2 ∈ {0}
-  __gen_e_acsl_literal_string_3 ∈ {0}
-  __gen_e_acsl_literal_string_4 ∈ {0}
-  __gen_e_acsl_literal_string_5 ∈ {0}
-  __gen_e_acsl_literal_string_6 ∈ {0}
-  __gen_e_acsl_literal_string_7 ∈ {0}
-  __gen_e_acsl_literal_string_8 ∈ {0}
-  __gen_e_acsl_literal_string_9 ∈ {0}
-  __gen_e_acsl_literal_string_10 ∈ {0}
-  __gen_e_acsl_literal_string_11 ∈ {0}
-  __gen_e_acsl_literal_string_12 ∈ {0}
-  __gen_e_acsl_literal_string_13 ∈ {0}
-  __gen_e_acsl_literal_string_14 ∈ {0}
-  __gen_e_acsl_literal_string_15 ∈ {0}
-  __gen_e_acsl_literal_string_16 ∈ {0}
-  __gen_e_acsl_literal_string_17 ∈ {0}
-  __gen_e_acsl_literal_string_18 ∈ {0}
-  __gen_e_acsl_literal_string_19 ∈ {0}
-  __gen_e_acsl_literal_string_20 ∈ {0}
-[eva] using specification for function __e_acsl_memory_init
-[eva] using specification for function __e_acsl_store_block
-[eva] using specification for function __e_acsl_full_init
-[eva] using specification for function __e_acsl_mark_readonly
-[eva] using specification for function strdup
-[eva:libc:unsupported-spec] FRAMAC_SHARE/libc/string.h:466: Warning: 
-  The specification of function 'strdup' is currently not supported by Eva.
-  Consider adding FRAMAC_SHARE/libc/string.c
-  to the analyzed source files.
-[eva] FRAMAC_SHARE/libc/string.h:466: Warning: 
-  ignoring unsupported \allocates clause
-[eva] using specification for function __e_acsl_delete_block
-[eva:alarm] FRAMAC_SHARE/libc/string.h:472: Warning: 
-  function __gen_e_acsl_strdup, behavior allocation: postcondition 'allocation' got status unknown. (Behavior may be inactive, no reduction performed.)
-[eva:alarm] FRAMAC_SHARE/libc/string.h:474: Warning: 
-  function __gen_e_acsl_strdup, behavior allocation: postcondition 'result_valid_string_and_same_contents' got status invalid. (Behavior may be inactive, no reduction performed.)
-[eva:alarm] FRAMAC_SHARE/libc/string.h:479: Warning: 
-  function __gen_e_acsl_strdup, behavior no_allocation: postcondition 'result_null' got status unknown. (Behavior may be inactive, no reduction performed.)
-[eva] tests/builtin/strcpy.c:13: allocating variable __malloc_main_l13
-[eva] tests/builtin/strcpy.c:14: allocating variable __malloc_main_l14
-[eva] tests/builtin/strcpy.c:18: allocating variable __malloc_main_l18
-[eva] tests/builtin/strcpy.c:18: allocating variable __malloc_main_l18_0
-[eva] using specification for function get_jmp_ctxt
-[eva:alarm] tests/builtin/strcpy.c:21: Warning: 
-  out of bounds read. assert \valid_read(jmp_ctxt);
-[eva] done for function main
diff --git a/src/plugins/e-acsl/tests/builtin/oracle_ci/strlen.res.oracle b/src/plugins/e-acsl/tests/builtin/oracle_ci/strlen.res.oracle
index e0d81d086eed867d6131626321014fd72b2506b9..b1dce3cca73734a26bbe419c6e8ebece8913c525 100644
--- a/src/plugins/e-acsl/tests/builtin/oracle_ci/strlen.res.oracle
+++ b/src/plugins/e-acsl/tests/builtin/oracle_ci/strlen.res.oracle
@@ -5,92 +5,75 @@
 [e-acsl] Warning: annotating undefined function `exit':
   the generated program may miss memory instrumentation
   if there are memory-related annotations.
+[e-acsl] Warning: annotating undefined function `waitpid':
+  the generated program may miss memory instrumentation
+  if there are memory-related annotations.
+[e-acsl] Warning: annotating undefined function `fork':
+  the generated program may miss memory instrumentation
+  if there are memory-related annotations.
 [e-acsl] Warning: annotating undefined function `strlen':
   the generated program may miss memory instrumentation
   if there are memory-related annotations.
 [e-acsl] Warning: annotating undefined function `strdup':
   the generated program may miss memory instrumentation
   if there are memory-related annotations.
-[kernel:annot:missing-spec] FRAMAC_SHARE/libc/stdio.h:169: Warning: 
-  Neither code nor specification for function printf, generating default assigns from the prototype
-[kernel:annot:missing-spec] FRAMAC_SHARE/libc/setjmp.h:47: Warning: 
-  Neither code nor specification for function sigsetjmp, generating default assigns from the prototype
-[kernel:annot:missing-spec] tests/builtin/signalled.h:14: Warning: 
-  Neither code nor specification for function signal_eval, generating default assigns from the prototype
-[kernel:annot:missing-spec] tests/builtin/signalled.h:18: Warning: 
-  Neither code nor specification for function get_jmp_ctxt, generating default assigns from the prototype
-[kernel:annot:missing-spec] tests/builtin/signalled.h:20: Warning: 
-  Neither code nor specification for function set_handler, generating default assigns from the prototype
-[kernel:annot:missing-spec] tests/builtin/signalled.h:22: Warning: 
-  Neither code nor specification for function test_successful, generating default assigns from the prototype
-[e-acsl] FRAMAC_SHARE/libc/stdlib.h:457: Warning: 
+[e-acsl] FRAMAC_SHARE/libc/string.h:471: Warning: 
+  E-ACSL construct `\fresh' is not yet supported. Ignoring annotation.
+[e-acsl] FRAMAC_SHARE/libc/string.h:475: Warning: 
+  E-ACSL construct `predicate performing read accesses' is not yet supported.
+  Ignoring annotation.
+[e-acsl] FRAMAC_SHARE/libc/string.h:482: Warning: 
+  E-ACSL construct `predicate performing read accesses' is not yet supported.
+  Ignoring annotation.
+[e-acsl] FRAMAC_SHARE/libc/string.h:471: Warning: 
+  E-ACSL construct `logic functions with labels' is not yet supported.
+  Ignoring annotation.
+[e-acsl] FRAMAC_SHARE/libc/string.h:471: Warning: 
+  Some assumes clauses could not be translated.
+  Ignoring complete and disjoint behaviors annotations.
+[e-acsl] FRAMAC_SHARE/libc/string.h:471: Warning: 
   E-ACSL construct `assigns clause in behavior' is not yet supported.
   Ignoring annotation.
-[e-acsl] FRAMAC_SHARE/libc/string.h:469: Warning: 
-  E-ACSL construct `logic function application' is not yet supported.
+[e-acsl] FRAMAC_SHARE/libc/string.h:478: Warning: 
+  E-ACSL construct `\fresh' is not yet supported. Ignoring annotation.
+[e-acsl] FRAMAC_SHARE/libc/string.h:480: Warning: 
+  E-ACSL construct `logic functions performing read accesses'
+  is not yet supported.
   Ignoring annotation.
-[e-acsl] FRAMAC_SHARE/libc/string.h:469: Warning: 
+[e-acsl] FRAMAC_SHARE/libc/string.h:480: Warning: 
   E-ACSL construct `assigns clause in behavior' is not yet supported.
   Ignoring annotation.
-[e-acsl] FRAMAC_SHARE/libc/string.h:476: Warning: 
-  E-ACSL construct `logic function application' is not yet supported.
+[e-acsl] FRAMAC_SHARE/libc/string.h:128: Warning: 
+  E-ACSL construct `logic functions with labels' is not yet supported.
   Ignoring annotation.
-[e-acsl] FRAMAC_SHARE/libc/string.h:125: Warning: 
-  E-ACSL construct `logic function application' is not yet supported.
+[e-acsl] FRAMAC_SHARE/libc/string.h:128: Warning: 
+  E-ACSL construct `assigns clause in behavior' is not yet supported.
+  Ignoring annotation.
+[e-acsl] FRAMAC_SHARE/libc/string.h:130: Warning: 
+  E-ACSL construct `logic functions performing read accesses'
+  is not yet supported.
+  Ignoring annotation.
+[e-acsl] FRAMAC_SHARE/libc/unistd.h:856: Warning: 
+  E-ACSL construct `assigns clause in behavior' is not yet supported.
   Ignoring annotation.
-[e-acsl] FRAMAC_SHARE/libc/string.h:125: Warning: 
+[e-acsl] FRAMAC_SHARE/libc/sys/wait.h:79: Warning: 
   E-ACSL construct `assigns clause in behavior' is not yet supported.
   Ignoring annotation.
-[e-acsl] FRAMAC_SHARE/libc/string.h:127: Warning: 
-  E-ACSL construct `logic function returning an integer' is not yet supported.
+[e-acsl] FRAMAC_SHARE/libc/sys/wait.h:86: Warning: 
+  E-ACSL construct `assigns clause in behavior' is not yet supported.
   Ignoring annotation.
-[e-acsl] FRAMAC_SHARE/libc/string.h:127: Warning: 
+[e-acsl] FRAMAC_SHARE/libc/stdlib.h:470: Warning: 
   E-ACSL construct `assigns clause in behavior' is not yet supported.
   Ignoring annotation.
-[e-acsl] FRAMAC_SHARE/libc/stdlib.h:469: Warning: 
+[e-acsl] FRAMAC_SHARE/libc/stdlib.h:472: Warning: 
+  E-ACSL construct `abnormal termination case in behavior'
+  is not yet supported.
+  Ignoring annotation.
+[e-acsl] FRAMAC_SHARE/libc/stdlib.h:457: Warning: 
   E-ACSL construct `assigns clause in behavior' is not yet supported.
   Ignoring annotation.
+[e-acsl] FRAMAC_SHARE/libc/stdlib.h:459: Warning: 
+  E-ACSL construct `abnormal termination case in behavior'
+  is not yet supported.
+  Ignoring annotation.
 [e-acsl] translation done in project "e-acsl".
-[eva] Analyzing a complete application starting at main
-[eva] Computing initial state
-[eva] Initial state computed
-[eva:initial-state] Values of globals at initialization
-  __e_acsl_init ∈ [--..--]
-  __e_acsl_heap_allocation_size ∈ [--..--]
-  __e_acsl_math_HUGE_VAL ∈ [-1.79769313486e+308 .. 1.79769313486e+308]
-  __e_acsl_math_HUGE_VALF ∈ [-3.40282346639e+38 .. 3.40282346639e+38]
-  __e_acsl_math_INFINITY ∈ [-1.79769313486e+308 .. 1.79769313486e+308]
-  __e_acsl_sound_verdict ∈ [--..--]
-  __gen_e_acsl_literal_string ∈ {0}
-  __gen_e_acsl_literal_string_2 ∈ {0}
-  __gen_e_acsl_literal_string_3 ∈ {0}
-  __gen_e_acsl_literal_string_4 ∈ {0}
-  __gen_e_acsl_literal_string_5 ∈ {0}
-  __gen_e_acsl_literal_string_6 ∈ {0}
-  __gen_e_acsl_literal_string_7 ∈ {0}
-  __gen_e_acsl_literal_string_8 ∈ {0}
-  __gen_e_acsl_literal_string_9 ∈ {0}
-  __gen_e_acsl_literal_string_10 ∈ {0}
-  __gen_e_acsl_literal_string_11 ∈ {0}
-[eva] using specification for function __e_acsl_memory_init
-[eva] using specification for function __e_acsl_store_block
-[eva] using specification for function __e_acsl_full_init
-[eva] using specification for function __e_acsl_mark_readonly
-[eva] using specification for function strdup
-[eva:libc:unsupported-spec] FRAMAC_SHARE/libc/string.h:466: Warning: 
-  The specification of function 'strdup' is currently not supported by Eva.
-  Consider adding FRAMAC_SHARE/libc/string.c
-  to the analyzed source files.
-[eva] FRAMAC_SHARE/libc/string.h:466: Warning: 
-  ignoring unsupported \allocates clause
-[eva] using specification for function __e_acsl_delete_block
-[eva:alarm] FRAMAC_SHARE/libc/string.h:472: Warning: 
-  function __gen_e_acsl_strdup, behavior allocation: postcondition 'allocation' got status unknown. (Behavior may be inactive, no reduction performed.)
-[eva:alarm] FRAMAC_SHARE/libc/string.h:474: Warning: 
-  function __gen_e_acsl_strdup, behavior allocation: postcondition 'result_valid_string_and_same_contents' got status invalid. (Behavior may be inactive, no reduction performed.)
-[eva:alarm] FRAMAC_SHARE/libc/string.h:479: Warning: 
-  function __gen_e_acsl_strdup, behavior no_allocation: postcondition 'result_null' got status unknown. (Behavior may be inactive, no reduction performed.)
-[eva] using specification for function get_jmp_ctxt
-[eva:alarm] tests/builtin/strlen.c:18: Warning: 
-  out of bounds read. assert \valid_read(jmp_ctxt);
-[eva] done for function main
diff --git a/src/plugins/e-acsl/tests/builtin/oracle_dev/strcat.e-acsl.err.log b/src/plugins/e-acsl/tests/builtin/oracle_dev/strcat.e-acsl.err.log
new file mode 100644
index 0000000000000000000000000000000000000000..ab8fc09f1676ffab5bdec0fd761e37747f9f9bcd
--- /dev/null
+++ b/src/plugins/e-acsl/tests/builtin/oracle_dev/strcat.e-acsl.err.log
@@ -0,0 +1,40 @@
+TEST 1: OK: Expected execution at tests/builtin/strcat.c:27
+TEST 2: OK: Expected execution at tests/builtin/strcat.c:28
+strcat: insufficient space in destination string, available: 8 bytes, requires at least 9 bytes
+TEST 3: OK: Expected signal at tests/builtin/strcat.c:29
+strcat: destination string string unallocated
+TEST 4: OK: Expected signal at tests/builtin/strcat.c:30
+strcat: source string string unallocated
+TEST 5: OK: Expected signal at tests/builtin/strcat.c:31
+strcat: destination string string unallocated
+TEST 6: OK: Expected signal at tests/builtin/strcat.c:32
+strcat: source string string unallocated
+TEST 7: OK: Expected signal at tests/builtin/strcat.c:33
+strcat: destination string string is not writable
+TEST 8: OK: Expected signal at tests/builtin/strcat.c:34
+strcat: overlapping memory areas
+TEST 9: OK: Expected signal at tests/builtin/strcat.c:35
+strcat: overlapping memory areas
+TEST 10: OK: Expected signal at tests/builtin/strcat.c:36
+strcat: overlapping memory areas
+TEST 11: OK: Expected signal at tests/builtin/strcat.c:37
+TEST 12: OK: Expected execution at tests/builtin/strcat.c:38
+TEST 13: OK: Expected execution at tests/builtin/strcat.c:51
+strncat: insufficient space in destination string, available: 8 bytes, requires at least 9 bytes
+TEST 14: OK: Expected signal at tests/builtin/strcat.c:52
+strcat: destination string string unallocated
+TEST 15: OK: Expected signal at tests/builtin/strcat.c:53
+strncat: source string string unallocated
+TEST 16: OK: Expected signal at tests/builtin/strcat.c:54
+strcat: destination string string unallocated
+TEST 17: OK: Expected signal at tests/builtin/strcat.c:55
+strncat: source string string unallocated
+TEST 18: OK: Expected signal at tests/builtin/strcat.c:56
+strcat: destination string string is not writable
+TEST 19: OK: Expected signal at tests/builtin/strcat.c:57
+strcat: overlapping memory areas
+TEST 20: OK: Expected signal at tests/builtin/strcat.c:59
+strncat: insufficient space in destination string, available: 6 bytes, requires at least 7 bytes
+TEST 21: OK: Expected signal at tests/builtin/strcat.c:60
+strcat: overlapping memory areas
+TEST 22: OK: Expected signal at tests/builtin/strcat.c:61
diff --git a/src/plugins/e-acsl/tests/builtin/oracle_dev/strcmp.e-acsl.err.log b/src/plugins/e-acsl/tests/builtin/oracle_dev/strcmp.e-acsl.err.log
new file mode 100644
index 0000000000000000000000000000000000000000..d105e29238caee343744b76cbfa7880c60a42cdc
--- /dev/null
+++ b/src/plugins/e-acsl/tests/builtin/oracle_dev/strcmp.e-acsl.err.log
@@ -0,0 +1,36 @@
+TEST 1: OK: Expected execution at tests/builtin/strcmp.c:32
+TEST 2: OK: Expected execution at tests/builtin/strcmp.c:33
+TEST 3: OK: Expected execution at tests/builtin/strcmp.c:34
+strcmp: string 1 string not NUL-terminated
+TEST 4: OK: Expected signal at tests/builtin/strcmp.c:37
+strcmp: string 2 string not NUL-terminated
+TEST 5: OK: Expected signal at tests/builtin/strcmp.c:39
+strcmp: string 1 string not NUL-terminated
+TEST 6: OK: Expected signal at tests/builtin/strcmp.c:41
+strcmp: string 2 string not NUL-terminated
+TEST 7: OK: Expected signal at tests/builtin/strcmp.c:43
+strcmp: string 2 string unallocated
+TEST 8: OK: Expected signal at tests/builtin/strcmp.c:45
+strcmp: string 1 string unallocated
+TEST 9: OK: Expected signal at tests/builtin/strcmp.c:46
+strcmp: string 1 string unallocated
+TEST 10: OK: Expected signal at tests/builtin/strcmp.c:51
+strcmp: string 2 string unallocated
+TEST 11: OK: Expected signal at tests/builtin/strcmp.c:52
+TEST 12: OK: Expected execution at tests/builtin/strcmp.c:64
+TEST 13: OK: Expected execution at tests/builtin/strcmp.c:65
+TEST 14: OK: Expected execution at tests/builtin/strcmp.c:66
+TEST 15: OK: Expected execution at tests/builtin/strcmp.c:68
+TEST 16: OK: Expected execution at tests/builtin/strcmp.c:69
+TEST 17: OK: Expected execution at tests/builtin/strcmp.c:73
+TEST 18: OK: Expected execution at tests/builtin/strcmp.c:75
+TEST 19: OK: Expected execution at tests/builtin/strcmp.c:77
+TEST 20: OK: Expected execution at tests/builtin/strcmp.c:79
+strncmp: string 2 string has insufficient length
+TEST 21: OK: Expected signal at tests/builtin/strcmp.c:82
+strncmp: string 2 string has insufficient length
+TEST 22: OK: Expected signal at tests/builtin/strcmp.c:84
+strncmp: string 2 string has insufficient length
+TEST 23: OK: Expected signal at tests/builtin/strcmp.c:85
+strncmp: string 1 string has insufficient length
+TEST 24: OK: Expected signal at tests/builtin/strcmp.c:87
diff --git a/src/plugins/e-acsl/tests/builtin/oracle_dev/strcpy.e-acsl.err.log b/src/plugins/e-acsl/tests/builtin/oracle_dev/strcpy.e-acsl.err.log
new file mode 100644
index 0000000000000000000000000000000000000000..eba27da36697e403eec185fdb5fc59294a9703ad
--- /dev/null
+++ b/src/plugins/e-acsl/tests/builtin/oracle_dev/strcpy.e-acsl.err.log
@@ -0,0 +1,27 @@
+TEST 1: OK: Expected execution at tests/builtin/strcpy.c:21
+TEST 2: OK: Expected execution at tests/builtin/strcpy.c:22
+strlen: insufficient space in destination string, at least 5 bytes required
+TEST 3: OK: Expected signal at tests/builtin/strcpy.c:23
+strlen: destination string space unallocated or cannot be written
+TEST 4: OK: Expected signal at tests/builtin/strcpy.c:24
+strlen: destination string space unallocated or cannot be written
+TEST 5: OK: Expected signal at tests/builtin/strcpy.c:25
+TEST 6: OK: Expected execution at tests/builtin/strcpy.c:26
+strcpy: overlapping memory areas
+TEST 7: OK: Expected signal at tests/builtin/strcpy.c:27
+TEST 8: OK: Expected execution at tests/builtin/strcpy.c:28
+strcpy: overlapping memory areas
+TEST 9: OK: Expected signal at tests/builtin/strcpy.c:29
+TEST 10: OK: Expected execution at tests/builtin/strcpy.c:32
+strncpy: insufficient space in destination string , at least 6 bytes required
+TEST 11: OK: Expected signal at tests/builtin/strcpy.c:33
+strncpy: destination string  space unallocated or cannot be written
+TEST 12: OK: Expected signal at tests/builtin/strcpy.c:34
+strncpy: destination string  space unallocated or cannot be written
+TEST 13: OK: Expected signal at tests/builtin/strcpy.c:35
+TEST 14: OK: Expected execution at tests/builtin/strcpy.c:36
+strncpy: overlapping memory areas
+TEST 15: OK: Expected signal at tests/builtin/strcpy.c:37
+TEST 16: OK: Expected execution at tests/builtin/strcpy.c:38
+strncpy: overlapping memory areas
+TEST 17: OK: Expected signal at tests/builtin/strcpy.c:39
diff --git a/src/plugins/e-acsl/tests/builtin/oracle_dev/strlen.e-acsl.err.log b/src/plugins/e-acsl/tests/builtin/oracle_dev/strlen.e-acsl.err.log
new file mode 100644
index 0000000000000000000000000000000000000000..73c10d123a2469ab83d8ddc961286d65f6a06b17
--- /dev/null
+++ b/src/plugins/e-acsl/tests/builtin/oracle_dev/strlen.e-acsl.err.log
@@ -0,0 +1,10 @@
+TEST 1: OK: Expected execution at tests/builtin/strlen.c:18
+TEST 2: OK: Expected execution at tests/builtin/strlen.c:19
+TEST 3: OK: Expected execution at tests/builtin/strlen.c:20
+TEST 4: OK: Expected execution at tests/builtin/strlen.c:21
+strlen: input string not NUL-terminated
+TEST 5: OK: Expected signal at tests/builtin/strlen.c:25
+strlen: input string not NUL-terminated
+TEST 6: OK: Expected signal at tests/builtin/strlen.c:26
+strlen: input string unallocated
+TEST 7: OK: Expected signal at tests/builtin/strlen.c:28
diff --git a/src/plugins/e-acsl/tests/builtin/signalled.c b/src/plugins/e-acsl/tests/builtin/signalled.c
deleted file mode 100644
index ebb74f89b4b88c76804cf539f7502ac5aea991a8..0000000000000000000000000000000000000000
--- a/src/plugins/e-acsl/tests/builtin/signalled.c
+++ /dev/null
@@ -1,51 +0,0 @@
-/* run.config
-DONTRUN: auxiliary file use by tests
-*/
-#include "signalled.h"
-
-static sigjmp_buf jmp_ctxt;
-static int got_signal;
-static int testno = 0;
-
-sigjmp_buf* get_jmp_ctxt(void) { return &jmp_ctxt; }
-
-void signalled(int sig) {
-  printf("signalled\n");
-  struct sigaction sig_dfl;
-  sig_dfl.sa_handler = SIG_DFL;
-  sigemptyset(&sig_dfl.sa_mask);
-  sigaction(SIGABRT,&sig_dfl,NULL);
-  got_signal = 1;
-  siglongjmp(jmp_ctxt,EXE_SIGNAL);
-}
-
-void signal_eval(int signalled, int expect_signal, const char* at) {
-  printf("TEST %d: ", ++testno);
-  if (signalled && expect_signal)
-    printf("OK: Expected signal at %s\n", at);
-  else if (!signalled && !expect_signal)
-    printf("OK: Expected execution at %s\n", at);
-  else if (!signalled && expect_signal) {
-    printf("FAIL: Unexpected execution at %s\n", at);
-    exit(1);
-  } else if (signalled && !expect_signal) {
-    printf("FAIL: Unexpected signal at %s\n", at);
-    exit(2);
-  }
-}
-
-void set_handler(void) {
-  struct sigaction check_signal;
-  check_signal.sa_handler = signalled;
-  sigemptyset(&check_signal.sa_mask);
-  check_signal.sa_flags = 0;
-  sigaction(SIGABRT,&check_signal,NULL);
-}
-
-void test_successful(void) {
-  struct sigaction sig_dfl;
-  sig_dfl.sa_handler = SIG_DFL;
-  sigemptyset(&sig_dfl.sa_mask);
-  sigaction(SIGABRT,&sig_dfl,NULL);
-  siglongjmp(jmp_ctxt,EXE_SUCCESS);
-}
diff --git a/src/plugins/e-acsl/tests/builtin/signalled.h b/src/plugins/e-acsl/tests/builtin/signalled.h
deleted file mode 100644
index 1a16fdf7c5a22c3fdab0766fe22a8d277932f925..0000000000000000000000000000000000000000
--- a/src/plugins/e-acsl/tests/builtin/signalled.h
+++ /dev/null
@@ -1,53 +0,0 @@
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <signal.h>
-#include <setjmp.h>
-
-#define STRINGIFY(x) #x
-#define TOSTRING(x) STRINGIFY(x)
-#define AT __FILE__ ":" TOSTRING(__LINE__)
-
-#define EXE_SUCCESS 1
-#define EXE_SIGNAL 2
-
-void signal_eval(int signalled, int expect_signal, const char *at);
-
-void signalled(int sig);
-
-sigjmp_buf* get_jmp_ctxt(void);
-
-void set_handler(void);
-
-void test_successful(void);
-
-/* The following macro runs a chunk of code in a subprocess and evaluates
-   the result. This macro assumes that fork is always successful. */
-#define SIGNALLED_AT(code, expect_signal, at) {                         \
-    sigjmp_buf* jmp_ctxt = get_jmp_ctxt();                                 \
-    switch (sigsetjmp(*jmp_ctxt,1)) {                                   \
-      case 0: {                                                         \
-        set_handler();                                                  \
-        code;                                                           \
-        test_successful();                                              \
-        break;                                                          \
-      }                                                                 \
-      case EXE_SUCCESS: {                                               \
-        signal_eval(0,expect_signal,at);                                \
-        break;                                                          \
-      }                                                                 \
-      case EXE_SIGNAL: {                                                \
-        signal_eval(1,expect_signal,at);                                \
-        break;                                                          \
-      }                                                                 \
-      default: {                                                        \
-        printf("FAIL: Unexpected value return from test at %s\n", at);  \
-        exit(3);                                                        \
-      }                                                                 \
-    }                                                                   \
-  }
-
-#define ABRT(code) SIGNALLED_AT(code, 1, AT)
-#define OK(code) SIGNALLED_AT(code, 0, AT);
-#define ABRT_AT(code,at) SIGNALLED_AT(code, 1, at)
-#define OK_AT(code,at) SIGNALLED_AT(code, 0, at)
diff --git a/src/plugins/e-acsl/tests/builtin/strcat.c b/src/plugins/e-acsl/tests/builtin/strcat.c
index 3edb44098d8a2a370612d97953a0ccded31a2819..913f1208a138f2010f722fde361ce55cb58c4649 100644
--- a/src/plugins/e-acsl/tests/builtin/strcat.c
+++ b/src/plugins/e-acsl/tests/builtin/strcat.c
@@ -2,7 +2,7 @@
    COMMENT: Test `strcat` and `strncat` E-ACSL built-ins
 */
 
-#include "signalled.h"
+#include "../utils/signalled.h"
 #include <string.h>
 #include <stdlib.h>
 
diff --git a/src/plugins/e-acsl/tests/builtin/strcmp.c b/src/plugins/e-acsl/tests/builtin/strcmp.c
index eaf63cb7e24a981a225df14570dac5227b415d83..3618105f7e3928623b29811582a4a927e7b63264 100644
--- a/src/plugins/e-acsl/tests/builtin/strcmp.c
+++ b/src/plugins/e-acsl/tests/builtin/strcmp.c
@@ -2,7 +2,7 @@
    COMMENT: Test `strcmp` and `strncmp` E-ACSL built-ins
 */
 
-#include "signalled.h"
+#include "../utils/signalled.h"
 #include <string.h>
 #include <stdlib.h>
 
diff --git a/src/plugins/e-acsl/tests/builtin/strcpy.c b/src/plugins/e-acsl/tests/builtin/strcpy.c
index 425d98815a41a2e103ef270f0abd3ce8f27a10d8..ad599900304c0c5f4a40a852d196025cb90b58e4 100644
--- a/src/plugins/e-acsl/tests/builtin/strcpy.c
+++ b/src/plugins/e-acsl/tests/builtin/strcpy.c
@@ -2,7 +2,7 @@
    COMMENT: Test `strcpy` and `strncpy` E-ACSL built-ins
 */
 
-#include "signalled.h"
+#include "../utils/signalled.h"
 #include <string.h>
 #include <stdlib.h>
 
diff --git a/src/plugins/e-acsl/tests/builtin/strlen.c b/src/plugins/e-acsl/tests/builtin/strlen.c
index fd95215e70851cce422ef894574e10be84c8f964..b64c51052e10014e8a8ca7c70cf68c238c04a3bc 100644
--- a/src/plugins/e-acsl/tests/builtin/strlen.c
+++ b/src/plugins/e-acsl/tests/builtin/strlen.c
@@ -2,7 +2,7 @@
    COMMENT: Test `strlen` E-ACSL built-ins
 */
 
-#include "signalled.h"
+#include "../utils/signalled.h"
 #include <string.h>
 #include <stdlib.h>
 
diff --git a/src/plugins/e-acsl/tests/builtin/test_config_dev b/src/plugins/e-acsl/tests/builtin/test_config_dev
index 75244f22baf113b9a89e5613d15e66d948db1264..40aa6abeb704643c14f4d2cbc122f63263b77964 100644
--- a/src/plugins/e-acsl/tests/builtin/test_config_dev
+++ b/src/plugins/e-acsl/tests/builtin/test_config_dev
@@ -1,2 +1,2 @@
-MACRO: ROOT_EACSL_GCC_OPTS_EXT --libc-replacements
-STDOPT:
+COMMENT: Remove --full-mtracking once e-acsl#118 is fixed
+MACRO: ROOT_EACSL_GCC_OPTS_EXT --libc-replacements --full-mtracking
diff --git a/src/plugins/e-acsl/tests/format/fprintf.c b/src/plugins/e-acsl/tests/format/fprintf.c
index 4c10fef60952d476c5e9aa8474cbedfc5a0aeb9a..562a89a4f6be9b0398ea3cf9857d2acffd570fe1 100644
--- a/src/plugins/e-acsl/tests/format/fprintf.c
+++ b/src/plugins/e-acsl/tests/format/fprintf.c
@@ -4,7 +4,7 @@
 
 #include <stdlib.h>
 #include <stdio.h>
-#include "signalled.h"
+#include "../utils/signalled.h"
 
 int main(int argc, const char **argv) {
   char *pstr = "Hello world!";
diff --git a/src/plugins/e-acsl/tests/format/oracle_ci/printf.res.oracle b/src/plugins/e-acsl/tests/format/oracle_ci/printf.res.oracle
index 1faab6ba910f0584577be279eb015cf69a1684fc..dfcc2cbe04f0eaa345bb32d1e95e4d40370542cb 100644
--- a/src/plugins/e-acsl/tests/format/oracle_ci/printf.res.oracle
+++ b/src/plugins/e-acsl/tests/format/oracle_ci/printf.res.oracle
@@ -60,7 +60,7 @@
   E-ACSL construct `logic functions with labels' is not yet supported.
   Ignoring annotation.
 [e-acsl] FRAMAC_SHARE/libc/string.h:160: Warning: 
-  Some assumes clauses couldn't be translated.
+  Some assumes clauses could not be translated.
   Ignoring complete and disjoint behaviors annotations.
 [e-acsl] FRAMAC_SHARE/libc/string.h:160: Warning: 
   E-ACSL construct `assigns clause in behavior' is not yet supported.
diff --git a/src/plugins/e-acsl/tests/format/printf.c b/src/plugins/e-acsl/tests/format/printf.c
index d641651c13768f8d49c9fdf48c771c4bfcae39d8..9120259d2bc1a4629f7a8c2ae1962ca80b5b3d60 100644
--- a/src/plugins/e-acsl/tests/format/printf.c
+++ b/src/plugins/e-acsl/tests/format/printf.c
@@ -12,7 +12,7 @@
 #include <stdint.h>
 #include <limits.h>
 #include <wchar.h>
-#include "signalled.h"
+#include "../utils/signalled.h"
 
 #define ABRT_AT(code,at) SIGNALLED_AT(code, 1, at)
 #define OK_AT(code,at) SIGNALLED_AT(code, 0, at)
diff --git a/src/plugins/e-acsl/tests/format/test_config_dev b/src/plugins/e-acsl/tests/format/test_config_dev
index d7f6f441060ba9eb22b426eaf816ff05a679840b..dd9937641ad9afdd509b8fa4fcad02299d072049 100644
--- a/src/plugins/e-acsl/tests/format/test_config_dev
+++ b/src/plugins/e-acsl/tests/format/test_config_dev
@@ -1,3 +1,3 @@
+COMMENT: Remove --full-mtracking once e-acsl#118 is fixed
 MACRO: ROOT_EACSL_GCC_OPTS_EXT --validate-format-strings --full-mtracking -F -variadic-no-translation
 MACRO: ROOT_EACSL_EXEC_FILTER @SEDCMD@ -e "s|/.*/share/e-acsl|FRAMAC_SHARE/e-acsl|"
-STDOPT:
diff --git a/src/plugins/e-acsl/tests/memory/oracle_ci/memalign.res.oracle b/src/plugins/e-acsl/tests/memory/oracle_ci/memalign.res.oracle
index a08399a71e09e3fde121d5d0a7439511ae6e23f0..e06d7eea4c4d8afea7628d45323b31fb7847fe25 100644
--- a/src/plugins/e-acsl/tests/memory/oracle_ci/memalign.res.oracle
+++ b/src/plugins/e-acsl/tests/memory/oracle_ci/memalign.res.oracle
@@ -11,7 +11,7 @@
   E-ACSL construct `predicate performing read accesses' is not yet supported.
   Ignoring annotation.
 [e-acsl] FRAMAC_SHARE/libc/stdlib.h:665: Warning: 
-  Some assumes clauses couldn't be translated.
+  Some assumes clauses could not be translated.
   Ignoring complete and disjoint behaviors annotations.
 [e-acsl] FRAMAC_SHARE/libc/stdlib.h:665: Warning: 
   E-ACSL construct `assigns clause in behavior' is not yet supported.
diff --git a/src/plugins/e-acsl/tests/format/signalled.h b/src/plugins/e-acsl/tests/utils/signalled.h
similarity index 100%
rename from src/plugins/e-acsl/tests/format/signalled.h
rename to src/plugins/e-acsl/tests/utils/signalled.h