diff --git a/src/plugins/e-acsl/Makefile.in b/src/plugins/e-acsl/Makefile.in
index 06edca935965881a93c24f23401dc0211922ed8e..eb3472ecd74ebbc3e080aca963a45add033a0e97 100644
--- a/src/plugins/e-acsl/Makefile.in
+++ b/src/plugins/e-acsl/Makefile.in
@@ -55,7 +55,7 @@ SRC_PROJECT_INITIALIZER:=\
 SRC_ANALYSES:= \
 	rte \
 	literal_strings \
-	mmodel_analysis \
+	memory_tracking \
 	exit_points \
 	lscope \
 	interval \
@@ -73,7 +73,7 @@ SRC_CODE_GENERATOR:= \
 	loops \
 	quantif \
 	at_with_lscope \
-	mmodel_translate \
+	memory_translate \
 	logic_functions \
 	logic_array \
 	translate \
@@ -114,9 +114,9 @@ PLUGIN_DEPENDENCIES:= RteGen
 EACSL_PLUGIN_DIR:=$(PLUGIN_DIR)
 
 # Suppress a spurious warning with OCaml >= 4.04.0
-$(EACSL_PLUGIN_DIR)/src/analyses/mmodel_analysis.cmo \
-$(EACSL_PLUGIN_DIR)/src/analyses/mmodel_analysis.cmi: E_ACSL_BFLAGS+= -w -60
-$(EACSL_PLUGIN_DIR)/src/analyses/mmodel_analysis.cmx: E_ACSL_OFLAGS+= -w -60
+$(EACSL_PLUGIN_DIR)/src/analyses/memory_tracking.cmo \
+$(EACSL_PLUGIN_DIR)/src/analyses/memory_tracking.cmi: E_ACSL_BFLAGS+= -w -60
+$(EACSL_PLUGIN_DIR)/src/analyses/memory_tracking.cmx: E_ACSL_OFLAGS+= -w -60
 
 ###############
 # Local Flags #
@@ -160,7 +160,7 @@ PLUGIN_TESTS_DIRS := \
 	arith \
 	memory \
 	gmp-only \
-	full-mmodel \
+	full-mtracking \
 	format \
 	temporal \
 	special
@@ -291,8 +291,8 @@ EACSL_TEST_FILES = \
 	tests/test_config_ci.in \
 	tests/gmp-only/test_config_ci \
 	tests/gmp-only/test_config_dev \
-	tests/full-mmodel/test_config_ci \
-	tests/full-mmodel/test_config_dev \
+	tests/full-mtracking/test_config_ci \
+	tests/full-mtracking/test_config_dev \
 	tests/builtin/test_config_ci \
 	tests/builtin/test_config_dev \
 	tests/temporal/test_config_ci \
diff --git a/src/plugins/e-acsl/headers/header_spec.txt b/src/plugins/e-acsl/headers/header_spec.txt
index f5d1c3fe39a487370af0db226395887366102ade..3a8a5772d08405beb10cd4297ea7c93861d6426e 100644
--- a/src/plugins/e-acsl/headers/header_spec.txt
+++ b/src/plugins/e-acsl/headers/header_spec.txt
@@ -44,8 +44,8 @@ src/analyses/literal_strings.ml: CEA_LGPL_OR_PROPRIETARY.E_ACSL
 src/analyses/literal_strings.mli: CEA_LGPL_OR_PROPRIETARY.E_ACSL
 src/analyses/lscope.ml: CEA_LGPL_OR_PROPRIETARY.E_ACSL
 src/analyses/lscope.mli: CEA_LGPL_OR_PROPRIETARY.E_ACSL
-src/analyses/mmodel_analysis.ml: CEA_LGPL_OR_PROPRIETARY.E_ACSL
-src/analyses/mmodel_analysis.mli: CEA_LGPL_OR_PROPRIETARY.E_ACSL
+src/analyses/memory_tracking.ml: CEA_LGPL_OR_PROPRIETARY.E_ACSL
+src/analyses/memory_tracking.mli: CEA_LGPL_OR_PROPRIETARY.E_ACSL
 src/analyses/rte.ml: CEA_LGPL_OR_PROPRIETARY.E_ACSL
 src/analyses/rte.mli: CEA_LGPL_OR_PROPRIETARY.E_ACSL
 src/analyses/typing.ml: CEA_LGPL_OR_PROPRIETARY.E_ACSL
@@ -72,8 +72,8 @@ src/code_generator/loops.ml: CEA_LGPL_OR_PROPRIETARY.E_ACSL
 src/code_generator/loops.mli: CEA_LGPL_OR_PROPRIETARY.E_ACSL
 src/code_generator/memory_observer.ml: CEA_LGPL_OR_PROPRIETARY.E_ACSL
 src/code_generator/memory_observer.mli: CEA_LGPL_OR_PROPRIETARY.E_ACSL
-src/code_generator/mmodel_translate.ml: CEA_LGPL_OR_PROPRIETARY.E_ACSL
-src/code_generator/mmodel_translate.mli: CEA_LGPL_OR_PROPRIETARY.E_ACSL
+src/code_generator/memory_translate.ml: CEA_LGPL_OR_PROPRIETARY.E_ACSL
+src/code_generator/memory_translate.mli: CEA_LGPL_OR_PROPRIETARY.E_ACSL
 src/code_generator/quantif.ml: CEA_LGPL_OR_PROPRIETARY.E_ACSL
 src/code_generator/quantif.mli: CEA_LGPL_OR_PROPRIETARY.E_ACSL
 src/code_generator/rational.ml: CEA_LGPL_OR_PROPRIETARY.E_ACSL
@@ -113,8 +113,8 @@ tests/builtin/test_config_ci: .ignore
 tests/builtin/test_config_dev: .ignore
 tests/format/test_config_ci: .ignore
 tests/format/test_config_dev: .ignore
-tests/full-mmodel/test_config_ci: .ignore
-tests/full-mmodel/test_config_dev: .ignore
+tests/full-mtracking/test_config_ci: .ignore
+tests/full-mtracking/test_config_dev: .ignore
 tests/gmp-only/test_config_ci: .ignore
 tests/gmp-only/test_config_dev: .ignore
 tests/temporal/test_config_ci: .ignore
diff --git a/src/plugins/e-acsl/src/code_generator/global_observer.ml b/src/plugins/e-acsl/src/code_generator/global_observer.ml
index 0e6a3ac2302a17cae489c61671fb46e4f7946ecc..023dd1cfc9de35ef187803485bfe157e36dfd759 100644
--- a/src/plugins/e-acsl/src/code_generator/global_observer.ml
+++ b/src/plugins/e-acsl/src/code_generator/global_observer.ml
@@ -43,11 +43,11 @@ let is_empty () = Varinfo.Hashtbl.length tbl = 0
    Initializers (used to capture literal strings) are added through
    [add_initializer] below. *)
 let add vi =
-  if Mmodel_analysis.must_model_vi vi then
+  if Memory_tracking.must_monitor_vi vi then
     Varinfo.Hashtbl.replace tbl vi (ref [])
 
 let add_initializer vi offset init =
-  if Mmodel_analysis.must_model_vi vi then
+  if Memory_tracking.must_monitor_vi vi then
     try
       let l = Varinfo.Hashtbl.find tbl vi in
       l := (offset, init) :: !l
diff --git a/src/plugins/e-acsl/src/code_generator/injector.ml b/src/plugins/e-acsl/src/code_generator/injector.ml
index cdc6486702d1fbcc234a0f0f7bf19b1f616e74c9..c7ea8438a11895d3bfe22dcb14b0b5f4d4b4764d 100644
--- a/src/plugins/e-acsl/src/code_generator/injector.ml
+++ b/src/plugins/e-acsl/src/code_generator/injector.ml
@@ -138,7 +138,7 @@ let add_initializer loc ?vi lv ?(post=false) stmt env kf =
       | Var vi, NoOffset -> vi.vglob || vi.vformal
       | _ -> false
     in
-    let must_model = Mmodel_analysis.must_model_lval ~stmt ~kf lv in
+    let must_model = Memory_tracking.must_monitor_lval ~stmt ~kf lv in
     if not (may_safely_ignore lv) && must_model then
       let before = Cil.mkStmt ~valid_sid:true stmt.skind in
       let new_stmt =
@@ -515,7 +515,7 @@ and inject_in_block (env: Env.t) kf blk =
       if Functions.instrument kf then
         List.fold_left
           (fun acc vi ->
-             if Mmodel_analysis.must_model_vi ~kf vi
+             if Memory_tracking.must_monitor_vi ~kf vi
              then Smart_stmt.delete_stmt vi :: acc
              else acc)
           stmts
@@ -530,7 +530,7 @@ and inject_in_block (env: Env.t) kf blk =
       blk.bstmts <-
         List.fold_left
           (fun acc vi ->
-             if Mmodel_analysis.must_model_vi vi && not vi.vdefined
+             if Memory_tracking.must_monitor_vi vi && not vi.vdefined
              then Smart_stmt.store_stmt vi :: acc
              else acc)
           blk.bstmts
@@ -702,7 +702,7 @@ let surround_function_with kf fundec stmt_begin stmt_end =
     These functions track the usage of globals if the program being analyzed. *)
 let inject_global_handler file main =
   Options.feedback ~dkey ~level:2 "building global handler.";
-  if Mmodel_analysis.use_model () then
+  if Memory_tracking.use_monitoring () then
     (* Create [__e_acsl_globals_init] function *)
     let vi_init, fundec_init = Global_observer.mk_init_function () in
     let cil_fct_init = GFun(fundec_init, Location.unknown) in
@@ -786,16 +786,16 @@ let inject_global_handler file main =
       file.globals <- file.globals @ globals_func
 
 (** Add a call to [__e_acsl_memory_init] and [__e_acsl_memory_clean] if the
-    memory model analysis is running.
+    memory tracking analysis is running.
     [__e_acsl_memory_init] initializes memory storage and potentially records
     program arguments. Parameters to [__e_acsl_memory_init] are addresses of
     program arguments or NULLs if [main] is declared without arguments.
     [__e_acsl_memory_clean] clean the memory allocated by
     [__e_acsl_memory_init]. *)
-let inject_mmodel_handler main =
+let inject_mtracking_handler main =
   (* Only inject memory init and memory clean if the memory model analysis is
      running *)
-  if Mmodel_analysis.use_model () then begin
+  if Memory_tracking.use_monitoring () then begin
     let loc = Location.unknown in
     let nulls = [ Cil.zero loc ; Cil.zero loc ] in
     let handle_main main =
@@ -837,13 +837,13 @@ let inject_in_file file =
   if not (Global_observer.is_empty () && Literal_strings.is_empty ()) then
     inject_global_handler file main;
   file.globals <- Logic_functions.add_generated_functions file.globals;
-  inject_mmodel_handler main
+  inject_mtracking_handler main
 
 let reset_all ast =
   (* by default, do not run E-ACSL on the generated code *)
   Options.Run.off ();
   (* reset all the E-ACSL environments to their original states *)
-  Mmodel_analysis.reset ();
+  Memory_tracking.reset ();
   Logic_functions.reset ();
   Literal_strings.reset ();
   Global_observer.reset ();
diff --git a/src/plugins/e-acsl/src/code_generator/literal_observer.ml b/src/plugins/e-acsl/src/code_generator/literal_observer.ml
index 9cc7e7f8b5e566285e6ba08231578420f038fca2..8b3bd0f99193c163abc41e86d508bf8974a0b239 100644
--- a/src/plugins/e-acsl/src/code_generator/literal_observer.ml
+++ b/src/plugins/e-acsl/src/code_generator/literal_observer.ml
@@ -52,7 +52,7 @@ let subst_all_literals_in_exp env kf e =
       (* the guard below could be optimized: if no annotation depends on this
          string, then it is not required to monitor it.
          (currently, the guard says: "no annotation uses the memory model" *)
-      | Const (CStr s) when Mmodel_analysis.use_model () ->
+      | Const (CStr s) when Memory_tracking.use_monitoring () ->
         let e, env = literal e.eloc !env_ref kf s in
         env_ref := env;
         Cil.ChangeTo e
diff --git a/src/plugins/e-acsl/src/code_generator/memory_observer.ml b/src/plugins/e-acsl/src/code_generator/memory_observer.ml
index 629e30432278b7a6912f33453939a7476c31632e..1babc64d9246264cbd2fcf76094218ac2ca099ab 100644
--- a/src/plugins/e-acsl/src/code_generator/memory_observer.ml
+++ b/src/plugins/e-acsl/src/code_generator/memory_observer.ml
@@ -26,7 +26,7 @@ let tracking_stmt ?before fold mk_stmt env kf vars =
   if Functions.instrument kf then
     fold
       (fun vi env ->
-         if Mmodel_analysis.must_model_vi ~kf vi then
+         if Memory_tracking.must_monitor_vi ~kf vi then
            Env.add_stmt ?before env kf (mk_stmt vi)
          else
            env)
diff --git a/src/plugins/e-acsl/src/code_generator/memory_observer.mli b/src/plugins/e-acsl/src/code_generator/memory_observer.mli
index 24b4556658713db974efb2a1ea95364b6864d633..7fb098d7655305e782dafe533d6a7b5af69528bf 100644
--- a/src/plugins/e-acsl/src/code_generator/memory_observer.mli
+++ b/src/plugins/e-acsl/src/code_generator/memory_observer.mli
@@ -27,7 +27,7 @@ open Cil_types
 open Cil_datatype
 
 val store: ?before:stmt -> Env.t -> kernel_function -> varinfo list -> Env.t
-(** For each variable of the given list, if necessary according to the mmodel
+(** For each variable of the given list, if necessary according to the mtracking
     analysis, add a call to [__e_acsl_store_block] in the given environment. *)
 
 val duplicate_store:
diff --git a/src/plugins/e-acsl/src/code_generator/temporal.ml b/src/plugins/e-acsl/src/code_generator/temporal.ml
index 96f5c22ee29764fd99bded8ea64abf265fabb0d0..d0f6ced85f13d7305efda530e904f39ae1dd8cfc 100644
--- a/src/plugins/e-acsl/src/code_generator/temporal.ml
+++ b/src/plugins/e-acsl/src/code_generator/temporal.ml
@@ -216,7 +216,7 @@ let mk_stmt_from_assign loc lhs rhs =
 
 (* Top-level handler for Set instructions *)
 let set_instr ?(post=false) current_stmt loc lhs rhs env kf =
-  if Mmodel_analysis.must_model_lval ~kf lhs then
+  if Memory_tracking.must_monitor_lval ~kf lhs then
     Extlib.may_map
       (fun stmt -> Env.add_stmt ~before:current_stmt ~post env kf stmt)
       ~dft:env
@@ -248,7 +248,7 @@ end = struct
            Extlib.may_map
              (fun (_, rhs, flow) ->
                 let env =
-                  if Mmodel_analysis.must_model_exp ~kf param then
+                  if Memory_tracking.must_monitor_exp ~kf param then
                     let stmt = Mk.save_param ~loc flow rhs index in
                     Env.add_stmt ~before:current_stmt ~post:false env kf stmt
                   else env
@@ -341,7 +341,7 @@ end = struct
     let alloc = not has_def in
     Extlib.may_map
       (fun lhs ->
-         if Mmodel_analysis.must_model_lval ~kf lhs then
+         if Memory_tracking.must_monitor_lval ~kf lhs then
            call_with_ret ~alloc current_stmt loc lhs env kf
          else env)
       ~dft:env
@@ -371,7 +371,7 @@ end = struct
         inits
 
   let instr current_stmt vi li loc env kf =
-    if Mmodel_analysis.must_model_vi ~kf vi then
+    if Memory_tracking.must_monitor_vi ~kf vi then
       match li with
       | AssignInit init ->
         handle_init current_stmt NoOffset loc vi init env kf
@@ -421,7 +421,7 @@ let handle_return_stmt loc ret env kf =
   | _ -> Options.fatal "Something other than Lval in return"
 
 let handle_return_stmt loc ret env kf =
-  if Mmodel_analysis.must_model_exp ~kf ret then
+  if Memory_tracking.must_monitor_exp ~kf ret then
     handle_return_stmt loc ret env kf
   else
     env
@@ -491,7 +491,7 @@ let handle_function_parameters kf env =
     let env, _ = List.fold_left
         (fun (env, index) param ->
            let env =
-             if Mmodel_analysis.must_model_vi ~kf param
+             if Memory_tracking.must_monitor_vi ~kf param
              then track_argument param index env kf
              else env
            in
diff --git a/src/plugins/e-acsl/src/code_generator/translate.ml b/src/plugins/e-acsl/src/code_generator/translate.ml
index 480059c4a519525c12412c38593cbdc08d9316d0..882a4b41f47538d813a323368c356c09f0040c83 100644
--- a/src/plugins/e-acsl/src/code_generator/translate.ml
+++ b/src/plugins/e-acsl/src/code_generator/translate.ml
@@ -583,7 +583,8 @@ and context_insensitive_term_to_exp kf env t =
     if Misc.is_set_of_ptr_or_array t1.term_type ||
        Misc.is_set_of_ptr_or_array t2.term_type then
       (* case of arithmetic over set of pointers (due to use of ranges)
-         should have already been handled in [mmodel_call_with_ranges] *)
+         should have already been handled in [Memory_translate.call_with_ranges]
+      *)
       assert false;
     (* binary operation over pointers *)
     let ty = match t1.term_type with
@@ -696,19 +697,19 @@ and context_insensitive_term_to_exp kf env t =
       e, env, sty, ""
   | Tbase_addr(BuiltinLabel Here, t) ->
     let name = "base_addr" in
-    let e, env = Mmodel_translate.call ~loc kf name Cil.voidPtrType env t in
+    let e, env = Memory_translate.call ~loc kf name Cil.voidPtrType env t in
     e, env, C_number, name
   | Tbase_addr _ -> not_yet env "labeled \\base_addr"
   | Toffset(BuiltinLabel Here, t) ->
     let size_t = Cil.theMachine.Cil.typeOfSizeOf in
     let name = "offset" in
-    let e, env = Mmodel_translate.call ~loc kf name size_t env t in
+    let e, env = Memory_translate.call ~loc kf name size_t env t in
     e, env, C_number, name
   | Toffset _ -> not_yet env "labeled \\offset"
   | Tblock_length(BuiltinLabel Here, t) ->
     let size_t = Cil.theMachine.Cil.typeOfSizeOf in
     let name = "block_length" in
-    let e, env = Mmodel_translate.call ~loc kf name size_t env t in
+    let e, env = Memory_translate.call ~loc kf name size_t env t in
     e, env, C_number, name
   | Tblock_length _ -> not_yet env "labeled \\block_length"
   | Tnull ->
@@ -965,7 +966,7 @@ and named_predicate_content_to_exp ?name kf env p =
         | Pvalid_read _ -> "valid_read"
         | _ -> assert false
       in
-      Mmodel_translate.call_valid ~loc kf name Cil.intType env t
+      Memory_translate.call_valid ~loc kf name Cil.intType env t
     in
     if !is_visiting_valid then begin
       (* we already transformed \valid(t) into \initialized(&t) && \valid(t):
@@ -996,7 +997,7 @@ and named_predicate_content_to_exp ?name kf env p =
          vi.vformal || vi.vglob || Functions.RTL.is_generated_name vi.vname ->
        Cil.one ~loc, env
      | _ ->
-       Mmodel_translate.call_with_size
+       Memory_translate.call_with_size
          ~loc
          kf
          "initialized"
@@ -1007,7 +1008,7 @@ and named_predicate_content_to_exp ?name kf env p =
   | Pinitialized _ -> not_yet env "labeled \\initialized"
   | Pallocable _ -> not_yet env "\\allocate"
   | Pfreeable(BuiltinLabel Here, t) ->
-    Mmodel_translate.call ~loc kf "freeable" Cil.intType env t
+    Memory_translate.call ~loc kf "freeable" Cil.intType env t
   | Pfreeable _ -> not_yet env "labeled \\freeable"
   | Pfresh _ -> not_yet env "\\fresh"
 
@@ -1095,8 +1096,8 @@ let () =
   Quantif.predicate_to_exp_ref := named_predicate_to_exp;
   At_with_lscope.term_to_exp_ref := term_to_exp;
   At_with_lscope.predicate_to_exp_ref := named_predicate_to_exp;
-  Mmodel_translate.term_to_exp_ref := term_to_exp;
-  Mmodel_translate.predicate_to_exp_ref := named_predicate_to_exp;
+  Memory_translate.term_to_exp_ref := term_to_exp;
+  Memory_translate.predicate_to_exp_ref := named_predicate_to_exp;
   Logic_functions.term_to_exp_ref := term_to_exp;
   Logic_functions.named_predicate_to_exp_ref := named_predicate_to_exp;
   Logic_array.translate_rte_ref := translate_rte