From 739e3c8247af22d7f87dbc25df3356e4bb63dcd1 Mon Sep 17 00:00:00 2001
From: Allan Blanchard <allan.blanchard@cea.fr>
Date: Mon, 4 May 2020 16:26:32 +0200
Subject: [PATCH] [wp] Refacto on initialized load MemLoader

---
 src/plugins/wp/MemLoader.ml                   |  23 ++-
 .../wp/tests/wp_acsl/initialized_memtyped.i   |   4 +-
 .../assigned_initialized_memtyped.res.oracle  | 172 +++++++++---------
 .../oracle/initialized_memtyped.res.oracle    | 135 +++++---------
 .../0382f6dae0638cff22773abf48a97a0b.json     |   2 +
 .../3ea4d20271db817acc93772ec936b090.json     |   2 +
 .../4f12567037ded6ea1b91d0a3af02fb60.json     |   2 +
 .../67e6da20c960f8c39b37c0a80a14fc79.json     |   2 +
 .../7b438e920474037e0f9f8a713cb123c1.json     |   2 +
 .../7bd58c1c63463f3390d8763cb1b60289.json     |   2 +
 .../853bc2c32f8d7202db06cd790b63f160.json     |   2 +
 .../87784d16e7bf7c3e607493bd07398ff0.json     |   2 +
 .../88cebc928f7f09c8404f0f551912aac0.json     |   1 +
 .../ba3b33e2aa1b2fcd91adf55c7c60b152.json     |   2 +
 .../0c8d8229fd1113c3aaac6d045c5ec17a.json     |   1 +
 .../22d831911a6e3b613da9488f25950dfa.json     |   1 +
 .../45889d9c2cc0ab362df5992931e4e411.json     |   1 +
 .../5eb01b7fcbf37ae8cdb071894915cf4e.json     |   1 +
 .../743d15e7563acf247b9f2a22711598a4.json     |   1 +
 .../98d3ad4d3d19397488a568e130e4a373.json     |   1 +
 .../a3f6368cb0806f34fc5eb60b1a8eb93c.json     |   1 +
 .../af0d67d49865f04c3f4d3216185761aa.json     |   1 +
 .../d0bcf57829c78e344070c1106612dc8b.json     |   1 +
 .../d543dec067259b4ba816ad79e9be5b57.json     |   1 +
 .../d7a062a09dde68021c1bbec999efc80a.json     |   2 +
 .../fbb3088e2b317a17bfb09f485fab1a28.json     |   1 +
 .../initialized_memtyped.res.oracle           |  12 +-
 27 files changed, 177 insertions(+), 201 deletions(-)
 create mode 100644 src/plugins/wp/tests/wp_acsl/oracle_qualif/assigned_initialized_memtyped.0.session/cache/0382f6dae0638cff22773abf48a97a0b.json
 create mode 100644 src/plugins/wp/tests/wp_acsl/oracle_qualif/assigned_initialized_memtyped.0.session/cache/3ea4d20271db817acc93772ec936b090.json
 create mode 100644 src/plugins/wp/tests/wp_acsl/oracle_qualif/assigned_initialized_memtyped.0.session/cache/4f12567037ded6ea1b91d0a3af02fb60.json
 create mode 100644 src/plugins/wp/tests/wp_acsl/oracle_qualif/assigned_initialized_memtyped.0.session/cache/67e6da20c960f8c39b37c0a80a14fc79.json
 create mode 100644 src/plugins/wp/tests/wp_acsl/oracle_qualif/assigned_initialized_memtyped.0.session/cache/7b438e920474037e0f9f8a713cb123c1.json
 create mode 100644 src/plugins/wp/tests/wp_acsl/oracle_qualif/assigned_initialized_memtyped.0.session/cache/7bd58c1c63463f3390d8763cb1b60289.json
 create mode 100644 src/plugins/wp/tests/wp_acsl/oracle_qualif/assigned_initialized_memtyped.0.session/cache/853bc2c32f8d7202db06cd790b63f160.json
 create mode 100644 src/plugins/wp/tests/wp_acsl/oracle_qualif/assigned_initialized_memtyped.0.session/cache/87784d16e7bf7c3e607493bd07398ff0.json
 create mode 100644 src/plugins/wp/tests/wp_acsl/oracle_qualif/assigned_initialized_memtyped.0.session/cache/88cebc928f7f09c8404f0f551912aac0.json
 create mode 100644 src/plugins/wp/tests/wp_acsl/oracle_qualif/assigned_initialized_memtyped.0.session/cache/ba3b33e2aa1b2fcd91adf55c7c60b152.json
 create mode 100644 src/plugins/wp/tests/wp_acsl/oracle_qualif/initialized_memtyped.0.session/cache/0c8d8229fd1113c3aaac6d045c5ec17a.json
 create mode 100644 src/plugins/wp/tests/wp_acsl/oracle_qualif/initialized_memtyped.0.session/cache/22d831911a6e3b613da9488f25950dfa.json
 create mode 100644 src/plugins/wp/tests/wp_acsl/oracle_qualif/initialized_memtyped.0.session/cache/45889d9c2cc0ab362df5992931e4e411.json
 create mode 100644 src/plugins/wp/tests/wp_acsl/oracle_qualif/initialized_memtyped.0.session/cache/5eb01b7fcbf37ae8cdb071894915cf4e.json
 create mode 100644 src/plugins/wp/tests/wp_acsl/oracle_qualif/initialized_memtyped.0.session/cache/743d15e7563acf247b9f2a22711598a4.json
 create mode 100644 src/plugins/wp/tests/wp_acsl/oracle_qualif/initialized_memtyped.0.session/cache/98d3ad4d3d19397488a568e130e4a373.json
 create mode 100644 src/plugins/wp/tests/wp_acsl/oracle_qualif/initialized_memtyped.0.session/cache/a3f6368cb0806f34fc5eb60b1a8eb93c.json
 create mode 100644 src/plugins/wp/tests/wp_acsl/oracle_qualif/initialized_memtyped.0.session/cache/af0d67d49865f04c3f4d3216185761aa.json
 create mode 100644 src/plugins/wp/tests/wp_acsl/oracle_qualif/initialized_memtyped.0.session/cache/d0bcf57829c78e344070c1106612dc8b.json
 create mode 100644 src/plugins/wp/tests/wp_acsl/oracle_qualif/initialized_memtyped.0.session/cache/d543dec067259b4ba816ad79e9be5b57.json
 create mode 100644 src/plugins/wp/tests/wp_acsl/oracle_qualif/initialized_memtyped.0.session/cache/d7a062a09dde68021c1bbec999efc80a.json
 create mode 100644 src/plugins/wp/tests/wp_acsl/oracle_qualif/initialized_memtyped.0.session/cache/fbb3088e2b317a17bfb09f485fab1a28.json

diff --git a/src/plugins/wp/MemLoader.ml b/src/plugins/wp/MemLoader.ml
index 3c05f23b3bc..f948bc49835 100644
--- a/src/plugins/wp/MemLoader.ml
+++ b/src/plugins/wp/MemLoader.ml
@@ -386,22 +386,24 @@ struct
   (* --- Initialized                                                        --- *)
   (* -------------------------------------------------------------------------- *)
 
-  let rec initialized_term obj term =
+  let rec initialized_loc sigma obj loc =
     match obj with
-    | C_int _ | C_float _ | C_pointer _ -> p_bool term
+    | C_int _ | C_float _ | C_pointer _ ->
+        p_bool (initvalue sigma obj loc)
     | C_comp ci ->
         let initialized_field f =
-          initialized_term
-            (object_of f.ftype)
-            (e_getfield term (Cfield (f, KInit)))
+          initialized_loc sigma (object_of f.ftype) (M.field loc f)
         in
         p_conj (List.map initialized_field ci.cfields)
     | C_array ai ->
         let obj_e, ds = Matrix.of_array ai in
         let denv = Matrix.denv ds in
-        let values = List.fold_left e_get term denv.index_val in
-        let make_subst var value p =
-          match value with
+        let access =
+          List.fold_left
+            (fun loc ofs -> M.shift loc obj_e ofs) loc denv.index_val
+        in
+        let make_subst var size p =
+          match size with
           | None -> p
           | Some i -> p_subst_var var (e_int i) p
         in
@@ -410,10 +412,7 @@ struct
           List.fold_left (fun p f -> f p) (p_conj denv.index_range) substs
         in
         p_forall denv.index_var
-          (p_imply conj (initialized_term obj_e values))
-
-  let initialized_loc sigma obj loc =
-    initialized_term obj (initvalue sigma obj loc)
+          (p_imply conj (initialized_loc sigma obj_e access))
 
   let initialized sigma = function
     | Rloc(obj, loc) -> initialized_loc sigma obj loc
diff --git a/src/plugins/wp/tests/wp_acsl/initialized_memtyped.i b/src/plugins/wp/tests/wp_acsl/initialized_memtyped.i
index 76148a465d8..91aa60d7152 100644
--- a/src/plugins/wp/tests/wp_acsl/initialized_memtyped.i
+++ b/src/plugins/wp/tests/wp_acsl/initialized_memtyped.i
@@ -39,7 +39,7 @@ void test(int* x, int (*a)[2], struct C* c){
   //@ check unknown: \initialized(c);
 
   c->s.y = 1 ;
-  //@ check provable: \initialized(&c->s);
+  //@ check qed_ok: \initialized(&c->s);
   //@ check unknown: \initialized(c);
 
   c->a[0] = c->a[1] = c->a[2] = c->a[3] = c->a[4] = c->a[5] = c->a[6] = c->a[7] = c->a[8] = 1;
@@ -47,5 +47,5 @@ void test(int* x, int (*a)[2], struct C* c){
   //@ check unknown: \initialized(c);
 
   c->a[9] = 1 ;
-  //@ check provable: \initialized(c);
+  //@ check qed_ok: \initialized(c);
 }
diff --git a/src/plugins/wp/tests/wp_acsl/oracle/assigned_initialized_memtyped.res.oracle b/src/plugins/wp/tests/wp_acsl/oracle/assigned_initialized_memtyped.res.oracle
index d9d2221b18f..c3bdcf83e16 100644
--- a/src/plugins/wp/tests/wp_acsl/oracle/assigned_initialized_memtyped.res.oracle
+++ b/src/plugins/wp/tests/wp_acsl/oracle/assigned_initialized_memtyped.res.oracle
@@ -13,31 +13,30 @@ Let a = shiftfield_F1_S_a(s).
 Let a_1 = shift_sint32(a, 0).
 Let a_2 = havoc(Init_undef_1, m, a_1, 10).
 Let a_3 = havoc(Init_undef_0, m, a_1, 10).
-Let a_4 = Load_Init_S1_S(s, a_3).
 Assume {
-  Type: is_sint32(i) /\ is_sint32(i_1).
+  Have: 0 <= i.
+  Have: i <= 9.
+  Type: is_sint32(i_1) /\ is_sint32(i_2).
   (* Heap *)
   Type: region(s.base) <= 0.
   (* Loop assigns ... *)
-  Have: forall i_2 : Z. let a_5 = shift_sint32(a, i_2) in ((0 <= i_2) ->
-      ((i_2 <= 9) -> ((m[a_5]=true) -> (a_2[a_5]=true)))).
+  Have: forall i_3 : Z. let a_4 = shift_sint32(a, i_3) in ((0 <= i_3) ->
+      ((i_3 <= 9) -> ((m[a_4]=true) -> (a_2[a_4]=true)))).
   (* Invariant *)
-  Have: (0 <= i) /\ (i <= 10) /\
-      (forall i_2 : Z. ((0 <= i_2) -> ((i_2 < i) ->
-       (a_2[shift_sint32(a, i_2)]=true)))).
+  Have: (0 <= i_1) /\ (i_1 <= 10) /\
+      (forall i_3 : Z. ((0 <= i_3) -> ((i_3 < i_1) ->
+       (a_2[shift_sint32(a, i_3)]=true)))).
   (* Else *)
-  Have: 10 <= i.
+  Have: 10 <= i_1.
   (* Loop assigns 'CHECK' *)
-  Have: forall i_2 : Z. let a_5 = shift_sint32(a, i_2) in ((0 <= i_2) ->
-      ((i_2 <= 9) -> ((a_2[a_5]=true) -> (a_3[a_5]=true)))).
+  Have: forall i_3 : Z. let a_4 = shift_sint32(a, i_3) in ((0 <= i_3) ->
+      ((i_3 <= 9) -> ((a_2[a_4]=true) -> (a_3[a_4]=true)))).
   (* Invariant *)
-  Have: (0 <= i_1) /\ (i_1 <= 10).
+  Have: (0 <= i_2) /\ (i_2 <= 10).
   (* Else *)
-  Have: 10 <= i_1.
+  Have: 10 <= i_2.
 }
-Prove: ((a_4.Init_F1_S_i)=true) /\
-    (forall i_2 : Z. ((0 <= i_2) -> ((i_2 <= 9) ->
-     ((a_4.Init_F1_S_a)[i_2]=true)))).
+Prove: (a_3[shift_sint32(a, i)]=true).
 
 ------------------------------------------------------------
 
@@ -62,34 +61,34 @@ Prove: true.
 ------------------------------------------------------------
 
 Goal Check 'CHECK' (file tests/wp_acsl/assigned_initialized_memtyped.i, line 118):
-Let m = Init_0[shiftfield_F1_S_i(s) <- true].
-Let a = shiftfield_F1_S_a(s).
-Let a_1 = havoc(Init_undef_1, m, shift_sint32(a, 0), 10).
-Let a_2 = havoc(Init_undef_0, m, s, 11).
-Let a_3 = Load_Init_S1_S(s, a_2).
+Let a = shiftfield_F1_S_i(s).
+Let m = Init_0[a <- true].
+Let a_1 = shiftfield_F1_S_a(s).
+Let a_2 = havoc(Init_undef_1, m, shift_sint32(a_1, 0), 10).
+Let a_3 = havoc(Init_undef_0, m, s, 11).
 Assume {
   Type: is_sint32(i) /\ is_sint32(i_1).
   (* Heap *)
   Type: region(s.base) <= 0.
   (* Loop assigns ... *)
-  Have: forall i_2 : Z. let a_4 = shift_sint32(a, i_2) in ((0 <= i_2) ->
-      ((i_2 <= 9) -> ((m[a_4]=true) -> (a_1[a_4]=true)))).
+  Have: forall i_2 : Z. let a_4 = shift_sint32(a_1, i_2) in ((0 <= i_2) ->
+      ((i_2 <= 9) -> ((m[a_4]=true) -> (a_2[a_4]=true)))).
   (* Invariant *)
   Have: (0 <= i) /\ (i <= 10) /\
       (forall i_2 : Z. ((0 <= i_2) -> ((i_2 < i) ->
-       (a_1[shift_sint32(a, i_2)]=true)))).
+       (a_2[shift_sint32(a_1, i_2)]=true)))).
   (* Else *)
   Have: 10 <= i.
   (* Loop assigns 'CHECK' *)
-  Have: Motononic__Init_S1_S(s, a_1, a_2).
+  Have: Motononic__Init_S1_S(s, a_2, a_3).
   (* Invariant *)
   Have: (0 <= i_1) /\ (i_1 <= 10).
   (* Else *)
   Have: 10 <= i_1.
 }
-Prove: ((a_3.Init_F1_S_i)=true) /\
+Prove: (Init_undef_0[a]=true) /\
     (forall i_2 : Z. ((0 <= i_2) -> ((i_2 <= 9) ->
-     ((a_3.Init_F1_S_a)[i_2]=true)))).
+     (a_3[shift_sint32(a_1, i_2)]=true)))).
 
 ------------------------------------------------------------
 
@@ -144,14 +143,13 @@ Let a_1 = shiftfield_F1_S_i(s).
 Let m = Init_1[a_1 <- true].
 Let a_2 = shift_sint32(a, 0).
 Let a_3 = havoc(Init_undef_0, m, a_2, 10).
-Let a_4 = Load_Init_S1_S(s, Init_0).
 Assume {
   Type: is_sint32(i) /\ is_sint32(i_1).
   (* Heap *)
   Type: region(s.base) <= 0.
   (* Loop assigns ... *)
-  Have: forall i_2 : Z. let a_5 = shift_sint32(a, i_2) in ((0 <= i_2) ->
-      ((i_2 <= 9) -> ((m[a_5]=true) -> (a_3[a_5]=true)))).
+  Have: forall i_2 : Z. let a_4 = shift_sint32(a, i_2) in ((0 <= i_2) ->
+      ((i_2 <= 9) -> ((m[a_4]=true) -> (a_3[a_4]=true)))).
   (* Invariant *)
   Have: (0 <= i) /\ (i <= 10) /\
       (forall i_2 : Z. ((0 <= i_2) -> ((i_2 < i) ->
@@ -159,23 +157,23 @@ Assume {
   (* Else *)
   Have: 10 <= i.
   (* Loop assigns 'CHECK' *)
-  Have: (forall a_5 : addr.
+  Have: (forall a_4 : addr.
          ((forall i_2 : Z. (((i_2 = 0) \/ (i_2 = 2) \/ (i_2 = 4)) ->
-           (shift_sint32(a, i_2) != a_5))) ->
-         ((a_3[a_5]=true) <-> (Init_0[a_5]=true)))) /\
-      (forall a_5 : addr.
+           (shift_sint32(a, i_2) != a_4))) ->
+         ((a_3[a_4]=true) <-> (Init_0[a_4]=true)))) /\
+      (forall a_4 : addr.
        ((forall i_2 : Z. (((i_2 = 0) \/ (i_2 = 2) \/ (i_2 = 4)) ->
-         (shift_sint32(a, i_2) != a_5))) ->
-       (havoc(Mint_undef_0, Mint_0[a_1 <- 0], a_2, 10)[a_5] = Mint_1[a_5]))) /\
-      (forall i_2 : Z. let a_5 = shift_sint32(a, i_2) in
-       (((i_2 = 0) \/ (i_2 = 2) \/ (i_2 = 4)) -> ((a_3[a_5]=true) ->
-       (Init_0[a_5]=true)))).
+         (shift_sint32(a, i_2) != a_4))) ->
+       (havoc(Mint_undef_0, Mint_0[a_1 <- 0], a_2, 10)[a_4] = Mint_1[a_4]))) /\
+      (forall i_2 : Z. let a_4 = shift_sint32(a, i_2) in
+       (((i_2 = 0) \/ (i_2 = 2) \/ (i_2 = 4)) -> ((a_3[a_4]=true) ->
+       (Init_0[a_4]=true)))).
   (* Else *)
   Have: 10 <= i_1.
 }
-Prove: ((a_4.Init_F1_S_i)=true) /\
+Prove: (Init_0[a_1]=true) /\
     (forall i_2 : Z. ((0 <= i_2) -> ((i_2 <= 9) ->
-     ((a_4.Init_F1_S_a)[i_2]=true)))).
+     (Init_0[shift_sint32(a, i_2)]=true)))).
 
 ------------------------------------------------------------
 
@@ -254,26 +252,25 @@ Let a = shiftfield_F1_S_i(s).
 Let m = Init_0[a <- true].
 Let a_1 = shiftfield_F1_S_a(s).
 Let a_2 = havoc(Init_undef_0, m, shift_sint32(a_1, 0), 10).
-Let a_3 = Load_Init_S1_S(s, a_2[a <- true]).
 Assume {
-  Type: is_sint32(i) /\ is_sint32(i_1).
+  Have: 0 <= i.
+  Have: i <= 9.
+  Type: is_sint32(i_1) /\ is_sint32(i_2).
   (* Heap *)
   Type: region(s.base) <= 0.
   (* Loop assigns ... *)
-  Have: forall i_2 : Z. let a_4 = shift_sint32(a_1, i_2) in ((0 <= i_2) ->
-      ((i_2 <= 9) -> ((m[a_4]=true) -> (a_2[a_4]=true)))).
+  Have: forall i_3 : Z. let a_3 = shift_sint32(a_1, i_3) in ((0 <= i_3) ->
+      ((i_3 <= 9) -> ((m[a_3]=true) -> (a_2[a_3]=true)))).
   (* Invariant *)
-  Have: (0 <= i) /\ (i <= 10) /\
-      (forall i_2 : Z. ((0 <= i_2) -> ((i_2 < i) ->
-       (a_2[shift_sint32(a_1, i_2)]=true)))).
-  (* Else *)
-  Have: 10 <= i.
+  Have: (0 <= i_1) /\ (i_1 <= 10) /\
+      (forall i_3 : Z. ((0 <= i_3) -> ((i_3 < i_1) ->
+       (a_2[shift_sint32(a_1, i_3)]=true)))).
   (* Else *)
   Have: 10 <= i_1.
+  (* Else *)
+  Have: 10 <= i_2.
 }
-Prove: ((a_3.Init_F1_S_i)=true) /\
-    (forall i_2 : Z. ((0 <= i_2) -> ((i_2 <= 9) ->
-     ((a_3.Init_F1_S_a)[i_2]=true)))).
+Prove: (a_2[a <- true][shift_sint32(a_1, i)]=true).
 
 ------------------------------------------------------------
 
@@ -296,28 +293,27 @@ Let a = shiftfield_F1_S_a(s).
 Let a_1 = shift_sint32(a, 4).
 Let m = Init_0[shiftfield_F1_S_i(s) <- true].
 Let a_2 = havoc(Init_undef_0, m, shift_sint32(a, 0), 10).
-Let a_3 = Load_Init_S1_S(s, a_2[a_1 <- i]).
 Assume {
-  Type: is_sint32(i_1) /\ is_sint32(i_2).
+  Have: 0 <= i_1.
+  Have: i_1 <= 9.
+  Type: is_sint32(i_2) /\ is_sint32(i_3).
   (* Heap *)
   Type: region(s.base) <= 0.
   (* Loop assigns ... *)
-  Have: forall i_3 : Z. let a_4 = shift_sint32(a, i_3) in ((0 <= i_3) ->
-      ((i_3 <= 9) -> ((m[a_4]=true) -> (a_2[a_4]=true)))).
+  Have: forall i_4 : Z. let a_3 = shift_sint32(a, i_4) in ((0 <= i_4) ->
+      ((i_4 <= 9) -> ((m[a_3]=true) -> (a_2[a_3]=true)))).
   (* Invariant *)
-  Have: (0 <= i_1) /\ (i_1 <= 10) /\
-      (forall i_3 : Z. ((0 <= i_3) -> ((i_3 < i_1) ->
-       (a_2[shift_sint32(a, i_3)]=true)))).
+  Have: (0 <= i_2) /\ (i_2 <= 10) /\
+      (forall i_4 : Z. ((0 <= i_4) -> ((i_4 < i_2) ->
+       (a_2[shift_sint32(a, i_4)]=true)))).
   (* Else *)
-  Have: 10 <= i_1.
+  Have: 10 <= i_2.
   (* Loop assigns 'CHECK' *)
   Have: ((Init_undef_0[a_1]=true) -> (i=true)).
   (* Else *)
-  Have: 10 <= i_2.
+  Have: 10 <= i_3.
 }
-Prove: ((a_3.Init_F1_S_i)=true) /\
-    (forall i_3 : Z. ((0 <= i_3) -> ((i_3 <= 9) ->
-     ((a_3.Init_F1_S_a)[i_3]=true)))).
+Prove: (a_2[a_1 <- i][shift_sint32(a, i_1)]=true).
 
 ------------------------------------------------------------
 
@@ -374,24 +370,23 @@ Goal Check 'CHECK' (file tests/wp_acsl/assigned_initialized_memtyped.i, line 21)
 Let m = Init_0[shiftfield_F1_S_i(s) <- true].
 Let a = shiftfield_F1_S_a(s).
 Let a_1 = havoc(Init_undef_0, m, shift_sint32(a, 0), 10).
-Let a_2 = Load_Init_S1_S(s, a_1).
 Assume {
-  Type: is_sint32(i).
+  Have: 0 <= i.
+  Have: i <= 9.
+  Type: is_sint32(i_1).
   (* Heap *)
   Type: region(s.base) <= 0.
   (* Loop assigns 'CHECK' *)
-  Have: forall i_1 : Z. let a_3 = shift_sint32(a, i_1) in ((0 <= i_1) ->
-      ((i_1 <= 9) -> ((m[a_3]=true) -> (a_1[a_3]=true)))).
+  Have: forall i_2 : Z. let a_2 = shift_sint32(a, i_2) in ((0 <= i_2) ->
+      ((i_2 <= 9) -> ((m[a_2]=true) -> (a_1[a_2]=true)))).
   (* Invariant 'CHECK' *)
-  Have: (0 <= i) /\ (i <= 10) /\
-      (forall i_1 : Z. ((0 <= i_1) -> ((i_1 < i) ->
-       (a_1[shift_sint32(a, i_1)]=true)))).
+  Have: (0 <= i_1) /\ (i_1 <= 10) /\
+      (forall i_2 : Z. ((0 <= i_2) -> ((i_2 < i_1) ->
+       (a_1[shift_sint32(a, i_2)]=true)))).
   (* Else *)
-  Have: 10 <= i.
+  Have: 10 <= i_1.
 }
-Prove: ((a_2.Init_F1_S_i)=true) /\
-    (forall i_1 : Z. ((0 <= i_1) -> ((i_1 <= 9) ->
-     ((a_2.Init_F1_S_a)[i_1]=true)))).
+Prove: (a_1[shift_sint32(a, i)]=true).
 
 ------------------------------------------------------------
 
@@ -420,29 +415,28 @@ Let m = Init_0[shiftfield_F1_S_i(s) <- true].
 Let a = shiftfield_F1_S_a(s).
 Let a_1 = havoc(Init_undef_1, m, shift_sint32(a, 0), 10).
 Let a_2 = havoc(Init_undef_0, a_1, shift_sint32(a, 1), 4).
-Let a_3 = Load_Init_S1_S(s, a_2).
 Assume {
-  Type: is_sint32(i) /\ is_sint32(i_1).
+  Have: 0 <= i.
+  Have: i <= 9.
+  Type: is_sint32(i_1) /\ is_sint32(i_2).
   (* Heap *)
   Type: region(s.base) <= 0.
   (* Loop assigns ... *)
-  Have: forall i_2 : Z. let a_4 = shift_sint32(a, i_2) in ((0 <= i_2) ->
-      ((i_2 <= 9) -> ((m[a_4]=true) -> (a_1[a_4]=true)))).
+  Have: forall i_3 : Z. let a_3 = shift_sint32(a, i_3) in ((0 <= i_3) ->
+      ((i_3 <= 9) -> ((m[a_3]=true) -> (a_1[a_3]=true)))).
   (* Invariant *)
-  Have: (0 <= i) /\ (i <= 10) /\
-      (forall i_2 : Z. ((0 <= i_2) -> ((i_2 < i) ->
-       (a_1[shift_sint32(a, i_2)]=true)))).
+  Have: (0 <= i_1) /\ (i_1 <= 10) /\
+      (forall i_3 : Z. ((0 <= i_3) -> ((i_3 < i_1) ->
+       (a_1[shift_sint32(a, i_3)]=true)))).
   (* Else *)
-  Have: 10 <= i.
+  Have: 10 <= i_1.
   (* Loop assigns 'CHECK' *)
-  Have: forall i_2 : Z. let a_4 = shift_sint32(a, i_2) in ((0 < i_2) ->
-      ((i_2 <= 4) -> ((a_1[a_4]=true) -> (a_2[a_4]=true)))).
+  Have: forall i_3 : Z. let a_3 = shift_sint32(a, i_3) in ((0 < i_3) ->
+      ((i_3 <= 4) -> ((a_1[a_3]=true) -> (a_2[a_3]=true)))).
   (* Else *)
-  Have: 10 <= i_1.
+  Have: 10 <= i_2.
 }
-Prove: ((a_3.Init_F1_S_i)=true) /\
-    (forall i_2 : Z. ((0 <= i_2) -> ((i_2 <= 9) ->
-     ((a_3.Init_F1_S_a)[i_2]=true)))).
+Prove: (a_2[shift_sint32(a, i)]=true).
 
 ------------------------------------------------------------
 
diff --git a/src/plugins/wp/tests/wp_acsl/oracle/initialized_memtyped.res.oracle b/src/plugins/wp/tests/wp_acsl/oracle/initialized_memtyped.res.oracle
index a3d7ea7b5a0..a68ba3f09fd 100644
--- a/src/plugins/wp/tests/wp_acsl/oracle/initialized_memtyped.res.oracle
+++ b/src/plugins/wp/tests/wp_acsl/oracle/initialized_memtyped.res.oracle
@@ -20,17 +20,18 @@ Assume {
   (* Goal *)
   When: (0 <= i) /\ (i <= 1).
 }
-Prove: (ArrayInit1_int(a, 2, Init_0)[i]=true).
+Prove: (Init_0[shift_sint32(a, i)]=true).
 
 ------------------------------------------------------------
 
 Goal Check 'unknown' (file tests/wp_acsl/initialized_memtyped.i, line 14):
-Let a = Load_Init_S2_C(c, Init_0).
-Let a_1 = a.Init_F2_C_s.
+Let a = shiftfield_F2_C_s(c).
 Assume { (* Heap *) Type: region(c.base) <= 0. }
-Prove: ((a.Init_F2_C_x)=true) /\ ((a_1.Init_F1_S_x)=true) /\
-    ((a_1.Init_F1_S_y)=true) /\
-    (forall i : Z. ((0 <= i) -> ((i <= 9) -> ((a.Init_F2_C_a)[i]=true)))).
+Prove: (Init_0[shiftfield_F2_C_x(c)]=true) /\
+    (Init_0[shiftfield_F1_S_x(a)]=true) /\
+    (Init_0[shiftfield_F1_S_y(a)]=true) /\
+    (forall i : Z. ((0 <= i) -> ((i <= 9) ->
+     (Init_0[shift_sint32(shiftfield_F2_C_a(c), i)]=true)))).
 
 ------------------------------------------------------------
 
@@ -57,8 +58,7 @@ Assume {
   (* Goal *)
   When: (0 <= i) /\ (i <= 1).
 }
-Prove: (ArrayInit1_int(a, 2, Init_0[x <- true][shift_sint32(a, 0) <- true])
-          [i]=true).
+Prove: (Init_0[x <- true][shift_sint32(a, 0) <- true][shift_sint32(a, i)]=true).
 
 ------------------------------------------------------------
 
@@ -83,15 +83,15 @@ Prove: true.
 ------------------------------------------------------------
 
 Goal Check 'unknown' (file tests/wp_acsl/initialized_memtyped.i, line 31):
-Let a_1 = Load_Init_S1_S(shiftfield_F2_C_s(c),
-            Init_0[x <- true][shift_sint32(a, 0) <- true][shift_sint32(a, 1)
-              <- true][shiftfield_F2_C_x(c) <- true]).
+Let m = Init_0[x <- true][shift_sint32(a, 0) <- true][shift_sint32(a, 1)
+          <- true].
+Let a_1 = shiftfield_F2_C_s(c).
 Assume {
   (* Heap *)
   Type: (region(a.base) <= 0) /\ (region(c.base) <= 0) /\
       (region(x.base) <= 0).
 }
-Prove: ((a_1.Init_F1_S_x)=true) /\ ((a_1.Init_F1_S_y)=true).
+Prove: (m[shiftfield_F1_S_x(a_1)]=true) /\ (m[shiftfield_F1_S_y(a_1)]=true).
 
 ------------------------------------------------------------
 
@@ -103,25 +103,25 @@ Assume {
   (* Goal *)
   When: (0 <= i) /\ (i <= 9).
 }
-Prove: (ArrayInit1_int(shiftfield_F2_C_a(c), 10,
-          Init_0[x <- true][shift_sint32(a, 0) <- true][shift_sint32(a, 1)
-            <- true][shiftfield_F2_C_x(c) <- true])[i]=true).
+Prove: (Init_0[x <- true][shift_sint32(a, 0) <- true][shift_sint32(a, 1)
+          <- true][shiftfield_F2_C_x(c) <- true]
+          [shift_sint32(shiftfield_F2_C_a(c), i)]=true).
 
 ------------------------------------------------------------
 
 Goal Check 'unknown' (file tests/wp_acsl/initialized_memtyped.i, line 33):
-Let a_1 = Load_Init_S2_C(c,
-            Init_0[x <- true][shift_sint32(a, 0) <- true][shift_sint32(a, 1)
-              <- true][shiftfield_F2_C_x(c) <- true]).
-Let a_2 = a_1.Init_F2_C_s.
+Let m = Init_0[x <- true][shift_sint32(a, 0) <- true][shift_sint32(a, 1)
+          <- true].
+Let a_1 = shiftfield_F2_C_s(c).
 Assume {
   (* Heap *)
   Type: (region(a.base) <= 0) /\ (region(c.base) <= 0) /\
       (region(x.base) <= 0).
 }
-Prove: ((a_1.Init_F2_C_x)=true) /\ ((a_2.Init_F1_S_x)=true) /\
-    ((a_2.Init_F1_S_y)=true) /\
-    (forall i : Z. ((0 <= i) -> ((i <= 9) -> ((a_1.Init_F2_C_a)[i]=true)))).
+Prove: (m[shiftfield_F1_S_x(a_1)]=true) /\
+    (m[shiftfield_F1_S_y(a_1)]=true) /\
+    (forall i : Z. ((0 <= i) -> ((i <= 9) ->
+     (m[shiftfield_F2_C_x(c) <- true][shift_sint32(shiftfield_F2_C_a(c), i)]=true)))).
 
 ------------------------------------------------------------
 
@@ -142,67 +142,50 @@ Prove: (Init_0[x <- true][shift_sint32(a, 0) <- true][shift_sint32(a, 1)
 ------------------------------------------------------------
 
 Goal Check 'unknown' (file tests/wp_acsl/initialized_memtyped.i, line 38):
-Let a_1 = shiftfield_F2_C_s(c).
-Let a_2 = Load_Init_S1_S(a_1,
-            Init_0[x <- true][shift_sint32(a, 0) <- true][shift_sint32(a, 1)
-              <- true][shiftfield_F2_C_x(c) <- true][shiftfield_F1_S_x(a_1)
-              <- true]).
 Assume {
   (* Heap *)
   Type: (region(a.base) <= 0) /\ (region(c.base) <= 0) /\
       (region(x.base) <= 0).
 }
-Prove: ((a_2.Init_F1_S_x)=true) /\ ((a_2.Init_F1_S_y)=true).
+Prove: (Init_0[x <- true][shift_sint32(a, 0) <- true][shift_sint32(a, 1)
+          <- true][shiftfield_F1_S_y(shiftfield_F2_C_s(c))]=true).
 
 ------------------------------------------------------------
 
 Goal Check 'unknown' (file tests/wp_acsl/initialized_memtyped.i, line 39):
-Let a_1 = Load_Init_S2_C(c,
-            Init_0[x <- true][shift_sint32(a, 0) <- true][shift_sint32(a, 1)
-              <- true][shiftfield_F2_C_x(c) <- true]
-              [shiftfield_F1_S_x(shiftfield_F2_C_s(c)) <- true]).
-Let a_2 = a_1.Init_F2_C_s.
+Let m = Init_0[x <- true][shift_sint32(a, 0) <- true][shift_sint32(a, 1)
+          <- true].
+Let a_1 = shiftfield_F2_C_s(c).
 Assume {
   (* Heap *)
   Type: (region(a.base) <= 0) /\ (region(c.base) <= 0) /\
       (region(x.base) <= 0).
 }
-Prove: ((a_1.Init_F2_C_x)=true) /\ ((a_2.Init_F1_S_x)=true) /\
-    ((a_2.Init_F1_S_y)=true) /\
-    (forall i : Z. ((0 <= i) -> ((i <= 9) -> ((a_1.Init_F2_C_a)[i]=true)))).
+Prove: (m[shiftfield_F1_S_y(a_1)]=true) /\
+    (forall i : Z. ((0 <= i) -> ((i <= 9) ->
+     (m[shiftfield_F2_C_x(c) <- true][shiftfield_F1_S_x(a_1) <- true]
+        [shift_sint32(shiftfield_F2_C_a(c), i)]=true)))).
 
 ------------------------------------------------------------
 
-Goal Check 'provable' (file tests/wp_acsl/initialized_memtyped.i, line 42):
-Let a_1 = shiftfield_F2_C_s(c).
-Let a_2 = Load_Init_S1_S(a_1,
-            Init_0[x <- true][shift_sint32(a, 0) <- true][shift_sint32(a, 1)
-              <- true][shiftfield_F2_C_x(c) <- true][shiftfield_F1_S_x(a_1)
-              <- true][shiftfield_F1_S_y(a_1) <- true]).
-Assume {
-  (* Heap *)
-  Type: (region(a.base) <= 0) /\ (region(c.base) <= 0) /\
-      (region(x.base) <= 0).
-}
-Prove: ((a_2.Init_F1_S_x)=true) /\ ((a_2.Init_F1_S_y)=true).
+Goal Check 'qed_ok' (file tests/wp_acsl/initialized_memtyped.i, line 42):
+Prove: true.
 
 ------------------------------------------------------------
 
 Goal Check 'unknown' (file tests/wp_acsl/initialized_memtyped.i, line 43):
 Let a_1 = shiftfield_F2_C_s(c).
-Let a_2 = Load_Init_S2_C(c,
-            Init_0[x <- true][shift_sint32(a, 0) <- true][shift_sint32(a, 1)
-              <- true][shiftfield_F2_C_x(c) <- true][shiftfield_F1_S_x(a_1)
-              <- true][shiftfield_F1_S_y(a_1) <- true]).
-Let a_3 = a_2.Init_F2_C_s.
 Assume {
+  Have: 0 <= i.
+  Have: i <= 9.
   (* Heap *)
   Type: (region(a.base) <= 0) /\ (region(c.base) <= 0) /\
       (region(x.base) <= 0).
 }
-Prove: ((a_2.Init_F2_C_x)=true) /\ ((a_3.Init_F1_S_x)=true) /\
-    ((a_3.Init_F1_S_y)=true) /\
-    (forall i : Z. ((0 <= i) -> ((i <= 9) -> ((a_2.Init_F2_C_a)[i]=true)))).
+Prove: (Init_0[x <- true][shift_sint32(a, 0) <- true][shift_sint32(a, 1)
+          <- true][shiftfield_F2_C_x(c) <- true][shiftfield_F1_S_x(a_1)
+          <- true][shiftfield_F1_S_y(a_1) <- true]
+          [shift_sint32(shiftfield_F2_C_a(c), i)]=true).
 
 ------------------------------------------------------------
 
@@ -228,49 +211,17 @@ Prove: (Init_0[x <- true][shift_sint32(a, 0) <- true][shift_sint32(a, 1)
 ------------------------------------------------------------
 
 Goal Check 'unknown' (file tests/wp_acsl/initialized_memtyped.i, line 47):
-Let a_1 = shiftfield_F2_C_s(c).
-Let a_2 = shiftfield_F2_C_a(c).
-Let a_3 = Load_Init_S2_C(c,
-            Init_0[x <- true][shift_sint32(a, 0) <- true][shift_sint32(a, 1)
-              <- true][shiftfield_F2_C_x(c) <- true][shiftfield_F1_S_x(a_1)
-              <- true][shiftfield_F1_S_y(a_1) <- true][shift_sint32(a_2, 8)
-              <- true][shift_sint32(a_2, 7) <- true][shift_sint32(a_2, 6)
-              <- true][shift_sint32(a_2, 5) <- true][shift_sint32(a_2, 4)
-              <- true][shift_sint32(a_2, 3) <- true][shift_sint32(a_2, 2)
-              <- true][shift_sint32(a_2, 1) <- true][shift_sint32(a_2, 0)
-              <- true]).
-Let a_4 = a_3.Init_F2_C_s.
 Assume {
   (* Heap *)
   Type: (region(a.base) <= 0) /\ (region(c.base) <= 0) /\
       (region(x.base) <= 0).
 }
-Prove: ((a_3.Init_F2_C_x)=true) /\ ((a_4.Init_F1_S_x)=true) /\
-    ((a_4.Init_F1_S_y)=true) /\
-    (forall i : Z. ((0 <= i) -> ((i <= 9) -> ((a_3.Init_F2_C_a)[i]=true)))).
+Prove: (Init_0[x <- true][shift_sint32(a, 0) <- true][shift_sint32(a, 1)
+          <- true][shift_sint32(shiftfield_F2_C_a(c), 9)]=true).
 
 ------------------------------------------------------------
 
-Goal Check 'provable' (file tests/wp_acsl/initialized_memtyped.i, line 50):
-Let a_1 = shiftfield_F2_C_s(c).
-Let a_2 = shiftfield_F2_C_a(c).
-Let a_3 = Load_Init_S2_C(c,
-            Init_0[x <- true][shift_sint32(a, 0) <- true][shift_sint32(a, 1)
-              <- true][shiftfield_F2_C_x(c) <- true][shiftfield_F1_S_x(a_1)
-              <- true][shiftfield_F1_S_y(a_1) <- true][shift_sint32(a_2, 8)
-              <- true][shift_sint32(a_2, 7) <- true][shift_sint32(a_2, 6)
-              <- true][shift_sint32(a_2, 5) <- true][shift_sint32(a_2, 4)
-              <- true][shift_sint32(a_2, 3) <- true][shift_sint32(a_2, 2)
-              <- true][shift_sint32(a_2, 1) <- true][shift_sint32(a_2, 0)
-              <- true][shift_sint32(a_2, 9) <- true]).
-Let a_4 = a_3.Init_F2_C_s.
-Assume {
-  (* Heap *)
-  Type: (region(a.base) <= 0) /\ (region(c.base) <= 0) /\
-      (region(x.base) <= 0).
-}
-Prove: ((a_3.Init_F2_C_x)=true) /\ ((a_4.Init_F1_S_x)=true) /\
-    ((a_4.Init_F1_S_y)=true) /\
-    (forall i : Z. ((0 <= i) -> ((i <= 9) -> ((a_3.Init_F2_C_a)[i]=true)))).
+Goal Check 'qed_ok' (file tests/wp_acsl/initialized_memtyped.i, line 50):
+Prove: true.
 
 ------------------------------------------------------------
diff --git a/src/plugins/wp/tests/wp_acsl/oracle_qualif/assigned_initialized_memtyped.0.session/cache/0382f6dae0638cff22773abf48a97a0b.json b/src/plugins/wp/tests/wp_acsl/oracle_qualif/assigned_initialized_memtyped.0.session/cache/0382f6dae0638cff22773abf48a97a0b.json
new file mode 100644
index 00000000000..cb87c7c0d5c
--- /dev/null
+++ b/src/plugins/wp/tests/wp_acsl/oracle_qualif/assigned_initialized_memtyped.0.session/cache/0382f6dae0638cff22773abf48a97a0b.json
@@ -0,0 +1,2 @@
+{ "prover": "Alt-Ergo:2.0.0", "verdict": "valid", "time": 0.0134,
+  "steps": 21 }
diff --git a/src/plugins/wp/tests/wp_acsl/oracle_qualif/assigned_initialized_memtyped.0.session/cache/3ea4d20271db817acc93772ec936b090.json b/src/plugins/wp/tests/wp_acsl/oracle_qualif/assigned_initialized_memtyped.0.session/cache/3ea4d20271db817acc93772ec936b090.json
new file mode 100644
index 00000000000..1e149c90f5c
--- /dev/null
+++ b/src/plugins/wp/tests/wp_acsl/oracle_qualif/assigned_initialized_memtyped.0.session/cache/3ea4d20271db817acc93772ec936b090.json
@@ -0,0 +1,2 @@
+{ "prover": "Alt-Ergo:2.0.0", "verdict": "valid", "time": 0.0074,
+  "steps": 20 }
diff --git a/src/plugins/wp/tests/wp_acsl/oracle_qualif/assigned_initialized_memtyped.0.session/cache/4f12567037ded6ea1b91d0a3af02fb60.json b/src/plugins/wp/tests/wp_acsl/oracle_qualif/assigned_initialized_memtyped.0.session/cache/4f12567037ded6ea1b91d0a3af02fb60.json
new file mode 100644
index 00000000000..cd20d8ef7d4
--- /dev/null
+++ b/src/plugins/wp/tests/wp_acsl/oracle_qualif/assigned_initialized_memtyped.0.session/cache/4f12567037ded6ea1b91d0a3af02fb60.json
@@ -0,0 +1,2 @@
+{ "prover": "Alt-Ergo:2.0.0", "verdict": "valid", "time": 0.0125,
+  "steps": 31 }
diff --git a/src/plugins/wp/tests/wp_acsl/oracle_qualif/assigned_initialized_memtyped.0.session/cache/67e6da20c960f8c39b37c0a80a14fc79.json b/src/plugins/wp/tests/wp_acsl/oracle_qualif/assigned_initialized_memtyped.0.session/cache/67e6da20c960f8c39b37c0a80a14fc79.json
new file mode 100644
index 00000000000..f5767b366bd
--- /dev/null
+++ b/src/plugins/wp/tests/wp_acsl/oracle_qualif/assigned_initialized_memtyped.0.session/cache/67e6da20c960f8c39b37c0a80a14fc79.json
@@ -0,0 +1,2 @@
+{ "prover": "Alt-Ergo:2.0.0", "verdict": "valid", "time": 0.011,
+  "steps": 41 }
diff --git a/src/plugins/wp/tests/wp_acsl/oracle_qualif/assigned_initialized_memtyped.0.session/cache/7b438e920474037e0f9f8a713cb123c1.json b/src/plugins/wp/tests/wp_acsl/oracle_qualif/assigned_initialized_memtyped.0.session/cache/7b438e920474037e0f9f8a713cb123c1.json
new file mode 100644
index 00000000000..c114478a6ec
--- /dev/null
+++ b/src/plugins/wp/tests/wp_acsl/oracle_qualif/assigned_initialized_memtyped.0.session/cache/7b438e920474037e0f9f8a713cb123c1.json
@@ -0,0 +1,2 @@
+{ "prover": "Alt-Ergo:2.0.0", "verdict": "valid", "time": 0.007,
+  "steps": 34 }
diff --git a/src/plugins/wp/tests/wp_acsl/oracle_qualif/assigned_initialized_memtyped.0.session/cache/7bd58c1c63463f3390d8763cb1b60289.json b/src/plugins/wp/tests/wp_acsl/oracle_qualif/assigned_initialized_memtyped.0.session/cache/7bd58c1c63463f3390d8763cb1b60289.json
new file mode 100644
index 00000000000..b153fc44ecf
--- /dev/null
+++ b/src/plugins/wp/tests/wp_acsl/oracle_qualif/assigned_initialized_memtyped.0.session/cache/7bd58c1c63463f3390d8763cb1b60289.json
@@ -0,0 +1,2 @@
+{ "prover": "Alt-Ergo:2.0.0", "verdict": "valid", "time": 0.0074,
+  "steps": 16 }
diff --git a/src/plugins/wp/tests/wp_acsl/oracle_qualif/assigned_initialized_memtyped.0.session/cache/853bc2c32f8d7202db06cd790b63f160.json b/src/plugins/wp/tests/wp_acsl/oracle_qualif/assigned_initialized_memtyped.0.session/cache/853bc2c32f8d7202db06cd790b63f160.json
new file mode 100644
index 00000000000..9e5ed808f80
--- /dev/null
+++ b/src/plugins/wp/tests/wp_acsl/oracle_qualif/assigned_initialized_memtyped.0.session/cache/853bc2c32f8d7202db06cd790b63f160.json
@@ -0,0 +1,2 @@
+{ "prover": "Alt-Ergo:2.0.0", "verdict": "valid", "time": 0.0077,
+  "steps": 19 }
diff --git a/src/plugins/wp/tests/wp_acsl/oracle_qualif/assigned_initialized_memtyped.0.session/cache/87784d16e7bf7c3e607493bd07398ff0.json b/src/plugins/wp/tests/wp_acsl/oracle_qualif/assigned_initialized_memtyped.0.session/cache/87784d16e7bf7c3e607493bd07398ff0.json
new file mode 100644
index 00000000000..5139c3d8c4c
--- /dev/null
+++ b/src/plugins/wp/tests/wp_acsl/oracle_qualif/assigned_initialized_memtyped.0.session/cache/87784d16e7bf7c3e607493bd07398ff0.json
@@ -0,0 +1,2 @@
+{ "prover": "Alt-Ergo:2.0.0", "verdict": "valid", "time": 0.0072,
+  "steps": 17 }
diff --git a/src/plugins/wp/tests/wp_acsl/oracle_qualif/assigned_initialized_memtyped.0.session/cache/88cebc928f7f09c8404f0f551912aac0.json b/src/plugins/wp/tests/wp_acsl/oracle_qualif/assigned_initialized_memtyped.0.session/cache/88cebc928f7f09c8404f0f551912aac0.json
new file mode 100644
index 00000000000..f1c71a09f6f
--- /dev/null
+++ b/src/plugins/wp/tests/wp_acsl/oracle_qualif/assigned_initialized_memtyped.0.session/cache/88cebc928f7f09c8404f0f551912aac0.json
@@ -0,0 +1 @@
+{ "prover": "Alt-Ergo:2.0.0", "verdict": "valid", "time": 0.02, "steps": 91 }
diff --git a/src/plugins/wp/tests/wp_acsl/oracle_qualif/assigned_initialized_memtyped.0.session/cache/ba3b33e2aa1b2fcd91adf55c7c60b152.json b/src/plugins/wp/tests/wp_acsl/oracle_qualif/assigned_initialized_memtyped.0.session/cache/ba3b33e2aa1b2fcd91adf55c7c60b152.json
new file mode 100644
index 00000000000..ef3ecf82401
--- /dev/null
+++ b/src/plugins/wp/tests/wp_acsl/oracle_qualif/assigned_initialized_memtyped.0.session/cache/ba3b33e2aa1b2fcd91adf55c7c60b152.json
@@ -0,0 +1,2 @@
+{ "prover": "Alt-Ergo:2.0.0", "verdict": "valid", "time": 0.0098,
+  "steps": 66 }
diff --git a/src/plugins/wp/tests/wp_acsl/oracle_qualif/initialized_memtyped.0.session/cache/0c8d8229fd1113c3aaac6d045c5ec17a.json b/src/plugins/wp/tests/wp_acsl/oracle_qualif/initialized_memtyped.0.session/cache/0c8d8229fd1113c3aaac6d045c5ec17a.json
new file mode 100644
index 00000000000..56c39550428
--- /dev/null
+++ b/src/plugins/wp/tests/wp_acsl/oracle_qualif/initialized_memtyped.0.session/cache/0c8d8229fd1113c3aaac6d045c5ec17a.json
@@ -0,0 +1 @@
+{ "prover": "Alt-Ergo:2.0.0", "verdict": "unknown" }
diff --git a/src/plugins/wp/tests/wp_acsl/oracle_qualif/initialized_memtyped.0.session/cache/22d831911a6e3b613da9488f25950dfa.json b/src/plugins/wp/tests/wp_acsl/oracle_qualif/initialized_memtyped.0.session/cache/22d831911a6e3b613da9488f25950dfa.json
new file mode 100644
index 00000000000..56c39550428
--- /dev/null
+++ b/src/plugins/wp/tests/wp_acsl/oracle_qualif/initialized_memtyped.0.session/cache/22d831911a6e3b613da9488f25950dfa.json
@@ -0,0 +1 @@
+{ "prover": "Alt-Ergo:2.0.0", "verdict": "unknown" }
diff --git a/src/plugins/wp/tests/wp_acsl/oracle_qualif/initialized_memtyped.0.session/cache/45889d9c2cc0ab362df5992931e4e411.json b/src/plugins/wp/tests/wp_acsl/oracle_qualif/initialized_memtyped.0.session/cache/45889d9c2cc0ab362df5992931e4e411.json
new file mode 100644
index 00000000000..56c39550428
--- /dev/null
+++ b/src/plugins/wp/tests/wp_acsl/oracle_qualif/initialized_memtyped.0.session/cache/45889d9c2cc0ab362df5992931e4e411.json
@@ -0,0 +1 @@
+{ "prover": "Alt-Ergo:2.0.0", "verdict": "unknown" }
diff --git a/src/plugins/wp/tests/wp_acsl/oracle_qualif/initialized_memtyped.0.session/cache/5eb01b7fcbf37ae8cdb071894915cf4e.json b/src/plugins/wp/tests/wp_acsl/oracle_qualif/initialized_memtyped.0.session/cache/5eb01b7fcbf37ae8cdb071894915cf4e.json
new file mode 100644
index 00000000000..56c39550428
--- /dev/null
+++ b/src/plugins/wp/tests/wp_acsl/oracle_qualif/initialized_memtyped.0.session/cache/5eb01b7fcbf37ae8cdb071894915cf4e.json
@@ -0,0 +1 @@
+{ "prover": "Alt-Ergo:2.0.0", "verdict": "unknown" }
diff --git a/src/plugins/wp/tests/wp_acsl/oracle_qualif/initialized_memtyped.0.session/cache/743d15e7563acf247b9f2a22711598a4.json b/src/plugins/wp/tests/wp_acsl/oracle_qualif/initialized_memtyped.0.session/cache/743d15e7563acf247b9f2a22711598a4.json
new file mode 100644
index 00000000000..56c39550428
--- /dev/null
+++ b/src/plugins/wp/tests/wp_acsl/oracle_qualif/initialized_memtyped.0.session/cache/743d15e7563acf247b9f2a22711598a4.json
@@ -0,0 +1 @@
+{ "prover": "Alt-Ergo:2.0.0", "verdict": "unknown" }
diff --git a/src/plugins/wp/tests/wp_acsl/oracle_qualif/initialized_memtyped.0.session/cache/98d3ad4d3d19397488a568e130e4a373.json b/src/plugins/wp/tests/wp_acsl/oracle_qualif/initialized_memtyped.0.session/cache/98d3ad4d3d19397488a568e130e4a373.json
new file mode 100644
index 00000000000..56c39550428
--- /dev/null
+++ b/src/plugins/wp/tests/wp_acsl/oracle_qualif/initialized_memtyped.0.session/cache/98d3ad4d3d19397488a568e130e4a373.json
@@ -0,0 +1 @@
+{ "prover": "Alt-Ergo:2.0.0", "verdict": "unknown" }
diff --git a/src/plugins/wp/tests/wp_acsl/oracle_qualif/initialized_memtyped.0.session/cache/a3f6368cb0806f34fc5eb60b1a8eb93c.json b/src/plugins/wp/tests/wp_acsl/oracle_qualif/initialized_memtyped.0.session/cache/a3f6368cb0806f34fc5eb60b1a8eb93c.json
new file mode 100644
index 00000000000..56c39550428
--- /dev/null
+++ b/src/plugins/wp/tests/wp_acsl/oracle_qualif/initialized_memtyped.0.session/cache/a3f6368cb0806f34fc5eb60b1a8eb93c.json
@@ -0,0 +1 @@
+{ "prover": "Alt-Ergo:2.0.0", "verdict": "unknown" }
diff --git a/src/plugins/wp/tests/wp_acsl/oracle_qualif/initialized_memtyped.0.session/cache/af0d67d49865f04c3f4d3216185761aa.json b/src/plugins/wp/tests/wp_acsl/oracle_qualif/initialized_memtyped.0.session/cache/af0d67d49865f04c3f4d3216185761aa.json
new file mode 100644
index 00000000000..56c39550428
--- /dev/null
+++ b/src/plugins/wp/tests/wp_acsl/oracle_qualif/initialized_memtyped.0.session/cache/af0d67d49865f04c3f4d3216185761aa.json
@@ -0,0 +1 @@
+{ "prover": "Alt-Ergo:2.0.0", "verdict": "unknown" }
diff --git a/src/plugins/wp/tests/wp_acsl/oracle_qualif/initialized_memtyped.0.session/cache/d0bcf57829c78e344070c1106612dc8b.json b/src/plugins/wp/tests/wp_acsl/oracle_qualif/initialized_memtyped.0.session/cache/d0bcf57829c78e344070c1106612dc8b.json
new file mode 100644
index 00000000000..56c39550428
--- /dev/null
+++ b/src/plugins/wp/tests/wp_acsl/oracle_qualif/initialized_memtyped.0.session/cache/d0bcf57829c78e344070c1106612dc8b.json
@@ -0,0 +1 @@
+{ "prover": "Alt-Ergo:2.0.0", "verdict": "unknown" }
diff --git a/src/plugins/wp/tests/wp_acsl/oracle_qualif/initialized_memtyped.0.session/cache/d543dec067259b4ba816ad79e9be5b57.json b/src/plugins/wp/tests/wp_acsl/oracle_qualif/initialized_memtyped.0.session/cache/d543dec067259b4ba816ad79e9be5b57.json
new file mode 100644
index 00000000000..56c39550428
--- /dev/null
+++ b/src/plugins/wp/tests/wp_acsl/oracle_qualif/initialized_memtyped.0.session/cache/d543dec067259b4ba816ad79e9be5b57.json
@@ -0,0 +1 @@
+{ "prover": "Alt-Ergo:2.0.0", "verdict": "unknown" }
diff --git a/src/plugins/wp/tests/wp_acsl/oracle_qualif/initialized_memtyped.0.session/cache/d7a062a09dde68021c1bbec999efc80a.json b/src/plugins/wp/tests/wp_acsl/oracle_qualif/initialized_memtyped.0.session/cache/d7a062a09dde68021c1bbec999efc80a.json
new file mode 100644
index 00000000000..d0d5f44b1cf
--- /dev/null
+++ b/src/plugins/wp/tests/wp_acsl/oracle_qualif/initialized_memtyped.0.session/cache/d7a062a09dde68021c1bbec999efc80a.json
@@ -0,0 +1,2 @@
+{ "prover": "Alt-Ergo:2.0.0", "verdict": "valid", "time": 0.1426,
+  "steps": 11 }
diff --git a/src/plugins/wp/tests/wp_acsl/oracle_qualif/initialized_memtyped.0.session/cache/fbb3088e2b317a17bfb09f485fab1a28.json b/src/plugins/wp/tests/wp_acsl/oracle_qualif/initialized_memtyped.0.session/cache/fbb3088e2b317a17bfb09f485fab1a28.json
new file mode 100644
index 00000000000..56c39550428
--- /dev/null
+++ b/src/plugins/wp/tests/wp_acsl/oracle_qualif/initialized_memtyped.0.session/cache/fbb3088e2b317a17bfb09f485fab1a28.json
@@ -0,0 +1 @@
+{ "prover": "Alt-Ergo:2.0.0", "verdict": "unknown" }
diff --git a/src/plugins/wp/tests/wp_acsl/oracle_qualif/initialized_memtyped.res.oracle b/src/plugins/wp/tests/wp_acsl/oracle_qualif/initialized_memtyped.res.oracle
index b27ea93eec7..f0add8dd99f 100644
--- a/src/plugins/wp/tests/wp_acsl/oracle_qualif/initialized_memtyped.res.oracle
+++ b/src/plugins/wp/tests/wp_acsl/oracle_qualif/initialized_memtyped.res.oracle
@@ -22,15 +22,15 @@
 [wp] [Alt-Ergo] Goal typed_test_check_unknown_9 : Unsuccess
 [wp] [Alt-Ergo] Goal typed_test_check_unknown_10 : Unsuccess
 [wp] [Alt-Ergo] Goal typed_test_check_unknown_11 : Unsuccess
-[wp] [Alt-Ergo] Goal typed_test_check_provable : Valid
+[wp] [Qed] Goal typed_test_check_qed_ok_8 : Valid
 [wp] [Alt-Ergo] Goal typed_test_check_unknown_12 : Unsuccess
-[wp] [Alt-Ergo] Goal typed_test_check_provable_2 : Valid
+[wp] [Alt-Ergo] Goal typed_test_check_provable : Valid
 [wp] [Alt-Ergo] Goal typed_test_check_unknown_13 : Unsuccess
-[wp] [Alt-Ergo] Goal typed_test_check_provable_3 : Valid
+[wp] [Qed] Goal typed_test_check_qed_ok_9 : Valid
 [wp] Proved goals:   10 / 23
-  Qed:             7 
-  Alt-Ergo:        3  (unsuccess: 13)
+  Qed:             9 
+  Alt-Ergo:        1  (unsuccess: 13)
 ------------------------------------------------------------
  Functions                 WP     Alt-Ergo  Total   Success
-  test                      7        3       23      43.5%
+  test                      9        1       23      43.5%
 ------------------------------------------------------------
-- 
GitLab