diff --git a/src/plugins/e-acsl/.gitignore b/src/plugins/e-acsl/.gitignore
index bad643ee748bf785913cab05f7d3d15c39f12fb5..8bc5e0b54ec5cfbcdd63e115855e21d315764ad2 100644
--- a/src/plugins/e-acsl/.gitignore
+++ b/src/plugins/e-acsl/.gitignore
@@ -69,3 +69,4 @@ META.frama-c-e_acsl
 .merlin
 Makefile.plugin.generated
 E_ACSL.check_mli_exists
+top/
diff --git a/src/plugins/e-acsl/INSTALL b/src/plugins/e-acsl/INSTALL
index 8adfec1f1e39c4e94d6ddec893862d3c2fb478cd..a9889e86c57ab6f6aaf2fb1d7cae67c3c70a702e 100644
--- a/src/plugins/e-acsl/INSTALL
+++ b/src/plugins/e-acsl/INSTALL
@@ -43,10 +43,10 @@ See below for more detailed and specific instructions.
   (no warranty that this plug-in works with a more recent version of Frama-C)
 
 - The native version of the plug-in is only available if native dynamic linking
-  feature of OCaml is available on your system (see Frama-C User Manual, 
-  Section 3.1). 
+  feature of OCaml is available on your system (see Frama-C User Manual,
+  Section 3.1).
 - Optionally, the GMP library >= 4.3
-  It is required to run the tests and to run some generated programs, 
+  It is required to run the tests and to run some generated programs,
   but not to run the plug-in through Frama-C.
 
 ===============================================================================
@@ -92,12 +92,28 @@ Object files: (usually in `frama-c -print-plugin-path`)
 
 Shared files: (usually in `frama-c -print-share-path`/e-acsl)
 -------------
-- e_acsl.[ch]
+- e_acsl_assert.h
+- e_acsl_debug.h
 - e_acsl_gmp.h
 - e_acsl_gmp_types.h
-- memory_model/e_acsl_bittree.[ch]
-- memory_model/e_acsl_mmodel.[ch]
-- memory_model/e_acsl_mmodel_api.[h]
+- e_acsl.h
+- e_acsl_mmodel.h
+- e_acsl_printf.h
+- e_acsl_string.h
+- e_acsl_syscall.h
+- glibc/memcpy.c
+- glibc/wordcopy.c
+- glibc/strncmp.c
+- glibc/memcopy.h
+- glibc/pagecopy.h
+- glibc/strlen.c
+- glibc/memmove.c
+- glibc/memset.c
+- glibc/strcmp.c
+- bittree_model/e_acsl_mmodel.c
+- bittree_model/e_acsl_mmodel_api.h
+- bittree_model/e_acsl_bittree.h
+- bittree_model/e_acsl_bittree.c
 
 Manuals: (usually in `frama-c -print-share-path`/manuals)
 --------
@@ -129,7 +145,7 @@ Test your installation by running:
   frama-c.byte -e-acsl tests/e-acsl-runtime/true.i -then-on e-acsl -print
   frama-c -e-acsl tests/e-acsl-runtime/true.i -then-on e-acsl -print
 
-The second command only works if native dynamic linking of OCaml is available 
+The second command only works if native dynamic linking of OCaml is available
 on your system.
 
 ===============================================================================
diff --git a/src/plugins/e-acsl/Makefile.in b/src/plugins/e-acsl/Makefile.in
index 4dd4dc46d1e3016574ee0cac233bb168e99593fd..5fb3a337054828d22e0f41314548617a0ece2cab 100644
--- a/src/plugins/e-acsl/Makefile.in
+++ b/src/plugins/e-acsl/Makefile.in
@@ -137,9 +137,10 @@ install::
 	$(PRINT_INSTALL) E-ACSL share files
 	$(MKDIR) $(FRAMAC_SHARE)/e-acsl
 	$(CP) $(E_ACSL_DIR)/share/e-acsl/*.[ch] $(FRAMAC_SHARE)/e-acsl
-	$(MKDIR) $(FRAMAC_SHARE)/e-acsl/memory_model
-	$(CP) $(E_ACSL_DIR)/share/e-acsl/memory_model/* \
-		$(FRAMAC_SHARE)/e-acsl/memory_model
+	$(MKDIR) $(FRAMAC_SHARE)/e-acsl/bittree_model $(FRAMAC_SHARE)/e-acsl/glibc
+	$(CP) $(E_ACSL_DIR)/share/e-acsl/bittree_model/* \
+		$(FRAMAC_SHARE)/e-acsl/bittree_model
+	$(CP) $(E_ACSL_DIR)/share/e-acsl/glibc/* $(FRAMAC_SHARE)/e-acsl/glibc
 	$(PRINT_INSTALL) E-ACSL manuals
 	$(MKDIR) $(FRAMAC_SHARE)/manuals
 	$(CP) $(E_ACSL_DIR)/doc/manuals/e-acsl.pdf \
@@ -184,8 +185,8 @@ EACSL_DISTRIB_FILES=\
 	scripts/e-acsl-gcc.sh \
 	man/e-acsl-gcc.sh.1 \
 	share/e-acsl/*.[ch] \
-	share/e-acsl/memory_model/e_acsl_bittree.[ch] \
-	share/e-acsl/memory_model/e_acsl_mmodel*.[ch] \
+	share/e-acsl/bittree_model/e_acsl_bittree.[ch] \
+	share/e-acsl/bittree_model/e_acsl_mmodel*.[ch] \
 	tests/test_config.in \
 	tests/e-acsl-reject/test_config tests/e-acsl-reject/*.i \
 	tests/e-acsl-runtime/test_config tests/e-acsl-runtime/*.[ci] \
diff --git a/src/plugins/e-acsl/doc/Changelog b/src/plugins/e-acsl/doc/Changelog
index 9544a709df4d4954b7ee014754b34dd841a722fb..5f0f154d945389e6d7bfd8d75774ff702cbc075f 100644
--- a/src/plugins/e-acsl/doc/Changelog
+++ b/src/plugins/e-acsl/doc/Changelog
@@ -15,6 +15,9 @@
 #   E-ACSL: the Whole E-ACSL plug-in
 ###############################################################################
 
+-* E-ACSL       [2016/01/15] Fixed several bugs related to incorrect partial
+	        initialization of tracked memory blocks in the E-ACSL runtime
+	        library.
 -* E-ACSL       [2016/02/25] Fix 'make clean' in tests.
 
 ###########################
diff --git a/src/plugins/e-acsl/gcc.sh b/src/plugins/e-acsl/gcc.sh
deleted file mode 100755
index 8184fbdd06acbcdeb3d1dcc259cd4b6e9ca40b7c..0000000000000000000000000000000000000000
--- a/src/plugins/e-acsl/gcc.sh
+++ /dev/null
@@ -1,10 +0,0 @@
-#!/bin/sh
-
-#export SHARE=`frama-c -print-share-path`
-export SHARE=./share
-
-echo compiling $1
-gcc -std=c99 -pedantic -Wall -Wno-long-long -Wno-attributes -Wno-unused-but-set-variable -fno-builtin -o $1.out $SHARE/e-acsl/e_acsl.c $SHARE/e-acsl/memory_model/e_acsl_bittree.c $SHARE/e-acsl/memory_model/e_acsl_mmodel.c $1 -lgmp
-
-echo executing $1
-time ./$1.out
diff --git a/src/plugins/e-acsl/gcc_bts.sh b/src/plugins/e-acsl/gcc_bts.sh
deleted file mode 100755
index 2cdb3e49a1e682a855bfbc36d08b87b9a8587885..0000000000000000000000000000000000000000
--- a/src/plugins/e-acsl/gcc_bts.sh
+++ /dev/null
@@ -1,3 +0,0 @@
-#!/bin/sh
-
-./gcc_test.sh bts $@
diff --git a/src/plugins/e-acsl/gcc_runtime.sh b/src/plugins/e-acsl/gcc_runtime.sh
deleted file mode 100755
index b6794c4fd873bd4f01c72ccee4218a142720d4a3..0000000000000000000000000000000000000000
--- a/src/plugins/e-acsl/gcc_runtime.sh
+++ /dev/null
@@ -1,3 +0,0 @@
-#!/bin/sh
-
-./gcc_test.sh e-acsl-runtime $@
diff --git a/src/plugins/e-acsl/gcc_test.sh b/src/plugins/e-acsl/gcc_test.sh
deleted file mode 100755
index 3ec2e5b8f9646b1d9ee2f3f1097ba9124ef45c5e..0000000000000000000000000000000000000000
--- a/src/plugins/e-acsl/gcc_test.sh
+++ /dev/null
@@ -1,18 +0,0 @@
-#!/bin/sh
-
-DIR=$1
-IN=$2
-if [ $# -gt 2 ]; then
-    shift
-    shift
-    BUILTIN=$1
-    ARGS=$@
-fi
-
-gcc -std=c99 -Wall -Wno-unused-function -Wno-long-long -Wno-attributes -Wno-unused-but-set-variable -fno-builtin $BUILTIN -o ./tests/$DIR/result/gen_$IN.out ./share/e-acsl/e_acsl.c ./share/e-acsl/memory_model/e_acsl_bittree.c ./share/e-acsl/memory_model/e_acsl_mmodel.c ./tests/$DIR/result/gen_$IN.c -lgmp && ./tests/$DIR/result/gen_$IN.out $ARGS
-
-# gcc -std=c99 -Wall -Wno-unused-function -Wno-long-long -Wno-attributes -Wno-unused-but-set-variable -fno-builtin $BUILTIN -o ./tests/$DIR/result/gen_$IN.out ./share/e-acsl/e_acsl.c ./share/e-acsl/memory_model/e_acsl_list.c ./share/e-acsl/memory_model/e_acsl_mmodel.c ./tests/$DIR/result/gen_$IN.c -lgmp && ./tests/$DIR/result/gen_$IN.out $ARGS
-
-# gcc -std=c99 -Wall -Wno-unused-function -Wno-long-long -Wno-attributes -Wno-unused-but-set-variable -fno-builtin $BUILTIN -o ./tests/$DIR/result/gen_$IN.out ./share/e-acsl/e_acsl.c ./share/e-acsl/memory_model/e_acsl_splay_tree.c ./share/e-acsl/memory_model/e_acsl_mmodel.c ./tests/$DIR/result/gen_$IN.c -lgmp && ./tests/$DIR/result/gen_$IN.out $ARGS
-
-# gcc -std=c99 -Wall -Wno-unused-function -Wno-long-long -Wno-attributes -Wno-unused-but-set-variable -fno-builtin $BUILTIN -o ./tests/$DIR/result/gen_$IN.out ./share/e-acsl/e_acsl.c ./share/e-acsl/memory_model/e_acsl_tree.c ./share/e-acsl/memory_model/e_acsl_mmodel.c ./tests/$DIR/result/gen_$IN.c -lgmp && ./tests/$DIR/result/gen_$IN.out $ARGS
diff --git a/src/plugins/e-acsl/man/e-acsl-gcc.sh.1 b/src/plugins/e-acsl/man/e-acsl-gcc.sh.1
index 225328400351a88367c80bf433100e4a7e82b4aa..048b58dbf85caabb25d37aee1d4a2c92ec5db41d 100644
--- a/src/plugins/e-acsl/man/e-acsl-gcc.sh.1
+++ b/src/plugins/e-acsl/man/e-acsl-gcc.sh.1
@@ -112,10 +112,8 @@ memory model (i.e., a runtime library for checking memory related annotations)
 to be linked against the instrumented file.
 
 Valid arguments are:
-  \fIbittree\fP     \- memory modelling using a Patricia trie ADT.
-  \fIsplay_tree\fP  \- memory modelling using a splay tree ADT.
-  \fIlist\fP        \- memory modelling using a linked-list ADT.
-  \fItree\fP        \- memory modelling using a binary tree ADT.
+  \fIbittree\fP     \- memory modelling using a Patricia trie.
+  \fIsegment\fP     \- shadow based segment model.
 
 By default the Patricia trie  memory model is used.
 .TP
@@ -170,10 +168,10 @@ compile \fIfoo.c\fP into \fIfoo\fP and \fIgen_foo.c\fP into \fIfoo.e-acsl\fP.
 The \fB-P\fP option specifies that the instrumentation should omit debug
 functionality.
 
-.B e-acsl-gcc.sh --memory-model=splay_tree -C gen_foo.c
+.B e-acsl-gcc.sh --memory-model=bittree -C gen_foo.c
 
 Assume \fIgen_foo.c\fP has been instrumented by \fBE-ACSL\fP and compile it into
-\fIa.out.e-acsl\fP using \fBsplay_tree\fP memory model.
+\fIa.out.e-acsl\fP using \fBbittree\fP memory model.
 
 .SH SEE ALSO
 \fBgcc\fP(1), \fBcpp\fP(1), \fBld\fP(1), \fBframa-c\fP(1)
diff --git a/src/plugins/e-acsl/misc.ml b/src/plugins/e-acsl/misc.ml
index e56f543549f25bed168969525efb307c6bc0b1e2..c85115ef25819c1f1e0ed69729b5cf0a26056d66 100644
--- a/src/plugins/e-acsl/misc.ml
+++ b/src/plugins/e-acsl/misc.ml
@@ -33,9 +33,7 @@ let library_files () =
     [ "e_acsl.h";
       "e_acsl_gmp_types.h";
       "e_acsl_gmp.h";
-      "memory_model/e_acsl_mmodel_api.h";
-      "memory_model/e_acsl_bittree.h";
-      "memory_model/e_acsl_mmodel.h" ]
+      "e_acsl_mmodel_api.h" ]
 
 let normalized_library_files = 
   lazy (List.map Filepath.normalize (library_files ()))
@@ -124,7 +122,7 @@ let get_orig_name kf =
   else
     name
 
-let e_acsl_guard_name = "e_acsl_assert"
+let e_acsl_guard_name = "__e_acsl_assert"
 
 (* Build a C conditional doing a runtime assertion check. *)
 let mk_e_acsl_guard ?(reverse=false) kind kf e p =
@@ -234,9 +232,9 @@ let mk_delete_stmt vi =
   in
   mk_debug_mmodel_stmt stmt
 
-let mk_literal_string vi =
+let mk_readonly vi =
   let loc = vi.vdecl in
-  let stmt = mk_call ~loc "__literal_string" [ Cil.evar ~loc vi ] in
+  let stmt = mk_call ~loc "__readonly" [ Cil.evar ~loc vi ] in
   mk_debug_mmodel_stmt stmt
 
 (* ************************************************************************** *)
diff --git a/src/plugins/e-acsl/misc.mli b/src/plugins/e-acsl/misc.mli
index 46fdd6a4a4e1a196306ea2e2da1260d03dba807d..2b8a1c6dbe0823300ef3bf539a09eb8c4b0fcbb0 100644
--- a/src/plugins/e-acsl/misc.mli
+++ b/src/plugins/e-acsl/misc.mli
@@ -76,7 +76,7 @@ val mk_store_stmt: ?str_size:exp -> varinfo -> stmt
 val mk_delete_stmt: varinfo -> stmt
 val mk_full_init_stmt: ?addr:bool -> varinfo -> stmt
 val mk_initialize: loc:location -> lval -> stmt
-val mk_literal_string: varinfo -> stmt
+val mk_readonly: varinfo -> stmt
 
 (* ************************************************************************** *)
 (** {2 Other stuff} *)
diff --git a/src/plugins/e-acsl/scripts/e-acsl-gcc.sh b/src/plugins/e-acsl/scripts/e-acsl-gcc.sh
index 8e7e994fde781262b38947199cc94bf5524b469b..ba6de0e7ad07d575804efd0bbc78ccb95673dddc 100755
--- a/src/plugins/e-acsl/scripts/e-acsl-gcc.sh
+++ b/src/plugins/e-acsl/scripts/e-acsl-gcc.sh
@@ -48,7 +48,7 @@ check_tool() {
 LONGOPTIONS="help,compile,compile-only,print,debug:,ocode:,oexec:,verbose:, \
   frama-c-only,extra-cpp-args:,frama-c-stdlib,full-mmodel,gmp,quiet,logfile:,
   ld-flags:,cpp-flags:,frama-c-extra:,memory-model:,production,no-stdlib,
-  debug-log:,frama-c:,gcc:"
+  debug-log:,frama-c:,gcc:,e-acsl-share:"
 SHORTOPTIONS="h,c,C,p,d:,o:,O:,v:,f,E:,L,M,l:,e:,g,q,s:,F:,m:,P,N,D:I:G:"
 # Prefix for an error message due to wrong arguments
 ERROR="ERROR parsing arguments:"
@@ -74,7 +74,8 @@ OPTION_GMP=                              # Use GMP integers everywhere
 OPTION_DEBUG_MACRO="-DE_ACSL_DEBUG"      # Debug macro
 OPTION_DEBUG_LOG_MACRO=""                # Specification of debug log file
 OPTION_FRAMAC_CPP_EXTRA=""               # Extra CPP flags for Frama-C
-OPTION_EACSL_MMODEL="bittree"            # Memory model used
+OPTION_EACSL_MMODELS="bittree"           # Memory model used
+OPTION_EACSL_SHARE=                      # Custom E-ACSL share directory
 # The following option controls whether to use gcc builtins
 # (e.g., __builtin_strlen) in RTL or fall back to custom implementations
 # of standard functions.
@@ -106,6 +107,9 @@ Notes:
   exit 1
 }
 
+# Base dir of this script
+BASEDIR=$(readlink -f `dirname $0`)
+
 # See if pygmentize if available for color highlighting and default to plain
 # cat command otherwise
 if has_tool 'pygmentize'; then
@@ -270,12 +274,18 @@ do
       OPTION_CC="$1"
       shift;
     ;;
-    # A memory model to link against
+    # Specify EACSL_SHARE directory (where C runtime library lives) by hand
+    # rather than compute it
+    --e-acsl-share)
+      shift;
+      OPTION_EACSL_SHARE="$1"
+      shift;
+    ;;
+    # A memory model  (or models) to link against
     -m|--memory-model)
       shift;
-      echo $1 | grep "\(tree\|bittree\|splay_tree\|list\)"
-      error "no such memory model: $1" $?
-      OPTION_EACSL_MMODEL="$1"
+      # Convert comma-separated string into white-space separated string
+      OPTION_EACSL_MMODELS="`echo $1 | sed -s 's/,/ /g'`"
       shift;
     ;;
   esac
@@ -287,6 +297,11 @@ if [ -z "$1" ]; then
   error "no input files";
 fi
 
+# Check if this is `development' of installed version.
+if [ -f "$BASEDIR/../E_ACSL.mli" ]; then
+  DEVELOPMENT=1
+fi
+
 # Architecture-dependent flags. Since by default Frama-C uses 32-bit
 # architecture we need to make sure that same architecture is used for
 # instrumentation and for compilation.
@@ -313,9 +328,51 @@ FRAMAC_CPP_EXTRA="
   -D$EACSL_MACRO_ID
   -I$FRAMAC_SHARE/libc
   $CPPMACHDEP"
-EACSL_SHARE="$FRAMAC_SHARE/e-acsl"
 EACSL_MMODEL="$OPTION_EACSL_MMODEL"
 
+# E-ACSL share directory
+# If specified explicitly via the --e-acsl-share option than use that ...
+if [ -n "$OPTION_EACSL_SHARE" ]; then
+  EACSL_SHARE="$OPTION_EACSL_SHARE"
+# ... otherwise compute it
+else
+  # Installed version path
+  if [ -z "$DEVELOPMENT" ]; then
+    EACSL_SHARE="$BASEDIR/../share/frama-c/e-acsl/"
+  # Development version path
+  else
+    EACSL_SHARE="$BASEDIR/../share/e-acsl"
+  fi
+fi
+
+# Check if the E-ACSL share directory is indeed an E-ACSL share directory that
+# contains required C code. The check involves looking up
+# $EACSL_SHARE/e_acsl_mmodel_api.h - one of the headers required by the Frama-C
+# invocation. This is a week check but it is better than nothing.
+error "Cannot find required $EACSL_SHARE/e_acsl_mmodel_api.h header" \
+  `test -f $EACSL_SHARE/e_acsl_mmodel_api.h; echo $?`
+
+# Echo the name of the source file corresponding to the name of a memory model
+# or report an error of the given model does not exist.
+mmodel_sources() {
+  model=""
+  case "$1" in
+    bittree) model="bittree_model/e_acsl_bittree_mmodel.c" ;;
+    *) error "Memory model '$1' does not exist" ;;
+  esac
+  model="$EACSL_SHARE/$model"
+  if ! [ -f "$model" ]; then
+    error "Memory model '$1' exists but not available in this distribution"
+  else
+    echo "$model"
+  fi
+}
+
+# Once EACSL_SHARE is defined check the memory models provided at inputs
+for mod in $OPTION_EACSL_MMODELS; do
+  mmodel_sources $mod > /dev/null
+done
+
 # Macro that identifies E-ACSL compilation. Passed to Frama-C
 # and GCC runs but not to the original compilation
 EACSL_MACRO_ID="__E_ACSL__"
@@ -327,6 +384,7 @@ CFLAGS="$OPTION_CFLAGS
   -Wall \
   -Wno-long-long \
   -Wno-attributes \
+  -Wno-undef \
   -Wno-unused \
   -Wno-unused-function \
   -Wno-unused-result \
@@ -335,12 +393,17 @@ CFLAGS="$OPTION_CFLAGS
   -Wno-unused-variable \
   -Wno-unused-but-set-variable \
   -Wno-implicit-function-declaration \
-  -Wno-unknown-warning-option \
-  -Wno-extra-semi \
-  -Wno-tautological-compare \
-  -Wno-gnu-empty-struct \
-  -Wno-incompatible-pointer-types-discards-qualifiers \
   -Wno-empty-body"
+
+# Disable extra warning for clang
+if [ "`basename $CC`" = 'clang' ]; then
+  CFLAGS="-Wno-unknown-warning-option \
+    -Wno-extra-semi \
+    -Wno-tautological-compare \
+    -Wno-gnu-empty-struct \
+    -Wno-incompatible-pointer-types-discards-qualifiers"
+fi
+
 CPPFLAGS="$OPTION_CPPFLAGS"
 LDFLAGS="$OPTION_LDFLAGS"
 
@@ -351,10 +414,6 @@ EACSL_CPPFLAGS="
   -D$EACSL_MACRO_ID
   -D__FC_errno=(*__errno_location())"
 EACSL_LDFLAGS="-lgmp -lm"
-# Memory model sources
-EACSL_RTL="$EACSL_SHARE/e_acsl.c \
-  $EACSL_SHARE/memory_model/e_acsl_mmodel.c \
-  $EACSL_SHARE/memory_model/e_acsl_$OPTION_EACSL_MMODEL.c"
 
 # Output file names
 OUTPUT_CODE="$OPTION_OUTPUT_CODE" # E-ACSL instrumented source
@@ -396,18 +455,30 @@ if [ -n "$OPTION_COMPILE" ]; then
   else
     OUTPUT_CODE="$@"
   fi
-  # Compile and link E-ACSL-instrumented file
-  ($OPTION_ECHO;
-   $CC \
-     $CFLAGS $CPPFLAGS \
-     $EACSL_CFLAGS $EACSL_CPPFLAGS \
-     $EACSL_RTL \
-     $OPTION_DEBUG_MACRO \
-     $OPTION_DEBUG_LOG_MACRO \
-     $OPTION_BUILTINS \
-     -o "$EACSL_OUTPUT_EXEC" \
-     "$OUTPUT_CODE" \
-     $LDFLAGS $EACSL_LDFLAGS)
-  error "fail to compile/link instrumented code: $@" $?;
+  # Compile and link E-ACSL-instrumented file with all models specified
+  for mod in $OPTION_EACSL_MMODELS; do
+    # If multiple models are specified then the generated executable
+    # is appended a '-MODEL' suffix, where MODEL is the name of the memory
+    # model used
+    if ! [ "`echo $OPTION_EACSL_MMODELS | wc -w`" = 1 ]; then
+      OUTPUT_EXEC="$EACSL_OUTPUT_EXEC-$mod"
+    else
+      OUTPUT_EXEC="$EACSL_OUTPUT_EXEC"
+    fi
+    # Sources of the selected memory model
+    EACSL_RTL=`mmodel_sources "$mod"`
+    ($OPTION_ECHO;
+     $CC \
+       $CFLAGS $CPPFLAGS \
+       $EACSL_CFLAGS $EACSL_CPPFLAGS \
+       $EACSL_RTL \
+       $OPTION_DEBUG_MACRO \
+       $OPTION_DEBUG_LOG_MACRO \
+       $OPTION_BUILTINS \
+       -o "$OUTPUT_EXEC" \
+       "$OUTPUT_CODE" \
+       $LDFLAGS $EACSL_LDFLAGS)
+    error "fail to compile/link instrumented code: $@" $?;
+  done
 fi
 exit 0;
diff --git a/src/plugins/e-acsl/share/e-acsl/memory_model/e_acsl_mmodel_api.h b/src/plugins/e-acsl/share/e-acsl/bittree_model/e_acsl_adt_api.h
similarity index 80%
rename from src/plugins/e-acsl/share/e-acsl/memory_model/e_acsl_mmodel_api.h
rename to src/plugins/e-acsl/share/e-acsl/bittree_model/e_acsl_adt_api.h
index 037a382cac6259bfdba1e60fa03538bb77fc6bf7..89fbdbc4445520032b7d7b1f483f3464a532a607 100644
--- a/src/plugins/e-acsl/share/e-acsl/memory_model/e_acsl_mmodel_api.h
+++ b/src/plugins/e-acsl/share/e-acsl/bittree_model/e_acsl_adt_api.h
@@ -26,18 +26,6 @@
 #include "stdlib.h"
 #include "stdbool.h"
 
-#if E_ACSL_MACHDEP == x86_64
-#define WORDBITS 64
-#elif E_ACSL_MACHDEP == x86_32
-#define WORDBITS 32
-#elif E_ACSL_MACHDEP == ppc_32
-#define WORDBITS 32
-#elif E_ACSL_MACHDEP == x86_16
-#define WORDBITS 16
-#else
-#define WORDBITS 32
-#endif
-
 /* Memory block allocated and may be deallocated */
 struct _block {
   size_t ptr;	/* begin address */
@@ -45,39 +33,38 @@ struct _block {
 /* Keep trace of initialized sub-blocks within a memory block */
   unsigned char * init_ptr; /* dynamic array of booleans */
   size_t init_cpt;
-  _Bool is_litteral_string;
-  _Bool is_out_of_bound;
+  _Bool is_readonly;
   _Bool freeable;
 };
 
 /* print the information about a block */
-void __print_block(struct _block * ptr );
+static void __print_block(struct _block * ptr );
 
 /* erase information about initialization of a block */
-void __clean_init(struct _block * ptr );
+static void __clean_init(struct _block * ptr );
 
 /* erase all information about a block */
-void __clean_block(struct _block * ptr);
+static void __clean_block(struct _block * ptr);
 
 /* remove the block from the structure */
-void  __remove_element(struct _block *);
+static void  __remove_element(struct _block *);
 
 /* add a block in the structure */
-void  __add_element(struct _block *);
+static void  __add_element(struct _block *);
 
 /* return the block B such as : begin addr of B == ptr
    we suppose that such a block exists, but we could return NULL if not */
-struct _block * __get_exact(void *);
+static struct _block * __get_exact(void *);
 
 /* return the block B containing ptr, such as :
    begin addr of B <= ptr < (begin addr + size) of B
    or NULL if such a block does not exist */
-struct _block * __get_cont(void *);
+static struct _block * __get_cont(void *);
 
 /* erase the content of the structure */
-void __clean_struct(void);
+static void __clean_struct(void);
 
 /* print the content of the structure */
-void  __debug_struct(void);
+static void  __debug_struct(void);
 
 #endif
diff --git a/src/plugins/e-acsl/share/e-acsl/memory_model/e_acsl_mmodel.c b/src/plugins/e-acsl/share/e-acsl/bittree_model/e_acsl_adt_mmodel.h
similarity index 53%
rename from src/plugins/e-acsl/share/e-acsl/memory_model/e_acsl_mmodel.c
rename to src/plugins/e-acsl/share/e-acsl/bittree_model/e_acsl_adt_mmodel.h
index 743f715a32f2157745f40debf4c742853d73b73a..84d9125cbb00b824b33fd654cb3c1def54856ba6 100644
--- a/src/plugins/e-acsl/share/e-acsl/memory_model/e_acsl_mmodel.c
+++ b/src/plugins/e-acsl/share/e-acsl/bittree_model/e_acsl_adt_mmodel.h
@@ -20,81 +20,60 @@
 /*                                                                        */
 /**************************************************************************/
 
-#include <stdlib.h>
-#include <string.h>
-#include <stdbool.h>
+#ifndef E_ACSL_ADT_MMODEL
+#define E_ACSL_ADT_MMODEL
+
+#include "e_acsl_string.h"
+#include "e_acsl_printf.h"
+#include "e_acsl_bits.h"
+#include "e_acsl_assert.h"
+#include "e_acsl_debug.h"
+#include "e_acsl_malloc.h"
 #include "e_acsl_mmodel_api.h"
-#include "e_acsl_mmodel.h"
-#include "../e_acsl_printf.h"
+#include "e_acsl_adt_api.h"
 
-// E-ACSL warnings {{{
-#define WARNING 0   // Output a warning message to stderr
-#define ERROR   1   // Treat warnings as errors and abort execution
-#define IGNORE  2   // Ignore warnings
-
-#ifndef E_ACSL_WARNING
-#define E_ACSL_WARNING WARNING
-#endif
-
-static int warning_level = E_ACSL_WARNING;
-
-// Issue a warning to stderr or abort a program
-// based on the current warning level
-static void warning(const char* message) {
-  if (warning_level != IGNORE) {
-    eprintf("warning: %s\n", message);
-    if (warning_level == ERROR)
-      abort();
-  }
-}
-
-// Shortcut for issuing a warning and returning from a function
-#define return_warning(_cond,_msg) \
-  if(_cond) { \
-    warning(_msg); \
-    return; \
-  }
-// }}}
-
-void* __e_acsl_mmodel_memset(void* dest, int val, size_t len) {
-  unsigned char *ptr = (unsigned char*)dest;
-  while (len-- > 0)
-    *ptr++ = val;
-  return dest;
-}
-
-size_t __memory_size = 0;
-/*unsigned cpt_store_block = 0;*/
+size_t __heap_size = 0;
 
 static const int nbr_bits_to_1[256] = {
-  0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,1,2,2,3,2,3,3,4,2,3,3,4,3,4,4,5,1,2,2,3,2,3,3,4,2,3,3,4,3,4,4,5,2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6,1,2,2,3,2,3,3,4,2,3,3,4,3,4,4,5,2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6,2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6,3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7,1,2,2,3,2,3,3,4,2,3,3,4,3,4,4,5,2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6,2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6,3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7,2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6,3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7,3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7,4,5,5,6,5,6,6,7,5,6,6,7,6,7,7,8
+  0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,1,2,2,3,2,3,3,4,2,3,3,4,3,4,4,5,1,2,2,3,2,3,
+  3,4,2,3,3,4,3,4,4,5,2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6,1,2,2,3,2,3,3,4,2,3,3,4,
+  3,4,4,5,2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6,2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6,3,4,
+  4,5,4,5,5,6,4,5,5,6,5,6,6,7,1,2,2,3,2,3,3,4,2,3,3,4,3,4,4,5,2,3,3,4,3,4,4,5,
+  3,4,4,5,4,5,5,6,2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6,3,4,4,5,4,5,5,6,4,5,5,6,5,6,
+  6,7,2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6,3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7,3,4,4,5,
+  4,5,5,6,4,5,5,6,5,6,6,7,4,5,5,6,5,6,6,7,5,6,6,7,6,7,7,8
 };
 
 /*@ assigns \nothing;
-  @ ensures \result == __memory_size;
+  @ ensures \result == __heap_size;
   @*/
 size_t __get_memory_size(void) {
-  return __memory_size;
+  return __heap_size;
 }
 
-/*@ assigns \nothing;
-  @ ensures size%8 == 0 ==> \result == size/8;
-  @ ensures size%8 != 0 ==> \result == size/8+1;
-  @*/
-static size_t needed_bytes (size_t size) {
-  return (size % 8) == 0 ? (size/8) : (size/8 + 1);
-}
+/* given the size of the memory block (_size) return (or rather evaluate to)
+ * size in bytes requred to represent its partial initialization */
+#define needed_bytes(_size) \
+  ((_size % 8) == 0 ? (_size/8) : (_size/8 + 1))
 
-/* adds argc / argv to the memory model */
-void __init_args(int argc, char **argv) {
-  int i;
+/**************************/
+/* ALLOCATION             */
+/**************************/
 
-  __store_block(argv, (argc+1)*sizeof(char*));
-  __full_init(argv);
+/* erase information about initialization of a block */
+static void __clean_init (struct _block * ptr) {
+  if(ptr->init_ptr != NULL) {
+    native_free(ptr->init_ptr);
+    ptr->init_ptr = NULL;
+  }
+  ptr->init_cpt = 0;
+}
 
-  for (i = 0; i < argc; i++) {
-    __store_block(argv[i], strlen(argv[i])+1);
-    __full_init(argv[i]);
+/* erase all information about a block */
+static void __clean_block (struct _block * ptr) {
+  if(ptr) {
+    __clean_init(ptr);
+    native_free(ptr);
   }
 }
 
@@ -102,28 +81,27 @@ void __init_args(int argc, char **argv) {
  * Warning: the return type is implicitly (struct _block*). */
 void* __store_block(void* ptr, size_t size) {
   struct _block * tmp;
-  assert(ptr != NULL);
-  tmp = malloc(sizeof(struct _block));
-  assert(tmp != NULL);
+  DASSERT(ptr != NULL);
+  tmp = native_malloc(sizeof(struct _block));
+  DASSERT(tmp != NULL);
   tmp->ptr = (size_t)ptr;
   tmp->size = size;
   tmp->init_ptr = NULL;
   tmp->init_cpt = 0;
-  tmp->is_litteral_string = false;
-  tmp->is_out_of_bound = false;
+  tmp->is_readonly = false;
   tmp->freeable = false;
   __add_element(tmp);
-  /*cpt_store_block++;*/
   return tmp;
 }
 
 /* remove the block starting at ptr */
 void __delete_block(void* ptr) {
+  DASSERT(ptr != NULL);
   struct _block * tmp = __get_exact(ptr);
-  assert(tmp != NULL);
+  DASSERT(tmp != NULL);
   __clean_init(tmp);
   __remove_element(tmp);
-  free(tmp);
+  native_free(tmp);
 }
 
 /* allocate size bytes and store the returned block
@@ -131,12 +109,14 @@ void __delete_block(void* ptr) {
 void* __malloc(size_t size) {
   void * tmp;
   struct _block * new_block;
-  if(size <= 0) return NULL;
-  tmp = malloc(size);
-  if(tmp == NULL) return NULL;
+  if(size <= 0)
+    return NULL;
+  tmp = native_malloc(size);
+  if(tmp == NULL)
+    return NULL;
   new_block = __store_block(tmp, size);
-  __memory_size += size;
-  assert(new_block != NULL && (void*)new_block->ptr != NULL);
+  __heap_size += size;
+  DASSERT(new_block != NULL && (void*)new_block->ptr != NULL);
   new_block->freeable = true;
   return (void*)new_block->ptr;
 }
@@ -145,21 +125,24 @@ void* __malloc(size_t size) {
  * for further information, see free */
 void __free(void* ptr) {
   struct _block * tmp;
-  if(ptr == NULL) return;
+  if(ptr == NULL)
+    return;
   tmp = __get_exact(ptr);
-  assert(tmp != NULL);
-  free(ptr);
+  DASSERT(tmp != NULL);
+  native_free(ptr);
   __clean_init(tmp);
-  __memory_size -= tmp->size;
+  __heap_size -= tmp->size;
   __remove_element(tmp);
-  free(tmp);
+  native_free(tmp);
 }
 
 int __freeable(void* ptr) {
   struct _block * tmp;
-  if(ptr == NULL) return false;
+  if(ptr == NULL)
+    return false;
   tmp = __get_exact(ptr);
-  if(tmp == NULL) return false;
+  if(tmp == NULL)
+    return false;
   return tmp->freeable;
 }
 
@@ -168,17 +151,26 @@ int __freeable(void* ptr) {
 void* __realloc(void* ptr, size_t size) {
   struct _block * tmp;
   void * new_ptr;
-  if(ptr == NULL) return __malloc(size);
+  /* ptr is NULL - malloc */
+  if(ptr == NULL)
+    return __malloc(size);
+  /* size is zero - free */
   if(size == 0) {
     __free(ptr);
     return NULL;
   }
   tmp = __get_exact(ptr);
-  assert(tmp != NULL);
-  new_ptr = realloc((void*)tmp->ptr, size);
-  if(new_ptr == NULL) return NULL;
-  __memory_size -= tmp->size;
-  tmp->ptr = (size_t)new_ptr;
+  DASSERT(tmp != NULL);
+  new_ptr = native_realloc((void*)tmp->ptr, size);
+  if(new_ptr == NULL)
+    return NULL;
+  __heap_size -= tmp->size;
+  /* realloc changes start address -- re-enter the element into the ADT */
+  if (tmp->ptr != (size_t)new_ptr) {
+    __remove_element(tmp);
+    tmp->ptr = (size_t)new_ptr;
+    __add_element(tmp);
+  }
   /* uninitialized, do nothing */
   if(tmp->init_cpt == 0) ;
   /* already fully initialized block */
@@ -189,11 +181,14 @@ void* __realloc(void* ptr, size_t size) {
       tmp->init_cpt = size;
     /* realloc bigger larger block */
     else {
+      /* size of tmp->init_ptr in the new block  */
       int nb = needed_bytes(size);
-      tmp->init_ptr = malloc(nb);
-      __e_acsl_mmodel_memset(tmp->init_ptr, 0xFF, nb);
-      if(size%8 != 0)
-	tmp->init_ptr[size/8] <<= (8 - size%8);
+      /* number of bits that need to be set in tmp->init_ptr */
+      int nb_old = needed_bytes(tmp->size);
+      /* allocate memory to store partial initialization */
+      tmp->init_ptr = native_calloc(1, nb);
+      /* carry out initialization of the old block */
+      setbits(tmp->init_ptr, tmp->size);
     }
   }
   /* contains initialized and uninitialized parts */
@@ -201,20 +196,20 @@ void* __realloc(void* ptr, size_t size) {
     int nb = needed_bytes(size);
     int nb_old = needed_bytes(tmp->size);
     int i;
-    tmp->init_ptr = realloc(tmp->init_ptr, nb);
+    tmp->init_ptr = native_realloc(tmp->init_ptr, nb);
     for(i = nb_old; i < nb; i++)
       tmp->init_ptr[i] = 0;
     tmp->init_cpt = 0;
     for(i = 0; i < nb; i++)
       tmp->init_cpt += nbr_bits_to_1[tmp->init_ptr[i]];
     if(tmp->init_cpt == size || tmp->init_cpt == 0) {
-      free(tmp->init_ptr);
+      native_free(tmp->init_ptr);
       tmp->init_ptr = NULL;
     }
   }
   tmp->size = size;
   tmp->freeable = true;
-  __memory_size += size;
+  __heap_size += size;
   return (void*)tmp->ptr;
 }
 
@@ -223,50 +218,72 @@ void* __realloc(void* ptr, size_t size) {
  * for further information, see calloc */
 void* __calloc(size_t nbr_block, size_t size_block) {
   void * tmp;
+  size_t size = nbr_block * size_block;
   struct _block * new_block;
-  if(nbr_block * size_block <= 0) return NULL;
-  tmp = calloc(nbr_block, size_block);
-  if(tmp == NULL) return NULL;
-  new_block = __store_block(tmp, nbr_block * size_block);
-  __memory_size += nbr_block * size_block;
-  assert(new_block != NULL && (void*)new_block->ptr != NULL);
+  if(size <= 0)
+    return NULL;
+  tmp = native_calloc(nbr_block, size_block);
+  if(tmp == NULL)
+    return NULL;
+  new_block = __store_block(tmp, size);
+  __heap_size += nbr_block * size_block;
+  DASSERT(new_block != NULL && (void*)new_block->ptr != NULL);
+  /* Mark allocated block as freeable and initialized */
   new_block->freeable = true;
+  new_block->init_cpt = size;
   return (void*)new_block->ptr;
 }
 
+/**************************/
+/* INITIALIZATION         */
+/**************************/
+
 /* mark the size bytes of ptr as initialized */
 void __initialize (void * ptr, size_t size) {
   struct _block * tmp;
-  unsigned i;
-
-  return_warning(ptr == NULL, "initialize");
+  if(!ptr)
+    return;
 
-  assert(size > 0);
   tmp = __get_cont(ptr);
-
-  return_warning(tmp == NULL, "initialize");
+  if(tmp == NULL)
+    return;
 
   /* already fully initialized, do nothing */
-  if(tmp->init_cpt == tmp->size) return;
+  if(tmp->init_cpt == tmp->size)
+    return;
 
   /* fully uninitialized */
   if(tmp->init_cpt == 0) {
     int nb = needed_bytes(tmp->size);
-    tmp->init_ptr = malloc(nb);
-    __e_acsl_mmodel_memset(tmp->init_ptr, 0, nb);
+    tmp->init_ptr = native_malloc(nb);
+    memset(tmp->init_ptr, 0, nb);
   }
 
+  /* partial initialization is kept via a character array accessible via the
+   * tmp->init_ptr. This is such that a N-th bit of tmp->init_ptr tracks
+   * initialization of the N-th byte of the memory block tracked by tmp.
+   *
+   * The following sets individual bits in tmp->init_ptr that track
+   * initialization of `size' bytes starting from `ptr'. */
+  unsigned i;
   for(i = 0; i < size; i++) {
-    int byte_offset = (size_t)ptr - tmp->ptr + i;
-    int ind = byte_offset / 8;
-    unsigned char mask_bit = 1U << (7 - (byte_offset % 8));
-    if((tmp->init_ptr[ind] & mask_bit) == 0) tmp->init_cpt++;
-    tmp->init_ptr[ind] |= mask_bit;
+    /* byte-offset within the block, i.e., mark `offset' byte as initialized */
+    size_t offset = (uintptr_t)ptr - tmp->ptr + i;
+    /* byte offset within tmp->init_ptr, i.e., a byte containing the bit to
+       be toggled */
+    int byte = offset/8;
+    /* bit-offset within the above byte, i.e., bit to be toggled */
+    int bit = offset%8;
+
+    if (!checkbit(bit, tmp->init_ptr[byte])) { /* if bit is unset ... */
+      setbit(bit, tmp->init_ptr[byte]); /* ... set the bit ... */
+      tmp->init_cpt++; /* ... and increment initialized bytes count */
+    }
   }
 
   /* now fully initialized */
   if(tmp->init_cpt == tmp->size) {
-    free(tmp->init_ptr);
+    native_free(tmp->init_ptr);
     tmp->init_ptr = NULL;
   }
 }
@@ -274,47 +291,57 @@ void __initialize (void * ptr, size_t size) {
 /* mark all bytes of ptr as initialized */
 void __full_init (void * ptr) {
   struct _block * tmp;
-  return_warning(ptr == NULL, "full_init");
+  if (ptr == NULL)
+    return;
 
   tmp = __get_exact(ptr);
-  return_warning(tmp == NULL, "full_init");
+  if (tmp == NULL)
+    return;
 
   if (tmp->init_ptr != NULL) {
-    free(tmp->init_ptr);
+    native_free(tmp->init_ptr);
     tmp->init_ptr = NULL;
   }
 
   tmp->init_cpt = tmp->size;
 }
 
-/* mark a block as litteral string */
-void __literal_string (void * ptr) {
+/* mark a block as read-only */
+void __readonly (void * ptr) {
   struct _block * tmp;
-  return_warning(ptr == NULL, "literal_string");
+  if (ptr == NULL)
+    return;
   tmp = __get_exact(ptr);
-  return_warning(tmp == NULL, "literal_string");
-  tmp->is_litteral_string = true;
+  if (tmp == NULL)
+    return;
+  tmp->is_readonly = true;
 }
 
+/**************************/
+/* PREDICATES             */
+/**************************/
+
 /* return whether the size bytes of ptr are initialized */
 int __initialized (void * ptr, size_t size) {
   unsigned i;
-  assert(size > 0);
   struct _block * tmp = __get_cont(ptr);
   if(tmp == NULL)
     return false;
 
   /* fully uninitialized */
-  if(tmp->init_cpt == 0) return false;
+  if(tmp->init_cpt == 0)
+    return false;
   /* fully initialized */
-  if(tmp->init_cpt == tmp->size) return true;
+  if(tmp->init_cpt == tmp->size)
+    return true;
 
+  /* see implementation of function __initialize for details */
   for(i = 0; i < size; i++) {
-    /* if one byte is uninitialized */
-    int byte_offset = (size_t)ptr - tmp->ptr + i;
-    int ind = byte_offset / 8;
-    unsigned char mask_bit = 1U << (7 - (byte_offset % 8));
-    if((tmp->init_ptr[ind] & mask_bit) == 0) return false;
+    size_t offset = (uintptr_t)ptr - tmp->ptr + i;
+    int byte = offset/8;
+    int bit = offset%8;
+    if (!checkbit(bit, tmp->init_ptr[byte]))
+      return false;
   }
   return true;
 }
@@ -322,7 +349,8 @@ int __initialized (void * ptr, size_t size) {
 /* return the length (in bytes) of the block containing ptr */
 size_t __block_length(void* ptr) {
   struct _block * tmp = __get_cont(ptr);
-  assert(tmp != NULL);
+  /* Hard failure when un-allocated memory is used  */
+  vassert(tmp != NULL, "\\block_length of unallocated memory", NULL);
   return tmp->size;
 }
 
@@ -331,11 +359,10 @@ int __valid(void* ptr, size_t size) {
   struct _block * tmp;
   if(ptr == NULL)
     return false;
-  //assert(size > 0);
   tmp = __get_cont(ptr);
   return (tmp == NULL) ?
     false : ( tmp->size - ( (size_t)ptr - tmp->ptr ) >= size
-	      && !tmp->is_litteral_string && !tmp->is_out_of_bound);
+	      && !tmp->is_readonly);
 }
 
 /* return whether the size bytes of ptr are readable */
@@ -343,85 +370,83 @@ int __valid_read(void* ptr, size_t size) {
   struct _block * tmp;
   if(ptr == NULL)
     return false;
-  //assert(size > 0);
   tmp = __get_cont(ptr);
   return (tmp == NULL) ?
-    false : ( tmp->size - ( (size_t)ptr - tmp->ptr ) >= size
-	      && !tmp->is_out_of_bound);
+    false : (tmp->size - ((size_t)ptr - tmp->ptr) >= size);
 }
 
 /* return the base address of the block containing ptr */
 void* __base_addr(void* ptr) {
   struct _block * tmp = __get_cont(ptr);
-  assert(tmp != NULL);
+  vassert(tmp != NULL, "\\base_addr of unallocated memory", NULL);
   return (void*)tmp->ptr;
 }
 
 /* return the offset of ptr within its block */
 int __offset(void* ptr) {
   struct _block * tmp = __get_cont(ptr);
-  assert(tmp != NULL);
+  vassert(tmp != NULL, "\\offset of unallocated memory", NULL);
   return ((size_t)ptr - tmp->ptr);
 }
 
-void __out_of_bound(void* ptr, _Bool flag) {
-  struct _block * tmp = __get_cont(ptr);
-  assert(tmp != NULL);
-  tmp->is_out_of_bound = flag;
-}
-
-/*******************/
-/* PRINT           */
-/*******************/
+/**************************/
+/* PROGRAM INITIALIZATION */
+/**************************/
 
-/* print the information about a block */
-void __print_block (struct _block * ptr) {
-  if (ptr != NULL) {
-    printf("%p; %zu Bytes; %slitteral; [init] : %li ",
-      (char*)ptr->ptr, ptr->size,
-      ptr->is_litteral_string ? "" : "not ", ptr->init_cpt);
-    if(ptr->init_ptr != NULL) {
-      unsigned i;
-      for(i = 0; i < ptr->size; i++) {
-        int ind = i / 8;
-        int one_bit = (unsigned)1 << (8 - (i % 8) - 1);
-        printf("%i", (ptr->init_ptr[ind] & one_bit) != 0);
-      }
-    }
-    printf("\n");
-  }
+/* erase the content of the abstract structure */
+void __e_acsl_memory_clean() {
+  __clean_struct();
 }
 
-/********************/
-/* CLEAN            */
-/********************/
+/* adds argv to the memory model */
+static void __init_argv(int argc, char **argv) {
+  int i;
 
-/* erase information about initialization of a block */
-void __clean_init (struct _block * ptr) {
-  if(ptr->init_ptr != NULL) {
-    free(ptr->init_ptr);
-    ptr->init_ptr = NULL;
-  }
-  ptr->init_cpt = 0;
-}
+  __store_block(argv, (argc+1)*sizeof(char*));
+  __full_init(argv);
 
-/* erase all information about a block */
-void __clean_block (struct _block * ptr) {
-  if(ptr == NULL) return;
-  __clean_init(ptr);
-  free(ptr);
+  for (i = 0; i < argc; i++) {
+    __store_block(argv[i], strlen(argv[i])+1);
+    __full_init(argv[i]);
+  }
 }
 
-/* erase the content of the abstract structure */
-void __e_acsl_memory_clean() {
-  __clean_struct();
+/* initialize contents of the abstract structure and record arguments
+ *  'argc_ref` address the variable holding the argc parameter
+ *  'argv_ref` address the variable holding the argv parameter
+ *  'ptr_size` the size of the pointer computed during instrumentation. */
+void __e_acsl_memory_init(int *argc_ref, char ***argv_ref, size_t ptr_size) {
+  arch_assert(ptr_size);
+  if (argc_ref)
+    __init_argv(*argc_ref, *argv_ref);
 }
 
 /**********************/
 /* DEBUG              */
 /**********************/
+#ifdef E_ACSL_DEBUG
+
+/* print the information about a block */
+void __e_acsl_print_block (struct _block * ptr) {
+  if (ptr != NULL) {
+    DLOG("%a; %lu Bytes; %slitteral; [init] : %d ",
+      (char*)ptr->ptr, ptr->size,
+      ptr->is_readonly ? "" : "not ", ptr->init_cpt);
+    if(ptr->init_ptr != NULL) {
+      unsigned i;
+      for(i = 0; i < ptr->size/8; i++)
+        DLOG("%b ", ptr->init_ptr[i]);
+    }
+    DLOG("\n");
+  }
+}
+
+static void debug_struct();
 
 /* print the content of the abstract structure */
-void __debug() {
-  __debug_struct();
+void __e_acsl_debug() {
+  debug_struct();
 }
+
+#endif
+#endif
\ No newline at end of file
diff --git a/src/plugins/e-acsl/share/e-acsl/memory_model/e_acsl_bittree.c b/src/plugins/e-acsl/share/e-acsl/bittree_model/e_acsl_bittree.h
similarity index 88%
rename from src/plugins/e-acsl/share/e-acsl/memory_model/e_acsl_bittree.c
rename to src/plugins/e-acsl/share/e-acsl/bittree_model/e_acsl_bittree.h
index be04bebe712cf9a5f212a4591226fe4f57b17497..680006f7fb95b0118c607f57a15ab24150b2fa4a 100644
--- a/src/plugins/e-acsl/share/e-acsl/memory_model/e_acsl_bittree.c
+++ b/src/plugins/e-acsl/share/e-acsl/bittree_model/e_acsl_bittree.h
@@ -20,45 +20,50 @@
 /*                                                                        */
 /**************************************************************************/
 
-#include <errno.h>
-#include <unistd.h>
-#include "stdlib.h"
-#include "stdbool.h"
-#include "math.h"
-#include "e_acsl_mmodel_api.h"
-#include "e_acsl_bittree.h"
-#include "e_acsl_mmodel.h"
-#include "../e_acsl_printf.h"
+#ifndef E_ACSL_BITTREE
+#define E_ACSL_BITTREE
+
+#include <stdbool.h>
+
+#include "e_acsl_malloc.h"
+#include "e_acsl_syscall.h"
+#include "e_acsl_printf.h"
+#include "e_acsl_assert.h"
+#include "e_acsl_adt_api.h"
+
+#define WORDBITS __WORDSIZE
+
+static size_t mask(size_t, size_t);
 
 #if WORDBITS == 16
 
-const size_t Tmasks[] = {
+static const size_t Tmasks[] = {
 0x0,0x8000,0xc000,0xe000,0xf000,0xf800,0xfc00,0xfe00,0xff00,0xff80,0xffc0,
 0xffe0,0xfff0,0xfff8,0xfffc,0xfffe,0xffff};
 
-const int Teq[] = {0,-1,3,-3,6,-5,7,-7,12,-9,11,-11,14,-13,15,16,-16};
-const int Tneq[] = {0,0,1,-2,2,-4,5,-6,4,-8,9,-10,10,-12,13,-14,-15};
+static const int Teq[] = {0,-1,3,-3,6,-5,7,-7,12,-9,11,-11,14,-13,15,16,-16};
+static const int Tneq[] = {0,0,1,-2,2,-4,5,-6,4,-8,9,-10,10,-12,13,-14,-15};
 
 #elif WORDBITS == 32
 
-const size_t Tmasks[] = {
+static const size_t Tmasks[] = {
 0x0,0x80000000,0xc0000000,0xe0000000,0xf0000000,0xf8000000,0xfc000000,
 0xfe000000,0xff000000,0xff800000,0xffc00000,0xffe00000,0xfff00000,0xfff80000,
 0xfffc0000,0xfffe0000,0xffff0000,0xffff8000,0xffffc000,0xffffe000,0xfffff000,
 0xfffff800,0xfffffc00,0xfffffe00,0xffffff00,0xffffff80,0xffffffc0,0xffffffe0,
 0xfffffff0,0xfffffff8,0xfffffffc,0xfffffffe,0xffffffff};
 
-const int Teq[] =
+static const int Teq[] =
   { 0,-1,3,-3,6,-5,7,-7,12,-9,11,-11,14,-13,15,-15,24,-17,19,-19,22,
     -21,23,-23,28,-25,27,-27,30,-29,31,32,-32 };
 
-const int Tneq[] =
+static const int Tneq[] =
   { 0,0,1,-2,2,-4,5,-6,4,-8,9,-10,10,-12,13,-14,8,-16,17,-18,18,-20,21,-22,20,
     -24,25,-26,26,-28,29,-30,-31 };
 
 #else /* WORDBITS == 64 */
 
-const size_t Tmasks[] = {
+static const size_t Tmasks[] = {
 0x0,0x8000000000000000,0xc000000000000000,0xe000000000000000,0xf000000000000000,
 0xf800000000000000,0xfc00000000000000,0xfe00000000000000,0xff00000000000000,
 0xff80000000000000,0xffc0000000000000,0xffe0000000000000,0xfff0000000000000,
@@ -76,20 +81,19 @@ const size_t Tmasks[] = {
 0xffffffffffffff80,0xffffffffffffffc0,0xffffffffffffffe0,0xfffffffffffffff0,
 0xfffffffffffffff8,0xfffffffffffffffc,0xfffffffffffffffe,0xffffffffffffffff};
 
-
-const int Teq[] =
+static const int Teq[] =
   { 0,-1,3,-3,6,-5,7,-7,12,-9,11,-11,14,-13,15,-15,24,-17,19,-19,22,-21,23,-23,
     28,-25,27,-27,30,-29,31,-31,48,-33,35,-35,38,-37,39,-39,44,-41,43,-43,46,
     -45,47,-47,56,-49,51,-51,54,-53,55,-55,60,-57,59,-59,62,-61,63,64,-64 };
 
-const int Tneq[] =
+static const int Tneq[] =
   { 0,0,1,-2,2,-4,5,-6,4,-8,9,-10,10,-12,13,-14,8,-16,17,-18,18,-20,21,-22,20,
     -24,25,-26,26,-28,29,-30,16,-32,33,-34,34,-36,37,-38,36,-40,41,-42,42,-44,
     45,-46,40,-48,49,-50,50,-52,53,-54,52,-56,57,-58,58,-60,61,-62,-63 };
 
 #endif
 
-struct bittree {
+static struct bittree {
   _Bool is_leaf;
   size_t addr,  mask;
   struct bittree * left, * right, * father;
@@ -107,7 +111,7 @@ struct bittree {
   @ ensures (a & \result) == (b & \result);
   @ ensures \exists int i; 0 <= i <= WORDBITS && \result == Tmasks[i];
   @*/
-size_t mask(size_t a, size_t b) {
+static size_t mask(size_t a, size_t b) {
   size_t nxor = ~(a ^ b), ret;
   int i = WORDBITS/2; /* dichotomic search, starting in the middle */
   /*cpt_mask++;*/
@@ -144,7 +148,7 @@ size_t mask(size_t a, size_t b) {
   @ ensures \valid(\result);
   @ ensures \result->leaf == ptr;
   @*/
-struct bittree * __get_leaf_from_block (struct _block * ptr) {
+static struct bittree * __get_leaf_from_block (struct _block * ptr) {
   struct bittree * curr = __root;
   assert(__root != NULL);
   assert(ptr != NULL);
@@ -176,7 +180,7 @@ struct bittree * __get_leaf_from_block (struct _block * ptr) {
 /* the block we are looking for has to be in the tree */
 /*@ requires \valid(ptr);
   @*/
-void __remove_element (struct _block * ptr) {
+static void __remove_element (struct _block * ptr) {
   struct bittree * leaf_to_delete = __get_leaf_from_block (ptr);
   assert(leaf_to_delete->leaf == ptr);
 
@@ -199,7 +203,7 @@ void __remove_element (struct _block * ptr) {
       brother->left->father = father;
       brother->right->father = father;
     }
-    free(brother);
+    native_free(brother);
     /* necessary ? -- begin */
     if(father->father != NULL) {
       father->father->mask = mask(father->father->left->addr
@@ -209,7 +213,7 @@ void __remove_element (struct _block * ptr) {
     }
     /* necessary ? -- end */
   }
-  free(leaf_to_delete);
+  native_free(leaf_to_delete);
 }
 
 
@@ -220,7 +224,7 @@ void __remove_element (struct _block * ptr) {
   @ assigns \nothing;
   @ ensures \valid(\result);
   @*/
-struct bittree * __most_similar_node (struct _block * ptr) {
+static struct bittree * __most_similar_node (struct _block * ptr) {
   struct bittree * curr = __root;
   size_t left_prefix, right_prefix;
   assert(ptr != NULL);
@@ -241,16 +245,14 @@ struct bittree * __most_similar_node (struct _block * ptr) {
   }
 }
 
-
-
 /* add a block in the structure */
 /*@ requires \valid(ptr);
   @*/
-void __add_element (struct _block * ptr) {
+static void __add_element (struct _block * ptr) {
   struct bittree * new_leaf;
   assert(ptr != NULL);
 
-  new_leaf = malloc(sizeof(struct bittree));
+  new_leaf = native_malloc(sizeof(struct bittree));
   assert(new_leaf != NULL);
   new_leaf->is_leaf = true;
   new_leaf->addr = ptr->ptr;
@@ -266,7 +268,7 @@ void __add_element (struct _block * ptr) {
     struct bittree * brother = __most_similar_node (ptr), * father, * aux;
 
     assert(brother != NULL);
-    father = malloc(sizeof(struct bittree));
+    father = native_malloc(sizeof(struct bittree));
     assert(father != NULL);
     father->is_leaf = false;
     father->addr = brother->addr & new_leaf->addr;
@@ -309,14 +311,13 @@ void __add_element (struct _block * ptr) {
   }
 }
 
-
 /* return the block B such as: begin addr of B == ptr if such a block exists,
    return NULL otherwise */
 /*@ assigns \nothing;
   @ ensures \valid(\result);
   @ ensures \result == \null || \result->ptr == (size_t)ptr;
   @*/
-struct _block * __get_exact (void * ptr) {
+static struct _block * __get_exact (void * ptr) {
   struct bittree * tmp = __root;
   assert(__root != NULL);
   assert(ptr != NULL);
@@ -342,11 +343,10 @@ struct _block * __get_exact (void * ptr) {
   return tmp->leaf;
 }
 
-
 /* return the block B containing ptr, such as :
    begin addr of B <= ptr < (begin addr + size) of B
    or NULL if such a block does not exist */
-struct _block * __get_cont (void * ptr) {
+static struct _block * __get_cont (void * ptr) {
   struct bittree * tmp = __root;
   if(__root == NULL || ptr == NULL) return NULL;
 
@@ -409,7 +409,7 @@ struct _block * __get_cont (void * ptr) {
 
 /* called from __clean_struct */
 /* recursively erase the content of the structure */
-void __clean_rec (struct bittree * ptr) {
+static void __clean_rec (struct bittree * ptr) {
   if(ptr == NULL) return;
   else if(ptr->is_leaf) {
     __clean_block(ptr->leaf);
@@ -420,44 +420,46 @@ void __clean_rec (struct bittree * ptr) {
     __clean_rec(ptr->right);
     ptr->left = ptr->right = NULL;
   }
-  free(ptr);
+  native_free(ptr);
 }
 
 /* erase the content of the structure */
-void __clean_struct () {
+static void __clean_struct () {
   __clean_rec(__root);
   __root = NULL;
-  /*printf("%i &\n", cpt_mask);*/
 }
 
 /*********************/
 /* DEBUG             */
 /*********************/
 
+#ifdef E_ACSL_DEBUG
 /* called from __debug_struct */
 /* recursively print the content of the structure */
 /*@ assigns \nothing;
   @*/
-void __debug_rec (struct bittree * ptr, int depth) {
+static void debug_rec (struct bittree * ptr, int depth) {
   int i;
   if(ptr == NULL)
     return;
   for(i = 0; i < depth; i++)
-    printf("  ");
+    DLOG("  ");
   if(ptr->is_leaf)
-    __print_block(ptr->leaf);
+    __e_acsl_print_block(ptr->leaf);
   else {
-    printf("%p -- %p\n", (void*)ptr->mask, (void*)ptr->addr);
-    __debug_rec(ptr->left, depth+1);
-    __debug_rec(ptr->right, depth+1);
+    DLOG("%p -- %p\n", (void*)ptr->mask, (void*)ptr->addr);
+    debug_rec(ptr->left, depth+1);
+    debug_rec(ptr->right, depth+1);
   }
 }
 
 /* print the content of the structure */
 /*@ assigns \nothing;
   @*/
-void __debug_struct () {
-  printf("------------DEBUG\n");
-  __debug_rec(__root, 0);
-  printf("-----------------\n");
+static void debug_struct () {
+  DLOG("------------DEBUG\n");
+  debug_rec(__root, 0);
+  DLOG("-----------------\n");
 }
+#endif
+#endif
diff --git a/src/plugins/e-acsl/share/e-acsl/memory_model/e_acsl_bittree.h b/src/plugins/e-acsl/share/e-acsl/bittree_model/e_acsl_bittree_mmodel.c
similarity index 88%
rename from src/plugins/e-acsl/share/e-acsl/memory_model/e_acsl_bittree.h
rename to src/plugins/e-acsl/share/e-acsl/bittree_model/e_acsl_bittree_mmodel.c
index 1b5f2c7f61f58cea2e7cce03816f557c602f8082..9494d8c5efd225acf06c3d2bd5cc299804b5ffc5 100644
--- a/src/plugins/e-acsl/share/e-acsl/memory_model/e_acsl_bittree.h
+++ b/src/plugins/e-acsl/share/e-acsl/bittree_model/e_acsl_bittree_mmodel.c
@@ -3,7 +3,7 @@
 /*  This file is part of the Frama-C's E-ACSL plug-in.                    */
 /*                                                                        */
 /*  Copyright (C) 2012-2016                                               */
-/*    CEA (Commissariat à l'énergie atomique et aux énergies              */
+/*    CEA (Commissariat à l'énergie atomique et aux énergies              */
 /*         alternatives)                                                  */
 /*                                                                        */
 /*  you can redistribute it and/or modify it under the terms of the GNU   */
@@ -20,11 +20,8 @@
 /*                                                                        */
 /**************************************************************************/
 
-#ifndef E_ACSL_BITTREE
-#define E_ACSL_BITTREE
-
-#include "stdlib.h"
-
-size_t mask(size_t, size_t);
-
+#ifndef E_ACSL_BITTREE_MMODEL
+#define E_ACSL_BITTREE_MMODEL
+#  include "e_acsl_adt_mmodel.h"
+#  include "e_acsl_bittree.h"
 #endif
diff --git a/src/plugins/e-acsl/share/e-acsl/e_acsl.c b/src/plugins/e-acsl/share/e-acsl/e_acsl.c
deleted file mode 100644
index c23cf344244f0e7f7931b973855070bb9523fd87..0000000000000000000000000000000000000000
--- a/src/plugins/e-acsl/share/e-acsl/e_acsl.c
+++ /dev/null
@@ -1,39 +0,0 @@
-/**************************************************************************/
-/*                                                                        */
-/*  This file is part of the Frama-C's E-ACSL plug-in.                    */
-/*                                                                        */
-/*  Copyright (C) 2012-2016                                               */
-/*    CEA (Commissariat à l'énergie atomique et aux énergies              */
-/*         alternatives)                                                  */
-/*                                                                        */
-/*  you can redistribute it and/or modify it under the terms of the GNU   */
-/*  Lesser General Public License as published by the Free Software       */
-/*  Foundation, version 2.1.                                              */
-/*                                                                        */
-/*  It is distributed in the hope that it will be useful,                 */
-/*  but WITHOUT ANY WARRANTY; without even the implied warranty of        */
-/*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         */
-/*  GNU Lesser General Public License for more details.                   */
-/*                                                                        */
-/*  See the GNU Lesser General Public License version 2.1                 */
-/*  for more details (enclosed in the file license/LGPLv2.1).             */
-/*                                                                        */
-/**************************************************************************/
-
-#include "e_acsl.h"
-#include <stdlib.h>
-#include <stdio.h>
-
-void e_acsl_assert(int predicate, 
-		   char *kind, 
-		   char *fct, 
-		   char *pred_txt, 
-		   int line) 
-{
-  if (! predicate) {
-    printf("%s failed at line %d in function %s.\n\
-The failing predicate is:\n%s.\n",
-	   kind, line, fct, pred_txt);
-    exit(1);
-  }
-}
diff --git a/src/plugins/e-acsl/share/e-acsl/e_acsl.h b/src/plugins/e-acsl/share/e-acsl/e_acsl.h
index 0c9b568839a0142a8241ce1062d263bb94e8de53..cb580dc8e2867d46f30ad456ae30383b9e1a2738 100644
--- a/src/plugins/e-acsl/share/e-acsl/e_acsl.h
+++ b/src/plugins/e-acsl/share/e-acsl/e_acsl.h
@@ -31,12 +31,12 @@
 /* Dedicated E-ACSL function */
 /*****************************/
 
-/*@ requires predicate != 0; 
+/*@ requires predicate != 0;
   @ assigns \nothing; */
-void e_acsl_assert(int predicate, 
-		   char *kind, 
-		   char *fct, 
-		   char *pred_txt, 
+void __e_acsl_assert(int predicate,
+		   char *kind,
+		   char *fct,
+		   char *pred_txt,
 		   int line)
   __attribute__((FC_BUILTIN));
 
diff --git a/src/plugins/e-acsl/share/e-acsl/e_acsl_assert.h b/src/plugins/e-acsl/share/e-acsl/e_acsl_assert.h
new file mode 100644
index 0000000000000000000000000000000000000000..9e0f59c4f9105916cd257dba9cd08d06e7214f69
--- /dev/null
+++ b/src/plugins/e-acsl/share/e-acsl/e_acsl_assert.h
@@ -0,0 +1,100 @@
+/**************************************************************************/
+/*                                                                        */
+/*  This file is part of the Frama-C's E-ACSL plug-in.                    */
+/*                                                                        */
+/*  Copyright (C) 2012-2015                                               */
+/*    CEA (Commissariat à l'énergie atomique et aux énergies              */
+/*         alternatives)                                                  */
+/*                                                                        */
+/*  you can redistribute it and/or modify it under the terms of the GNU   */
+/*  Lesser General Public License as published by the Free Software       */
+/*  Foundation, version 2.1.                                              */
+/*                                                                        */
+/*  It is distributed in the hope that it will be useful,                 */
+/*  but WITHOUT ANY WARRANTY; without even the implied warranty of        */
+/*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         */
+/*  GNU Lesser General Public License for more details.                   */
+/*                                                                        */
+/*  See the GNU Lesser General Public License version 2.1                 */
+/*  for more details (enclosed in the file license/LGPLv2.1).             */
+/*                                                                        */
+/**************************************************************************/
+
+#ifndef E_ACSL_ASSERT
+#define E_ACSL_ASSERT
+
+#include "e_acsl_string.h"
+#include "e_acsl_printf.h"
+
+/* Drop-in replacement for abort function */
+#define abort() exec_abort(__LINE__, __FILE__)
+
+/* Output a message to error stream using printf-like format string and abort
+ * the execution. This is a wrapper for eprintf combined with abort */
+static void vabort(char *fmt, ...);
+
+/* Drop-in replacement for system-wide assert macro */
+#define assert(expr) \
+  ((expr) ? (void)(0) : vabort("%s at %s:%d\n", \
+    #expr, __FILE__,__LINE__))
+
+/* Assert with printf-like error message support */
+#define vassert(expr, fmt, ...) \
+    vassert_fail(expr, __LINE__, __FILE__, fmt, __VA_ARGS__)
+
+static void exec_abort(int line, const char *file) {
+  eprintf("Execution aborted (%s:%d)\n", file, line);
+  exit(1);
+}
+
+static void vassert_fail(int expr, int line, char *file, char *fmt,  ...) {
+  if (!expr) {
+    char *afmt = "%s at %s:%d\n";
+    char buf [strlen(fmt) + strlen(afmt) + PATH_MAX +  11];
+    sprintf(buf, afmt, fmt, file, line);
+    fmt = buf;
+
+    va_list va;
+    va_start(va,fmt);
+    _format(NULL,_charc_stderr,fmt,va);
+    va_end(va);
+    abort();
+  }
+}
+
+/* Print a message to stderr and abort the execution */
+static void vabort(char *fmt, ...) {
+  va_list va;
+  va_start(va,fmt);
+  _format(NULL,_charc_stderr,fmt,va);
+  va_end(va);
+  abort();
+}
+
+/* Default implementation of E-ACSL runtime assertions */
+static void runtime_assert(int predicate, char *kind,
+  char *fct, char *pred_txt, int line) {
+  if (!predicate) {
+    eprintf("%s failed at line %d in function %s.\n"
+      "The failing predicate is:\n%s.\n", kind, line, fct, pred_txt);
+    exit(1);
+  }
+}
+
+/* Alias for runtime assertions. Since `__e_acsl_assert` is added as a weak
+ * alias user-defined implementation of the `__e_acsl_assert` function will be
+ * preferred at link time. */
+void __e_acsl_assert(int pred, char *kind, char *fct, char *pred_txt, int line)
+  __attribute__ ((weak, alias ("runtime_assert")));
+
+/* Instances of assertions shared accross different memory models */
+
+/* Abort the execution if the size of the pointer computed during
+ * instrumentation (_ptr_sz) does not match the size of the pointer used
+ * by a compiler (void*) */
+#define arch_assert(_ptr_sz) \
+  vassert(_ptr_sz == sizeof(void*), \
+    "Mismatch of instrumentation- and compile-time pointer sizes: " \
+    "%lu vs %lu\n", _ptr_sz, sizeof(void*))
+
+#endif
diff --git a/src/plugins/e-acsl/share/e-acsl/e_acsl_bits.h b/src/plugins/e-acsl/share/e-acsl/e_acsl_bits.h
new file mode 100644
index 0000000000000000000000000000000000000000..83baf0203e8ad739d0ffa94738214be88e13dab7
--- /dev/null
+++ b/src/plugins/e-acsl/share/e-acsl/e_acsl_bits.h
@@ -0,0 +1,101 @@
+/**************************************************************************/
+/*                                                                        */
+/*  This file is part of the Frama-C's E-ACSL plug-in.                    */
+/*                                                                        */
+/*  Copyright (C) 2012-2015                                               */
+/*    CEA (Commissariat à l'énergie atomique et aux énergies              */
+/*         alternatives)                                                  */
+/*                                                                        */
+/*  you can redistribute it and/or modify it under the terms of the GNU   */
+/*  Lesser General Public License as published by the Free Software       */
+/*  Foundation, version 2.1.                                              */
+/*                                                                        */
+/*  It is distributed in the hope that it will be useful,                 */
+/*  but WITHOUT ANY WARRANTY; without even the implied warranty of        */
+/*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         */
+/*  GNU Lesser General Public License for more details.                   */
+/*                                                                        */
+/*  See the GNU Lesser General Public License version 2.1                 */
+/*  for more details (enclosed in the file license/LGPLv2.1).             */
+/*                                                                        */
+/**************************************************************************/
+
+/* Bit-level manipulations and endianness checks.
+ * Should be included after e_acsl_printf.h and e_acsl_string.h headers. */
+
+#ifndef E_ACSL_BITS
+#define E_ACSL_BITS
+
+#include <stdint.h>
+
+/* FIXME: Present implementation is built for little-endian byte order.  That
+ * is, the implementation assumes that least significant bytes are stored at
+ * the highest memory addresses. In future support for big-endian/PDP byte
+ * orders should also be provided. */
+
+/* Check if we have little-endian and abort the execution otherwise. */
+#if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__
+#  error "Big-endian byte order is unsupported"
+#elif __BYTE_ORDER__ == __ORDER_PDP_ENDIAN__
+#  error "PDP-endian byte order is unsupported"
+#elif __BYTE_ORDER__ != __ORDER_LITTLE_ENDIAN__
+#  error "Unknown byte order"
+#endif
+
+/* Bit-level manipulations {{{ */
+
+/* 64-bit type with all bits set to zeroes */
+const uint64_t ZERO = 0;
+
+/* 64-bit type with all bits set to ones */
+const uint64_t ONE  = ~0;
+
+/* Set a given bit in a number to '1'.
+ * Example: bitset(7, x) changes 7th lowest bit of x to 1 */
+#define setbit(_bit,_number) (_number |= 1 << _bit)
+
+/* Same as bitset but the bit is set of 0 */
+#define clearbit(_bit, _number) (_number &= ~(1 << _bit))
+
+/* Evaluates to a true value if a given bit in a number is set to 1. */
+#define checkbit(_bit, _number) ((_number >> _bit) & 1)
+
+/* Toggle a given bit. */
+#define togglebit(_bit, _number) (_number ^= 1 << _bit)
+
+/* Set a given bit to a specified value (e.g., 0 or 1). */
+#define changebit(_bit, _val, _number) \
+  (_number ^= (-_val ^ _number) & (1 << _bit))
+
+/* Set up to 64-bit in given number (from the left)
+ * Example: setbits64(x, 7) sets first 7 bits in x to ones */
+#define setbits64(_number, _bits)   (_number |= ~(ONE << _bits))
+
+/* Same as setbits64 but clears bits (sets to zeroes) */
+#define clearbits64(_number, _bits) (_number &= ONE << _bits)
+
+/* Assume _number is a 64-bit number and sets _bits from the right to ones
+ * Example: let x is a 64-bit zero, then setbits64(x, 7) will yield:
+ *   00000000 00000000 00000000 00000000 00000000 00000000 00000000 01111111 */
+#define setbits64_right(_number, _bits)   (_number |= ~(ONE >> _bits))
+
+/* Same as setbits64_right but clears bits (sets to zeroes) */
+#define clearbits64_right(_number, _bits) (_number &= ONE >> _bits)
+
+void setbits(void *ptr, size_t size) {
+  size_t i;
+  int64_t *lp = (int64_t*)ptr;
+  for (i = 0; i < size/64; i++)
+    *(lp+i) |= ONE;
+  setbits64(*(lp+i), size%64);
+}
+
+void clearbits(void *ptr, size_t size) {
+  size_t i;
+  int64_t *lp = (int64_t*)ptr;
+  for (i = 0; i < size/64; i++)
+    *(lp+i) &= ZERO;
+  clearbits64(*(lp+i), size%64);
+}
+/* }}} */
+#endif
\ No newline at end of file
diff --git a/src/plugins/e-acsl/share/e-acsl/e_acsl_debug.h b/src/plugins/e-acsl/share/e-acsl/e_acsl_debug.h
new file mode 100644
index 0000000000000000000000000000000000000000..cce4df0709fd64fa3967871431acf8709b3aa31a
--- /dev/null
+++ b/src/plugins/e-acsl/share/e-acsl/e_acsl_debug.h
@@ -0,0 +1,99 @@
+/**************************************************************************/
+/*                                                                        */
+/*  This file is part of the Frama-C's E-ACSL plug-in.                    */
+/*                                                                        */
+/*  Copyright (C) 2012-2015                                               */
+/*    CEA (Commissariat à l'énergie atomique et aux énergies              */
+/*         alternatives)                                                  */
+/*                                                                        */
+/*  you can redistribute it and/or modify it under the terms of the GNU   */
+/*  Lesser General Public License as published by the Free Software       */
+/*  Foundation, version 2.1.                                              */
+/*                                                                        */
+/*  It is distributed in the hope that it will be useful,                 */
+/*  but WITHOUT ANY WARRANTY; without even the implied warranty of        */
+/*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         */
+/*  GNU Lesser General Public License for more details.                   */
+/*                                                                        */
+/*  See the GNU Lesser General Public License version 2.1                 */
+/*  for more details (enclosed in the file license/LGPLv2.1).             */
+/*                                                                        */
+/**************************************************************************/
+
+/* Stringification macros {{{ */
+#ifndef E_ACSL_STRINGIFICATION
+#define E_ACSL_STRINGIFICATION
+#  define STRINGIFY(x) #x
+#  define TOSTRING(x) STRINGIFY(x)
+#  define __AT__ __FILE__ ":" TOSTRING(__LINE__)
+#endif
+/* }}} */
+
+/** Debugging support {{{
+ * Enabled in the presence of the E_ACSL_DEBUG macro */
+#ifdef E_ACSL_DEBUG
+
+/* Default location of the E_ACSL log file */
+#ifndef E_ACSL_DEBUG_LOG
+#  define E_ACSL_DEBUG_LOG /tmp/e-acsl.log
+#endif
+
+/* Name of the debug log file */
+static const char *dlog_name = TOSTRING(E_ACSL_DEBUG_LOG);
+
+/* File descriptior associated with the debug log file */
+static int dlog_fd = -1;
+
+/* Output a message to a log file */
+#define DLOG(...) dprintf(dlog_fd, __VA_ARGS__)
+
+/* Debug-time assertion based on assert (see e_acsl.print.h) */
+#define DASSERT(_e) assert(_e)
+
+/* Debug-time assertion based on vassert (see e_acsl.print.h) */
+#define DVASSERT(_expr, _fmt, ...) vassert(_expr, _fmt, __VA_ARGS__)
+
+/* Initialization of the debug report file:
+ *  - open file descriptor
+ *  - add program arguments to the log */
+static void initialize_report_file(int *argc, char ***argv) {
+  // Redirect the log to stderr is just set to be defined or set to '-'
+  if (!strcmp(dlog_name, "-") || !strcmp(dlog_name, "1")) {
+    dlog_fd = 2;
+  } else {
+    dlog_fd = open(dlog_name, O_WRONLY | O_CREAT | O_TRUNC  |O_NONBLOCK
+      | O_NOCTTY, S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH);
+  }
+
+  if (dlog_fd == -1)
+    vabort("Cannot open file descriptor for %s\n", dlog_name);
+  else {
+    DLOG("<<< E-ACSL instrumented run >>>\n");
+    DLOG("<<< Program arguments: ");
+    if (argc && argv) {
+      int i;
+      for (i = 0; i < *argc; i++)
+        DLOG("%s ", (*argv)[i]);
+      DLOG(">>>\n");
+    } else {
+      DLOG("unknown >>>\n");
+    }
+  }
+}
+
+static int debug_stop_number = 0;
+int getchar(void);
+
+#define STOP { \
+  DLOG(" << ==================== " "Debug Stop Point %d in '%s' at %s:%d" \
+    " ==================== >> ", \
+    ++debug_stop_number, __func__, __FILE__, __LINE__); \
+    getchar(); \
+}
+#else
+#  define initialize_report_file(...)
+#  define DLOG(...)
+#  define DASSERT(_e)
+#  define DVASSERT(_expr, _fmt, ...)
+#endif
+// }}}
diff --git a/src/plugins/e-acsl/share/e-acsl/e_acsl_malloc.h b/src/plugins/e-acsl/share/e-acsl/e_acsl_malloc.h
new file mode 100644
index 0000000000000000000000000000000000000000..972b4315437dc362daa0fb64aa44458b6a15bf19
--- /dev/null
+++ b/src/plugins/e-acsl/share/e-acsl/e_acsl_malloc.h
@@ -0,0 +1,89 @@
+/**************************************************************************/
+/*                                                                        */
+/*  This file is part of the Frama-C's E-ACSL plug-in.                    */
+/*                                                                        */
+/*  Copyright (C) 2012-2016                                               */
+/*    CEA (Commissariat à l'énergie atomique et aux énergies              */
+/*         alternatives)                                                  */
+/*                                                                        */
+/*  you can redistribute it and/or modify it under the terms of the GNU   */
+/*  Lesser General Public License as published by the Free Software       */
+/*  Foundation, version 2.1.                                              */
+/*                                                                        */
+/*  It is distributed in the hope that it will be useful,                 */
+/*  but WITHOUT ANY WARRANTY; without even the implied warranty of        */
+/*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         */
+/*  GNU Lesser General Public License for more details.                   */
+/*                                                                        */
+/*  See the GNU Lesser General Public License version 2.1                 */
+/*  for more details (enclosed in the file license/LGPLv2.1).             */
+/*                                                                        */
+/**************************************************************************/
+
+/**********************************/
+/* Bindings for memory allocation */
+/**********************************/
+
+/* Should be included after
+ * printf, debug and assert but before the actual code */
+
+#include <features.h>
+#include <stddef.h>
+
+#ifndef E_ACSL_MALLOC
+#define E_ACSL_MALLOC
+
+#ifdef __GLIBC__
+
+/* Real functions for dynamic memory allocation in Glibc */
+extern void  *__libc_malloc(size_t);
+extern void  *__libc_realloc(void*, size_t);
+extern void  *__libc_calloc(size_t, size_t);
+extern void  *__libc_memalign(size_t, size_t);
+extern void   __libc_free(void*);
+extern void  *__libc_valloc(size_t);
+
+#  define native_malloc     __libc_malloc
+#  define native_realloc    __libc_realloc
+#  define native_calloc     __libc_calloc
+#  define native_memalign   __libc_memalign
+#  define native_free       __libc_free
+#  define native_valloc     __libc_valloc
+
+/* First address past end of stack  */
+extern void  *__libc_stack_end;
+#  define libc_stack_end __libc_stack_end
+
+/* FIXME: Current shadowing does rely on the fact that the memory is allocated
+ * using sbrk rather than mmap, this is yet another limitation that needs to
+ * be addressed in the future. By default GNU malloc will allocate any memory
+ * block that is larger than 128KB limit using mmap. The below code increases
+ * the limit so when larger blocks are used then GNU malloc still uses sbrk.
+ * This option is controlled by the M_MMAP_THRESHOLD parameter of mallopt.
+ * For 32-bit systems the maximal size of the memory block allocated using sbrk
+ * is 512*1024 bytes and for 64-bit is 4*1024*1024*sizeof(unsigned long).
+ *
+ * Do not include malloc.h: it also includes stdio.h which clashes
+ * with e_acsl_printf.h. Need to make sure though that the value of
+ * M_MMAP_THRESHOLD provided below does match the value defined by the
+ * malloc.h header. */
+int mallopt(int param, int value);
+#  define M_MMAP_THRESHOLD -3
+#  if __WORDSIZE == 64
+#    define MALLOC_MAX  4*1024*1024*8
+#  elif __WORDSIZE == 32
+#    define MALLOC_MAX 512*1024
+#  endif
+
+/* Do increase malloc threshold. Should be run via initialize and after
+ * report file initialization. */
+void prepare_malloc() {
+  if (!mallopt(M_MMAP_THRESHOLD, MALLOC_MAX))
+    vabort("Cannot increase malloc threshold to %lu\n", MALLOC_MAX);
+  DLOG("<<< Increased sbrk threshold to %lu bytes >>>\n", MALLOC_MAX);
+}
+
+#else
+#  error "GNU Standard library not found"
+#endif
+#endif
diff --git a/src/plugins/e-acsl/share/e-acsl/memory_model/e_acsl_mmodel.h b/src/plugins/e-acsl/share/e-acsl/e_acsl_mmodel_api.h
similarity index 85%
rename from src/plugins/e-acsl/share/e-acsl/memory_model/e_acsl_mmodel.h
rename to src/plugins/e-acsl/share/e-acsl/e_acsl_mmodel_api.h
index 2796332785dcb67199f1230a17d2366403917cb9..8fec227fc0b519277594caadf8878f8269e7fa01 100644
--- a/src/plugins/e-acsl/share/e-acsl/memory_model/e_acsl_mmodel.h
+++ b/src/plugins/e-acsl/share/e-acsl/e_acsl_mmodel_api.h
@@ -23,8 +23,13 @@
 #ifndef E_ACSL_MMODEL
 #define E_ACSL_MMODEL
 
-#include "stdlib.h"
-#include "stdbool.h"
+#include <stddef.h>
+
+/* Runtime assertion verifying a predicate */
+/*@ requires pred != 0;
+  @ assigns \nothing; */
+void e_acsl_assert(int pred, char *kind, char *fct, char *pred_txt, int line)
+  __attribute__((FC_BUILTIN));
 
 /* allocate size bytes and store the returned block
  * for further information, see malloc */
@@ -38,6 +43,8 @@ void * __malloc(size_t size)
 void __free(void * ptr)
   __attribute__((FC_BUILTIN));
 
+/* evaluate to a non-zero value if ptr points to a start address of a block
+ * allocated via a memory allocation function (e.g., malloc, realloc etc) */
 /*@ assigns \result \from ptr; */
 int __freeable(void * ptr)
   __attribute__((FC_BUILTIN));
@@ -57,11 +64,6 @@ void * __calloc(size_t nbr_elt, size_t size_elt)
 
 /* From outside the library, the following functions have no side effect */
 
-/* put argc/argv in memory model */
-/*@ assigns \nothing; */
-void __init_args(int argc_ref, char **argv_ref)
-	__attribute__((FC_BUILTIN));
-
 /* store the block of size bytes starting at ptr */
 /*@ assigns \result \from *(((char*)ptr)+(0..size-1)); */
 void * __store_block(void * ptr, size_t size)
@@ -82,9 +84,9 @@ void __initialize(void * ptr, size_t size)
 void __full_init(void * ptr)
   __attribute__((FC_BUILTIN));
 
-/* marks a block as litteral string */
+/* marks a block as read-only */
 /*@ assigns \nothing; */
-void __literal_string(void * ptr)
+void __readonly(void * ptr)
   __attribute__((FC_BUILTIN));
 
 /* ****************** */
@@ -117,7 +119,10 @@ void * __base_addr(void * ptr)
 size_t __block_length(void * ptr)
   __attribute__((FC_BUILTIN));
 
-/* return the offset of ptr within its block */
+/* return the offset of ptr within its block
+ * FIXME: The return type of __offset should be changed to size_t.
+ * In the current E-ACSL/Frama-C implementation, however, this change
+ * leads to a Frama-C failure. */
 /*@ ensures \result == \offset(ptr);
   @ assigns \result \from ptr; */
 int __offset(void * ptr)
@@ -130,9 +135,6 @@ int __offset(void * ptr)
 int __initialized(void * ptr, size_t size)
   __attribute__((FC_BUILTIN));
 
-void __out_of_bound(void * ptr, _Bool flag)
-  __attribute__((FC_BUILTIN));
-
 /* print the content of the abstract structure */
 void __e_acsl_memory_debug(void)
   __attribute__((FC_BUILTIN));
@@ -141,20 +143,26 @@ void __e_acsl_memory_debug(void)
 
 /* erase the content of the abstract structure
  * have to be called at the end of the `main` */
-/*@ assigns __e_acsl_internal_heap \from __e_acsl_internal_heap; */
+/*@ assigns \nothing; */
 void __e_acsl_memory_clean(void)
   __attribute__((FC_BUILTIN));
 
+/* initialize the abstract structure
+ * have to be called before any other statement in `main` */
+/*@ assigns \nothing; */
+void __e_acsl_memory_init(int *argc_ref, char ***argv, size_t ptr_size)
+  __attribute__((FC_BUILTIN));
+
 /* return the number of bytes dynamically allocated */
 /*@ assigns \result \from __e_acsl_internal_heap; */
-size_t __get_memory_size(void)
+size_t __get_heap_size(void)
   __attribute__((FC_BUILTIN));
 
 /* for predicates */
-extern size_t __memory_size;
+extern size_t __heap_size;
 
 /*@ predicate diffSize{L1,L2}(integer i) =
-  \at(__memory_size, L1) - \at(__memory_size, L2) == i;
+  \at(__heap_size, L1) - \at(__heap_size, L2) == i;
 */
 
 #endif
diff --git a/src/plugins/e-acsl/share/e-acsl/e_acsl_printf.h b/src/plugins/e-acsl/share/e-acsl/e_acsl_printf.h
index 095ffee8d9883531bfa42fb24f6d12868e8ef92d..c7617e74b595d7e57e1124fdf392eef0db1ea64a 100644
--- a/src/plugins/e-acsl/share/e-acsl/e_acsl_printf.h
+++ b/src/plugins/e-acsl/share/e-acsl/e_acsl_printf.h
@@ -33,33 +33,80 @@
 /*                                                                          */
 /****************************************************************************/
 
+#ifndef E_ACSL_PRINTF
+#define E_ACSL_PRINTF
+
+#include "e_acsl_syscall.h"
 #include <stdarg.h>
 #include <stddef.h>
 #include <stdint.h>
-#include <string.h>
 #include <unistd.h>
 #include <limits.h>
+#include <sys/stat.h>
 
 // For PATH_MAX in Linux
 #ifdef __linux__
-  #include <linux/limits.h>
+#  include <linux/limits.h>
 #endif
 
-static void printf(char *fmt, ...);
+/* Malloc/stdio free printf
+ *
+ * NOTE: The below implementation does not require system-wide I/O (stdio.h).
+ *
+ * Supported format strings:
+ * - Flag characters:
+ *     0       - the following value will be is zero-padded.
+ *
+ * - Field width:
+ *     Optional positive decimal integer following flag characters.
+ *
+ * - Length modifier:
+ *     l       - the following integer conversion corresponds to a long int or
+ *                  unsigned long int argument.
+ *
+ * - Standard conversion specifiers:
+ *     d       - signed integers.
+ *     u       - unsigned integers.
+ *     f       - floating point numbers. Floating point numbers do not support
+ *                 precision specification.
+ *     x,X     - hexadecimal numbers.
+ *     p       - void pointers.
+ *
+ * - Non-standard conversion specifiers:
+ *     a       - memory-address.
+ *     b, B    - print field width bits of a number left-to-right (b) or
+ *      right-to-left (B). Unless specified field-width of 8 is used. Bits
+ *      over a 64-bit boundary are ignored.
+ *     v, V    - print first field width bits of a memory region given by a
+ *      void pointer left-to-right (v) or right-to-left (V). Unless specified
+ *      field-width of 8 is used. */
+
+/* ****************** */
+/* Public API         */
+/* ****************** */
 
-static void eprintf(char *fmt, ...);
+/* Replacement for printf with support for the above specifiers */
+static int printf(char *fmt, ...);
 
-static void dprintf(int fd, char *fmt, ...);
+/* Same as printf but write to a string buffer */
+static int sprintf(char* s, char *fmt, ...);
 
-static void sprintf(char* s,char *fmt, ...);
+/* Same as printf but write to the error stream. */
+static int eprintf(char *fmt, ...);
 
-static void vabort(char *fmt, ...);
+/* Same as printf but write to a file descriptor. */
+static int dprintf(int fd, char *fmt, ...);
+
+/* ****************** */
+/* Implementation     */
+/* ****************** */
 
 typedef void (*putcf) (void*,char);
 
+/* Unsigned long integers to string conversion (%u) */
 static void uli2a(unsigned long int num, unsigned int base, int uc,char * bf) {
   int n=0;
-  unsigned int d=1;
+  unsigned long int d=1;
   while (num/d >= base)
     d*=base;
   while (d!=0) {
@@ -74,6 +121,43 @@ static void uli2a(unsigned long int num, unsigned int base, int uc,char * bf) {
   *bf=0;
 }
 
+/* Unsigned pointer-wide integers to memory address conversion (%a) */
+static void addr2a(uintptr_t addr, char * bf) {
+  *bf++ = '0';
+  *bf++ = 'x';
+
+  unsigned int digits = 1;
+  int n=0;
+  unsigned long int d=1;
+  while (addr/d >= 10) {
+    d*=10;
+    digits++;
+  }
+
+  unsigned int ctr = 0;
+  while (d!=0) {
+    ctr++;
+    int dgt = addr / d;
+    addr%=d;
+    d/=10;
+    if (n || dgt>0|| d==0) {
+      *bf++ = dgt+(dgt<10 ? '0' : 'a' - 10);
+      ++n;
+    }
+    if (--digits%5 == 0 && d != 0)
+        *bf++ = '-';
+  }
+  *bf=0;
+}
+
+/* Pointer to string conversion (%p) */
+static void ptr2a(void *p, char *bf) {
+    *bf++ = '0';
+    *bf++ = 'x';
+    uli2a((intptr_t)p,16,0,bf);
+}
+
+/* Signed long integer to string conversion (%ld) */
 static void li2a (long num, char * bf) {
   if (num<0) {
     num=-num;
@@ -82,6 +166,7 @@ static void li2a (long num, char * bf) {
   uli2a(num,10,0,bf);
 }
 
+/* Signed integer to string conversion (%d) */
 static void ui2a(unsigned int num, unsigned int base, int uc,char * bf) {
   int n=0;
   unsigned int d=1;
@@ -99,6 +184,46 @@ static void ui2a(unsigned int num, unsigned int base, int uc,char * bf) {
   *bf=0;
 }
 
+/* Integer bit-fields to string conversion (%b, %B) */
+static void bits2a(long int v, int size, char *bf, int l2r) {
+  int i;
+  if (l2r) {
+    for(i = 0; i < size; i++) {
+      *bf++ = '0' + ((v >> i) & 1);
+      if (i && i+1 < size && (i+1)%8 == 0)
+        *bf++  = ' ';
+    }
+  } else {
+    for(i = size - 1; i >= 0; i--) {
+      *bf++ = '0' + ((v >> i) & 1);
+      if (i && i+1 < size && i%4 == 0)
+        *bf++  = ' ';
+    }
+  }
+  *bf=0;
+}
+
+/* Pointer bit-fields to string conversion (%v, %V) */
+static void pbits2a(void *p, int size, char *bf, int l2r) {
+  char *v = (char*)p;
+  int i;
+  if (l2r) {
+    for(i = 0; i < size; i++) {
+      *bf++ = '0' + ((v[i/8] >> i%8) & 1);
+      if (i && i+1 < size && (i+1)%4 == 0)
+        *bf++  = ' ';
+    }
+  } else {
+    for(i = size - 1; i >= 0; i--) {
+      *bf++ = '0' + ((v[i/8] >> i%8) & 1);
+      if (i && i+1 < size && i%4 == 0)
+        *bf++  = ' ';
+    }
+  }
+  *bf=0;
+}
+
+/* Signed integer to string (%d) */
 static void i2a (int num, char * bf) {
   if (num<0) {
     num=-num;
@@ -107,6 +232,7 @@ static void i2a (int num, char * bf) {
   ui2a(num,10,0,bf);
 }
 
+/* Char to int conversion  */
 static int a2d(char ch) {
   if (ch>='0' && ch<='9')
     return ch-'0';
@@ -117,7 +243,7 @@ static int a2d(char ch) {
   else return -1;
 }
 
-static char a2i(char ch, char** src,int base,int* nump) {
+static char a2i(char ch, char** src, int base, int* nump) {
   char* p= *src;
   int num=0;
   int digit;
@@ -131,7 +257,7 @@ static char a2i(char ch, char** src,int base,int* nump) {
   return ch;
 }
 
-static void putchw(void* putp,putcf putf,int n, char z, char* bf) {
+static void putchw(void* putp, putcf putf, int n, char z, char* bf) {
   char fc=z? '0' : ' ';
   char ch;
   char* p=bf;
@@ -148,17 +274,17 @@ static void putcp(void* p,char c) {
 }
 
 static void _format(void* putp, putcf putf, char *fmt, va_list va) {
-  char bf[12];
+  char bf[256];
   char ch;
   while ((ch=*(fmt++))) {
-    if (ch!='%')
+    if (ch!='%') // if not '%' print character as is
       putf(putp,ch);
-    else {
+    else { // otherwise do the print based on the format following '%'
       char lz=0;
-      char lng=0;
+      char lng=0; // long (i.e., 'l' specifier)
       int w=0;
       ch=*(fmt++);
-      if (ch=='0') {
+      if (ch=='0') { // '0' specifier - padding with zeroes
         ch=*(fmt++);
         lz=1;
       }
@@ -171,8 +297,8 @@ static void _format(void* putp, putcf putf, char *fmt, va_list va) {
       }
       switch (ch) {
         case 0:
-          goto abort;
-        case 'u' : {
+          break;
+        case 'u': {
           if (lng)
             uli2a(va_arg(va, unsigned long int),10,0,bf);
           else
@@ -188,6 +314,30 @@ static void _format(void* putp, putcf putf, char *fmt, va_list va) {
           putchw(putp,putf,w,lz,bf);
           break;
         }
+        case 'p':
+          ptr2a(va_arg(va, void*), bf);
+          putchw(putp,putf,w,lz,bf);
+          break;
+        case 'a':
+          addr2a(va_arg(va, uintptr_t), bf);
+          putchw(putp,putf,w,lz,bf);
+          break;
+        case 'b':
+          bits2a(va_arg(va, long), w > 64 ? 64 : w ? w : 8, bf, 1);
+          putchw(putp,putf,0,0,bf);
+          break;
+        case 'B':
+          bits2a(va_arg(va, long), w > 64 ? 64 : w ? w : 8, bf, 0);
+          putchw(putp,putf,0,0,bf);
+          break;
+        case 'v':
+          pbits2a(va_arg(va, void*), w ? w : 8, bf, 1);
+          putchw(putp,putf,0,0,bf);
+          break;
+        case 'V':
+          pbits2a(va_arg(va, void*), w ? w : 8, bf, 0);
+          putchw(putp,putf,0,0,bf);
+          break;
         case 'x':
         case 'X':
           if (lng)
@@ -222,8 +372,6 @@ static void _format(void* putp, putcf putf, char *fmt, va_list va) {
       }
     }
   }
-abort:
-  ;
 }
 
 static void _charc_stdout (void* p, char c) { write(1,&c,1); }
@@ -258,62 +406,37 @@ static void _charc_literal  (void* p, char c) {
   }
 }
 
-static void printf(char *fmt, ...) {
+static int printf(char *fmt, ...) {
   va_list va;
   va_start(va,fmt);
   _format(NULL,_charc_stdout,fmt,va);
   va_end(va);
+  return 1;
 }
 
-static void eprintf(char *fmt, ...) {
-  va_list va;
-  va_start(va,fmt);
-  _format(NULL,_charc_stderr,fmt,va);
-  va_end(va);
-}
-
-static void vabort(char *fmt, ...) {
+static int eprintf(char *fmt, ...) {
   va_list va;
   va_start(va,fmt);
   _format(NULL,_charc_stderr,fmt,va);
   va_end(va);
-  abort();
+  return 1;
 }
 
-static void dprintf(int fd, char *fmt, ...) {
+static int dprintf(int fd, char *fmt, ...) {
   va_list va;
   va_start(va,fmt);
   intptr_t fd_long = fd;
   _format((void*)fd_long,_charc_file,fmt,va);
   va_end(va);
+  return 1;
 }
 
-static void sprintf(char* s,char *fmt, ...) {
+static int sprintf(char* s, char *fmt, ...) {
   va_list va;
   va_start(va,fmt);
   _format(&s,putcp,fmt,va);
   putcp(&s,0);
   va_end(va);
+  return 1;
 }
-
-#define assert(expr) \
-  ((expr) ? (void)(0) : vabort("%s at %s:%d\n", \
-    #expr, __FILE__,__LINE__))
-
-static void vassert_fail(int expr, int line, char *file, char *fmt,  ...) {
-  if (!expr) {
-    char *afmt = "%s at %s:%d\n";
-    char buf [strlen(fmt) + strlen(afmt) + PATH_MAX +  11];
-    sprintf(buf, afmt, fmt, file, line);
-    fmt = buf;
-
-    va_list va;
-    va_start(va,fmt);
-    _format(NULL,_charc_stderr,fmt,va);
-    va_end(va);
-    abort();
-  }
-}
-
-#define vassert(expr, fmt, ...) \
-    vassert_fail(expr, __LINE__, __FILE__, fmt, __VA_ARGS__)
+#endif
diff --git a/src/plugins/e-acsl/share/e-acsl/e_acsl_string.h b/src/plugins/e-acsl/share/e-acsl/e_acsl_string.h
new file mode 100644
index 0000000000000000000000000000000000000000..9d2bc20fb61dbdc3fdafc73772a4b56371bf8ef2
--- /dev/null
+++ b/src/plugins/e-acsl/share/e-acsl/e_acsl_string.h
@@ -0,0 +1,60 @@
+/**************************************************************************/
+/*                                                                        */
+/*  This file is part of the Frama-C's E-ACSL plug-in.                    */
+/*                                                                        */
+/*  Copyright (C) 2012-2015                                               */
+/*    CEA (Commissariat à l'énergie atomique et aux énergies              */
+/*         alternatives)                                                  */
+/*                                                                        */
+/*  you can redistribute it and/or modify it under the terms of the GNU   */
+/*  Lesser General Public License as published by the Free Software       */
+/*  Foundation, version 2.1.                                              */
+/*                                                                        */
+/*  It is distributed in the hope that it will be useful,                 */
+/*  but WITHOUT ANY WARRANTY; without even the implied warranty of        */
+/*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         */
+/*  GNU Lesser General Public License for more details.                   */
+/*                                                                        */
+/*  See the GNU Lesser General Public License version 2.1                 */
+/*  for more details (enclosed in the file license/LGPLv2.1).             */
+/*                                                                        */
+/**************************************************************************/
+
+/** Replacement of system-wide <string.h> header for use with E-ACSL
+ * runtime library.
+ *
+ * Intended use:
+ *  - For the case when the sources are compiled using GCC prefer __builtin_
+ *    versions of some of the string.h functions (e.g., memset). This is mostly
+ *    because the GCC builtins are on average faster.  *
+ *  - For the case it is not GCC system-wide versions should be used. This
+ *    and the above options require E_ACSL_BUILTINS macro to be defined
+ *    at compile-time.
+ *  - For the case when the analysed program contains customised definitions
+ *    of string.h functions use GLIBC-based implementations. */
+
+#ifndef E_ACSL_STD_STRING
+#define E_ACSL_STD_STRING
+#  if defined(__GNUC__) && defined(E_ACSL_BUILTINS)
+#    define memset __builtin_memset
+#    define memcpy __builtin_memcpy
+#    define memmove __builtin_memmove
+#    define strlen __builtin_strlen
+#    define strcmp __builtin_strcmp
+#    define strncmp __builtin_strncmp
+#  elif defined(E_ACSL_BUILTINS)
+#    include <string.h>
+#  else
+#    include <stdlib.h>
+#    include <endian.h>
+#    include "glibc/pagecopy.h"
+#    include "glibc/memcopy.h"
+#    include "glibc/wordcopy.c"
+#    include "glibc/memcpy.c"
+#    include "glibc/memmove.c"
+#    include "glibc/memset.c"
+#    include "glibc/strlen.c"
+#    include "glibc/strcmp.c"
+#    include "glibc/strncmp.c"
+#  endif
+#endif
diff --git a/src/plugins/e-acsl/share/e-acsl/e_acsl_syscall.h b/src/plugins/e-acsl/share/e-acsl/e_acsl_syscall.h
new file mode 100644
index 0000000000000000000000000000000000000000..da7ec1e46480a7596ba10804f88d3e6882682364
--- /dev/null
+++ b/src/plugins/e-acsl/share/e-acsl/e_acsl_syscall.h
@@ -0,0 +1,51 @@
+/**************************************************************************/
+/*                                                                        */
+/*  This file is part of the Frama-C's E-ACSL plug-in.                    */
+/*                                                                        */
+/*  Copyright (C) 2012-2015                                               */
+/*    CEA (Commissariat à l'énergie atomique et aux énergies              */
+/*         alternatives)                                                  */
+/*                                                                        */
+/*  you can redistribute it and/or modify it under the terms of the GNU   */
+/*  Lesser General Public License as published by the Free Software       */
+/*  Foundation, version 2.1.                                              */
+/*                                                                        */
+/*  It is distributed in the hope that it will be useful,                 */
+/*  but WITHOUT ANY WARRANTY; without even the implied warranty of        */
+/*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         */
+/*  GNU Lesser General Public License for more details.                   */
+/*                                                                        */
+/*  See the GNU Lesser General Public License version 2.1                 */
+/*  for more details (enclosed in the file license/LGPLv2.1).             */
+/*                                                                        */
+/**************************************************************************/
+
+/* Re-declaration of standard libc syscall-based functions using direct
+ * application of syscall. The aim is to avoid issues for the case when a
+ * target program provides custom implementations or wrappers for such
+ * functions. For instance, if an instrumented program provides a custom
+ * implementation of `write` E-ACSL RTL will still use the native system
+ * call. */
+
+#ifndef E_ACSL_SYSCALL
+#define E_ACSL_SYSCALL
+#  include <stdlib.h>
+#  include <fcntl.h>
+#  include <unistd.h>
+#  include <sys/syscall.h>   /* SYS_xxx definitions */
+int syscall(int number, ...);
+
+/* Note that the following does not provide a re-declaration for `mmap`. This
+ * is because syscall returns int, while mmap should return an integer type wide
+ * enough to hold a memory address address. Also, since there is no `sbrk`
+ * system call, re-declaration of sbrk is also missing. As a result, programs
+ * providing custom definitions of `syscall`, `mmap` or `sbrk` should be
+ * rejected. Re-definitions of the below functions should be safe. */
+
+#  define write(...) syscall(SYS_write, __VA_ARGS__)
+#  define open(...) syscall(SYS_open, __VA_ARGS__)
+#  define close(...) syscall(SYS_close, __VA_ARGS__)
+#  define getrlimit(...) syscall(SYS_getrlimit, __VA_ARGS__)
+#  define munmap(...) syscall(SYS_munmap, __VA_ARGS__)
+#  define exit(...) syscall(SYS_exit, __VA_ARGS__)
+#endif
diff --git a/src/plugins/e-acsl/share/e-acsl/glibc/memcopy.h b/src/plugins/e-acsl/share/e-acsl/glibc/memcopy.h
new file mode 100644
index 0000000000000000000000000000000000000000..a64854a021676023594f7dfeb634e77fa1349ec0
--- /dev/null
+++ b/src/plugins/e-acsl/share/e-acsl/glibc/memcopy.h
@@ -0,0 +1,191 @@
+/* memcopy.h -- definitions for memory copy functions.  Generic C version.
+   Copyright (C) 1991-2015 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Torbjorn Granlund (tege@sics.se).
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#ifndef _MEMCOPY_H
+#define _MEMCOPY_H	1
+
+/* The strategy of the memory functions is:
+
+     1. Copy bytes until the destination pointer is aligned.
+
+     2. Copy words in unrolled loops.  If the source and destination
+     are not aligned in the same way, use word memory operations,
+     but shift and merge two read words before writing.
+
+     3. Copy the few remaining bytes.
+
+   This is fast on processors that have at least 10 registers for
+   allocation by GCC, and that can access memory at reg+const in one
+   instruction.
+
+   I made an "exhaustive" test of this memmove when I wrote it,
+   exhaustive in the sense that I tried all alignment and length
+   combinations, with and without overlap.  */
+
+
+/* The macros defined in this file are:
+
+   BYTE_COPY_FWD(dst_beg_ptr, src_beg_ptr, nbytes_to_copy)
+
+   BYTE_COPY_BWD(dst_end_ptr, src_end_ptr, nbytes_to_copy)
+
+   WORD_COPY_FWD(dst_beg_ptr, src_beg_ptr, nbytes_remaining, nbytes_to_copy)
+
+   WORD_COPY_BWD(dst_end_ptr, src_end_ptr, nbytes_remaining, nbytes_to_copy)
+
+   MERGE(old_word, sh_1, new_word, sh_2)
+     [I fail to understand.  I feel stupid.  --roland]
+*/
+
+/* Type to use for aligned memory operations.
+   This should normally be the biggest type supported by a single load
+   and store.  */
+#define	op_t	unsigned long int
+#define OPSIZ	(sizeof(op_t))
+
+/* Type to use for unaligned operations.  */
+typedef unsigned char byte;
+
+#if __BYTE_ORDER == __LITTLE_ENDIAN
+#define MERGE(w0, sh_1, w1, sh_2) (((w0) >> (sh_1)) | ((w1) << (sh_2)))
+#endif
+#if __BYTE_ORDER == __BIG_ENDIAN
+#define MERGE(w0, sh_1, w1, sh_2) (((w0) << (sh_1)) | ((w1) >> (sh_2)))
+#endif
+
+/* Copy exactly NBYTES bytes from SRC_BP to DST_BP,
+   without any assumptions about alignment of the pointers.  */
+#define BYTE_COPY_FWD(dst_bp, src_bp, nbytes)				      \
+  do									      \
+    {									      \
+      size_t __nbytes = (nbytes);					      \
+      while (__nbytes > 0)						      \
+	{								      \
+	  byte __x = ((byte *) src_bp)[0];				      \
+	  src_bp += 1;							      \
+	  __nbytes -= 1;						      \
+	  ((byte *) dst_bp)[0] = __x;					      \
+	  dst_bp += 1;							      \
+	}								      \
+    } while (0)
+
+/* Copy exactly NBYTES_TO_COPY bytes from SRC_END_PTR to DST_END_PTR,
+   beginning at the bytes right before the pointers and continuing towards
+   smaller addresses.  Don't assume anything about alignment of the
+   pointers.  */
+#define BYTE_COPY_BWD(dst_ep, src_ep, nbytes)				      \
+  do									      \
+    {									      \
+      size_t __nbytes = (nbytes);					      \
+      while (__nbytes > 0)						      \
+	{								      \
+	  byte __x;							      \
+	  src_ep -= 1;							      \
+	  __x = ((byte *) src_ep)[0];					      \
+	  dst_ep -= 1;							      \
+	  __nbytes -= 1;						      \
+	  ((byte *) dst_ep)[0] = __x;					      \
+	}								      \
+    } while (0)
+
+/* Copy *up to* NBYTES bytes from SRC_BP to DST_BP, with
+   the assumption that DST_BP is aligned on an OPSIZ multiple.  If
+   not all bytes could be easily copied, store remaining number of bytes
+   in NBYTES_LEFT, otherwise store 0.  */
+#define WORD_COPY_FWD(dst_bp, src_bp, nbytes_left, nbytes)		      \
+  do									      \
+    {									      \
+      if (src_bp % OPSIZ == 0)						      \
+	_wordcopy_fwd_aligned (dst_bp, src_bp, (nbytes) / OPSIZ);	      \
+      else								      \
+	_wordcopy_fwd_dest_aligned (dst_bp, src_bp, (nbytes) / OPSIZ);	      \
+      src_bp += (nbytes) & -OPSIZ;					      \
+      dst_bp += (nbytes) & -OPSIZ;					      \
+      (nbytes_left) = (nbytes) % OPSIZ;					      \
+    } while (0)
+
+/* Copy *up to* NBYTES_TO_COPY bytes from SRC_END_PTR to DST_END_PTR,
+   beginning at the words (of type op_t) right before the pointers and
+   continuing towards smaller addresses.  May take advantage of that
+   DST_END_PTR is aligned on an OPSIZ multiple.  If not all bytes could be
+   easily copied, store remaining number of bytes in NBYTES_REMAINING,
+   otherwise store 0.  */
+#define WORD_COPY_BWD(dst_ep, src_ep, nbytes_left, nbytes)		      \
+  do									      \
+    {									      \
+      if (src_ep % OPSIZ == 0)						      \
+	_wordcopy_bwd_aligned (dst_ep, src_ep, (nbytes) / OPSIZ);	      \
+      else								      \
+	_wordcopy_bwd_dest_aligned (dst_ep, src_ep, (nbytes) / OPSIZ);	      \
+      src_ep -= (nbytes) & -OPSIZ;					      \
+      dst_ep -= (nbytes) & -OPSIZ;					      \
+      (nbytes_left) = (nbytes) % OPSIZ;					      \
+    } while (0)
+
+/* The macro PAGE_COPY_FWD_MAYBE (dstp, srcp, nbytes_left, nbytes) is invoked
+   like WORD_COPY_FWD et al.  The pointers should be at least word aligned.
+   This will check if virtual copying by pages can and should be done and do it
+   if so.  The pointers will be aligned to PAGE_SIZE bytes.  The macro requires
+   that pagecopy.h defines at least PAGE_COPY_THRESHOLD to 0.  If
+   PAGE_COPY_THRESHOLD is non-zero, the header must also define PAGE_COPY_FWD
+   and PAGE_SIZE.
+*/
+#if PAGE_COPY_THRESHOLD
+
+# include <assert.h>
+
+# define PAGE_COPY_FWD_MAYBE(dstp, srcp, nbytes_left, nbytes)		      \
+  do									      \
+    {									      \
+      if ((nbytes) >= PAGE_COPY_THRESHOLD &&				      \
+	  PAGE_OFFSET ((dstp) - (srcp)) == 0) 				      \
+	{								      \
+	  /* The amount to copy is past the threshold for copying	      \
+	     pages virtually with kernel VM operations, and the		      \
+	     source and destination addresses have the same alignment.  */    \
+	  size_t nbytes_before = PAGE_OFFSET (-(dstp));			      \
+	  if (nbytes_before != 0)					      \
+	    {								      \
+	      /* First copy the words before the first page boundary.  */     \
+	      WORD_COPY_FWD (dstp, srcp, nbytes_left, nbytes_before);	      \
+	      assert (nbytes_left == 0);				      \
+	      nbytes -= nbytes_before;					      \
+	    }								      \
+	  PAGE_COPY_FWD (dstp, srcp, nbytes_left, nbytes);		      \
+	}								      \
+    } while (0)
+
+/* The page size is always a power of two, so we can avoid modulo division.  */
+# define PAGE_OFFSET(n)	((n) & (PAGE_SIZE - 1))
+
+#else
+
+# define PAGE_COPY_FWD_MAYBE(dstp, srcp, nbytes_left, nbytes) /* nada */
+
+#endif
+
+/* Threshold value for when to enter the unrolled loops.  */
+#define	OP_T_THRES	16
+
+/* Set to 1 if memcpy is safe to use for forward-copying memmove with
+   overlapping addresses.  This is 0 by default because memcpy implementations
+   are generally not safe for overlapping addresses.  */
+#define MEMCPY_OK_FOR_FWD_MEMMOVE 0
+
+#endif /* memcopy.h */
diff --git a/src/plugins/e-acsl/share/e-acsl/glibc/memcpy.c b/src/plugins/e-acsl/share/e-acsl/glibc/memcpy.c
new file mode 100644
index 0000000000000000000000000000000000000000..3f02823097b1dd632988e2fd005d3ac6fe997e62
--- /dev/null
+++ b/src/plugins/e-acsl/share/e-acsl/glibc/memcpy.c
@@ -0,0 +1,52 @@
+/* Copy memory to memory until the specified number of bytes
+   has been copied.  Overlap is NOT handled correctly.
+   Copyright (C) 1991-2015 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Torbjorn Granlund (tege@sics.se).
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+static void * memcpy (void *dstpp, const void *srcpp, size_t len) {
+  unsigned long int dstp = (long int) dstpp;
+  unsigned long int srcp = (long int) srcpp;
+
+  /* Copy from the beginning to the end.  */
+
+  /* If there not too few bytes to copy, use word copy.  */
+  if (len >= OP_T_THRES)
+    {
+      /* Copy just a few bytes to make DSTP aligned.  */
+      len -= (-dstp) % OPSIZ;
+      BYTE_COPY_FWD (dstp, srcp, (-dstp) % OPSIZ);
+
+      /* Copy whole pages from SRCP to DSTP by virtual address manipulation,
+	 as much as possible.  */
+
+      PAGE_COPY_FWD_MAYBE (dstp, srcp, len, len);
+
+      /* Copy from SRCP to DSTP taking advantage of the known alignment of
+	 DSTP.  Number of bytes remaining is put in the third argument,
+	 i.e. in LEN.  This number may vary from machine to machine.  */
+
+      WORD_COPY_FWD (dstp, srcp, len, len);
+
+      /* Fall out and copy the tail.  */
+    }
+
+  /* There are just a few bytes to copy.  Use byte memory operations.  */
+  BYTE_COPY_FWD (dstp, srcp, len);
+
+  return dstpp;
+}
diff --git a/src/plugins/e-acsl/share/e-acsl/glibc/memmove.c b/src/plugins/e-acsl/share/e-acsl/glibc/memmove.c
new file mode 100644
index 0000000000000000000000000000000000000000..092e9e3ad9ed1828c2a7159e51fc8b7c8b5eb038
--- /dev/null
+++ b/src/plugins/e-acsl/share/e-acsl/glibc/memmove.c
@@ -0,0 +1,88 @@
+/* Copy memory to memory until the specified number of bytes
+   has been copied.  Overlap is handled correctly.
+   Copyright (C) 1991-2015 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Torbjorn Granlund (tege@sics.se).
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+static void *memmove(void *dest, const void *src, size_t len) {
+  unsigned long int dstp = (long int) dest;
+  unsigned long int srcp = (long int) src;
+
+  /* This test makes the forward copying code be used whenever possible.
+     Reduces the working set.  */
+  if (dstp - srcp >= len)	/* *Unsigned* compare!  */
+    {
+      /* Copy from the beginning to the end.  */
+
+#if MEMCPY_OK_FOR_FWD_MEMMOVE
+      dest = memcpy (dest, src, len);
+#else
+      /* If there not too few bytes to copy, use word copy.  */
+      if (len >= OP_T_THRES)
+	{
+	  /* Copy just a few bytes to make DSTP aligned.  */
+	  len -= (-dstp) % OPSIZ;
+	  BYTE_COPY_FWD (dstp, srcp, (-dstp) % OPSIZ);
+
+	  /* Copy whole pages from SRCP to DSTP by virtual address
+	     manipulation, as much as possible.  */
+
+	  PAGE_COPY_FWD_MAYBE (dstp, srcp, len, len);
+
+	  /* Copy from SRCP to DSTP taking advantage of the known
+	     alignment of DSTP.  Number of bytes remaining is put
+	     in the third argument, i.e. in LEN.  This number may
+	     vary from machine to machine.  */
+
+	  WORD_COPY_FWD (dstp, srcp, len, len);
+
+	  /* Fall out and copy the tail.  */
+	}
+
+      /* There are just a few bytes to copy.  Use byte memory operations.  */
+      BYTE_COPY_FWD (dstp, srcp, len);
+#endif /* MEMCPY_OK_FOR_FWD_MEMMOVE */
+    }
+  else
+    {
+      /* Copy from the end to the beginning.  */
+      srcp += len;
+      dstp += len;
+
+      /* If there not too few bytes to copy, use word copy.  */
+      if (len >= OP_T_THRES)
+	{
+	  /* Copy just a few bytes to make DSTP aligned.  */
+	  len -= dstp % OPSIZ;
+	  BYTE_COPY_BWD (dstp, srcp, dstp % OPSIZ);
+
+	  /* Copy from SRCP to DSTP taking advantage of the known
+	     alignment of DSTP.  Number of bytes remaining is put
+	     in the third argument, i.e. in LEN.  This number may
+	     vary from machine to machine.  */
+
+	  WORD_COPY_BWD (dstp, srcp, len, len);
+
+	  /* Fall out and copy the tail.  */
+	}
+
+      /* There are just a few bytes to copy.  Use byte memory operations.  */
+      BYTE_COPY_BWD (dstp, srcp, len);
+    }
+
+  return dest;
+}
diff --git a/src/plugins/e-acsl/share/e-acsl/glibc/memset.c b/src/plugins/e-acsl/share/e-acsl/glibc/memset.c
new file mode 100644
index 0000000000000000000000000000000000000000..3330e9017a4432a2b2b700bbcdbaa51dad475c8c
--- /dev/null
+++ b/src/plugins/e-acsl/share/e-acsl/glibc/memset.c
@@ -0,0 +1,84 @@
+/* Copyright (C) 1991-2015 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+static void *
+memset (dstpp, c, len)
+     void *dstpp;
+     int c;
+     size_t len;
+{
+  long int dstp = (long int) dstpp;
+
+  if (len >= 8)
+    {
+      size_t xlen;
+      op_t cccc;
+
+      cccc = (unsigned char) c;
+      cccc |= cccc << 8;
+      cccc |= cccc << 16;
+      if (OPSIZ > 4)
+	/* Do the shift in two steps to avoid warning if long has 32 bits.  */
+	cccc |= (cccc << 16) << 16;
+
+      /* There are at least some bytes to set.
+	 No need to test for LEN == 0 in this alignment loop.  */
+      while (dstp % OPSIZ != 0)
+	{
+	  ((byte *) dstp)[0] = c;
+	  dstp += 1;
+	  len -= 1;
+	}
+
+      /* Write 8 `op_t' per iteration until less than 8 `op_t' remain.  */
+      xlen = len / (OPSIZ * 8);
+      while (xlen > 0)
+	{
+	  ((op_t *) dstp)[0] = cccc;
+	  ((op_t *) dstp)[1] = cccc;
+	  ((op_t *) dstp)[2] = cccc;
+	  ((op_t *) dstp)[3] = cccc;
+	  ((op_t *) dstp)[4] = cccc;
+	  ((op_t *) dstp)[5] = cccc;
+	  ((op_t *) dstp)[6] = cccc;
+	  ((op_t *) dstp)[7] = cccc;
+	  dstp += 8 * OPSIZ;
+	  xlen -= 1;
+	}
+      len %= OPSIZ * 8;
+
+      /* Write 1 `op_t' per iteration until less than OPSIZ bytes remain.  */
+      xlen = len / OPSIZ;
+      while (xlen > 0)
+	{
+	  ((op_t *) dstp)[0] = cccc;
+	  dstp += OPSIZ;
+	  xlen -= 1;
+	}
+      len %= OPSIZ;
+    }
+
+  /* Write the last few bytes.  */
+  while (len > 0)
+    {
+      ((byte *) dstp)[0] = c;
+      dstp += 1;
+      len -= 1;
+    }
+
+  return dstpp;
+}
diff --git a/src/plugins/e-acsl/share/e-acsl/glibc/pagecopy.h b/src/plugins/e-acsl/share/e-acsl/glibc/pagecopy.h
new file mode 100644
index 0000000000000000000000000000000000000000..b29d93e728c5f87b16f538967bc1af6a87fc8308
--- /dev/null
+++ b/src/plugins/e-acsl/share/e-acsl/glibc/pagecopy.h
@@ -0,0 +1,37 @@
+/* Macros for copying by pages; used in memcpy, memmove.
+   Copyright (C) 1995-2015 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+/* The macro PAGE_COPY_FWD_MAYBE defined in memcopy.h is used in memmove if the
+   PAGE_COPY_THRESHOLD macro is set to a non-zero value.  The default is 0,
+   that is copying by pages is not implemented.
+
+   System-specific pagecopy.h files that want to support page copying should
+   define these macros:
+
+   PAGE_COPY_THRESHOLD
+   -- A non-zero minimum size for which virtual copying by pages is worthwhile.
+
+   PAGE_SIZE
+   -- Size of a page.
+
+   PAGE_COPY_FWD (dstp, srcp, nbytes_left, nbytes)
+   -- Macro to perform the virtual copy operation.
+   The pointers will be aligned to PAGE_SIZE bytes.
+*/
+
+#define PAGE_COPY_THRESHOLD 0
diff --git a/src/plugins/e-acsl/share/e-acsl/glibc/strcmp.c b/src/plugins/e-acsl/share/e-acsl/glibc/strcmp.c
new file mode 100644
index 0000000000000000000000000000000000000000..3ac6395f22065f9d0741d43ea2a207e5743f884b
--- /dev/null
+++ b/src/plugins/e-acsl/share/e-acsl/glibc/strcmp.c
@@ -0,0 +1,34 @@
+/* Copyright (C) 1991-2015 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+/* Compare S1 and S2, returning less than, equal to or
+   greater than zero if S1 is lexicographically less than,
+   equal to or greater than S2.  */
+static int strcmp (const char *p1, const char *p2) {
+  const unsigned char *s1 = (const unsigned char *) p1;
+  const unsigned char *s2 = (const unsigned char *) p2;
+  unsigned char c1, c2;
+
+  do {
+    c1 = (unsigned char) *s1++;
+    c2 = (unsigned char) *s2++;
+    if (c1 == '\0')
+	    return c1 - c2;
+  } while (c1 == c2);
+  return c1 - c2;
+}
+
diff --git a/src/plugins/e-acsl/share/e-acsl/glibc/strlen.c b/src/plugins/e-acsl/share/e-acsl/glibc/strlen.c
new file mode 100644
index 0000000000000000000000000000000000000000..cdc6425fdcd3358ea0cc9ecc309358db4cac7ca3
--- /dev/null
+++ b/src/plugins/e-acsl/share/e-acsl/glibc/strlen.c
@@ -0,0 +1,97 @@
+/* Copyright (C) 1991-2015 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Written by Torbjorn Granlund (tege@sics.se),
+   with help from Dan Sahlin (dan@sics.se);
+   commentary by Jim Blandy (jimb@ai.mit.edu).
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+/* Return the length of the null-terminated string STR.  Scan for
+   the null terminator quickly by testing four bytes at a time.  */
+static size_t strlen (const char *str) {
+  const char *char_ptr;
+  const unsigned long int *longword_ptr;
+  unsigned long int longword, himagic, lomagic;
+
+  /* Handle the first few characters by reading one character at a time.
+     Do this until CHAR_PTR is aligned on a longword boundary.  */
+  for (char_ptr = str; ((unsigned long int) char_ptr
+			& (sizeof (longword) - 1)) != 0;
+       ++char_ptr)
+    if (*char_ptr == '\0')
+      return char_ptr - str;
+
+  /* All these elucidatory comments refer to 4-byte longwords,
+     but the theory applies equally well to 8-byte longwords.  */
+
+  longword_ptr = (unsigned long int *) char_ptr;
+
+  /* Bits 31, 24, 16, and 8 of this number are zero.  Call these bits
+     the "holes."  Note that there is a hole just to the left of
+     each byte, with an extra at the end:
+
+     bits:  01111110 11111110 11111110 11111111
+     bytes: AAAAAAAA BBBBBBBB CCCCCCCC DDDDDDDD
+
+     The 1-bits make sure that carries propagate to the next 0-bit.
+     The 0-bits provide holes for carries to fall into.  */
+  himagic = 0x80808080L;
+  lomagic = 0x01010101L;
+  if (sizeof (longword) > 4)
+    {
+      /* 64-bit version of the magic.  */
+      /* Do the shift in two steps to avoid a warning if long has 32 bits.  */
+      himagic = ((himagic << 16) << 16) | himagic;
+      lomagic = ((lomagic << 16) << 16) | lomagic;
+    }
+  if (sizeof (longword) > 8)
+    abort ();
+
+  /* Instead of the traditional loop which tests each character,
+     we will test a longword at a time.  The tricky part is testing
+     if *any of the four* bytes in the longword in question are zero.  */
+  for (;;)
+    {
+      longword = *longword_ptr++;
+
+      if (((longword - lomagic) & ~longword & himagic) != 0)
+	{
+	  /* Which of the bytes was the zero?  If none of them were, it was
+	     a misfire; continue the search.  */
+
+	  const char *cp = (const char *) (longword_ptr - 1);
+
+	  if (cp[0] == 0)
+	    return cp - str;
+	  if (cp[1] == 0)
+	    return cp - str + 1;
+	  if (cp[2] == 0)
+	    return cp - str + 2;
+	  if (cp[3] == 0)
+	    return cp - str + 3;
+	  if (sizeof (longword) > 4)
+	    {
+	      if (cp[4] == 0)
+		return cp - str + 4;
+	      if (cp[5] == 0)
+		return cp - str + 5;
+	      if (cp[6] == 0)
+		return cp - str + 6;
+	      if (cp[7] == 0)
+		return cp - str + 7;
+	    }
+	}
+    }
+}
diff --git a/src/plugins/e-acsl/share/e-acsl/glibc/strncmp.c b/src/plugins/e-acsl/share/e-acsl/glibc/strncmp.c
new file mode 100644
index 0000000000000000000000000000000000000000..53751ca81ebbd83765433b59cb5804ade12337ce
--- /dev/null
+++ b/src/plugins/e-acsl/share/e-acsl/glibc/strncmp.c
@@ -0,0 +1,61 @@
+/* Copyright (C) 1991-2015 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+/* Compare no more than N characters of S1 and S2,
+   returning less than, equal to or greater than zero
+   if S1 is lexicographically less than, equal to or
+   greater than S2.  */
+static int strncmp (const char *s1, const char *s2, size_t n) {
+  unsigned char c1 = '\0';
+  unsigned char c2 = '\0';
+
+  if (n >= 4)
+    {
+      size_t n4 = n >> 2;
+      do
+	{
+	  c1 = (unsigned char) *s1++;
+	  c2 = (unsigned char) *s2++;
+	  if (c1 == '\0' || c1 != c2)
+	    return c1 - c2;
+	  c1 = (unsigned char) *s1++;
+	  c2 = (unsigned char) *s2++;
+	  if (c1 == '\0' || c1 != c2)
+	    return c1 - c2;
+	  c1 = (unsigned char) *s1++;
+	  c2 = (unsigned char) *s2++;
+	  if (c1 == '\0' || c1 != c2)
+	    return c1 - c2;
+	  c1 = (unsigned char) *s1++;
+	  c2 = (unsigned char) *s2++;
+	  if (c1 == '\0' || c1 != c2)
+	    return c1 - c2;
+	} while (--n4 > 0);
+      n &= 3;
+    }
+
+  while (n > 0)
+    {
+      c1 = (unsigned char) *s1++;
+      c2 = (unsigned char) *s2++;
+      if (c1 == '\0' || c1 != c2)
+	return c1 - c2;
+      n--;
+    }
+
+  return c1 - c2;
+}
diff --git a/src/plugins/e-acsl/share/e-acsl/glibc/wordcopy.c b/src/plugins/e-acsl/share/e-acsl/glibc/wordcopy.c
new file mode 100644
index 0000000000000000000000000000000000000000..0f9e7c7ff01856ec98afdcf4edcc464bc78bf54e
--- /dev/null
+++ b/src/plugins/e-acsl/share/e-acsl/glibc/wordcopy.c
@@ -0,0 +1,397 @@
+/* memcopy.c -- subroutines for memory copy functions.
+   Copyright (C) 1991-2015 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Torbjorn Granlund (tege@sics.se).
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+/* BE VERY CAREFUL IF YOU CHANGE THIS CODE...!  */
+
+/* _wordcopy_fwd_aligned -- Copy block beginning at SRCP to
+   block beginning at DSTP with LEN `op_t' words (not LEN bytes!).
+   Both SRCP and DSTP should be aligned for memory operations on `op_t's.  */
+
+static void
+_wordcopy_fwd_aligned (long int dstp, long int srcp, size_t len)
+{
+  op_t a0, a1;
+
+  switch (len % 8)
+    {
+    case 2:
+      a0 = ((op_t *) srcp)[0];
+      srcp -= 6 * OPSIZ;
+      dstp -= 7 * OPSIZ;
+      len += 6;
+      goto do1;
+    case 3:
+      a1 = ((op_t *) srcp)[0];
+      srcp -= 5 * OPSIZ;
+      dstp -= 6 * OPSIZ;
+      len += 5;
+      goto do2;
+    case 4:
+      a0 = ((op_t *) srcp)[0];
+      srcp -= 4 * OPSIZ;
+      dstp -= 5 * OPSIZ;
+      len += 4;
+      goto do3;
+    case 5:
+      a1 = ((op_t *) srcp)[0];
+      srcp -= 3 * OPSIZ;
+      dstp -= 4 * OPSIZ;
+      len += 3;
+      goto do4;
+    case 6:
+      a0 = ((op_t *) srcp)[0];
+      srcp -= 2 * OPSIZ;
+      dstp -= 3 * OPSIZ;
+      len += 2;
+      goto do5;
+    case 7:
+      a1 = ((op_t *) srcp)[0];
+      srcp -= 1 * OPSIZ;
+      dstp -= 2 * OPSIZ;
+      len += 1;
+      goto do6;
+
+    case 0:
+      if (OP_T_THRES <= 3 * OPSIZ && len == 0)
+	return;
+      a0 = ((op_t *) srcp)[0];
+      srcp -= 0 * OPSIZ;
+      dstp -= 1 * OPSIZ;
+      goto do7;
+    case 1:
+      a1 = ((op_t *) srcp)[0];
+      srcp -=-1 * OPSIZ;
+      dstp -= 0 * OPSIZ;
+      len -= 1;
+      if (OP_T_THRES <= 3 * OPSIZ && len == 0)
+	goto do0;
+      goto do8;			/* No-op.  */
+    }
+
+  do
+    {
+    do8:
+      a0 = ((op_t *) srcp)[0];
+      ((op_t *) dstp)[0] = a1;
+    do7:
+      a1 = ((op_t *) srcp)[1];
+      ((op_t *) dstp)[1] = a0;
+    do6:
+      a0 = ((op_t *) srcp)[2];
+      ((op_t *) dstp)[2] = a1;
+    do5:
+      a1 = ((op_t *) srcp)[3];
+      ((op_t *) dstp)[3] = a0;
+    do4:
+      a0 = ((op_t *) srcp)[4];
+      ((op_t *) dstp)[4] = a1;
+    do3:
+      a1 = ((op_t *) srcp)[5];
+      ((op_t *) dstp)[5] = a0;
+    do2:
+      a0 = ((op_t *) srcp)[6];
+      ((op_t *) dstp)[6] = a1;
+    do1:
+      a1 = ((op_t *) srcp)[7];
+      ((op_t *) dstp)[7] = a0;
+
+      srcp += 8 * OPSIZ;
+      dstp += 8 * OPSIZ;
+      len -= 8;
+    }
+  while (len != 0);
+
+  /* This is the right position for do0.  Please don't move
+     it into the loop.  */
+ do0:
+  ((op_t *) dstp)[0] = a1;
+}
+
+/* _wordcopy_fwd_dest_aligned -- Copy block beginning at SRCP to
+   block beginning at DSTP with LEN `op_t' words (not LEN bytes!).
+   DSTP should be aligned for memory operations on `op_t's, but SRCP must
+   *not* be aligned.  */
+
+static void
+_wordcopy_fwd_dest_aligned (long int dstp, long int srcp, size_t len)
+{
+  op_t a0, a1, a2, a3;
+  int sh_1, sh_2;
+
+  /* Calculate how to shift a word read at the memory operation
+     aligned srcp to make it aligned for copy.  */
+
+  sh_1 = 8 * (srcp % OPSIZ);
+  sh_2 = 8 * OPSIZ - sh_1;
+
+  /* Make SRCP aligned by rounding it down to the beginning of the `op_t'
+     it points in the middle of.  */
+  srcp &= -OPSIZ;
+
+  switch (len % 4)
+    {
+    case 2:
+      a1 = ((op_t *) srcp)[0];
+      a2 = ((op_t *) srcp)[1];
+      srcp -= 1 * OPSIZ;
+      dstp -= 3 * OPSIZ;
+      len += 2;
+      goto do1;
+    case 3:
+      a0 = ((op_t *) srcp)[0];
+      a1 = ((op_t *) srcp)[1];
+      srcp -= 0 * OPSIZ;
+      dstp -= 2 * OPSIZ;
+      len += 1;
+      goto do2;
+    case 0:
+      if (OP_T_THRES <= 3 * OPSIZ && len == 0)
+	return;
+      a3 = ((op_t *) srcp)[0];
+      a0 = ((op_t *) srcp)[1];
+      srcp -=-1 * OPSIZ;
+      dstp -= 1 * OPSIZ;
+      len += 0;
+      goto do3;
+    case 1:
+      a2 = ((op_t *) srcp)[0];
+      a3 = ((op_t *) srcp)[1];
+      srcp -=-2 * OPSIZ;
+      dstp -= 0 * OPSIZ;
+      len -= 1;
+      if (OP_T_THRES <= 3 * OPSIZ && len == 0)
+	goto do0;
+      goto do4;			/* No-op.  */
+    }
+
+  do
+    {
+    do4:
+      a0 = ((op_t *) srcp)[0];
+      ((op_t *) dstp)[0] = MERGE (a2, sh_1, a3, sh_2);
+    do3:
+      a1 = ((op_t *) srcp)[1];
+      ((op_t *) dstp)[1] = MERGE (a3, sh_1, a0, sh_2);
+    do2:
+      a2 = ((op_t *) srcp)[2];
+      ((op_t *) dstp)[2] = MERGE (a0, sh_1, a1, sh_2);
+    do1:
+      a3 = ((op_t *) srcp)[3];
+      ((op_t *) dstp)[3] = MERGE (a1, sh_1, a2, sh_2);
+
+      srcp += 4 * OPSIZ;
+      dstp += 4 * OPSIZ;
+      len -= 4;
+    }
+  while (len != 0);
+
+  /* This is the right position for do0.  Please don't move
+     it into the loop.  */
+ do0:
+  ((op_t *) dstp)[0] = MERGE (a2, sh_1, a3, sh_2);
+}
+
+/* _wordcopy_bwd_aligned -- Copy block finishing right before
+   SRCP to block finishing right before DSTP with LEN `op_t' words
+   (not LEN bytes!).  Both SRCP and DSTP should be aligned for memory
+   operations on `op_t's.  */
+
+static void
+_wordcopy_bwd_aligned (long int dstp, long int srcp, size_t len)
+{
+  op_t a0, a1;
+
+  switch (len % 8)
+    {
+    case 2:
+      srcp -= 2 * OPSIZ;
+      dstp -= 1 * OPSIZ;
+      a0 = ((op_t *) srcp)[1];
+      len += 6;
+      goto do1;
+    case 3:
+      srcp -= 3 * OPSIZ;
+      dstp -= 2 * OPSIZ;
+      a1 = ((op_t *) srcp)[2];
+      len += 5;
+      goto do2;
+    case 4:
+      srcp -= 4 * OPSIZ;
+      dstp -= 3 * OPSIZ;
+      a0 = ((op_t *) srcp)[3];
+      len += 4;
+      goto do3;
+    case 5:
+      srcp -= 5 * OPSIZ;
+      dstp -= 4 * OPSIZ;
+      a1 = ((op_t *) srcp)[4];
+      len += 3;
+      goto do4;
+    case 6:
+      srcp -= 6 * OPSIZ;
+      dstp -= 5 * OPSIZ;
+      a0 = ((op_t *) srcp)[5];
+      len += 2;
+      goto do5;
+    case 7:
+      srcp -= 7 * OPSIZ;
+      dstp -= 6 * OPSIZ;
+      a1 = ((op_t *) srcp)[6];
+      len += 1;
+      goto do6;
+
+    case 0:
+      if (OP_T_THRES <= 3 * OPSIZ && len == 0)
+	return;
+      srcp -= 8 * OPSIZ;
+      dstp -= 7 * OPSIZ;
+      a0 = ((op_t *) srcp)[7];
+      goto do7;
+    case 1:
+      srcp -= 9 * OPSIZ;
+      dstp -= 8 * OPSIZ;
+      a1 = ((op_t *) srcp)[8];
+      len -= 1;
+      if (OP_T_THRES <= 3 * OPSIZ && len == 0)
+	goto do0;
+      goto do8;			/* No-op.  */
+    }
+
+  do
+    {
+    do8:
+      a0 = ((op_t *) srcp)[7];
+      ((op_t *) dstp)[7] = a1;
+    do7:
+      a1 = ((op_t *) srcp)[6];
+      ((op_t *) dstp)[6] = a0;
+    do6:
+      a0 = ((op_t *) srcp)[5];
+      ((op_t *) dstp)[5] = a1;
+    do5:
+      a1 = ((op_t *) srcp)[4];
+      ((op_t *) dstp)[4] = a0;
+    do4:
+      a0 = ((op_t *) srcp)[3];
+      ((op_t *) dstp)[3] = a1;
+    do3:
+      a1 = ((op_t *) srcp)[2];
+      ((op_t *) dstp)[2] = a0;
+    do2:
+      a0 = ((op_t *) srcp)[1];
+      ((op_t *) dstp)[1] = a1;
+    do1:
+      a1 = ((op_t *) srcp)[0];
+      ((op_t *) dstp)[0] = a0;
+
+      srcp -= 8 * OPSIZ;
+      dstp -= 8 * OPSIZ;
+      len -= 8;
+    }
+  while (len != 0);
+
+  /* This is the right position for do0.  Please don't move
+     it into the loop.  */
+ do0:
+  ((op_t *) dstp)[7] = a1;
+}
+
+/* _wordcopy_bwd_dest_aligned -- Copy block finishing right
+   before SRCP to block finishing right before DSTP with LEN `op_t'
+   words (not LEN bytes!).  DSTP should be aligned for memory
+   operations on `op_t', but SRCP must *not* be aligned.  */
+
+static void
+_wordcopy_bwd_dest_aligned (long int dstp, long int srcp, size_t len)
+{
+  op_t a0, a1, a2, a3;
+  int sh_1, sh_2;
+
+  /* Calculate how to shift a word read at the memory operation
+     aligned srcp to make it aligned for copy.  */
+
+  sh_1 = 8 * (srcp % OPSIZ);
+  sh_2 = 8 * OPSIZ - sh_1;
+
+  /* Make srcp aligned by rounding it down to the beginning of the op_t
+     it points in the middle of.  */
+  srcp &= -OPSIZ;
+  srcp += OPSIZ;
+
+  switch (len % 4)
+    {
+    case 2:
+      srcp -= 3 * OPSIZ;
+      dstp -= 1 * OPSIZ;
+      a2 = ((op_t *) srcp)[2];
+      a1 = ((op_t *) srcp)[1];
+      len += 2;
+      goto do1;
+    case 3:
+      srcp -= 4 * OPSIZ;
+      dstp -= 2 * OPSIZ;
+      a3 = ((op_t *) srcp)[3];
+      a2 = ((op_t *) srcp)[2];
+      len += 1;
+      goto do2;
+    case 0:
+      if (OP_T_THRES <= 3 * OPSIZ && len == 0)
+	return;
+      srcp -= 5 * OPSIZ;
+      dstp -= 3 * OPSIZ;
+      a0 = ((op_t *) srcp)[4];
+      a3 = ((op_t *) srcp)[3];
+      goto do3;
+    case 1:
+      srcp -= 6 * OPSIZ;
+      dstp -= 4 * OPSIZ;
+      a1 = ((op_t *) srcp)[5];
+      a0 = ((op_t *) srcp)[4];
+      len -= 1;
+      if (OP_T_THRES <= 3 * OPSIZ && len == 0)
+	goto do0;
+      goto do4;			/* No-op.  */
+    }
+
+  do
+    {
+    do4:
+      a3 = ((op_t *) srcp)[3];
+      ((op_t *) dstp)[3] = MERGE (a0, sh_1, a1, sh_2);
+    do3:
+      a2 = ((op_t *) srcp)[2];
+      ((op_t *) dstp)[2] = MERGE (a3, sh_1, a0, sh_2);
+    do2:
+      a1 = ((op_t *) srcp)[1];
+      ((op_t *) dstp)[1] = MERGE (a2, sh_1, a3, sh_2);
+    do1:
+      a0 = ((op_t *) srcp)[0];
+      ((op_t *) dstp)[0] = MERGE (a1, sh_1, a2, sh_2);
+
+      srcp -= 4 * OPSIZ;
+      dstp -= 4 * OPSIZ;
+      len -= 4;
+    }
+  while (len != 0);
+
+  /* This is the right position for do0.  Please don't move
+     it into the loop.  */
+ do0:
+  ((op_t *) dstp)[3] = MERGE (a0, sh_1, a1, sh_2);
+}
diff --git a/src/plugins/e-acsl/share/e-acsl/memory_model/e_acsl_list.c b/src/plugins/e-acsl/share/e-acsl/memory_model/e_acsl_list.c
deleted file mode 100644
index b2a048287baaece8dc9e1e80309a01e039942b94..0000000000000000000000000000000000000000
--- a/src/plugins/e-acsl/share/e-acsl/memory_model/e_acsl_list.c
+++ /dev/null
@@ -1,133 +0,0 @@
-/**************************************************************************/
-/*                                                                        */
-/*  This file is part of the Frama-C's E-ACSL plug-in.                    */
-/*                                                                        */
-/*  Copyright (C) 2012-2016                                               */
-/*    CEA (Commissariat à l'énergie atomique et aux énergies              */
-/*         alternatives)                                                  */
-/*                                                                        */
-/*  you can redistribute it and/or modify it under the terms of the GNU   */
-/*  Lesser General Public License as published by the Free Software       */
-/*  Foundation, version 2.1.                                              */
-/*                                                                        */
-/*  It is distributed in the hope that it will be useful,                 */
-/*  but WITHOUT ANY WARRANTY; without even the implied warranty of        */
-/*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         */
-/*  GNU Lesser General Public License for more details.                   */
-/*                                                                        */
-/*  See the GNU Lesser General Public License version 2.1                 */
-/*  for more details (enclosed in the file license/LGPLv2.1).             */
-/*                                                                        */
-/**************************************************************************/
-
-#include "e_acsl_mmodel_api.h"
-#include "e_acsl_mmodel.h"
-#include "stdio.h"
-
-struct _node {
-  struct _block * value;
-  struct _node * next;
-};
-
-struct _node * __list = NULL;
-
-
-void __remove_element(struct _block* ptr) {
-  struct _node * tmp1 = __list, * tmp2;
-  if(tmp1 == NULL) return;
-  tmp2 = tmp1->next;
-  
-  /* first element */
-  if(tmp1->value->ptr == ptr->ptr) {
-    __list = tmp1->next;
-    free(tmp1);
-  }
-  
-  for(; tmp2 != NULL && tmp2->value->ptr < ptr->ptr;) {
-    tmp1 = tmp2;
-    tmp2 = tmp2->next;
-  }
-  if(tmp2 == NULL) return;
-  if(tmp2->value->ptr == ptr->ptr) {
-    tmp1->next = tmp2->next;
-    free(tmp2);
-  }
-}
-
-
-void __add_element(struct _block* ptr) {
-  struct _node * tmp1 = __list, * tmp2, * new;
-  new = malloc(sizeof(struct _node));
-  if(new == NULL) return;
-  new->value = ptr;
-  new->next = NULL;
-
-  if(__list == NULL) {
-    __list = new;
-    return;
-  }
-  if(__list->value->ptr >= ptr->ptr) {
-    new->next = __list;
-    __list = new;
-    return;
-  }
-  tmp2 = tmp1->next;
-
-  for(; tmp2 != NULL && tmp2->value->ptr < ptr->ptr;) {
-    tmp1 = tmp2;
-    tmp2 = tmp2->next;
-  }
-
-  tmp1->next = new;
-  new->next = tmp2;
-}
-
-
-struct _block* __get_exact(void* ptr) {
-  struct _node * tmp = __list;
-  for(; tmp != NULL;) {
-    if(tmp->value->ptr == (size_t)ptr)
-      return tmp->value;
-    if(tmp->value->ptr > (size_t)ptr)
-      break;
-    tmp = tmp->next;
-  }
-  return NULL;
-}
-
-
-struct _block* __get_cont(void* ptr) {
-  struct _node * tmp = __list;
-  for(; tmp != NULL; tmp = tmp->next) {
-    if(tmp->value->ptr > (size_t)ptr)
-      break;
-    if(tmp->value->size == 0 && (size_t)ptr == tmp->value->ptr)
-      return tmp->value;
-    if((size_t)ptr < tmp->value->ptr + tmp->value->size)
-      return tmp->value;
-  }
-  return NULL;
-}
-
-
-void __clean_struct() {
-  struct _node * next;
-  for(; __list != NULL ;) {
-    __clean_block(__list->value);
-    next = __list->next;
-    free(__list);
-    __list = next;
-  }
-}
-
-
-void __debug_struct() {
-  struct _node * tmp = __list;
-  printf("\t\t\t------------DEBUG\n");
-  for(; tmp != NULL; tmp = tmp->next) {
-    printf("\t\t\t");
-    __print_block(tmp->value);
-  }
-  printf("\t\t\t-----------------\n");
-}
-
diff --git a/src/plugins/e-acsl/share/e-acsl/memory_model/e_acsl_splay_tree.c b/src/plugins/e-acsl/share/e-acsl/memory_model/e_acsl_splay_tree.c
deleted file mode 100644
index 445484e27cf89f4bf489520b4a45987116b7bfdc..0000000000000000000000000000000000000000
--- a/src/plugins/e-acsl/share/e-acsl/memory_model/e_acsl_splay_tree.c
+++ /dev/null
@@ -1,198 +0,0 @@
-/**************************************************************************/
-/*                                                                        */
-/*  This file is part of the Frama-C's E-ACSL plug-in.                    */
-/*                                                                        */
-/*  Copyright (C) 2012-2016                                               */
-/*    CEA (Commissariat à l'énergie atomique et aux énergies              */
-/*         alternatives)                                                  */
-/*                                                                        */
-/*  you can redistribute it and/or modify it under the terms of the GNU   */
-/*  Lesser General Public License as published by the Free Software       */
-/*  Foundation, version 2.1.                                              */
-/*                                                                        */
-/*  It is distributed in the hope that it will be useful,                 */
-/*  but WITHOUT ANY WARRANTY; without even the implied warranty of        */
-/*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         */
-/*  GNU Lesser General Public License for more details.                   */
-/*                                                                        */
-/*  See the GNU Lesser General Public License version 2.1                 */
-/*  for more details (enclosed in the file license/LGPLv2.1).             */
-/*                                                                        */
-/**************************************************************************/
-
-#include "e_acsl_mmodel_api.h"
-#include "e_acsl_mmodel.h"
-#include "stdio.h"
-
-struct _node {
-  struct _block * value;
-  struct _node * left, * right, * parent;
-};
-
-struct _node * __root = NULL;
-
-void left_rotate(struct _node * x) {
-  struct _node* y = x->right;
-  x->right = y->left;
-  if( y->left ) y->left->parent = x;
-  y->parent = x->parent;
-  if( !x->parent ) __root = y;
-  else if( x == x->parent->left ) x->parent->left = y;
-  else x->parent->right = y;
-  y->left = x;
-  x->parent = y;
-}
-
-void right_rotate(struct _node *x ) {
-  struct _node *y = x->left;
-  x->left = y->right;
-  if( y->right ) y->right->parent = x;
-  y->parent = x->parent;
-  if( !x->parent ) __root = y;
-  else if( x == x->parent->left ) x->parent->left = y;
-  else x->parent->right = y;
-  y->right = x;
-  x->parent = y;
-}
-
-void splay(struct _node *x ) {
-  while( x->parent ) {
-    if( !x->parent->parent ) {
-      if( x->parent->left == x ) right_rotate( x->parent );
-      else left_rotate( x->parent );
-    }
-    else if( x->parent->left == x && x->parent->parent->left == x->parent ) {
-      right_rotate( x->parent->parent );
-      right_rotate( x->parent );
-    }
-    else if( x->parent->right == x && x->parent->parent->right == x->parent ) {
-      left_rotate( x->parent->parent );
-      left_rotate( x->parent );
-    }
-    else if( x->parent->left == x && x->parent->parent->right == x->parent ) {
-      right_rotate( x->parent );
-      left_rotate( x->parent );
-    }
-    else {
-      left_rotate( x->parent );
-      right_rotate( x->parent );
-    }
-  }
-}
- 
-struct _node* subtree_minimum(struct _node *u ) {
-  while( u->left ) u = u->left;
-  return u;
-}
- 
-struct _node* subtree_maximum(struct _node *u ) {
-  while( u->right ) u = u->right;
-  return u;
-}
-
-void replace(struct _node *u, struct _node *v ) {
-  if( !u->parent ) __root = v;
-  else if( u == u->parent->left ) u->parent->left = v;
-  else u->parent->right = v;
-  if( v ) v->parent = u->parent;
-}
-
-void __remove_element(struct _block* ptr) {
-  struct _node * z = __root;
-  while(z != NULL) {
-    if(z->value->ptr > ptr->ptr) z = z->left;
-    else if(z->value->ptr < ptr->ptr) z = z->right;
-    else break;
-  }
-  if( !z ) return;
-  splay( z );
-
-  if( !z->left ) replace( z, z->right );
-  else if( !z->right ) replace( z, z->left );
-  else {
-    struct _node *y = subtree_minimum( z->right );
-    if( y->parent != z ) {
-      replace( y, y->right );
-      y->right = z->right;
-      y->right->parent = y;
-    }
-    replace( z, y );
-    y->left = z->left;
-    y->left->parent = y;
-  }
-}
-
-
-void __add_element(struct _block* ptr) {
-  struct _node *z = __root, *p = NULL;
-  while( z ) {
-    p = z;
-    if(z->value->ptr > ptr->ptr) z = z->left;
-    else if(z->value->ptr < ptr->ptr) z = z->right;
-    else return;
-  }
-  z = malloc(sizeof(struct _node));
-  z->left = z->right = NULL;
-  z->value = ptr;
-  z->parent = p;
-  if( !p ) __root = z;
-  else if(p->value->ptr < z->value->ptr) p->right = z;
-  else p->left = z;
-  splay( z );
-}
-
-
-struct _block* __get_exact(void* ptr) {
-  struct _node * tmp = __root;
-  while(tmp != NULL) {
-    if(tmp->value->ptr > (size_t)ptr) tmp = tmp->left;
-    else if(tmp->value->ptr < (size_t)ptr) tmp = tmp->right;
-    else return tmp->value;
-  }
-  return NULL;
-}
-
-
-struct _block* _get_cont_rec(struct _node * node, void* ptr) {
-  if(node == NULL) return NULL;
-  else if(node->value->ptr > (size_t)ptr) return _get_cont_rec(node->left, ptr);
-  else if(node->value->size == 0 && node->value->ptr == (size_t)ptr)
-    return node->value;
-  else if(node->value->ptr+node->value->size > (size_t)ptr) return node->value;
-  else return _get_cont_rec(node->right, ptr);
-}
-
-
-struct _block* __get_cont(void* ptr) {
-  return _get_cont_rec(__root, ptr);
-}
-
-
-void __clean_rec(struct _node * ptr) {
-  if(ptr == NULL) return;
-  __clean_block(ptr->value);
-  __clean_rec(ptr->left);
-  __clean_rec(ptr->right);
-  free(ptr);
-  ptr = NULL;
-}
-
-void __clean_struct() {
-  __clean_rec(__root);
-}
-
-
-void __debug_rec(struct _node * ptr) {
-  if(ptr == NULL) return;
-  __debug_rec(ptr->left);
-  printf("\t\t\t");
-  __print_block(ptr->value);
-  __debug_rec(ptr->right);
-}
-
-void __debug_struct() {
-  printf("\t\t\t------------DEBUG\n");
-  __debug_rec(__root);
-  printf("\t\t\t-----------------\n");
-}
-
diff --git a/src/plugins/e-acsl/share/e-acsl/memory_model/e_acsl_tree.c b/src/plugins/e-acsl/share/e-acsl/memory_model/e_acsl_tree.c
deleted file mode 100644
index e11c344643a6e4709fd61f72931bee0164c01c70..0000000000000000000000000000000000000000
--- a/src/plugins/e-acsl/share/e-acsl/memory_model/e_acsl_tree.c
+++ /dev/null
@@ -1,153 +0,0 @@
-/**************************************************************************/
-/*                                                                        */
-/*  This file is part of the Frama-C's E-ACSL plug-in.                    */
-/*                                                                        */
-/*  Copyright (C) 2012-2016                                               */
-/*    CEA (Commissariat à l'énergie atomique et aux énergies              */
-/*         alternatives)                                                  */
-/*                                                                        */
-/*  you can redistribute it and/or modify it under the terms of the GNU   */
-/*  Lesser General Public License as published by the Free Software       */
-/*  Foundation, version 2.1.                                              */
-/*                                                                        */
-/*  It is distributed in the hope that it will be useful,                 */
-/*  but WITHOUT ANY WARRANTY; without even the implied warranty of        */
-/*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         */
-/*  GNU Lesser General Public License for more details.                   */
-/*                                                                        */
-/*  See the GNU Lesser General Public License version 2.1                 */
-/*  for more details (enclosed in the file license/LGPLv2.1).             */
-/*                                                                        */
-/**************************************************************************/
-
-#include "e_acsl_mmodel_api.h"
-#include "e_acsl_mmodel.h"
-#include "stdio.h"
-
-struct _node {
-  struct _block * value;
-  struct _node * left, * right;
-};
-
-struct _node * __root = NULL;
-
-void __remove_element(struct _block* ptr) {
-  struct _node * tmp = __root, * father = NULL;
-
-  while(tmp != NULL) {
-    if(tmp->value->ptr > ptr->ptr) { father = tmp; tmp = tmp->left; }
-    else if(tmp->value->ptr < ptr->ptr) { father = tmp; tmp = tmp->right; }
-    else break;
-  }
-  if(tmp == NULL) return;
-
-  if(tmp->left == NULL) {
-    if(__root == tmp) __root = tmp->right;
-    else {
-      if(father->left == tmp) father->left = tmp->right;
-      else father->right = tmp->right;
-    }
-    free(tmp);
-  }
-  else if(tmp->right == NULL) {
-    if(__root == tmp) __root = tmp->left;
-    else {
-      if(father->left == tmp) father->left = tmp->left;
-      else father->right = tmp->left;
-    }
-    free(tmp);
-  }
-  else { /* two children */
-    struct _node * cursor = tmp->right;
-    father = tmp;
-    while(cursor->left != NULL) { father = cursor; cursor = cursor->left; }
-    tmp->value = cursor->value;
-    if(father->left == cursor) father->left = cursor->right;
-    else father->right = cursor->right;
-    free(cursor);
-  }
-}
-
-
-void __add_element(struct _block* ptr) {
-  enum {LEFT, RIGHT} pos;
-  struct _node * new, * tmp = __root, * father = NULL;
-  new = malloc(sizeof(struct _node));
-  if(new == NULL) return;
-  new->value = ptr;
-  new->left = new->right = NULL;
-  
-  if(__root == NULL) {
-    __root = new;
-    return;
-  }
-  while(tmp != NULL) {
-    father = tmp;
-    if(tmp->value->ptr >= ptr->ptr) {
-      tmp = tmp->left;
-      pos = LEFT;
-    }
-    else {
-      tmp = tmp->right;
-      pos = RIGHT;
-    }
-  }
-  if(pos == LEFT) father->left = new;
-  else father->right = new;
-}
-
-
-struct _block* __get_exact(void* ptr) {
-  struct _node * tmp = __root;
-  while(tmp != NULL) {
-    if(tmp->value->ptr > (size_t)ptr) tmp = tmp->left;
-    else if(tmp->value->ptr < (size_t)ptr) tmp = tmp->right;
-    else return tmp->value;
-  }
-  return NULL;
-}
-
-
-struct _block* _get_cont_rec(struct _node * node, void* ptr) {
-  if(node == NULL) return NULL;
-  else if(node->value->ptr > (size_t)ptr) return _get_cont_rec(node->left, ptr);
-  else if(node->value->size == 0 && node->value->ptr == (size_t)ptr)
-    return node->value;
-  else if(node->value->ptr+node->value->size > (size_t)ptr) return node->value;
-  else return _get_cont_rec(node->right, ptr);
-}
-
-
-struct _block* __get_cont(void* ptr) {
-  return _get_cont_rec(__root, ptr);
-}
-
-
-void __clean_rec(struct _node * ptr) {
-  if(ptr == NULL) return;
-  __clean_block(ptr->value);
-  __clean_rec(ptr->left);
-  __clean_rec(ptr->right);
-  free(ptr);
-  ptr = NULL;
-}
-
-void __clean_struct() {
-  __clean_rec(__root);
-}
-
-
-void __debug_rec(struct _node * ptr) {
-  if(ptr == NULL) return;
-  __debug_rec(ptr->left);
-  printf("\t\t\t");
-  __print_block(ptr->value);
-  __debug_rec(ptr->right);
-}
-
-void __debug_struct() {
-  printf("\t\t\t------------DEBUG\n");
-  __debug_rec(__root);
-  printf("\t\t\t-----------------\n");
-}
-
diff --git a/src/plugins/e-acsl/tests/bts/oracle/bts1304.res.oracle b/src/plugins/e-acsl/tests/bts/oracle/bts1304.res.oracle
index 360cf3baba62a193287d4e0ede2d35bbbaca3941..8e373e8a1f5834af534dd2197d4bdf7b87164529 100644
--- a/src/plugins/e-acsl/tests/bts/oracle/bts1304.res.oracle
+++ b/src/plugins/e-acsl/tests/bts/oracle/bts1304.res.oracle
@@ -1,4 +1,4 @@
 [e-acsl] beginning translation.
 [e-acsl] translation done in project "e-acsl".
 tests/bts/bts1304.i:23:[value] warning: assertion got status unknown.
-FRAMAC_SHARE/e-acsl/e_acsl.h:34:[value] warning: function e_acsl_assert: precondition got status unknown.
+FRAMAC_SHARE/e-acsl/e_acsl.h:34:[value] warning: function __e_acsl_assert: precondition got status unknown.
diff --git a/src/plugins/e-acsl/tests/bts/oracle/bts1307.res.oracle b/src/plugins/e-acsl/tests/bts/oracle/bts1307.res.oracle
index 26e9e78a8a8dae4a54894ee2a03c17e26d11a19c..480f069a19ae45ba660168338ac7da8d5cb43889 100644
--- a/src/plugins/e-acsl/tests/bts/oracle/bts1307.res.oracle
+++ b/src/plugins/e-acsl/tests/bts/oracle/bts1307.res.oracle
@@ -4,6 +4,6 @@ tests/bts/bts1307.i:11:[e-acsl] warning: approximating a real number by a float
 tests/bts/bts1307.i:23:[e-acsl] warning: approximating a real number by a float
 tests/bts/bts1307.i:23:[e-acsl] warning: approximating a real number by a float
 [e-acsl] translation done in project "e-acsl".
-FRAMAC_SHARE/e-acsl/e_acsl.h:34:[value] warning: function e_acsl_assert: precondition got status unknown.
+FRAMAC_SHARE/e-acsl/e_acsl.h:34:[value] warning: function __e_acsl_assert: precondition got status unknown.
 [value] user error: type long double not implemented. Using double instead
-FRAMAC_SHARE/e-acsl/e_acsl.h:34:[value] warning: function e_acsl_assert: precondition got status invalid.
+FRAMAC_SHARE/e-acsl/e_acsl.h:34:[value] warning: function __e_acsl_assert: precondition got status invalid.
diff --git a/src/plugins/e-acsl/tests/bts/oracle/bts1324.res.oracle b/src/plugins/e-acsl/tests/bts/oracle/bts1324.res.oracle
index d38262de6812ddcc3976738685340153a7a48ad6..2e7694a5190c90c4f931cd94ed5d4ca433afa10e 100644
--- a/src/plugins/e-acsl/tests/bts/oracle/bts1324.res.oracle
+++ b/src/plugins/e-acsl/tests/bts/oracle/bts1324.res.oracle
@@ -1,3 +1,3 @@
 [e-acsl] beginning translation.
 [e-acsl] translation done in project "e-acsl".
-FRAMAC_SHARE/e-acsl/e_acsl.h:34:[value] warning: function e_acsl_assert: precondition got status unknown.
+FRAMAC_SHARE/e-acsl/e_acsl.h:34:[value] warning: function __e_acsl_assert: precondition got status unknown.
diff --git a/src/plugins/e-acsl/tests/bts/oracle/bts1326.res.oracle b/src/plugins/e-acsl/tests/bts/oracle/bts1326.res.oracle
index d38262de6812ddcc3976738685340153a7a48ad6..2e7694a5190c90c4f931cd94ed5d4ca433afa10e 100644
--- a/src/plugins/e-acsl/tests/bts/oracle/bts1326.res.oracle
+++ b/src/plugins/e-acsl/tests/bts/oracle/bts1326.res.oracle
@@ -1,3 +1,3 @@
 [e-acsl] beginning translation.
 [e-acsl] translation done in project "e-acsl".
-FRAMAC_SHARE/e-acsl/e_acsl.h:34:[value] warning: function e_acsl_assert: precondition got status unknown.
+FRAMAC_SHARE/e-acsl/e_acsl.h:34:[value] warning: function __e_acsl_assert: precondition got status unknown.
diff --git a/src/plugins/e-acsl/tests/bts/oracle/bts1390.res.oracle b/src/plugins/e-acsl/tests/bts/oracle/bts1390.res.oracle
index baff7910c0878f8af2e839f0e15a4e563e47b7e8..8a058f7b5ac613a72681bb9da7a575e7beab5360 100644
--- a/src/plugins/e-acsl/tests/bts/oracle/bts1390.res.oracle
+++ b/src/plugins/e-acsl/tests/bts/oracle/bts1390.res.oracle
@@ -1,6 +1,6 @@
 [e-acsl] beginning translation.
 [e-acsl] translation done in project "e-acsl".
-FRAMAC_SHARE/e-acsl/e_acsl.h:34:[value] warning: function e_acsl_assert: precondition got status unknown.
+FRAMAC_SHARE/e-acsl/e_acsl.h:34:[value] warning: function __e_acsl_assert: precondition got status unknown.
 tests/bts/bts1390.c:13:[value] warning: function memchr, behavior not_exists: postcondition got status unknown. (Behavior may be inactive, no reduction performed.)
 tests/bts/bts1390.c:13:[value] warning: function __e_acsl_memchr, behavior not_exists: postcondition got status unknown. (Behavior may be inactive, no reduction performed.)
 tests/bts/bts1390.c:18:[kernel] warning: out of bounds read. assert \valid_read(s);
diff --git a/src/plugins/e-acsl/tests/bts/oracle/bts1399.res.oracle b/src/plugins/e-acsl/tests/bts/oracle/bts1399.res.oracle
index 248043ea3d50bb0b7d7be2b1f433d9823085ffc4..4837b7a5c45c8daeb940a9158fae49104d0689e9 100644
--- a/src/plugins/e-acsl/tests/bts/oracle/bts1399.res.oracle
+++ b/src/plugins/e-acsl/tests/bts/oracle/bts1399.res.oracle
@@ -23,6 +23,6 @@ FRAMAC_SHARE/libc/stdlib.h:177:[e-acsl] warning: E-ACSL construct `\allocate' is
 [e-acsl] translation done in project "e-acsl".
 FRAMAC_SHARE/libc/stdlib.h:163:[value] warning: function __e_acsl_malloc, behavior allocation: postcondition got status unknown. (Behavior may be inactive, no reduction performed.)
 FRAMAC_SHARE/libc/stdlib.h:168:[value] warning: function __e_acsl_malloc, behavior no_allocation: postcondition got status invalid. (Behavior may be inactive, no reduction performed.)
-FRAMAC_SHARE/e-acsl/e_acsl.h:34:[value] warning: function e_acsl_assert: precondition got status unknown.
+FRAMAC_SHARE/e-acsl/e_acsl.h:34:[value] warning: function __e_acsl_assert: precondition got status unknown.
 FRAMAC_SHARE/libc/stdlib.h:178:[value] warning: function __e_acsl_free, behavior deallocation: precondition 'freeable' got status unknown.
 FRAMAC_SHARE/libc/stdlib.h:180:[value] warning: function __e_acsl_free, behavior deallocation: postcondition got status unknown.
diff --git a/src/plugins/e-acsl/tests/bts/oracle/bts1478.res.oracle b/src/plugins/e-acsl/tests/bts/oracle/bts1478.res.oracle
index d38262de6812ddcc3976738685340153a7a48ad6..2e7694a5190c90c4f931cd94ed5d4ca433afa10e 100644
--- a/src/plugins/e-acsl/tests/bts/oracle/bts1478.res.oracle
+++ b/src/plugins/e-acsl/tests/bts/oracle/bts1478.res.oracle
@@ -1,3 +1,3 @@
 [e-acsl] beginning translation.
 [e-acsl] translation done in project "e-acsl".
-FRAMAC_SHARE/e-acsl/e_acsl.h:34:[value] warning: function e_acsl_assert: precondition got status unknown.
+FRAMAC_SHARE/e-acsl/e_acsl.h:34:[value] warning: function __e_acsl_assert: precondition got status unknown.
diff --git a/src/plugins/e-acsl/tests/bts/oracle/bts1700.res.oracle b/src/plugins/e-acsl/tests/bts/oracle/bts1700.res.oracle
index d38262de6812ddcc3976738685340153a7a48ad6..2e7694a5190c90c4f931cd94ed5d4ca433afa10e 100644
--- a/src/plugins/e-acsl/tests/bts/oracle/bts1700.res.oracle
+++ b/src/plugins/e-acsl/tests/bts/oracle/bts1700.res.oracle
@@ -1,3 +1,3 @@
 [e-acsl] beginning translation.
 [e-acsl] translation done in project "e-acsl".
-FRAMAC_SHARE/e-acsl/e_acsl.h:34:[value] warning: function e_acsl_assert: precondition got status unknown.
+FRAMAC_SHARE/e-acsl/e_acsl.h:34:[value] warning: function __e_acsl_assert: precondition got status unknown.
diff --git a/src/plugins/e-acsl/tests/bts/oracle/bts1717.res.oracle b/src/plugins/e-acsl/tests/bts/oracle/bts1717.res.oracle
index d38262de6812ddcc3976738685340153a7a48ad6..2e7694a5190c90c4f931cd94ed5d4ca433afa10e 100644
--- a/src/plugins/e-acsl/tests/bts/oracle/bts1717.res.oracle
+++ b/src/plugins/e-acsl/tests/bts/oracle/bts1717.res.oracle
@@ -1,3 +1,3 @@
 [e-acsl] beginning translation.
 [e-acsl] translation done in project "e-acsl".
-FRAMAC_SHARE/e-acsl/e_acsl.h:34:[value] warning: function e_acsl_assert: precondition got status unknown.
+FRAMAC_SHARE/e-acsl/e_acsl.h:34:[value] warning: function __e_acsl_assert: precondition got status unknown.
diff --git a/src/plugins/e-acsl/tests/bts/oracle/bts1718.res.oracle b/src/plugins/e-acsl/tests/bts/oracle/bts1718.res.oracle
index d38262de6812ddcc3976738685340153a7a48ad6..2e7694a5190c90c4f931cd94ed5d4ca433afa10e 100644
--- a/src/plugins/e-acsl/tests/bts/oracle/bts1718.res.oracle
+++ b/src/plugins/e-acsl/tests/bts/oracle/bts1718.res.oracle
@@ -1,3 +1,3 @@
 [e-acsl] beginning translation.
 [e-acsl] translation done in project "e-acsl".
-FRAMAC_SHARE/e-acsl/e_acsl.h:34:[value] warning: function e_acsl_assert: precondition got status unknown.
+FRAMAC_SHARE/e-acsl/e_acsl.h:34:[value] warning: function __e_acsl_assert: precondition got status unknown.
diff --git a/src/plugins/e-acsl/tests/bts/oracle/bts1837.res.oracle b/src/plugins/e-acsl/tests/bts/oracle/bts1837.res.oracle
index f546eed6f85844aeaf8234a8ec45e3323eb7281f..42f96b384d0c23255fb200f997b8a4f1abc9f599 100644
--- a/src/plugins/e-acsl/tests/bts/oracle/bts1837.res.oracle
+++ b/src/plugins/e-acsl/tests/bts/oracle/bts1837.res.oracle
@@ -1,4 +1,4 @@
 [e-acsl] beginning translation.
 [e-acsl] translation done in project "e-acsl".
-FRAMAC_SHARE/e-acsl/e_acsl.h:34:[value] warning: function e_acsl_assert: precondition got status unknown.
+FRAMAC_SHARE/e-acsl/e_acsl.h:34:[value] warning: function __e_acsl_assert: precondition got status unknown.
 tests/bts/bts1837.i:18:[kernel] warning: signed overflow. assert -2147483648 ≤ i-1;
diff --git a/src/plugins/e-acsl/tests/bts/oracle/gen_bts1304.c b/src/plugins/e-acsl/tests/bts/oracle/gen_bts1304.c
index d408cdb6cd1e3eced0a2bb948052f85bc9ad10bf..41db747839a6f1ba1bbe5775fdae81d8af5f6d1a 100644
--- a/src/plugins/e-acsl/tests/bts/oracle/gen_bts1304.c
+++ b/src/plugins/e-acsl/tests/bts/oracle/gen_bts1304.c
@@ -29,6 +29,7 @@ int main(void)
   int __retres;
   unsigned char buf[sizeof(union msg)];
   int i;
+  __e_acsl_memory_init((int *)0,(char ***)0,8UL);
   __store_block((void *)(buf),16UL);
   i = 0;
   while ((unsigned long)i < sizeof(buf) / (unsigned long)4) {
@@ -39,9 +40,9 @@ int main(void)
   {
     int __e_acsl_initialized;
     __e_acsl_initialized = __initialized((void *)(buf),sizeof(union msg));
-    e_acsl_assert(__e_acsl_initialized,(char *)"Assertion",(char *)"main",
-                  (char *)"\\initialized((union msg *)((unsigned char *)buf))",
-                  23);
+    __e_acsl_assert(__e_acsl_initialized,(char *)"Assertion",(char *)"main",
+                    (char *)"\\initialized((union msg *)((unsigned char *)buf))",
+                    23);
   }
   __retres = 0;
   __delete_block((void *)(buf));
diff --git a/src/plugins/e-acsl/tests/bts/oracle/gen_bts1307.c b/src/plugins/e-acsl/tests/bts/oracle/gen_bts1307.c
index a44795ffb3b48bf8ab8db27c62a58726032ad72c..27ae31be343713e9eb13409fc3d6df612d61749a 100644
--- a/src/plugins/e-acsl/tests/bts/oracle/gen_bts1307.c
+++ b/src/plugins/e-acsl/tests/bts/oracle/gen_bts1307.c
@@ -44,14 +44,14 @@ void __e_acsl_foo(float *Mtmax_in, float *Mwmax, float *Mtmax_out)
     __store_block((void *)(& Mwmax),8UL);
     __store_block((void *)(& Mtmax_out),8UL);
     __e_acsl_valid = __valid((void *)Mtmax_in,sizeof(float));
-    e_acsl_assert(__e_acsl_valid,(char *)"Precondition",(char *)"foo",
-                  (char *)"\\valid(Mtmax_in)",5);
+    __e_acsl_assert(__e_acsl_valid,(char *)"Precondition",(char *)"foo",
+                    (char *)"\\valid(Mtmax_in)",5);
     __e_acsl_valid_2 = __valid((void *)Mwmax,sizeof(float));
-    e_acsl_assert(__e_acsl_valid_2,(char *)"Precondition",(char *)"foo",
-                  (char *)"\\valid(Mwmax)",6);
+    __e_acsl_assert(__e_acsl_valid_2,(char *)"Precondition",(char *)"foo",
+                    (char *)"\\valid(Mwmax)",6);
     __e_acsl_valid_3 = __valid((void *)Mtmax_out,sizeof(float));
-    e_acsl_assert(__e_acsl_valid_3,(char *)"Precondition",(char *)"foo",
-                  (char *)"\\valid(Mtmax_out)",7);
+    __e_acsl_assert(__e_acsl_valid_3,(char *)"Precondition",(char *)"foo",
+                    (char *)"\\valid(Mtmax_out)",7);
     __store_block((void *)(& __e_acsl_at_3),8UL);
     __e_acsl_at_3 = Mwmax;
     __store_block((void *)(& __e_acsl_at_2),8UL);
@@ -65,20 +65,20 @@ void __e_acsl_foo(float *Mtmax_in, float *Mwmax, float *Mtmax_out)
     int __e_acsl_valid_read_2;
     int __e_acsl_valid_read_3;
     __e_acsl_valid_read = __valid_read((void *)__e_acsl_at_3,sizeof(float));
-    e_acsl_assert(__e_acsl_valid_read,(char *)"RTE",(char *)"foo",
-                  (char *)"mem_access: \\valid_read(__e_acsl_at_3)",11);
+    __e_acsl_assert(__e_acsl_valid_read,(char *)"RTE",(char *)"foo",
+                    (char *)"mem_access: \\valid_read(__e_acsl_at_3)",11);
     __e_acsl_valid_read_2 = __valid_read((void *)__e_acsl_at_2,sizeof(float));
-    e_acsl_assert(__e_acsl_valid_read_2,(char *)"RTE",(char *)"foo",
-                  (char *)"mem_access: \\valid_read(__e_acsl_at_2)",11);
+    __e_acsl_assert(__e_acsl_valid_read_2,(char *)"RTE",(char *)"foo",
+                    (char *)"mem_access: \\valid_read(__e_acsl_at_2)",11);
     __e_acsl_valid_read_3 = __valid_read((void *)__e_acsl_at,sizeof(float));
-    e_acsl_assert(__e_acsl_valid_read_3,(char *)"RTE",(char *)"foo",
-                  (char *)"mem_access: \\valid_read(__e_acsl_at)",11);
-    e_acsl_assert(*__e_acsl_at == *__e_acsl_at_2 + (long double)((long double)5 - 
-                                                                 ((long double)(
-                                                                  5 / 80) * *__e_acsl_at_3) * 0.4),
-                  (char *)"Postcondition",(char *)"foo",
-                  (char *)"*\\old(Mtmax_out) == *\\old(Mtmax_in)+(5-((5/80)**\\old(Mwmax))*0.4)",
-                  11);
+    __e_acsl_assert(__e_acsl_valid_read_3,(char *)"RTE",(char *)"foo",
+                    (char *)"mem_access: \\valid_read(__e_acsl_at)",11);
+    __e_acsl_assert(*__e_acsl_at == *__e_acsl_at_2 + (long double)((long double)5 - 
+                                                                   ((long double)(
+                                                                    5 / 80) * *__e_acsl_at_3) * 0.4),
+                    (char *)"Postcondition",(char *)"foo",
+                    (char *)"*\\old(Mtmax_out) == *\\old(Mtmax_in)+(5-((5/80)**\\old(Mwmax))*0.4)",
+                    11);
     __delete_block((void *)(& Mtmax_in));
     __delete_block((void *)(& Mwmax));
     __delete_block((void *)(& Mtmax_out));
@@ -137,14 +137,14 @@ void __e_acsl_bar(float *Mtmin_in, float *Mwmin, float *Mtmin_out)
     __store_block((void *)(& Mwmin),8UL);
     __store_block((void *)(& Mtmin_out),8UL);
     __e_acsl_valid = __valid((void *)Mtmin_in,sizeof(float));
-    e_acsl_assert(__e_acsl_valid,(char *)"Precondition",(char *)"bar",
-                  (char *)"\\valid(Mtmin_in)",17);
+    __e_acsl_assert(__e_acsl_valid,(char *)"Precondition",(char *)"bar",
+                    (char *)"\\valid(Mtmin_in)",17);
     __e_acsl_valid_2 = __valid((void *)Mwmin,sizeof(float));
-    e_acsl_assert(__e_acsl_valid_2,(char *)"Precondition",(char *)"bar",
-                  (char *)"\\valid(Mwmin)",18);
+    __e_acsl_assert(__e_acsl_valid_2,(char *)"Precondition",(char *)"bar",
+                    (char *)"\\valid(Mwmin)",18);
     __e_acsl_valid_3 = __valid((void *)Mtmin_out,sizeof(float));
-    e_acsl_assert(__e_acsl_valid_3,(char *)"Precondition",(char *)"bar",
-                  (char *)"\\valid(Mtmin_out)",19);
+    __e_acsl_assert(__e_acsl_valid_3,(char *)"Precondition",(char *)"bar",
+                    (char *)"\\valid(Mtmin_out)",19);
     __store_block((void *)(& __e_acsl_at_6),8UL);
     __e_acsl_at_6 = Mwmin;
     __store_block((void *)(& __e_acsl_at_5),8UL);
@@ -165,22 +165,22 @@ void __e_acsl_bar(float *Mtmin_in, float *Mwmin, float *Mtmin_out)
     int __e_acsl_and;
     int __e_acsl_if;
     __e_acsl_valid_read = __valid_read((void *)__e_acsl_at_2,sizeof(float));
-    e_acsl_assert(__e_acsl_valid_read,(char *)"RTE",(char *)"bar",
-                  (char *)"mem_access: \\valid_read(__e_acsl_at_2)",23);
+    __e_acsl_assert(__e_acsl_valid_read,(char *)"RTE",(char *)"bar",
+                    (char *)"mem_access: \\valid_read(__e_acsl_at_2)",23);
     __e_acsl_valid_read_2 = __valid_read((void *)__e_acsl_at,sizeof(float));
-    e_acsl_assert(__e_acsl_valid_read_2,(char *)"RTE",(char *)"bar",
-                  (char *)"mem_access: \\valid_read(__e_acsl_at)",23);
+    __e_acsl_assert(__e_acsl_valid_read_2,(char *)"RTE",(char *)"bar",
+                    (char *)"mem_access: \\valid_read(__e_acsl_at)",23);
     if (*__e_acsl_at == *__e_acsl_at_2) {
       int __e_acsl_valid_read_3;
       int __e_acsl_valid_read_4;
       __e_acsl_valid_read_3 = __valid_read((void *)__e_acsl_at_4,
                                            sizeof(float));
-      e_acsl_assert(__e_acsl_valid_read_3,(char *)"RTE",(char *)"bar",
-                    (char *)"mem_access: \\valid_read(__e_acsl_at_4)",23);
+      __e_acsl_assert(__e_acsl_valid_read_3,(char *)"RTE",(char *)"bar",
+                      (char *)"mem_access: \\valid_read(__e_acsl_at_4)",23);
       __e_acsl_valid_read_4 = __valid_read((void *)__e_acsl_at_3,
                                            sizeof(float));
-      e_acsl_assert(__e_acsl_valid_read_4,(char *)"RTE",(char *)"bar",
-                    (char *)"mem_access: \\valid_read(__e_acsl_at_3)",23);
+      __e_acsl_assert(__e_acsl_valid_read_4,(char *)"RTE",(char *)"bar",
+                      (char *)"mem_access: \\valid_read(__e_acsl_at_3)",23);
       __e_acsl_and = *__e_acsl_at_3 < 0.85 * *__e_acsl_at_4;
     }
     else __e_acsl_and = 0;
@@ -188,21 +188,21 @@ void __e_acsl_bar(float *Mtmin_in, float *Mwmin, float *Mtmin_out)
       int __e_acsl_valid_read_5;
       __e_acsl_valid_read_5 = __valid_read((void *)__e_acsl_at_5,
                                            sizeof(float));
-      e_acsl_assert(__e_acsl_valid_read_5,(char *)"RTE",(char *)"bar",
-                    (char *)"mem_access: \\valid_read(__e_acsl_at_5)",23);
+      __e_acsl_assert(__e_acsl_valid_read_5,(char *)"RTE",(char *)"bar",
+                      (char *)"mem_access: \\valid_read(__e_acsl_at_5)",23);
       __e_acsl_if = *__e_acsl_at_5 != 0.;
     }
     else {
       int __e_acsl_valid_read_6;
       __e_acsl_valid_read_6 = __valid_read((void *)__e_acsl_at_6,
                                            sizeof(float));
-      e_acsl_assert(__e_acsl_valid_read_6,(char *)"RTE",(char *)"bar",
-                    (char *)"mem_access: \\valid_read(__e_acsl_at_6)",23);
+      __e_acsl_assert(__e_acsl_valid_read_6,(char *)"RTE",(char *)"bar",
+                      (char *)"mem_access: \\valid_read(__e_acsl_at_6)",23);
       __e_acsl_if = 0.85 * *__e_acsl_at_6 != 0.;
     }
-    e_acsl_assert(__e_acsl_if,(char *)"Postcondition",(char *)"bar",
-                  (char *)"*\\old(Mtmin_out) == *\\old(Mtmin_in) < 0.85**\\old(Mwmin)?\n  *\\old(Mtmin_in) != 0.:\n  0.85**\\old(Mwmin) != 0.",
-                  23);
+    __e_acsl_assert(__e_acsl_if,(char *)"Postcondition",(char *)"bar",
+                    (char *)"*\\old(Mtmin_out) == *\\old(Mtmin_in) < 0.85**\\old(Mwmin)?\n  *\\old(Mtmin_in) != 0.:\n  0.85**\\old(Mwmin) != 0.",
+                    23);
     __delete_block((void *)(& Mtmin_in));
     __delete_block((void *)(& Mwmin));
     __delete_block((void *)(& Mtmin_out));
@@ -216,6 +216,7 @@ int main(void)
   float f;
   float g;
   float h;
+  __e_acsl_memory_init((int *)0,(char ***)0,8UL);
   __store_block((void *)(& h),4UL);
   __store_block((void *)(& g),4UL);
   __store_block((void *)(& f),4UL);
diff --git a/src/plugins/e-acsl/tests/bts/oracle/gen_bts1324.c b/src/plugins/e-acsl/tests/bts/oracle/gen_bts1324.c
index 0fa1346490e6015cf0a6052c45a41e8acbd4df65..e218608d3258d688d8ecedf5701fc8b1f8ca410f 100644
--- a/src/plugins/e-acsl/tests/bts/oracle/gen_bts1324.c
+++ b/src/plugins/e-acsl/tests/bts/oracle/gen_bts1324.c
@@ -45,13 +45,13 @@ int __e_acsl_sorted(int *t, int n)
         int __e_acsl_valid_read_2;
         __e_acsl_valid_read = __valid_read((void *)(t + __e_acsl_i),
                                            sizeof(int));
-        e_acsl_assert(__e_acsl_valid_read,(char *)"RTE",(char *)"sorted",
-                      (char *)"mem_access: \\valid_read(t+__e_acsl_i)",6);
+        __e_acsl_assert(__e_acsl_valid_read,(char *)"RTE",(char *)"sorted",
+                        (char *)"mem_access: \\valid_read(t+__e_acsl_i)",6);
         __e_acsl_valid_read_2 = __valid_read((void *)(t + ((long)__e_acsl_i - (long)1)),
                                              sizeof(int));
-        e_acsl_assert(__e_acsl_valid_read_2,(char *)"RTE",(char *)"sorted",
-                      (char *)"mem_access: \\valid_read(t+(long)((long)__e_acsl_i-1))",
-                      6);
+        __e_acsl_assert(__e_acsl_valid_read_2,(char *)"RTE",(char *)"sorted",
+                        (char *)"mem_access: \\valid_read(t+(long)((long)__e_acsl_i-1))",
+                        6);
         if (*(t + ((long)__e_acsl_i - (long)1)) <= *(t + __e_acsl_i)) 
           ;
         else {
@@ -69,9 +69,10 @@ int __e_acsl_sorted(int *t, int n)
     int __e_acsl_implies;
     if (! __e_acsl_at) __e_acsl_implies = 1;
     else __e_acsl_implies = __retres == 1;
-    e_acsl_assert(__e_acsl_implies,(char *)"Postcondition",(char *)"sorted",
-                  (char *)"\\old(\\forall int i; 0 < i < n ==> *(t+(i-1)) <= *(t+i)) ==> \\result == 1",
-                  7);
+    __e_acsl_assert(__e_acsl_implies,(char *)"Postcondition",
+                    (char *)"sorted",
+                    (char *)"\\old(\\forall int i; 0 < i < n ==> *(t+(i-1)) <= *(t+i)) ==> \\result == 1",
+                    7);
     __delete_block((void *)(& t));
     return __retres;
   }
@@ -82,6 +83,7 @@ int main(void)
   int __retres;
   int t[7];
   int n;
+  __e_acsl_memory_init((int *)0,(char ***)0,8UL);
   __store_block((void *)(t),28UL);
   __initialize((void *)(t),sizeof(int));
   t[0] = 1;
@@ -99,8 +101,8 @@ int main(void)
   t[6] = 7;
   n = __e_acsl_sorted(t,7);
   /*@ assert n ≡ 1; */
-  e_acsl_assert(n == 1,(char *)"Assertion",(char *)"main",(char *)"n == 1",
-                23);
+  __e_acsl_assert(n == 1,(char *)"Assertion",(char *)"main",(char *)"n == 1",
+                  23);
   __retres = 0;
   __delete_block((void *)(t));
   __e_acsl_memory_clean();
diff --git a/src/plugins/e-acsl/tests/bts/oracle/gen_bts1326.c b/src/plugins/e-acsl/tests/bts/oracle/gen_bts1326.c
index 479e7abf3f5c0b1495d3e6b236509d101da85dad..67e2c8d506aa3b139cf16b61737262d73251e61d 100644
--- a/src/plugins/e-acsl/tests/bts/oracle/gen_bts1326.c
+++ b/src/plugins/e-acsl/tests/bts/oracle/gen_bts1326.c
@@ -55,39 +55,43 @@ void __e_acsl_atp_NORMAL_computeAverageAccel(ArrayInt *Accel,
     int __e_acsl_valid_read_5;
     int __e_acsl_valid_read_6;
     __e_acsl_valid_read = __valid_read((void *)(*__e_acsl_at_6),sizeof(int));
-    e_acsl_assert(__e_acsl_valid_read,(char *)"RTE",
-                  (char *)"atp_NORMAL_computeAverageAccel",
-                  (char *)"mem_access: \\valid_read((int *)*__e_acsl_at_6)",
-                  8);
+    __e_acsl_assert(__e_acsl_valid_read,(char *)"RTE",
+                    (char *)"atp_NORMAL_computeAverageAccel",
+                    (char *)"mem_access: \\valid_read((int *)*__e_acsl_at_6)",
+                    8);
     __e_acsl_valid_read_2 = __valid_read((void *)(& (*__e_acsl_at_5)[1]),
                                          sizeof(int));
-    e_acsl_assert(__e_acsl_valid_read_2,(char *)"RTE",
-                  (char *)"atp_NORMAL_computeAverageAccel",
-                  (char *)"mem_access: \\valid_read(&(*__e_acsl_at_5)[1])",8);
+    __e_acsl_assert(__e_acsl_valid_read_2,(char *)"RTE",
+                    (char *)"atp_NORMAL_computeAverageAccel",
+                    (char *)"mem_access: \\valid_read(&(*__e_acsl_at_5)[1])",
+                    8);
     __e_acsl_valid_read_3 = __valid_read((void *)(& (*__e_acsl_at_4)[2]),
                                          sizeof(int));
-    e_acsl_assert(__e_acsl_valid_read_3,(char *)"RTE",
-                  (char *)"atp_NORMAL_computeAverageAccel",
-                  (char *)"mem_access: \\valid_read(&(*__e_acsl_at_4)[2])",8);
+    __e_acsl_assert(__e_acsl_valid_read_3,(char *)"RTE",
+                    (char *)"atp_NORMAL_computeAverageAccel",
+                    (char *)"mem_access: \\valid_read(&(*__e_acsl_at_4)[2])",
+                    8);
     __e_acsl_valid_read_4 = __valid_read((void *)(& (*__e_acsl_at_3)[3]),
                                          sizeof(int));
-    e_acsl_assert(__e_acsl_valid_read_4,(char *)"RTE",
-                  (char *)"atp_NORMAL_computeAverageAccel",
-                  (char *)"mem_access: \\valid_read(&(*__e_acsl_at_3)[3])",8);
+    __e_acsl_assert(__e_acsl_valid_read_4,(char *)"RTE",
+                    (char *)"atp_NORMAL_computeAverageAccel",
+                    (char *)"mem_access: \\valid_read(&(*__e_acsl_at_3)[3])",
+                    8);
     __e_acsl_valid_read_5 = __valid_read((void *)(& (*__e_acsl_at_2)[4]),
                                          sizeof(int));
-    e_acsl_assert(__e_acsl_valid_read_5,(char *)"RTE",
-                  (char *)"atp_NORMAL_computeAverageAccel",
-                  (char *)"mem_access: \\valid_read(&(*__e_acsl_at_2)[4])",8);
+    __e_acsl_assert(__e_acsl_valid_read_5,(char *)"RTE",
+                    (char *)"atp_NORMAL_computeAverageAccel",
+                    (char *)"mem_access: \\valid_read(&(*__e_acsl_at_2)[4])",
+                    8);
     __e_acsl_valid_read_6 = __valid_read((void *)__e_acsl_at,sizeof(int));
-    e_acsl_assert(__e_acsl_valid_read_6,(char *)"RTE",
-                  (char *)"atp_NORMAL_computeAverageAccel",
-                  (char *)"mem_access: \\valid_read(__e_acsl_at)",8);
-    e_acsl_assert(*__e_acsl_at == (((((long)(*__e_acsl_at_2)[4] + (long)(*__e_acsl_at_3)[3]) + (long)(*__e_acsl_at_4)[2]) + (long)(*__e_acsl_at_5)[1]) + (long)(*__e_acsl_at_6)[0]) / (long)5,
-                  (char *)"Postcondition",
-                  (char *)"atp_NORMAL_computeAverageAccel",
-                  (char *)"*\\old(AverageAccel) ==\n(((((*\\old(Accel))[4]+(*\\old(Accel))[3])+(*\\old(Accel))[2])+(*\\old(Accel))[1])+(*\n  \\old(Accel))[0])/5",
-                  8);
+    __e_acsl_assert(__e_acsl_valid_read_6,(char *)"RTE",
+                    (char *)"atp_NORMAL_computeAverageAccel",
+                    (char *)"mem_access: \\valid_read(__e_acsl_at)",8);
+    __e_acsl_assert(*__e_acsl_at == (((((long)(*__e_acsl_at_2)[4] + (long)(*__e_acsl_at_3)[3]) + (long)(*__e_acsl_at_4)[2]) + (long)(*__e_acsl_at_5)[1]) + (long)(*__e_acsl_at_6)[0]) / (long)5,
+                    (char *)"Postcondition",
+                    (char *)"atp_NORMAL_computeAverageAccel",
+                    (char *)"*\\old(AverageAccel) ==\n(((((*\\old(Accel))[4]+(*\\old(Accel))[3])+(*\\old(Accel))[2])+(*\\old(Accel))[1])+(*\n  \\old(Accel))[0])/5",
+                    8);
     __delete_block((void *)(& Accel));
     __delete_block((void *)(& AverageAccel));
     return;
@@ -99,6 +103,7 @@ int main(void)
   int __retres;
   ArrayInt Accel;
   int av;
+  __e_acsl_memory_init((int *)0,(char ***)0,8UL);
   __store_block((void *)(& av),4UL);
   __store_block((void *)(Accel),20UL);
   __initialize((void *)(Accel),sizeof(int));
diff --git a/src/plugins/e-acsl/tests/bts/oracle/gen_bts1390.c b/src/plugins/e-acsl/tests/bts/oracle/gen_bts1390.c
index c2fd12eba03a641cdc46388ced02709888b4e23c..028b1f687bf38263f2439fe55300d7fd763088c9 100644
--- a/src/plugins/e-acsl/tests/bts/oracle/gen_bts1390.c
+++ b/src/plugins/e-acsl/tests/bts/oracle/gen_bts1390.c
@@ -74,9 +74,9 @@ void *__e_acsl_memchr(void const *buf, int c, size_t n)
         int __e_acsl_valid_read_3;
         __e_acsl_valid_read_3 = __valid_read((void *)((char *)buf + __e_acsl_k),
                                              sizeof(char));
-        e_acsl_assert(__e_acsl_valid_read_3,(char *)"RTE",(char *)"memchr",
-                      (char *)"mem_access: \\valid_read((char *)buf+__e_acsl_k)",
-                      12);
+        __e_acsl_assert(__e_acsl_valid_read_3,(char *)"RTE",(char *)"memchr",
+                        (char *)"mem_access: \\valid_read((char *)buf+__e_acsl_k)",
+                        12);
         if ((int)*((char *)buf + __e_acsl_k) != c) ;
         else {
           __e_acsl_forall_2 = 0;
@@ -102,9 +102,9 @@ void *__e_acsl_memchr(void const *buf, int c, size_t n)
         int __e_acsl_valid_read;
         __e_acsl_valid_read = __valid_read((void *)((char *)buf + __e_acsl_i),
                                            sizeof(char));
-        e_acsl_assert(__e_acsl_valid_read,(char *)"RTE",(char *)"memchr",
-                      (char *)"mem_access: \\valid_read((char *)buf+__e_acsl_i)",
-                      8);
+        __e_acsl_assert(__e_acsl_valid_read,(char *)"RTE",(char *)"memchr",
+                        (char *)"mem_access: \\valid_read((char *)buf+__e_acsl_i)",
+                        8);
         if (! ((int)*((char *)buf + __e_acsl_i) == c)) ;
         else {
           __e_acsl_exists = 1;
@@ -136,9 +136,10 @@ void *__e_acsl_memchr(void const *buf, int c, size_t n)
           int __e_acsl_valid_read_2;
           __e_acsl_valid_read_2 = __valid_read((void *)((char *)__e_acsl_at_2 + __e_acsl_j),
                                                sizeof(char));
-          e_acsl_assert(__e_acsl_valid_read_2,(char *)"RTE",(char *)"memchr",
-                        (char *)"mem_access: \\valid_read((char *)__e_acsl_at_2+__e_acsl_j)",
-                        10);
+          __e_acsl_assert(__e_acsl_valid_read_2,(char *)"RTE",
+                          (char *)"memchr",
+                          (char *)"mem_access: \\valid_read((char *)__e_acsl_at_2+__e_acsl_j)",
+                          10);
           if ((int)*((char *)__e_acsl_at_2 + __e_acsl_j) != __e_acsl_at_3) 
             ;
           else {
@@ -151,38 +152,40 @@ void *__e_acsl_memchr(void const *buf, int c, size_t n)
       e_acsl_end_loop2: ;
       __e_acsl_implies = __e_acsl_forall;
     }
-    e_acsl_assert(__e_acsl_implies,(char *)"Postcondition",(char *)"memchr",
-                  (char *)"\\old(\\exists integer i; 0 <= i < n && (int)*((char *)buf+i) == c) ==>\n(\\forall int j;\n   0 <= j < \\offset((char *)\\result) ==>\n   (int)*((char *)\\old(buf)+j) != \\old(c))",
-                  10);
+    __e_acsl_assert(__e_acsl_implies,(char *)"Postcondition",
+                    (char *)"memchr",
+                    (char *)"\\old(\\exists integer i; 0 <= i < n && (int)*((char *)buf+i) == c) ==>\n(\\forall int j;\n   0 <= j < \\offset((char *)\\result) ==>\n   (int)*((char *)\\old(buf)+j) != \\old(c))",
+                    10);
     if (! __e_acsl_at_4) __e_acsl_implies_2 = 1;
     else __e_acsl_implies_2 = __retres == (void *)0;
-    e_acsl_assert(__e_acsl_implies_2,(char *)"Postcondition",
-                  (char *)"memchr",
-                  (char *)"\\old(\\forall integer k; 0 <= k < n ==> (int)*((char *)buf+k) != c) ==>\n\\result == (void *)0",
-                  13);
+    __e_acsl_assert(__e_acsl_implies_2,(char *)"Postcondition",
+                    (char *)"memchr",
+                    (char *)"\\old(\\forall integer k; 0 <= k < n ==> (int)*((char *)buf+k) != c) ==>\n\\result == (void *)0",
+                    13);
     __delete_block((void *)(& buf));
     __delete_block((void *)(& __retres));
     return __retres;
   }
 }
 
-void __e_acsl_memory_init(void)
+void __e_acsl_globals_init(void)
 {
   __e_acsl_literal_string = "toto";
   __store_block((void *)__e_acsl_literal_string,sizeof("toto"));
   __full_init((void *)__e_acsl_literal_string);
-  __literal_string((void *)__e_acsl_literal_string);
+  __readonly((void *)__e_acsl_literal_string);
   __e_acsl_literal_string_2 = "tata";
   __store_block((void *)__e_acsl_literal_string_2,sizeof("tata"));
   __full_init((void *)__e_acsl_literal_string_2);
-  __literal_string((void *)__e_acsl_literal_string_2);
+  __readonly((void *)__e_acsl_literal_string_2);
   return;
 }
 
 int main(void)
 {
   int __retres;
-  __e_acsl_memory_init();
+  __e_acsl_memory_init((int *)0,(char ***)0,8UL);
+  __e_acsl_globals_init();
   __e_acsl_memchr((void const *)__e_acsl_literal_string,'o',(unsigned long)4);
   __e_acsl_memchr((void const *)__e_acsl_literal_string_2,'o',
                   (unsigned long)4);
diff --git a/src/plugins/e-acsl/tests/bts/oracle/gen_bts1399.c b/src/plugins/e-acsl/tests/bts/oracle/gen_bts1399.c
index 24dee898ba03d8a30f0bcc7871b03902377273af..8a94ba5b38d6586721c144c19a04cfc5622f46d5 100644
--- a/src/plugins/e-acsl/tests/bts/oracle/gen_bts1399.c
+++ b/src/plugins/e-acsl/tests/bts/oracle/gen_bts1399.c
@@ -9,6 +9,7 @@ int main(void)
 {
   int __retres;
   spongeState *state;
+  __e_acsl_memory_init((int *)0,(char ***)0,8UL);
   __store_block((void *)(& state),8UL);
   __full_init((void *)(& state));
   state = (spongeState *)__e_acsl_malloc(sizeof(spongeState));
@@ -20,15 +21,17 @@ int main(void)
     int __e_acsl_initialized;
     __e_acsl_valid_read = __valid_read((void *)(& state->bitsInQueue),
                                        sizeof(unsigned int));
-    e_acsl_assert(__e_acsl_valid_read,(char *)"RTE",(char *)"main",
-                  (char *)"mem_access: \\valid_read(&state->bitsInQueue)",22);
+    __e_acsl_assert(__e_acsl_valid_read,(char *)"RTE",(char *)"main",
+                    (char *)"mem_access: \\valid_read(&state->bitsInQueue)",
+                    22);
     __e_acsl_initialized = __initialized((void *)(& state->dataQueue[
                                          state->bitsInQueue / (unsigned int)8]),
                                          sizeof(unsigned char __attribute__((
                                          __aligned__(32)))));
-    e_acsl_assert(! __e_acsl_initialized,(char *)"Assertion",(char *)"main",
-                  (char *)"!\\initialized(&state->dataQueue[state->bitsInQueue/8])",
-                  22);
+    __e_acsl_assert(! __e_acsl_initialized,(char *)"Assertion",
+                    (char *)"main",
+                    (char *)"!\\initialized(&state->dataQueue[state->bitsInQueue/8])",
+                    22);
   }
   __e_acsl_free((void *)state);
   __retres = 0;
diff --git a/src/plugins/e-acsl/tests/bts/oracle/gen_bts1478.c b/src/plugins/e-acsl/tests/bts/oracle/gen_bts1478.c
index b1c9a806cfb8b7e224bf92a9500887982221ca6c..b36de9b0ede568e37d44f07e8accb1cbe45b91b5 100644
--- a/src/plugins/e-acsl/tests/bts/oracle/gen_bts1478.c
+++ b/src/plugins/e-acsl/tests/bts/oracle/gen_bts1478.c
@@ -20,19 +20,19 @@ void __e_acsl_loop(void)
 {
   {
     int __e_acsl_valid;
-    e_acsl_assert(global_i == 0,(char *)"Precondition",(char *)"loop",
-                  (char *)"global_i == 0",9);
+    __e_acsl_assert(global_i == 0,(char *)"Precondition",(char *)"loop",
+                    (char *)"global_i == 0",9);
     __e_acsl_valid = __valid((void *)global_i_ptr,sizeof(int));
-    e_acsl_assert(__e_acsl_valid,(char *)"Precondition",(char *)"loop",
-                  (char *)"\\valid(global_i_ptr)",10);
-    e_acsl_assert(global_i_ptr == & global_i,(char *)"Precondition",
-                  (char *)"loop",(char *)"global_i_ptr == &global_i",11);
+    __e_acsl_assert(__e_acsl_valid,(char *)"Precondition",(char *)"loop",
+                    (char *)"\\valid(global_i_ptr)",10);
+    __e_acsl_assert(global_i_ptr == & global_i,(char *)"Precondition",
+                    (char *)"loop",(char *)"global_i_ptr == &global_i",11);
     loop();
   }
   return;
 }
 
-void __e_acsl_memory_init(void)
+void __e_acsl_globals_init(void)
 {
   __store_block((void *)(& global_i_ptr),8UL);
   __full_init((void *)(& global_i_ptr));
@@ -44,7 +44,8 @@ void __e_acsl_memory_init(void)
 int main(void)
 {
   int __retres;
-  __e_acsl_memory_init();
+  __e_acsl_memory_init((int *)0,(char ***)0,8UL);
+  __e_acsl_globals_init();
   __e_acsl_loop();
   __retres = 0;
   __delete_block((void *)(& global_i_ptr));
diff --git a/src/plugins/e-acsl/tests/bts/oracle/gen_bts1700.c b/src/plugins/e-acsl/tests/bts/oracle/gen_bts1700.c
index 46ef38c78ca070c217202b9b069fe67e2ca5fcff..1f7dcd91b0373d4e3f956ba15596cf84491d3257 100644
--- a/src/plugins/e-acsl/tests/bts/oracle/gen_bts1700.c
+++ b/src/plugins/e-acsl/tests/bts/oracle/gen_bts1700.c
@@ -7,14 +7,15 @@ int main(void)
   int __retres;
   struct toto s;
   struct toto *p;
+  __e_acsl_memory_init((int *)0,(char ***)0,8UL);
   __store_block((void *)(& p),8UL);
   __store_block((void *)(& s),0UL);
   /*@ assert \valid(&s); */
   {
     int __e_acsl_valid;
     __e_acsl_valid = __valid((void *)(& s),sizeof(struct toto));
-    e_acsl_assert(__e_acsl_valid,(char *)"Assertion",(char *)"main",
-                  (char *)"\\valid(&s)",9);
+    __e_acsl_assert(__e_acsl_valid,(char *)"Assertion",(char *)"main",
+                    (char *)"\\valid(&s)",9);
   }
   __full_init((void *)(& p));
   p = & s;
@@ -29,8 +30,8 @@ int main(void)
       __e_acsl_and = __e_acsl_valid_2;
     }
     else __e_acsl_and = 0;
-    e_acsl_assert(__e_acsl_and,(char *)"Assertion",(char *)"main",
-                  (char *)"\\valid(p)",12);
+    __e_acsl_assert(__e_acsl_and,(char *)"Assertion",(char *)"main",
+                    (char *)"\\valid(p)",12);
   }
   __retres = 0;
   __delete_block((void *)(& p));
diff --git a/src/plugins/e-acsl/tests/bts/oracle/gen_bts1717.c b/src/plugins/e-acsl/tests/bts/oracle/gen_bts1717.c
index 6972e4b71112b5436d9a8494cfc767f26cf85b9d..f925f71a738d55176ad79545741961ac8e82735d 100644
--- a/src/plugins/e-acsl/tests/bts/oracle/gen_bts1717.c
+++ b/src/plugins/e-acsl/tests/bts/oracle/gen_bts1717.c
@@ -4,6 +4,7 @@ int main(void)
   int __retres;
   int a;
   int *p;
+  __e_acsl_memory_init((int *)0,(char ***)0,8UL);
   __store_block((void *)(& p),8UL);
   __store_block((void *)(& a),4UL);
   __full_init((void *)(& a));
@@ -21,8 +22,8 @@ int main(void)
         __e_acsl_and = __e_acsl_valid;
       }
       else __e_acsl_and = 0;
-      e_acsl_assert(__e_acsl_and,(char *)"Assertion",(char *)"main",
-                    (char *)"\\valid(p)",10);
+      __e_acsl_assert(__e_acsl_and,(char *)"Assertion",(char *)"main",
+                      (char *)"\\valid(p)",10);
     }
     __retres = 0;
     goto return_label;
diff --git a/src/plugins/e-acsl/tests/bts/oracle/gen_bts1718.c b/src/plugins/e-acsl/tests/bts/oracle/gen_bts1718.c
index fc8d950d02102730b9d03e2becd77f205580c7d4..947d3ff3898b3cf86070b9a18fabf87284478ebe 100644
--- a/src/plugins/e-acsl/tests/bts/oracle/gen_bts1718.c
+++ b/src/plugins/e-acsl/tests/bts/oracle/gen_bts1718.c
@@ -4,6 +4,7 @@ int main(void)
   int __retres;
   int a;
   int *p;
+  __e_acsl_memory_init((int *)0,(char ***)0,8UL);
   __store_block((void *)(& p),8UL);
   __store_block((void *)(& a),4UL);
   __full_init((void *)(& a));
@@ -21,8 +22,8 @@ int main(void)
         __e_acsl_and = __e_acsl_valid;
       }
       else __e_acsl_and = 0;
-      e_acsl_assert(__e_acsl_and,(char *)"Assertion",(char *)"main",
-                    (char *)"\\valid(p)",13);
+      __e_acsl_assert(__e_acsl_and,(char *)"Assertion",(char *)"main",
+                      (char *)"\\valid(p)",13);
     }
     __retres = 0;
     goto return_label;
diff --git a/src/plugins/e-acsl/tests/bts/oracle/gen_bts1837.c b/src/plugins/e-acsl/tests/bts/oracle/gen_bts1837.c
index d0c6085d6e45ffd3663ce4c99b754c51516ccacd..cfc0d20a49646971cbae0e15edb15e70d28c7c08 100644
--- a/src/plugins/e-acsl/tests/bts/oracle/gen_bts1837.c
+++ b/src/plugins/e-acsl/tests/bts/oracle/gen_bts1837.c
@@ -18,8 +18,8 @@ int f(void)
   {
     int __e_acsl_valid_read;
     __e_acsl_valid_read = __valid_read((void *)S,sizeof(char));
-    e_acsl_assert(__e_acsl_valid_read,(char *)"Assertion",(char *)"f",
-                  (char *)"\\valid_read(S)",10);
+    __e_acsl_assert(__e_acsl_valid_read,(char *)"Assertion",(char *)"f",
+                    (char *)"\\valid_read(S)",10);
   }
   /*@ assert \valid_read(s1); */
   {
@@ -32,8 +32,8 @@ int f(void)
       __e_acsl_and = __e_acsl_valid_read_2;
     }
     else __e_acsl_and = 0;
-    e_acsl_assert(__e_acsl_and,(char *)"Assertion",(char *)"f",
-                  (char *)"\\valid_read(s1)",11);
+    __e_acsl_assert(__e_acsl_and,(char *)"Assertion",(char *)"f",
+                    (char *)"\\valid_read(s1)",11);
   }
   /*@ assert \valid_read(s2); */
   {
@@ -46,8 +46,8 @@ int f(void)
       __e_acsl_and_2 = __e_acsl_valid_read_3;
     }
     else __e_acsl_and_2 = 0;
-    e_acsl_assert(__e_acsl_and_2,(char *)"Assertion",(char *)"f",
-                  (char *)"\\valid_read(s2)",12);
+    __e_acsl_assert(__e_acsl_and_2,(char *)"Assertion",(char *)"f",
+                    (char *)"\\valid_read(s2)",12);
   }
   __retres = 0;
   __delete_block((void *)(& s2));
@@ -55,20 +55,20 @@ int f(void)
   return __retres;
 }
 
-void __e_acsl_memory_init(void)
+void __e_acsl_globals_init(void)
 {
   __e_acsl_literal_string_3 = "toto";
   __store_block((void *)__e_acsl_literal_string_3,sizeof("toto"));
   __full_init((void *)__e_acsl_literal_string_3);
-  __literal_string((void *)__e_acsl_literal_string_3);
+  __readonly((void *)__e_acsl_literal_string_3);
   __e_acsl_literal_string = "foo";
   __store_block((void *)__e_acsl_literal_string,sizeof("foo"));
   __full_init((void *)__e_acsl_literal_string);
-  __literal_string((void *)__e_acsl_literal_string);
+  __readonly((void *)__e_acsl_literal_string);
   __e_acsl_literal_string_2 = "bar";
   __store_block((void *)__e_acsl_literal_string_2,sizeof("bar"));
   __full_init((void *)__e_acsl_literal_string_2);
-  __literal_string((void *)__e_acsl_literal_string_2);
+  __readonly((void *)__e_acsl_literal_string_2);
   __store_block((void *)(& S),8UL);
   __full_init((void *)(& S));
   return;
@@ -78,7 +78,8 @@ int main(void)
 {
   int __retres;
   int i;
-  __e_acsl_memory_init();
+  __e_acsl_memory_init((int *)0,(char ***)0,8UL);
+  __e_acsl_globals_init();
   i = 4;
   while (1) {
     int tmp;
@@ -105,8 +106,8 @@ int main(void)
           __e_acsl_and = __e_acsl_valid_read;
         }
         else __e_acsl_and = 0;
-        e_acsl_assert(__e_acsl_and,(char *)"Assertion",(char *)"main",
-                      (char *)"\\valid_read(s)",20);
+        __e_acsl_assert(__e_acsl_and,(char *)"Assertion",(char *)"main",
+                        (char *)"\\valid_read(s)",20);
       }
       /*@ assert ¬\valid(s); */
       {
@@ -119,8 +120,8 @@ int main(void)
           __e_acsl_and_2 = __e_acsl_valid;
         }
         else __e_acsl_and_2 = 0;
-        e_acsl_assert(! __e_acsl_and_2,(char *)"Assertion",(char *)"main",
-                      (char *)"!\\valid(s)",21);
+        __e_acsl_assert(! __e_acsl_and_2,(char *)"Assertion",(char *)"main",
+                        (char *)"!\\valid(s)",21);
         __delete_block((void *)(& s));
       }
     }
diff --git a/src/plugins/e-acsl/tests/e-acsl-reject/oracle/quantif.res.oracle b/src/plugins/e-acsl/tests/e-acsl-reject/oracle/quantif.res.oracle
index f262cf135dc4744dca00b7a25d6424c9eb15b015..53883aa7b9e28214e657413047f711aa1a91be2d 100644
--- a/src/plugins/e-acsl/tests/e-acsl-reject/oracle/quantif.res.oracle
+++ b/src/plugins/e-acsl/tests/e-acsl-reject/oracle/quantif.res.oracle
@@ -2,9 +2,7 @@
 [kernel] Parsing FRAMAC_SHARE/e-acsl/e_acsl.h (with preprocessing)
 [kernel] Parsing FRAMAC_SHARE/e-acsl/e_acsl_gmp_types.h (with preprocessing)
 [kernel] Parsing FRAMAC_SHARE/e-acsl/e_acsl_gmp.h (with preprocessing)
-[kernel] Parsing FRAMAC_SHARE/e-acsl/memory_model/e_acsl_mmodel_api.h (with preprocessing)
-[kernel] Parsing FRAMAC_SHARE/e-acsl/memory_model/e_acsl_bittree.h (with preprocessing)
-[kernel] Parsing FRAMAC_SHARE/e-acsl/memory_model/e_acsl_mmodel.h (with preprocessing)
+[kernel] Parsing FRAMAC_SHARE/e-acsl/e_acsl_mmodel_api.h (with preprocessing)
 [kernel] Parsing tests/e-acsl-reject/quantif.i (no preprocessing)
 tests/e-acsl-reject/quantif.i:6:[e-acsl] warning: E-ACSL construct `unguarded \forall quantification' is not yet supported.
                   Ignoring annotation.
diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/base_addr.c b/src/plugins/e-acsl/tests/e-acsl-runtime/base_addr.c
new file mode 100644
index 0000000000000000000000000000000000000000..bad51e65aec22f9ffe9782f154fc17996e0dda56
--- /dev/null
+++ b/src/plugins/e-acsl/tests/e-acsl-runtime/base_addr.c
@@ -0,0 +1,62 @@
+/* run.config
+ * COMMENT: Behaviours of the \base_addr E-ACSL predicate
+*/
+
+#include <stdlib.h>
+
+int A[] = { 1, 2, 3, 4};
+int *PA;
+
+int main(void) {
+  /* Global memory */
+  PA = (int*)&A;
+  /*@ assert \base_addr(A) == \base_addr(PA); */
+  /*@ assert \base_addr(A+3) == \base_addr(PA); */
+  PA++;
+  /*@ assert \base_addr(PA) == \base_addr(A); */
+  /*@ assert \base_addr(PA+2) == \base_addr(A+3); */
+
+  /* Stack memory [long blocks] */
+  int a[] = { 1, 2, 3, 4 };
+  int *pa;
+  pa = (int*)&a;
+
+  /*@ assert \base_addr(a) == \base_addr(pa); */
+  /*@ assert \base_addr(a+3) == \base_addr(pa); */
+  pa++;
+  /*@ assert \base_addr(pa) == \base_addr(a); */
+  /*@ assert \base_addr(pa+2) == \base_addr(a); */
+
+  /* Stack memory [Short blocks] */
+  long l = 4;
+  char *pl = (char*)&l;
+  /*@ assert \base_addr(&l) == \base_addr(pl); */
+  /*@ assert \base_addr(pl+2) == \base_addr(&l); */
+  short *pi = (short*)&l;
+  pi++;
+  pl++;
+  /*@ assert \base_addr(pi) == \base_addr(pl); */
+  /*@ assert \base_addr(pl) == \base_addr(&l); */
+
+  /* Heap memory [single segment] */
+  char *p = malloc(12);
+  char *pd = p;
+  /*@ assert \base_addr(p) == \base_addr(pd); */
+  /*@ assert \base_addr(p+1) == \base_addr(pd+5); */
+  /*@ assert \base_addr(p+11) == \base_addr(pd+1); */
+  p += 5;
+  /*@ assert \base_addr(p+5) == \base_addr(pd); */
+  /*@ assert \base_addr(p-5) == \base_addr(pd); */
+
+  /* Heap memory [multiple segments] */
+  long *q = malloc(30*sizeof(long));
+  long *qd = q;
+
+  /*@ assert \base_addr(q) == \base_addr(qd); */
+  q++;
+  /*@ assert \base_addr(q) == \base_addr(qd); */
+  q += 2;
+  /*@ assert \base_addr(q) == \base_addr(qd); */
+  q += 4;
+  /*@ assert \base_addr(q) == \base_addr(qd); */
+}
diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/block_length.c b/src/plugins/e-acsl/tests/e-acsl-runtime/block_length.c
new file mode 100644
index 0000000000000000000000000000000000000000..9898e98c851b27c67f8d1d405b26abd539917f09
--- /dev/null
+++ b/src/plugins/e-acsl/tests/e-acsl-runtime/block_length.c
@@ -0,0 +1,62 @@
+/* run.config
+   COMMENT: Behaviours of the \block_length E-ACSL predicate
+*/
+
+#include <stdlib.h>
+
+int A[] = { 1, 2, 3, 4};
+int *PA;
+
+struct Zero { } ZERO;
+
+int main(void) {
+  /* Global memory */
+  PA = (int*)&A;
+  /*@ assert \block_length(A) == sizeof(A); */
+  /*@ assert \block_length(A+3) == sizeof(A); */
+  /*@ assert \block_length(PA) == sizeof(A); */
+  PA++;
+  /*@ assert \block_length(PA+1) == \block_length(A+1); */
+
+  /* Stack memory [long blocks] */
+  int a[] = { 1, 2, 3, 4};
+  int *pa = (int*)&a;
+  /*@ assert \block_length(a) == sizeof(a); */
+  /*@ assert \block_length(a+3) == sizeof(a); */
+  /*@ assert \block_length(pa) == sizeof(a); */
+  pa++;
+  /*@ assert \block_length(pa+1) == \block_length(a+1); */
+
+  /* Stack memory [Short blocks] */
+
+  long l = 4;
+  char *pl = (char*)&l;
+  /*@ assert \block_length(&l) == sizeof(long); */
+  /*@ assert \block_length(pl) == sizeof(long); */
+    /*@ assert \block_length(pl+7) == sizeof(long); */
+  int *pi = (int*)&l;
+  /*@ assert \block_length(pi) == \block_length(&l); */
+  pi++;
+  /*@ assert \block_length(pi) == \block_length(&l); */
+
+  /* Heap memory [single segment] */
+  size_t size = 12;
+  char *p = malloc(size);
+  /*@ assert \block_length(p) == size; */
+  /*@ assert \block_length(p+11) == size; */
+  p += 5;
+  /*@ assert \block_length(p+5) == \block_length(p-5); */
+
+  /* Heap memory [multiple segments] */
+  size = 30*sizeof(long);
+  long *q = malloc(size);
+
+  /*@ assert \block_length(q) == size; */
+  q += 4;
+  /*@ assert \block_length(q) == size; */
+
+  /* Zero-sized blocks */
+  struct Zero zero;
+  /*@ assert \block_length(&ZERO) == 0; */
+  /*@ assert \block_length(&zero) == 0; */
+}
diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/initialized.c b/src/plugins/e-acsl/tests/e-acsl-runtime/initialized.c
new file mode 100644
index 0000000000000000000000000000000000000000..c4c5edec1f4df1fd14de2c0ee6de870a86f31c79
--- /dev/null
+++ b/src/plugins/e-acsl/tests/e-acsl-runtime/initialized.c
@@ -0,0 +1,126 @@
+/* run.config
+   COMMENT: Behaviours of the \initialized E-ACSL predicate
+*/
+
+#include <stdlib.h>
+
+int A = 0;
+int B;
+
+#define ODD(_n) (_n%2 != 0)
+
+int main(void) {
+  /* All globals are initialized, even if the initializer is not given */
+  int *p = &A;
+  int *q = &B;
+  /*@assert \initialized(&A) ; */
+  /*@assert \initialized(&B) ; */
+  /*@assert \initialized(p) ;  */
+  /*@assert \initialized(q) ;  */
+
+  /* A local variable without an initializer is uninitialized */
+  int a = 0;
+  int b;
+  long *r;
+  long c[2] = { 1, 1 };
+  long d[2];
+  p = &a;
+  q = &b;
+
+  /*@assert \initialized(&a) ; */
+  /*@assert ! \initialized(&b) ; */
+  /*@assert \initialized(p) ; */
+  /*@assert ! \initialized(q) ; */
+  /*@assert \initialized(&c) ; */
+  /*@assert ! \initialized(&d) ; */
+
+  /* Local variables can also be initialized by assignments */
+  b = 0;
+  /*@assert \initialized(q);  */
+  /*@assert \initialized(&b); */
+
+  r = d;
+  /*@assert ! \initialized(d); */
+  /*@assert ! \initialized(d+1); */
+  /*@assert ! \initialized(&d); */
+  /*@assert ! \initialized(r); */
+  /*@assert ! \initialized(r+1); */
+
+  d[0] = 1;
+  /*@assert \initialized(d); */
+  /*@assert ! \initialized(d+1); */
+  /*@assert ! \initialized(&d); */
+  /*@assert \initialized(r); */
+  /*@assert ! \initialized(r+1); */
+
+  d[1] = 1;
+  /*@assert \initialized(d); */
+  /*@assert \initialized(d+1); */
+  /*@assert \initialized(&d); */
+  /*@assert \initialized(r); */
+  /*@assert \initialized(r+1); */
+
+  /* Malloc allocates un-initialized memory */
+  p = (int*)malloc(sizeof(int*));
+  /*@assert ! \initialized(p); */
+
+  /* Calloc allocates initialized memory */
+  q = (int*)calloc(1, sizeof(int));
+  /*@ assert \initialized(q); */
+
+  /* Block reallocared using `realloc' carries initialization of the
+   * existing fragment but does not initialize the newly allocated one */
+  q = (int*)realloc(q, 2*sizeof(int));
+  /*@assert \initialized(q); */
+  q++;
+  /*@assert ! \initialized(q); */
+  q--;
+
+  /* An initialized on an un-allocated region is always false. This does not
+   * lead to undefined bevaviours in production mode or assertion failures in
+   * debug mode. */
+  free(p);
+  free(q);
+  /*@assert ! \initialized(p); */
+  /*@assert ! \initialized(q); */
+
+  /* Spoofing access to a non-existing stack address */
+  q = (int*)(&q - 1024*5);
+  /*assert ! \initialized(q); */
+
+  /* Spoofing access to a non-existing global address */
+  q = (int*)128;
+  /*@assert ! \initialized(q); */
+
+  p = NULL;
+  /*@assert ! \initialized(p); */
+
+  /* Partial initialization */
+  int size = 100;
+  char *partsc = (char*)malloc(size*sizeof(char));
+  char *partsi = (char*)malloc(size*sizeof(int));
+
+  for (int i = 0; i < size; i++) {
+    if (ODD(i))
+      partsc[i] = '0';
+    else
+      partsi[i] = 0;
+  }
+
+  for (int i = 0; i < size; i++) {
+    if (ODD(i)) {
+      /* @assert \initialized(partsc + i);   */
+      /* @assert ! \initialized(partsi + i); */
+    } else {
+      /* @assert \initialized(partsi + i);   */
+      /* @assert ! \initialized(partsc + i); */
+    }
+  }
+
+  /* Check duplicate initialization does not affect correct count of
+   * initialized bits (relevant for ADT models only). */
+  int dup [2];
+  dup[0] = 1;
+  dup[0] = 1;
+  /* @assert ! \initialized(&dup); */
+}
diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/memsize.c b/src/plugins/e-acsl/tests/e-acsl-runtime/memsize.c
index f4e3c0b89d77ae7180f9d6c2a60c00878e807ffd..8322d7982c10ed13c355d7977f2b2b69a809b86c 100644
--- a/src/plugins/e-acsl/tests/e-acsl-runtime/memsize.c
+++ b/src/plugins/e-acsl/tests/e-acsl-runtime/memsize.c
@@ -14,58 +14,58 @@
 # endif
 # endif
 
-extern size_t __memory_size;
+extern size_t __heap_size;
 
 int main(int argc, char **argv) {
     // Allocation increases
     char *a = malloc(7);
-    /*@assert (__memory_size == 7);  */
+    /*@assert (__heap_size == 7);  */
     char *b = malloc(14);
-    /*@assert (__memory_size == 21);  */
+    /*@assert (__heap_size == 21);  */
 
     // Allocation decreases
     free(a);
-    /*@assert (__memory_size == 14);  */
+    /*@assert (__heap_size == 14);  */
 
     // Make sure that free with NULL behaves and does not affect allocation
     a = NULL;
     free(a);
-    /*@assert (__memory_size == 14);  */
+    /*@assert (__heap_size == 14);  */
 
     // Realloc decreases allocation
     b = realloc(b, 9);
-    /*@assert (__memory_size == 9);  */
+    /*@assert (__heap_size == 9);  */
 
     // Realloc increases allocation
     b = realloc(b, 18);
-    /*@assert (__memory_size == 18);  */
+    /*@assert (__heap_size == 18);  */
 
     // Realloc with 0 is equivalent to free
     b = realloc(b, 0);
     b = NULL;
-    /*@assert (__memory_size == 0);  */
+    /*@assert (__heap_size == 0);  */
 
     // realloc with 0 is equivalent to malloc
     b = realloc(b, 8);
-    /*@assert (__memory_size == 8);  */
+    /*@assert (__heap_size == 8);  */
 
     // Abandon b and behave like malloc again
     b = realloc(NULL, 8);
-    /*@assert (__memory_size == 16);  */
+    /*@assert (__heap_size == 16);  */
 
     // Make realloc fail by supplying a huge number
     b = realloc(NULL, UINTPTR_MAX);
-    /*@assert (__memory_size == 16);  */
+    /*@assert (__heap_size == 16);  */
     /*@assert (b == NULL);  */
 
     // Same as test for calloc ...
     b = calloc(UINTPTR_MAX,UINTPTR_MAX);
-    /*@assert (__memory_size == 16);  */
+    /*@assert (__heap_size == 16);  */
     /*@assert (b == NULL);  */
 
     // ... and for malloc
     b = malloc(UINTPTR_MAX);
-    /*@assert (__memory_size == 16);  */
+    /*@assert (__heap_size == 16);  */
     /*@assert (b == NULL);  */
     return 0;
 }
diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/offset.c b/src/plugins/e-acsl/tests/e-acsl-runtime/offset.c
new file mode 100644
index 0000000000000000000000000000000000000000..26d56e782bee1c61d682a646e0e8e011221c7b02
--- /dev/null
+++ b/src/plugins/e-acsl/tests/e-acsl-runtime/offset.c
@@ -0,0 +1,56 @@
+/* run.config
+   COMMENT: Behaviours of the \offset E-ACSL predicate
+*/
+
+#include <stdlib.h>
+
+int A[] = { 1, 2, 3, 4};
+int *PA;
+
+int main(void) {
+  /* Global memory */
+  PA = (int*)&A;
+  /*@ assert \offset(A) == 0; */
+  /*@ assert \offset(A+3) == 12; */
+  /*@ assert \offset(PA) == 0; */
+  PA++;
+  /*@ assert \offset(PA+1) == 8; */
+
+  /* Stack memory [long blocks] */
+  int a[] = { 1, 2, 3, 4};
+  /*@ assert \offset(a)   == 0; */
+  /*@ assert \offset(a+1) == 4; */
+  /*@ assert \offset(a+3) == 12; */
+
+  /* Stack memory [Short blocks] */
+  long l = 4;
+  char *pl = (char*)&l;
+  /*@ assert \offset(&l) == 0; */
+  /*@ assert \offset(pl) == 0; */
+  /*@ assert \offset(pl+1) == 1; */
+  /*@ assert \offset(pl+7) == 7; */
+  int *pi = (int*)&l;
+  /*@ assert \offset(pi) == 0; */
+  pi++;
+  /*@ assert \offset(pi) == 4; */
+
+  /* Heap memory [single segment] */
+  char *p = malloc(12);
+  /*@ assert \offset(p) == 0; */
+  /*@ assert \offset(p+1) == 1; */
+  /*@ assert \offset(p+11) == 11; */
+  p += 5;
+  /*@ assert \offset(p+5) == 10; */
+  /*@ assert \offset(p-5) == 0; */
+
+  /* Heap memory [multiple segments] */
+  long *q = malloc(30*sizeof(long));
+
+  /*@ assert \offset(q) == 0; */
+  q++;
+  /*@ assert \offset(q) == sizeof(long); */
+  q += 2;
+  /*@ assert \offset(q) == sizeof(long)*3; */
+  q += 4;
+  /*@ assert \offset(q) == sizeof(long)*7; */
+}
diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/addrOf.res.oracle b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/addrOf.res.oracle
index d38262de6812ddcc3976738685340153a7a48ad6..2e7694a5190c90c4f931cd94ed5d4ca433afa10e 100644
--- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/addrOf.res.oracle
+++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/addrOf.res.oracle
@@ -1,3 +1,3 @@
 [e-acsl] beginning translation.
 [e-acsl] translation done in project "e-acsl".
-FRAMAC_SHARE/e-acsl/e_acsl.h:34:[value] warning: function e_acsl_assert: precondition got status unknown.
+FRAMAC_SHARE/e-acsl/e_acsl.h:34:[value] warning: function __e_acsl_assert: precondition got status unknown.
diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/alias.res.oracle b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/alias.res.oracle
index d38262de6812ddcc3976738685340153a7a48ad6..2e7694a5190c90c4f931cd94ed5d4ca433afa10e 100644
--- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/alias.res.oracle
+++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/alias.res.oracle
@@ -1,3 +1,3 @@
 [e-acsl] beginning translation.
 [e-acsl] translation done in project "e-acsl".
-FRAMAC_SHARE/e-acsl/e_acsl.h:34:[value] warning: function e_acsl_assert: precondition got status unknown.
+FRAMAC_SHARE/e-acsl/e_acsl.h:34:[value] warning: function __e_acsl_assert: precondition got status unknown.
diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/base_addr.err.oracle b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/base_addr.err.oracle
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/base_addr.res.oracle b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/base_addr.res.oracle
new file mode 100644
index 0000000000000000000000000000000000000000..2879f19b5f84717a4e15786946db32e32c141c46
--- /dev/null
+++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/base_addr.res.oracle
@@ -0,0 +1,27 @@
+[e-acsl] beginning translation.
+FRAMAC_SHARE/libc/stdlib.h:156:[e-acsl] warning: E-ACSL construct `\fresh' is not yet supported. Ignoring annotation.
+tests/e-acsl-runtime/base_addr.c:10:[e-acsl] warning: E-ACSL construct `complete behaviors' is not yet supported.
+                  Ignoring annotation.
+tests/e-acsl-runtime/base_addr.c:10:[e-acsl] warning: E-ACSL construct `disjoint behaviors' is not yet supported.
+                  Ignoring annotation.
+tests/e-acsl-runtime/base_addr.c:10:[e-acsl] warning: E-ACSL construct `assigns clause in behavior' is not yet supported.
+                  Ignoring annotation.
+FRAMAC_SHARE/libc/stdlib.h:160:[e-acsl] warning: E-ACSL construct `logic function application' is not yet supported.
+                  Ignoring annotation.
+FRAMAC_SHARE/libc/stdlib.h:160:[e-acsl] warning: E-ACSL construct `assigns clause in behavior' is not yet supported.
+                  Ignoring annotation.
+FRAMAC_SHARE/libc/stdlib.h:165:[e-acsl] warning: E-ACSL construct `logic function application' is not yet supported.
+                  Ignoring annotation.
+[e-acsl] translation done in project "e-acsl".
+FRAMAC_SHARE/libc/stdlib.h:163:[value] warning: function __e_acsl_malloc, behavior allocation: postcondition got status unknown. (Behavior may be inactive, no reduction performed.)
+FRAMAC_SHARE/libc/stdlib.h:168:[value] warning: function __e_acsl_malloc, behavior no_allocation: postcondition got status unknown. (Behavior may be inactive, no reduction performed.)
+tests/e-acsl-runtime/base_addr.c:44:[value] warning: assertion got status unknown.
+FRAMAC_SHARE/e-acsl/e_acsl.h:34:[value] warning: function __e_acsl_assert: precondition got status unknown.
+tests/e-acsl-runtime/base_addr.c:45:[value] warning: assertion got status unknown.
+tests/e-acsl-runtime/base_addr.c:46:[value] warning: assertion got status unknown.
+tests/e-acsl-runtime/base_addr.c:48:[value] warning: assertion got status unknown.
+tests/e-acsl-runtime/base_addr.c:49:[value] warning: assertion got status unknown.
+tests/e-acsl-runtime/base_addr.c:55:[value] warning: assertion got status unknown.
+tests/e-acsl-runtime/base_addr.c:57:[value] warning: assertion got status unknown.
+tests/e-acsl-runtime/base_addr.c:59:[value] warning: assertion got status unknown.
+tests/e-acsl-runtime/base_addr.c:61:[value] warning: assertion got status unknown.
diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/block_length.err.oracle b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/block_length.err.oracle
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/block_length.res.oracle b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/block_length.res.oracle
new file mode 100644
index 0000000000000000000000000000000000000000..49f3ff5f2987d0c2c433e7027dad0aeb2bbc084e
--- /dev/null
+++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/block_length.res.oracle
@@ -0,0 +1,23 @@
+[e-acsl] beginning translation.
+FRAMAC_SHARE/libc/stdlib.h:156:[e-acsl] warning: E-ACSL construct `\fresh' is not yet supported. Ignoring annotation.
+tests/e-acsl-runtime/block_length.c:12:[e-acsl] warning: E-ACSL construct `complete behaviors' is not yet supported.
+                  Ignoring annotation.
+tests/e-acsl-runtime/block_length.c:12:[e-acsl] warning: E-ACSL construct `disjoint behaviors' is not yet supported.
+                  Ignoring annotation.
+tests/e-acsl-runtime/block_length.c:12:[e-acsl] warning: E-ACSL construct `assigns clause in behavior' is not yet supported.
+                  Ignoring annotation.
+FRAMAC_SHARE/libc/stdlib.h:160:[e-acsl] warning: E-ACSL construct `logic function application' is not yet supported.
+                  Ignoring annotation.
+FRAMAC_SHARE/libc/stdlib.h:160:[e-acsl] warning: E-ACSL construct `assigns clause in behavior' is not yet supported.
+                  Ignoring annotation.
+FRAMAC_SHARE/libc/stdlib.h:165:[e-acsl] warning: E-ACSL construct `logic function application' is not yet supported.
+                  Ignoring annotation.
+[e-acsl] translation done in project "e-acsl".
+FRAMAC_SHARE/e-acsl/e_acsl.h:34:[value] warning: function __e_acsl_assert: precondition got status unknown.
+FRAMAC_SHARE/libc/stdlib.h:163:[value] warning: function __e_acsl_malloc, behavior allocation: postcondition got status unknown. (Behavior may be inactive, no reduction performed.)
+FRAMAC_SHARE/libc/stdlib.h:168:[value] warning: function __e_acsl_malloc, behavior no_allocation: postcondition got status unknown. (Behavior may be inactive, no reduction performed.)
+tests/e-acsl-runtime/block_length.c:45:[value] warning: assertion got status unknown.
+tests/e-acsl-runtime/block_length.c:46:[value] warning: assertion got status unknown.
+tests/e-acsl-runtime/block_length.c:48:[value] warning: assertion got status unknown.
+tests/e-acsl-runtime/block_length.c:54:[value] warning: assertion got status unknown.
+tests/e-acsl-runtime/block_length.c:56:[value] warning: assertion got status unknown.
diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/call.res.oracle b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/call.res.oracle
index 6c1a2b8cdcb152a308b37236f8449ce089685793..16c5a8010d2ecce24525cab50cd91999d8b095f7 100644
--- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/call.res.oracle
+++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/call.res.oracle
@@ -15,4 +15,4 @@ FRAMAC_SHARE/libc/stdlib.h:165:[e-acsl] warning: E-ACSL construct `logic functio
 [e-acsl] translation done in project "e-acsl".
 FRAMAC_SHARE/libc/stdlib.h:163:[value] warning: function __e_acsl_malloc, behavior allocation: postcondition got status unknown. (Behavior may be inactive, no reduction performed.)
 FRAMAC_SHARE/libc/stdlib.h:168:[value] warning: function __e_acsl_malloc, behavior no_allocation: postcondition got status invalid. (Behavior may be inactive, no reduction performed.)
-FRAMAC_SHARE/e-acsl/e_acsl.h:34:[value] warning: function e_acsl_assert: precondition got status unknown.
+FRAMAC_SHARE/e-acsl/e_acsl.h:34:[value] warning: function __e_acsl_assert: precondition got status unknown.
diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/compound_initializers.res.oracle b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/compound_initializers.res.oracle
index d38262de6812ddcc3976738685340153a7a48ad6..2e7694a5190c90c4f931cd94ed5d4ca433afa10e 100644
--- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/compound_initializers.res.oracle
+++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/compound_initializers.res.oracle
@@ -1,3 +1,3 @@
 [e-acsl] beginning translation.
 [e-acsl] translation done in project "e-acsl".
-FRAMAC_SHARE/e-acsl/e_acsl.h:34:[value] warning: function e_acsl_assert: precondition got status unknown.
+FRAMAC_SHARE/e-acsl/e_acsl.h:34:[value] warning: function __e_acsl_assert: precondition got status unknown.
diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_addrOf.c b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_addrOf.c
index ee8d12e4a15ade44af12785feb26a5f0c52da7fd..71eb9845e69428bd287f67a9890fd0e2c178d6c6 100644
--- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_addrOf.c
+++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_addrOf.c
@@ -17,8 +17,8 @@ void f(void)
   {
     int __e_acsl_initialized;
     __e_acsl_initialized = __initialized((void *)p,sizeof(int));
-    e_acsl_assert(__e_acsl_initialized,(char *)"Assertion",(char *)"f",
-                  (char *)"\\initialized(p)",10);
+    __e_acsl_assert(__e_acsl_initialized,(char *)"Assertion",(char *)"f",
+                    (char *)"\\initialized(p)",10);
   }
   __delete_block((void *)(& p));
   __delete_block((void *)(& u));
@@ -30,11 +30,12 @@ int main(void)
 {
   int __retres;
   int x;
+  __e_acsl_memory_init((int *)0,(char ***)0,8UL);
   x = 0;
   f();
   /*@ assert &x ≡ &x; */
-  e_acsl_assert(& x == & x,(char *)"Assertion",(char *)"main",
-                (char *)"&x == &x",16);
+  __e_acsl_assert(& x == & x,(char *)"Assertion",(char *)"main",
+                  (char *)"&x == &x",16);
   __retres = 0;
   __e_acsl_memory_clean();
   return __retres;
diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_alias.c b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_alias.c
index b7f5e92bcd28570befb55fc6c4305faadadf5b68..4b3a9dd00736060482a81a064c6518fdb928ca1e 100644
--- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_alias.c
+++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_alias.c
@@ -17,14 +17,15 @@ int main(void)
 {
   int __retres;
   int i;
+  __e_acsl_memory_init((int *)0,(char ***)0,8UL);
   __store_block((void *)(& i),4UL);
   f(& i,255);
   /*@ assert \initialized(&i); */
   {
     int __e_acsl_initialized;
     __e_acsl_initialized = __initialized((void *)(& i),sizeof(int));
-    e_acsl_assert(__e_acsl_initialized,(char *)"Assertion",(char *)"main",
-                  (char *)"\\initialized(&i)",14);
+    __e_acsl_assert(__e_acsl_initialized,(char *)"Assertion",(char *)"main",
+                    (char *)"\\initialized(&i)",14);
   }
   __retres = 0;
   __delete_block((void *)(& i));
diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_base_addr.c b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_base_addr.c
new file mode 100644
index 0000000000000000000000000000000000000000..5a3004d842bb5da18197643d068020520aaaf457
--- /dev/null
+++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_base_addr.c
@@ -0,0 +1,302 @@
+/* Generated by Frama-C */
+int A[4] = {1, 2, 3, 4};
+int *PA;
+void __e_acsl_globals_init(void)
+{
+  __store_block((void *)(& PA),8UL);
+  __full_init((void *)(& PA));
+  __store_block((void *)(A),16UL);
+  __full_init((void *)(& A));
+  return;
+}
+
+int main(void)
+{
+  int __retres;
+  int a[4];
+  int *pa;
+  long l;
+  char *pl;
+  short *pi;
+  char *p;
+  char *pd;
+  long *q;
+  long *qd;
+  __e_acsl_memory_init((int *)0,(char ***)0,8UL);
+  __e_acsl_globals_init();
+  __store_block((void *)(& qd),8UL);
+  __store_block((void *)(& q),8UL);
+  __store_block((void *)(& pd),8UL);
+  __store_block((void *)(& p),8UL);
+  __store_block((void *)(& pi),8UL);
+  __store_block((void *)(& pl),8UL);
+  __store_block((void *)(& l),8UL);
+  __store_block((void *)(& pa),8UL);
+  __store_block((void *)(a),16UL);
+  PA = (int *)(& A);
+  /*@ assert \base_addr((int *)A) ≡ \base_addr(PA); */
+  {
+    void *__e_acsl_base_addr;
+    void *__e_acsl_base_addr_2;
+    __e_acsl_base_addr = __base_addr((void *)(A));
+    __e_acsl_base_addr_2 = __base_addr((void *)PA);
+    __e_acsl_assert(__e_acsl_base_addr == __e_acsl_base_addr_2,
+                    (char *)"Assertion",(char *)"main",
+                    (char *)"\\base_addr((int *)A) == \\base_addr(PA)",13);
+  }
+  /*@ assert \base_addr(&A[3]) ≡ \base_addr(PA); */
+  {
+    void *__e_acsl_base_addr_3;
+    void *__e_acsl_base_addr_4;
+    __e_acsl_base_addr_3 = __base_addr((void *)(& A[3]));
+    __e_acsl_base_addr_4 = __base_addr((void *)PA);
+    __e_acsl_assert(__e_acsl_base_addr_3 == __e_acsl_base_addr_4,
+                    (char *)"Assertion",(char *)"main",
+                    (char *)"\\base_addr(&A[3]) == \\base_addr(PA)",14);
+  }
+  PA ++;
+  /*@ assert \base_addr(PA) ≡ \base_addr((int *)A); */
+  {
+    void *__e_acsl_base_addr_5;
+    void *__e_acsl_base_addr_6;
+    __e_acsl_base_addr_5 = __base_addr((void *)PA);
+    __e_acsl_base_addr_6 = __base_addr((void *)(A));
+    __e_acsl_assert(__e_acsl_base_addr_5 == __e_acsl_base_addr_6,
+                    (char *)"Assertion",(char *)"main",
+                    (char *)"\\base_addr(PA) == \\base_addr((int *)A)",16);
+  }
+  /*@ assert \base_addr(PA+2) ≡ \base_addr(&A[3]); */
+  {
+    void *__e_acsl_base_addr_7;
+    void *__e_acsl_base_addr_8;
+    __e_acsl_base_addr_7 = __base_addr((void *)(PA + 2));
+    __e_acsl_base_addr_8 = __base_addr((void *)(& A[3]));
+    __e_acsl_assert(__e_acsl_base_addr_7 == __e_acsl_base_addr_8,
+                    (char *)"Assertion",(char *)"main",
+                    (char *)"\\base_addr(PA+2) == \\base_addr(&A[3])",17);
+  }
+  __initialize((void *)(a),sizeof(int));
+  a[0] = 1;
+  __initialize((void *)(& a[1]),sizeof(int));
+  a[1] = 2;
+  __initialize((void *)(& a[2]),sizeof(int));
+  a[2] = 3;
+  __initialize((void *)(& a[3]),sizeof(int));
+  a[3] = 4;
+  __full_init((void *)(& pa));
+  pa = (int *)(& a);
+  /*@ assert \base_addr((int *)a) ≡ \base_addr(pa); */
+  {
+    void *__e_acsl_base_addr_9;
+    void *__e_acsl_base_addr_10;
+    __e_acsl_base_addr_9 = __base_addr((void *)(a));
+    __e_acsl_base_addr_10 = __base_addr((void *)pa);
+    __e_acsl_assert(__e_acsl_base_addr_9 == __e_acsl_base_addr_10,
+                    (char *)"Assertion",(char *)"main",
+                    (char *)"\\base_addr((int *)a) == \\base_addr(pa)",24);
+  }
+  /*@ assert \base_addr(&a[3]) ≡ \base_addr(pa); */
+  {
+    void *__e_acsl_base_addr_11;
+    void *__e_acsl_base_addr_12;
+    __e_acsl_base_addr_11 = __base_addr((void *)(& a[3]));
+    __e_acsl_base_addr_12 = __base_addr((void *)pa);
+    __e_acsl_assert(__e_acsl_base_addr_11 == __e_acsl_base_addr_12,
+                    (char *)"Assertion",(char *)"main",
+                    (char *)"\\base_addr(&a[3]) == \\base_addr(pa)",25);
+  }
+  __full_init((void *)(& pa));
+  pa ++;
+  /*@ assert \base_addr(pa) ≡ \base_addr((int *)a); */
+  {
+    void *__e_acsl_base_addr_13;
+    void *__e_acsl_base_addr_14;
+    __e_acsl_base_addr_13 = __base_addr((void *)pa);
+    __e_acsl_base_addr_14 = __base_addr((void *)(a));
+    __e_acsl_assert(__e_acsl_base_addr_13 == __e_acsl_base_addr_14,
+                    (char *)"Assertion",(char *)"main",
+                    (char *)"\\base_addr(pa) == \\base_addr((int *)a)",27);
+  }
+  /*@ assert \base_addr(pa+2) ≡ \base_addr((int *)a); */
+  {
+    void *__e_acsl_base_addr_15;
+    void *__e_acsl_base_addr_16;
+    __e_acsl_base_addr_15 = __base_addr((void *)(pa + 2));
+    __e_acsl_base_addr_16 = __base_addr((void *)(a));
+    __e_acsl_assert(__e_acsl_base_addr_15 == __e_acsl_base_addr_16,
+                    (char *)"Assertion",(char *)"main",
+                    (char *)"\\base_addr(pa+2) == \\base_addr((int *)a)",28);
+  }
+  __full_init((void *)(& l));
+  l = (long)4;
+  __full_init((void *)(& pl));
+  pl = (char *)(& l);
+  /*@ assert \base_addr(&l) ≡ \base_addr(pl); */
+  {
+    void *__e_acsl_base_addr_17;
+    void *__e_acsl_base_addr_18;
+    __e_acsl_base_addr_17 = __base_addr((void *)(& l));
+    __e_acsl_base_addr_18 = __base_addr((void *)pl);
+    __e_acsl_assert(__e_acsl_base_addr_17 == __e_acsl_base_addr_18,
+                    (char *)"Assertion",(char *)"main",
+                    (char *)"\\base_addr(&l) == \\base_addr(pl)",33);
+  }
+  /*@ assert \base_addr(pl+2) ≡ \base_addr(&l); */
+  {
+    void *__e_acsl_base_addr_19;
+    void *__e_acsl_base_addr_20;
+    __e_acsl_base_addr_19 = __base_addr((void *)(pl + 2));
+    __e_acsl_base_addr_20 = __base_addr((void *)(& l));
+    __e_acsl_assert(__e_acsl_base_addr_19 == __e_acsl_base_addr_20,
+                    (char *)"Assertion",(char *)"main",
+                    (char *)"\\base_addr(pl+2) == \\base_addr(&l)",34);
+  }
+  __full_init((void *)(& pi));
+  pi = (short *)(& l);
+  __full_init((void *)(& pi));
+  pi ++;
+  __full_init((void *)(& pl));
+  pl ++;
+  /*@ assert \base_addr(pi) ≡ \base_addr(pl); */
+  {
+    void *__e_acsl_base_addr_21;
+    void *__e_acsl_base_addr_22;
+    __e_acsl_base_addr_21 = __base_addr((void *)pi);
+    __e_acsl_base_addr_22 = __base_addr((void *)pl);
+    __e_acsl_assert(__e_acsl_base_addr_21 == __e_acsl_base_addr_22,
+                    (char *)"Assertion",(char *)"main",
+                    (char *)"\\base_addr(pi) == \\base_addr(pl)",38);
+  }
+  /*@ assert \base_addr(pl) ≡ \base_addr(&l); */
+  {
+    void *__e_acsl_base_addr_23;
+    void *__e_acsl_base_addr_24;
+    __e_acsl_base_addr_23 = __base_addr((void *)pl);
+    __e_acsl_base_addr_24 = __base_addr((void *)(& l));
+    __e_acsl_assert(__e_acsl_base_addr_23 == __e_acsl_base_addr_24,
+                    (char *)"Assertion",(char *)"main",
+                    (char *)"\\base_addr(pl) == \\base_addr(&l)",39);
+  }
+  __full_init((void *)(& p));
+  p = (char *)__e_acsl_malloc((unsigned long)12);
+  __full_init((void *)(& pd));
+  pd = p;
+  /*@ assert \base_addr(p) ≡ \base_addr(pd); */
+  {
+    void *__e_acsl_base_addr_25;
+    void *__e_acsl_base_addr_26;
+    __e_acsl_base_addr_25 = __base_addr((void *)p);
+    __e_acsl_base_addr_26 = __base_addr((void *)pd);
+    __e_acsl_assert(__e_acsl_base_addr_25 == __e_acsl_base_addr_26,
+                    (char *)"Assertion",(char *)"main",
+                    (char *)"\\base_addr(p) == \\base_addr(pd)",44);
+  }
+  /*@ assert \base_addr(p+1) ≡ \base_addr(pd+5); */
+  {
+    void *__e_acsl_base_addr_27;
+    void *__e_acsl_base_addr_28;
+    __e_acsl_base_addr_27 = __base_addr((void *)(p + 1));
+    __e_acsl_base_addr_28 = __base_addr((void *)(pd + 5));
+    __e_acsl_assert(__e_acsl_base_addr_27 == __e_acsl_base_addr_28,
+                    (char *)"Assertion",(char *)"main",
+                    (char *)"\\base_addr(p+1) == \\base_addr(pd+5)",45);
+  }
+  /*@ assert \base_addr(p+11) ≡ \base_addr(pd+1); */
+  {
+    void *__e_acsl_base_addr_29;
+    void *__e_acsl_base_addr_30;
+    __e_acsl_base_addr_29 = __base_addr((void *)(p + 11));
+    __e_acsl_base_addr_30 = __base_addr((void *)(pd + 1));
+    __e_acsl_assert(__e_acsl_base_addr_29 == __e_acsl_base_addr_30,
+                    (char *)"Assertion",(char *)"main",
+                    (char *)"\\base_addr(p+11) == \\base_addr(pd+1)",46);
+  }
+  __full_init((void *)(& p));
+  p += 5;
+  /*@ assert \base_addr(p+5) ≡ \base_addr(pd); */
+  {
+    void *__e_acsl_base_addr_31;
+    void *__e_acsl_base_addr_32;
+    __e_acsl_base_addr_31 = __base_addr((void *)(p + 5));
+    __e_acsl_base_addr_32 = __base_addr((void *)pd);
+    __e_acsl_assert(__e_acsl_base_addr_31 == __e_acsl_base_addr_32,
+                    (char *)"Assertion",(char *)"main",
+                    (char *)"\\base_addr(p+5) == \\base_addr(pd)",48);
+  }
+  /*@ assert \base_addr(p-5) ≡ \base_addr(pd); */
+  {
+    void *__e_acsl_base_addr_33;
+    void *__e_acsl_base_addr_34;
+    __e_acsl_base_addr_33 = __base_addr((void *)(p - 5));
+    __e_acsl_base_addr_34 = __base_addr((void *)pd);
+    __e_acsl_assert(__e_acsl_base_addr_33 == __e_acsl_base_addr_34,
+                    (char *)"Assertion",(char *)"main",
+                    (char *)"\\base_addr(p-5) == \\base_addr(pd)",49);
+  }
+  __full_init((void *)(& q));
+  q = (long *)__e_acsl_malloc((unsigned long)30 * sizeof(long));
+  __full_init((void *)(& qd));
+  qd = q;
+  /*@ assert \base_addr(q) ≡ \base_addr(qd); */
+  {
+    void *__e_acsl_base_addr_35;
+    void *__e_acsl_base_addr_36;
+    __e_acsl_base_addr_35 = __base_addr((void *)q);
+    __e_acsl_base_addr_36 = __base_addr((void *)qd);
+    __e_acsl_assert(__e_acsl_base_addr_35 == __e_acsl_base_addr_36,
+                    (char *)"Assertion",(char *)"main",
+                    (char *)"\\base_addr(q) == \\base_addr(qd)",55);
+  }
+  __full_init((void *)(& q));
+  q ++;
+  /*@ assert \base_addr(q) ≡ \base_addr(qd); */
+  {
+    void *__e_acsl_base_addr_37;
+    void *__e_acsl_base_addr_38;
+    __e_acsl_base_addr_37 = __base_addr((void *)q);
+    __e_acsl_base_addr_38 = __base_addr((void *)qd);
+    __e_acsl_assert(__e_acsl_base_addr_37 == __e_acsl_base_addr_38,
+                    (char *)"Assertion",(char *)"main",
+                    (char *)"\\base_addr(q) == \\base_addr(qd)",57);
+  }
+  __full_init((void *)(& q));
+  q += 2;
+  /*@ assert \base_addr(q) ≡ \base_addr(qd); */
+  {
+    void *__e_acsl_base_addr_39;
+    void *__e_acsl_base_addr_40;
+    __e_acsl_base_addr_39 = __base_addr((void *)q);
+    __e_acsl_base_addr_40 = __base_addr((void *)qd);
+    __e_acsl_assert(__e_acsl_base_addr_39 == __e_acsl_base_addr_40,
+                    (char *)"Assertion",(char *)"main",
+                    (char *)"\\base_addr(q) == \\base_addr(qd)",59);
+  }
+  __full_init((void *)(& q));
+  q += 4;
+  /*@ assert \base_addr(q) ≡ \base_addr(qd); */
+  {
+    void *__e_acsl_base_addr_41;
+    void *__e_acsl_base_addr_42;
+    __e_acsl_base_addr_41 = __base_addr((void *)q);
+    __e_acsl_base_addr_42 = __base_addr((void *)qd);
+    __e_acsl_assert(__e_acsl_base_addr_41 == __e_acsl_base_addr_42,
+                    (char *)"Assertion",(char *)"main",
+                    (char *)"\\base_addr(q) == \\base_addr(qd)",61);
+  }
+  __retres = 0;
+  __delete_block((void *)(& PA));
+  __delete_block((void *)(A));
+  __delete_block((void *)(& qd));
+  __delete_block((void *)(& q));
+  __delete_block((void *)(& pd));
+  __delete_block((void *)(& p));
+  __delete_block((void *)(& pi));
+  __delete_block((void *)(& pl));
+  __delete_block((void *)(& l));
+  __delete_block((void *)(& pa));
+  __delete_block((void *)(a));
+  __e_acsl_memory_clean();
+  return __retres;
+}
+
+
diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_block_length.c b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_block_length.c
new file mode 100644
index 0000000000000000000000000000000000000000..41fd1e98e531b2ec3e626c3cdd0f52d945d99c40
--- /dev/null
+++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_block_length.c
@@ -0,0 +1,421 @@
+/* Generated by Frama-C */
+struct Zero {
+   
+};
+int A[4] = {1, 2, 3, 4};
+int *PA;
+struct Zero ZERO;
+void __e_acsl_globals_init(void)
+{
+  __store_block((void *)(& ZERO),0UL);
+  __full_init((void *)(& ZERO));
+  __store_block((void *)(& PA),8UL);
+  __full_init((void *)(& PA));
+  __store_block((void *)(A),16UL);
+  __full_init((void *)(& A));
+  return;
+}
+
+int main(void)
+{
+  int __retres;
+  int a[4];
+  int *pa;
+  long l;
+  char *pl;
+  int *pi;
+  size_t size;
+  char *p;
+  long *q;
+  struct Zero zero;
+  __e_acsl_memory_init((int *)0,(char ***)0,8UL);
+  __e_acsl_globals_init();
+  __store_block((void *)(& zero),0UL);
+  __store_block((void *)(& q),8UL);
+  __store_block((void *)(& p),8UL);
+  __store_block((void *)(& pi),8UL);
+  __store_block((void *)(& pl),8UL);
+  __store_block((void *)(& l),8UL);
+  __store_block((void *)(& pa),8UL);
+  __store_block((void *)(a),16UL);
+  PA = (int *)(& A);
+  /*@ assert \block_length((int *)A) ≡ sizeof(A); */
+  {
+    unsigned long __e_acsl_block_length;
+    mpz_t __e_acsl_block_length_2;
+    mpz_t __e_acsl_sizeof;
+    int __e_acsl_eq;
+    __e_acsl_block_length = __block_length((void *)(A));
+    __gmpz_init_set_ui(__e_acsl_block_length_2,__e_acsl_block_length);
+    __gmpz_init_set_si(__e_acsl_sizeof,16L);
+    __e_acsl_eq = __gmpz_cmp((__mpz_struct const *)(__e_acsl_block_length_2),
+                             (__mpz_struct const *)(__e_acsl_sizeof));
+    __e_acsl_assert(__e_acsl_eq == 0,(char *)"Assertion",(char *)"main",
+                    (char *)"\\block_length((int *)A) == sizeof(A)",15);
+    __gmpz_clear(__e_acsl_block_length_2);
+    __gmpz_clear(__e_acsl_sizeof);
+  }
+  /*@ assert \block_length(&A[3]) ≡ sizeof(A); */
+  {
+    unsigned long __e_acsl_block_length_3;
+    mpz_t __e_acsl_block_length_4;
+    mpz_t __e_acsl_sizeof_2;
+    int __e_acsl_eq_2;
+    __e_acsl_block_length_3 = __block_length((void *)(& A[3]));
+    __gmpz_init_set_ui(__e_acsl_block_length_4,__e_acsl_block_length_3);
+    __gmpz_init_set_si(__e_acsl_sizeof_2,16L);
+    __e_acsl_eq_2 = __gmpz_cmp((__mpz_struct const *)(__e_acsl_block_length_4),
+                               (__mpz_struct const *)(__e_acsl_sizeof_2));
+    __e_acsl_assert(__e_acsl_eq_2 == 0,(char *)"Assertion",(char *)"main",
+                    (char *)"\\block_length(&A[3]) == sizeof(A)",16);
+    __gmpz_clear(__e_acsl_block_length_4);
+    __gmpz_clear(__e_acsl_sizeof_2);
+  }
+  /*@ assert \block_length(PA) ≡ sizeof(A); */
+  {
+    unsigned long __e_acsl_block_length_5;
+    mpz_t __e_acsl_block_length_6;
+    mpz_t __e_acsl_sizeof_3;
+    int __e_acsl_eq_3;
+    __e_acsl_block_length_5 = __block_length((void *)PA);
+    __gmpz_init_set_ui(__e_acsl_block_length_6,__e_acsl_block_length_5);
+    __gmpz_init_set_si(__e_acsl_sizeof_3,16L);
+    __e_acsl_eq_3 = __gmpz_cmp((__mpz_struct const *)(__e_acsl_block_length_6),
+                               (__mpz_struct const *)(__e_acsl_sizeof_3));
+    __e_acsl_assert(__e_acsl_eq_3 == 0,(char *)"Assertion",(char *)"main",
+                    (char *)"\\block_length(PA) == sizeof(A)",17);
+    __gmpz_clear(__e_acsl_block_length_6);
+    __gmpz_clear(__e_acsl_sizeof_3);
+  }
+  PA ++;
+  /*@ assert \block_length(PA+1) ≡ \block_length(&A[1]); */
+  {
+    unsigned long __e_acsl_block_length_7;
+    mpz_t __e_acsl_block_length_8;
+    unsigned long __e_acsl_block_length_9;
+    mpz_t __e_acsl_block_length_10;
+    int __e_acsl_eq_4;
+    __e_acsl_block_length_7 = __block_length((void *)(PA + 1));
+    __gmpz_init_set_ui(__e_acsl_block_length_8,__e_acsl_block_length_7);
+    __e_acsl_block_length_9 = __block_length((void *)(& A[1]));
+    __gmpz_init_set_ui(__e_acsl_block_length_10,__e_acsl_block_length_9);
+    __e_acsl_eq_4 = __gmpz_cmp((__mpz_struct const *)(__e_acsl_block_length_8),
+                               (__mpz_struct const *)(__e_acsl_block_length_10));
+    __e_acsl_assert(__e_acsl_eq_4 == 0,(char *)"Assertion",(char *)"main",
+                    (char *)"\\block_length(PA+1) == \\block_length(&A[1])",
+                    19);
+    __gmpz_clear(__e_acsl_block_length_8);
+    __gmpz_clear(__e_acsl_block_length_10);
+  }
+  __initialize((void *)(a),sizeof(int));
+  a[0] = 1;
+  __initialize((void *)(& a[1]),sizeof(int));
+  a[1] = 2;
+  __initialize((void *)(& a[2]),sizeof(int));
+  a[2] = 3;
+  __initialize((void *)(& a[3]),sizeof(int));
+  a[3] = 4;
+  __full_init((void *)(& pa));
+  pa = (int *)(& a);
+  /*@ assert \block_length((int *)a) ≡ sizeof(a); */
+  {
+    unsigned long __e_acsl_block_length_11;
+    mpz_t __e_acsl_block_length_12;
+    mpz_t __e_acsl_sizeof_4;
+    int __e_acsl_eq_5;
+    __e_acsl_block_length_11 = __block_length((void *)(a));
+    __gmpz_init_set_ui(__e_acsl_block_length_12,__e_acsl_block_length_11);
+    __gmpz_init_set_si(__e_acsl_sizeof_4,16L);
+    __e_acsl_eq_5 = __gmpz_cmp((__mpz_struct const *)(__e_acsl_block_length_12),
+                               (__mpz_struct const *)(__e_acsl_sizeof_4));
+    __e_acsl_assert(__e_acsl_eq_5 == 0,(char *)"Assertion",(char *)"main",
+                    (char *)"\\block_length((int *)a) == sizeof(a)",24);
+    __gmpz_clear(__e_acsl_block_length_12);
+    __gmpz_clear(__e_acsl_sizeof_4);
+  }
+  /*@ assert \block_length(&a[3]) ≡ sizeof(a); */
+  {
+    unsigned long __e_acsl_block_length_13;
+    mpz_t __e_acsl_block_length_14;
+    mpz_t __e_acsl_sizeof_5;
+    int __e_acsl_eq_6;
+    __e_acsl_block_length_13 = __block_length((void *)(& a[3]));
+    __gmpz_init_set_ui(__e_acsl_block_length_14,__e_acsl_block_length_13);
+    __gmpz_init_set_si(__e_acsl_sizeof_5,16L);
+    __e_acsl_eq_6 = __gmpz_cmp((__mpz_struct const *)(__e_acsl_block_length_14),
+                               (__mpz_struct const *)(__e_acsl_sizeof_5));
+    __e_acsl_assert(__e_acsl_eq_6 == 0,(char *)"Assertion",(char *)"main",
+                    (char *)"\\block_length(&a[3]) == sizeof(a)",25);
+    __gmpz_clear(__e_acsl_block_length_14);
+    __gmpz_clear(__e_acsl_sizeof_5);
+  }
+  /*@ assert \block_length(pa) ≡ sizeof(a); */
+  {
+    unsigned long __e_acsl_block_length_15;
+    mpz_t __e_acsl_block_length_16;
+    mpz_t __e_acsl_sizeof_6;
+    int __e_acsl_eq_7;
+    __e_acsl_block_length_15 = __block_length((void *)pa);
+    __gmpz_init_set_ui(__e_acsl_block_length_16,__e_acsl_block_length_15);
+    __gmpz_init_set_si(__e_acsl_sizeof_6,16L);
+    __e_acsl_eq_7 = __gmpz_cmp((__mpz_struct const *)(__e_acsl_block_length_16),
+                               (__mpz_struct const *)(__e_acsl_sizeof_6));
+    __e_acsl_assert(__e_acsl_eq_7 == 0,(char *)"Assertion",(char *)"main",
+                    (char *)"\\block_length(pa) == sizeof(a)",26);
+    __gmpz_clear(__e_acsl_block_length_16);
+    __gmpz_clear(__e_acsl_sizeof_6);
+  }
+  __full_init((void *)(& pa));
+  pa ++;
+  /*@ assert \block_length(pa+1) ≡ \block_length(&a[1]); */
+  {
+    unsigned long __e_acsl_block_length_17;
+    mpz_t __e_acsl_block_length_18;
+    unsigned long __e_acsl_block_length_19;
+    mpz_t __e_acsl_block_length_20;
+    int __e_acsl_eq_8;
+    __e_acsl_block_length_17 = __block_length((void *)(pa + 1));
+    __gmpz_init_set_ui(__e_acsl_block_length_18,__e_acsl_block_length_17);
+    __e_acsl_block_length_19 = __block_length((void *)(& a[1]));
+    __gmpz_init_set_ui(__e_acsl_block_length_20,__e_acsl_block_length_19);
+    __e_acsl_eq_8 = __gmpz_cmp((__mpz_struct const *)(__e_acsl_block_length_18),
+                               (__mpz_struct const *)(__e_acsl_block_length_20));
+    __e_acsl_assert(__e_acsl_eq_8 == 0,(char *)"Assertion",(char *)"main",
+                    (char *)"\\block_length(pa+1) == \\block_length(&a[1])",
+                    28);
+    __gmpz_clear(__e_acsl_block_length_18);
+    __gmpz_clear(__e_acsl_block_length_20);
+  }
+  __full_init((void *)(& l));
+  l = (long)4;
+  __full_init((void *)(& pl));
+  pl = (char *)(& l);
+  /*@ assert \block_length(&l) ≡ sizeof(long); */
+  {
+    unsigned long __e_acsl_block_length_21;
+    mpz_t __e_acsl_block_length_22;
+    mpz_t __e_acsl_sizeof_7;
+    int __e_acsl_eq_9;
+    __e_acsl_block_length_21 = __block_length((void *)(& l));
+    __gmpz_init_set_ui(__e_acsl_block_length_22,__e_acsl_block_length_21);
+    __gmpz_init_set_si(__e_acsl_sizeof_7,8L);
+    __e_acsl_eq_9 = __gmpz_cmp((__mpz_struct const *)(__e_acsl_block_length_22),
+                               (__mpz_struct const *)(__e_acsl_sizeof_7));
+    __e_acsl_assert(__e_acsl_eq_9 == 0,(char *)"Assertion",(char *)"main",
+                    (char *)"\\block_length(&l) == sizeof(long)",34);
+    __gmpz_clear(__e_acsl_block_length_22);
+    __gmpz_clear(__e_acsl_sizeof_7);
+  }
+  /*@ assert \block_length(pl) ≡ sizeof(long); */
+  {
+    unsigned long __e_acsl_block_length_23;
+    mpz_t __e_acsl_block_length_24;
+    mpz_t __e_acsl_sizeof_8;
+    int __e_acsl_eq_10;
+    __e_acsl_block_length_23 = __block_length((void *)pl);
+    __gmpz_init_set_ui(__e_acsl_block_length_24,__e_acsl_block_length_23);
+    __gmpz_init_set_si(__e_acsl_sizeof_8,8L);
+    __e_acsl_eq_10 = __gmpz_cmp((__mpz_struct const *)(__e_acsl_block_length_24),
+                                (__mpz_struct const *)(__e_acsl_sizeof_8));
+    __e_acsl_assert(__e_acsl_eq_10 == 0,(char *)"Assertion",(char *)"main",
+                    (char *)"\\block_length(pl) == sizeof(long)",35);
+    __gmpz_clear(__e_acsl_block_length_24);
+    __gmpz_clear(__e_acsl_sizeof_8);
+  }
+  /*@ assert \block_length(pl+7) ≡ sizeof(long); */
+  {
+    unsigned long __e_acsl_block_length_25;
+    mpz_t __e_acsl_block_length_26;
+    mpz_t __e_acsl_sizeof_9;
+    int __e_acsl_eq_11;
+    __e_acsl_block_length_25 = __block_length((void *)(pl + 7));
+    __gmpz_init_set_ui(__e_acsl_block_length_26,__e_acsl_block_length_25);
+    __gmpz_init_set_si(__e_acsl_sizeof_9,8L);
+    __e_acsl_eq_11 = __gmpz_cmp((__mpz_struct const *)(__e_acsl_block_length_26),
+                                (__mpz_struct const *)(__e_acsl_sizeof_9));
+    __e_acsl_assert(__e_acsl_eq_11 == 0,(char *)"Assertion",(char *)"main",
+                    (char *)"\\block_length(pl+7) == sizeof(long)",36);
+    __gmpz_clear(__e_acsl_block_length_26);
+    __gmpz_clear(__e_acsl_sizeof_9);
+  }
+  __full_init((void *)(& pi));
+  pi = (int *)(& l);
+  /*@ assert \block_length(pi) ≡ \block_length(&l); */
+  {
+    unsigned long __e_acsl_block_length_27;
+    mpz_t __e_acsl_block_length_28;
+    unsigned long __e_acsl_block_length_29;
+    mpz_t __e_acsl_block_length_30;
+    int __e_acsl_eq_12;
+    __e_acsl_block_length_27 = __block_length((void *)pi);
+    __gmpz_init_set_ui(__e_acsl_block_length_28,__e_acsl_block_length_27);
+    __e_acsl_block_length_29 = __block_length((void *)(& l));
+    __gmpz_init_set_ui(__e_acsl_block_length_30,__e_acsl_block_length_29);
+    __e_acsl_eq_12 = __gmpz_cmp((__mpz_struct const *)(__e_acsl_block_length_28),
+                                (__mpz_struct const *)(__e_acsl_block_length_30));
+    __e_acsl_assert(__e_acsl_eq_12 == 0,(char *)"Assertion",(char *)"main",
+                    (char *)"\\block_length(pi) == \\block_length(&l)",38);
+    __gmpz_clear(__e_acsl_block_length_28);
+    __gmpz_clear(__e_acsl_block_length_30);
+  }
+  __full_init((void *)(& pi));
+  pi ++;
+  /*@ assert \block_length(pi) ≡ \block_length(&l); */
+  {
+    unsigned long __e_acsl_block_length_31;
+    mpz_t __e_acsl_block_length_32;
+    unsigned long __e_acsl_block_length_33;
+    mpz_t __e_acsl_block_length_34;
+    int __e_acsl_eq_13;
+    __e_acsl_block_length_31 = __block_length((void *)pi);
+    __gmpz_init_set_ui(__e_acsl_block_length_32,__e_acsl_block_length_31);
+    __e_acsl_block_length_33 = __block_length((void *)(& l));
+    __gmpz_init_set_ui(__e_acsl_block_length_34,__e_acsl_block_length_33);
+    __e_acsl_eq_13 = __gmpz_cmp((__mpz_struct const *)(__e_acsl_block_length_32),
+                                (__mpz_struct const *)(__e_acsl_block_length_34));
+    __e_acsl_assert(__e_acsl_eq_13 == 0,(char *)"Assertion",(char *)"main",
+                    (char *)"\\block_length(pi) == \\block_length(&l)",40);
+    __gmpz_clear(__e_acsl_block_length_32);
+    __gmpz_clear(__e_acsl_block_length_34);
+  }
+  size = (unsigned long)12;
+  __full_init((void *)(& p));
+  p = (char *)__e_acsl_malloc(size);
+  /*@ assert \block_length(p) ≡ size; */
+  {
+    unsigned long __e_acsl_block_length_35;
+    mpz_t __e_acsl_block_length_36;
+    mpz_t __e_acsl_size;
+    int __e_acsl_eq_14;
+    __e_acsl_block_length_35 = __block_length((void *)p);
+    __gmpz_init_set_ui(__e_acsl_block_length_36,__e_acsl_block_length_35);
+    __gmpz_init_set_ui(__e_acsl_size,size);
+    __e_acsl_eq_14 = __gmpz_cmp((__mpz_struct const *)(__e_acsl_block_length_36),
+                                (__mpz_struct const *)(__e_acsl_size));
+    __e_acsl_assert(__e_acsl_eq_14 == 0,(char *)"Assertion",(char *)"main",
+                    (char *)"\\block_length(p) == size",45);
+    __gmpz_clear(__e_acsl_block_length_36);
+    __gmpz_clear(__e_acsl_size);
+  }
+  /*@ assert \block_length(p+11) ≡ size; */
+  {
+    unsigned long __e_acsl_block_length_37;
+    mpz_t __e_acsl_block_length_38;
+    mpz_t __e_acsl_size_2;
+    int __e_acsl_eq_15;
+    __e_acsl_block_length_37 = __block_length((void *)(p + 11));
+    __gmpz_init_set_ui(__e_acsl_block_length_38,__e_acsl_block_length_37);
+    __gmpz_init_set_ui(__e_acsl_size_2,size);
+    __e_acsl_eq_15 = __gmpz_cmp((__mpz_struct const *)(__e_acsl_block_length_38),
+                                (__mpz_struct const *)(__e_acsl_size_2));
+    __e_acsl_assert(__e_acsl_eq_15 == 0,(char *)"Assertion",(char *)"main",
+                    (char *)"\\block_length(p+11) == size",46);
+    __gmpz_clear(__e_acsl_block_length_38);
+    __gmpz_clear(__e_acsl_size_2);
+  }
+  __full_init((void *)(& p));
+  p += 5;
+  /*@ assert \block_length(p+5) ≡ \block_length(p-5); */
+  {
+    unsigned long __e_acsl_block_length_39;
+    mpz_t __e_acsl_block_length_40;
+    unsigned long __e_acsl_block_length_41;
+    mpz_t __e_acsl_block_length_42;
+    int __e_acsl_eq_16;
+    __e_acsl_block_length_39 = __block_length((void *)(p + 5));
+    __gmpz_init_set_ui(__e_acsl_block_length_40,__e_acsl_block_length_39);
+    __e_acsl_block_length_41 = __block_length((void *)(p - 5));
+    __gmpz_init_set_ui(__e_acsl_block_length_42,__e_acsl_block_length_41);
+    __e_acsl_eq_16 = __gmpz_cmp((__mpz_struct const *)(__e_acsl_block_length_40),
+                                (__mpz_struct const *)(__e_acsl_block_length_42));
+    __e_acsl_assert(__e_acsl_eq_16 == 0,(char *)"Assertion",(char *)"main",
+                    (char *)"\\block_length(p+5) == \\block_length(p-5)",48);
+    __gmpz_clear(__e_acsl_block_length_40);
+    __gmpz_clear(__e_acsl_block_length_42);
+  }
+  size = (unsigned long)30 * sizeof(long);
+  __full_init((void *)(& q));
+  q = (long *)__e_acsl_malloc(size);
+  /*@ assert \block_length(q) ≡ size; */
+  {
+    unsigned long __e_acsl_block_length_43;
+    mpz_t __e_acsl_block_length_44;
+    mpz_t __e_acsl_size_3;
+    int __e_acsl_eq_17;
+    __e_acsl_block_length_43 = __block_length((void *)q);
+    __gmpz_init_set_ui(__e_acsl_block_length_44,__e_acsl_block_length_43);
+    __gmpz_init_set_ui(__e_acsl_size_3,size);
+    __e_acsl_eq_17 = __gmpz_cmp((__mpz_struct const *)(__e_acsl_block_length_44),
+                                (__mpz_struct const *)(__e_acsl_size_3));
+    __e_acsl_assert(__e_acsl_eq_17 == 0,(char *)"Assertion",(char *)"main",
+                    (char *)"\\block_length(q) == size",54);
+    __gmpz_clear(__e_acsl_block_length_44);
+    __gmpz_clear(__e_acsl_size_3);
+  }
+  __full_init((void *)(& q));
+  q += 4;
+  /*@ assert \block_length(q) ≡ size; */
+  {
+    unsigned long __e_acsl_block_length_45;
+    mpz_t __e_acsl_block_length_46;
+    mpz_t __e_acsl_size_4;
+    int __e_acsl_eq_18;
+    __e_acsl_block_length_45 = __block_length((void *)q);
+    __gmpz_init_set_ui(__e_acsl_block_length_46,__e_acsl_block_length_45);
+    __gmpz_init_set_ui(__e_acsl_size_4,size);
+    __e_acsl_eq_18 = __gmpz_cmp((__mpz_struct const *)(__e_acsl_block_length_46),
+                                (__mpz_struct const *)(__e_acsl_size_4));
+    __e_acsl_assert(__e_acsl_eq_18 == 0,(char *)"Assertion",(char *)"main",
+                    (char *)"\\block_length(q) == size",56);
+    __gmpz_clear(__e_acsl_block_length_46);
+    __gmpz_clear(__e_acsl_size_4);
+  }
+  /*@ assert \block_length(&ZERO) ≡ 0; */
+  {
+    unsigned long __e_acsl_block_length_47;
+    mpz_t __e_acsl_block_length_48;
+    mpz_t __e_acsl;
+    int __e_acsl_eq_19;
+    __e_acsl_block_length_47 = __block_length((void *)(& ZERO));
+    __gmpz_init_set_ui(__e_acsl_block_length_48,__e_acsl_block_length_47);
+    __gmpz_init_set_si(__e_acsl,(long)0);
+    __e_acsl_eq_19 = __gmpz_cmp((__mpz_struct const *)(__e_acsl_block_length_48),
+                                (__mpz_struct const *)(__e_acsl));
+    __e_acsl_assert(__e_acsl_eq_19 == 0,(char *)"Assertion",(char *)"main",
+                    (char *)"\\block_length(&ZERO) == 0",60);
+    __gmpz_clear(__e_acsl_block_length_48);
+    __gmpz_clear(__e_acsl);
+  }
+  /*@ assert \block_length(&zero) ≡ 0; */
+  {
+    unsigned long __e_acsl_block_length_49;
+    mpz_t __e_acsl_block_length_50;
+    mpz_t __e_acsl_2;
+    int __e_acsl_eq_20;
+    __e_acsl_block_length_49 = __block_length((void *)(& zero));
+    __gmpz_init_set_ui(__e_acsl_block_length_50,__e_acsl_block_length_49);
+    __gmpz_init_set_si(__e_acsl_2,(long)0);
+    __e_acsl_eq_20 = __gmpz_cmp((__mpz_struct const *)(__e_acsl_block_length_50),
+                                (__mpz_struct const *)(__e_acsl_2));
+    __e_acsl_assert(__e_acsl_eq_20 == 0,(char *)"Assertion",(char *)"main",
+                    (char *)"\\block_length(&zero) == 0",61);
+    __gmpz_clear(__e_acsl_block_length_50);
+    __gmpz_clear(__e_acsl_2);
+  }
+  __retres = 0;
+  __delete_block((void *)(& ZERO));
+  __delete_block((void *)(& PA));
+  __delete_block((void *)(A));
+  __delete_block((void *)(& zero));
+  __delete_block((void *)(& q));
+  __delete_block((void *)(& p));
+  __delete_block((void *)(& pi));
+  __delete_block((void *)(& pl));
+  __delete_block((void *)(& l));
+  __delete_block((void *)(& pa));
+  __delete_block((void *)(a));
+  __e_acsl_memory_clean();
+  return __retres;
+}
+
+
diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_call.c b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_call.c
index efb8e3d3aefd15d0da70e5d7973f5ed35884c4ae..11d16adfb95a3cb347ea8c506d44c5e19fa0a63b 100644
--- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_call.c
+++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_call.c
@@ -22,8 +22,8 @@ int *__e_acsl_f(int *x, int *y)
   {
     int __e_acsl_valid;
     __e_acsl_valid = __valid((void *)__retres,sizeof(int));
-    e_acsl_assert(__e_acsl_valid,(char *)"Postcondition",(char *)"f",
-                  (char *)"\\valid(\\result)",10);
+    __e_acsl_assert(__e_acsl_valid,(char *)"Postcondition",(char *)"f",
+                    (char *)"\\valid(\\result)",10);
     __delete_block((void *)(& x));
     __delete_block((void *)(& y));
     __delete_block((void *)(& __retres));
@@ -38,6 +38,7 @@ int main(void)
   int *p;
   int *q;
   int *r;
+  __e_acsl_memory_init((int *)0,(char ***)0,8UL);
   __store_block((void *)(& q),8UL);
   __store_block((void *)(& p),8UL);
   __store_block((void *)(& x),4UL);
diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_compound_initializers.c b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_compound_initializers.c
index 5821a3b4a08153587fbf611e705b2e6e2dd58116..c543120ba0d1f7c9632516262b0e752338a54675 100644
--- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_compound_initializers.c
+++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_compound_initializers.c
@@ -18,28 +18,28 @@ int _E = 44;
 int _F = 9;
 struct ST _G[2] =
   {{.str = (char *)"First", .num = 99}, {.str = (char *)"Second", .num = 147}};
-void __e_acsl_memory_init(void)
+void __e_acsl_globals_init(void)
 {
   __e_acsl_literal_string_3 = "ZZ";
   __store_block((void *)__e_acsl_literal_string_3,sizeof("ZZ"));
   __full_init((void *)__e_acsl_literal_string_3);
-  __literal_string((void *)__e_acsl_literal_string_3);
+  __readonly((void *)__e_acsl_literal_string_3);
   __e_acsl_literal_string = "YY";
   __store_block((void *)__e_acsl_literal_string,sizeof("YY"));
   __full_init((void *)__e_acsl_literal_string);
-  __literal_string((void *)__e_acsl_literal_string);
+  __readonly((void *)__e_acsl_literal_string);
   __e_acsl_literal_string_2 = "XX";
   __store_block((void *)__e_acsl_literal_string_2,sizeof("XX"));
   __full_init((void *)__e_acsl_literal_string_2);
-  __literal_string((void *)__e_acsl_literal_string_2);
+  __readonly((void *)__e_acsl_literal_string_2);
   __e_acsl_literal_string_4 = "Second";
   __store_block((void *)__e_acsl_literal_string_4,sizeof("Second"));
   __full_init((void *)__e_acsl_literal_string_4);
-  __literal_string((void *)__e_acsl_literal_string_4);
+  __readonly((void *)__e_acsl_literal_string_4);
   __e_acsl_literal_string_5 = "First";
   __store_block((void *)__e_acsl_literal_string_5,sizeof("First"));
   __full_init((void *)__e_acsl_literal_string_5);
-  __literal_string((void *)__e_acsl_literal_string_5);
+  __readonly((void *)__e_acsl_literal_string_5);
   __store_block((void *)(_G),32UL);
   __full_init((void *)(& _G));
   __store_block((void *)(& _E),4UL);
@@ -60,13 +60,14 @@ void __e_acsl_memory_init(void)
 int main(int argc, char **argv)
 {
   int __retres;
-  __e_acsl_memory_init();
+  __e_acsl_memory_init(& argc,& argv,8UL);
+  __e_acsl_globals_init();
   /*@ assert \valid((char **)_A); */
   {
     int __e_acsl_valid;
     __e_acsl_valid = __valid((void *)(_A),sizeof(char *));
-    e_acsl_assert(__e_acsl_valid,(char *)"Assertion",(char *)"main",
-                  (char *)"\\valid((char **)_A)",33);
+    __e_acsl_assert(__e_acsl_valid,(char *)"Assertion",(char *)"main",
+                    (char *)"\\valid((char **)_A)",33);
   }
   /*@ assert \valid_read(_A[0]); */
   {
@@ -79,8 +80,8 @@ int main(int argc, char **argv)
       __e_acsl_and = __e_acsl_valid_read;
     }
     else __e_acsl_and = 0;
-    e_acsl_assert(__e_acsl_and,(char *)"Assertion",(char *)"main",
-                  (char *)"\\valid_read(_A[0])",34);
+    __e_acsl_assert(__e_acsl_and,(char *)"Assertion",(char *)"main",
+                    (char *)"\\valid_read(_A[0])",34);
   }
   /*@ assert \valid_read(_A[1]); */
   {
@@ -93,57 +94,57 @@ int main(int argc, char **argv)
       __e_acsl_and_2 = __e_acsl_valid_read_2;
     }
     else __e_acsl_and_2 = 0;
-    e_acsl_assert(__e_acsl_and_2,(char *)"Assertion",(char *)"main",
-                  (char *)"\\valid_read(_A[1])",35);
+    __e_acsl_assert(__e_acsl_and_2,(char *)"Assertion",(char *)"main",
+                    (char *)"\\valid_read(_A[1])",35);
   }
   /*@ assert \valid_read(_B); */
   {
     int __e_acsl_valid_read_3;
     __e_acsl_valid_read_3 = __valid_read((void *)_B,sizeof(char));
-    e_acsl_assert(__e_acsl_valid_read_3,(char *)"Assertion",(char *)"main",
-                  (char *)"\\valid_read(_B)",36);
+    __e_acsl_assert(__e_acsl_valid_read_3,(char *)"Assertion",(char *)"main",
+                    (char *)"\\valid_read(_B)",36);
   }
   /*@ assert \valid(&_C); */
   {
     int __e_acsl_valid_2;
     __e_acsl_valid_2 = __valid((void *)(& _C),sizeof(char *));
-    e_acsl_assert(__e_acsl_valid_2,(char *)"Assertion",(char *)"main",
-                  (char *)"\\valid(&_C)",37);
+    __e_acsl_assert(__e_acsl_valid_2,(char *)"Assertion",(char *)"main",
+                    (char *)"\\valid(&_C)",37);
   }
   /*@ assert \valid((int *)_D); */
   {
     int __e_acsl_valid_3;
     __e_acsl_valid_3 = __valid((void *)(_D),sizeof(int));
-    e_acsl_assert(__e_acsl_valid_3,(char *)"Assertion",(char *)"main",
-                  (char *)"\\valid((int *)_D)",38);
+    __e_acsl_assert(__e_acsl_valid_3,(char *)"Assertion",(char *)"main",
+                    (char *)"\\valid((int *)_D)",38);
   }
   /*@ assert \valid(&_E); */
   {
     int __e_acsl_valid_4;
     __e_acsl_valid_4 = __valid((void *)(& _E),sizeof(int));
-    e_acsl_assert(__e_acsl_valid_4,(char *)"Assertion",(char *)"main",
-                  (char *)"\\valid(&_E)",39);
+    __e_acsl_assert(__e_acsl_valid_4,(char *)"Assertion",(char *)"main",
+                    (char *)"\\valid(&_E)",39);
   }
   /*@ assert \valid(&_F); */
   {
     int __e_acsl_valid_5;
     __e_acsl_valid_5 = __valid((void *)(& _F),sizeof(int));
-    e_acsl_assert(__e_acsl_valid_5,(char *)"Assertion",(char *)"main",
-                  (char *)"\\valid(&_F)",40);
+    __e_acsl_assert(__e_acsl_valid_5,(char *)"Assertion",(char *)"main",
+                    (char *)"\\valid(&_F)",40);
   }
   /*@ assert _E ≡ 44; */
-  e_acsl_assert(_E == 44,(char *)"Assertion",(char *)"main",
-                (char *)"_E == 44",41);
+  __e_acsl_assert(_E == 44,(char *)"Assertion",(char *)"main",
+                  (char *)"_E == 44",41);
   /*@ assert \valid(&_G); */
   {
     int __e_acsl_valid_6;
     __e_acsl_valid_6 = __valid((void *)(& _G),sizeof(struct ST [2]));
-    e_acsl_assert(__e_acsl_valid_6,(char *)"Assertion",(char *)"main",
-                  (char *)"\\valid(&_G)",42);
+    __e_acsl_assert(__e_acsl_valid_6,(char *)"Assertion",(char *)"main",
+                    (char *)"\\valid(&_G)",42);
   }
   /*@ assert _G[0].num ≡ 99; */
-  e_acsl_assert(_G[0].num == 99,(char *)"Assertion",(char *)"main",
-                (char *)"_G[0].num == 99",43);
+  __e_acsl_assert(_G[0].num == 99,(char *)"Assertion",(char *)"main",
+                  (char *)"_G[0].num == 99",43);
   __retres = 0;
   __delete_block((void *)(_G));
   __delete_block((void *)(& _E));
diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_false.c b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_false.c
index 63f0f0cd62edec69db2bfcd2d7027689be58a4ac..72116bfac3a7dcbade0aabc0f2ce1f57ac702241 100644
--- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_false.c
+++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_false.c
@@ -6,7 +6,7 @@ int main(void)
   x = 0;
   if (x) 
     /*@ assert \false; */
-    e_acsl_assert(0,(char *)"Assertion",(char *)"main",(char *)"\\false",6);
+    __e_acsl_assert(0,(char *)"Assertion",(char *)"main",(char *)"\\false",6);
   __retres = 0;
   return __retres;
 }
diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_freeable.c b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_freeable.c
index f0968c04a1ef0c3db578f55423ee3a726b99fe6e..e648aba7240f9e4e6947fc90e9ea2c08a09011c0 100644
--- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_freeable.c
+++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_freeable.c
@@ -1,6 +1,6 @@
 /* Generated by Frama-C */
 char array[1024];
-void __e_acsl_memory_init(void)
+void __e_acsl_globals_init(void)
 {
   __store_block((void *)(array),1024UL);
   __full_init((void *)(& array));
@@ -11,22 +11,23 @@ int main(void)
 {
   int __retres;
   int *p;
-  __e_acsl_memory_init();
+  __e_acsl_memory_init((int *)0,(char ***)0,8UL);
+  __e_acsl_globals_init();
   __store_block((void *)(& p),8UL);
   /*@ assert ¬\freeable(p); */
   {
     int __e_acsl_freeable;
     /*@ assert Value: initialisation: \initialized(&p); */
     __e_acsl_freeable = __freeable((void *)p);
-    e_acsl_assert(! __e_acsl_freeable,(char *)"Assertion",(char *)"main",
-                  (char *)"!\\freeable(p)",15);
+    __e_acsl_assert(! __e_acsl_freeable,(char *)"Assertion",(char *)"main",
+                    (char *)"!\\freeable(p)",15);
   }
   /*@ assert ¬\freeable((void *)0); */
   {
     int __e_acsl_freeable_2;
     __e_acsl_freeable_2 = __freeable((void *)0);
-    e_acsl_assert(! __e_acsl_freeable_2,(char *)"Assertion",(char *)"main",
-                  (char *)"!\\freeable((void *)0)",16);
+    __e_acsl_assert(! __e_acsl_freeable_2,(char *)"Assertion",(char *)"main",
+                    (char *)"!\\freeable((void *)0)",16);
   }
   __full_init((void *)(& p));
   p = (int *)__e_acsl_malloc((unsigned long)4 * sizeof(int));
@@ -34,37 +35,37 @@ int main(void)
   {
     int __e_acsl_freeable_3;
     __e_acsl_freeable_3 = __freeable((void *)(p + 1));
-    e_acsl_assert(! __e_acsl_freeable_3,(char *)"Assertion",(char *)"main",
-                  (char *)"!\\freeable(p+1)",18);
+    __e_acsl_assert(! __e_acsl_freeable_3,(char *)"Assertion",(char *)"main",
+                    (char *)"!\\freeable(p+1)",18);
   }
   /*@ assert \freeable(p); */
   {
     int __e_acsl_freeable_4;
     __e_acsl_freeable_4 = __freeable((void *)p);
-    e_acsl_assert(__e_acsl_freeable_4,(char *)"Assertion",(char *)"main",
-                  (char *)"\\freeable(p)",19);
+    __e_acsl_assert(__e_acsl_freeable_4,(char *)"Assertion",(char *)"main",
+                    (char *)"\\freeable(p)",19);
   }
   __e_acsl_free((void *)p);
   /*@ assert ¬\freeable(p); */
   {
     int __e_acsl_freeable_5;
     __e_acsl_freeable_5 = __freeable((void *)p);
-    e_acsl_assert(! __e_acsl_freeable_5,(char *)"Assertion",(char *)"main",
-                  (char *)"!\\freeable(p)",21);
+    __e_acsl_assert(! __e_acsl_freeable_5,(char *)"Assertion",(char *)"main",
+                    (char *)"!\\freeable(p)",21);
   }
   /*@ assert ¬\freeable((char *)array); */
   {
     int __e_acsl_freeable_6;
     __e_acsl_freeable_6 = __freeable((void *)(array));
-    e_acsl_assert(! __e_acsl_freeable_6,(char *)"Assertion",(char *)"main",
-                  (char *)"!\\freeable((char *)array)",24);
+    __e_acsl_assert(! __e_acsl_freeable_6,(char *)"Assertion",(char *)"main",
+                    (char *)"!\\freeable((char *)array)",24);
   }
   /*@ assert ¬\freeable(&array[5]); */
   {
     int __e_acsl_freeable_7;
     __e_acsl_freeable_7 = __freeable((void *)(& array[5]));
-    e_acsl_assert(! __e_acsl_freeable_7,(char *)"Assertion",(char *)"main",
-                  (char *)"!\\freeable(&array[5])",25);
+    __e_acsl_assert(! __e_acsl_freeable_7,(char *)"Assertion",(char *)"main",
+                    (char *)"!\\freeable(&array[5])",25);
   }
   __retres = 0;
   __delete_block((void *)(array));
diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_function_contract.c b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_function_contract.c
index 88f02b5b1ad5b70d798124a35d8f0d3be8e8a7c7..83e0f47ee457972a5e7d0711b53f3d5cc7f3705f 100644
--- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_function_contract.c
+++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_function_contract.c
@@ -12,8 +12,8 @@ void f(void)
 void __e_acsl_f(void)
 {
   f();
-  e_acsl_assert(X == 1,(char *)"Postcondition",(char *)"f",(char *)"X == 1",
-                8);
+  __e_acsl_assert(X == 1,(char *)"Postcondition",(char *)"f",
+                  (char *)"X == 1",8);
   return;
 }
 
@@ -30,10 +30,10 @@ void g(void)
 void __e_acsl_g(void)
 {
   g();
-  e_acsl_assert(X == 2,(char *)"Postcondition",(char *)"g",(char *)"X == 2",
-                12);
-  e_acsl_assert(Y == 2,(char *)"Postcondition",(char *)"g",(char *)"Y == 2",
-                13);
+  __e_acsl_assert(X == 2,(char *)"Postcondition",(char *)"g",
+                  (char *)"X == 2",12);
+  __e_acsl_assert(Y == 2,(char *)"Postcondition",(char *)"g",
+                  (char *)"Y == 2",13);
   return;
 }
 
@@ -47,8 +47,8 @@ void h(void)
 /*@ requires X ≡ 2; */
 void __e_acsl_h(void)
 {
-  e_acsl_assert(X == 2,(char *)"Precondition",(char *)"h",(char *)"X == 2",
-                17);
+  __e_acsl_assert(X == 2,(char *)"Precondition",(char *)"h",(char *)"X == 2",
+                  17);
   h();
   return;
 }
@@ -65,10 +65,10 @@ void i(void)
     requires Y ≡ 2; */
 void __e_acsl_i(void)
 {
-  e_acsl_assert(X == 3,(char *)"Precondition",(char *)"i",(char *)"X == 3",
-                21);
-  e_acsl_assert(Y == 2,(char *)"Precondition",(char *)"i",(char *)"Y == 2",
-                22);
+  __e_acsl_assert(X == 3,(char *)"Precondition",(char *)"i",(char *)"X == 3",
+                  21);
+  __e_acsl_assert(Y == 2,(char *)"Precondition",(char *)"i",(char *)"Y == 2",
+                  22);
   i();
   return;
 }
@@ -99,17 +99,17 @@ void j(void)
  */
 void __e_acsl_j(void)
 {
-  e_acsl_assert(X == 5,(char *)"Precondition",(char *)"j",(char *)"X == 5",
-                27);
-  e_acsl_assert((long)X == (long)3 + (long)Y,(char *)"Precondition",
-                (char *)"j",(char *)"X == 3+Y",30);
-  e_acsl_assert(Y == 2,(char *)"Precondition",(char *)"j",(char *)"Y == 2",
-                31);
+  __e_acsl_assert(X == 5,(char *)"Precondition",(char *)"j",(char *)"X == 5",
+                  27);
+  __e_acsl_assert((long)X == (long)3 + (long)Y,(char *)"Precondition",
+                  (char *)"j",(char *)"X == 3+Y",30);
+  __e_acsl_assert(Y == 2,(char *)"Precondition",(char *)"j",(char *)"Y == 2",
+                  31);
   j();
-  e_acsl_assert(X == 3,(char *)"Postcondition",(char *)"j",(char *)"X == 3",
-                28);
-  e_acsl_assert((long)X == (long)Y + (long)1,(char *)"Postcondition",
-                (char *)"j",(char *)"X == Y+1",32);
+  __e_acsl_assert(X == 3,(char *)"Postcondition",(char *)"j",
+                  (char *)"X == 3",28);
+  __e_acsl_assert((long)X == (long)Y + (long)1,(char *)"Postcondition",
+                  (char *)"j",(char *)"X == Y+1",32);
   return;
 }
 
@@ -148,18 +148,18 @@ void __e_acsl_k(void)
     int __e_acsl_and_2;
     int __e_acsl_implies_3;
     if (! (X == 1)) __e_acsl_implies = 1; else __e_acsl_implies = X == 0;
-    e_acsl_assert(__e_acsl_implies,(char *)"Precondition",(char *)"k",
-                  (char *)"X == 1 ==> X == 0",38);
+    __e_acsl_assert(__e_acsl_implies,(char *)"Precondition",(char *)"k",
+                    (char *)"X == 1 ==> X == 0",38);
     if (X == 3) __e_acsl_and = Y == 2; else __e_acsl_and = 0;
     if (! __e_acsl_and) __e_acsl_implies_2 = 1;
     else __e_acsl_implies_2 = X == 3;
-    e_acsl_assert(__e_acsl_implies_2,(char *)"Precondition",(char *)"k",
-                  (char *)"X == 3 && Y == 2 ==> X == 3",42);
+    __e_acsl_assert(__e_acsl_implies_2,(char *)"Precondition",(char *)"k",
+                    (char *)"X == 3 && Y == 2 ==> X == 3",42);
     if (X == 3) __e_acsl_and_2 = Y == 2; else __e_acsl_and_2 = 0;
     if (! __e_acsl_and_2) __e_acsl_implies_3 = 1;
     else __e_acsl_implies_3 = (long)X + (long)Y == (long)5;
-    e_acsl_assert(__e_acsl_implies_3,(char *)"Precondition",(char *)"k",
-                  (char *)"X == 3 && Y == 2 ==> X+Y == 5",43);
+    __e_acsl_assert(__e_acsl_implies_3,(char *)"Precondition",(char *)"k",
+                    (char *)"X == 3 && Y == 2 ==> X+Y == 5",43);
     k();
   }
   return;
@@ -169,7 +169,7 @@ void __e_acsl_k(void)
 int l(void)
 {
   /*@ assert Y ≡ 2; */
-  e_acsl_assert(Y == 2,(char *)"Assertion",(char *)"l",(char *)"Y == 2",49);
+  __e_acsl_assert(Y == 2,(char *)"Assertion",(char *)"l",(char *)"Y == 2",49);
   return X;
 }
 
@@ -178,8 +178,8 @@ int __e_acsl_l(void)
 {
   int __retres;
   __retres = l();
-  e_acsl_assert(X == 5,(char *)"Postcondition",(char *)"l",(char *)"X == 5",
-                47);
+  __e_acsl_assert(X == 5,(char *)"Postcondition",(char *)"l",
+                  (char *)"X == 5",47);
   return __retres;
 }
 
@@ -233,16 +233,16 @@ void __e_acsl_m(void)
     int __e_acsl_implies_2;
     int __e_acsl_implies_3;
     if (! __e_acsl_at) __e_acsl_implies = 1; else __e_acsl_implies = X == 95;
-    e_acsl_assert(__e_acsl_implies,(char *)"Postcondition",(char *)"m",
-                  (char *)"\\old(X == 7) ==> X == 95",56);
+    __e_acsl_assert(__e_acsl_implies,(char *)"Postcondition",(char *)"m",
+                    (char *)"\\old(X == 7) ==> X == 95",56);
     if (! __e_acsl_at_2) __e_acsl_implies_2 = 1;
     else __e_acsl_implies_2 = X == 7;
-    e_acsl_assert(__e_acsl_implies_2,(char *)"Postcondition",(char *)"m",
-                  (char *)"\\old(X == 5 && Y == 2) ==> X == 7",60);
+    __e_acsl_assert(__e_acsl_implies_2,(char *)"Postcondition",(char *)"m",
+                    (char *)"\\old(X == 5 && Y == 2) ==> X == 7",60);
     if (! __e_acsl_at_3) __e_acsl_implies_3 = 1;
     else __e_acsl_implies_3 = (long)X == (long)__e_acsl_at_4 + (long)Y;
-    e_acsl_assert(__e_acsl_implies_3,(char *)"Postcondition",(char *)"m",
-                  (char *)"\\old(X == 5 && Y == 2) ==> X == \\old(X)+Y",61);
+    __e_acsl_assert(__e_acsl_implies_3,(char *)"Postcondition",(char *)"m",
+                    (char *)"\\old(X == 5 && Y == 2) ==> X == \\old(X)+Y",61);
     return;
   }
 }
@@ -279,9 +279,10 @@ void __e_acsl_n(void)
 {
   int __e_acsl_at_2;
   int __e_acsl_at;
-  e_acsl_assert(X > 0,(char *)"Precondition",(char *)"n",(char *)"X > 0",65);
-  e_acsl_assert(X < 10,(char *)"Precondition",(char *)"n",(char *)"X < 10",
-                66);
+  __e_acsl_assert(X > 0,(char *)"Precondition",(char *)"n",(char *)"X > 0",
+                  65);
+  __e_acsl_assert(X < 10,(char *)"Precondition",(char *)"n",(char *)"X < 10",
+                  66);
   __e_acsl_at_2 = X == 5;
   __e_acsl_at = X == 7;
   n();
@@ -289,12 +290,12 @@ void __e_acsl_n(void)
     int __e_acsl_implies;
     int __e_acsl_implies_2;
     if (! __e_acsl_at) __e_acsl_implies = 1; else __e_acsl_implies = X == 8;
-    e_acsl_assert(__e_acsl_implies,(char *)"Postcondition",(char *)"n",
-                  (char *)"\\old(X == 7) ==> X == 8",69);
+    __e_acsl_assert(__e_acsl_implies,(char *)"Postcondition",(char *)"n",
+                    (char *)"\\old(X == 7) ==> X == 8",69);
     if (! __e_acsl_at_2) __e_acsl_implies_2 = 1;
     else __e_acsl_implies_2 = X == 98;
-    e_acsl_assert(__e_acsl_implies_2,(char *)"Postcondition",(char *)"n",
-                  (char *)"\\old(X == 5) ==> X == 98",72);
+    __e_acsl_assert(__e_acsl_implies_2,(char *)"Postcondition",(char *)"n",
+                    (char *)"\\old(X == 5) ==> X == 98",72);
     return;
   }
 }
diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_ghost.c b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_ghost.c
index 54b300aad5edf58bde07f5d77d74df27734babc1..7ebafbc24c1c6bf2fe7709a0a3e58a8e94127cf0 100644
--- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_ghost.c
+++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_ghost.c
@@ -1,7 +1,7 @@
 /* Generated by Frama-C */
 int G = 0;
 int *P;
-void __e_acsl_memory_init(void)
+void __e_acsl_globals_init(void)
 {
   __store_block((void *)(& P),8UL);
   __full_init((void *)(& P));
@@ -14,7 +14,8 @@ int main(void)
 {
   int __retres;
   int *q;
-  __e_acsl_memory_init();
+  __e_acsl_memory_init((int *)0,(char ***)0,8UL);
+  __e_acsl_globals_init();
   __store_block((void *)(& q),8UL);
   P = & G;
   __full_init((void *)(& q));
@@ -24,11 +25,11 @@ int main(void)
     int __e_acsl_valid;
     __initialize((void *)P,sizeof(int));
     __e_acsl_valid_read = __valid_read((void *)P,sizeof(int));
-    e_acsl_assert(__e_acsl_valid_read,(char *)"RTE",(char *)"main",
-                  (char *)"mem_access: \\valid_read(P)",14);
+    __e_acsl_assert(__e_acsl_valid_read,(char *)"RTE",(char *)"main",
+                    (char *)"mem_access: \\valid_read(P)",14);
     __e_acsl_valid = __valid((void *)P,sizeof(int));
-    e_acsl_assert(__e_acsl_valid,(char *)"RTE",(char *)"main",
-                  (char *)"mem_access: \\valid(P)",14);
+    __e_acsl_assert(__e_acsl_valid,(char *)"RTE",(char *)"main",
+                    (char *)"mem_access: \\valid(P)",14);
     (*P) ++;
   }
   /*@ assert *q ≡ G; */
@@ -42,10 +43,10 @@ int main(void)
       __e_acsl_and = __e_acsl_valid_read_2;
     }
     else __e_acsl_and = 0;
-    e_acsl_assert(__e_acsl_and,(char *)"RTE",(char *)"main",
-                  (char *)"mem_access: \\valid_read(q)",15);
-    e_acsl_assert(*q == G,(char *)"Assertion",(char *)"main",
-                  (char *)"*q == G",15);
+    __e_acsl_assert(__e_acsl_and,(char *)"RTE",(char *)"main",
+                    (char *)"mem_access: \\valid_read(q)",15);
+    __e_acsl_assert(*q == G,(char *)"Assertion",(char *)"main",
+                    (char *)"*q == G",15);
   }
   __retres = 0;
   __delete_block((void *)(& P));
diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_init.c b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_init.c
index ce0685c3e303d4b6836c949aeaf18c033fc01f6a..509bb30af842cbf1fb16ef1090c92d6476137110 100644
--- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_init.c
+++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_init.c
@@ -1,7 +1,7 @@
 /* Generated by Frama-C */
 int a = 0;
 int b;
-void __e_acsl_memory_init(void)
+void __e_acsl_globals_init(void)
 {
   __store_block((void *)(& b),4UL);
   __full_init((void *)(& b));
@@ -15,7 +15,8 @@ int main(void)
   int __retres;
   int *p;
   int *q;
-  __e_acsl_memory_init();
+  __e_acsl_memory_init((int *)0,(char ***)0,8UL);
+  __e_acsl_globals_init();
   __store_block((void *)(& q),8UL);
   __store_block((void *)(& p),8UL);
   __full_init((void *)(& p));
@@ -23,21 +24,21 @@ int main(void)
   __full_init((void *)(& q));
   q = & b;
   /*@ assert \initialized(&b); */
-  e_acsl_assert(1,(char *)"Assertion",(char *)"main",
-                (char *)"\\initialized(&b)",9);
+  __e_acsl_assert(1,(char *)"Assertion",(char *)"main",
+                  (char *)"\\initialized(&b)",9);
   /*@ assert \initialized(q); */
   {
     int __e_acsl_initialized;
     __e_acsl_initialized = __initialized((void *)q,sizeof(int));
-    e_acsl_assert(__e_acsl_initialized,(char *)"Assertion",(char *)"main",
-                  (char *)"\\initialized(q)",10);
+    __e_acsl_assert(__e_acsl_initialized,(char *)"Assertion",(char *)"main",
+                    (char *)"\\initialized(q)",10);
   }
   /*@ assert \initialized(p); */
   {
     int __e_acsl_initialized_2;
     __e_acsl_initialized_2 = __initialized((void *)p,sizeof(int));
-    e_acsl_assert(__e_acsl_initialized_2,(char *)"Assertion",(char *)"main",
-                  (char *)"\\initialized(p)",11);
+    __e_acsl_assert(__e_acsl_initialized_2,(char *)"Assertion",
+                    (char *)"main",(char *)"\\initialized(p)",11);
   }
   __retres = 0;
   __delete_block((void *)(& b));
diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_initialized.c b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_initialized.c
new file mode 100644
index 0000000000000000000000000000000000000000..e0be4e27e9ccd835e398e9470652c6ea849c940a
--- /dev/null
+++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_initialized.c
@@ -0,0 +1,353 @@
+/* Generated by Frama-C */
+int A = 0;
+int B;
+void __e_acsl_globals_init(void)
+{
+  __store_block((void *)(& B),4UL);
+  __full_init((void *)(& B));
+  __store_block((void *)(& A),4UL);
+  __full_init((void *)(& A));
+  return;
+}
+
+int main(void)
+{
+  int __retres;
+  int *p;
+  int *q;
+  int a;
+  int b;
+  long *r;
+  long c[2];
+  long d[2];
+  int size;
+  char *partsc;
+  char *partsi;
+  int dup[2];
+  __e_acsl_memory_init((int *)0,(char ***)0,8UL);
+  __e_acsl_globals_init();
+  __store_block((void *)(d),16UL);
+  __store_block((void *)(c),16UL);
+  __store_block((void *)(& r),8UL);
+  __store_block((void *)(& b),4UL);
+  __store_block((void *)(& a),4UL);
+  __store_block((void *)(& q),8UL);
+  __store_block((void *)(& p),8UL);
+  __full_init((void *)(& p));
+  p = & A;
+  __full_init((void *)(& q));
+  q = & B;
+  /*@ assert \initialized(&A); */
+  __e_acsl_assert(1,(char *)"Assertion",(char *)"main",
+                  (char *)"\\initialized(&A)",16);
+  /*@ assert \initialized(&B); */
+  __e_acsl_assert(1,(char *)"Assertion",(char *)"main",
+                  (char *)"\\initialized(&B)",17);
+  /*@ assert \initialized(p); */
+  {
+    int __e_acsl_initialized;
+    __e_acsl_initialized = __initialized((void *)p,sizeof(int));
+    __e_acsl_assert(__e_acsl_initialized,(char *)"Assertion",(char *)"main",
+                    (char *)"\\initialized(p)",18);
+  }
+  /*@ assert \initialized(q); */
+  {
+    int __e_acsl_initialized_2;
+    __e_acsl_initialized_2 = __initialized((void *)q,sizeof(int));
+    __e_acsl_assert(__e_acsl_initialized_2,(char *)"Assertion",
+                    (char *)"main",(char *)"\\initialized(q)",19);
+  }
+  __full_init((void *)(& a));
+  a = 0;
+  __initialize((void *)(c),sizeof(long));
+  c[0] = (long)1;
+  __initialize((void *)(& c[1]),sizeof(long));
+  c[1] = (long)1;
+  __full_init((void *)(& p));
+  p = & a;
+  __full_init((void *)(& q));
+  q = & b;
+  /*@ assert \initialized(&a); */
+  {
+    int __e_acsl_initialized_3;
+    __e_acsl_initialized_3 = __initialized((void *)(& a),sizeof(int));
+    __e_acsl_assert(__e_acsl_initialized_3,(char *)"Assertion",
+                    (char *)"main",(char *)"\\initialized(&a)",30);
+  }
+  /*@ assert ¬\initialized(&b); */
+  {
+    int __e_acsl_initialized_4;
+    __e_acsl_initialized_4 = __initialized((void *)(& b),sizeof(int));
+    __e_acsl_assert(! __e_acsl_initialized_4,(char *)"Assertion",
+                    (char *)"main",(char *)"!\\initialized(&b)",31);
+  }
+  /*@ assert \initialized(p); */
+  {
+    int __e_acsl_initialized_5;
+    __e_acsl_initialized_5 = __initialized((void *)p,sizeof(int));
+    __e_acsl_assert(__e_acsl_initialized_5,(char *)"Assertion",
+                    (char *)"main",(char *)"\\initialized(p)",32);
+  }
+  /*@ assert ¬\initialized(q); */
+  {
+    int __e_acsl_initialized_6;
+    __e_acsl_initialized_6 = __initialized((void *)q,sizeof(int));
+    __e_acsl_assert(! __e_acsl_initialized_6,(char *)"Assertion",
+                    (char *)"main",(char *)"!\\initialized(q)",33);
+  }
+  /*@ assert \initialized(&c); */
+  {
+    int __e_acsl_initialized_7;
+    __e_acsl_initialized_7 = __initialized((void *)(& c),sizeof(long [2]));
+    __e_acsl_assert(__e_acsl_initialized_7,(char *)"Assertion",
+                    (char *)"main",(char *)"\\initialized(&c)",34);
+  }
+  /*@ assert ¬\initialized(&d); */
+  {
+    int __e_acsl_initialized_8;
+    __e_acsl_initialized_8 = __initialized((void *)(& d),sizeof(long [2]));
+    __e_acsl_assert(! __e_acsl_initialized_8,(char *)"Assertion",
+                    (char *)"main",(char *)"!\\initialized(&d)",35);
+  }
+  __full_init((void *)(& b));
+  b = 0;
+  /*@ assert \initialized(q); */
+  {
+    int __e_acsl_initialized_9;
+    __e_acsl_initialized_9 = __initialized((void *)q,sizeof(int));
+    __e_acsl_assert(__e_acsl_initialized_9,(char *)"Assertion",
+                    (char *)"main",(char *)"\\initialized(q)",39);
+  }
+  /*@ assert \initialized(&b); */
+  {
+    int __e_acsl_initialized_10;
+    __e_acsl_initialized_10 = __initialized((void *)(& b),sizeof(int));
+    __e_acsl_assert(__e_acsl_initialized_10,(char *)"Assertion",
+                    (char *)"main",(char *)"\\initialized(&b)",40);
+  }
+  __full_init((void *)(& r));
+  r = d;
+  /*@ assert ¬\initialized((long *)d); */
+  {
+    int __e_acsl_initialized_11;
+    __e_acsl_initialized_11 = __initialized((void *)(d),sizeof(long));
+    __e_acsl_assert(! __e_acsl_initialized_11,(char *)"Assertion",
+                    (char *)"main",(char *)"!\\initialized((long *)d)",43);
+  }
+  /*@ assert ¬\initialized(&d[1]); */
+  {
+    int __e_acsl_initialized_12;
+    __e_acsl_initialized_12 = __initialized((void *)(& d[1]),sizeof(long));
+    __e_acsl_assert(! __e_acsl_initialized_12,(char *)"Assertion",
+                    (char *)"main",(char *)"!\\initialized(&d[1])",44);
+  }
+  /*@ assert ¬\initialized(&d); */
+  {
+    int __e_acsl_initialized_13;
+    __e_acsl_initialized_13 = __initialized((void *)(& d),sizeof(long [2]));
+    __e_acsl_assert(! __e_acsl_initialized_13,(char *)"Assertion",
+                    (char *)"main",(char *)"!\\initialized(&d)",45);
+  }
+  /*@ assert ¬\initialized(r); */
+  {
+    int __e_acsl_initialized_14;
+    __e_acsl_initialized_14 = __initialized((void *)r,sizeof(long));
+    __e_acsl_assert(! __e_acsl_initialized_14,(char *)"Assertion",
+                    (char *)"main",(char *)"!\\initialized(r)",46);
+  }
+  /*@ assert ¬\initialized(r+1); */
+  {
+    int __e_acsl_initialized_15;
+    __e_acsl_initialized_15 = __initialized((void *)(r + 1),sizeof(long));
+    __e_acsl_assert(! __e_acsl_initialized_15,(char *)"Assertion",
+                    (char *)"main",(char *)"!\\initialized(r+1)",47);
+  }
+  __initialize((void *)(d),sizeof(long));
+  d[0] = (long)1;
+  /*@ assert \initialized((long *)d); */
+  {
+    int __e_acsl_initialized_16;
+    __e_acsl_initialized_16 = __initialized((void *)(d),sizeof(long));
+    __e_acsl_assert(__e_acsl_initialized_16,(char *)"Assertion",
+                    (char *)"main",(char *)"\\initialized((long *)d)",50);
+  }
+  /*@ assert ¬\initialized(&d[1]); */
+  {
+    int __e_acsl_initialized_17;
+    __e_acsl_initialized_17 = __initialized((void *)(& d[1]),sizeof(long));
+    __e_acsl_assert(! __e_acsl_initialized_17,(char *)"Assertion",
+                    (char *)"main",(char *)"!\\initialized(&d[1])",51);
+  }
+  /*@ assert ¬\initialized(&d); */
+  {
+    int __e_acsl_initialized_18;
+    __e_acsl_initialized_18 = __initialized((void *)(& d),sizeof(long [2]));
+    __e_acsl_assert(! __e_acsl_initialized_18,(char *)"Assertion",
+                    (char *)"main",(char *)"!\\initialized(&d)",52);
+  }
+  /*@ assert \initialized(r); */
+  {
+    int __e_acsl_initialized_19;
+    __e_acsl_initialized_19 = __initialized((void *)r,sizeof(long));
+    __e_acsl_assert(__e_acsl_initialized_19,(char *)"Assertion",
+                    (char *)"main",(char *)"\\initialized(r)",53);
+  }
+  /*@ assert ¬\initialized(r+1); */
+  {
+    int __e_acsl_initialized_20;
+    __e_acsl_initialized_20 = __initialized((void *)(r + 1),sizeof(long));
+    __e_acsl_assert(! __e_acsl_initialized_20,(char *)"Assertion",
+                    (char *)"main",(char *)"!\\initialized(r+1)",54);
+  }
+  __initialize((void *)(& d[1]),sizeof(long));
+  d[1] = (long)1;
+  /*@ assert \initialized((long *)d); */
+  {
+    int __e_acsl_initialized_21;
+    __e_acsl_initialized_21 = __initialized((void *)(d),sizeof(long));
+    __e_acsl_assert(__e_acsl_initialized_21,(char *)"Assertion",
+                    (char *)"main",(char *)"\\initialized((long *)d)",57);
+  }
+  /*@ assert \initialized(&d[1]); */
+  {
+    int __e_acsl_initialized_22;
+    __e_acsl_initialized_22 = __initialized((void *)(& d[1]),sizeof(long));
+    __e_acsl_assert(__e_acsl_initialized_22,(char *)"Assertion",
+                    (char *)"main",(char *)"\\initialized(&d[1])",58);
+  }
+  /*@ assert \initialized(&d); */
+  {
+    int __e_acsl_initialized_23;
+    __e_acsl_initialized_23 = __initialized((void *)(& d),sizeof(long [2]));
+    __e_acsl_assert(__e_acsl_initialized_23,(char *)"Assertion",
+                    (char *)"main",(char *)"\\initialized(&d)",59);
+  }
+  /*@ assert \initialized(r); */
+  {
+    int __e_acsl_initialized_24;
+    __e_acsl_initialized_24 = __initialized((void *)r,sizeof(long));
+    __e_acsl_assert(__e_acsl_initialized_24,(char *)"Assertion",
+                    (char *)"main",(char *)"\\initialized(r)",60);
+  }
+  /*@ assert \initialized(r+1); */
+  {
+    int __e_acsl_initialized_25;
+    __e_acsl_initialized_25 = __initialized((void *)(r + 1),sizeof(long));
+    __e_acsl_assert(__e_acsl_initialized_25,(char *)"Assertion",
+                    (char *)"main",(char *)"\\initialized(r+1)",61);
+  }
+  __full_init((void *)(& p));
+  p = (int *)__e_acsl_malloc(sizeof(int *));
+  /*@ assert ¬\initialized(p); */
+  {
+    int __e_acsl_initialized_26;
+    __e_acsl_initialized_26 = __initialized((void *)p,sizeof(int));
+    __e_acsl_assert(! __e_acsl_initialized_26,(char *)"Assertion",
+                    (char *)"main",(char *)"!\\initialized(p)",65);
+  }
+  __full_init((void *)(& q));
+  q = (int *)__calloc((unsigned long)1,sizeof(int));
+  /*@ assert \initialized(q); */
+  {
+    int __e_acsl_initialized_27;
+    __e_acsl_initialized_27 = __initialized((void *)q,sizeof(int));
+    __e_acsl_assert(__e_acsl_initialized_27,(char *)"Assertion",
+                    (char *)"main",(char *)"\\initialized(q)",69);
+  }
+  __full_init((void *)(& q));
+  q = (int *)__e_acsl_realloc((void *)q,(unsigned long)2 * sizeof(int));
+  /*@ assert \initialized(q); */
+  {
+    int __e_acsl_initialized_28;
+    __e_acsl_initialized_28 = __initialized((void *)q,sizeof(int));
+    __e_acsl_assert(__e_acsl_initialized_28,(char *)"Assertion",
+                    (char *)"main",(char *)"\\initialized(q)",74);
+  }
+  __full_init((void *)(& q));
+  q ++;
+  /*@ assert ¬\initialized(q); */
+  {
+    int __e_acsl_initialized_29;
+    __e_acsl_initialized_29 = __initialized((void *)q,sizeof(int));
+    __e_acsl_assert(! __e_acsl_initialized_29,(char *)"Assertion",
+                    (char *)"main",(char *)"!\\initialized(q)",76);
+  }
+  __full_init((void *)(& q));
+  q --;
+  __e_acsl_free((void *)p);
+  __e_acsl_free((void *)q);
+  /*@ assert ¬\initialized(p); */
+  {
+    int __e_acsl_initialized_30;
+    __e_acsl_initialized_30 = __initialized((void *)p,sizeof(int));
+    __e_acsl_assert(! __e_acsl_initialized_30,(char *)"Assertion",
+                    (char *)"main",(char *)"!\\initialized(p)",84);
+  }
+  /*@ assert ¬\initialized(q); */
+  {
+    int __e_acsl_initialized_31;
+    __e_acsl_initialized_31 = __initialized((void *)q,sizeof(int));
+    __e_acsl_assert(! __e_acsl_initialized_31,(char *)"Assertion",
+                    (char *)"main",(char *)"!\\initialized(q)",85);
+  }
+  __full_init((void *)(& q));
+  q = (int *)(& q - 1024 * 5);
+  __full_init((void *)(& q));
+  q = (int *)128;
+  /*@ assert ¬\initialized(q); */
+  {
+    int __e_acsl_initialized_32;
+    __e_acsl_initialized_32 = __initialized((void *)q,sizeof(int));
+    __e_acsl_assert(! __e_acsl_initialized_32,(char *)"Assertion",
+                    (char *)"main",(char *)"!\\initialized(q)",93);
+  }
+  __full_init((void *)(& p));
+  p = (int *)0;
+  /*@ assert ¬\initialized(p); */
+  {
+    int __e_acsl_initialized_33;
+    __e_acsl_initialized_33 = __initialized((void *)p,sizeof(int));
+    __e_acsl_assert(! __e_acsl_initialized_33,(char *)"Assertion",
+                    (char *)"main",(char *)"!\\initialized(p)",96);
+  }
+  size = 100;
+  partsc = (char *)__e_acsl_malloc((unsigned long)size * sizeof(char));
+  partsi = (char *)__e_acsl_malloc((unsigned long)size * sizeof(int));
+  {
+    int i;
+    i = 0;
+    while (i < size) {
+      if (i % 2 != 0) 
+        /*@ assert Value: mem_access: \valid(partsc+i); */
+        *(partsc + i) = (char)'0';
+      else 
+        /*@ assert Value: mem_access: \valid(partsi+i); */
+        *(partsi + i) = (char)0;
+      i ++;
+    }
+  }
+  {
+    int i_0;
+    i_0 = 0;
+    while (i_0 < size) {
+      if (i_0 % 2 != 0) ;
+      i_0 ++;
+    }
+  }
+  dup[0] = 1;
+  dup[0] = 1;
+  __retres = 0;
+  __delete_block((void *)(& B));
+  __delete_block((void *)(& A));
+  __delete_block((void *)(d));
+  __delete_block((void *)(c));
+  __delete_block((void *)(& r));
+  __delete_block((void *)(& b));
+  __delete_block((void *)(& a));
+  __delete_block((void *)(& q));
+  __delete_block((void *)(& p));
+  __e_acsl_memory_clean();
+  return __retres;
+}
+
+
diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_invariant.c b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_invariant.c
index 44ffb1a229f464d950b3ff49c7123dc4701e1221..00b01a2cfa1e96f0b00c41adcd0d0995eb13e3d8 100644
--- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_invariant.c
+++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_invariant.c
@@ -12,13 +12,13 @@ int main(void)
       {
         int __e_acsl_and;
         if (0 <= i) __e_acsl_and = i < 10; else __e_acsl_and = 0;
-        e_acsl_assert(__e_acsl_and,(char *)"Invariant",(char *)"main",
-                      (char *)"0 <= i < 10",9);
+        __e_acsl_assert(__e_acsl_and,(char *)"Invariant",(char *)"main",
+                        (char *)"0 <= i < 10",9);
       }
       x += i;
       /*@ invariant i ≤ x; */
-      e_acsl_assert(i <= x,(char *)"Invariant",(char *)"main",
-                    (char *)"i <= x",11);
+      __e_acsl_assert(i <= x,(char *)"Invariant",(char *)"main",
+                      (char *)"i <= x",11);
       i ++;
     }
   }
diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_labeled_stmt.c b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_labeled_stmt.c
index d882d43852c347aec2539907aceca0848d6328ff..a4a82d76300b18d4e450027af90de4af8d6b3919 100644
--- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_labeled_stmt.c
+++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_labeled_stmt.c
@@ -7,19 +7,19 @@ int __e_acsl_main(void)
   goto L1;
   L1:
     /*@ assert X ≡ 0; */
-    e_acsl_assert(X == 0,(char *)"Assertion",(char *)"main",(char *)"X == 0",
-                  10);
+    __e_acsl_assert(X == 0,(char *)"Assertion",(char *)"main",
+                    (char *)"X == 0",10);
     X = 1;
   goto L2;
   L2:
     /*@ requires X ≡ 1;
         ensures X ≡ 2; */
     {
-      e_acsl_assert(X == 1,(char *)"Precondition",(char *)"main",
-                    (char *)"X == 1",12);
+      __e_acsl_assert(X == 1,(char *)"Precondition",(char *)"main",
+                      (char *)"X == 1",12);
       X = 2;
-      e_acsl_assert(X == 2,(char *)"Postcondition",(char *)"main",
-                    (char *)"X == 2",12);
+      __e_acsl_assert(X == 2,(char *)"Postcondition",(char *)"main",
+                      (char *)"X == 2",12);
     }
   if (X) {
     X = 3;
@@ -35,8 +35,8 @@ int main(void)
 {
   int __retres;
   __retres = __e_acsl_main();
-  e_acsl_assert(X == 3,(char *)"Postcondition",(char *)"main",
-                (char *)"X == 3",7);
+  __e_acsl_assert(X == 3,(char *)"Postcondition",(char *)"main",
+                  (char *)"X == 3",7);
   return __retres;
 }
 
diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_lazy.c b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_lazy.c
index a619b4c190a3b84a66e62b2a1f4ef9a912cbe928..3fceb008cd8462c79295d5ff197e8fb9f7b30fb7 100644
--- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_lazy.c
+++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_lazy.c
@@ -10,79 +10,79 @@ int main(void)
   {
     int __e_acsl_and;
     if (x == 0) __e_acsl_and = y == 1; else __e_acsl_and = 0;
-    e_acsl_assert(__e_acsl_and,(char *)"Assertion",(char *)"main",
-                  (char *)"x == 0 && y == 1",9);
+    __e_acsl_assert(__e_acsl_and,(char *)"Assertion",(char *)"main",
+                    (char *)"x == 0 && y == 1",9);
   }
   /*@ assert ¬(x ≢ 0 ∧ y ≡ 1/0); */
   {
     int __e_acsl_and_2;
     if (x != 0) {
-      e_acsl_assert(0 != 0,(char *)"RTE",(char *)"main",
-                    (char *)"division_by_zero: 0 != 0",10);
+      __e_acsl_assert(0 != 0,(char *)"RTE",(char *)"main",
+                      (char *)"division_by_zero: 0 != 0",10);
       __e_acsl_and_2 = y == 1 / 0;
     }
     else __e_acsl_and_2 = 0;
-    e_acsl_assert(! __e_acsl_and_2,(char *)"Assertion",(char *)"main",
-                  (char *)"!(x != 0 && y == 1/0)",10);
+    __e_acsl_assert(! __e_acsl_and_2,(char *)"Assertion",(char *)"main",
+                    (char *)"!(x != 0 && y == 1/0)",10);
   }
   /*@ assert y ≡ 1 ∨ x ≡ 1; */
   {
     int __e_acsl_or;
     if (y == 1) __e_acsl_or = 1; else __e_acsl_or = x == 1;
-    e_acsl_assert(__e_acsl_or,(char *)"Assertion",(char *)"main",
-                  (char *)"y == 1 || x == 1",11);
+    __e_acsl_assert(__e_acsl_or,(char *)"Assertion",(char *)"main",
+                    (char *)"y == 1 || x == 1",11);
   }
   /*@ assert x ≡ 0 ∨ y ≡ 1/0; */
   {
     int __e_acsl_or_2;
     if (x == 0) __e_acsl_or_2 = 1;
     else {
-      e_acsl_assert(0 != 0,(char *)"RTE",(char *)"main",
-                    (char *)"division_by_zero: 0 != 0",12);
+      __e_acsl_assert(0 != 0,(char *)"RTE",(char *)"main",
+                      (char *)"division_by_zero: 0 != 0",12);
       __e_acsl_or_2 = y == 1 / 0;
     }
-    e_acsl_assert(__e_acsl_or_2,(char *)"Assertion",(char *)"main",
-                  (char *)"x == 0 || y == 1/0",12);
+    __e_acsl_assert(__e_acsl_or_2,(char *)"Assertion",(char *)"main",
+                    (char *)"x == 0 || y == 1/0",12);
   }
   /*@ assert x ≡ 0 ⇒ y ≡ 1; */
   {
     int __e_acsl_implies;
     if (! (x == 0)) __e_acsl_implies = 1; else __e_acsl_implies = y == 1;
-    e_acsl_assert(__e_acsl_implies,(char *)"Assertion",(char *)"main",
-                  (char *)"x == 0 ==> y == 1",13);
+    __e_acsl_assert(__e_acsl_implies,(char *)"Assertion",(char *)"main",
+                    (char *)"x == 0 ==> y == 1",13);
   }
   /*@ assert x ≡ 1 ⇒ y ≡ 1/0; */
   {
     int __e_acsl_implies_2;
     if (! (x == 1)) __e_acsl_implies_2 = 1;
     else {
-      e_acsl_assert(0 != 0,(char *)"RTE",(char *)"main",
-                    (char *)"division_by_zero: 0 != 0",14);
+      __e_acsl_assert(0 != 0,(char *)"RTE",(char *)"main",
+                      (char *)"division_by_zero: 0 != 0",14);
       __e_acsl_implies_2 = y == 1 / 0;
     }
-    e_acsl_assert(__e_acsl_implies_2,(char *)"Assertion",(char *)"main",
-                  (char *)"x == 1 ==> y == 1/0",14);
+    __e_acsl_assert(__e_acsl_implies_2,(char *)"Assertion",(char *)"main",
+                    (char *)"x == 1 ==> y == 1/0",14);
   }
   /*@ assert x≢0? x ≢ 0: y ≢ 0; */
   {
     int __e_acsl_if;
     if (x != 0) __e_acsl_if = x != 0; else __e_acsl_if = y != 0;
-    e_acsl_assert(__e_acsl_if,(char *)"Assertion",(char *)"main",
-                  (char *)"x!=0? x != 0: y != 0",15);
+    __e_acsl_assert(__e_acsl_if,(char *)"Assertion",(char *)"main",
+                    (char *)"x!=0? x != 0: y != 0",15);
   }
   /*@ assert y≢0? y ≢ 0: x ≢ 0; */
   {
     int __e_acsl_if_2;
     if (y != 0) __e_acsl_if_2 = y != 0; else __e_acsl_if_2 = x != 0;
-    e_acsl_assert(__e_acsl_if_2,(char *)"Assertion",(char *)"main",
-                  (char *)"y!=0? y != 0: x != 0",16);
+    __e_acsl_assert(__e_acsl_if_2,(char *)"Assertion",(char *)"main",
+                    (char *)"y!=0? y != 0: x != 0",16);
   }
   /*@ assert x≡1? x ≡ 18: x ≡ 0; */
   {
     int __e_acsl_if_3;
     if (x == 1) __e_acsl_if_3 = x == 18; else __e_acsl_if_3 = x == 0;
-    e_acsl_assert(__e_acsl_if_3,(char *)"Assertion",(char *)"main",
-                  (char *)"x==1? x == 18: x == 0",17);
+    __e_acsl_assert(__e_acsl_if_3,(char *)"Assertion",(char *)"main",
+                    (char *)"x==1? x == 18: x == 0",17);
   }
   /*@ assert x ≡ 2 ⇔ y ≡ 3; */
   {
@@ -96,8 +96,8 @@ int main(void)
       __e_acsl_equiv = __e_acsl_implies_4;
     }
     else __e_acsl_equiv = 0;
-    e_acsl_assert(__e_acsl_equiv,(char *)"Assertion",(char *)"main",
-                  (char *)"x == 2 <==> y == 3",20);
+    __e_acsl_assert(__e_acsl_equiv,(char *)"Assertion",(char *)"main",
+                    (char *)"x == 2 <==> y == 3",20);
   }
   /*@ assert x ≡ 0 ⇔ y ≡ 1; */
   {
@@ -111,15 +111,15 @@ int main(void)
       __e_acsl_equiv_2 = __e_acsl_implies_6;
     }
     else __e_acsl_equiv_2 = 0;
-    e_acsl_assert(__e_acsl_equiv_2,(char *)"Assertion",(char *)"main",
-                  (char *)"x == 0 <==> y == 1",21);
+    __e_acsl_assert(__e_acsl_equiv_2,(char *)"Assertion",(char *)"main",
+                    (char *)"x == 0 <==> y == 1",21);
   }
   /*@ assert ((x≢0? x: y)≢0) ≡ (x≡0); */
   {
     int __e_acsl_if_4;
     if (x != 0) __e_acsl_if_4 = x; else __e_acsl_if_4 = y;
-    e_acsl_assert((__e_acsl_if_4 != 0) == (x == 0),(char *)"Assertion",
-                  (char *)"main",(char *)"((x!=0? x: y)!=0) == (x==0)",24);
+    __e_acsl_assert((__e_acsl_if_4 != 0) == (x == 0),(char *)"Assertion",
+                    (char *)"main",(char *)"((x!=0? x: y)!=0) == (x==0)",24);
   }
   /*@ assert (x ≢ 0 ∧ y ≢ 0) ∨ y ≢ 0; */
   {
@@ -127,8 +127,8 @@ int main(void)
     int __e_acsl_or_3;
     if (x != 0) __e_acsl_and_3 = y != 0; else __e_acsl_and_3 = 0;
     if (__e_acsl_and_3) __e_acsl_or_3 = 1; else __e_acsl_or_3 = y != 0;
-    e_acsl_assert(__e_acsl_or_3,(char *)"Assertion",(char *)"main",
-                  (char *)"(x != 0 && y != 0) || y != 0",25);
+    __e_acsl_assert(__e_acsl_or_3,(char *)"Assertion",(char *)"main",
+                    (char *)"(x != 0 && y != 0) || y != 0",25);
   }
   /*@ assert (x ≢ 0 ∨ y ≢ 0) ∧ y ≡ 1; */
   {
@@ -136,22 +136,22 @@ int main(void)
     int __e_acsl_and_4;
     if (x != 0) __e_acsl_or_4 = 1; else __e_acsl_or_4 = y != 0;
     if (__e_acsl_or_4) __e_acsl_and_4 = y == 1; else __e_acsl_and_4 = 0;
-    e_acsl_assert(__e_acsl_and_4,(char *)"Assertion",(char *)"main",
-                  (char *)"(x != 0 || y != 0) && y == 1",26);
+    __e_acsl_assert(__e_acsl_and_4,(char *)"Assertion",(char *)"main",
+                    (char *)"(x != 0 || y != 0) && y == 1",26);
   }
   /*@ assert (x≢0∨y≢0) ≡ (y≢0); */
   {
     int __e_acsl_or_5;
     if (x != 0) __e_acsl_or_5 = 1; else __e_acsl_or_5 = y != 0;
-    e_acsl_assert(__e_acsl_or_5 == (y != 0),(char *)"Assertion",
-                  (char *)"main",(char *)"(x!=0||y!=0) == (y!=0)",27);
+    __e_acsl_assert(__e_acsl_or_5 == (y != 0),(char *)"Assertion",
+                    (char *)"main",(char *)"(x!=0||y!=0) == (y!=0)",27);
   }
   /*@ assert (x≢0 ∧ y≢0) ≡ (x≢0); */
   {
     int __e_acsl_and_5;
     if (x != 0) __e_acsl_and_5 = y != 0; else __e_acsl_and_5 = 0;
-    e_acsl_assert(__e_acsl_and_5 == (x != 0),(char *)"Assertion",
-                  (char *)"main",(char *)"(x!=0 && y!=0) == (x!=0)",28);
+    __e_acsl_assert(__e_acsl_and_5 == (x != 0),(char *)"Assertion",
+                    (char *)"main",(char *)"(x!=0 && y!=0) == (x!=0)",28);
   }
   __retres = 0;
   return __retres;
diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_linear_search.c b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_linear_search.c
index 87412c30836b27c464b881ca5f547ae1244a87fb..723ab7f5ac72478233e3f599a1d4d8909a2657e8 100644
--- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_linear_search.c
+++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_linear_search.c
@@ -23,10 +23,10 @@ int search(int elt)
     __e_acsl_i = 0;
     while (1) {
       if (__e_acsl_i < k) ; else break;
-      e_acsl_assert(__e_acsl_i < 10,(char *)"RTE",(char *)"search",
-                    (char *)"index_bound: __e_acsl_i < 10",18);
-      e_acsl_assert(0 <= __e_acsl_i,(char *)"RTE",(char *)"search",
-                    (char *)"index_bound: 0 <= __e_acsl_i",18);
+      __e_acsl_assert(__e_acsl_i < 10,(char *)"RTE",(char *)"search",
+                      (char *)"index_bound: __e_acsl_i < 10",18);
+      __e_acsl_assert(0 <= __e_acsl_i,(char *)"RTE",(char *)"search",
+                      (char *)"index_bound: 0 <= __e_acsl_i",18);
       if (A[__e_acsl_i] < elt) ;
       else {
         __e_acsl_forall = 0;
@@ -35,11 +35,12 @@ int search(int elt)
       __e_acsl_i ++;
     }
     e_acsl_end_loop1: ;
-    e_acsl_assert(__e_acsl_forall,(char *)"Invariant",(char *)"search",
-                  (char *)"\\forall integer i; 0 <= i < k ==> A[i] < elt",18);
+    __e_acsl_assert(__e_acsl_forall,(char *)"Invariant",(char *)"search",
+                    (char *)"\\forall integer i; 0 <= i < k ==> A[i] < elt",
+                    18);
     if (0 <= k) __e_acsl_and = k <= 10; else __e_acsl_and = 0;
-    e_acsl_assert(__e_acsl_and,(char *)"Invariant",(char *)"search",
-                  (char *)"0 <= k <= 10",17);
+    __e_acsl_assert(__e_acsl_and,(char *)"Invariant",(char *)"search",
+                    (char *)"0 <= k <= 10",17);
     /*@ loop invariant 0 ≤ k ≤ 10;
         loop invariant ∀ ℤ i; 0 ≤ i < k ⇒ A[i] < elt;
     */
@@ -59,16 +60,16 @@ int search(int elt)
         int __e_acsl_i_2;
         k ++;
         if (0 <= k) __e_acsl_and_2 = k <= 10; else __e_acsl_and_2 = 0;
-        e_acsl_assert(__e_acsl_and_2,(char *)"Invariant",(char *)"search",
-                      (char *)"0 <= k <= 10",17);
+        __e_acsl_assert(__e_acsl_and_2,(char *)"Invariant",(char *)"search",
+                        (char *)"0 <= k <= 10",17);
         __e_acsl_forall_2 = 1;
         __e_acsl_i_2 = 0;
         while (1) {
           if (__e_acsl_i_2 < k) ; else break;
-          e_acsl_assert(__e_acsl_i_2 < 10,(char *)"RTE",(char *)"search",
-                        (char *)"index_bound: __e_acsl_i_2 < 10",18);
-          e_acsl_assert(0 <= __e_acsl_i_2,(char *)"RTE",(char *)"search",
-                        (char *)"index_bound: 0 <= __e_acsl_i_2",18);
+          __e_acsl_assert(__e_acsl_i_2 < 10,(char *)"RTE",(char *)"search",
+                          (char *)"index_bound: __e_acsl_i_2 < 10",18);
+          __e_acsl_assert(0 <= __e_acsl_i_2,(char *)"RTE",(char *)"search",
+                          (char *)"index_bound: 0 <= __e_acsl_i_2",18);
           if (A[__e_acsl_i_2] < elt) ;
           else {
             __e_acsl_forall_2 = 0;
@@ -77,9 +78,10 @@ int search(int elt)
           __e_acsl_i_2 ++;
         }
         e_acsl_end_loop2: ;
-        e_acsl_assert(__e_acsl_forall_2,(char *)"Invariant",(char *)"search",
-                      (char *)"\\forall integer i; 0 <= i < k ==> A[i] < elt",
-                      18);
+        __e_acsl_assert(__e_acsl_forall_2,(char *)"Invariant",
+                        (char *)"search",
+                        (char *)"\\forall integer i; 0 <= i < k ==> A[i] < elt",
+                        18);
       }
     }
   }
@@ -109,14 +111,14 @@ int __e_acsl_search(int elt)
     __e_acsl_i = 0;
     while (1) {
       if (__e_acsl_i < 9) ; else break;
-      e_acsl_assert(__e_acsl_i + 1 < 10,(char *)"RTE",(char *)"search",
-                    (char *)"index_bound: (int)(__e_acsl_i+1) < 10",7);
-      e_acsl_assert(0 <= __e_acsl_i + 1,(char *)"RTE",(char *)"search",
-                    (char *)"index_bound: 0 <= (int)(__e_acsl_i+1)",7);
-      e_acsl_assert(__e_acsl_i < 10,(char *)"RTE",(char *)"search",
-                    (char *)"index_bound: __e_acsl_i < 10",7);
-      e_acsl_assert(0 <= __e_acsl_i,(char *)"RTE",(char *)"search",
-                    (char *)"index_bound: 0 <= __e_acsl_i",7);
+      __e_acsl_assert(__e_acsl_i + 1 < 10,(char *)"RTE",(char *)"search",
+                      (char *)"index_bound: (int)(__e_acsl_i+1) < 10",7);
+      __e_acsl_assert(0 <= __e_acsl_i + 1,(char *)"RTE",(char *)"search",
+                      (char *)"index_bound: 0 <= (int)(__e_acsl_i+1)",7);
+      __e_acsl_assert(__e_acsl_i < 10,(char *)"RTE",(char *)"search",
+                      (char *)"index_bound: __e_acsl_i < 10",7);
+      __e_acsl_assert(0 <= __e_acsl_i,(char *)"RTE",(char *)"search",
+                      (char *)"index_bound: 0 <= __e_acsl_i",7);
       if (A[__e_acsl_i] <= A[__e_acsl_i + 1]) ;
       else {
         __e_acsl_forall = 0;
@@ -125,9 +127,9 @@ int __e_acsl_search(int elt)
       __e_acsl_i ++;
     }
     e_acsl_end_loop3: ;
-    e_acsl_assert(__e_acsl_forall,(char *)"Precondition",(char *)"search",
-                  (char *)"\\forall integer i; 0 <= i < 9 ==> A[i] <= A[i+1]",
-                  7);
+    __e_acsl_assert(__e_acsl_forall,(char *)"Precondition",(char *)"search",
+                    (char *)"\\forall integer i; 0 <= i < 9 ==> A[i] <= A[i+1]",
+                    7);
     {
       int __e_acsl_forall_2;
       int __e_acsl_j_2;
@@ -135,10 +137,10 @@ int __e_acsl_search(int elt)
       __e_acsl_j_2 = 0;
       while (1) {
         if (__e_acsl_j_2 < 10) ; else break;
-        e_acsl_assert(__e_acsl_j_2 < 10,(char *)"RTE",(char *)"search",
-                      (char *)"index_bound: __e_acsl_j_2 < 10",12);
-        e_acsl_assert(0 <= __e_acsl_j_2,(char *)"RTE",(char *)"search",
-                      (char *)"index_bound: 0 <= __e_acsl_j_2",12);
+        __e_acsl_assert(__e_acsl_j_2 < 10,(char *)"RTE",(char *)"search",
+                        (char *)"index_bound: __e_acsl_j_2 < 10",12);
+        __e_acsl_assert(0 <= __e_acsl_j_2,(char *)"RTE",(char *)"search",
+                        (char *)"index_bound: 0 <= __e_acsl_j_2",12);
         if (A[__e_acsl_j_2] != elt) ;
         else {
           __e_acsl_forall_2 = 0;
@@ -156,10 +158,10 @@ int __e_acsl_search(int elt)
       __e_acsl_j = 0;
       while (1) {
         if (__e_acsl_j < 10) ; else break;
-        e_acsl_assert(__e_acsl_j < 10,(char *)"RTE",(char *)"search",
-                      (char *)"index_bound: __e_acsl_j < 10",9);
-        e_acsl_assert(0 <= __e_acsl_j,(char *)"RTE",(char *)"search",
-                      (char *)"index_bound: 0 <= __e_acsl_j",9);
+        __e_acsl_assert(__e_acsl_j < 10,(char *)"RTE",(char *)"search",
+                        (char *)"index_bound: __e_acsl_j < 10",9);
+        __e_acsl_assert(0 <= __e_acsl_j,(char *)"RTE",(char *)"search",
+                        (char *)"index_bound: 0 <= __e_acsl_j",9);
         if (! (A[__e_acsl_j] == elt)) ;
         else {
           __e_acsl_exists = 1;
@@ -177,15 +179,16 @@ int __e_acsl_search(int elt)
     int __e_acsl_implies_2;
     if (! __e_acsl_at) __e_acsl_implies = 1;
     else __e_acsl_implies = __retres == 1;
-    e_acsl_assert(__e_acsl_implies,(char *)"Postcondition",(char *)"search",
-                  (char *)"\\old(\\exists integer j; 0 <= j < 10 && A[j] == elt) ==> \\result == 1",
-                  10);
+    __e_acsl_assert(__e_acsl_implies,(char *)"Postcondition",
+                    (char *)"search",
+                    (char *)"\\old(\\exists integer j; 0 <= j < 10 && A[j] == elt) ==> \\result == 1",
+                    10);
     if (! __e_acsl_at_2) __e_acsl_implies_2 = 1;
     else __e_acsl_implies_2 = __retres == 0;
-    e_acsl_assert(__e_acsl_implies_2,(char *)"Postcondition",
-                  (char *)"search",
-                  (char *)"\\old(\\forall integer j; 0 <= j < 10 ==> A[j] != elt) ==> \\result == 0",
-                  13);
+    __e_acsl_assert(__e_acsl_implies_2,(char *)"Postcondition",
+                    (char *)"search",
+                    (char *)"\\old(\\forall integer j; 0 <= j < 10 ==> A[j] != elt) ==> \\result == 0",
+                    13);
     return __retres;
   }
 }
@@ -204,12 +207,12 @@ int main(void)
   }
   found = __e_acsl_search(36);
   /*@ assert found ≡ 1; */
-  e_acsl_assert(found == 1,(char *)"Assertion",(char *)"main",
-                (char *)"found == 1",31);
+  __e_acsl_assert(found == 1,(char *)"Assertion",(char *)"main",
+                  (char *)"found == 1",31);
   found = __e_acsl_search(5);
   /*@ assert found ≡ 0; */
-  e_acsl_assert(found == 0,(char *)"Assertion",(char *)"main",
-                (char *)"found == 0",34);
+  __e_acsl_assert(found == 0,(char *)"Assertion",(char *)"main",
+                  (char *)"found == 0",34);
   __retres = 0;
   return __retres;
 }
diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_literal_string.c b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_literal_string.c
index b1acd2ae35252b59b6d024fbcbfd745ab8ca5a06..3be0a63ac97588ff203277eddae5a09f6d337601 100644
--- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_literal_string.c
+++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_literal_string.c
@@ -13,10 +13,10 @@ void f(void)
   {
     int __e_acsl_valid_read;
     __e_acsl_valid_read = __valid_read((void *)(T + G),sizeof(char));
-    e_acsl_assert(__e_acsl_valid_read,(char *)"RTE",(char *)"f",
-                  (char *)"mem_access: \\valid_read(T+G)",11);
-    e_acsl_assert((int)*(T + G) == 'b',(char *)"Assertion",(char *)"f",
-                  (char *)"*(T+G) == \'b\'",11);
+    __e_acsl_assert(__e_acsl_valid_read,(char *)"RTE",(char *)"f",
+                    (char *)"mem_access: \\valid_read(T+G)",11);
+    __e_acsl_assert((int)*(T + G) == 'b',(char *)"Assertion",(char *)"f",
+                    (char *)"*(T+G) == \'b\'",11);
   }
   G ++;
   return;
@@ -27,24 +27,24 @@ char *S2 = (char *)"foo2";
 int IDX = 1;
 int G2 = 2;
 char *U = (char *)"baz";
-void __e_acsl_memory_init(void)
+void __e_acsl_globals_init(void)
 {
   __e_acsl_literal_string = "ss";
   __store_block((void *)__e_acsl_literal_string,sizeof("ss"));
   __full_init((void *)__e_acsl_literal_string);
-  __literal_string((void *)__e_acsl_literal_string);
+  __readonly((void *)__e_acsl_literal_string);
   __e_acsl_literal_string_4 = "foo2";
   __store_block((void *)__e_acsl_literal_string_4,sizeof("foo2"));
   __full_init((void *)__e_acsl_literal_string_4);
-  __literal_string((void *)__e_acsl_literal_string_4);
+  __readonly((void *)__e_acsl_literal_string_4);
   __e_acsl_literal_string_3 = "foo";
   __store_block((void *)__e_acsl_literal_string_3,sizeof("foo"));
   __full_init((void *)__e_acsl_literal_string_3);
-  __literal_string((void *)__e_acsl_literal_string_3);
+  __readonly((void *)__e_acsl_literal_string_3);
   __e_acsl_literal_string_2 = "bar";
   __store_block((void *)__e_acsl_literal_string_2,sizeof("bar"));
   __full_init((void *)__e_acsl_literal_string_2);
-  __literal_string((void *)__e_acsl_literal_string_2);
+  __readonly((void *)__e_acsl_literal_string_2);
   __store_block((void *)(& S2),8UL);
   __full_init((void *)(& S2));
   __store_block((void *)(& S),8UL);
@@ -58,7 +58,8 @@ int main(void)
 {
   int __retres;
   char *SS;
-  __e_acsl_memory_init();
+  __e_acsl_memory_init((int *)0,(char ***)0,8UL);
+  __e_acsl_globals_init();
   __store_block((void *)(& SS),8UL);
   __full_init((void *)(& SS));
   SS = (char *)__e_acsl_literal_string;
@@ -66,24 +67,24 @@ int main(void)
   {
     int __e_acsl_valid_read;
     __e_acsl_valid_read = __valid_read((void *)(S + G2),sizeof(char));
-    e_acsl_assert(__e_acsl_valid_read,(char *)"RTE",(char *)"main",
-                  (char *)"mem_access: \\valid_read(S+G2)",22);
-    e_acsl_assert((int)*(S + G2) == 'o',(char *)"Assertion",(char *)"main",
-                  (char *)"*(S+G2) == \'o\'",22);
+    __e_acsl_assert(__e_acsl_valid_read,(char *)"RTE",(char *)"main",
+                    (char *)"mem_access: \\valid_read(S+G2)",22);
+    __e_acsl_assert((int)*(S + G2) == 'o',(char *)"Assertion",(char *)"main",
+                    (char *)"*(S+G2) == \'o\'",22);
   }
   /*@ assert \initialized(S); */
   {
     int __e_acsl_initialized;
     __e_acsl_initialized = __initialized((void *)S,sizeof(char));
-    e_acsl_assert(__e_acsl_initialized,(char *)"Assertion",(char *)"main",
-                  (char *)"\\initialized(S)",23);
+    __e_acsl_assert(__e_acsl_initialized,(char *)"Assertion",(char *)"main",
+                    (char *)"\\initialized(S)",23);
   }
   /*@ assert \valid_read(S2); */
   {
     int __e_acsl_valid_read_2;
     __e_acsl_valid_read_2 = __valid_read((void *)S2,sizeof(char));
-    e_acsl_assert(__e_acsl_valid_read_2,(char *)"Assertion",(char *)"main",
-                  (char *)"\\valid_read(S2)",24);
+    __e_acsl_assert(__e_acsl_valid_read_2,(char *)"Assertion",(char *)"main",
+                    (char *)"\\valid_read(S2)",24);
   }
   /*@ assert ¬\valid(SS); */
   {
@@ -96,8 +97,8 @@ int main(void)
       __e_acsl_and = __e_acsl_valid;
     }
     else __e_acsl_and = 0;
-    e_acsl_assert(! __e_acsl_and,(char *)"Assertion",(char *)"main",
-                  (char *)"!\\valid(SS)",25);
+    __e_acsl_assert(! __e_acsl_and,(char *)"Assertion",(char *)"main",
+                    (char *)"!\\valid(SS)",25);
   }
   f();
   __retres = 0;
diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_localvar.c b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_localvar.c
index 73b5ba3e8f6b737bc1b11d2aa484ca35261ca5e3..0a35857a17a9b09365ed97ee8cce3855bd6bb426 100644
--- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_localvar.c
+++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_localvar.c
@@ -22,8 +22,8 @@ struct list *add(struct list *l, int i)
       __e_acsl_and = __e_acsl_valid;
     }
     else __e_acsl_and = 0;
-    e_acsl_assert(__e_acsl_and,(char *)"Assertion",(char *)"add",
-                  (char *)"\\valid(new)",18);
+    __e_acsl_assert(__e_acsl_and,(char *)"Assertion",(char *)"add",
+                    (char *)"\\valid(new)",18);
   }
   __initialize((void *)(& new->element),sizeof(int));
   new->element = i;
@@ -38,6 +38,7 @@ int main(void)
 {
   int __retres;
   struct list *l;
+  __e_acsl_memory_init((int *)0,(char ***)0,8UL);
   __store_block((void *)(& l),8UL);
   __full_init((void *)(& l));
   l = (struct list *)0;
diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_loop.c b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_loop.c
index 4f299753998be76b2fd7b5a4f528a5cb0991fc25..2516e147d1d0d2653a4decc8311dd01c6fa220d8 100644
--- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_loop.c
+++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_loop.c
@@ -9,8 +9,8 @@ void simple_loop(void)
     {
       int __e_acsl_and;
       if (0 <= i) __e_acsl_and = i <= 10; else __e_acsl_and = 0;
-      e_acsl_assert(__e_acsl_and,(char *)"Invariant",(char *)"simple_loop",
-                    (char *)"0 <= i <= 10",8);
+      __e_acsl_assert(__e_acsl_and,(char *)"Invariant",(char *)"simple_loop",
+                      (char *)"0 <= i <= 10",8);
       /*@ loop invariant 0 ≤ i ≤ 10; */
       while (i < 10) {
         sum += i;
@@ -18,8 +18,8 @@ void simple_loop(void)
           int __e_acsl_and_2;
           i ++;
           if (0 <= i) __e_acsl_and_2 = i <= 10; else __e_acsl_and_2 = 0;
-          e_acsl_assert(__e_acsl_and_2,(char *)"Invariant",
-                        (char *)"simple_loop",(char *)"0 <= i <= 10",8);
+          __e_acsl_assert(__e_acsl_and_2,(char *)"Invariant",
+                          (char *)"simple_loop",(char *)"0 <= i <= 10",8);
         }
       }
     }
@@ -35,8 +35,8 @@ void nested_loops(void)
   {
     int __e_acsl_and;
     if (0 <= i) __e_acsl_and = i <= 10; else __e_acsl_and = 0;
-    e_acsl_assert(__e_acsl_and,(char *)"Invariant",(char *)"nested_loops",
-                  (char *)"0 <= i <= 10",15);
+    __e_acsl_assert(__e_acsl_and,(char *)"Invariant",(char *)"nested_loops",
+                    (char *)"0 <= i <= 10",15);
     /*@ loop invariant 0 ≤ i ≤ 10; */
     while (i < 10) {
       {
@@ -54,18 +54,18 @@ void nested_loops(void)
             __e_acsl_l = 0;
             while (1) {
               if (__e_acsl_l < j) ; else break;
-              e_acsl_assert(__e_acsl_l < 15,(char *)"RTE",
-                            (char *)"nested_loops",
-                            (char *)"index_bound: __e_acsl_l < 15",19);
-              e_acsl_assert(0 <= __e_acsl_l,(char *)"RTE",
-                            (char *)"nested_loops",
-                            (char *)"index_bound: 0 <= __e_acsl_l",19);
-              e_acsl_assert(__e_acsl_k < 10,(char *)"RTE",
-                            (char *)"nested_loops",
-                            (char *)"index_bound: __e_acsl_k < 10",19);
-              e_acsl_assert(0 <= __e_acsl_k,(char *)"RTE",
-                            (char *)"nested_loops",
-                            (char *)"index_bound: 0 <= __e_acsl_k",19);
+              __e_acsl_assert(__e_acsl_l < 15,(char *)"RTE",
+                              (char *)"nested_loops",
+                              (char *)"index_bound: __e_acsl_l < 15",19);
+              __e_acsl_assert(0 <= __e_acsl_l,(char *)"RTE",
+                              (char *)"nested_loops",
+                              (char *)"index_bound: 0 <= __e_acsl_l",19);
+              __e_acsl_assert(__e_acsl_k < 10,(char *)"RTE",
+                              (char *)"nested_loops",
+                              (char *)"index_bound: __e_acsl_k < 10",19);
+              __e_acsl_assert(0 <= __e_acsl_k,(char *)"RTE",
+                              (char *)"nested_loops",
+                              (char *)"index_bound: 0 <= __e_acsl_k",19);
               if ((long)t[__e_acsl_k][__e_acsl_l] == (long)__e_acsl_k * (long)__e_acsl_l) 
                 ;
               else {
@@ -77,13 +77,13 @@ void nested_loops(void)
             __e_acsl_k ++;
           }
           e_acsl_end_loop1: ;
-          e_acsl_assert(__e_acsl_forall,(char *)"Invariant",
-                        (char *)"nested_loops",
-                        (char *)"\\forall integer k, integer l; 0 <= k < i && 0 <= l < j ==> t[k][l] == k*l",
-                        19);
+          __e_acsl_assert(__e_acsl_forall,(char *)"Invariant",
+                          (char *)"nested_loops",
+                          (char *)"\\forall integer k, integer l; 0 <= k < i && 0 <= l < j ==> t[k][l] == k*l",
+                          19);
           if (0 <= j) __e_acsl_and_2 = j <= 15; else __e_acsl_and_2 = 0;
-          e_acsl_assert(__e_acsl_and_2,(char *)"Invariant",
-                        (char *)"nested_loops",(char *)"0 <= j <= 15",17);
+          __e_acsl_assert(__e_acsl_and_2,(char *)"Invariant",
+                          (char *)"nested_loops",(char *)"0 <= j <= 15",17);
           /*@ loop invariant 0 ≤ j ≤ 15;
               loop invariant
                 ∀ ℤ k, ℤ l;
@@ -98,8 +98,9 @@ void nested_loops(void)
               int __e_acsl_l_2;
               j ++;
               if (0 <= j) __e_acsl_and_3 = j <= 15; else __e_acsl_and_3 = 0;
-              e_acsl_assert(__e_acsl_and_3,(char *)"Invariant",
-                            (char *)"nested_loops",(char *)"0 <= j <= 15",17);
+              __e_acsl_assert(__e_acsl_and_3,(char *)"Invariant",
+                              (char *)"nested_loops",(char *)"0 <= j <= 15",
+                              17);
               __e_acsl_forall_2 = 1;
               __e_acsl_k_2 = 0;
               while (1) {
@@ -107,18 +108,22 @@ void nested_loops(void)
                 __e_acsl_l_2 = 0;
                 while (1) {
                   if (__e_acsl_l_2 < j) ; else break;
-                  e_acsl_assert(__e_acsl_l_2 < 15,(char *)"RTE",
-                                (char *)"nested_loops",
-                                (char *)"index_bound: __e_acsl_l_2 < 15",19);
-                  e_acsl_assert(0 <= __e_acsl_l_2,(char *)"RTE",
-                                (char *)"nested_loops",
-                                (char *)"index_bound: 0 <= __e_acsl_l_2",19);
-                  e_acsl_assert(__e_acsl_k_2 < 10,(char *)"RTE",
-                                (char *)"nested_loops",
-                                (char *)"index_bound: __e_acsl_k_2 < 10",19);
-                  e_acsl_assert(0 <= __e_acsl_k_2,(char *)"RTE",
-                                (char *)"nested_loops",
-                                (char *)"index_bound: 0 <= __e_acsl_k_2",19);
+                  __e_acsl_assert(__e_acsl_l_2 < 15,(char *)"RTE",
+                                  (char *)"nested_loops",
+                                  (char *)"index_bound: __e_acsl_l_2 < 15",
+                                  19);
+                  __e_acsl_assert(0 <= __e_acsl_l_2,(char *)"RTE",
+                                  (char *)"nested_loops",
+                                  (char *)"index_bound: 0 <= __e_acsl_l_2",
+                                  19);
+                  __e_acsl_assert(__e_acsl_k_2 < 10,(char *)"RTE",
+                                  (char *)"nested_loops",
+                                  (char *)"index_bound: __e_acsl_k_2 < 10",
+                                  19);
+                  __e_acsl_assert(0 <= __e_acsl_k_2,(char *)"RTE",
+                                  (char *)"nested_loops",
+                                  (char *)"index_bound: 0 <= __e_acsl_k_2",
+                                  19);
                   /*@ assert
                       Value: initialisation:
                         \initialized(&t[__e_acsl_k_2][__e_acsl_l_2]);
@@ -134,10 +139,10 @@ void nested_loops(void)
                 __e_acsl_k_2 ++;
               }
               e_acsl_end_loop2: ;
-              e_acsl_assert(__e_acsl_forall_2,(char *)"Invariant",
-                            (char *)"nested_loops",
-                            (char *)"\\forall integer k, integer l; 0 <= k < i && 0 <= l < j ==> t[k][l] == k*l",
-                            19);
+              __e_acsl_assert(__e_acsl_forall_2,(char *)"Invariant",
+                              (char *)"nested_loops",
+                              (char *)"\\forall integer k, integer l; 0 <= k < i && 0 <= l < j ==> t[k][l] == k*l",
+                              19);
             }
           }
         }
@@ -146,8 +151,8 @@ void nested_loops(void)
         int __e_acsl_and_4;
         i ++;
         if (0 <= i) __e_acsl_and_4 = i <= 10; else __e_acsl_and_4 = 0;
-        e_acsl_assert(__e_acsl_and_4,(char *)"Invariant",
-                      (char *)"nested_loops",(char *)"0 <= i <= 10",15);
+        __e_acsl_assert(__e_acsl_and_4,(char *)"Invariant",
+                        (char *)"nested_loops",(char *)"0 <= i <= 10",15);
       }
     }
   }
@@ -164,8 +169,8 @@ void unnatural_loop(void)
     {
       int __e_acsl_and;
       if (0 <= i) __e_acsl_and = i <= 6; else __e_acsl_and = 0;
-      e_acsl_assert(__e_acsl_and,(char *)"Invariant",
-                    (char *)"unnatural_loop",(char *)"0 <= i <= 6",26);
+      __e_acsl_assert(__e_acsl_and,(char *)"Invariant",
+                      (char *)"unnatural_loop",(char *)"0 <= i <= 6",26);
       /*@ loop invariant 0 ≤ i ≤ 6; */
       while (i < 10) {
         if (x == 5) break;
@@ -174,8 +179,8 @@ void unnatural_loop(void)
           int __e_acsl_and_2;
           i ++;
           if (0 <= i) __e_acsl_and_2 = i <= 6; else __e_acsl_and_2 = 0;
-          e_acsl_assert(__e_acsl_and_2,(char *)"Invariant",
-                        (char *)"unnatural_loop",(char *)"0 <= i <= 6",26);
+          __e_acsl_assert(__e_acsl_and_2,(char *)"Invariant",
+                          (char *)"unnatural_loop",(char *)"0 <= i <= 6",26);
         }
       }
     }
diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_mainargs.c b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_mainargs.c
index 1fd39b676a07646ed4693ea0c289f88ce0845b0f..60e2c7f959d2d7ca4f2434c920e560de5c6f9a5b 100644
--- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_mainargs.c
+++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_mainargs.c
@@ -3,22 +3,22 @@ int main(int argc, char **argv)
 {
   int __retres;
   int i;
-  __init_args(argc,argv);
+  __e_acsl_memory_init(& argc,& argv,8UL);
   /*@ assert \valid(&argc); */
   {
     int __e_acsl_valid;
     __store_block((void *)(& argc),4UL);
     __store_block((void *)(& argv),8UL);
     __e_acsl_valid = __valid((void *)(& argc),sizeof(int));
-    e_acsl_assert(__e_acsl_valid,(char *)"Assertion",(char *)"main",
-                  (char *)"\\valid(&argc)",10);
+    __e_acsl_assert(__e_acsl_valid,(char *)"Assertion",(char *)"main",
+                    (char *)"\\valid(&argc)",10);
   }
   /*@ assert \valid(&argv); */
   {
     int __e_acsl_valid_2;
     __e_acsl_valid_2 = __valid((void *)(& argv),sizeof(char **));
-    e_acsl_assert(__e_acsl_valid_2,(char *)"Assertion",(char *)"main",
-                  (char *)"\\valid(&argv)",11);
+    __e_acsl_assert(__e_acsl_valid_2,(char *)"Assertion",(char *)"main",
+                    (char *)"\\valid(&argv)",11);
   }
   /*@ assert ∀ int k; 0 ≤ k < argc ⇒ \valid(argv+k); */
   {
@@ -41,9 +41,9 @@ int main(int argc, char **argv)
       __e_acsl_k ++;
     }
     e_acsl_end_loop1: ;
-    e_acsl_assert(__e_acsl_forall,(char *)"Assertion",(char *)"main",
-                  (char *)"\\forall int k; 0 <= k < argc ==> \\valid(argv+k)",
-                  12);
+    __e_acsl_assert(__e_acsl_forall,(char *)"Assertion",(char *)"main",
+                    (char *)"\\forall int k; 0 <= k < argc ==> \\valid(argv+k)",
+                    12);
   }
   /*@ assert \block_length(argv) ≡ (argc+1)*sizeof(char *); */
   {
@@ -56,9 +56,9 @@ int main(int argc, char **argv)
     __gmpz_init_set_si(__e_acsl,((long)argc + (long)1) * 8L);
     __e_acsl_eq = __gmpz_cmp((__mpz_struct const *)(__e_acsl_block_length_2),
                              (__mpz_struct const *)(__e_acsl));
-    e_acsl_assert(__e_acsl_eq == 0,(char *)"Assertion",(char *)"main",
-                  (char *)"\\block_length(argv) == (argc+1)*sizeof(char *)",
-                  13);
+    __e_acsl_assert(__e_acsl_eq == 0,(char *)"Assertion",(char *)"main",
+                    (char *)"\\block_length(argv) == (argc+1)*sizeof(char *)",
+                    13);
     __gmpz_clear(__e_acsl_block_length_2);
     __gmpz_clear(__e_acsl);
   }
@@ -66,11 +66,11 @@ int main(int argc, char **argv)
   {
     int __e_acsl_valid_read;
     __e_acsl_valid_read = __valid_read((void *)(argv + argc),sizeof(char *));
-    e_acsl_assert(__e_acsl_valid_read,(char *)"RTE",(char *)"main",
-                  (char *)"mem_access: \\valid_read(argv+argc)",15);
+    __e_acsl_assert(__e_acsl_valid_read,(char *)"RTE",(char *)"main",
+                    (char *)"mem_access: \\valid_read(argv+argc)",15);
     /*@ assert Value: mem_access: \valid_read(argv+argc); */
-    e_acsl_assert(*(argv + argc) == (void *)0,(char *)"Assertion",
-                  (char *)"main",(char *)"*(argv+argc) == \\null",15);
+    __e_acsl_assert(*(argv + argc) == (void *)0,(char *)"Assertion",
+                    (char *)"main",(char *)"*(argv+argc) == \\null",15);
   }
   /*@ assert ¬\valid(*(argv+argc)); */
   {
@@ -83,15 +83,15 @@ int main(int argc, char **argv)
       int __e_acsl_valid_4;
       __e_acsl_valid_read_2 = __valid_read((void *)(argv + argc),
                                            sizeof(char *));
-      e_acsl_assert(__e_acsl_valid_read_2,(char *)"RTE",(char *)"main",
-                    (char *)"mem_access: \\valid_read(argv+argc)",16);
+      __e_acsl_assert(__e_acsl_valid_read_2,(char *)"RTE",(char *)"main",
+                      (char *)"mem_access: \\valid_read(argv+argc)",16);
       /*@ assert Value: mem_access: \valid_read(argv+argc); */
       __e_acsl_valid_4 = __valid((void *)*(argv + argc),sizeof(char));
       __e_acsl_and = __e_acsl_valid_4;
     }
     else __e_acsl_and = 0;
-    e_acsl_assert(! __e_acsl_and,(char *)"Assertion",(char *)"main",
-                  (char *)"!\\valid(*(argv+argc))",16);
+    __e_acsl_assert(! __e_acsl_and,(char *)"Assertion",(char *)"main",
+                    (char *)"!\\valid(*(argv+argc))",16);
   }
   i = 0;
   while (i < argc) {
@@ -111,14 +111,14 @@ int main(int argc, char **argv)
           int __e_acsl_valid_5;
           __e_acsl_valid_read_3 = __valid_read((void *)(argv + i),
                                                sizeof(char *));
-          e_acsl_assert(__e_acsl_valid_read_3,(char *)"RTE",(char *)"main",
-                        (char *)"mem_access: \\valid_read(argv+i)",19);
+          __e_acsl_assert(__e_acsl_valid_read_3,(char *)"RTE",(char *)"main",
+                          (char *)"mem_access: \\valid_read(argv+i)",19);
           __e_acsl_valid_5 = __valid((void *)*(argv + i),sizeof(char));
           __e_acsl_and_2 = __e_acsl_valid_5;
         }
         else __e_acsl_and_2 = 0;
-        e_acsl_assert(__e_acsl_and_2,(char *)"Assertion",(char *)"main",
-                      (char *)"\\valid(*(argv+i))",19);
+        __e_acsl_assert(__e_acsl_and_2,(char *)"Assertion",(char *)"main",
+                        (char *)"\\valid(*(argv+i))",19);
       }
       /*@ assert ∀ int k; 0 ≤ k ≤ len ⇒ \valid(*(argv+i)+k); */
       {
@@ -133,8 +133,9 @@ int main(int argc, char **argv)
             int __e_acsl_valid_6;
             __e_acsl_valid_read_4 = __valid_read((void *)(argv + i),
                                                  sizeof(char *));
-            e_acsl_assert(__e_acsl_valid_read_4,(char *)"RTE",(char *)"main",
-                          (char *)"mem_access: \\valid_read(argv+i)",20);
+            __e_acsl_assert(__e_acsl_valid_read_4,(char *)"RTE",
+                            (char *)"main",
+                            (char *)"mem_access: \\valid_read(argv+i)",20);
             __e_acsl_valid_6 = __valid((void *)(*(argv + i) + __e_acsl_k_2),
                                        sizeof(char));
             if (__e_acsl_valid_6) ;
@@ -146,9 +147,9 @@ int main(int argc, char **argv)
           __e_acsl_k_2 ++;
         }
         e_acsl_end_loop2: ;
-        e_acsl_assert(__e_acsl_forall_2,(char *)"Assertion",(char *)"main",
-                      (char *)"\\forall int k; 0 <= k <= len ==> \\valid(*(argv+i)+k)",
-                      20);
+        __e_acsl_assert(__e_acsl_forall_2,(char *)"Assertion",(char *)"main",
+                        (char *)"\\forall int k; 0 <= k <= len ==> \\valid(*(argv+i)+k)",
+                        20);
       }
     }
     i ++;
diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_memsize.c b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_memsize.c
index c8822b0182d5fa81c80e06d1ce6a96ecf260fd1f..1cf25804fadab51454285e2f06eac95d7ef96327 100644
--- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_memsize.c
+++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_memsize.c
@@ -4,79 +4,80 @@ int main(int argc, char **argv)
   int __retres;
   char *a;
   char *b;
+  __e_acsl_memory_init(& argc,& argv,8UL);
   __store_block((void *)(& b),8UL);
   __store_block((void *)(& a),8UL);
   __full_init((void *)(& a));
   a = (char *)__e_acsl_malloc((unsigned long)7);
-  /*@ assert __memory_size ≡ 7; */
-  e_acsl_assert(__memory_size == (unsigned long)7,(char *)"Assertion",
-                (char *)"main",(char *)"__memory_size == 7",22);
+  /*@ assert __heap_size ≡ 7; */
+  __e_acsl_assert(__heap_size == (unsigned long)7,(char *)"Assertion",
+                  (char *)"main",(char *)"__heap_size == 7",22);
   __full_init((void *)(& b));
   b = (char *)__e_acsl_malloc((unsigned long)14);
-  /*@ assert __memory_size ≡ 21; */
-  e_acsl_assert(__memory_size == (unsigned long)21,(char *)"Assertion",
-                (char *)"main",(char *)"__memory_size == 21",24);
+  /*@ assert __heap_size ≡ 21; */
+  __e_acsl_assert(__heap_size == (unsigned long)21,(char *)"Assertion",
+                  (char *)"main",(char *)"__heap_size == 21",24);
   __e_acsl_free((void *)a);
-  /*@ assert __memory_size ≡ 14; */
-  e_acsl_assert(__memory_size == (unsigned long)14,(char *)"Assertion",
-                (char *)"main",(char *)"__memory_size == 14",28);
+  /*@ assert __heap_size ≡ 14; */
+  __e_acsl_assert(__heap_size == (unsigned long)14,(char *)"Assertion",
+                  (char *)"main",(char *)"__heap_size == 14",28);
   __full_init((void *)(& a));
   a = (char *)0;
   __e_acsl_free((void *)a);
-  /*@ assert __memory_size ≡ 14; */
-  e_acsl_assert(__memory_size == (unsigned long)14,(char *)"Assertion",
-                (char *)"main",(char *)"__memory_size == 14",33);
+  /*@ assert __heap_size ≡ 14; */
+  __e_acsl_assert(__heap_size == (unsigned long)14,(char *)"Assertion",
+                  (char *)"main",(char *)"__heap_size == 14",33);
   __full_init((void *)(& b));
   b = (char *)__e_acsl_realloc((void *)b,(unsigned long)9);
-  /*@ assert __memory_size ≡ 9; */
-  e_acsl_assert(__memory_size == (unsigned long)9,(char *)"Assertion",
-                (char *)"main",(char *)"__memory_size == 9",37);
+  /*@ assert __heap_size ≡ 9; */
+  __e_acsl_assert(__heap_size == (unsigned long)9,(char *)"Assertion",
+                  (char *)"main",(char *)"__heap_size == 9",37);
   __full_init((void *)(& b));
   b = (char *)__e_acsl_realloc((void *)b,(unsigned long)18);
-  /*@ assert __memory_size ≡ 18; */
-  e_acsl_assert(__memory_size == (unsigned long)18,(char *)"Assertion",
-                (char *)"main",(char *)"__memory_size == 18",41);
+  /*@ assert __heap_size ≡ 18; */
+  __e_acsl_assert(__heap_size == (unsigned long)18,(char *)"Assertion",
+                  (char *)"main",(char *)"__heap_size == 18",41);
   __full_init((void *)(& b));
   b = (char *)__e_acsl_realloc((void *)b,(unsigned long)0);
   __full_init((void *)(& b));
   b = (char *)0;
-  /*@ assert __memory_size ≡ 0; */
-  e_acsl_assert(__memory_size == (unsigned long)0,(char *)"Assertion",
-                (char *)"main",(char *)"__memory_size == 0",46);
+  /*@ assert __heap_size ≡ 0; */
+  __e_acsl_assert(__heap_size == (unsigned long)0,(char *)"Assertion",
+                  (char *)"main",(char *)"__heap_size == 0",46);
   __full_init((void *)(& b));
   b = (char *)__e_acsl_realloc((void *)b,(unsigned long)8);
-  /*@ assert __memory_size ≡ 8; */
-  e_acsl_assert(__memory_size == (unsigned long)8,(char *)"Assertion",
-                (char *)"main",(char *)"__memory_size == 8",50);
+  /*@ assert __heap_size ≡ 8; */
+  __e_acsl_assert(__heap_size == (unsigned long)8,(char *)"Assertion",
+                  (char *)"main",(char *)"__heap_size == 8",50);
   __full_init((void *)(& b));
   b = (char *)__e_acsl_realloc((void *)0,(unsigned long)8);
-  /*@ assert __memory_size ≡ 16; */
-  e_acsl_assert(__memory_size == (unsigned long)16,(char *)"Assertion",
-                (char *)"main",(char *)"__memory_size == 16",54);
+  /*@ assert __heap_size ≡ 16; */
+  __e_acsl_assert(__heap_size == (unsigned long)16,(char *)"Assertion",
+                  (char *)"main",(char *)"__heap_size == 16",54);
   __full_init((void *)(& b));
   b = (char *)__e_acsl_realloc((void *)0,18446744073709551615UL);
-  /*@ assert __memory_size ≡ 16; */
-  e_acsl_assert(__memory_size == (unsigned long)16,(char *)"Assertion",
-                (char *)"main",(char *)"__memory_size == 16",58);
+  /*@ assert __heap_size ≡ 16; */
+  __e_acsl_assert(__heap_size == (unsigned long)16,(char *)"Assertion",
+                  (char *)"main",(char *)"__heap_size == 16",58);
   /*@ assert b ≡ (char *)((void *)0); */
-  e_acsl_assert(b == (char *)0,(char *)"Assertion",(char *)"main",
-                (char *)"b == (char *)((void *)0)",59);
+  __e_acsl_assert(b == (char *)0,(char *)"Assertion",(char *)"main",
+                  (char *)"b == (char *)((void *)0)",59);
   __full_init((void *)(& b));
   b = (char *)__calloc(18446744073709551615UL,18446744073709551615UL);
-  /*@ assert __memory_size ≡ 16; */
-  e_acsl_assert(__memory_size == (unsigned long)16,(char *)"Assertion",
-                (char *)"main",(char *)"__memory_size == 16",63);
+  /*@ assert __heap_size ≡ 16; */
+  __e_acsl_assert(__heap_size == (unsigned long)16,(char *)"Assertion",
+                  (char *)"main",(char *)"__heap_size == 16",63);
   /*@ assert b ≡ (char *)((void *)0); */
-  e_acsl_assert(b == (char *)0,(char *)"Assertion",(char *)"main",
-                (char *)"b == (char *)((void *)0)",64);
+  __e_acsl_assert(b == (char *)0,(char *)"Assertion",(char *)"main",
+                  (char *)"b == (char *)((void *)0)",64);
   __full_init((void *)(& b));
   b = (char *)__e_acsl_malloc(18446744073709551615UL);
-  /*@ assert __memory_size ≡ 16; */
-  e_acsl_assert(__memory_size == (unsigned long)16,(char *)"Assertion",
-                (char *)"main",(char *)"__memory_size == 16",68);
+  /*@ assert __heap_size ≡ 16; */
+  __e_acsl_assert(__heap_size == (unsigned long)16,(char *)"Assertion",
+                  (char *)"main",(char *)"__heap_size == 16",68);
   /*@ assert b ≡ (char *)((void *)0); */
-  e_acsl_assert(b == (char *)0,(char *)"Assertion",(char *)"main",
-                (char *)"b == (char *)((void *)0)",69);
+  __e_acsl_assert(b == (char *)0,(char *)"Assertion",(char *)"main",
+                  (char *)"b == (char *)((void *)0)",69);
   __retres = 0;
   __delete_block((void *)(& b));
   __delete_block((void *)(& a));
diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_nested_code_annot.c b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_nested_code_annot.c
index 14b567831761bce58a5f76a404ae0cb173e62c1b..902a394a3332b5c66c7051a59b232a3de8fd5877 100644
--- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_nested_code_annot.c
+++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_nested_code_annot.c
@@ -7,44 +7,44 @@ int main(void)
   x = 0;
   y = 1;
   /*@ assert x < y; */
-  e_acsl_assert(x < y,(char *)"Assertion",(char *)"main",(char *)"x < y",7);
+  __e_acsl_assert(x < y,(char *)"Assertion",(char *)"main",(char *)"x < y",7);
   /*@ requires x ≡ 0;
       ensures x ≥ 1; */
   {
-    e_acsl_assert(x == 0,(char *)"Precondition",(char *)"main",
-                  (char *)"x == 0",8);
+    __e_acsl_assert(x == 0,(char *)"Precondition",(char *)"main",
+                    (char *)"x == 0",8);
     if (x) 
       /*@ assert \false; */
-      e_acsl_assert(0,(char *)"Assertion",(char *)"main",(char *)"\\false",
-                    11);
+      __e_acsl_assert(0,(char *)"Assertion",(char *)"main",(char *)"\\false",
+                      11);
     else {
       /*@ requires x ≡ 0;
           ensures x ≡ 1; */
       {
-        e_acsl_assert(x == 0,(char *)"Precondition",(char *)"main",
-                      (char *)"x == 0",13);
+        __e_acsl_assert(x == 0,(char *)"Precondition",(char *)"main",
+                        (char *)"x == 0",13);
         x ++;
-        e_acsl_assert(x == 1,(char *)"Postcondition",(char *)"main",
-                      (char *)"x == 1",14);
+        __e_acsl_assert(x == 1,(char *)"Postcondition",(char *)"main",
+                        (char *)"x == 1",14);
       }
       if (x) {
         /*@ requires x ≡ 1;
             ensures x ≡ 2; */
         {
-          e_acsl_assert(x == 1,(char *)"Precondition",(char *)"main",
-                        (char *)"x == 1",17);
+          __e_acsl_assert(x == 1,(char *)"Precondition",(char *)"main",
+                          (char *)"x == 1",17);
           x ++;
-          e_acsl_assert(x == 2,(char *)"Postcondition",(char *)"main",
-                        (char *)"x == 2",18);
+          __e_acsl_assert(x == 2,(char *)"Postcondition",(char *)"main",
+                          (char *)"x == 2",18);
         }
       }
       else 
         /*@ assert \false; */
-        e_acsl_assert(0,(char *)"Assertion",(char *)"main",(char *)"\\false",
-                      21);
+        __e_acsl_assert(0,(char *)"Assertion",(char *)"main",
+                        (char *)"\\false",21);
     }
-    e_acsl_assert(x >= 1,(char *)"Postcondition",(char *)"main",
-                  (char *)"x >= 1",9);
+    __e_acsl_assert(x >= 1,(char *)"Postcondition",(char *)"main",
+                    (char *)"x >= 1",9);
   }
   __retres = 0;
   return __retres;
diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_null.c b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_null.c
index 1f61c8baa2a87d7269fbd7af3cfc1cfe7ae1e89d..884218a24a664455043e94b25e2c4b9f735da232 100644
--- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_null.c
+++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_null.c
@@ -3,8 +3,8 @@ int main(void)
 {
   int __retres;
   /*@ assert \null ≡ (void *)0; */
-  e_acsl_assert((void *)0 == (void *)0,(char *)"Assertion",(char *)"main",
-                (char *)"\\null == (void *)0",6);
+  __e_acsl_assert((void *)0 == (void *)0,(char *)"Assertion",(char *)"main",
+                  (char *)"\\null == (void *)0",6);
   __retres = 0;
   return __retres;
 }
diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_offset.c b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_offset.c
new file mode 100644
index 0000000000000000000000000000000000000000..43875a289cfb2ef7399349f673ba4855ae077d3f
--- /dev/null
+++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_offset.c
@@ -0,0 +1,249 @@
+/* Generated by Frama-C */
+int A[4] = {1, 2, 3, 4};
+int *PA;
+void __e_acsl_globals_init(void)
+{
+  __store_block((void *)(& PA),8UL);
+  __full_init((void *)(& PA));
+  __store_block((void *)(A),16UL);
+  __full_init((void *)(& A));
+  return;
+}
+
+int main(void)
+{
+  int __retres;
+  int a[4];
+  long l;
+  char *pl;
+  int *pi;
+  char *p;
+  long *q;
+  __e_acsl_memory_init((int *)0,(char ***)0,8UL);
+  __e_acsl_globals_init();
+  __store_block((void *)(& q),8UL);
+  __store_block((void *)(& p),8UL);
+  __store_block((void *)(& pi),8UL);
+  __store_block((void *)(& pl),8UL);
+  __store_block((void *)(& l),8UL);
+  __store_block((void *)(a),16UL);
+  PA = (int *)(& A);
+  /*@ assert \offset((int *)A) ≡ 0; */
+  {
+    int __e_acsl_offset;
+    __e_acsl_offset = __offset((void *)(A));
+    __e_acsl_assert((unsigned long)__e_acsl_offset == (unsigned long)0,
+                    (char *)"Assertion",(char *)"main",
+                    (char *)"\\offset((int *)A) == 0",13);
+  }
+  /*@ assert \offset(&A[3]) ≡ 12; */
+  {
+    int __e_acsl_offset_2;
+    __e_acsl_offset_2 = __offset((void *)(& A[3]));
+    __e_acsl_assert((unsigned long)__e_acsl_offset_2 == (unsigned long)12,
+                    (char *)"Assertion",(char *)"main",
+                    (char *)"\\offset(&A[3]) == 12",14);
+  }
+  /*@ assert \offset(PA) ≡ 0; */
+  {
+    int __e_acsl_offset_3;
+    __e_acsl_offset_3 = __offset((void *)PA);
+    __e_acsl_assert((unsigned long)__e_acsl_offset_3 == (unsigned long)0,
+                    (char *)"Assertion",(char *)"main",
+                    (char *)"\\offset(PA) == 0",15);
+  }
+  PA ++;
+  /*@ assert \offset(PA+1) ≡ 8; */
+  {
+    int __e_acsl_offset_4;
+    __e_acsl_offset_4 = __offset((void *)(PA + 1));
+    __e_acsl_assert((unsigned long)__e_acsl_offset_4 == (unsigned long)8,
+                    (char *)"Assertion",(char *)"main",
+                    (char *)"\\offset(PA+1) == 8",17);
+  }
+  __initialize((void *)(a),sizeof(int));
+  a[0] = 1;
+  __initialize((void *)(& a[1]),sizeof(int));
+  a[1] = 2;
+  __initialize((void *)(& a[2]),sizeof(int));
+  a[2] = 3;
+  __initialize((void *)(& a[3]),sizeof(int));
+  a[3] = 4;
+  /*@ assert \offset((int *)a) ≡ 0; */
+  {
+    int __e_acsl_offset_5;
+    __e_acsl_offset_5 = __offset((void *)(a));
+    __e_acsl_assert((unsigned long)__e_acsl_offset_5 == (unsigned long)0,
+                    (char *)"Assertion",(char *)"main",
+                    (char *)"\\offset((int *)a) == 0",21);
+  }
+  /*@ assert \offset(&a[1]) ≡ 4; */
+  {
+    int __e_acsl_offset_6;
+    __e_acsl_offset_6 = __offset((void *)(& a[1]));
+    __e_acsl_assert((unsigned long)__e_acsl_offset_6 == (unsigned long)4,
+                    (char *)"Assertion",(char *)"main",
+                    (char *)"\\offset(&a[1]) == 4",22);
+  }
+  /*@ assert \offset(&a[3]) ≡ 12; */
+  {
+    int __e_acsl_offset_7;
+    __e_acsl_offset_7 = __offset((void *)(& a[3]));
+    __e_acsl_assert((unsigned long)__e_acsl_offset_7 == (unsigned long)12,
+                    (char *)"Assertion",(char *)"main",
+                    (char *)"\\offset(&a[3]) == 12",23);
+  }
+  __full_init((void *)(& l));
+  l = (long)4;
+  __full_init((void *)(& pl));
+  pl = (char *)(& l);
+  /*@ assert \offset(&l) ≡ 0; */
+  {
+    int __e_acsl_offset_8;
+    __e_acsl_offset_8 = __offset((void *)(& l));
+    __e_acsl_assert((unsigned long)__e_acsl_offset_8 == (unsigned long)0,
+                    (char *)"Assertion",(char *)"main",
+                    (char *)"\\offset(&l) == 0",28);
+  }
+  /*@ assert \offset(pl) ≡ 0; */
+  {
+    int __e_acsl_offset_9;
+    __e_acsl_offset_9 = __offset((void *)pl);
+    __e_acsl_assert((unsigned long)__e_acsl_offset_9 == (unsigned long)0,
+                    (char *)"Assertion",(char *)"main",
+                    (char *)"\\offset(pl) == 0",29);
+  }
+  /*@ assert \offset(pl+1) ≡ 1; */
+  {
+    int __e_acsl_offset_10;
+    __e_acsl_offset_10 = __offset((void *)(pl + 1));
+    __e_acsl_assert((unsigned long)__e_acsl_offset_10 == (unsigned long)1,
+                    (char *)"Assertion",(char *)"main",
+                    (char *)"\\offset(pl+1) == 1",30);
+  }
+  /*@ assert \offset(pl+7) ≡ 7; */
+  {
+    int __e_acsl_offset_11;
+    __e_acsl_offset_11 = __offset((void *)(pl + 7));
+    __e_acsl_assert((unsigned long)__e_acsl_offset_11 == (unsigned long)7,
+                    (char *)"Assertion",(char *)"main",
+                    (char *)"\\offset(pl+7) == 7",31);
+  }
+  __full_init((void *)(& pi));
+  pi = (int *)(& l);
+  /*@ assert \offset(pi) ≡ 0; */
+  {
+    int __e_acsl_offset_12;
+    __e_acsl_offset_12 = __offset((void *)pi);
+    __e_acsl_assert((unsigned long)__e_acsl_offset_12 == (unsigned long)0,
+                    (char *)"Assertion",(char *)"main",
+                    (char *)"\\offset(pi) == 0",33);
+  }
+  __full_init((void *)(& pi));
+  pi ++;
+  /*@ assert \offset(pi) ≡ 4; */
+  {
+    int __e_acsl_offset_13;
+    __e_acsl_offset_13 = __offset((void *)pi);
+    __e_acsl_assert((unsigned long)__e_acsl_offset_13 == (unsigned long)4,
+                    (char *)"Assertion",(char *)"main",
+                    (char *)"\\offset(pi) == 4",35);
+  }
+  __full_init((void *)(& p));
+  p = (char *)__e_acsl_malloc((unsigned long)12);
+  /*@ assert \offset(p) ≡ 0; */
+  {
+    int __e_acsl_offset_14;
+    __e_acsl_offset_14 = __offset((void *)p);
+    __e_acsl_assert((unsigned long)__e_acsl_offset_14 == (unsigned long)0,
+                    (char *)"Assertion",(char *)"main",
+                    (char *)"\\offset(p) == 0",39);
+  }
+  /*@ assert \offset(p+1) ≡ 1; */
+  {
+    int __e_acsl_offset_15;
+    __e_acsl_offset_15 = __offset((void *)(p + 1));
+    __e_acsl_assert((unsigned long)__e_acsl_offset_15 == (unsigned long)1,
+                    (char *)"Assertion",(char *)"main",
+                    (char *)"\\offset(p+1) == 1",40);
+  }
+  /*@ assert \offset(p+11) ≡ 11; */
+  {
+    int __e_acsl_offset_16;
+    __e_acsl_offset_16 = __offset((void *)(p + 11));
+    __e_acsl_assert((unsigned long)__e_acsl_offset_16 == (unsigned long)11,
+                    (char *)"Assertion",(char *)"main",
+                    (char *)"\\offset(p+11) == 11",41);
+  }
+  __full_init((void *)(& p));
+  p += 5;
+  /*@ assert \offset(p+5) ≡ 10; */
+  {
+    int __e_acsl_offset_17;
+    __e_acsl_offset_17 = __offset((void *)(p + 5));
+    __e_acsl_assert((unsigned long)__e_acsl_offset_17 == (unsigned long)10,
+                    (char *)"Assertion",(char *)"main",
+                    (char *)"\\offset(p+5) == 10",43);
+  }
+  /*@ assert \offset(p-5) ≡ 0; */
+  {
+    int __e_acsl_offset_18;
+    __e_acsl_offset_18 = __offset((void *)(p - 5));
+    __e_acsl_assert((unsigned long)__e_acsl_offset_18 == (unsigned long)0,
+                    (char *)"Assertion",(char *)"main",
+                    (char *)"\\offset(p-5) == 0",44);
+  }
+  __full_init((void *)(& q));
+  q = (long *)__e_acsl_malloc((unsigned long)30 * sizeof(long));
+  /*@ assert \offset(q) ≡ 0; */
+  {
+    int __e_acsl_offset_19;
+    __e_acsl_offset_19 = __offset((void *)q);
+    __e_acsl_assert((unsigned long)__e_acsl_offset_19 == (unsigned long)0,
+                    (char *)"Assertion",(char *)"main",
+                    (char *)"\\offset(q) == 0",49);
+  }
+  __full_init((void *)(& q));
+  q ++;
+  /*@ assert \offset(q) ≡ sizeof(long); */
+  {
+    int __e_acsl_offset_20;
+    __e_acsl_offset_20 = __offset((void *)q);
+    __e_acsl_assert((unsigned long)__e_acsl_offset_20 == 8UL,
+                    (char *)"Assertion",(char *)"main",
+                    (char *)"\\offset(q) == sizeof(long)",51);
+  }
+  __full_init((void *)(& q));
+  q += 2;
+  /*@ assert \offset(q) ≡ sizeof(long)*3; */
+  {
+    int __e_acsl_offset_21;
+    __e_acsl_offset_21 = __offset((void *)q);
+    __e_acsl_assert((unsigned long)__e_acsl_offset_21 == (unsigned long)(
+                    8 * 3),(char *)"Assertion",(char *)"main",
+                    (char *)"\\offset(q) == sizeof(long)*3",53);
+  }
+  __full_init((void *)(& q));
+  q += 4;
+  /*@ assert \offset(q) ≡ sizeof(long)*7; */
+  {
+    int __e_acsl_offset_22;
+    __e_acsl_offset_22 = __offset((void *)q);
+    __e_acsl_assert((unsigned long)__e_acsl_offset_22 == (unsigned long)(
+                    8 * 7),(char *)"Assertion",(char *)"main",
+                    (char *)"\\offset(q) == sizeof(long)*7",55);
+  }
+  __retres = 0;
+  __delete_block((void *)(& PA));
+  __delete_block((void *)(A));
+  __delete_block((void *)(& q));
+  __delete_block((void *)(& p));
+  __delete_block((void *)(& pi));
+  __delete_block((void *)(& pl));
+  __delete_block((void *)(& l));
+  __delete_block((void *)(a));
+  __e_acsl_memory_clean();
+  return __retres;
+}
+
+
diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_other_constants.c b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_other_constants.c
index 0dda9995aecd5dcfb65ee537f65f8434c4cd0b89..8189abbe6a27209fe7b0d41ca72103c68c4f91e5 100644
--- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_other_constants.c
+++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_other_constants.c
@@ -7,11 +7,11 @@ int main(void)
 {
   int __retres;
   /*@ assert 'c' ≡ 'c'; */
-  e_acsl_assert('c' == 'c',(char *)"Assertion",(char *)"main",
-                (char *)"\'c\' == \'c\'",10);
+  __e_acsl_assert('c' == 'c',(char *)"Assertion",(char *)"main",
+                  (char *)"\'c\' == \'c\'",10);
   /*@ assert false ≢ true; */
-  e_acsl_assert(false != true,(char *)"Assertion",(char *)"main",
-                (char *)"false != true",11);
+  __e_acsl_assert(false != true,(char *)"Assertion",(char *)"main",
+                  (char *)"false != true",11);
   __retres = 0;
   return __retres;
 }
diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_ptr.c b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_ptr.c
index 47d6cc6c523f57252ed03cffc34c58bb7f62d947..a5d213aa97917f1b1dd6f05533b8fd0b20a77a37 100644
--- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_ptr.c
+++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_ptr.c
@@ -5,6 +5,7 @@ int main(void)
   int x;
   int t[3];
   int *p;
+  __e_acsl_memory_init((int *)0,(char ***)0,8UL);
   __store_block((void *)(& p),8UL);
   __store_block((void *)(t),12UL);
   __store_block((void *)(& x),4UL);
@@ -29,49 +30,50 @@ int main(void)
       __e_acsl_and = __e_acsl_valid_read;
     }
     else __e_acsl_and = 0;
-    e_acsl_assert(__e_acsl_and,(char *)"RTE",(char *)"main",
-                  (char *)"mem_access: \\valid_read(p)",11);
-    e_acsl_assert(*p == 1,(char *)"Assertion",(char *)"main",
-                  (char *)"*p == 1",11);
+    __e_acsl_assert(__e_acsl_and,(char *)"RTE",(char *)"main",
+                    (char *)"mem_access: \\valid_read(p)",11);
+    __e_acsl_assert(*p == 1,(char *)"Assertion",(char *)"main",
+                    (char *)"*p == 1",11);
   }
   /*@ assert t[0] ≡ 2; */
-  e_acsl_assert(t[0] == 2,(char *)"Assertion",(char *)"main",
-                (char *)"t[0] == 2",12);
+  __e_acsl_assert(t[0] == 2,(char *)"Assertion",(char *)"main",
+                  (char *)"t[0] == 2",12);
   /*@ assert t[2] ≡ 4; */
-  e_acsl_assert(t[2] == 4,(char *)"Assertion",(char *)"main",
-                (char *)"t[2] == 4",13);
+  __e_acsl_assert(t[2] == 4,(char *)"Assertion",(char *)"main",
+                  (char *)"t[2] == 4",13);
   /*@ assert t[(2*sizeof(int))/sizeof((int)0x0)] ≡ 4; */
-  e_acsl_assert(t[(2 * 4) / 4] == 4,(char *)"Assertion",(char *)"main",
-                (char *)"t[(2*sizeof(int))/sizeof((int)0x0)] == 4",14);
+  __e_acsl_assert(t[(2 * 4) / 4] == 4,(char *)"Assertion",(char *)"main",
+                  (char *)"t[(2*sizeof(int))/sizeof((int)0x0)] == 4",14);
   {
     int i;
     i = 0;
     while (i < 2) {
       /*@ assert t[i] ≡ i+2; */
-      e_acsl_assert(i < 3,(char *)"RTE",(char *)"main",
-                    (char *)"index_bound: i < 3",17);
-      e_acsl_assert(0 <= i,(char *)"RTE",(char *)"main",
-                    (char *)"index_bound: 0 <= i",17);
-      e_acsl_assert((long)t[i] == (long)i + (long)2,(char *)"Assertion",
-                    (char *)"main",(char *)"t[i] == i+2",17);
+      __e_acsl_assert(i < 3,(char *)"RTE",(char *)"main",
+                      (char *)"index_bound: i < 3",17);
+      __e_acsl_assert(0 <= i,(char *)"RTE",(char *)"main",
+                      (char *)"index_bound: 0 <= i",17);
+      __e_acsl_assert((long)t[i] == (long)i + (long)2,(char *)"Assertion",
+                      (char *)"main",(char *)"t[i] == i+2",17);
       /*@ assert t[2-i] ≡ 4-i; */
-      e_acsl_assert((long)2 - (long)i < (long)3,(char *)"RTE",(char *)"main",
-                    (char *)"index_bound: (long)(2-(long)i) < 3",18);
-      e_acsl_assert(0L <= (long)2 - (long)i,(char *)"RTE",(char *)"main",
-                    (char *)"index_bound: 0 <= (long)(2-(long)i)",18);
-      e_acsl_assert((long)t[(long)2 - (long)i] == (long)4 - (long)i,
-                    (char *)"Assertion",(char *)"main",
-                    (char *)"t[2-i] == 4-i",18);
+      __e_acsl_assert((long)2 - (long)i < (long)3,(char *)"RTE",
+                      (char *)"main",
+                      (char *)"index_bound: (long)(2-(long)i) < 3",18);
+      __e_acsl_assert(0L <= (long)2 - (long)i,(char *)"RTE",(char *)"main",
+                      (char *)"index_bound: 0 <= (long)(2-(long)i)",18);
+      __e_acsl_assert((long)t[(long)2 - (long)i] == (long)4 - (long)i,
+                      (char *)"Assertion",(char *)"main",
+                      (char *)"t[2-i] == 4-i",18);
       /*@ assert *(&t[2]-i) ≡ 4-i; */
       {
         int __e_acsl_valid_read_2;
         __e_acsl_valid_read_2 = __valid_read((void *)(& t[2] - i),
                                              sizeof(int));
-        e_acsl_assert(__e_acsl_valid_read_2,(char *)"RTE",(char *)"main",
-                      (char *)"mem_access: \\valid_read(&t[2]-i)",19);
-        e_acsl_assert((long)*(& t[2] - i) == (long)4 - (long)i,
-                      (char *)"Assertion",(char *)"main",
-                      (char *)"*(&t[2]-i) == 4-i",19);
+        __e_acsl_assert(__e_acsl_valid_read_2,(char *)"RTE",(char *)"main",
+                        (char *)"mem_access: \\valid_read(&t[2]-i)",19);
+        __e_acsl_assert((long)*(& t[2] - i) == (long)4 - (long)i,
+                        (char *)"Assertion",(char *)"main",
+                        (char *)"*(&t[2]-i) == 4-i",19);
       }
       i ++;
     }
@@ -91,10 +93,10 @@ int main(void)
       __e_acsl_and_2 = __e_acsl_valid_read_3;
     }
     else __e_acsl_and_2 = 0;
-    e_acsl_assert(__e_acsl_and_2,(char *)"RTE",(char *)"main",
-                  (char *)"mem_access: \\valid_read(p)",25);
-    e_acsl_assert(*p == 5,(char *)"Assertion",(char *)"main",
-                  (char *)"*p == 5",25);
+    __e_acsl_assert(__e_acsl_and_2,(char *)"RTE",(char *)"main",
+                    (char *)"mem_access: \\valid_read(p)",25);
+    __e_acsl_assert(*p == 5,(char *)"Assertion",(char *)"main",
+                    (char *)"*p == 5",25);
   }
   __retres = 0;
   __delete_block((void *)(& p));
diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_ptr_init.c b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_ptr_init.c
index 475128740b1e45a9bdef683e1ac84aa4509cfe29..0b3e6de4726af6f5bf14c8d3982e6b68e3fbdb99 100644
--- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_ptr_init.c
+++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_ptr_init.c
@@ -11,13 +11,13 @@ void g(int *C, int *D)
 {
   /*@ assert \initialized(&C); */
   __store_block((void *)(& C),8UL);
-  e_acsl_assert(1,(char *)"Assertion",(char *)"g",
-                (char *)"\\initialized(&C)",16);
+  __e_acsl_assert(1,(char *)"Assertion",(char *)"g",
+                  (char *)"\\initialized(&C)",16);
   __delete_block((void *)(& C));
   return;
 }
 
-void __e_acsl_memory_init(void)
+void __e_acsl_globals_init(void)
 {
   __store_block((void *)(& B),8UL);
   __full_init((void *)(& B));
@@ -31,7 +31,8 @@ int main(void)
   int __retres;
   int *x;
   int *y;
-  __e_acsl_memory_init();
+  __e_acsl_memory_init((int *)0,(char ***)0,8UL);
+  __e_acsl_globals_init();
   __store_block((void *)(& y),8UL);
   __store_block((void *)(& x),8UL);
   B = (int *)__e_acsl_malloc(sizeof(int));
@@ -41,14 +42,14 @@ int main(void)
   x = y;
   f();
   /*@ assert \initialized(&A); */
-  e_acsl_assert(1,(char *)"Assertion",(char *)"main",
-                (char *)"\\initialized(&A)",25);
+  __e_acsl_assert(1,(char *)"Assertion",(char *)"main",
+                  (char *)"\\initialized(&A)",25);
   /*@ assert \initialized(&x); */
   {
     int __e_acsl_initialized;
     __e_acsl_initialized = __initialized((void *)(& x),sizeof(int *));
-    e_acsl_assert(__e_acsl_initialized,(char *)"Assertion",(char *)"main",
-                  (char *)"\\initialized(&x)",26);
+    __e_acsl_assert(__e_acsl_initialized,(char *)"Assertion",(char *)"main",
+                    (char *)"\\initialized(&x)",26);
   }
   g(x,y);
   __retres = 0;
diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_result.c b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_result.c
index 7afe9f98fcea7da81889cb38008267e61b36c15c..48a61b45a89c65b75604ab53cb3acf7191da9004 100644
--- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_result.c
+++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_result.c
@@ -15,9 +15,9 @@ int __e_acsl_f(int x)
   __e_acsl_at_2 = x;
   __e_acsl_at = x;
   __retres = f(x);
-  e_acsl_assert(__retres == (int)((long)__e_acsl_at - (long)__e_acsl_at_2),
-                (char *)"Postcondition",(char *)"f",
-                (char *)"\\result == (int)(\\old(x)-\\old(x))",5);
+  __e_acsl_assert(__retres == (int)((long)__e_acsl_at - (long)__e_acsl_at_2),
+                  (char *)"Postcondition",(char *)"f",
+                  (char *)"\\result == (int)(\\old(x)-\\old(x))",5);
   return __retres;
 }
 
@@ -33,8 +33,8 @@ int __e_acsl_g(int x)
 {
   int __retres;
   __retres = g(x);
-  e_acsl_assert(__retres == Y,(char *)"Postcondition",(char *)"g",
-                (char *)"\\result == Y",16);
+  __e_acsl_assert(__retres == Y,(char *)"Postcondition",(char *)"g",
+                  (char *)"\\result == Y",16);
   return __retres;
 }
 
@@ -51,8 +51,8 @@ int __e_acsl_h(void)
 {
   int __retres;
   __retres = h();
-  e_acsl_assert(__retres == 0,(char *)"Postcondition",(char *)"h",
-                (char *)"\\result == 0",21);
+  __e_acsl_assert(__retres == 0,(char *)"Postcondition",(char *)"h",
+                  (char *)"\\result == 0",21);
   return __retres;
 }
 
diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_sizeof.c b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_sizeof.c
index 0df54195f104c351d694929c2739eea003cb1856..7f98cb9e792ec665ecd10c03427839ccdad88173 100644
--- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_sizeof.c
+++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_sizeof.c
@@ -6,8 +6,8 @@ int main(void)
   x = 0;
   x ++;
   /*@ assert sizeof(int) ≡ sizeof(x); */
-  e_acsl_assert(4 == 4,(char *)"Assertion",(char *)"main",
-                (char *)"sizeof(int) == sizeof(x)",8);
+  __e_acsl_assert(4 == 4,(char *)"Assertion",(char *)"main",
+                  (char *)"sizeof(int) == sizeof(x)",8);
   __retres = 0;
   return __retres;
 }
diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_stdout.c b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_stdout.c
index f2ce24f1452338f75e1df12f08217242082115de..ff3d6fe78a1a7234a4a37a56440452a738174a81 100644
--- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_stdout.c
+++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_stdout.c
@@ -1,16 +1,16 @@
 /* Generated by Frama-C */
 char *__e_acsl_literal_string_2;
 char *__e_acsl_literal_string;
-void __e_acsl_memory_init(void)
+void __e_acsl_globals_init(void)
 {
   __e_acsl_literal_string_2 = "wb";
   __store_block((void *)__e_acsl_literal_string_2,sizeof("wb"));
   __full_init((void *)__e_acsl_literal_string_2);
-  __literal_string((void *)__e_acsl_literal_string_2);
+  __readonly((void *)__e_acsl_literal_string_2);
   __e_acsl_literal_string = "/tmp/foo";
   __store_block((void *)__e_acsl_literal_string,sizeof("/tmp/foo"));
   __full_init((void *)__e_acsl_literal_string);
-  __literal_string((void *)__e_acsl_literal_string);
+  __readonly((void *)__e_acsl_literal_string);
   __store_block((void *)(& stdout),8UL);
   __full_init((void *)(& stdout));
   return;
@@ -21,14 +21,15 @@ int main(void)
   int __retres;
   FILE *f;
   FILE *f2;
-  __e_acsl_memory_init();
+  __e_acsl_memory_init((int *)0,(char ***)0,8UL);
+  __e_acsl_globals_init();
   __store_block((void *)(& f),8UL);
   __full_init((void *)(& f));
   f = stdout;
   f2 = __e_acsl_fopen(__e_acsl_literal_string,__e_acsl_literal_string_2);
   /*@ assert f ≡ __fc_stdout; */
-  e_acsl_assert(f == stdout,(char *)"Assertion",(char *)"main",
-                (char *)"f == __fc_stdout",11);
+  __e_acsl_assert(f == stdout,(char *)"Assertion",(char *)"main",
+                  (char *)"f == __fc_stdout",11);
   __retres = 0;
   __delete_block((void *)(& stdout));
   __delete_block((void *)(& f));
diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_stmt_contract.c b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_stmt_contract.c
index 666381e892b1de40b033946e2a4aca7720dcc5bb..c463b12a7a38aeaa9de203f021c09fa124bb9179 100644
--- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_stmt_contract.c
+++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_stmt_contract.c
@@ -9,28 +9,28 @@ int main(void)
   /*@ ensures x ≡ 1; */
   {
     x = 1;
-    e_acsl_assert(x == 1,(char *)"Postcondition",(char *)"main",
-                  (char *)"x == 1",8);
+    __e_acsl_assert(x == 1,(char *)"Postcondition",(char *)"main",
+                    (char *)"x == 1",8);
   }
   /*@ ensures x ≡ 2;
       ensures y ≡ 2; */
   {
     x = 2;
-    e_acsl_assert(x == 2,(char *)"Postcondition",(char *)"main",
-                  (char *)"x == 2",11);
-    e_acsl_assert(y == 2,(char *)"Postcondition",(char *)"main",
-                  (char *)"y == 2",12);
+    __e_acsl_assert(x == 2,(char *)"Postcondition",(char *)"main",
+                    (char *)"x == 2",11);
+    __e_acsl_assert(y == 2,(char *)"Postcondition",(char *)"main",
+                    (char *)"y == 2",12);
   }
   /*@ requires x ≡ 2; */
-  e_acsl_assert(x == 2,(char *)"Precondition",(char *)"main",
-                (char *)"x == 2",15);
+  __e_acsl_assert(x == 2,(char *)"Precondition",(char *)"main",
+                  (char *)"x == 2",15);
   x ++;
   /*@ requires x ≡ 3;
       requires y ≡ 2; */
-  e_acsl_assert(x == 3,(char *)"Precondition",(char *)"main",
-                (char *)"x == 3",18);
-  e_acsl_assert(y == 2,(char *)"Precondition",(char *)"main",
-                (char *)"y == 2",19);
+  __e_acsl_assert(x == 3,(char *)"Precondition",(char *)"main",
+                  (char *)"x == 3",18);
+  __e_acsl_assert(y == 2,(char *)"Precondition",(char *)"main",
+                  (char *)"y == 2",19);
   x += y;
   /*@ behavior b1:
         requires x ≡ 5;
@@ -42,17 +42,17 @@ int main(void)
         ensures x ≡ y+1;
   */
   {
-    e_acsl_assert(x == 5,(char *)"Precondition",(char *)"main",
-                  (char *)"x == 5",23);
-    e_acsl_assert((long)x == (long)3 + (long)y,(char *)"Precondition",
-                  (char *)"main",(char *)"x == 3+y",26);
-    e_acsl_assert(y == 2,(char *)"Precondition",(char *)"main",
-                  (char *)"y == 2",27);
+    __e_acsl_assert(x == 5,(char *)"Precondition",(char *)"main",
+                    (char *)"x == 5",23);
+    __e_acsl_assert((long)x == (long)3 + (long)y,(char *)"Precondition",
+                    (char *)"main",(char *)"x == 3+y",26);
+    __e_acsl_assert(y == 2,(char *)"Precondition",(char *)"main",
+                    (char *)"y == 2",27);
     x = 3;
-    e_acsl_assert(x == 3,(char *)"Postcondition",(char *)"main",
-                  (char *)"x == 3",24);
-    e_acsl_assert((long)x == (long)y + (long)1,(char *)"Postcondition",
-                  (char *)"main",(char *)"x == y+1",28);
+    __e_acsl_assert(x == 3,(char *)"Postcondition",(char *)"main",
+                    (char *)"x == 3",24);
+    __e_acsl_assert((long)x == (long)y + (long)1,(char *)"Postcondition",
+                    (char *)"main",(char *)"x == y+1",28);
   }
   /*@ behavior b1:
         assumes x ≡ 1;
@@ -71,35 +71,35 @@ int main(void)
     int __e_acsl_and_2;
     int __e_acsl_implies_3;
     if (! (x == 1)) __e_acsl_implies = 1; else __e_acsl_implies = x == 0;
-    e_acsl_assert(__e_acsl_implies,(char *)"Precondition",(char *)"main",
-                  (char *)"x == 1 ==> x == 0",33);
+    __e_acsl_assert(__e_acsl_implies,(char *)"Precondition",(char *)"main",
+                    (char *)"x == 1 ==> x == 0",33);
     if (x == 3) __e_acsl_and = y == 2; else __e_acsl_and = 0;
     if (! __e_acsl_and) __e_acsl_implies_2 = 1;
     else __e_acsl_implies_2 = x == 3;
-    e_acsl_assert(__e_acsl_implies_2,(char *)"Precondition",(char *)"main",
-                  (char *)"x == 3 && y == 2 ==> x == 3",37);
+    __e_acsl_assert(__e_acsl_implies_2,(char *)"Precondition",(char *)"main",
+                    (char *)"x == 3 && y == 2 ==> x == 3",37);
     if (x == 3) __e_acsl_and_2 = y == 2; else __e_acsl_and_2 = 0;
     if (! __e_acsl_and_2) __e_acsl_implies_3 = 1;
     else __e_acsl_implies_3 = (long)x + (long)y == (long)5;
-    e_acsl_assert(__e_acsl_implies_3,(char *)"Precondition",(char *)"main",
-                  (char *)"x == 3 && y == 2 ==> x+y == 5",38);
+    __e_acsl_assert(__e_acsl_implies_3,(char *)"Precondition",(char *)"main",
+                    (char *)"x == 3 && y == 2 ==> x+y == 5",38);
     x += y;
   }
   /*@ requires x ≡ 5; */
-  e_acsl_assert(x == 5,(char *)"Precondition",(char *)"main",
-                (char *)"x == 5",41);
+  __e_acsl_assert(x == 5,(char *)"Precondition",(char *)"main",
+                  (char *)"x == 5",41);
   /*@ requires y ≡ 2; */
-  e_acsl_assert(y == 2,(char *)"Precondition",(char *)"main",
-                (char *)"y == 2",42);
+  __e_acsl_assert(y == 2,(char *)"Precondition",(char *)"main",
+                  (char *)"y == 2",42);
   x += y;
   /*@ requires x ≡ 7;
       ensures x ≡ 7; */
   {
-    e_acsl_assert(x == 7,(char *)"Precondition",(char *)"main",
-                  (char *)"x == 7",45);
+    __e_acsl_assert(x == 7,(char *)"Precondition",(char *)"main",
+                    (char *)"x == 7",45);
     __retres = 0;
-    e_acsl_assert(x == 7,(char *)"Postcondition",(char *)"main",
-                  (char *)"x == 7",46);
+    __e_acsl_assert(x == 7,(char *)"Postcondition",(char *)"main",
+                    (char *)"x == 7",46);
   }
   return __retres;
 }
diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_true.c b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_true.c
index 27e8e5cb7c879b4ad6467ae6eb3e370c33dc4667..18e197aaa6e2a1605daedf6c58bebfc1089bc87a 100644
--- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_true.c
+++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_true.c
@@ -6,7 +6,7 @@ int main(void)
   x = 0;
   x ++;
   /*@ assert \true; */
-  e_acsl_assert(1,(char *)"Assertion",(char *)"main",(char *)"\\true",8);
+  __e_acsl_assert(1,(char *)"Assertion",(char *)"main",(char *)"\\true",8);
   __retres = 0;
   return __retres;
 }
diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_typedef.c b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_typedef.c
index c8a8865a4fd4162952bcc2cdf6b2c2c75082903d..6ca3ca2c468353ed63dfc8b3fda97da603524915 100644
--- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_typedef.c
+++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_typedef.c
@@ -6,8 +6,8 @@ int main(void)
   uint8 x;
   x = (unsigned char)0;
   /*@ assert x ≡ 0; */
-  e_acsl_assert((int)x == 0,(char *)"Assertion",(char *)"main",
-                (char *)"x == 0",9);
+  __e_acsl_assert((int)x == 0,(char *)"Assertion",(char *)"main",
+                  (char *)"x == 0",9);
   __retres = 0;
   return __retres;
 }
diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_valid.c b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_valid.c
index d0efabe52040bca9d9340ae942d540a1c44de193..c3b7d26d52a678165abc605f73decc8a21e28753 100644
--- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_valid.c
+++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_valid.c
@@ -19,8 +19,8 @@ int *f(int *x)
       __e_acsl_and = __e_acsl_valid;
     }
     else __e_acsl_and = 0;
-    e_acsl_assert(! __e_acsl_and,(char *)"Assertion",(char *)"f",
-                  (char *)"!\\valid(y)",17);
+    __e_acsl_assert(! __e_acsl_and,(char *)"Assertion",(char *)"f",
+                    (char *)"!\\valid(y)",17);
   }
   __full_init((void *)(& y));
   y = x;
@@ -28,8 +28,8 @@ int *f(int *x)
   {
     int __e_acsl_valid_2;
     __e_acsl_valid_2 = __valid((void *)x,sizeof(int));
-    e_acsl_assert(__e_acsl_valid_2,(char *)"Assertion",(char *)"f",
-                  (char *)"\\valid(x)",19);
+    __e_acsl_assert(__e_acsl_valid_2,(char *)"Assertion",(char *)"f",
+                    (char *)"\\valid(x)",19);
   }
   __delete_block((void *)(& x));
   __delete_block((void *)(& y));
@@ -46,15 +46,15 @@ int *__e_acsl_f(int *x)
     int __e_acsl_valid;
     __store_block((void *)(& x),8UL);
     __e_acsl_valid = __valid((void *)x,sizeof(int));
-    e_acsl_assert(__e_acsl_valid,(char *)"Precondition",(char *)"f",
-                  (char *)"\\valid(x)",13);
+    __e_acsl_assert(__e_acsl_valid,(char *)"Precondition",(char *)"f",
+                    (char *)"\\valid(x)",13);
     __retres = f(x);
   }
   {
     int __e_acsl_valid_2;
     __e_acsl_valid_2 = __valid((void *)__retres,sizeof(int));
-    e_acsl_assert(__e_acsl_valid_2,(char *)"Postcondition",(char *)"f",
-                  (char *)"\\valid(\\result)",14);
+    __e_acsl_assert(__e_acsl_valid_2,(char *)"Postcondition",(char *)"f",
+                    (char *)"\\valid(\\result)",14);
     __delete_block((void *)(& x));
     __delete_block((void *)(& __retres));
     return __retres;
@@ -91,14 +91,14 @@ void g(void)
         __e_acsl_and = __e_acsl_valid_read;
       }
       else __e_acsl_and = 0;
-      e_acsl_assert(__e_acsl_and,(char *)"RTE",(char *)"g",
-                    (char *)"mem_access: \\valid_read(p)",28);
+      __e_acsl_assert(__e_acsl_and,(char *)"RTE",(char *)"g",
+                      (char *)"mem_access: \\valid_read(p)",28);
       __e_acsl_valid = __valid((void *)*p,sizeof(int));
       __e_acsl_and_2 = __e_acsl_valid;
     }
     else __e_acsl_and_2 = 0;
-    e_acsl_assert(__e_acsl_and_2,(char *)"Assertion",(char *)"g",
-                  (char *)"\\valid(*p)",28);
+    __e_acsl_assert(__e_acsl_and_2,(char *)"Assertion",(char *)"g",
+                    (char *)"\\valid(*p)",28);
   }
   __delete_block((void *)(& p));
   __delete_block((void *)(& u));
@@ -106,7 +106,7 @@ void g(void)
   return;
 }
 
-void __e_acsl_memory_init(void)
+void __e_acsl_globals_init(void)
 {
   __store_block((void *)(& Z),4UL);
   __full_init((void *)(& Z));
@@ -123,7 +123,8 @@ int main(void)
   int **c;
   int ***d;
   int n;
-  __e_acsl_memory_init();
+  __e_acsl_memory_init((int *)0,(char ***)0,8UL);
+  __e_acsl_globals_init();
   __store_block((void *)(& n),4UL);
   __store_block((void *)(& d),8UL);
   __store_block((void *)(& c),8UL);
@@ -163,8 +164,8 @@ int main(void)
       __e_acsl_and_4 = ! __e_acsl_valid_3;
     }
     else __e_acsl_and_4 = 0;
-    e_acsl_assert(__e_acsl_and_4,(char *)"Assertion",(char *)"main",
-                  (char *)"!\\valid(a) && !\\valid(b) && !\\valid(X)",33);
+    __e_acsl_assert(__e_acsl_and_4,(char *)"Assertion",(char *)"main",
+                    (char *)"!\\valid(a) && !\\valid(b) && !\\valid(X)",33);
   }
   __full_init((void *)(& a));
   a = (int *)__e_acsl_malloc(sizeof(int));
@@ -200,8 +201,8 @@ int main(void)
       __e_acsl_and_8 = ! __e_acsl_valid_6;
     }
     else __e_acsl_and_8 = 0;
-    e_acsl_assert(__e_acsl_and_8,(char *)"Assertion",(char *)"main",
-                  (char *)"\\valid(a) && !\\valid(b) && !\\valid(X)",35);
+    __e_acsl_assert(__e_acsl_and_8,(char *)"Assertion",(char *)"main",
+                    (char *)"\\valid(a) && !\\valid(b) && !\\valid(X)",35);
   }
   X = a;
   /*@ assert \valid(a) ∧ ¬\valid(b) ∧ \valid(X); */
@@ -236,8 +237,8 @@ int main(void)
       __e_acsl_and_12 = __e_acsl_valid_9;
     }
     else __e_acsl_and_12 = 0;
-    e_acsl_assert(__e_acsl_and_12,(char *)"Assertion",(char *)"main",
-                  (char *)"\\valid(a) && !\\valid(b) && \\valid(X)",37);
+    __e_acsl_assert(__e_acsl_and_12,(char *)"Assertion",(char *)"main",
+                    (char *)"\\valid(a) && !\\valid(b) && \\valid(X)",37);
   }
   __full_init((void *)(& b));
   b = __e_acsl_f(& n);
@@ -273,8 +274,8 @@ int main(void)
       __e_acsl_and_16 = __e_acsl_valid_12;
     }
     else __e_acsl_and_16 = 0;
-    e_acsl_assert(__e_acsl_and_16,(char *)"Assertion",(char *)"main",
-                  (char *)"\\valid(a) && \\valid(b) && \\valid(X)",39);
+    __e_acsl_assert(__e_acsl_and_16,(char *)"Assertion",(char *)"main",
+                    (char *)"\\valid(a) && \\valid(b) && \\valid(X)",39);
   }
   X = b;
   /*@ assert \valid(a) ∧ \valid(b) ∧ \valid(X); */
@@ -309,8 +310,8 @@ int main(void)
       __e_acsl_and_20 = __e_acsl_valid_15;
     }
     else __e_acsl_and_20 = 0;
-    e_acsl_assert(__e_acsl_and_20,(char *)"Assertion",(char *)"main",
-                  (char *)"\\valid(a) && \\valid(b) && \\valid(X)",41);
+    __e_acsl_assert(__e_acsl_and_20,(char *)"Assertion",(char *)"main",
+                    (char *)"\\valid(a) && \\valid(b) && \\valid(X)",41);
   }
   __full_init((void *)(& c));
   c = & a;
@@ -332,14 +333,14 @@ int main(void)
         __e_acsl_and_21 = __e_acsl_valid_read;
       }
       else __e_acsl_and_21 = 0;
-      e_acsl_assert(__e_acsl_and_21,(char *)"RTE",(char *)"main",
-                    (char *)"mem_access: \\valid_read(c)",44);
+      __e_acsl_assert(__e_acsl_and_21,(char *)"RTE",(char *)"main",
+                      (char *)"mem_access: \\valid_read(c)",44);
       __e_acsl_valid_16 = __valid((void *)*c,sizeof(int));
       __e_acsl_and_22 = __e_acsl_valid_16;
     }
     else __e_acsl_and_22 = 0;
-    e_acsl_assert(__e_acsl_and_22,(char *)"Assertion",(char *)"main",
-                  (char *)"\\valid(*c)",44);
+    __e_acsl_assert(__e_acsl_and_22,(char *)"Assertion",(char *)"main",
+                    (char *)"\\valid(*c)",44);
   }
   /*@ assert \valid(*(*d)); */
   {
@@ -347,8 +348,8 @@ int main(void)
     int __e_acsl_initialized_13;
     int __e_acsl_and_26;
     __e_acsl_valid_read_2 = __valid_read((void *)d,sizeof(int **));
-    e_acsl_assert(__e_acsl_valid_read_2,(char *)"RTE",(char *)"main",
-                  (char *)"mem_access: \\valid_read(d)",45);
+    __e_acsl_assert(__e_acsl_valid_read_2,(char *)"RTE",(char *)"main",
+                    (char *)"mem_access: \\valid_read(d)",45);
     __e_acsl_initialized_13 = __initialized((void *)*d,sizeof(int *));
     if (__e_acsl_initialized_13) {
       int __e_acsl_initialized_14;
@@ -369,14 +370,14 @@ int main(void)
           __e_acsl_and_23 = __e_acsl_valid_read_3;
         }
         else __e_acsl_and_23 = 0;
-        e_acsl_assert(__e_acsl_and_23,(char *)"RTE",(char *)"main",
-                      (char *)"mem_access: \\valid_read(d)",45);
+        __e_acsl_assert(__e_acsl_and_23,(char *)"RTE",(char *)"main",
+                        (char *)"mem_access: \\valid_read(d)",45);
         __e_acsl_valid_read_4 = __valid_read((void *)*d,sizeof(int *));
         __e_acsl_and_24 = __e_acsl_valid_read_4;
       }
       else __e_acsl_and_24 = 0;
-      e_acsl_assert(__e_acsl_and_24,(char *)"RTE",(char *)"main",
-                    (char *)"mem_access: \\valid_read(*d)",45);
+      __e_acsl_assert(__e_acsl_and_24,(char *)"RTE",(char *)"main",
+                      (char *)"mem_access: \\valid_read(*d)",45);
       __e_acsl_initialized_16 = __initialized((void *)(& d),sizeof(int ***));
       if (__e_acsl_initialized_16) {
         int __e_acsl_valid_read_5;
@@ -384,14 +385,14 @@ int main(void)
         __e_acsl_and_25 = __e_acsl_valid_read_5;
       }
       else __e_acsl_and_25 = 0;
-      e_acsl_assert(__e_acsl_and_25,(char *)"RTE",(char *)"main",
-                    (char *)"mem_access: \\valid_read(d)",45);
+      __e_acsl_assert(__e_acsl_and_25,(char *)"RTE",(char *)"main",
+                      (char *)"mem_access: \\valid_read(d)",45);
       __e_acsl_valid_17 = __valid((void *)*(*d),sizeof(int));
       __e_acsl_and_26 = __e_acsl_valid_17;
     }
     else __e_acsl_and_26 = 0;
-    e_acsl_assert(__e_acsl_and_26,(char *)"Assertion",(char *)"main",
-                  (char *)"\\valid(*(*d))",45);
+    __e_acsl_assert(__e_acsl_and_26,(char *)"Assertion",(char *)"main",
+                    (char *)"\\valid(*(*d))",45);
   }
   __e_acsl_free((void *)a);
   /*@ assert ¬\valid(a) ∧ \valid(b) ∧ \valid(X); */
@@ -427,15 +428,15 @@ int main(void)
       __e_acsl_and_30 = __e_acsl_valid_20;
     }
     else __e_acsl_and_30 = 0;
-    e_acsl_assert(__e_acsl_and_30,(char *)"Assertion",(char *)"main",
-                  (char *)"!\\valid(a) && \\valid(b) && \\valid(X)",47);
+    __e_acsl_assert(__e_acsl_and_30,(char *)"Assertion",(char *)"main",
+                    (char *)"!\\valid(a) && \\valid(b) && \\valid(X)",47);
   }
   /*@ assert \valid(&Z); */
   {
     int __e_acsl_valid_21;
     __e_acsl_valid_21 = __valid((void *)(& Z),sizeof(int));
-    e_acsl_assert(__e_acsl_valid_21,(char *)"Assertion",(char *)"main",
-                  (char *)"\\valid(&Z)",48);
+    __e_acsl_assert(__e_acsl_valid_21,(char *)"Assertion",(char *)"main",
+                    (char *)"\\valid(&Z)",48);
   }
   g();
   __retres = 0;
diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_valid_alias.c b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_valid_alias.c
index 4be590b8ffb86a000eba31459d37cb4973adf222..a9820f674bdfaf623f2b7751e2dbb66a06592882 100644
--- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_valid_alias.c
+++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_valid_alias.c
@@ -5,6 +5,7 @@ int main(void)
   int *a;
   int *b;
   int n;
+  __e_acsl_memory_init((int *)0,(char ***)0,8UL);
   __store_block((void *)(& b),8UL);
   __store_block((void *)(& a),8UL);
   n = 0;
@@ -33,8 +34,8 @@ int main(void)
       __e_acsl_and_3 = ! __e_acsl_and_2;
     }
     else __e_acsl_and_3 = 0;
-    e_acsl_assert(__e_acsl_and_3,(char *)"Assertion",(char *)"main",
-                  (char *)"!\\valid(a) && !\\valid(b)",10);
+    __e_acsl_assert(__e_acsl_and_3,(char *)"Assertion",(char *)"main",
+                    (char *)"!\\valid(a) && !\\valid(b)",10);
   }
   __full_init((void *)(& a));
   a = (int *)__e_acsl_malloc(sizeof(int));
@@ -67,8 +68,8 @@ int main(void)
       __e_acsl_and_6 = __e_acsl_and_5;
     }
     else __e_acsl_and_6 = 0;
-    e_acsl_assert(__e_acsl_and_6,(char *)"Assertion",(char *)"main",
-                  (char *)"\\valid(a) && \\valid(b)",14);
+    __e_acsl_assert(__e_acsl_and_6,(char *)"Assertion",(char *)"main",
+                    (char *)"\\valid(a) && \\valid(b)",14);
   }
   /*@ assert *b ≡ n; */
   {
@@ -81,10 +82,10 @@ int main(void)
       __e_acsl_and_7 = __e_acsl_valid_read;
     }
     else __e_acsl_and_7 = 0;
-    e_acsl_assert(__e_acsl_and_7,(char *)"RTE",(char *)"main",
-                  (char *)"mem_access: \\valid_read(b)",15);
-    e_acsl_assert(*b == n,(char *)"Assertion",(char *)"main",
-                  (char *)"*b == n",15);
+    __e_acsl_assert(__e_acsl_and_7,(char *)"RTE",(char *)"main",
+                    (char *)"mem_access: \\valid_read(b)",15);
+    __e_acsl_assert(*b == n,(char *)"Assertion",(char *)"main",
+                    (char *)"*b == n",15);
   }
   __e_acsl_free((void *)b);
   /*@ assert ¬\valid(a) ∧ ¬\valid(b); */
@@ -114,8 +115,8 @@ int main(void)
       __e_acsl_and_10 = ! __e_acsl_and_9;
     }
     else __e_acsl_and_10 = 0;
-    e_acsl_assert(__e_acsl_and_10,(char *)"Assertion",(char *)"main",
-                  (char *)"!\\valid(a) && !\\valid(b)",17);
+    __e_acsl_assert(__e_acsl_and_10,(char *)"Assertion",(char *)"main",
+                    (char *)"!\\valid(a) && !\\valid(b)",17);
   }
   __retres = 0;
   __delete_block((void *)(& b));
diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_valid_in_contract.c b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_valid_in_contract.c
index 5f2a67576cc1348a143a6c2e67cc092e78fa397f..c734d6606bb0552f3a35b4fa23a99554c0651950 100644
--- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_valid_in_contract.c
+++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_valid_in_contract.c
@@ -69,8 +69,8 @@ struct list *__e_acsl_f(struct list *l)
         int __e_acsl_valid_2;
         __e_acsl_valid_read = __valid_read((void *)(& l->next),
                                            sizeof(struct list *));
-        e_acsl_assert(__e_acsl_valid_read,(char *)"RTE",(char *)"f",
-                      (char *)"mem_access: \\valid_read(&l->next)",19);
+        __e_acsl_assert(__e_acsl_valid_read,(char *)"RTE",(char *)"f",
+                        (char *)"mem_access: \\valid_read(&l->next)",19);
         /*@ assert Value: mem_access: \valid_read(&l->next); */
         __e_acsl_valid_2 = __valid((void *)l->next,sizeof(struct list));
         __e_acsl_and = __e_acsl_valid_2;
@@ -91,13 +91,13 @@ struct list *__e_acsl_f(struct list *l)
     int __e_acsl_implies_2;
     if (! __e_acsl_at) __e_acsl_implies = 1;
     else __e_acsl_implies = __retres == __e_acsl_at_2;
-    e_acsl_assert(__e_acsl_implies,(char *)"Postcondition",(char *)"f",
-                  (char *)"\\old(l == \\null) ==> \\result == \\old(l)",16);
+    __e_acsl_assert(__e_acsl_implies,(char *)"Postcondition",(char *)"f",
+                    (char *)"\\old(l == \\null) ==> \\result == \\old(l)",16);
     if (! __e_acsl_at_3) __e_acsl_implies_2 = 1;
     else __e_acsl_implies_2 = __retres == __e_acsl_at_4;
-    e_acsl_assert(__e_acsl_implies_2,(char *)"Postcondition",(char *)"f",
-                  (char *)"\\old(!\\valid{Here}(l) && !\\valid{Here}(l->next)) ==> \\result == \\old(l)",
-                  20);
+    __e_acsl_assert(__e_acsl_implies_2,(char *)"Postcondition",(char *)"f",
+                    (char *)"\\old(!\\valid{Here}(l) && !\\valid{Here}(l->next)) ==> \\result == \\old(l)",
+                    20);
     __delete_block((void *)(& l));
     __delete_block((void *)(& __retres));
     return __retres;
@@ -107,6 +107,7 @@ struct list *__e_acsl_f(struct list *l)
 int main(void)
 {
   int __retres;
+  __e_acsl_memory_init((int *)0,(char ***)0,8UL);
   __e_acsl_f((struct list *)0);
   __retres = 0;
   __e_acsl_memory_clean();
diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_vector.c b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_vector.c
index 3633303ec934faf30a57e26397fd2d5ae7c32367..c89a44fee1150ac525ee983d7fb724866eb22136 100644
--- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_vector.c
+++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_vector.c
@@ -23,6 +23,7 @@ int main(void)
   int x;
   int v1[3];
   int *v2;
+  __e_acsl_memory_init((int *)0,(char ***)0,8UL);
   __store_block((void *)(& v2),8UL);
   __store_block((void *)(v1),12UL);
   x = 3;
@@ -37,8 +38,8 @@ int main(void)
   {
     int __e_acsl_initialized;
     __e_acsl_initialized = __initialized((void *)(& v1[2]),sizeof(int));
-    e_acsl_assert(__e_acsl_initialized,(char *)"Assertion",(char *)"main",
-                  (char *)"\\initialized(&v1[2])",24);
+    __e_acsl_assert(__e_acsl_initialized,(char *)"Assertion",(char *)"main",
+                    (char *)"\\initialized(&v1[2])",24);
   }
   __full_init((void *)(& v2));
   v2 = new_inversed(3,v1);
@@ -47,13 +48,13 @@ int main(void)
   {
     int __e_acsl_initialized_2;
     __e_acsl_initialized_2 = __initialized((void *)(v2 + 2),sizeof(int));
-    e_acsl_assert(__e_acsl_initialized_2,(char *)"Assertion",(char *)"main",
-                  (char *)"\\initialized(v2+2)",27);
+    __e_acsl_assert(__e_acsl_initialized_2,(char *)"Assertion",
+                    (char *)"main",(char *)"\\initialized(v2+2)",27);
   }
   /*@ assert LAST ≡ 1; */
   /*@ assert Value: initialisation: \initialized(&LAST); */
-  e_acsl_assert(LAST == 1,(char *)"Assertion",(char *)"main",
-                (char *)"LAST == 1",28);
+  __e_acsl_assert(LAST == 1,(char *)"Assertion",(char *)"main",
+                  (char *)"LAST == 1",28);
   __e_acsl_free((void *)v2);
   __retres = 0;
   __delete_block((void *)(& v2));
diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/ghost.res.oracle b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/ghost.res.oracle
index d38262de6812ddcc3976738685340153a7a48ad6..2e7694a5190c90c4f931cd94ed5d4ca433afa10e 100644
--- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/ghost.res.oracle
+++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/ghost.res.oracle
@@ -1,3 +1,3 @@
 [e-acsl] beginning translation.
 [e-acsl] translation done in project "e-acsl".
-FRAMAC_SHARE/e-acsl/e_acsl.h:34:[value] warning: function e_acsl_assert: precondition got status unknown.
+FRAMAC_SHARE/e-acsl/e_acsl.h:34:[value] warning: function __e_acsl_assert: precondition got status unknown.
diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/init.res.oracle b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/init.res.oracle
index d38262de6812ddcc3976738685340153a7a48ad6..2e7694a5190c90c4f931cd94ed5d4ca433afa10e 100644
--- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/init.res.oracle
+++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/init.res.oracle
@@ -1,3 +1,3 @@
 [e-acsl] beginning translation.
 [e-acsl] translation done in project "e-acsl".
-FRAMAC_SHARE/e-acsl/e_acsl.h:34:[value] warning: function e_acsl_assert: precondition got status unknown.
+FRAMAC_SHARE/e-acsl/e_acsl.h:34:[value] warning: function __e_acsl_assert: precondition got status unknown.
diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/initialized.err.oracle b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/initialized.err.oracle
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/initialized.res.oracle b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/initialized.res.oracle
new file mode 100644
index 0000000000000000000000000000000000000000..1a76c1d3b89f6ad7b885360be496427ba263950c
--- /dev/null
+++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/initialized.res.oracle
@@ -0,0 +1,64 @@
+[e-acsl] beginning translation.
+[e-acsl] warning: annotating undefined function `realloc':
+                  the generated program may miss memory instrumentation
+                  if there are memory-related annotations.
+FRAMAC_SHARE/libc/stdlib.h:156:[e-acsl] warning: E-ACSL construct `\fresh' is not yet supported. Ignoring annotation.
+FRAMAC_SHARE/libc/stdlib.h:174:[e-acsl] warning: E-ACSL construct `\allocable' is not yet supported. Ignoring annotation.
+FRAMAC_SHARE/libc/stdlib.h:200:[e-acsl] warning: E-ACSL construct `\fresh' is not yet supported. Ignoring annotation.
+FRAMAC_SHARE/libc/stdlib.h:200:[e-acsl] warning: E-ACSL construct `\allocable' is not yet supported. Ignoring annotation.
+tests/e-acsl-runtime/initialized.c:12:[e-acsl] warning: E-ACSL construct `complete behaviors' is not yet supported.
+                  Ignoring annotation.
+tests/e-acsl-runtime/initialized.c:12:[e-acsl] warning: E-ACSL construct `disjoint behaviors' is not yet supported.
+                  Ignoring annotation.
+tests/e-acsl-runtime/initialized.c:12:[e-acsl] warning: E-ACSL construct `assigns clause in behavior' is not yet supported.
+                  Ignoring annotation.
+FRAMAC_SHARE/libc/stdlib.h:160:[e-acsl] warning: E-ACSL construct `logic function application' is not yet supported.
+                  Ignoring annotation.
+FRAMAC_SHARE/libc/stdlib.h:160:[e-acsl] warning: E-ACSL construct `assigns clause in behavior' is not yet supported.
+                  Ignoring annotation.
+FRAMAC_SHARE/libc/stdlib.h:165:[e-acsl] warning: E-ACSL construct `logic function application' is not yet supported.
+                  Ignoring annotation.
+FRAMAC_SHARE/libc/stdlib.h:165:[e-acsl] warning: E-ACSL construct `complete behaviors' is not yet supported.
+                  Ignoring annotation.
+FRAMAC_SHARE/libc/stdlib.h:165:[e-acsl] warning: E-ACSL construct `disjoint behaviors' is not yet supported.
+                  Ignoring annotation.
+FRAMAC_SHARE/libc/stdlib.h:177:[e-acsl] warning: E-ACSL construct `assigns clause in behavior' is not yet supported.
+                  Ignoring annotation.
+FRAMAC_SHARE/libc/stdlib.h:177:[e-acsl] warning: E-ACSL construct `\allocate' is not yet supported. Ignoring annotation.
+FRAMAC_SHARE/libc/stdlib.h:177:[e-acsl] warning: E-ACSL construct `complete behaviors' is not yet supported.
+                  Ignoring annotation.
+FRAMAC_SHARE/libc/stdlib.h:177:[e-acsl] warning: E-ACSL construct `disjoint behaviors' is not yet supported.
+                  Ignoring annotation.
+FRAMAC_SHARE/libc/stdlib.h:215:[e-acsl] warning: E-ACSL construct `logic function application' is not yet supported.
+                  Ignoring annotation.
+FRAMAC_SHARE/libc/stdlib.h:215:[e-acsl] warning: E-ACSL construct `assigns clause in behavior' is not yet supported.
+                  Ignoring annotation.
+FRAMAC_SHARE/libc/stdlib.h:208:[e-acsl] warning: E-ACSL construct `logic function application' is not yet supported.
+                  Ignoring annotation.
+FRAMAC_SHARE/libc/stdlib.h:222:[e-acsl] warning: E-ACSL construct `logic function application' is not yet supported.
+                  Ignoring annotation.
+FRAMAC_SHARE/libc/stdlib.h:146:[kernel] warning: Neither code nor specification for function calloc, generating default assigns from the prototype
+[e-acsl] translation done in project "e-acsl".
+FRAMAC_SHARE/e-acsl/e_acsl.h:34:[value] warning: function __e_acsl_assert: precondition got status unknown.
+FRAMAC_SHARE/libc/stdlib.h:163:[value] warning: function __e_acsl_malloc, behavior allocation: postcondition got status unknown. (Behavior may be inactive, no reduction performed.)
+FRAMAC_SHARE/libc/stdlib.h:168:[value] warning: function __e_acsl_malloc, behavior no_allocation: postcondition got status unknown. (Behavior may be inactive, no reduction performed.)
+tests/e-acsl-runtime/initialized.c:65:[value] warning: assertion got status unknown.
+tests/e-acsl-runtime/initialized.c:69:[value] warning: assertion got status unknown.
+FRAMAC_SHARE/libc/stdlib.h:201:[value] warning: function __e_acsl_realloc: precondition got status unknown.
+FRAMAC_SHARE/libc/stdlib.h:216:[value] warning: function __e_acsl_realloc, behavior dealloc: precondition got status unknown. (Behavior may be inactive, no reduction performed.)
+FRAMAC_SHARE/libc/stdlib.h:211:[value] warning: function __e_acsl_realloc, behavior alloc: postcondition got status unknown. (Behavior may be inactive, no reduction performed.)
+FRAMAC_SHARE/libc/stdlib.h:218:[value] warning: function __e_acsl_realloc, behavior dealloc: postcondition got status unknown. (Behavior may be inactive, no reduction performed.)
+FRAMAC_SHARE/libc/stdlib.h:219:[value] warning: function __e_acsl_realloc, behavior dealloc: postcondition got status unknown. (Behavior may be inactive, no reduction performed.)
+FRAMAC_SHARE/libc/stdlib.h:226:[value] warning: function __e_acsl_realloc, behavior fail: postcondition got status unknown. (Behavior may be inactive, no reduction performed.)
+tests/e-acsl-runtime/initialized.c:74:[value] warning: assertion got status unknown.
+tests/e-acsl-runtime/initialized.c:76:[value] warning: assertion got status unknown.
+FRAMAC_SHARE/libc/stdlib.h:178:[value] warning: function __e_acsl_free, behavior deallocation: precondition 'freeable' got status unknown. (Behavior may be inactive, no reduction performed.)
+FRAMAC_SHARE/libc/stdlib.h:180:[value] warning: function __e_acsl_free, behavior deallocation: postcondition got status unknown. (Behavior may be inactive, no reduction performed.)
+FRAMAC_SHARE/libc/stdlib.h:178:[kernel] warning: pointer comparison. assert \pointer_comparable(p, (void *)0);
+FRAMAC_SHARE/libc/stdlib.h:177:[kernel] warning: pointer comparison. assert \pointer_comparable(p, (void *)0);
+tests/e-acsl-runtime/initialized.c:84:[value] warning: assertion got status unknown.
+tests/e-acsl-runtime/initialized.c:85:[value] warning: assertion got status unknown.
+tests/e-acsl-runtime/initialized.c:93:[value] warning: assertion got status unknown.
+tests/e-acsl-runtime/initialized.c:96:[value] warning: assertion got status unknown.
+tests/e-acsl-runtime/initialized.c:107:[kernel] warning: out of bounds write. assert \valid(partsi+i);
+tests/e-acsl-runtime/initialized.c:105:[kernel] warning: out of bounds write. assert \valid(partsc+i);
diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/linear_search.res.oracle b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/linear_search.res.oracle
index 16c1ee21a29a4be635de1d028dde5e7f4a8a9238..e3eebc4ad642d40b206cbc650768cc9704c96207 100644
--- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/linear_search.res.oracle
+++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/linear_search.res.oracle
@@ -1,7 +1,7 @@
 [e-acsl] beginning translation.
 [e-acsl] translation done in project "e-acsl".
 tests/e-acsl-runtime/linear_search.i:7:[value] warning: function __e_acsl_search: precondition got status unknown.
-FRAMAC_SHARE/e-acsl/e_acsl.h:34:[value] warning: function e_acsl_assert: precondition got status unknown.
+FRAMAC_SHARE/e-acsl/e_acsl.h:34:[value] warning: function __e_acsl_assert: precondition got status unknown.
 tests/e-acsl-runtime/linear_search.i:7:[value] warning: function search: precondition got status unknown.
 tests/e-acsl-runtime/linear_search.i:18:[value] warning: loop invariant got status unknown.
 tests/e-acsl-runtime/linear_search.i:10:[value] warning: function search, behavior exists: postcondition got status invalid. (Behavior may be inactive, no reduction performed.)
diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/literal_string.res.oracle b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/literal_string.res.oracle
index d38262de6812ddcc3976738685340153a7a48ad6..2e7694a5190c90c4f931cd94ed5d4ca433afa10e 100644
--- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/literal_string.res.oracle
+++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/literal_string.res.oracle
@@ -1,3 +1,3 @@
 [e-acsl] beginning translation.
 [e-acsl] translation done in project "e-acsl".
-FRAMAC_SHARE/e-acsl/e_acsl.h:34:[value] warning: function e_acsl_assert: precondition got status unknown.
+FRAMAC_SHARE/e-acsl/e_acsl.h:34:[value] warning: function __e_acsl_assert: precondition got status unknown.
diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/localvar.res.oracle b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/localvar.res.oracle
index f4aebc5fd5b524a7ff39e51e89201d9af27b8dae..77da8800b8819b67c87e7dc99d1a025d4c83844b 100644
--- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/localvar.res.oracle
+++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/localvar.res.oracle
@@ -15,4 +15,4 @@ FRAMAC_SHARE/libc/stdlib.h:165:[e-acsl] warning: E-ACSL construct `logic functio
 [e-acsl] translation done in project "e-acsl".
 FRAMAC_SHARE/libc/stdlib.h:163:[value] warning: function __e_acsl_malloc, behavior allocation: postcondition got status unknown. (Behavior may be inactive, no reduction performed.)
 FRAMAC_SHARE/libc/stdlib.h:168:[value] warning: function __e_acsl_malloc, behavior no_allocation: postcondition got status invalid. (Behavior may be inactive, no reduction performed.)
-FRAMAC_SHARE/e-acsl/e_acsl.h:34:[value] warning: function e_acsl_assert: precondition got status unknown.
+FRAMAC_SHARE/e-acsl/e_acsl.h:34:[value] warning: function __e_acsl_assert: precondition got status unknown.
diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/loop.res.oracle b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/loop.res.oracle
index a52629d32feae47f2ec4844496cbb2f6704824b8..6d7bb14adab40bba610e61748dc0b787bf32e4a2 100644
--- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/loop.res.oracle
+++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/loop.res.oracle
@@ -1,6 +1,6 @@
 [e-acsl] beginning translation.
 [e-acsl] translation done in project "e-acsl".
 tests/e-acsl-runtime/loop.i:19:[value] warning: loop invariant got status unknown.
-FRAMAC_SHARE/e-acsl/e_acsl.h:34:[value] warning: function e_acsl_assert: precondition got status invalid.
+FRAMAC_SHARE/e-acsl/e_acsl.h:34:[value] warning: function __e_acsl_assert: precondition got status invalid.
 tests/e-acsl-runtime/loop.i:19:[kernel] warning: accessing uninitialized left-value.
                   assert \initialized(&t[__e_acsl_k_2][__e_acsl_l_2]);
diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/mainargs.res.oracle b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/mainargs.res.oracle
index 877580b4914a2bf9de3c763e69515aee5ae2650a..2dd86f68e2f67e3c610baea03437fb9040e937f8 100644
--- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/mainargs.res.oracle
+++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/mainargs.res.oracle
@@ -9,7 +9,7 @@ FRAMAC_SHARE/libc/string.h:91:[e-acsl] warning: E-ACSL construct `assigns clause
 FRAMAC_SHARE/libc/string.h:93:[e-acsl] warning: E-ACSL construct `applying logic function' is not yet supported.
                   Ignoring annotation.
 [e-acsl] translation done in project "e-acsl".
-FRAMAC_SHARE/e-acsl/e_acsl.h:34:[value] warning: function e_acsl_assert: precondition got status unknown.
+FRAMAC_SHARE/e-acsl/e_acsl.h:34:[value] warning: function __e_acsl_assert: precondition got status unknown.
 tests/e-acsl-runtime/mainargs.c:12:[value] warning: assertion got status unknown.
 tests/e-acsl-runtime/mainargs.c:13:[value] warning: assertion got status unknown.
 tests/e-acsl-runtime/mainargs.c:15:[value] warning: assertion got status unknown.
diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/offset.err.oracle b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/offset.err.oracle
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/offset.res.oracle b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/offset.res.oracle
new file mode 100644
index 0000000000000000000000000000000000000000..b74c3bd68abfc70ceed37a1cd713666cb96a62ea
--- /dev/null
+++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/offset.res.oracle
@@ -0,0 +1,27 @@
+[e-acsl] beginning translation.
+FRAMAC_SHARE/libc/stdlib.h:156:[e-acsl] warning: E-ACSL construct `\fresh' is not yet supported. Ignoring annotation.
+tests/e-acsl-runtime/offset.c:10:[e-acsl] warning: E-ACSL construct `complete behaviors' is not yet supported.
+                  Ignoring annotation.
+tests/e-acsl-runtime/offset.c:10:[e-acsl] warning: E-ACSL construct `disjoint behaviors' is not yet supported.
+                  Ignoring annotation.
+tests/e-acsl-runtime/offset.c:10:[e-acsl] warning: E-ACSL construct `assigns clause in behavior' is not yet supported.
+                  Ignoring annotation.
+FRAMAC_SHARE/libc/stdlib.h:160:[e-acsl] warning: E-ACSL construct `logic function application' is not yet supported.
+                  Ignoring annotation.
+FRAMAC_SHARE/libc/stdlib.h:160:[e-acsl] warning: E-ACSL construct `assigns clause in behavior' is not yet supported.
+                  Ignoring annotation.
+FRAMAC_SHARE/libc/stdlib.h:165:[e-acsl] warning: E-ACSL construct `logic function application' is not yet supported.
+                  Ignoring annotation.
+[e-acsl] translation done in project "e-acsl".
+FRAMAC_SHARE/libc/stdlib.h:163:[value] warning: function __e_acsl_malloc, behavior allocation: postcondition got status unknown. (Behavior may be inactive, no reduction performed.)
+FRAMAC_SHARE/libc/stdlib.h:168:[value] warning: function __e_acsl_malloc, behavior no_allocation: postcondition got status unknown. (Behavior may be inactive, no reduction performed.)
+tests/e-acsl-runtime/offset.c:39:[value] warning: assertion got status unknown.
+FRAMAC_SHARE/e-acsl/e_acsl.h:34:[value] warning: function __e_acsl_assert: precondition got status unknown.
+tests/e-acsl-runtime/offset.c:40:[value] warning: assertion got status unknown.
+tests/e-acsl-runtime/offset.c:41:[value] warning: assertion got status unknown.
+tests/e-acsl-runtime/offset.c:43:[value] warning: assertion got status unknown.
+tests/e-acsl-runtime/offset.c:44:[value] warning: assertion got status unknown.
+tests/e-acsl-runtime/offset.c:49:[value] warning: assertion got status unknown.
+tests/e-acsl-runtime/offset.c:51:[value] warning: assertion got status unknown.
+tests/e-acsl-runtime/offset.c:53:[value] warning: assertion got status unknown.
+tests/e-acsl-runtime/offset.c:55:[value] warning: assertion got status unknown.
diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/ptr.res.oracle b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/ptr.res.oracle
index cb2edfc413183ec48da669340f4d7caa61774ee5..233a0c813b3a84d15a3b4a11d9dcc967a32607a0 100644
--- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/ptr.res.oracle
+++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/ptr.res.oracle
@@ -1,6 +1,6 @@
 [e-acsl] beginning translation.
 [e-acsl] translation done in project "e-acsl".
-FRAMAC_SHARE/e-acsl/e_acsl.h:34:[value] warning: function e_acsl_assert: precondition got status unknown.
+FRAMAC_SHARE/e-acsl/e_acsl.h:34:[value] warning: function __e_acsl_assert: precondition got status unknown.
 tests/e-acsl-runtime/ptr.i:17:[value] warning: assertion got status unknown.
 tests/e-acsl-runtime/ptr.i:18:[value] warning: assertion got status unknown.
 tests/e-acsl-runtime/ptr.i:19:[value] warning: assertion got status unknown.
diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/ptr_init.res.oracle b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/ptr_init.res.oracle
index 08a001af3487d1390dd71628ca1d6882decb27fe..78a279aa39d1e7fe0d10e6f0cef7f5cba67f6306 100644
--- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/ptr_init.res.oracle
+++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/ptr_init.res.oracle
@@ -15,4 +15,4 @@ FRAMAC_SHARE/libc/stdlib.h:165:[e-acsl] warning: E-ACSL construct `logic functio
 [e-acsl] translation done in project "e-acsl".
 FRAMAC_SHARE/libc/stdlib.h:163:[value] warning: function __e_acsl_malloc, behavior allocation: postcondition got status unknown. (Behavior may be inactive, no reduction performed.)
 FRAMAC_SHARE/libc/stdlib.h:168:[value] warning: function __e_acsl_malloc, behavior no_allocation: postcondition got status unknown. (Behavior may be inactive, no reduction performed.)
-FRAMAC_SHARE/e-acsl/e_acsl.h:34:[value] warning: function e_acsl_assert: precondition got status unknown.
+FRAMAC_SHARE/e-acsl/e_acsl.h:34:[value] warning: function __e_acsl_assert: precondition got status unknown.
diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/stdout.res.oracle b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/stdout.res.oracle
index 584c002a065b4729fa6871fc2a19c05b105002fc..5e3bc20fe950a5da3e151527da82b61f3c478a9b 100644
--- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/stdout.res.oracle
+++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/stdout.res.oracle
@@ -8,4 +8,4 @@ FRAMAC_SHARE/libc/stdio.h:107:[e-acsl] warning: E-ACSL construct `logic function
                   Ignoring annotation.
 [e-acsl] translation done in project "e-acsl".
 tests/e-acsl-runtime/stdout.c:11:[value] warning: assertion got status unknown.
-FRAMAC_SHARE/e-acsl/e_acsl.h:34:[value] warning: function e_acsl_assert: precondition got status unknown.
+FRAMAC_SHARE/e-acsl/e_acsl.h:34:[value] warning: function __e_acsl_assert: precondition got status unknown.
diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/valid.res.oracle b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/valid.res.oracle
index 99decb60aa72f1df7f7bf1953b2a1cd852921b5a..8999e9c940430ff418319eb072811d71be75ac69 100644
--- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/valid.res.oracle
+++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/valid.res.oracle
@@ -21,7 +21,7 @@ FRAMAC_SHARE/libc/stdlib.h:177:[e-acsl] warning: E-ACSL construct `assigns claus
                   Ignoring annotation.
 FRAMAC_SHARE/libc/stdlib.h:177:[e-acsl] warning: E-ACSL construct `\allocate' is not yet supported. Ignoring annotation.
 [e-acsl] translation done in project "e-acsl".
-FRAMAC_SHARE/e-acsl/e_acsl.h:34:[value] warning: function e_acsl_assert: precondition got status unknown.
+FRAMAC_SHARE/e-acsl/e_acsl.h:34:[value] warning: function __e_acsl_assert: precondition got status unknown.
 FRAMAC_SHARE/libc/stdlib.h:163:[value] warning: function __e_acsl_malloc, behavior allocation: postcondition got status unknown. (Behavior may be inactive, no reduction performed.)
 FRAMAC_SHARE/libc/stdlib.h:168:[value] warning: function __e_acsl_malloc, behavior no_allocation: postcondition got status invalid. (Behavior may be inactive, no reduction performed.)
 FRAMAC_SHARE/libc/stdlib.h:178:[value] warning: function __e_acsl_free, behavior deallocation: precondition 'freeable' got status unknown.
diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/valid_alias.res.oracle b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/valid_alias.res.oracle
index 8acfb7597ac1ae755a0191949369c03f75a50d98..355d5656c2b912f7fe391525df842ed03a44e082 100644
--- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/valid_alias.res.oracle
+++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/valid_alias.res.oracle
@@ -23,7 +23,7 @@ FRAMAC_SHARE/libc/stdlib.h:177:[e-acsl] warning: E-ACSL construct `\allocate' is
 [e-acsl] translation done in project "e-acsl".
 FRAMAC_SHARE/libc/stdlib.h:163:[value] warning: function __e_acsl_malloc, behavior allocation: postcondition got status unknown. (Behavior may be inactive, no reduction performed.)
 FRAMAC_SHARE/libc/stdlib.h:168:[value] warning: function __e_acsl_malloc, behavior no_allocation: postcondition got status invalid. (Behavior may be inactive, no reduction performed.)
-FRAMAC_SHARE/e-acsl/e_acsl.h:34:[value] warning: function e_acsl_assert: precondition got status unknown.
+FRAMAC_SHARE/e-acsl/e_acsl.h:34:[value] warning: function __e_acsl_assert: precondition got status unknown.
 FRAMAC_SHARE/libc/stdlib.h:178:[value] warning: function __e_acsl_free, behavior deallocation: precondition 'freeable' got status unknown.
 FRAMAC_SHARE/libc/stdlib.h:180:[value] warning: function __e_acsl_free, behavior deallocation: postcondition got status unknown.
 tests/e-acsl-runtime/valid_alias.c:17:[kernel] warning: accessing left-value that contains escaping addresses.
diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/valid_in_contract.res.oracle b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/valid_in_contract.res.oracle
index 1cf290859e3eb762f48b7c24f2b29514cbc694e6..6534eba37a3d9656a19557189474dd83002b67e3 100644
--- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/valid_in_contract.res.oracle
+++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/valid_in_contract.res.oracle
@@ -1,4 +1,4 @@
 [e-acsl] beginning translation.
 [e-acsl] translation done in project "e-acsl".
-FRAMAC_SHARE/e-acsl/e_acsl.h:34:[value] warning: function e_acsl_assert: precondition got status unknown.
+FRAMAC_SHARE/e-acsl/e_acsl.h:34:[value] warning: function __e_acsl_assert: precondition got status unknown.
 tests/e-acsl-runtime/valid_in_contract.c:19:[kernel] warning: out of bounds read. assert \valid_read(&l->next);
diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/vector.res.oracle b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/vector.res.oracle
index 58cae1e86ed66a56fac1deb2b112e2940fb03678..62d806e40cd24ddc2b4a5a3172e9b42e716adb8b 100644
--- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/vector.res.oracle
+++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/vector.res.oracle
@@ -21,7 +21,7 @@ FRAMAC_SHARE/libc/stdlib.h:177:[e-acsl] warning: E-ACSL construct `assigns claus
                   Ignoring annotation.
 FRAMAC_SHARE/libc/stdlib.h:177:[e-acsl] warning: E-ACSL construct `\allocate' is not yet supported. Ignoring annotation.
 [e-acsl] translation done in project "e-acsl".
-FRAMAC_SHARE/e-acsl/e_acsl.h:34:[value] warning: function e_acsl_assert: precondition got status unknown.
+FRAMAC_SHARE/e-acsl/e_acsl.h:34:[value] warning: function __e_acsl_assert: precondition got status unknown.
 FRAMAC_SHARE/libc/stdlib.h:163:[value] warning: function __e_acsl_malloc, behavior allocation: postcondition got status unknown. (Behavior may be inactive, no reduction performed.)
 FRAMAC_SHARE/libc/stdlib.h:168:[value] warning: function __e_acsl_malloc, behavior no_allocation: postcondition got status invalid. (Behavior may be inactive, no reduction performed.)
 tests/e-acsl-runtime/vector.c:27:[value] warning: assertion got status unknown.
diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/test_config b/src/plugins/e-acsl/tests/e-acsl-runtime/test_config
index 7fcf7b9d2e714ac757d167181a6f0b53154052c1..717979fb1a77b04c78ed90172f1bfe116ff74357 100644
--- a/src/plugins/e-acsl/tests/e-acsl-runtime/test_config
+++ b/src/plugins/e-acsl/tests/e-acsl-runtime/test_config
@@ -1,3 +1,3 @@
 LOG: gen_@PTEST_NAME@.c
 OPT: -machdep gcc_x86_64 -check -e-acsl -then-last -load-script tests/print.cmxs -print -ocode tests/e-acsl-runtime/result/gen_@PTEST_NAME@.c -kernel-verbose 0 -val -value-verbose 0
-EXECNOW: ./scripts/testrun.sh @PTEST_NAME@ e-acsl-runtime "" "--frama-c=@frama-c@"
+EXEC: ./scripts/testrun.sh @PTEST_NAME@ e-acsl-runtime "" "--frama-c=@frama-c@"
diff --git a/src/plugins/e-acsl/tests/gmp/oracle/arith.0.res.oracle b/src/plugins/e-acsl/tests/gmp/oracle/arith.0.res.oracle
index 0ddd2d362a08ab4fb29f6726d7a7a2215bf4f1a3..d96282c151646e6a301dbf9a1acd8295743a11e9 100644
--- a/src/plugins/e-acsl/tests/gmp/oracle/arith.0.res.oracle
+++ b/src/plugins/e-acsl/tests/gmp/oracle/arith.0.res.oracle
@@ -9,13 +9,13 @@
   __fc_heap_status ∈ [--..--]
   __e_acsl_init ∈ [--..--]
   __e_acsl_internal_heap ∈ [--..--]
-  __memory_size ∈ [--..--]
-[value] using specification for function e_acsl_assert
+  __heap_size ∈ [--..--]
+[value] using specification for function __e_acsl_assert
 [value] using specification for function __gmpz_init_set_str
 [value] using specification for function __gmpz_init_set_si
 [value] using specification for function __gmpz_cmp
 [value] using specification for function __gmpz_init
-FRAMAC_SHARE/e-acsl/e_acsl.h:34:[value] warning: function e_acsl_assert: precondition got status unknown.
+FRAMAC_SHARE/e-acsl/e_acsl.h:34:[value] warning: function __e_acsl_assert: precondition got status unknown.
 [value] using specification for function __gmpz_tdiv_q
 [value] using specification for function __gmpz_clear
 [value] done for function main
diff --git a/src/plugins/e-acsl/tests/gmp/oracle/arith.1.res.oracle b/src/plugins/e-acsl/tests/gmp/oracle/arith.1.res.oracle
index ffd0bd8013cddf9bfbfe2a18c373720bf1089834..26c32a86f900ae600120d348b610f4a7ef69c171 100644
--- a/src/plugins/e-acsl/tests/gmp/oracle/arith.1.res.oracle
+++ b/src/plugins/e-acsl/tests/gmp/oracle/arith.1.res.oracle
@@ -9,13 +9,13 @@
   __fc_heap_status ∈ [--..--]
   __e_acsl_init ∈ [--..--]
   __e_acsl_internal_heap ∈ [--..--]
-  __memory_size ∈ [--..--]
+  __heap_size ∈ [--..--]
 [value] using specification for function __gmpz_init_set_si
 [value] using specification for function __gmpz_init
 [value] using specification for function __gmpz_neg
 [value] using specification for function __gmpz_cmp
-[value] using specification for function e_acsl_assert
-FRAMAC_SHARE/e-acsl/e_acsl.h:34:[value] warning: function e_acsl_assert: precondition got status unknown.
+[value] using specification for function __e_acsl_assert
+FRAMAC_SHARE/e-acsl/e_acsl.h:34:[value] warning: function __e_acsl_assert: precondition got status unknown.
 [value] using specification for function __gmpz_clear
 [value] using specification for function __gmpz_com
 [value] using specification for function __gmpz_add
diff --git a/src/plugins/e-acsl/tests/gmp/oracle/array.0.res.oracle b/src/plugins/e-acsl/tests/gmp/oracle/array.0.res.oracle
index d252e96cb3bcc38ccec95e6c947b302f08c3df42..8e7516547d6cd98a65bca2ed02b9e74a300693d0 100644
--- a/src/plugins/e-acsl/tests/gmp/oracle/array.0.res.oracle
+++ b/src/plugins/e-acsl/tests/gmp/oracle/array.0.res.oracle
@@ -9,13 +9,13 @@
   __fc_heap_status ∈ [--..--]
   __e_acsl_init ∈ [--..--]
   __e_acsl_internal_heap ∈ [--..--]
-  __memory_size ∈ [--..--]
+  __heap_size ∈ [--..--]
   T1[0..2] ∈ {0}
   T2[0..3] ∈ {0}
 tests/gmp/array.i:10:[value] entering loop for the first time
 tests/gmp/array.i:11:[value] entering loop for the first time
 tests/gmp/array.i:13:[value] warning: assertion got status unknown.
-[value] using specification for function e_acsl_assert
-FRAMAC_SHARE/e-acsl/e_acsl.h:34:[value] warning: function e_acsl_assert: precondition got status unknown.
+[value] using specification for function __e_acsl_assert
+FRAMAC_SHARE/e-acsl/e_acsl.h:34:[value] warning: function __e_acsl_assert: precondition got status unknown.
 tests/gmp/array.i:14:[value] warning: assertion got status unknown.
 [value] done for function main
diff --git a/src/plugins/e-acsl/tests/gmp/oracle/array.1.res.oracle b/src/plugins/e-acsl/tests/gmp/oracle/array.1.res.oracle
index bdf0233dd93173c599d51264596fe97973ca164c..498ed5963724f4744bfc94d7ccc3e1bb654b7d6f 100644
--- a/src/plugins/e-acsl/tests/gmp/oracle/array.1.res.oracle
+++ b/src/plugins/e-acsl/tests/gmp/oracle/array.1.res.oracle
@@ -9,7 +9,7 @@
   __fc_heap_status ∈ [--..--]
   __e_acsl_init ∈ [--..--]
   __e_acsl_internal_heap ∈ [--..--]
-  __memory_size ∈ [--..--]
+  __heap_size ∈ [--..--]
   T1[0..2] ∈ {0}
   T2[0..3] ∈ {0}
 tests/gmp/array.i:10:[value] entering loop for the first time
@@ -17,8 +17,8 @@ tests/gmp/array.i:11:[value] entering loop for the first time
 tests/gmp/array.i:13:[value] warning: assertion got status unknown.
 [value] using specification for function __gmpz_init_set_si
 [value] using specification for function __gmpz_cmp
-[value] using specification for function e_acsl_assert
-FRAMAC_SHARE/e-acsl/e_acsl.h:34:[value] warning: function e_acsl_assert: precondition got status unknown.
+[value] using specification for function __e_acsl_assert
+FRAMAC_SHARE/e-acsl/e_acsl.h:34:[value] warning: function __e_acsl_assert: precondition got status unknown.
 [value] using specification for function __gmpz_clear
 tests/gmp/array.i:14:[value] warning: assertion got status unknown.
 [value] done for function main
diff --git a/src/plugins/e-acsl/tests/gmp/oracle/at.0.res.oracle b/src/plugins/e-acsl/tests/gmp/oracle/at.0.res.oracle
index 7dfd4376eea4d0a59b88efb3b22d4b77c0183079..e746117125e352e58d9dec4d017e88e7c87a7c5e 100644
--- a/src/plugins/e-acsl/tests/gmp/oracle/at.0.res.oracle
+++ b/src/plugins/e-acsl/tests/gmp/oracle/at.0.res.oracle
@@ -9,12 +9,13 @@
   __fc_heap_status ∈ [--..--]
   __e_acsl_init ∈ [--..--]
   __e_acsl_internal_heap ∈ [--..--]
-  __memory_size ∈ [--..--]
+  __heap_size ∈ [--..--]
   A ∈ {0}
+[value] using specification for function __e_acsl_memory_init
 [value] using specification for function __store_block
 [value] using specification for function __full_init
 [value] using specification for function __delete_block
-[value] using specification for function e_acsl_assert
+[value] using specification for function __e_acsl_assert
 tests/gmp/at.i:12:[value] cannot evaluate ACSL term, \at() on a C label is unsupported
 tests/gmp/at.i:12:[value] warning: assertion got status unknown.
 tests/gmp/at.i:51:[value] cannot evaluate ACSL term, \at() on a C label is unsupported
@@ -25,7 +26,7 @@ tests/gmp/at.i:53:[value] cannot evaluate ACSL term, \at() on a C label is unsup
 tests/gmp/at.i:53:[value] warning: assertion got status unknown.
 [value] using specification for function __initialize
 [value] using specification for function __valid_read
-FRAMAC_SHARE/e-acsl/e_acsl.h:34:[value] warning: function e_acsl_assert: precondition got status unknown.
+FRAMAC_SHARE/e-acsl/e_acsl.h:34:[value] warning: function __e_acsl_assert: precondition got status unknown.
 tests/gmp/at.i:30:[value] cannot evaluate ACSL term, \at() on a C label is unsupported
 tests/gmp/at.i:30:[value] warning: assertion got status unknown.
 tests/gmp/at.i:32:[value] cannot evaluate ACSL term, \at() on a C label is unsupported
diff --git a/src/plugins/e-acsl/tests/gmp/oracle/at.1.res.oracle b/src/plugins/e-acsl/tests/gmp/oracle/at.1.res.oracle
index ee5b57e931f2442756f15914b285968faf976784..af51807c41e0fb34c8f9f473dbb7fff6765ee398 100644
--- a/src/plugins/e-acsl/tests/gmp/oracle/at.1.res.oracle
+++ b/src/plugins/e-acsl/tests/gmp/oracle/at.1.res.oracle
@@ -9,15 +9,16 @@
   __fc_heap_status ∈ [--..--]
   __e_acsl_init ∈ [--..--]
   __e_acsl_internal_heap ∈ [--..--]
-  __memory_size ∈ [--..--]
+  __heap_size ∈ [--..--]
   A ∈ {0}
+[value] using specification for function __e_acsl_memory_init
 [value] using specification for function __store_block
 [value] using specification for function __full_init
 [value] using specification for function __delete_block
 [value] using specification for function __gmpz_init_set_si
 [value] using specification for function __gmpz_cmp
-[value] using specification for function e_acsl_assert
-FRAMAC_SHARE/e-acsl/e_acsl.h:34:[value] warning: function e_acsl_assert: precondition got status unknown.
+[value] using specification for function __e_acsl_assert
+FRAMAC_SHARE/e-acsl/e_acsl.h:34:[value] warning: function __e_acsl_assert: precondition got status unknown.
 [value] using specification for function __gmpz_clear
 [value] using specification for function __gmpz_init
 [value] using specification for function __gmpz_add
diff --git a/src/plugins/e-acsl/tests/gmp/oracle/cast.0.res.oracle b/src/plugins/e-acsl/tests/gmp/oracle/cast.0.res.oracle
index f0d9dbf6c715c6fb6e5314a8a737295cb93f35a9..f98f864d40ed796f04c2593c72ac29d8f3f852d2 100644
--- a/src/plugins/e-acsl/tests/gmp/oracle/cast.0.res.oracle
+++ b/src/plugins/e-acsl/tests/gmp/oracle/cast.0.res.oracle
@@ -9,6 +9,6 @@
   __fc_heap_status ∈ [--..--]
   __e_acsl_init ∈ [--..--]
   __e_acsl_internal_heap ∈ [--..--]
-  __memory_size ∈ [--..--]
-[value] using specification for function e_acsl_assert
+  __heap_size ∈ [--..--]
+[value] using specification for function __e_acsl_assert
 [value] done for function main
diff --git a/src/plugins/e-acsl/tests/gmp/oracle/cast.1.res.oracle b/src/plugins/e-acsl/tests/gmp/oracle/cast.1.res.oracle
index f1b9b67dd5c89f701b3646829a3463aa7a027a59..1e5f50428de44a67dcd4cdac6cb9303c22201ce2 100644
--- a/src/plugins/e-acsl/tests/gmp/oracle/cast.1.res.oracle
+++ b/src/plugins/e-acsl/tests/gmp/oracle/cast.1.res.oracle
@@ -9,11 +9,11 @@
   __fc_heap_status ∈ [--..--]
   __e_acsl_init ∈ [--..--]
   __e_acsl_internal_heap ∈ [--..--]
-  __memory_size ∈ [--..--]
+  __heap_size ∈ [--..--]
 [value] using specification for function __gmpz_init_set_si
 [value] using specification for function __gmpz_cmp
-[value] using specification for function e_acsl_assert
-FRAMAC_SHARE/e-acsl/e_acsl.h:34:[value] warning: function e_acsl_assert: precondition got status unknown.
+[value] using specification for function __e_acsl_assert
+FRAMAC_SHARE/e-acsl/e_acsl.h:34:[value] warning: function __e_acsl_assert: precondition got status unknown.
 [value] using specification for function __gmpz_clear
 [value] using specification for function __gmpz_init_set_ui
 [value] done for function main
diff --git a/src/plugins/e-acsl/tests/gmp/oracle/comparison.0.res.oracle b/src/plugins/e-acsl/tests/gmp/oracle/comparison.0.res.oracle
index f0d9dbf6c715c6fb6e5314a8a737295cb93f35a9..f98f864d40ed796f04c2593c72ac29d8f3f852d2 100644
--- a/src/plugins/e-acsl/tests/gmp/oracle/comparison.0.res.oracle
+++ b/src/plugins/e-acsl/tests/gmp/oracle/comparison.0.res.oracle
@@ -9,6 +9,6 @@
   __fc_heap_status ∈ [--..--]
   __e_acsl_init ∈ [--..--]
   __e_acsl_internal_heap ∈ [--..--]
-  __memory_size ∈ [--..--]
-[value] using specification for function e_acsl_assert
+  __heap_size ∈ [--..--]
+[value] using specification for function __e_acsl_assert
 [value] done for function main
diff --git a/src/plugins/e-acsl/tests/gmp/oracle/comparison.1.res.oracle b/src/plugins/e-acsl/tests/gmp/oracle/comparison.1.res.oracle
index 7f46b34e22aa5e7107856ec9c3db59f822de65c3..e2c5cc7f3fef05bd3e8b6c7840dad652f12c0a52 100644
--- a/src/plugins/e-acsl/tests/gmp/oracle/comparison.1.res.oracle
+++ b/src/plugins/e-acsl/tests/gmp/oracle/comparison.1.res.oracle
@@ -9,11 +9,11 @@
   __fc_heap_status ∈ [--..--]
   __e_acsl_init ∈ [--..--]
   __e_acsl_internal_heap ∈ [--..--]
-  __memory_size ∈ [--..--]
+  __heap_size ∈ [--..--]
 [value] using specification for function __gmpz_init_set_si
 [value] using specification for function __gmpz_cmp
-[value] using specification for function e_acsl_assert
-FRAMAC_SHARE/e-acsl/e_acsl.h:34:[value] warning: function e_acsl_assert: precondition got status unknown.
+[value] using specification for function __e_acsl_assert
+FRAMAC_SHARE/e-acsl/e_acsl.h:34:[value] warning: function __e_acsl_assert: precondition got status unknown.
 [value] using specification for function __gmpz_clear
 [value] using specification for function __gmpz_init
 [value] using specification for function __gmpz_neg
diff --git a/src/plugins/e-acsl/tests/gmp/oracle/gen_arith.c b/src/plugins/e-acsl/tests/gmp/oracle/gen_arith.c
index ee94c56080ddca66d9009b6dba16cbc010e4f80e..cb52636935130b983d2a5538c58b45ac68bae7a0 100644
--- a/src/plugins/e-acsl/tests/gmp/oracle/gen_arith.c
+++ b/src/plugins/e-acsl/tests/gmp/oracle/gen_arith.c
@@ -7,26 +7,26 @@ int main(void)
   x = -3;
   y = 2;
   /*@ assert -3 ≡ x; */
-  e_acsl_assert(-3 == x,(char *)"Assertion",(char *)"main",(char *)"-3 == x",
-                10);
+  __e_acsl_assert(-3 == x,(char *)"Assertion",(char *)"main",
+                  (char *)"-3 == x",10);
   /*@ assert x ≡ -3; */
-  e_acsl_assert(x == -3,(char *)"Assertion",(char *)"main",(char *)"x == -3",
-                11);
+  __e_acsl_assert(x == -3,(char *)"Assertion",(char *)"main",
+                  (char *)"x == -3",11);
   /*@ assert 0 ≢ ~0; */
-  e_acsl_assert(0 != ~ 0,(char *)"Assertion",(char *)"main",
-                (char *)"0 != ~0",12);
+  __e_acsl_assert(0 != ~ 0,(char *)"Assertion",(char *)"main",
+                  (char *)"0 != ~0",12);
   /*@ assert x+1 ≡ -2; */
-  e_acsl_assert((long)x + (long)1 == (long)(-2),(char *)"Assertion",
-                (char *)"main",(char *)"x+1 == -2",14);
+  __e_acsl_assert((long)x + (long)1 == (long)(-2),(char *)"Assertion",
+                  (char *)"main",(char *)"x+1 == -2",14);
   /*@ assert x-1 ≡ -4; */
-  e_acsl_assert((long)x - (long)1 == (long)(-4),(char *)"Assertion",
-                (char *)"main",(char *)"x-1 == -4",15);
+  __e_acsl_assert((long)x - (long)1 == (long)(-4),(char *)"Assertion",
+                  (char *)"main",(char *)"x-1 == -4",15);
   /*@ assert x*3 ≡ -9; */
-  e_acsl_assert((long)x * (long)3 == (long)(-9),(char *)"Assertion",
-                (char *)"main",(char *)"x*3 == -9",16);
+  __e_acsl_assert((long)x * (long)3 == (long)(-9),(char *)"Assertion",
+                  (char *)"main",(char *)"x*3 == -9",16);
   /*@ assert x/3 ≡ -1; */
-  e_acsl_assert(x / 3 == -1,(char *)"Assertion",(char *)"main",
-                (char *)"x/3 == -1",17);
+  __e_acsl_assert(x / 3 == -1,(char *)"Assertion",(char *)"main",
+                  (char *)"x/3 == -1",17);
   /*@ assert 0xffffffffffffffffffffff/0xffffffffffffffffffffff ≡ 1; */
   {
     mpz_t __e_acsl;
@@ -41,54 +41,55 @@ int main(void)
                                     (__mpz_struct const *)(__e_acsl_2));
     __gmpz_init(__e_acsl_div);
     /*@ assert E_ACSL: 0xffffffffffffffffffffff ≢ 0; */
-    e_acsl_assert(! (__e_acsl_div_guard == 0),(char *)"Assertion",
-                  (char *)"main",(char *)"0xffffffffffffffffffffff == 0",18);
+    __e_acsl_assert(! (__e_acsl_div_guard == 0),(char *)"Assertion",
+                    (char *)"main",(char *)"0xffffffffffffffffffffff == 0",
+                    18);
     __gmpz_tdiv_q(__e_acsl_div,(__mpz_struct const *)(__e_acsl),
                   (__mpz_struct const *)(__e_acsl));
     __gmpz_init_set_si(__e_acsl_3,(long)1);
     __e_acsl_eq = __gmpz_cmp((__mpz_struct const *)(__e_acsl_div),
                              (__mpz_struct const *)(__e_acsl_3));
-    e_acsl_assert(__e_acsl_eq == 0,(char *)"Assertion",(char *)"main",
-                  (char *)"0xffffffffffffffffffffff/0xffffffffffffffffffffff == 1",
-                  18);
+    __e_acsl_assert(__e_acsl_eq == 0,(char *)"Assertion",(char *)"main",
+                    (char *)"0xffffffffffffffffffffff/0xffffffffffffffffffffff == 1",
+                    18);
     __gmpz_clear(__e_acsl);
     __gmpz_clear(__e_acsl_2);
     __gmpz_clear(__e_acsl_div);
     __gmpz_clear(__e_acsl_3);
   }
   /*@ assert x%2 ≡ -1; */
-  e_acsl_assert(x % 2 == -1,(char *)"Assertion",(char *)"main",
-                (char *)"x%2 == -1",19);
+  __e_acsl_assert(x % 2 == -1,(char *)"Assertion",(char *)"main",
+                  (char *)"x%2 == -1",19);
   /*@ assert -3%-2 ≡ -1; */
-  e_acsl_assert(-3 % -2 == -1,(char *)"Assertion",(char *)"main",
-                (char *)"-3%-2 == -1",20);
+  __e_acsl_assert(-3 % -2 == -1,(char *)"Assertion",(char *)"main",
+                  (char *)"-3%-2 == -1",20);
   /*@ assert 3%-2 ≡ 1; */
-  e_acsl_assert(3 % -2 == 1,(char *)"Assertion",(char *)"main",
-                (char *)"3%-2 == 1",21);
+  __e_acsl_assert(3 % -2 == 1,(char *)"Assertion",(char *)"main",
+                  (char *)"3%-2 == 1",21);
   /*@ assert ((x*2+(3+y))-4)+(x-y) ≡ -10; */
-  e_acsl_assert((((long)x * (long)2 + ((long)3 + (long)y)) - (long)4) + (
-                (long)x - (long)y) == (long)(-10),(char *)"Assertion",
-                (char *)"main",(char *)"((x*2+(3+y))-4)+(x-y) == -10",23);
+  __e_acsl_assert((((long)x * (long)2 + ((long)3 + (long)y)) - (long)4) + (
+                  (long)x - (long)y) == (long)(-10),(char *)"Assertion",
+                  (char *)"main",(char *)"((x*2+(3+y))-4)+(x-y) == -10",23);
   /*@ assert (0≡1) ≡ !(0≡0); */
-  e_acsl_assert((0 == 1) == ! (0 == 0),(char *)"Assertion",(char *)"main",
-                (char *)"(0==1) == !(0==0)",25);
+  __e_acsl_assert((0 == 1) == ! (0 == 0),(char *)"Assertion",(char *)"main",
+                  (char *)"(0==1) == !(0==0)",25);
   /*@ assert (0≤-1) ≡ (0>0); */
-  e_acsl_assert((0 <= -1) == (0 > 0),(char *)"Assertion",(char *)"main",
-                (char *)"(0<=-1) == (0>0)",26);
+  __e_acsl_assert((0 <= -1) == (0 > 0),(char *)"Assertion",(char *)"main",
+                  (char *)"(0<=-1) == (0>0)",26);
   /*@ assert (0≥-1) ≡ (0≤0); */
-  e_acsl_assert((0 >= -1) == (0 <= 0),(char *)"Assertion",(char *)"main",
-                (char *)"(0>=-1) == (0<=0)",27);
+  __e_acsl_assert((0 >= -1) == (0 <= 0),(char *)"Assertion",(char *)"main",
+                  (char *)"(0>=-1) == (0<=0)",27);
   /*@ assert (0≢1) ≡ !(0≢0); */
-  e_acsl_assert((0 != 1) == ! (0 != 0),(char *)"Assertion",(char *)"main",
-                (char *)"(0!=1) == !(0!=0)",28);
+  __e_acsl_assert((0 != 1) == ! (0 != 0),(char *)"Assertion",(char *)"main",
+                  (char *)"(0!=1) == !(0!=0)",28);
   /*@ assert (0≢0) ≡ !(1≢0); */
-  e_acsl_assert((0 != 0) == ! (1 != 0),(char *)"Assertion",(char *)"main",
-                (char *)"(0!=0) == !(1!=0)",30);
+  __e_acsl_assert((0 != 0) == ! (1 != 0),(char *)"Assertion",(char *)"main",
+                  (char *)"(0!=0) == !(1!=0)",30);
   /*@ assert 4/y ≡ 2; */
-  e_acsl_assert(y != 0,(char *)"RTE",(char *)"main",
-                (char *)"division_by_zero: y != 0",31);
-  e_acsl_assert(4 / y == 2,(char *)"Assertion",(char *)"main",
-                (char *)"4/y == 2",31);
+  __e_acsl_assert(y != 0,(char *)"RTE",(char *)"main",
+                  (char *)"division_by_zero: y != 0",31);
+  __e_acsl_assert(4 / y == 2,(char *)"Assertion",(char *)"main",
+                  (char *)"4/y == 2",31);
   __retres = 0;
   return __retres;
 }
diff --git a/src/plugins/e-acsl/tests/gmp/oracle/gen_arith2.c b/src/plugins/e-acsl/tests/gmp/oracle/gen_arith2.c
index ae3487058b1648803605877b57b72188891cdad1..93e2d041f672c9051158d12bbf39b98455eaadfd 100644
--- a/src/plugins/e-acsl/tests/gmp/oracle/gen_arith2.c
+++ b/src/plugins/e-acsl/tests/gmp/oracle/gen_arith2.c
@@ -18,8 +18,8 @@ int main(void)
     __gmpz_init_set_si(__e_acsl_x,(long)x);
     __e_acsl_eq = __gmpz_cmp((__mpz_struct const *)(__e_acsl_neg),
                              (__mpz_struct const *)(__e_acsl_x));
-    e_acsl_assert(__e_acsl_eq == 0,(char *)"Assertion",(char *)"main",
-                  (char *)"-3 == x",10);
+    __e_acsl_assert(__e_acsl_eq == 0,(char *)"Assertion",(char *)"main",
+                    (char *)"-3 == x",10);
     __gmpz_clear(__e_acsl);
     __gmpz_clear(__e_acsl_neg);
     __gmpz_clear(__e_acsl_x);
@@ -36,8 +36,8 @@ int main(void)
     __gmpz_neg(__e_acsl_neg_2,(__mpz_struct const *)(__e_acsl_2));
     __e_acsl_eq_2 = __gmpz_cmp((__mpz_struct const *)(__e_acsl_x_2),
                                (__mpz_struct const *)(__e_acsl_neg_2));
-    e_acsl_assert(__e_acsl_eq_2 == 0,(char *)"Assertion",(char *)"main",
-                  (char *)"x == -3",11);
+    __e_acsl_assert(__e_acsl_eq_2 == 0,(char *)"Assertion",(char *)"main",
+                    (char *)"x == -3",11);
     __gmpz_clear(__e_acsl_x_2);
     __gmpz_clear(__e_acsl_2);
     __gmpz_clear(__e_acsl_neg_2);
@@ -52,8 +52,8 @@ int main(void)
     __gmpz_com(__e_acsl_bnot,(__mpz_struct const *)(__e_acsl_3));
     __e_acsl_ne = __gmpz_cmp((__mpz_struct const *)(__e_acsl_3),
                              (__mpz_struct const *)(__e_acsl_bnot));
-    e_acsl_assert(__e_acsl_ne != 0,(char *)"Assertion",(char *)"main",
-                  (char *)"0 != ~0",12);
+    __e_acsl_assert(__e_acsl_ne != 0,(char *)"Assertion",(char *)"main",
+                    (char *)"0 != ~0",12);
     __gmpz_clear(__e_acsl_3);
     __gmpz_clear(__e_acsl_bnot);
   }
@@ -75,8 +75,8 @@ int main(void)
     __gmpz_neg(__e_acsl_neg_3,(__mpz_struct const *)(__e_acsl_5));
     __e_acsl_eq_3 = __gmpz_cmp((__mpz_struct const *)(__e_acsl_add),
                                (__mpz_struct const *)(__e_acsl_neg_3));
-    e_acsl_assert(__e_acsl_eq_3 == 0,(char *)"Assertion",(char *)"main",
-                  (char *)"x+1 == -2",14);
+    __e_acsl_assert(__e_acsl_eq_3 == 0,(char *)"Assertion",(char *)"main",
+                    (char *)"x+1 == -2",14);
     __gmpz_clear(__e_acsl_x_3);
     __gmpz_clear(__e_acsl_4);
     __gmpz_clear(__e_acsl_add);
@@ -101,8 +101,8 @@ int main(void)
     __gmpz_neg(__e_acsl_neg_4,(__mpz_struct const *)(__e_acsl_7));
     __e_acsl_eq_4 = __gmpz_cmp((__mpz_struct const *)(__e_acsl_sub),
                                (__mpz_struct const *)(__e_acsl_neg_4));
-    e_acsl_assert(__e_acsl_eq_4 == 0,(char *)"Assertion",(char *)"main",
-                  (char *)"x-1 == -4",15);
+    __e_acsl_assert(__e_acsl_eq_4 == 0,(char *)"Assertion",(char *)"main",
+                    (char *)"x-1 == -4",15);
     __gmpz_clear(__e_acsl_x_4);
     __gmpz_clear(__e_acsl_6);
     __gmpz_clear(__e_acsl_sub);
@@ -127,8 +127,8 @@ int main(void)
     __gmpz_neg(__e_acsl_neg_5,(__mpz_struct const *)(__e_acsl_9));
     __e_acsl_eq_5 = __gmpz_cmp((__mpz_struct const *)(__e_acsl_mul),
                                (__mpz_struct const *)(__e_acsl_neg_5));
-    e_acsl_assert(__e_acsl_eq_5 == 0,(char *)"Assertion",(char *)"main",
-                  (char *)"x*3 == -9",16);
+    __e_acsl_assert(__e_acsl_eq_5 == 0,(char *)"Assertion",(char *)"main",
+                    (char *)"x*3 == -9",16);
     __gmpz_clear(__e_acsl_x_5);
     __gmpz_clear(__e_acsl_8);
     __gmpz_clear(__e_acsl_mul);
@@ -152,8 +152,8 @@ int main(void)
                                     (__mpz_struct const *)(__e_acsl_11));
     __gmpz_init(__e_acsl_div);
     /*@ assert E_ACSL: 3 ≢ 0; */
-    e_acsl_assert(! (__e_acsl_div_guard == 0),(char *)"Assertion",
-                  (char *)"main",(char *)"3 == 0",17);
+    __e_acsl_assert(! (__e_acsl_div_guard == 0),(char *)"Assertion",
+                    (char *)"main",(char *)"3 == 0",17);
     __gmpz_tdiv_q(__e_acsl_div,(__mpz_struct const *)(__e_acsl_x_6),
                   (__mpz_struct const *)(__e_acsl_10));
     __gmpz_init_set_si(__e_acsl_12,(long)1);
@@ -161,8 +161,8 @@ int main(void)
     __gmpz_neg(__e_acsl_neg_6,(__mpz_struct const *)(__e_acsl_12));
     __e_acsl_eq_6 = __gmpz_cmp((__mpz_struct const *)(__e_acsl_div),
                                (__mpz_struct const *)(__e_acsl_neg_6));
-    e_acsl_assert(__e_acsl_eq_6 == 0,(char *)"Assertion",(char *)"main",
-                  (char *)"x/3 == -1",17);
+    __e_acsl_assert(__e_acsl_eq_6 == 0,(char *)"Assertion",(char *)"main",
+                    (char *)"x/3 == -1",17);
     __gmpz_clear(__e_acsl_x_6);
     __gmpz_clear(__e_acsl_10);
     __gmpz_clear(__e_acsl_11);
@@ -184,16 +184,17 @@ int main(void)
                                       (__mpz_struct const *)(__e_acsl_14));
     __gmpz_init(__e_acsl_div_2);
     /*@ assert E_ACSL: 0xffffffffffffffffffffff ≢ 0; */
-    e_acsl_assert(! (__e_acsl_div_guard_2 == 0),(char *)"Assertion",
-                  (char *)"main",(char *)"0xffffffffffffffffffffff == 0",18);
+    __e_acsl_assert(! (__e_acsl_div_guard_2 == 0),(char *)"Assertion",
+                    (char *)"main",(char *)"0xffffffffffffffffffffff == 0",
+                    18);
     __gmpz_tdiv_q(__e_acsl_div_2,(__mpz_struct const *)(__e_acsl_13),
                   (__mpz_struct const *)(__e_acsl_13));
     __gmpz_init_set_si(__e_acsl_15,(long)1);
     __e_acsl_eq_7 = __gmpz_cmp((__mpz_struct const *)(__e_acsl_div_2),
                                (__mpz_struct const *)(__e_acsl_15));
-    e_acsl_assert(__e_acsl_eq_7 == 0,(char *)"Assertion",(char *)"main",
-                  (char *)"0xffffffffffffffffffffff/0xffffffffffffffffffffff == 1",
-                  18);
+    __e_acsl_assert(__e_acsl_eq_7 == 0,(char *)"Assertion",(char *)"main",
+                    (char *)"0xffffffffffffffffffffff/0xffffffffffffffffffffff == 1",
+                    18);
     __gmpz_clear(__e_acsl_13);
     __gmpz_clear(__e_acsl_14);
     __gmpz_clear(__e_acsl_div_2);
@@ -216,8 +217,8 @@ int main(void)
                                     (__mpz_struct const *)(__e_acsl_17));
     __gmpz_init(__e_acsl_mod);
     /*@ assert E_ACSL: 2 ≢ 0; */
-    e_acsl_assert(! (__e_acsl_mod_guard == 0),(char *)"Assertion",
-                  (char *)"main",(char *)"2 == 0",19);
+    __e_acsl_assert(! (__e_acsl_mod_guard == 0),(char *)"Assertion",
+                    (char *)"main",(char *)"2 == 0",19);
     __gmpz_tdiv_r(__e_acsl_mod,(__mpz_struct const *)(__e_acsl_x_7),
                   (__mpz_struct const *)(__e_acsl_16));
     __gmpz_init_set_si(__e_acsl_18,(long)1);
@@ -225,8 +226,8 @@ int main(void)
     __gmpz_neg(__e_acsl_neg_7,(__mpz_struct const *)(__e_acsl_18));
     __e_acsl_eq_8 = __gmpz_cmp((__mpz_struct const *)(__e_acsl_mod),
                                (__mpz_struct const *)(__e_acsl_neg_7));
-    e_acsl_assert(__e_acsl_eq_8 == 0,(char *)"Assertion",(char *)"main",
-                  (char *)"x%2 == -1",19);
+    __e_acsl_assert(__e_acsl_eq_8 == 0,(char *)"Assertion",(char *)"main",
+                    (char *)"x%2 == -1",19);
     __gmpz_clear(__e_acsl_x_7);
     __gmpz_clear(__e_acsl_16);
     __gmpz_clear(__e_acsl_17);
@@ -257,8 +258,8 @@ int main(void)
                                       (__mpz_struct const *)(__e_acsl_21));
     __gmpz_init(__e_acsl_mod_2);
     /*@ assert E_ACSL: -2 ≢ 0; */
-    e_acsl_assert(! (__e_acsl_mod_guard_2 == 0),(char *)"Assertion",
-                  (char *)"main",(char *)"-2 == 0",20);
+    __e_acsl_assert(! (__e_acsl_mod_guard_2 == 0),(char *)"Assertion",
+                    (char *)"main",(char *)"-2 == 0",20);
     __gmpz_tdiv_r(__e_acsl_mod_2,(__mpz_struct const *)(__e_acsl_neg_8),
                   (__mpz_struct const *)(__e_acsl_neg_9));
     __gmpz_init_set_si(__e_acsl_22,(long)1);
@@ -266,8 +267,8 @@ int main(void)
     __gmpz_neg(__e_acsl_neg_10,(__mpz_struct const *)(__e_acsl_22));
     __e_acsl_eq_9 = __gmpz_cmp((__mpz_struct const *)(__e_acsl_mod_2),
                                (__mpz_struct const *)(__e_acsl_neg_10));
-    e_acsl_assert(__e_acsl_eq_9 == 0,(char *)"Assertion",(char *)"main",
-                  (char *)"-3%-2 == -1",20);
+    __e_acsl_assert(__e_acsl_eq_9 == 0,(char *)"Assertion",(char *)"main",
+                    (char *)"-3%-2 == -1",20);
     __gmpz_clear(__e_acsl_19);
     __gmpz_clear(__e_acsl_neg_8);
     __gmpz_clear(__e_acsl_20);
@@ -296,15 +297,15 @@ int main(void)
                                       (__mpz_struct const *)(__e_acsl_25));
     __gmpz_init(__e_acsl_mod_3);
     /*@ assert E_ACSL: -2 ≢ 0; */
-    e_acsl_assert(! (__e_acsl_mod_guard_3 == 0),(char *)"Assertion",
-                  (char *)"main",(char *)"-2 == 0",21);
+    __e_acsl_assert(! (__e_acsl_mod_guard_3 == 0),(char *)"Assertion",
+                    (char *)"main",(char *)"-2 == 0",21);
     __gmpz_tdiv_r(__e_acsl_mod_3,(__mpz_struct const *)(__e_acsl_23),
                   (__mpz_struct const *)(__e_acsl_neg_11));
     __gmpz_init_set_si(__e_acsl_26,(long)1);
     __e_acsl_eq_10 = __gmpz_cmp((__mpz_struct const *)(__e_acsl_mod_3),
                                 (__mpz_struct const *)(__e_acsl_26));
-    e_acsl_assert(__e_acsl_eq_10 == 0,(char *)"Assertion",(char *)"main",
-                  (char *)"3%-2 == 1",21);
+    __e_acsl_assert(__e_acsl_eq_10 == 0,(char *)"Assertion",(char *)"main",
+                    (char *)"3%-2 == 1",21);
     __gmpz_clear(__e_acsl_23);
     __gmpz_clear(__e_acsl_24);
     __gmpz_clear(__e_acsl_neg_11);
@@ -356,8 +357,8 @@ int main(void)
     __gmpz_neg(__e_acsl_neg_12,(__mpz_struct const *)(__e_acsl_30));
     __e_acsl_eq_11 = __gmpz_cmp((__mpz_struct const *)(__e_acsl_add_4),
                                 (__mpz_struct const *)(__e_acsl_neg_12));
-    e_acsl_assert(__e_acsl_eq_11 == 0,(char *)"Assertion",(char *)"main",
-                  (char *)"((x*2+(3+y))-4)+(x-y) == -10",23);
+    __e_acsl_assert(__e_acsl_eq_11 == 0,(char *)"Assertion",(char *)"main",
+                    (char *)"((x*2+(3+y))-4)+(x-y) == -10",23);
     __gmpz_clear(__e_acsl_x_8);
     __gmpz_clear(__e_acsl_27);
     __gmpz_clear(__e_acsl_mul_2);
@@ -396,8 +397,8 @@ int main(void)
     __gmpz_init_set_si(__e_acsl_35,(long)(__e_acsl_not == 0));
     __e_acsl_eq_14 = __gmpz_cmp((__mpz_struct const *)(__e_acsl_33),
                                 (__mpz_struct const *)(__e_acsl_35));
-    e_acsl_assert(__e_acsl_eq_14 == 0,(char *)"Assertion",(char *)"main",
-                  (char *)"(0==1) == !(0==0)",25);
+    __e_acsl_assert(__e_acsl_eq_14 == 0,(char *)"Assertion",(char *)"main",
+                    (char *)"(0==1) == !(0==0)",25);
     __gmpz_clear(__e_acsl_31);
     __gmpz_clear(__e_acsl_32);
     __gmpz_clear(__e_acsl_33);
@@ -426,8 +427,8 @@ int main(void)
     __gmpz_init_set_si(__e_acsl_39,(long)(__e_acsl_gt > 0));
     __e_acsl_eq_15 = __gmpz_cmp((__mpz_struct const *)(__e_acsl_38),
                                 (__mpz_struct const *)(__e_acsl_39));
-    e_acsl_assert(__e_acsl_eq_15 == 0,(char *)"Assertion",(char *)"main",
-                  (char *)"(0<=-1) == (0>0)",26);
+    __e_acsl_assert(__e_acsl_eq_15 == 0,(char *)"Assertion",(char *)"main",
+                    (char *)"(0<=-1) == (0>0)",26);
     __gmpz_clear(__e_acsl_36);
     __gmpz_clear(__e_acsl_37);
     __gmpz_clear(__e_acsl_neg_13);
@@ -456,8 +457,8 @@ int main(void)
     __gmpz_init_set_si(__e_acsl_43,(long)(__e_acsl_le_2 <= 0));
     __e_acsl_eq_16 = __gmpz_cmp((__mpz_struct const *)(__e_acsl_42),
                                 (__mpz_struct const *)(__e_acsl_43));
-    e_acsl_assert(__e_acsl_eq_16 == 0,(char *)"Assertion",(char *)"main",
-                  (char *)"(0>=-1) == (0<=0)",27);
+    __e_acsl_assert(__e_acsl_eq_16 == 0,(char *)"Assertion",(char *)"main",
+                    (char *)"(0>=-1) == (0<=0)",27);
     __gmpz_clear(__e_acsl_40);
     __gmpz_clear(__e_acsl_41);
     __gmpz_clear(__e_acsl_neg_14);
@@ -488,8 +489,8 @@ int main(void)
     __gmpz_init_set_si(__e_acsl_48,(long)(__e_acsl_not_2 == 0));
     __e_acsl_eq_17 = __gmpz_cmp((__mpz_struct const *)(__e_acsl_46),
                                 (__mpz_struct const *)(__e_acsl_48));
-    e_acsl_assert(__e_acsl_eq_17 == 0,(char *)"Assertion",(char *)"main",
-                  (char *)"(0!=1) == !(0!=0)",28);
+    __e_acsl_assert(__e_acsl_eq_17 == 0,(char *)"Assertion",(char *)"main",
+                    (char *)"(0!=1) == !(0!=0)",28);
     __gmpz_clear(__e_acsl_44);
     __gmpz_clear(__e_acsl_45);
     __gmpz_clear(__e_acsl_46);
@@ -520,8 +521,8 @@ int main(void)
     __gmpz_init_set_si(__e_acsl_53,(long)(__e_acsl_not_3 == 0));
     __e_acsl_eq_18 = __gmpz_cmp((__mpz_struct const *)(__e_acsl_50),
                                 (__mpz_struct const *)(__e_acsl_53));
-    e_acsl_assert(__e_acsl_eq_18 == 0,(char *)"Assertion",(char *)"main",
-                  (char *)"(0!=0) == !(1!=0)",30);
+    __e_acsl_assert(__e_acsl_eq_18 == 0,(char *)"Assertion",(char *)"main",
+                    (char *)"(0!=0) == !(1!=0)",30);
     __gmpz_clear(__e_acsl_49);
     __gmpz_clear(__e_acsl_50);
     __gmpz_clear(__e_acsl_51);
@@ -544,15 +545,15 @@ int main(void)
                                       (__mpz_struct const *)(__e_acsl_55));
     __gmpz_init(__e_acsl_div_3);
     /*@ assert E_ACSL: y ≢ 0; */
-    e_acsl_assert(! (__e_acsl_div_guard_3 == 0),(char *)"Assertion",
-                  (char *)"main",(char *)"y == 0",31);
+    __e_acsl_assert(! (__e_acsl_div_guard_3 == 0),(char *)"Assertion",
+                    (char *)"main",(char *)"y == 0",31);
     __gmpz_tdiv_q(__e_acsl_div_3,(__mpz_struct const *)(__e_acsl_54),
                   (__mpz_struct const *)(__e_acsl_y_2));
     __gmpz_init_set_si(__e_acsl_56,(long)2);
     __e_acsl_eq_19 = __gmpz_cmp((__mpz_struct const *)(__e_acsl_div_3),
                                 (__mpz_struct const *)(__e_acsl_56));
-    e_acsl_assert(__e_acsl_eq_19 == 0,(char *)"Assertion",(char *)"main",
-                  (char *)"4/y == 2",31);
+    __e_acsl_assert(__e_acsl_eq_19 == 0,(char *)"Assertion",(char *)"main",
+                    (char *)"4/y == 2",31);
     __gmpz_clear(__e_acsl_54);
     __gmpz_clear(__e_acsl_y_2);
     __gmpz_clear(__e_acsl_55);
diff --git a/src/plugins/e-acsl/tests/gmp/oracle/gen_array.c b/src/plugins/e-acsl/tests/gmp/oracle/gen_array.c
index 9f92179a2377b48f0d7016a778bf17fbeff40187..4e8e4913f1bb8b1323ed3a7f07257ea15977f849 100644
--- a/src/plugins/e-acsl/tests/gmp/oracle/gen_array.c
+++ b/src/plugins/e-acsl/tests/gmp/oracle/gen_array.c
@@ -21,11 +21,11 @@ int main(void)
     }
   }
   /*@ assert T1[0] ≡ T2[0]; */
-  e_acsl_assert(T1[0] == T2[0],(char *)"Assertion",(char *)"main",
-                (char *)"T1[0] == T2[0]",13);
+  __e_acsl_assert(T1[0] == T2[0],(char *)"Assertion",(char *)"main",
+                  (char *)"T1[0] == T2[0]",13);
   /*@ assert T1[1] ≢ T2[1]; */
-  e_acsl_assert(T1[1] != T2[1],(char *)"Assertion",(char *)"main",
-                (char *)"T1[1] != T2[1]",14);
+  __e_acsl_assert(T1[1] != T2[1],(char *)"Assertion",(char *)"main",
+                  (char *)"T1[1] != T2[1]",14);
   __retres = 0;
   return __retres;
 }
diff --git a/src/plugins/e-acsl/tests/gmp/oracle/gen_array2.c b/src/plugins/e-acsl/tests/gmp/oracle/gen_array2.c
index ae655bfd2d287840fdb2e41f2a0b7ff500f9a90e..45962168679ea0b4e719fa7eb46720bd9c549508 100644
--- a/src/plugins/e-acsl/tests/gmp/oracle/gen_array2.c
+++ b/src/plugins/e-acsl/tests/gmp/oracle/gen_array2.c
@@ -29,8 +29,8 @@ int main(void)
     __gmpz_init_set_si(__e_acsl_2,(long)T2[0]);
     __e_acsl_eq = __gmpz_cmp((__mpz_struct const *)(__e_acsl),
                              (__mpz_struct const *)(__e_acsl_2));
-    e_acsl_assert(__e_acsl_eq == 0,(char *)"Assertion",(char *)"main",
-                  (char *)"T1[0] == T2[0]",13);
+    __e_acsl_assert(__e_acsl_eq == 0,(char *)"Assertion",(char *)"main",
+                    (char *)"T1[0] == T2[0]",13);
     __gmpz_clear(__e_acsl);
     __gmpz_clear(__e_acsl_2);
   }
@@ -43,8 +43,8 @@ int main(void)
     __gmpz_init_set_si(__e_acsl_4,(long)T2[1]);
     __e_acsl_ne = __gmpz_cmp((__mpz_struct const *)(__e_acsl_3),
                              (__mpz_struct const *)(__e_acsl_4));
-    e_acsl_assert(__e_acsl_ne != 0,(char *)"Assertion",(char *)"main",
-                  (char *)"T1[1] != T2[1]",14);
+    __e_acsl_assert(__e_acsl_ne != 0,(char *)"Assertion",(char *)"main",
+                    (char *)"T1[1] != T2[1]",14);
     __gmpz_clear(__e_acsl_3);
     __gmpz_clear(__e_acsl_4);
   }
diff --git a/src/plugins/e-acsl/tests/gmp/oracle/gen_at.c b/src/plugins/e-acsl/tests/gmp/oracle/gen_at.c
index 9198f2ccf972cfd08404fee453efe4cdc0c53620..32a3edd81ccc395dde770a2e3701a06da567c572 100644
--- a/src/plugins/e-acsl/tests/gmp/oracle/gen_at.c
+++ b/src/plugins/e-acsl/tests/gmp/oracle/gen_at.c
@@ -14,17 +14,17 @@ void f(void)
      __e_acsl_at_2 = A;
      A = 2;
   /*@ assert \at(A,Pre) ≡ 0; */
-  e_acsl_assert(__e_acsl_at == 0,(char *)"Assertion",(char *)"f",
-                (char *)"\\at(A,Pre) == 0",11);
+  __e_acsl_assert(__e_acsl_at == 0,(char *)"Assertion",(char *)"f",
+                  (char *)"\\at(A,Pre) == 0",11);
   /*@ assert \at(A,F) ≡ 1; */
-  e_acsl_assert(__e_acsl_at_2 == 1,(char *)"Assertion",(char *)"f",
-                (char *)"\\at(A,F) == 1",12);
+  __e_acsl_assert(__e_acsl_at_2 == 1,(char *)"Assertion",(char *)"f",
+                  (char *)"\\at(A,F) == 1",12);
   /*@ assert \at(A,Here) ≡ 2; */
-  e_acsl_assert(A == 2,(char *)"Assertion",(char *)"f",
-                (char *)"\\at(A,Here) == 2",13);
+  __e_acsl_assert(A == 2,(char *)"Assertion",(char *)"f",
+                  (char *)"\\at(A,Here) == 2",13);
   /*@ assert \at(\at(A,Pre),F) ≡ 0; */
-  e_acsl_assert(__e_acsl_at_4 == 0,(char *)"Assertion",(char *)"f",
-                (char *)"\\at(\\at(A,Pre),F) == 0",14);
+  __e_acsl_assert(__e_acsl_at_4 == 0,(char *)"Assertion",(char *)"f",
+                  (char *)"\\at(\\at(A,Pre),F) == 0",14);
   A = 3;
   return;
 }
@@ -35,8 +35,8 @@ void __e_acsl_f(void)
   int __e_acsl_at;
   f();
   __e_acsl_at = A;
-  e_acsl_assert(__e_acsl_at == 3,(char *)"Postcondition",(char *)"f",
-                (char *)"\\at(A,Post) == 3",7);
+  __e_acsl_assert(__e_acsl_at == 3,(char *)"Postcondition",(char *)"f",
+                  (char *)"\\at(A,Post) == 3",7);
   return;
 }
 
@@ -57,16 +57,16 @@ void g(int *p, int *q)
     {
       int __e_acsl_valid_read_3;
       __e_acsl_valid_read_3 = __valid_read((void *)q,sizeof(int));
-      e_acsl_assert(__e_acsl_valid_read_3,(char *)"RTE",(char *)"g",
-                    (char *)"mem_access: \\valid_read(q)",32);
+      __e_acsl_assert(__e_acsl_valid_read_3,(char *)"RTE",(char *)"g",
+                      (char *)"mem_access: \\valid_read(q)",32);
       __store_block((void *)(& __e_acsl_at_3),4UL);
       __e_acsl_at_3 = *q;
     }
     {
       int __e_acsl_valid_read;
       __e_acsl_valid_read = __valid_read((void *)q,sizeof(int));
-      e_acsl_assert(__e_acsl_valid_read,(char *)"RTE",(char *)"g",
-                    (char *)"mem_access: \\valid_read(q)",30);
+      __e_acsl_assert(__e_acsl_valid_read,(char *)"RTE",(char *)"g",
+                      (char *)"mem_access: \\valid_read(q)",30);
       __store_block((void *)(& __e_acsl_at),4UL);
       __e_acsl_at = *q;
     }
@@ -81,26 +81,26 @@ void g(int *p, int *q)
       int __e_acsl_valid_read_2;
       __e_acsl_valid_read_2 = __valid_read((void *)(p + __e_acsl_at),
                                            sizeof(int));
-      e_acsl_assert(__e_acsl_valid_read_2,(char *)"RTE",(char *)"g",
-                    (char *)"mem_access: \\valid_read(p+__e_acsl_at)",30);
+      __e_acsl_assert(__e_acsl_valid_read_2,(char *)"RTE",(char *)"g",
+                      (char *)"mem_access: \\valid_read(p+__e_acsl_at)",30);
       __store_block((void *)(& __e_acsl_at_2),4UL);
       __e_acsl_at_2 = *(p + __e_acsl_at);
     }
     A = 4;
   /*@ assert \at(*(p+\at(*q,L1)),L2) ≡ 2; */
-  e_acsl_assert(__e_acsl_at_2 == 2,(char *)"Assertion",(char *)"g",
-                (char *)"\\at(*(p+\\at(*q,L1)),L2) == 2",30);
+  __e_acsl_assert(__e_acsl_at_2 == 2,(char *)"Assertion",(char *)"g",
+                  (char *)"\\at(*(p+\\at(*q,L1)),L2) == 2",30);
   L3:
     /*@ assert \at(*(p+\at(*q,L1)),Here) ≡ 2; */
     {
       int __e_acsl_valid_read_4;
       __e_acsl_valid_read_4 = __valid_read((void *)(p + __e_acsl_at_3),
                                            sizeof(int));
-      e_acsl_assert(__e_acsl_valid_read_4,(char *)"RTE",(char *)"g",
-                    (char *)"mem_access: \\valid_read(p+__e_acsl_at_3)",32);
-      e_acsl_assert(*(p + __e_acsl_at_3) == 2,(char *)"Assertion",
-                    (char *)"g",(char *)"\\at(*(p+\\at(*q,L1)),Here) == 2",
-                    32);
+      __e_acsl_assert(__e_acsl_valid_read_4,(char *)"RTE",(char *)"g",
+                      (char *)"mem_access: \\valid_read(p+__e_acsl_at_3)",32);
+      __e_acsl_assert(*(p + __e_acsl_at_3) == 2,(char *)"Assertion",
+                      (char *)"g",(char *)"\\at(*(p+\\at(*q,L1)),Here) == 2",
+                      32);
     }
     __delete_block((void *)(& p));
     __delete_block((void *)(& q));
@@ -125,8 +125,8 @@ int __e_acsl_h(int x)
   __store_block((void *)(& __e_acsl_at),4UL);
   __e_acsl_at = x;
   __retres = h(x);
-  e_acsl_assert(__retres == __e_acsl_at,(char *)"Postcondition",(char *)"h",
-                (char *)"\\result == \\old(x)",38);
+  __e_acsl_assert(__retres == __e_acsl_at,(char *)"Postcondition",
+                  (char *)"h",(char *)"\\result == \\old(x)",38);
   __delete_block((void *)(& x));
   __delete_block((void *)(& __retres));
   return __retres;
@@ -140,6 +140,7 @@ int main(void)
   int __retres;
   int x;
   int t[2];
+  __e_acsl_memory_init((int *)0,(char ***)0,8UL);
   __store_block((void *)(t),8UL);
   __store_block((void *)(& x),4UL);
   __full_init((void *)(& x));
@@ -152,22 +153,23 @@ int main(void)
     __store_block((void *)(& __e_acsl_at),4UL);
     __e_acsl_at = x;
     /*@ assert x ≡ 0; */
-    e_acsl_assert(x == 0,(char *)"Assertion",(char *)"main",(char *)"x == 0",
-                  46);
+    __e_acsl_assert(x == 0,(char *)"Assertion",(char *)"main",
+                    (char *)"x == 0",46);
     __full_init((void *)(& x));
     x = 1;
   __full_init((void *)(& x));
   x = 2;
   __e_acsl_f();
   /*@ assert \at(x,L) ≡ 0; */
-  e_acsl_assert(__e_acsl_at == 0,(char *)"Assertion",(char *)"main",
-                (char *)"\\at(x,L) == 0",51);
+  __e_acsl_assert(__e_acsl_at == 0,(char *)"Assertion",(char *)"main",
+                  (char *)"\\at(x,L) == 0",51);
   /*@ assert \at(x+1,L) ≡ 1; */
-  e_acsl_assert(__e_acsl_at_2 == (long)1,(char *)"Assertion",(char *)"main",
-                (char *)"\\at(x+1,L) == 1",52);
+  __e_acsl_assert(__e_acsl_at_2 == (long)1,(char *)"Assertion",
+                  (char *)"main",(char *)"\\at(x+1,L) == 1",52);
   /*@ assert \at(x,L)+1 ≡ 1; */
-  e_acsl_assert((long)__e_acsl_at_3 + (long)1 == (long)1,(char *)"Assertion",
-                (char *)"main",(char *)"\\at(x,L)+1 == 1",53);
+  __e_acsl_assert((long)__e_acsl_at_3 + (long)1 == (long)1,
+                  (char *)"Assertion",(char *)"main",
+                  (char *)"\\at(x,L)+1 == 1",53);
   g(t,& x);
   __retres = 0;
   __delete_block((void *)(t));
diff --git a/src/plugins/e-acsl/tests/gmp/oracle/gen_at2.c b/src/plugins/e-acsl/tests/gmp/oracle/gen_at2.c
index 0db195ea1dd9f2f56377b13e9954afaa9da64f12..4ed21e95ef35f04002c3fdf34f2485ae4a2b9270 100644
--- a/src/plugins/e-acsl/tests/gmp/oracle/gen_at2.c
+++ b/src/plugins/e-acsl/tests/gmp/oracle/gen_at2.c
@@ -22,8 +22,8 @@ void f(void)
     __gmpz_init_set_si(__e_acsl_2,(long)0);
     __e_acsl_eq = __gmpz_cmp((__mpz_struct const *)(__e_acsl),
                              (__mpz_struct const *)(__e_acsl_2));
-    e_acsl_assert(__e_acsl_eq == 0,(char *)"Assertion",(char *)"f",
-                  (char *)"\\at(A,Pre) == 0",11);
+    __e_acsl_assert(__e_acsl_eq == 0,(char *)"Assertion",(char *)"f",
+                    (char *)"\\at(A,Pre) == 0",11);
     __gmpz_clear(__e_acsl);
     __gmpz_clear(__e_acsl_2);
   }
@@ -36,8 +36,8 @@ void f(void)
     __gmpz_init_set_si(__e_acsl_4,(long)1);
     __e_acsl_eq_2 = __gmpz_cmp((__mpz_struct const *)(__e_acsl_3),
                                (__mpz_struct const *)(__e_acsl_4));
-    e_acsl_assert(__e_acsl_eq_2 == 0,(char *)"Assertion",(char *)"f",
-                  (char *)"\\at(A,F) == 1",12);
+    __e_acsl_assert(__e_acsl_eq_2 == 0,(char *)"Assertion",(char *)"f",
+                    (char *)"\\at(A,F) == 1",12);
     __gmpz_clear(__e_acsl_3);
     __gmpz_clear(__e_acsl_4);
   }
@@ -50,8 +50,8 @@ void f(void)
     __gmpz_init_set_si(__e_acsl_6,(long)2);
     __e_acsl_eq_3 = __gmpz_cmp((__mpz_struct const *)(__e_acsl_5),
                                (__mpz_struct const *)(__e_acsl_6));
-    e_acsl_assert(__e_acsl_eq_3 == 0,(char *)"Assertion",(char *)"f",
-                  (char *)"\\at(A,Here) == 2",13);
+    __e_acsl_assert(__e_acsl_eq_3 == 0,(char *)"Assertion",(char *)"f",
+                    (char *)"\\at(A,Here) == 2",13);
     __gmpz_clear(__e_acsl_5);
     __gmpz_clear(__e_acsl_6);
   }
@@ -64,8 +64,8 @@ void f(void)
     __gmpz_init_set_si(__e_acsl_8,(long)0);
     __e_acsl_eq_4 = __gmpz_cmp((__mpz_struct const *)(__e_acsl_7),
                                (__mpz_struct const *)(__e_acsl_8));
-    e_acsl_assert(__e_acsl_eq_4 == 0,(char *)"Assertion",(char *)"f",
-                  (char *)"\\at(\\at(A,Pre),F) == 0",14);
+    __e_acsl_assert(__e_acsl_eq_4 == 0,(char *)"Assertion",(char *)"f",
+                    (char *)"\\at(\\at(A,Pre),F) == 0",14);
     __gmpz_clear(__e_acsl_7);
     __gmpz_clear(__e_acsl_8);
   }
@@ -87,8 +87,8 @@ void __e_acsl_f(void)
     __gmpz_init_set_si(__e_acsl_2,(long)3);
     __e_acsl_eq = __gmpz_cmp((__mpz_struct const *)(__e_acsl),
                              (__mpz_struct const *)(__e_acsl_2));
-    e_acsl_assert(__e_acsl_eq == 0,(char *)"Postcondition",(char *)"f",
-                  (char *)"\\at(A,Post) == 3",7);
+    __e_acsl_assert(__e_acsl_eq == 0,(char *)"Postcondition",(char *)"f",
+                    (char *)"\\at(A,Post) == 3",7);
     __gmpz_clear(__e_acsl);
     __gmpz_clear(__e_acsl_2);
     return;
@@ -112,16 +112,16 @@ void g(int *p, int *q)
     {
       int __e_acsl_valid_read_3;
       __e_acsl_valid_read_3 = __valid_read((void *)q,sizeof(int));
-      e_acsl_assert(__e_acsl_valid_read_3,(char *)"RTE",(char *)"g",
-                    (char *)"mem_access: \\valid_read(q)",32);
+      __e_acsl_assert(__e_acsl_valid_read_3,(char *)"RTE",(char *)"g",
+                      (char *)"mem_access: \\valid_read(q)",32);
       __store_block((void *)(& __e_acsl_at_3),4UL);
       __e_acsl_at_3 = *q;
     }
     {
       int __e_acsl_valid_read;
       __e_acsl_valid_read = __valid_read((void *)q,sizeof(int));
-      e_acsl_assert(__e_acsl_valid_read,(char *)"RTE",(char *)"g",
-                    (char *)"mem_access: \\valid_read(q)",30);
+      __e_acsl_assert(__e_acsl_valid_read,(char *)"RTE",(char *)"g",
+                      (char *)"mem_access: \\valid_read(q)",30);
       __store_block((void *)(& __e_acsl_at),4UL);
       __e_acsl_at = *q;
     }
@@ -136,9 +136,9 @@ void g(int *p, int *q)
       int __e_acsl_valid_read_2;
       __e_acsl_valid_read_2 = __valid_read((void *)(p + (long)__e_acsl_at),
                                            sizeof(int));
-      e_acsl_assert(__e_acsl_valid_read_2,(char *)"RTE",(char *)"g",
-                    (char *)"mem_access: \\valid_read(p+(long)__e_acsl_at)",
-                    30);
+      __e_acsl_assert(__e_acsl_valid_read_2,(char *)"RTE",(char *)"g",
+                      (char *)"mem_access: \\valid_read(p+(long)__e_acsl_at)",
+                      30);
       __store_block((void *)(& __e_acsl_at_2),4UL);
       __e_acsl_at_2 = *(p + (long)__e_acsl_at);
     }
@@ -152,8 +152,8 @@ void g(int *p, int *q)
     __gmpz_init_set_si(__e_acsl_2,(long)2);
     __e_acsl_eq = __gmpz_cmp((__mpz_struct const *)(__e_acsl),
                              (__mpz_struct const *)(__e_acsl_2));
-    e_acsl_assert(__e_acsl_eq == 0,(char *)"Assertion",(char *)"g",
-                  (char *)"\\at(*(p+\\at(*q,L1)),L2) == 2",30);
+    __e_acsl_assert(__e_acsl_eq == 0,(char *)"Assertion",(char *)"g",
+                    (char *)"\\at(*(p+\\at(*q,L1)),L2) == 2",30);
     __gmpz_clear(__e_acsl);
     __gmpz_clear(__e_acsl_2);
   }
@@ -167,8 +167,8 @@ void g(int *p, int *q)
       __gmpz_init_set_si(__e_acsl_4,(long)2);
       __e_acsl_eq_2 = __gmpz_cmp((__mpz_struct const *)(__e_acsl_3),
                                  (__mpz_struct const *)(__e_acsl_4));
-      e_acsl_assert(__e_acsl_eq_2 == 0,(char *)"Assertion",(char *)"g",
-                    (char *)"\\at(*(p+\\at(*q,L1)),Here) == 2",32);
+      __e_acsl_assert(__e_acsl_eq_2 == 0,(char *)"Assertion",(char *)"g",
+                      (char *)"\\at(*(p+\\at(*q,L1)),Here) == 2",32);
       __gmpz_clear(__e_acsl_3);
       __gmpz_clear(__e_acsl_4);
     }
@@ -203,8 +203,8 @@ int __e_acsl_h(int x)
     __gmpz_init_set_si(__e_acsl,(long)__e_acsl_at);
     __e_acsl_eq = __gmpz_cmp((__mpz_struct const *)(__e_acsl_result),
                              (__mpz_struct const *)(__e_acsl));
-    e_acsl_assert(__e_acsl_eq == 0,(char *)"Postcondition",(char *)"h",
-                  (char *)"\\result == \\old(x)",38);
+    __e_acsl_assert(__e_acsl_eq == 0,(char *)"Postcondition",(char *)"h",
+                    (char *)"\\result == \\old(x)",38);
     __delete_block((void *)(& x));
     __gmpz_clear(__e_acsl_result);
     __gmpz_clear(__e_acsl);
@@ -221,6 +221,7 @@ int main(void)
   int __retres;
   int x;
   int t[2];
+  __e_acsl_memory_init((int *)0,(char ***)0,8UL);
   __store_block((void *)(t),8UL);
   __store_block((void *)(& x),4UL);
   __full_init((void *)(& x));
@@ -253,8 +254,8 @@ int main(void)
       __gmpz_init_set_si(__e_acsl,(long)0);
       __e_acsl_eq = __gmpz_cmp((__mpz_struct const *)(__e_acsl_x),
                                (__mpz_struct const *)(__e_acsl));
-      e_acsl_assert(__e_acsl_eq == 0,(char *)"Assertion",(char *)"main",
-                    (char *)"x == 0",46);
+      __e_acsl_assert(__e_acsl_eq == 0,(char *)"Assertion",(char *)"main",
+                      (char *)"x == 0",46);
       __gmpz_clear(__e_acsl_x);
       __gmpz_clear(__e_acsl);
     }
@@ -272,8 +273,8 @@ int main(void)
     __gmpz_init_set_si(__e_acsl_3,(long)0);
     __e_acsl_eq_2 = __gmpz_cmp((__mpz_struct const *)(__e_acsl_2),
                                (__mpz_struct const *)(__e_acsl_3));
-    e_acsl_assert(__e_acsl_eq_2 == 0,(char *)"Assertion",(char *)"main",
-                  (char *)"\\at(x,L) == 0",51);
+    __e_acsl_assert(__e_acsl_eq_2 == 0,(char *)"Assertion",(char *)"main",
+                    (char *)"\\at(x,L) == 0",51);
     __gmpz_clear(__e_acsl_2);
     __gmpz_clear(__e_acsl_3);
   }
@@ -284,8 +285,8 @@ int main(void)
     __gmpz_init_set_si(__e_acsl_5,(long)1);
     __e_acsl_eq_3 = __gmpz_cmp((__mpz_struct const *)(__e_acsl_at_2),
                                (__mpz_struct const *)(__e_acsl_5));
-    e_acsl_assert(__e_acsl_eq_3 == 0,(char *)"Assertion",(char *)"main",
-                  (char *)"\\at(x+1,L) == 1",52);
+    __e_acsl_assert(__e_acsl_eq_3 == 0,(char *)"Assertion",(char *)"main",
+                    (char *)"\\at(x+1,L) == 1",52);
     __gmpz_clear(__e_acsl_5);
   }
   /*@ assert \at(x,L)+1 ≡ 1; */
@@ -301,8 +302,8 @@ int main(void)
                (__mpz_struct const *)(__e_acsl_7));
     __e_acsl_eq_4 = __gmpz_cmp((__mpz_struct const *)(__e_acsl_add_2),
                                (__mpz_struct const *)(__e_acsl_7));
-    e_acsl_assert(__e_acsl_eq_4 == 0,(char *)"Assertion",(char *)"main",
-                  (char *)"\\at(x,L)+1 == 1",53);
+    __e_acsl_assert(__e_acsl_eq_4 == 0,(char *)"Assertion",(char *)"main",
+                    (char *)"\\at(x,L)+1 == 1",53);
     __gmpz_clear(__e_acsl_6);
     __gmpz_clear(__e_acsl_7);
     __gmpz_clear(__e_acsl_add_2);
diff --git a/src/plugins/e-acsl/tests/gmp/oracle/gen_cast.c b/src/plugins/e-acsl/tests/gmp/oracle/gen_cast.c
index e6fa77c2c370c09c068b313cc26aff58188ad277..57f263c7e366527d3a39265de7797142af988be6 100644
--- a/src/plugins/e-acsl/tests/gmp/oracle/gen_cast.c
+++ b/src/plugins/e-acsl/tests/gmp/oracle/gen_cast.c
@@ -7,26 +7,26 @@ int main(void)
   x = (long)0;
   y = 0;
   /*@ assert (int)x ≡ y; */
-  e_acsl_assert((int)x == y,(char *)"Assertion",(char *)"main",
-                (char *)"(int)x == y",10);
+  __e_acsl_assert((int)x == y,(char *)"Assertion",(char *)"main",
+                  (char *)"(int)x == y",10);
   /*@ assert x ≡ (long)y; */
-  e_acsl_assert(x == (long)y,(char *)"Assertion",(char *)"main",
-                (char *)"x == (long)y",11);
+  __e_acsl_assert(x == (long)y,(char *)"Assertion",(char *)"main",
+                  (char *)"x == (long)y",11);
   /*@ assert y ≡ (int)0; */
-  e_acsl_assert(y == 0,(char *)"Assertion",(char *)"main",
-                (char *)"y == (int)0",13);
+  __e_acsl_assert(y == 0,(char *)"Assertion",(char *)"main",
+                  (char *)"y == (int)0",13);
   /*@ assert (unsigned int)y ≡ (unsigned int)0; */
-  e_acsl_assert((unsigned int)y == (unsigned int)0,(char *)"Assertion",
-                (char *)"main",(char *)"(unsigned int)y == (unsigned int)0",
-                14);
+  __e_acsl_assert((unsigned int)y == (unsigned int)0,(char *)"Assertion",
+                  (char *)"main",
+                  (char *)"(unsigned int)y == (unsigned int)0",14);
   /*@ assert y ≢ (int)0xfffffffffffffff; */
-  e_acsl_assert(y != (int)0xfffffffffffffff,(char *)"Assertion",
-                (char *)"main",(char *)"y != (int)0xfffffffffffffff",17);
+  __e_acsl_assert(y != (int)0xfffffffffffffff,(char *)"Assertion",
+                  (char *)"main",(char *)"y != (int)0xfffffffffffffff",17);
   /*@ assert (unsigned int)y ≢ (unsigned int)0xfffffffffffffff; */
-  e_acsl_assert((unsigned int)y != (unsigned int)0xfffffffffffffff,
-                (char *)"Assertion",(char *)"main",
-                (char *)"(unsigned int)y != (unsigned int)0xfffffffffffffff",
-                18);
+  __e_acsl_assert((unsigned int)y != (unsigned int)0xfffffffffffffff,
+                  (char *)"Assertion",(char *)"main",
+                  (char *)"(unsigned int)y != (unsigned int)0xfffffffffffffff",
+                  18);
   __retres = 0;
   return __retres;
 }
diff --git a/src/plugins/e-acsl/tests/gmp/oracle/gen_cast2.c b/src/plugins/e-acsl/tests/gmp/oracle/gen_cast2.c
index 06906262617c32c349a34a43c24f5d4276a465ea..80154b7123b6521ae50fe8fb69572798ac5937d7 100644
--- a/src/plugins/e-acsl/tests/gmp/oracle/gen_cast2.c
+++ b/src/plugins/e-acsl/tests/gmp/oracle/gen_cast2.c
@@ -15,8 +15,8 @@ int main(void)
     __gmpz_init_set_si(__e_acsl_y,(long)y);
     __e_acsl_eq = __gmpz_cmp((__mpz_struct const *)(__e_acsl_cast),
                              (__mpz_struct const *)(__e_acsl_y));
-    e_acsl_assert(__e_acsl_eq == 0,(char *)"Assertion",(char *)"main",
-                  (char *)"(int)x == y",10);
+    __e_acsl_assert(__e_acsl_eq == 0,(char *)"Assertion",(char *)"main",
+                    (char *)"(int)x == y",10);
     __gmpz_clear(__e_acsl_cast);
     __gmpz_clear(__e_acsl_y);
   }
@@ -29,8 +29,8 @@ int main(void)
     __gmpz_init_set_si(__e_acsl_cast_2,(long)y);
     __e_acsl_eq_2 = __gmpz_cmp((__mpz_struct const *)(__e_acsl_x),
                                (__mpz_struct const *)(__e_acsl_cast_2));
-    e_acsl_assert(__e_acsl_eq_2 == 0,(char *)"Assertion",(char *)"main",
-                  (char *)"x == (long)y",11);
+    __e_acsl_assert(__e_acsl_eq_2 == 0,(char *)"Assertion",(char *)"main",
+                    (char *)"x == (long)y",11);
     __gmpz_clear(__e_acsl_x);
     __gmpz_clear(__e_acsl_cast_2);
   }
@@ -43,8 +43,8 @@ int main(void)
     __gmpz_init_set_si(__e_acsl_cast_3,(long)0);
     __e_acsl_eq_3 = __gmpz_cmp((__mpz_struct const *)(__e_acsl_y_2),
                                (__mpz_struct const *)(__e_acsl_cast_3));
-    e_acsl_assert(__e_acsl_eq_3 == 0,(char *)"Assertion",(char *)"main",
-                  (char *)"y == (int)0",13);
+    __e_acsl_assert(__e_acsl_eq_3 == 0,(char *)"Assertion",(char *)"main",
+                    (char *)"y == (int)0",13);
     __gmpz_clear(__e_acsl_y_2);
     __gmpz_clear(__e_acsl_cast_3);
   }
@@ -57,8 +57,8 @@ int main(void)
     __gmpz_init_set_ui(__e_acsl_cast_5,(unsigned long)((unsigned int)0));
     __e_acsl_eq_4 = __gmpz_cmp((__mpz_struct const *)(__e_acsl_cast_4),
                                (__mpz_struct const *)(__e_acsl_cast_5));
-    e_acsl_assert(__e_acsl_eq_4 == 0,(char *)"Assertion",(char *)"main",
-                  (char *)"(unsigned int)y == (unsigned int)0",14);
+    __e_acsl_assert(__e_acsl_eq_4 == 0,(char *)"Assertion",(char *)"main",
+                    (char *)"(unsigned int)y == (unsigned int)0",14);
     __gmpz_clear(__e_acsl_cast_4);
     __gmpz_clear(__e_acsl_cast_5);
   }
@@ -71,8 +71,8 @@ int main(void)
     __gmpz_init_set_si(__e_acsl_cast_6,(long)((int)0xfffffffffffffff));
     __e_acsl_ne = __gmpz_cmp((__mpz_struct const *)(__e_acsl_y_3),
                              (__mpz_struct const *)(__e_acsl_cast_6));
-    e_acsl_assert(__e_acsl_ne != 0,(char *)"Assertion",(char *)"main",
-                  (char *)"y != (int)0xfffffffffffffff",17);
+    __e_acsl_assert(__e_acsl_ne != 0,(char *)"Assertion",(char *)"main",
+                    (char *)"y != (int)0xfffffffffffffff",17);
     __gmpz_clear(__e_acsl_y_3);
     __gmpz_clear(__e_acsl_cast_6);
   }
@@ -86,9 +86,9 @@ int main(void)
                        (unsigned long)((unsigned int)0xfffffffffffffff));
     __e_acsl_ne_2 = __gmpz_cmp((__mpz_struct const *)(__e_acsl_cast_7),
                                (__mpz_struct const *)(__e_acsl_cast_8));
-    e_acsl_assert(__e_acsl_ne_2 != 0,(char *)"Assertion",(char *)"main",
-                  (char *)"(unsigned int)y != (unsigned int)0xfffffffffffffff",
-                  18);
+    __e_acsl_assert(__e_acsl_ne_2 != 0,(char *)"Assertion",(char *)"main",
+                    (char *)"(unsigned int)y != (unsigned int)0xfffffffffffffff",
+                    18);
     __gmpz_clear(__e_acsl_cast_7);
     __gmpz_clear(__e_acsl_cast_8);
   }
diff --git a/src/plugins/e-acsl/tests/gmp/oracle/gen_comparison.c b/src/plugins/e-acsl/tests/gmp/oracle/gen_comparison.c
index 7ec70c2886715e9a042a31b38722b5cc9eef7d43..53c13302ebd1f22a80fdaa894e4bde39eb9cbd90 100644
--- a/src/plugins/e-acsl/tests/gmp/oracle/gen_comparison.c
+++ b/src/plugins/e-acsl/tests/gmp/oracle/gen_comparison.c
@@ -8,54 +8,55 @@ int main(void)
   x = 0;
   y = 1;
   /*@ assert x < y; */
-  e_acsl_assert(x < y,(char *)"Assertion",(char *)"main",(char *)"x < y",7);
+  __e_acsl_assert(x < y,(char *)"Assertion",(char *)"main",(char *)"x < y",7);
   /*@ assert y > x; */
-  e_acsl_assert(y > x,(char *)"Assertion",(char *)"main",(char *)"y > x",8);
+  __e_acsl_assert(y > x,(char *)"Assertion",(char *)"main",(char *)"y > x",8);
   /*@ assert x ≤ 0; */
-  e_acsl_assert(x <= 0,(char *)"Assertion",(char *)"main",(char *)"x <= 0",9);
+  __e_acsl_assert(x <= 0,(char *)"Assertion",(char *)"main",(char *)"x <= 0",
+                  9);
   /*@ assert y ≥ 1; */
-  e_acsl_assert(y >= 1,(char *)"Assertion",(char *)"main",(char *)"y >= 1",
-                10);
+  __e_acsl_assert(y >= 1,(char *)"Assertion",(char *)"main",(char *)"y >= 1",
+                  10);
   s = (char *)"toto";
   /*@ assert s ≡ s; */
-  e_acsl_assert(s == s,(char *)"Assertion",(char *)"main",(char *)"s == s",
-                12);
+  __e_acsl_assert(s == s,(char *)"Assertion",(char *)"main",(char *)"s == s",
+                  12);
   /*@ assert 5 < 18; */
-  e_acsl_assert(5 < 18,(char *)"Assertion",(char *)"main",(char *)"5 < 18",
-                15);
+  __e_acsl_assert(5 < 18,(char *)"Assertion",(char *)"main",(char *)"5 < 18",
+                  15);
   /*@ assert 32 > 3; */
-  e_acsl_assert(32 > 3,(char *)"Assertion",(char *)"main",(char *)"32 > 3",
-                16);
+  __e_acsl_assert(32 > 3,(char *)"Assertion",(char *)"main",(char *)"32 > 3",
+                  16);
   /*@ assert 12 ≤ 13; */
-  e_acsl_assert(12 <= 13,(char *)"Assertion",(char *)"main",
-                (char *)"12 <= 13",17);
+  __e_acsl_assert(12 <= 13,(char *)"Assertion",(char *)"main",
+                  (char *)"12 <= 13",17);
   /*@ assert 123 ≥ 12; */
-  e_acsl_assert(123 >= 12,(char *)"Assertion",(char *)"main",
-                (char *)"123 >= 12",18);
+  __e_acsl_assert(123 >= 12,(char *)"Assertion",(char *)"main",
+                  (char *)"123 >= 12",18);
   /*@ assert 0xff ≡ 0xff; */
-  e_acsl_assert(0xff == 0xff,(char *)"Assertion",(char *)"main",
-                (char *)"0xff == 0xff",19);
+  __e_acsl_assert(0xff == 0xff,(char *)"Assertion",(char *)"main",
+                  (char *)"0xff == 0xff",19);
   /*@ assert 1 ≢ 2; */
-  e_acsl_assert(1 != 2,(char *)"Assertion",(char *)"main",(char *)"1 != 2",
-                20);
+  __e_acsl_assert(1 != 2,(char *)"Assertion",(char *)"main",(char *)"1 != 2",
+                  20);
   /*@ assert -5 < 18; */
-  e_acsl_assert(-5 < 18,(char *)"Assertion",(char *)"main",(char *)"-5 < 18",
-                22);
+  __e_acsl_assert(-5 < 18,(char *)"Assertion",(char *)"main",
+                  (char *)"-5 < 18",22);
   /*@ assert 32 > -3; */
-  e_acsl_assert(32 > -3,(char *)"Assertion",(char *)"main",(char *)"32 > -3",
-                23);
+  __e_acsl_assert(32 > -3,(char *)"Assertion",(char *)"main",
+                  (char *)"32 > -3",23);
   /*@ assert -12 ≤ 13; */
-  e_acsl_assert(-12 <= 13,(char *)"Assertion",(char *)"main",
-                (char *)"-12 <= 13",24);
+  __e_acsl_assert(-12 <= 13,(char *)"Assertion",(char *)"main",
+                  (char *)"-12 <= 13",24);
   /*@ assert 123 ≥ -12; */
-  e_acsl_assert(123 >= -12,(char *)"Assertion",(char *)"main",
-                (char *)"123 >= -12",25);
+  __e_acsl_assert(123 >= -12,(char *)"Assertion",(char *)"main",
+                  (char *)"123 >= -12",25);
   /*@ assert -0xff ≡ -0xff; */
-  e_acsl_assert(-0xff == -0xff,(char *)"Assertion",(char *)"main",
-                (char *)"-0xff == -0xff",26);
+  __e_acsl_assert(-0xff == -0xff,(char *)"Assertion",(char *)"main",
+                  (char *)"-0xff == -0xff",26);
   /*@ assert 1 ≢ -2; */
-  e_acsl_assert(1 != -2,(char *)"Assertion",(char *)"main",(char *)"1 != -2",
-                27);
+  __e_acsl_assert(1 != -2,(char *)"Assertion",(char *)"main",
+                  (char *)"1 != -2",27);
   __retres = 0;
   return __retres;
 }
diff --git a/src/plugins/e-acsl/tests/gmp/oracle/gen_comparison2.c b/src/plugins/e-acsl/tests/gmp/oracle/gen_comparison2.c
index 9a899138845131b8ff1b2327ee0d0f857576a881..cdc801066d4fcdd5bb22f30c42b9973d34ad4250 100644
--- a/src/plugins/e-acsl/tests/gmp/oracle/gen_comparison2.c
+++ b/src/plugins/e-acsl/tests/gmp/oracle/gen_comparison2.c
@@ -16,8 +16,8 @@ int main(void)
     __gmpz_init_set_si(__e_acsl_y,(long)y);
     __e_acsl_lt = __gmpz_cmp((__mpz_struct const *)(__e_acsl_x),
                              (__mpz_struct const *)(__e_acsl_y));
-    e_acsl_assert(__e_acsl_lt < 0,(char *)"Assertion",(char *)"main",
-                  (char *)"x < y",7);
+    __e_acsl_assert(__e_acsl_lt < 0,(char *)"Assertion",(char *)"main",
+                    (char *)"x < y",7);
     __gmpz_clear(__e_acsl_x);
     __gmpz_clear(__e_acsl_y);
   }
@@ -30,8 +30,8 @@ int main(void)
     __gmpz_init_set_si(__e_acsl_x_2,(long)x);
     __e_acsl_gt = __gmpz_cmp((__mpz_struct const *)(__e_acsl_y_2),
                              (__mpz_struct const *)(__e_acsl_x_2));
-    e_acsl_assert(__e_acsl_gt > 0,(char *)"Assertion",(char *)"main",
-                  (char *)"y > x",8);
+    __e_acsl_assert(__e_acsl_gt > 0,(char *)"Assertion",(char *)"main",
+                    (char *)"y > x",8);
     __gmpz_clear(__e_acsl_y_2);
     __gmpz_clear(__e_acsl_x_2);
   }
@@ -44,8 +44,8 @@ int main(void)
     __gmpz_init_set_si(__e_acsl,(long)0);
     __e_acsl_le = __gmpz_cmp((__mpz_struct const *)(__e_acsl_x_3),
                              (__mpz_struct const *)(__e_acsl));
-    e_acsl_assert(__e_acsl_le <= 0,(char *)"Assertion",(char *)"main",
-                  (char *)"x <= 0",9);
+    __e_acsl_assert(__e_acsl_le <= 0,(char *)"Assertion",(char *)"main",
+                    (char *)"x <= 0",9);
     __gmpz_clear(__e_acsl_x_3);
     __gmpz_clear(__e_acsl);
   }
@@ -58,15 +58,15 @@ int main(void)
     __gmpz_init_set_si(__e_acsl_2,(long)1);
     __e_acsl_ge = __gmpz_cmp((__mpz_struct const *)(__e_acsl_y_3),
                              (__mpz_struct const *)(__e_acsl_2));
-    e_acsl_assert(__e_acsl_ge >= 0,(char *)"Assertion",(char *)"main",
-                  (char *)"y >= 1",10);
+    __e_acsl_assert(__e_acsl_ge >= 0,(char *)"Assertion",(char *)"main",
+                    (char *)"y >= 1",10);
     __gmpz_clear(__e_acsl_y_3);
     __gmpz_clear(__e_acsl_2);
   }
   s = (char *)"toto";
   /*@ assert s ≡ s; */
-  e_acsl_assert(s == s,(char *)"Assertion",(char *)"main",(char *)"s == s",
-                12);
+  __e_acsl_assert(s == s,(char *)"Assertion",(char *)"main",(char *)"s == s",
+                  12);
   /*@ assert 5 < 18; */
   {
     mpz_t __e_acsl_3;
@@ -76,8 +76,8 @@ int main(void)
     __gmpz_init_set_si(__e_acsl_4,(long)18);
     __e_acsl_lt_2 = __gmpz_cmp((__mpz_struct const *)(__e_acsl_3),
                                (__mpz_struct const *)(__e_acsl_4));
-    e_acsl_assert(__e_acsl_lt_2 < 0,(char *)"Assertion",(char *)"main",
-                  (char *)"5 < 18",15);
+    __e_acsl_assert(__e_acsl_lt_2 < 0,(char *)"Assertion",(char *)"main",
+                    (char *)"5 < 18",15);
     __gmpz_clear(__e_acsl_3);
     __gmpz_clear(__e_acsl_4);
   }
@@ -90,8 +90,8 @@ int main(void)
     __gmpz_init_set_si(__e_acsl_6,(long)3);
     __e_acsl_gt_2 = __gmpz_cmp((__mpz_struct const *)(__e_acsl_5),
                                (__mpz_struct const *)(__e_acsl_6));
-    e_acsl_assert(__e_acsl_gt_2 > 0,(char *)"Assertion",(char *)"main",
-                  (char *)"32 > 3",16);
+    __e_acsl_assert(__e_acsl_gt_2 > 0,(char *)"Assertion",(char *)"main",
+                    (char *)"32 > 3",16);
     __gmpz_clear(__e_acsl_5);
     __gmpz_clear(__e_acsl_6);
   }
@@ -104,8 +104,8 @@ int main(void)
     __gmpz_init_set_si(__e_acsl_8,(long)13);
     __e_acsl_le_2 = __gmpz_cmp((__mpz_struct const *)(__e_acsl_7),
                                (__mpz_struct const *)(__e_acsl_8));
-    e_acsl_assert(__e_acsl_le_2 <= 0,(char *)"Assertion",(char *)"main",
-                  (char *)"12 <= 13",17);
+    __e_acsl_assert(__e_acsl_le_2 <= 0,(char *)"Assertion",(char *)"main",
+                    (char *)"12 <= 13",17);
     __gmpz_clear(__e_acsl_7);
     __gmpz_clear(__e_acsl_8);
   }
@@ -118,8 +118,8 @@ int main(void)
     __gmpz_init_set_si(__e_acsl_10,(long)12);
     __e_acsl_ge_2 = __gmpz_cmp((__mpz_struct const *)(__e_acsl_9),
                                (__mpz_struct const *)(__e_acsl_10));
-    e_acsl_assert(__e_acsl_ge_2 >= 0,(char *)"Assertion",(char *)"main",
-                  (char *)"123 >= 12",18);
+    __e_acsl_assert(__e_acsl_ge_2 >= 0,(char *)"Assertion",(char *)"main",
+                    (char *)"123 >= 12",18);
     __gmpz_clear(__e_acsl_9);
     __gmpz_clear(__e_acsl_10);
   }
@@ -130,8 +130,8 @@ int main(void)
     __gmpz_init_set_si(__e_acsl_11,(long)0xff);
     __e_acsl_eq = __gmpz_cmp((__mpz_struct const *)(__e_acsl_11),
                              (__mpz_struct const *)(__e_acsl_11));
-    e_acsl_assert(__e_acsl_eq == 0,(char *)"Assertion",(char *)"main",
-                  (char *)"0xff == 0xff",19);
+    __e_acsl_assert(__e_acsl_eq == 0,(char *)"Assertion",(char *)"main",
+                    (char *)"0xff == 0xff",19);
     __gmpz_clear(__e_acsl_11);
   }
   /*@ assert 1 ≢ 2; */
@@ -143,8 +143,8 @@ int main(void)
     __gmpz_init_set_si(__e_acsl_13,(long)2);
     __e_acsl_ne = __gmpz_cmp((__mpz_struct const *)(__e_acsl_12),
                              (__mpz_struct const *)(__e_acsl_13));
-    e_acsl_assert(__e_acsl_ne != 0,(char *)"Assertion",(char *)"main",
-                  (char *)"1 != 2",20);
+    __e_acsl_assert(__e_acsl_ne != 0,(char *)"Assertion",(char *)"main",
+                    (char *)"1 != 2",20);
     __gmpz_clear(__e_acsl_12);
     __gmpz_clear(__e_acsl_13);
   }
@@ -160,8 +160,8 @@ int main(void)
     __gmpz_init_set_si(__e_acsl_15,(long)18);
     __e_acsl_lt_3 = __gmpz_cmp((__mpz_struct const *)(__e_acsl_neg),
                                (__mpz_struct const *)(__e_acsl_15));
-    e_acsl_assert(__e_acsl_lt_3 < 0,(char *)"Assertion",(char *)"main",
-                  (char *)"-5 < 18",22);
+    __e_acsl_assert(__e_acsl_lt_3 < 0,(char *)"Assertion",(char *)"main",
+                    (char *)"-5 < 18",22);
     __gmpz_clear(__e_acsl_14);
     __gmpz_clear(__e_acsl_neg);
     __gmpz_clear(__e_acsl_15);
@@ -178,8 +178,8 @@ int main(void)
     __gmpz_neg(__e_acsl_neg_2,(__mpz_struct const *)(__e_acsl_17));
     __e_acsl_gt_3 = __gmpz_cmp((__mpz_struct const *)(__e_acsl_16),
                                (__mpz_struct const *)(__e_acsl_neg_2));
-    e_acsl_assert(__e_acsl_gt_3 > 0,(char *)"Assertion",(char *)"main",
-                  (char *)"32 > -3",23);
+    __e_acsl_assert(__e_acsl_gt_3 > 0,(char *)"Assertion",(char *)"main",
+                    (char *)"32 > -3",23);
     __gmpz_clear(__e_acsl_16);
     __gmpz_clear(__e_acsl_17);
     __gmpz_clear(__e_acsl_neg_2);
@@ -196,8 +196,8 @@ int main(void)
     __gmpz_init_set_si(__e_acsl_19,(long)13);
     __e_acsl_le_3 = __gmpz_cmp((__mpz_struct const *)(__e_acsl_neg_3),
                                (__mpz_struct const *)(__e_acsl_19));
-    e_acsl_assert(__e_acsl_le_3 <= 0,(char *)"Assertion",(char *)"main",
-                  (char *)"-12 <= 13",24);
+    __e_acsl_assert(__e_acsl_le_3 <= 0,(char *)"Assertion",(char *)"main",
+                    (char *)"-12 <= 13",24);
     __gmpz_clear(__e_acsl_18);
     __gmpz_clear(__e_acsl_neg_3);
     __gmpz_clear(__e_acsl_19);
@@ -214,8 +214,8 @@ int main(void)
     __gmpz_neg(__e_acsl_neg_4,(__mpz_struct const *)(__e_acsl_21));
     __e_acsl_ge_3 = __gmpz_cmp((__mpz_struct const *)(__e_acsl_20),
                                (__mpz_struct const *)(__e_acsl_neg_4));
-    e_acsl_assert(__e_acsl_ge_3 >= 0,(char *)"Assertion",(char *)"main",
-                  (char *)"123 >= -12",25);
+    __e_acsl_assert(__e_acsl_ge_3 >= 0,(char *)"Assertion",(char *)"main",
+                    (char *)"123 >= -12",25);
     __gmpz_clear(__e_acsl_20);
     __gmpz_clear(__e_acsl_21);
     __gmpz_clear(__e_acsl_neg_4);
@@ -230,8 +230,8 @@ int main(void)
     __gmpz_neg(__e_acsl_neg_5,(__mpz_struct const *)(__e_acsl_22));
     __e_acsl_eq_2 = __gmpz_cmp((__mpz_struct const *)(__e_acsl_neg_5),
                                (__mpz_struct const *)(__e_acsl_neg_5));
-    e_acsl_assert(__e_acsl_eq_2 == 0,(char *)"Assertion",(char *)"main",
-                  (char *)"-0xff == -0xff",26);
+    __e_acsl_assert(__e_acsl_eq_2 == 0,(char *)"Assertion",(char *)"main",
+                    (char *)"-0xff == -0xff",26);
     __gmpz_clear(__e_acsl_22);
     __gmpz_clear(__e_acsl_neg_5);
   }
@@ -247,8 +247,8 @@ int main(void)
     __gmpz_neg(__e_acsl_neg_6,(__mpz_struct const *)(__e_acsl_24));
     __e_acsl_ne_2 = __gmpz_cmp((__mpz_struct const *)(__e_acsl_23),
                                (__mpz_struct const *)(__e_acsl_neg_6));
-    e_acsl_assert(__e_acsl_ne_2 != 0,(char *)"Assertion",(char *)"main",
-                  (char *)"1 != -2",27);
+    __e_acsl_assert(__e_acsl_ne_2 != 0,(char *)"Assertion",(char *)"main",
+                    (char *)"1 != -2",27);
     __gmpz_clear(__e_acsl_23);
     __gmpz_clear(__e_acsl_24);
     __gmpz_clear(__e_acsl_neg_6);
diff --git a/src/plugins/e-acsl/tests/gmp/oracle/gen_integer_constant.c b/src/plugins/e-acsl/tests/gmp/oracle/gen_integer_constant.c
index 6d2f41ed3a8ba6b24f617f74f790f81e8f2a3524..0ef4de0651a91572189d6703fc9d36515e1bb95a 100644
--- a/src/plugins/e-acsl/tests/gmp/oracle/gen_integer_constant.c
+++ b/src/plugins/e-acsl/tests/gmp/oracle/gen_integer_constant.c
@@ -4,15 +4,17 @@ int main(void)
   int __retres;
   int x;
   /*@ assert 0 ≡ 0; */
-  e_acsl_assert(0 == 0,(char *)"Assertion",(char *)"main",(char *)"0 == 0",6);
+  __e_acsl_assert(0 == 0,(char *)"Assertion",(char *)"main",(char *)"0 == 0",
+                  6);
   x = 0;
   x ++;
   /*@ assert 0 ≢ 1; */
-  e_acsl_assert(0 != 1,(char *)"Assertion",(char *)"main",(char *)"0 != 1",8);
+  __e_acsl_assert(0 != 1,(char *)"Assertion",(char *)"main",(char *)"0 != 1",
+                  8);
   /*@ assert 1152921504606846975 ≡ 0xfffffffffffffff; */
-  e_acsl_assert(1152921504606846975 == 0xfffffffffffffff,(char *)"Assertion",
-                (char *)"main",
-                (char *)"1152921504606846975 == 0xfffffffffffffff",9);
+  __e_acsl_assert(1152921504606846975 == 0xfffffffffffffff,
+                  (char *)"Assertion",(char *)"main",
+                  (char *)"1152921504606846975 == 0xfffffffffffffff",9);
   /*@ assert
       0xffffffffffffffffffffffffffffffff ≡
       0xffffffffffffffffffffffffffffffff;
@@ -24,9 +26,9 @@ int main(void)
                         10);
     __e_acsl_eq = __gmpz_cmp((__mpz_struct const *)(__e_acsl),
                              (__mpz_struct const *)(__e_acsl));
-    e_acsl_assert(__e_acsl_eq == 0,(char *)"Assertion",(char *)"main",
-                  (char *)"0xffffffffffffffffffffffffffffffff == 0xffffffffffffffffffffffffffffffff",
-                  11);
+    __e_acsl_assert(__e_acsl_eq == 0,(char *)"Assertion",(char *)"main",
+                    (char *)"0xffffffffffffffffffffffffffffffff == 0xffffffffffffffffffffffffffffffff",
+                    11);
     __gmpz_clear(__e_acsl);
   }
   __retres = 0;
diff --git a/src/plugins/e-acsl/tests/gmp/oracle/gen_integer_constant2.c b/src/plugins/e-acsl/tests/gmp/oracle/gen_integer_constant2.c
index f2b66a870c7764902e2c5bb258c9fdac9b2194f3..63573f0eee6c3f2bcc6a78c3afd5d6c5260b5d6b 100644
--- a/src/plugins/e-acsl/tests/gmp/oracle/gen_integer_constant2.c
+++ b/src/plugins/e-acsl/tests/gmp/oracle/gen_integer_constant2.c
@@ -10,8 +10,8 @@ int main(void)
     __gmpz_init_set_si(__e_acsl,(long)0);
     __e_acsl_eq = __gmpz_cmp((__mpz_struct const *)(__e_acsl),
                              (__mpz_struct const *)(__e_acsl));
-    e_acsl_assert(__e_acsl_eq == 0,(char *)"Assertion",(char *)"main",
-                  (char *)"0 == 0",6);
+    __e_acsl_assert(__e_acsl_eq == 0,(char *)"Assertion",(char *)"main",
+                    (char *)"0 == 0",6);
     __gmpz_clear(__e_acsl);
   }
   x = 0;
@@ -25,8 +25,8 @@ int main(void)
     __gmpz_init_set_si(__e_acsl_3,(long)1);
     __e_acsl_ne = __gmpz_cmp((__mpz_struct const *)(__e_acsl_2),
                              (__mpz_struct const *)(__e_acsl_3));
-    e_acsl_assert(__e_acsl_ne != 0,(char *)"Assertion",(char *)"main",
-                  (char *)"0 != 1",8);
+    __e_acsl_assert(__e_acsl_ne != 0,(char *)"Assertion",(char *)"main",
+                    (char *)"0 != 1",8);
     __gmpz_clear(__e_acsl_2);
     __gmpz_clear(__e_acsl_3);
   }
@@ -37,8 +37,8 @@ int main(void)
     __gmpz_init_set_ui(__e_acsl_4,1152921504606846975);
     __e_acsl_eq_2 = __gmpz_cmp((__mpz_struct const *)(__e_acsl_4),
                                (__mpz_struct const *)(__e_acsl_4));
-    e_acsl_assert(__e_acsl_eq_2 == 0,(char *)"Assertion",(char *)"main",
-                  (char *)"1152921504606846975 == 0xfffffffffffffff",9);
+    __e_acsl_assert(__e_acsl_eq_2 == 0,(char *)"Assertion",(char *)"main",
+                    (char *)"1152921504606846975 == 0xfffffffffffffff",9);
     __gmpz_clear(__e_acsl_4);
   }
   /*@ assert
@@ -52,9 +52,9 @@ int main(void)
                         10);
     __e_acsl_eq_3 = __gmpz_cmp((__mpz_struct const *)(__e_acsl_5),
                                (__mpz_struct const *)(__e_acsl_5));
-    e_acsl_assert(__e_acsl_eq_3 == 0,(char *)"Assertion",(char *)"main",
-                  (char *)"0xffffffffffffffffffffffffffffffff == 0xffffffffffffffffffffffffffffffff",
-                  11);
+    __e_acsl_assert(__e_acsl_eq_3 == 0,(char *)"Assertion",(char *)"main",
+                    (char *)"0xffffffffffffffffffffffffffffffff == 0xffffffffffffffffffffffffffffffff",
+                    11);
     __gmpz_clear(__e_acsl_5);
   }
   __retres = 0;
diff --git a/src/plugins/e-acsl/tests/gmp/oracle/gen_longlong.c b/src/plugins/e-acsl/tests/gmp/oracle/gen_longlong.c
index bb5ed7df50b1de8c0212c810007bf57fadddf0bc..1224d72f1a1369c9b7b2206310b08e566814ad9b 100644
--- a/src/plugins/e-acsl/tests/gmp/oracle/gen_longlong.c
+++ b/src/plugins/e-acsl/tests/gmp/oracle/gen_longlong.c
@@ -54,8 +54,8 @@ int main(void)
                                     (__mpz_struct const *)(__e_acsl_3));
     __gmpz_init(__e_acsl_mod);
     /*@ assert E_ACSL: 2 ≢ 0; */
-    e_acsl_assert(! (__e_acsl_mod_guard == 0),(char *)"Assertion",
-                  (char *)"main",(char *)"2 == 0",17);
+    __e_acsl_assert(! (__e_acsl_mod_guard == 0),(char *)"Assertion",
+                    (char *)"main",(char *)"2 == 0",17);
     __gmpz_tdiv_r(__e_acsl_mod,(__mpz_struct const *)(__e_acsl_add),
                   (__mpz_struct const *)(__e_acsl));
     __e_acsl_4 = __gmpz_get_ui((__mpz_struct const *)(__e_acsl_mod));
@@ -63,8 +63,8 @@ int main(void)
         Value: ptr_comparison:
           \pointer_comparable((void *)__e_acsl_4, (void *)1);
     */
-    e_acsl_assert(__e_acsl_4 == 1,(char *)"Assertion",(char *)"main",
-                  (char *)"(2*x+1)%2 == 1",17);
+    __e_acsl_assert(__e_acsl_4 == 1,(char *)"Assertion",(char *)"main",
+                    (char *)"(2*x+1)%2 == 1",17);
     __gmpz_clear(__e_acsl);
     __gmpz_clear(__e_acsl_x);
     __gmpz_clear(__e_acsl_mul);
diff --git a/src/plugins/e-acsl/tests/gmp/oracle/gen_longlong2.c b/src/plugins/e-acsl/tests/gmp/oracle/gen_longlong2.c
index d802c69cd962ba894b7a7daf04095e3e6b47e7e9..e826153f1d5f7be53c675dea7e19502d3bf99cca 100644
--- a/src/plugins/e-acsl/tests/gmp/oracle/gen_longlong2.c
+++ b/src/plugins/e-acsl/tests/gmp/oracle/gen_longlong2.c
@@ -54,8 +54,8 @@ int main(void)
                                     (__mpz_struct const *)(__e_acsl_3));
     __gmpz_init(__e_acsl_mod);
     /*@ assert E_ACSL: 2 ≢ 0; */
-    e_acsl_assert(! (__e_acsl_mod_guard == 0),(char *)"Assertion",
-                  (char *)"main",(char *)"2 == 0",17);
+    __e_acsl_assert(! (__e_acsl_mod_guard == 0),(char *)"Assertion",
+                    (char *)"main",(char *)"2 == 0",17);
     __gmpz_tdiv_r(__e_acsl_mod,(__mpz_struct const *)(__e_acsl_add),
                   (__mpz_struct const *)(__e_acsl));
     __e_acsl_eq = __gmpz_cmp((__mpz_struct const *)(__e_acsl_mod),
@@ -64,8 +64,8 @@ int main(void)
         Value: ptr_comparison:
           \pointer_comparable((void *)__e_acsl_eq, (void *)0);
     */
-    e_acsl_assert(__e_acsl_eq == 0,(char *)"Assertion",(char *)"main",
-                  (char *)"(2*x+1)%2 == 1",17);
+    __e_acsl_assert(__e_acsl_eq == 0,(char *)"Assertion",(char *)"main",
+                    (char *)"(2*x+1)%2 == 1",17);
     __gmpz_clear(__e_acsl);
     __gmpz_clear(__e_acsl_x);
     __gmpz_clear(__e_acsl_mul);
diff --git a/src/plugins/e-acsl/tests/gmp/oracle/gen_not.c b/src/plugins/e-acsl/tests/gmp/oracle/gen_not.c
index 2edb5b20daf45f3570c94ee5da2cb14f7d8cd6ff..a41c3aa317a7caa671865430e822c35ccfc76a89 100644
--- a/src/plugins/e-acsl/tests/gmp/oracle/gen_not.c
+++ b/src/plugins/e-acsl/tests/gmp/oracle/gen_not.c
@@ -5,11 +5,12 @@ int main(void)
   int x;
   x = 0;
   /*@ assert x ≡ 0; */
-  e_acsl_assert(x == 0,(char *)"Assertion",(char *)"main",(char *)"x == 0",6);
+  __e_acsl_assert(x == 0,(char *)"Assertion",(char *)"main",(char *)"x == 0",
+                  6);
   if (x) 
     /*@ assert x ≢ 0; */
-    e_acsl_assert(x != 0,(char *)"Assertion",(char *)"main",(char *)"x != 0",
-                  7);
+    __e_acsl_assert(x != 0,(char *)"Assertion",(char *)"main",
+                    (char *)"x != 0",7);
   __retres = 0;
   return __retres;
 }
diff --git a/src/plugins/e-acsl/tests/gmp/oracle/gen_not2.c b/src/plugins/e-acsl/tests/gmp/oracle/gen_not2.c
index 6cb82de24738aab6174b7d8c9afcd5c5c1e6d010..a4e08db42387cd95b993a2db18b8ed1eb7c5b3c2 100644
--- a/src/plugins/e-acsl/tests/gmp/oracle/gen_not2.c
+++ b/src/plugins/e-acsl/tests/gmp/oracle/gen_not2.c
@@ -13,8 +13,8 @@ int main(void)
     __gmpz_init_set_si(__e_acsl,0L);
     __e_acsl_eq = __gmpz_cmp((__mpz_struct const *)(__e_acsl_x),
                              (__mpz_struct const *)(__e_acsl));
-    e_acsl_assert(__e_acsl_eq == 0,(char *)"Assertion",(char *)"main",
-                  (char *)"x == 0",6);
+    __e_acsl_assert(__e_acsl_eq == 0,(char *)"Assertion",(char *)"main",
+                    (char *)"x == 0",6);
     __gmpz_clear(__e_acsl_x);
     __gmpz_clear(__e_acsl);
   }
@@ -28,8 +28,8 @@ int main(void)
       __gmpz_init_set_si(__e_acsl_2,0L);
       __e_acsl_ne = __gmpz_cmp((__mpz_struct const *)(__e_acsl_x_2),
                                (__mpz_struct const *)(__e_acsl_2));
-      e_acsl_assert(__e_acsl_ne != 0,(char *)"Assertion",(char *)"main",
-                    (char *)"x != 0",7);
+      __e_acsl_assert(__e_acsl_ne != 0,(char *)"Assertion",(char *)"main",
+                      (char *)"x != 0",7);
       __gmpz_clear(__e_acsl_x_2);
       __gmpz_clear(__e_acsl_2);
     }
diff --git a/src/plugins/e-acsl/tests/gmp/oracle/gen_quantif.c b/src/plugins/e-acsl/tests/gmp/oracle/gen_quantif.c
index ec48f293b5a7ec7beb34bdb11f378f44ebc28d65..ebb70a9adb8eb536d6eb675da0da41e49bcd3585 100644
--- a/src/plugins/e-acsl/tests/gmp/oracle/gen_quantif.c
+++ b/src/plugins/e-acsl/tests/gmp/oracle/gen_quantif.c
@@ -23,9 +23,9 @@ int main(void)
       __e_acsl_x ++;
     }
     e_acsl_end_loop1: ;
-    e_acsl_assert(__e_acsl_forall,(char *)"Assertion",(char *)"main",
-                  (char *)"\\forall integer x; 0 <= x <= 1 ==> x == 0 || x == 1",
-                  9);
+    __e_acsl_assert(__e_acsl_forall,(char *)"Assertion",(char *)"main",
+                    (char *)"\\forall integer x; 0 <= x <= 1 ==> x == 0 || x == 1",
+                    9);
   }
   /*@ assert ∀ ℤ x; 0 < x ≤ 1 ⇒ x ≡ 1; */
   {
@@ -43,8 +43,8 @@ int main(void)
       __e_acsl_x_2 ++;
     }
     e_acsl_end_loop2: ;
-    e_acsl_assert(__e_acsl_forall_2,(char *)"Assertion",(char *)"main",
-                  (char *)"\\forall integer x; 0 < x <= 1 ==> x == 1",10);
+    __e_acsl_assert(__e_acsl_forall_2,(char *)"Assertion",(char *)"main",
+                    (char *)"\\forall integer x; 0 < x <= 1 ==> x == 1",10);
   }
   /*@ assert ∀ ℤ x; 0 < x < 1 ⇒ \false; */
   {
@@ -62,8 +62,8 @@ int main(void)
       __e_acsl_x_3 ++;
     }
     e_acsl_end_loop3: ;
-    e_acsl_assert(__e_acsl_forall_3,(char *)"Assertion",(char *)"main",
-                  (char *)"\\forall integer x; 0 < x < 1 ==> \\false",11);
+    __e_acsl_assert(__e_acsl_forall_3,(char *)"Assertion",(char *)"main",
+                    (char *)"\\forall integer x; 0 < x < 1 ==> \\false",11);
   }
   /*@ assert ∀ ℤ x; 0 ≤ x < 1 ⇒ x ≡ 0; */
   {
@@ -81,8 +81,8 @@ int main(void)
       __e_acsl_x_4 ++;
     }
     e_acsl_end_loop4: ;
-    e_acsl_assert(__e_acsl_forall_4,(char *)"Assertion",(char *)"main",
-                  (char *)"\\forall integer x; 0 <= x < 1 ==> x == 0",12);
+    __e_acsl_assert(__e_acsl_forall_4,(char *)"Assertion",(char *)"main",
+                    (char *)"\\forall integer x; 0 <= x < 1 ==> x == 0",12);
   }
   /*@ assert
       ∀ ℤ x, ℤ y, ℤ z;
@@ -115,9 +115,9 @@ int main(void)
       __e_acsl_x_5 ++;
     }
     e_acsl_end_loop5: ;
-    e_acsl_assert(__e_acsl_forall_5,(char *)"Assertion",(char *)"main",
-                  (char *)"\\forall integer x, integer y, integer z;\n  0 <= x < 2 && 0 <= y < 5 && 0 <= z <= y ==> x+z <= y+1",
-                  16);
+    __e_acsl_assert(__e_acsl_forall_5,(char *)"Assertion",(char *)"main",
+                    (char *)"\\forall integer x, integer y, integer z;\n  0 <= x < 2 && 0 <= y < 5 && 0 <= z <= y ==> x+z <= y+1",
+                    16);
   }
   /*@ assert ∃ int x; 0 ≤ x < 10 ∧ x ≡ 5; */
   {
@@ -135,8 +135,8 @@ int main(void)
       __e_acsl_x_6 ++;
     }
     e_acsl_end_loop6: ;
-    e_acsl_assert(__e_acsl_exists,(char *)"Assertion",(char *)"main",
-                  (char *)"\\exists int x; 0 <= x < 10 && x == 5",21);
+    __e_acsl_assert(__e_acsl_exists,(char *)"Assertion",(char *)"main",
+                    (char *)"\\exists int x; 0 <= x < 10 && x == 5",21);
   }
   /*@ assert
       ∀ int x;
@@ -179,9 +179,9 @@ int main(void)
       __e_acsl_x_7 ++;
     }
     e_acsl_end_loop8: ;
-    e_acsl_assert(__e_acsl_forall_6,(char *)"Assertion",(char *)"main",
-                  (char *)"\\forall int x;\n  0 <= x < 10 ==> x%2 == 0 ==> (\\exists integer y; 0 <= y <= x/2 && x == 2*y)",
-                  25);
+    __e_acsl_assert(__e_acsl_forall_6,(char *)"Assertion",(char *)"main",
+                    (char *)"\\forall int x;\n  0 <= x < 10 ==> x%2 == 0 ==> (\\exists integer y; 0 <= y <= x/2 && x == 2*y)",
+                    25);
   }
   __retres = 0;
   return __retres;
diff --git a/src/plugins/e-acsl/tests/gmp/oracle/gen_quantif2.c b/src/plugins/e-acsl/tests/gmp/oracle/gen_quantif2.c
index 13501b809ce76819f4eadbb3851bd0f32f37fce3..2bce3b4498a1fa4a77187499aeeac7d8e8a4a7cc 100644
--- a/src/plugins/e-acsl/tests/gmp/oracle/gen_quantif2.c
+++ b/src/plugins/e-acsl/tests/gmp/oracle/gen_quantif2.c
@@ -61,9 +61,9 @@ int main(void)
       }
     }
     e_acsl_end_loop1: ;
-    e_acsl_assert(__e_acsl_forall,(char *)"Assertion",(char *)"main",
-                  (char *)"\\forall integer x; 0 <= x <= 1 ==> x == 0 || x == 1",
-                  9);
+    __e_acsl_assert(__e_acsl_forall,(char *)"Assertion",(char *)"main",
+                    (char *)"\\forall integer x; 0 <= x <= 1 ==> x == 0 || x == 1",
+                    9);
     __gmpz_clear(__e_acsl_x);
   }
   /*@ assert ∀ ℤ x; 0 < x ≤ 1 ⇒ x ≡ 1; */
@@ -122,8 +122,8 @@ int main(void)
       }
     }
     e_acsl_end_loop2: ;
-    e_acsl_assert(__e_acsl_forall_2,(char *)"Assertion",(char *)"main",
-                  (char *)"\\forall integer x; 0 < x <= 1 ==> x == 1",10);
+    __e_acsl_assert(__e_acsl_forall_2,(char *)"Assertion",(char *)"main",
+                    (char *)"\\forall integer x; 0 < x <= 1 ==> x == 1",10);
     __gmpz_clear(__e_acsl_x_2);
   }
   /*@ assert ∀ ℤ x; 0 < x < 1 ⇒ \false; */
@@ -174,8 +174,8 @@ int main(void)
       }
     }
     e_acsl_end_loop3: ;
-    e_acsl_assert(__e_acsl_forall_3,(char *)"Assertion",(char *)"main",
-                  (char *)"\\forall integer x; 0 < x < 1 ==> \\false",11);
+    __e_acsl_assert(__e_acsl_forall_3,(char *)"Assertion",(char *)"main",
+                    (char *)"\\forall integer x; 0 < x < 1 ==> \\false",11);
     __gmpz_clear(__e_acsl_x_3);
   }
   /*@ assert ∀ ℤ x; 0 ≤ x < 1 ⇒ x ≡ 0; */
@@ -226,8 +226,8 @@ int main(void)
       }
     }
     e_acsl_end_loop4: ;
-    e_acsl_assert(__e_acsl_forall_4,(char *)"Assertion",(char *)"main",
-                  (char *)"\\forall integer x; 0 <= x < 1 ==> x == 0",12);
+    __e_acsl_assert(__e_acsl_forall_4,(char *)"Assertion",(char *)"main",
+                    (char *)"\\forall integer x; 0 <= x < 1 ==> x == 0",12);
     __gmpz_clear(__e_acsl_x_4);
   }
   /*@ assert
@@ -348,9 +348,9 @@ int main(void)
       }
     }
     e_acsl_end_loop5: ;
-    e_acsl_assert(__e_acsl_forall_5,(char *)"Assertion",(char *)"main",
-                  (char *)"\\forall integer x, integer y, integer z;\n  0 <= x < 2 && 0 <= y < 5 && 0 <= z <= y ==> x+z <= y+1",
-                  16);
+    __e_acsl_assert(__e_acsl_forall_5,(char *)"Assertion",(char *)"main",
+                    (char *)"\\forall integer x, integer y, integer z;\n  0 <= x < 2 && 0 <= y < 5 && 0 <= z <= y ==> x+z <= y+1",
+                    16);
     __gmpz_clear(__e_acsl_x_5);
     __gmpz_clear(__e_acsl_y);
     __gmpz_clear(__e_acsl_z);
@@ -403,8 +403,8 @@ int main(void)
       }
     }
     e_acsl_end_loop6: ;
-    e_acsl_assert(__e_acsl_exists,(char *)"Assertion",(char *)"main",
-                  (char *)"\\exists int x; 0 <= x < 10 && x == 5",21);
+    __e_acsl_assert(__e_acsl_exists,(char *)"Assertion",(char *)"main",
+                    (char *)"\\exists int x; 0 <= x < 10 && x == 5",21);
     __gmpz_clear(__e_acsl_x_6);
   }
   /*@ assert
@@ -446,8 +446,8 @@ int main(void)
                                         (__mpz_struct const *)(__e_acsl_33));
         __gmpz_init(__e_acsl_mod);
         /*@ assert E_ACSL: 2 ≢ 0; */
-        e_acsl_assert(! (__e_acsl_mod_guard == 0),(char *)"Assertion",
-                      (char *)"main",(char *)"2 == 0",26);
+        __e_acsl_assert(! (__e_acsl_mod_guard == 0),(char *)"Assertion",
+                        (char *)"main",(char *)"2 == 0",26);
         __gmpz_tdiv_r(__e_acsl_mod,(__mpz_struct const *)(__e_acsl_x_7),
                       (__mpz_struct const *)(__e_acsl_32));
         __e_acsl_eq_6 = __gmpz_cmp((__mpz_struct const *)(__e_acsl_mod),
@@ -477,8 +477,9 @@ int main(void)
                                               (__mpz_struct const *)(__e_acsl_37));
               __gmpz_init(__e_acsl_div);
               /*@ assert E_ACSL: 2 ≢ 0; */
-              e_acsl_assert(! (__e_acsl_div_guard == 0),(char *)"Assertion",
-                            (char *)"main",(char *)"2 == 0",26);
+              __e_acsl_assert(! (__e_acsl_div_guard == 0),
+                              (char *)"Assertion",(char *)"main",
+                              (char *)"2 == 0",26);
               __gmpz_tdiv_q(__e_acsl_div,
                             (__mpz_struct const *)(__e_acsl_x_7),
                             (__mpz_struct const *)(__e_acsl_36));
@@ -547,9 +548,9 @@ int main(void)
       }
     }
     e_acsl_end_loop8: ;
-    e_acsl_assert(__e_acsl_forall_6,(char *)"Assertion",(char *)"main",
-                  (char *)"\\forall int x;\n  0 <= x < 10 ==> x%2 == 0 ==> (\\exists integer y; 0 <= y <= x/2 && x == 2*y)",
-                  25);
+    __e_acsl_assert(__e_acsl_forall_6,(char *)"Assertion",(char *)"main",
+                    (char *)"\\forall int x;\n  0 <= x < 10 ==> x%2 == 0 ==> (\\exists integer y; 0 <= y <= x/2 && x == 2*y)",
+                    25);
     __gmpz_clear(__e_acsl_x_7);
   }
   __retres = 0;
diff --git a/src/plugins/e-acsl/tests/gmp/oracle/integer_constant.0.res.oracle b/src/plugins/e-acsl/tests/gmp/oracle/integer_constant.0.res.oracle
index 294e77a267cfd533f8e1b334baa024b8b3bff780..72e347a9dd86cdcbf3b17f1bbed69afe26809b6b 100644
--- a/src/plugins/e-acsl/tests/gmp/oracle/integer_constant.0.res.oracle
+++ b/src/plugins/e-acsl/tests/gmp/oracle/integer_constant.0.res.oracle
@@ -9,10 +9,10 @@
   __fc_heap_status ∈ [--..--]
   __e_acsl_init ∈ [--..--]
   __e_acsl_internal_heap ∈ [--..--]
-  __memory_size ∈ [--..--]
-[value] using specification for function e_acsl_assert
+  __heap_size ∈ [--..--]
+[value] using specification for function __e_acsl_assert
 [value] using specification for function __gmpz_init_set_str
 [value] using specification for function __gmpz_cmp
-FRAMAC_SHARE/e-acsl/e_acsl.h:34:[value] warning: function e_acsl_assert: precondition got status unknown.
+FRAMAC_SHARE/e-acsl/e_acsl.h:34:[value] warning: function __e_acsl_assert: precondition got status unknown.
 [value] using specification for function __gmpz_clear
 [value] done for function main
diff --git a/src/plugins/e-acsl/tests/gmp/oracle/integer_constant.1.res.oracle b/src/plugins/e-acsl/tests/gmp/oracle/integer_constant.1.res.oracle
index c0fcf39271fdef899d36dfcdab248aac26afa47d..0902645baf685a92604378cae9b4e69668f47bb2 100644
--- a/src/plugins/e-acsl/tests/gmp/oracle/integer_constant.1.res.oracle
+++ b/src/plugins/e-acsl/tests/gmp/oracle/integer_constant.1.res.oracle
@@ -9,11 +9,11 @@
   __fc_heap_status ∈ [--..--]
   __e_acsl_init ∈ [--..--]
   __e_acsl_internal_heap ∈ [--..--]
-  __memory_size ∈ [--..--]
+  __heap_size ∈ [--..--]
 [value] using specification for function __gmpz_init_set_si
 [value] using specification for function __gmpz_cmp
-[value] using specification for function e_acsl_assert
-FRAMAC_SHARE/e-acsl/e_acsl.h:34:[value] warning: function e_acsl_assert: precondition got status unknown.
+[value] using specification for function __e_acsl_assert
+FRAMAC_SHARE/e-acsl/e_acsl.h:34:[value] warning: function __e_acsl_assert: precondition got status unknown.
 [value] using specification for function __gmpz_clear
 [value] using specification for function __gmpz_init_set_ui
 [value] using specification for function __gmpz_init_set_str
diff --git a/src/plugins/e-acsl/tests/gmp/oracle/longlong.0.res.oracle b/src/plugins/e-acsl/tests/gmp/oracle/longlong.0.res.oracle
index 2df465e42e2e2d1891a513ebb2dade4088a10d37..35705b2fbe99a41bb36200de18473273ae961c9e 100644
--- a/src/plugins/e-acsl/tests/gmp/oracle/longlong.0.res.oracle
+++ b/src/plugins/e-acsl/tests/gmp/oracle/longlong.0.res.oracle
@@ -9,7 +9,7 @@
   __fc_heap_status ∈ [--..--]
   __e_acsl_init ∈ [--..--]
   __e_acsl_internal_heap ∈ [--..--]
-  __memory_size ∈ [--..--]
+  __heap_size ∈ [--..--]
 tests/gmp/longlong.i:9:[value] warning: recursive call during value analysis
                  of my_pow (my_pow <- my_pow :: tests/gmp/longlong.i:16 <- main).
                  Using specification of my_pow.
@@ -25,8 +25,8 @@ FRAMAC_SHARE/e-acsl/e_acsl_gmp.h:82:[value] warning: function __gmpz_import: pre
 [value] using specification for function __gmpz_mul
 [value] using specification for function __gmpz_add
 [value] using specification for function __gmpz_cmp
-[value] using specification for function e_acsl_assert
-FRAMAC_SHARE/e-acsl/e_acsl.h:34:[value] warning: function e_acsl_assert: precondition got status unknown.
+[value] using specification for function __e_acsl_assert
+FRAMAC_SHARE/e-acsl/e_acsl.h:34:[value] warning: function __e_acsl_assert: precondition got status unknown.
 [value] using specification for function __gmpz_tdiv_r
 [value] using specification for function __gmpz_get_ui
 tests/gmp/longlong.i:17:[kernel] warning: pointer comparison.
diff --git a/src/plugins/e-acsl/tests/gmp/oracle/longlong.1.res.oracle b/src/plugins/e-acsl/tests/gmp/oracle/longlong.1.res.oracle
index 191f28428986a29981d28d41fd18a352c0150a28..5528763cc8e38fec6631bd155a1c487876cfb158 100644
--- a/src/plugins/e-acsl/tests/gmp/oracle/longlong.1.res.oracle
+++ b/src/plugins/e-acsl/tests/gmp/oracle/longlong.1.res.oracle
@@ -9,7 +9,7 @@
   __fc_heap_status ∈ [--..--]
   __e_acsl_init ∈ [--..--]
   __e_acsl_internal_heap ∈ [--..--]
-  __memory_size ∈ [--..--]
+  __heap_size ∈ [--..--]
 tests/gmp/longlong.i:9:[value] warning: recursive call during value analysis
                  of my_pow (my_pow <- my_pow :: tests/gmp/longlong.i:16 <- main).
                  Using specification of my_pow.
@@ -25,8 +25,8 @@ FRAMAC_SHARE/e-acsl/e_acsl_gmp.h:82:[value] warning: function __gmpz_import: pre
 [value] using specification for function __gmpz_mul
 [value] using specification for function __gmpz_add
 [value] using specification for function __gmpz_cmp
-[value] using specification for function e_acsl_assert
-FRAMAC_SHARE/e-acsl/e_acsl.h:34:[value] warning: function e_acsl_assert: precondition got status unknown.
+[value] using specification for function __e_acsl_assert
+FRAMAC_SHARE/e-acsl/e_acsl.h:34:[value] warning: function __e_acsl_assert: precondition got status unknown.
 [value] using specification for function __gmpz_tdiv_r
 tests/gmp/longlong.i:17:[kernel] warning: pointer comparison.
                   assert \pointer_comparable((void *)__e_acsl_eq, (void *)0);
diff --git a/src/plugins/e-acsl/tests/gmp/oracle/not.0.res.oracle b/src/plugins/e-acsl/tests/gmp/oracle/not.0.res.oracle
index f0d9dbf6c715c6fb6e5314a8a737295cb93f35a9..f98f864d40ed796f04c2593c72ac29d8f3f852d2 100644
--- a/src/plugins/e-acsl/tests/gmp/oracle/not.0.res.oracle
+++ b/src/plugins/e-acsl/tests/gmp/oracle/not.0.res.oracle
@@ -9,6 +9,6 @@
   __fc_heap_status ∈ [--..--]
   __e_acsl_init ∈ [--..--]
   __e_acsl_internal_heap ∈ [--..--]
-  __memory_size ∈ [--..--]
-[value] using specification for function e_acsl_assert
+  __heap_size ∈ [--..--]
+[value] using specification for function __e_acsl_assert
 [value] done for function main
diff --git a/src/plugins/e-acsl/tests/gmp/oracle/not.1.res.oracle b/src/plugins/e-acsl/tests/gmp/oracle/not.1.res.oracle
index af524ffc3d7df40abb2b39677fbbaa828e6cb126..b6597a3f39be3514e2960533ed29bdfceb38176a 100644
--- a/src/plugins/e-acsl/tests/gmp/oracle/not.1.res.oracle
+++ b/src/plugins/e-acsl/tests/gmp/oracle/not.1.res.oracle
@@ -9,10 +9,10 @@
   __fc_heap_status ∈ [--..--]
   __e_acsl_init ∈ [--..--]
   __e_acsl_internal_heap ∈ [--..--]
-  __memory_size ∈ [--..--]
+  __heap_size ∈ [--..--]
 [value] using specification for function __gmpz_init_set_si
 [value] using specification for function __gmpz_cmp
-[value] using specification for function e_acsl_assert
-FRAMAC_SHARE/e-acsl/e_acsl.h:34:[value] warning: function e_acsl_assert: precondition got status unknown.
+[value] using specification for function __e_acsl_assert
+FRAMAC_SHARE/e-acsl/e_acsl.h:34:[value] warning: function __e_acsl_assert: precondition got status unknown.
 [value] using specification for function __gmpz_clear
 [value] done for function main
diff --git a/src/plugins/e-acsl/tests/gmp/oracle/quantif.0.res.oracle b/src/plugins/e-acsl/tests/gmp/oracle/quantif.0.res.oracle
index 2340b024720e09ebddb01c57525579a6d1c14884..66012aa1b4a7ecf99c6d7ea8924a20fbc20302d9 100644
--- a/src/plugins/e-acsl/tests/gmp/oracle/quantif.0.res.oracle
+++ b/src/plugins/e-acsl/tests/gmp/oracle/quantif.0.res.oracle
@@ -9,10 +9,10 @@
   __fc_heap_status ∈ [--..--]
   __e_acsl_init ∈ [--..--]
   __e_acsl_internal_heap ∈ [--..--]
-  __memory_size ∈ [--..--]
+  __heap_size ∈ [--..--]
 tests/gmp/quantif.i:9:[value] warning: assertion got status unknown.
 tests/gmp/quantif.i:9:[value] entering loop for the first time
-[value] using specification for function e_acsl_assert
+[value] using specification for function __e_acsl_assert
 tests/gmp/quantif.i:10:[value] warning: assertion got status unknown.
 tests/gmp/quantif.i:10:[value] entering loop for the first time
 tests/gmp/quantif.i:11:[value] warning: assertion got status unknown.
@@ -21,7 +21,7 @@ tests/gmp/quantif.i:12:[value] warning: assertion got status unknown.
 tests/gmp/quantif.i:12:[value] entering loop for the first time
 tests/gmp/quantif.i:16:[value] warning: assertion got status unknown.
 tests/gmp/quantif.i:16:[value] entering loop for the first time
-FRAMAC_SHARE/e-acsl/e_acsl.h:34:[value] warning: function e_acsl_assert: precondition got status unknown.
+FRAMAC_SHARE/e-acsl/e_acsl.h:34:[value] warning: function __e_acsl_assert: precondition got status unknown.
 tests/gmp/quantif.i:21:[value] warning: assertion got status unknown.
 tests/gmp/quantif.i:21:[value] entering loop for the first time
 tests/gmp/quantif.i:25:[value] warning: assertion got status unknown.
diff --git a/src/plugins/e-acsl/tests/gmp/oracle/quantif.1.res.oracle b/src/plugins/e-acsl/tests/gmp/oracle/quantif.1.res.oracle
index c0efb2c290dd8b43e2e904433be4e5d461c33a5b..36020f554bf807b63bcda828e93672105a8c13d7 100644
--- a/src/plugins/e-acsl/tests/gmp/oracle/quantif.1.res.oracle
+++ b/src/plugins/e-acsl/tests/gmp/oracle/quantif.1.res.oracle
@@ -9,7 +9,7 @@
   __fc_heap_status ∈ [--..--]
   __e_acsl_init ∈ [--..--]
   __e_acsl_internal_heap ∈ [--..--]
-  __memory_size ∈ [--..--]
+  __heap_size ∈ [--..--]
 tests/gmp/quantif.i:9:[value] warning: assertion got status unknown.
 [value] using specification for function __gmpz_init
 [value] using specification for function __gmpz_init_set_si
@@ -18,8 +18,8 @@ tests/gmp/quantif.i:9:[value] warning: assertion got status unknown.
 tests/gmp/quantif.i:9:[value] entering loop for the first time
 [value] using specification for function __gmpz_cmp
 [value] using specification for function __gmpz_add
-[value] using specification for function e_acsl_assert
-FRAMAC_SHARE/e-acsl/e_acsl.h:34:[value] warning: function e_acsl_assert: precondition got status unknown.
+[value] using specification for function __e_acsl_assert
+FRAMAC_SHARE/e-acsl/e_acsl.h:34:[value] warning: function __e_acsl_assert: precondition got status unknown.
 tests/gmp/quantif.i:10:[value] warning: assertion got status unknown.
 tests/gmp/quantif.i:10:[value] entering loop for the first time
 tests/gmp/quantif.i:11:[value] warning: assertion got status unknown.
diff --git a/src/plugins/e-acsl/tests/no-main/oracle/empty.res.oracle b/src/plugins/e-acsl/tests/no-main/oracle/empty.res.oracle
index d7c3f4370ac66a3520fcaf735b2852265dd084ae..03e22d9d763b4370f240003d5ad16dc735ff6000 100644
--- a/src/plugins/e-acsl/tests/no-main/oracle/empty.res.oracle
+++ b/src/plugins/e-acsl/tests/no-main/oracle/empty.res.oracle
@@ -2,9 +2,7 @@
 [kernel] Parsing FRAMAC_SHARE/e-acsl/e_acsl.h (with preprocessing)
 [kernel] Parsing FRAMAC_SHARE/e-acsl/e_acsl_gmp_types.h (with preprocessing)
 [kernel] Parsing FRAMAC_SHARE/e-acsl/e_acsl_gmp.h (with preprocessing)
-[kernel] Parsing FRAMAC_SHARE/e-acsl/memory_model/e_acsl_mmodel_api.h (with preprocessing)
-[kernel] Parsing FRAMAC_SHARE/e-acsl/memory_model/e_acsl_bittree.h (with preprocessing)
-[kernel] Parsing FRAMAC_SHARE/e-acsl/memory_model/e_acsl_mmodel.h (with preprocessing)
+[kernel] Parsing FRAMAC_SHARE/e-acsl/e_acsl_mmodel_api.h (with preprocessing)
 [kernel] Parsing tests/no-main/empty.i (no preprocessing)
 [e-acsl] beginning translation.
 [e-acsl] warning: cannot find entry point `main'.
diff --git a/src/plugins/e-acsl/visit.ml b/src/plugins/e-acsl/visit.ml
index ca8751a1a82c709e214c87a8287dd3d28c7f9153..e0c7ba7b38196c123f80b3908338f0d33371cf8a 100644
--- a/src/plugins/e-acsl/visit.ml
+++ b/src/plugins/e-acsl/visit.ml
@@ -85,21 +85,21 @@ class e_acsl_visitor prj generate = object (self)
 
   val mutable is_initializer = false
   (* Global flag set to [true] if a currently visited node
-    belongs to a global initializer and set to [false] otherwise *)
+     belongs to a global initializer and set to [false] otherwise *)
 
   val global_vars: init option Varinfo.Hashtbl.t = Varinfo.Hashtbl.create 7
   (* Hashtable mapping global variables (as Cil_type.varinfo) to their
-   initializers aiming to capture memory allocated by global variable
-   declarations and initilisation. At runtime the memory blocks corresponding
-   to space occupied by global are recorded via a call to
-   [__e_acsl_memory_init] instrumented before (almost) anything else in the
-   [main] function. Each variable stored by [global_vars] will be handled in
-   the body of [__e_acsl_memory_init] as follows:
-      __store_block(...); // Record a memory block used by the variable
-      __full_init(...);   // ... and mark it as initialized memory
-
-    NOTE: In [global_vars] keys belong to the original project while values
-    belong to the new one *)
+     initializers aiming to capture memory allocated by global variable
+     declarations and initilisation. At runtime the memory blocks corresponding
+     to space occupied by global are recorded via a call to
+     [__e_acsl_globals_init] instrumented at the beginning of the
+     [main] function. Each variable stored by [global_vars] will be handled in
+     the body of [__e_acsl_globals_init] as follows:
+     __store_block(...); // Record a memory block used by the variable
+     __full_init(...);   // ... and mark it as initialized memory
+
+     NOTE: In [global_vars] keys belong to the original project while values
+     belong to the new one *)
 
   method private reset_env () =
     function_env := Env.empty (self :> Visitor.frama_c_visitor)
@@ -109,12 +109,12 @@ class e_acsl_visitor prj generate = object (self)
        right place to do this: it is still before visiting, but after
        that the visitor internals reset all of them :-(. *)
     let cur = Project.current () in
-    let selection = 
-      State_selection.of_list 
+    let selection =
+      State_selection.of_list
         [ Options.Gmp_only.self; Options.Check.self; Options.Full_mmodel.self;
           Kernel.SignedOverflow.self; Kernel.UnsignedOverflow.self;
           Kernel.SignedDowncast.self; Kernel.UnsignedDowncast.self;
-          Kernel.Machdep.self ] 
+          Kernel.Machdep.self ]
     in
     if generate then Project.copy ~selection ~src:cur prj;
     Cil.DoChildrenPost
@@ -136,19 +136,19 @@ class e_acsl_visitor prj generate = object (self)
           if must_init then begin
             let build_initializer () =
               Options.feedback ~dkey ~level:2 "building global initializer.";
-              let return = 
+              let return =
                 Cil.mkStmt ~valid_sid:true (Return(None, Location.unknown))
               in
               let env = Env.push !function_env in
-              let stmts, env = 
+              let stmts, env =
                 Varinfo.Hashtbl.fold_sorted
-                  (fun old_vi i (stmts, env) -> 
+                  (fun old_vi i (stmts, env) ->
                     let new_vi = Cil.get_varinfo self#behavior old_vi in
                     (* [model] creates an initialization statement
-                    of the form [__full_init(...)]) for every global
-                    variable which needs to be tracked and is not a Frama-C
-                    builtin. Further the statement is appended to the provided
-                    list of statements ([blk]) *)
+                       of the form [__full_init(...)] for every global
+                       variable which needs to be tracked and is not a Frama-C
+                       builtin. Further the statement is appended to the
+                       provided list of statements ([blk]) *)
                     let model blk =
                       if Mmodel_analysis.must_model_vi old_vi then
                         let blk =
@@ -165,7 +165,7 @@ class e_acsl_visitor prj generate = object (self)
                     match i with
                     | None -> model stmts, env
                     | Some (CompoundInit _) -> assert false
-                    | Some (SingleInit e) -> 
+                    | Some (SingleInit e) ->
                       let _, env = self#literal_string env e in stmts, env)
                   global_vars
                   ([ return ], env)
@@ -180,7 +180,7 @@ class e_acsl_visitor prj generate = object (self)
                     Cil.mkStmtOneInstr ~valid_sid:true (Set(Cil.var vi, e, loc))
                     :: Misc.mk_store_stmt ~str_size vi
                     :: Misc.mk_full_init_stmt ~addr:false vi
-                    :: Misc.mk_literal_string vi
+                    :: Misc.mk_readonly vi
                     :: stmts)
                   stmts
               in
@@ -193,9 +193,9 @@ class e_acsl_visitor prj generate = object (self)
               function_env := env;
               let stmts = Cil.mkStmt ~valid_sid:true (Block b) :: stmts in
               let blk = Cil.mkBlock stmts in
-              (* Create [__e_acsl_memory_init] function with definition
+              (* Create [__e_acsl_globals_init] function with definition
                for initialization of global variables *)
-              let fname = "__e_acsl_memory_init" in
+              let fname = "__e_acsl_globals_init" in
               let vi =
                 Cil.makeGlobalVar ~source:true
                   fname
@@ -218,32 +218,33 @@ class e_acsl_visitor prj generate = object (self)
               in
               self#add_generated_variables_in_function fundec;
               let fct = Definition(fundec, Location.unknown) in
-             (* Create and register [__e_acsl_memory_init] as kernel function *)
+              (* Create and register [__e_acsl_globals_init] as kernel
+                 function *)
               let kf =
-                { fundec = fct; return_stmt = Some return; spec = spec } 
+                { fundec = fct; return_stmt = Some return; spec = spec }
               in
               Globals.Functions.register kf;
-              Globals.Functions.replace_by_definition 
+              Globals.Functions.replace_by_definition
                 spec fundec Location.unknown;
               let cil_fct = GFun(fundec, Location.unknown) in
               if Mmodel_analysis.use_model () then
                 match main_fct with
                 | Some main ->
                   let exp = Cil.evar ~loc:Location.unknown vi in
-                  (* Create [__e_acsl_memory_init();] call *)
-                  let stmt = 
-                    Cil.mkStmtOneInstr ~valid_sid:true 
+                  (* Create [__e_acsl_globals_init();] call *)
+                  let stmt =
+                    Cil.mkStmtOneInstr ~valid_sid:true
                       (Call(None, exp, [], Location.unknown))
                   in
                   vi.vreferenced <- true;
-                  (* Add [__e_acsl_memory_init();] call as the first statement
+                  (* Add [__e_acsl_globals_init();] call as the first statement
                    to the [main] function *)
                   main.sbody.bstmts <- stmt :: main.sbody.bstmts;
                   let new_globals =
                     List.fold_right
                       (fun g acc -> match g with
                       | GFun({ svar = vi }, _)
-                          when Varinfo.equal vi main.svar -> 
+                          when Varinfo.equal vi main.svar ->
                         acc
                       | _ -> g :: acc)
                       f.globals
@@ -258,46 +259,53 @@ class e_acsl_visitor prj generate = object (self)
                       new_globals
                   in
                   f.globals <- new_globals
-                | None -> 
+                | None ->
                   Kernel.warning "@[no entry point specified:@ \
-you must call function `%s' and `__e_acsl_memory_clean by yourself.@]" 
+you must call function `%s' and `__e_acsl_memory_clean by yourself.@]"
                     fname;
                   f.globals <- f.globals @ [ cil_fct ]
             in
             Project.on prj build_initializer ()
           end; (* must_init *)
-	  let must_init_args = match main_fct with
-	    | Some main ->
-	       let charPtrPtrType = TPtr(Cil.charPtrType,[]) in
-	       (* this might not be valid in an embedded environment,
-		  where int/char** arguments is not necessarily
-		  valid *)
-	       (match main.sformals with
-               | vi1 :: vi2 :: _ when
-                    vi1.vtype = Cil.intType
-                    && vi2.vtype = charPtrPtrType
-                      && Mmodel_analysis.must_model_vi vi2 -> true
-               | _ -> false)
-	    | None -> false
-	  in
-	  if must_init_args then begin
-	    (* init memory store, and then add program arguments if
-	       there are any. must be called before global variables
-	       are initialized. *)
-	    let build_args_initializer () =
-	      let main = Extlib.the main_fct in
-	      let loc = Location.unknown in
-              let args = List.map Cil.evar main.sformals in
-	      let call = Misc.mk_call loc "__init_args" args in
-	      main.sbody.bstmts <- call :: main.sbody.bstmts;
+          (* Add a call to "__e_acsl_memory_init" that initializes memory
+             storage and potentially records program arguments. Parameters to
+             the "__e_acsl_memory_init" are addresses of program arguments or
+             NULLs if main is declared without arguments. *)
+          let build_mmodel_initializer () =
+            let loc = Location.unknown in
+            let nulls = [ Cil.zero loc ; Cil.zero loc ] in
+            let handle_main main =
+              let args =
+                (* record arguments only if the second has a pointer type, so a
+                   argument strings can be recorded. This is sufficient to
+                   capture C99 compliant arguments and GCC extensions with
+                   environ. *)
+                match main.sformals with
+                | [] ->
+                  (* no arguments to main given *)
+                  nulls
+                | _argc :: argv :: _ when Cil.isPointerType argv.vtype ->
+                  (* grab addresses of arguments for a call to the main
+                     initialization function, i.e., [__e_acsl_memory_init] *)
+                  List.map Cil.mkAddrOfVi main.sformals;
+                | _ :: _ ->
+                  (* some non-standard arguments. *)
+                  nulls
+              in
+              let ptr_size = Cil.sizeOf loc Cil.voidPtrType in
+              let args = args @ [ ptr_size ] in
+              let init = Misc.mk_call loc "__e_acsl_memory_init" args in
+              main.sbody.bstmts <- init :: main.sbody.bstmts
             in
-            Project.on prj build_args_initializer ()
-	  end;
-	  (* reset copied states at the end to be observationally
-	     equivalent to a standard visitor. *)
-	  Project.clear ~selection ~project:prj ();
-	 end; (* generate *)
-	 f)
+            Extlib.may handle_main main_fct
+          in
+          if Mmodel_analysis.use_model () then
+            Project.on prj build_mmodel_initializer ();
+            (* reset copied states at the end to be observationally
+               equivalent to a standard visitor. *)
+          Project.clear ~selection ~project:prj ();
+        end; (* generate *)
+        f)
 
   method !vglob_aux = function
   | GVarDecl(vi, _) | GVar(vi, _, _)