From 90676872836e95fa2816910ca92f640de3bdbb32 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Loi=CC=88c=20Correnson?= <loic.correnson@cea.fr>
Date: Thu, 15 Oct 2020 12:27:53 +0200
Subject: [PATCH] [wp] renamed is-array predicates

---
 src/plugins/wp/Cvalues.ml                     |  13 +-
 .../wp_acsl/oracle/assigns_range.res.oracle   |  10 +-
 .../wp_acsl/oracle/chunk_typing.res.oracle    |   2 +-
 .../wp/tests/wp_acsl/oracle/equal.res.oracle  |  10 +-
 .../wp_acsl/oracle/funvar_inv.0.res.oracle    |  12 +-
 .../wp_acsl/oracle/init_label.res.oracle      |   4 +-
 .../wp_acsl/oracle/init_value.0.res.oracle    | 174 ++++++++----------
 .../wp_acsl/oracle/init_value.1.res.oracle    |  79 ++++----
 .../wp/tests/wp_acsl/oracle/logic.res.oracle  |   8 +-
 .../wp/tests/wp_acsl/oracle/record.res.oracle |   2 +-
 .../wp/tests/wp_bts/oracle/bts788.res.oracle  |   4 +-
 .../tests/wp_hoare/oracle/logicarr.res.oracle |  12 +-
 .../oracle/reference_and_struct.res.oracle    |   4 +-
 .../oracle/reference_array.res.oracle         |  20 +-
 .../wp_plugin/oracle/init_const.res.oracle    |   4 +-
 .../wp_plugin/oracle/injector.res.oracle      |   8 +-
 .../wp_plugin/oracle/overarray.res.oracle     |   8 +-
 .../oracle/array_initialized.0.res.oracle     |   4 +-
 .../tests/wp_typed/oracle/frame.0.res.oracle  |   4 +-
 .../tests/wp_typed/oracle/frame.1.res.oracle  |   4 +-
 .../tests/wp_typed/oracle/mvar.0.res.oracle   |   2 +-
 .../tests/wp_typed/oracle/mvar.1.res.oracle   |   2 +-
 .../oracle/struct_array_type.res.oracle       |  11 +-
 .../wp_typed/oracle/unit_matrix.0.res.oracle  |   4 +-
 .../wp_typed/oracle/unit_matrix.1.res.oracle  |   4 +-
 .../wp_typed/oracle/user_collect.0.res.oracle |  42 ++---
 .../wp_typed/oracle/user_collect.1.res.oracle |  42 ++---
 .../wp_typed/oracle/user_init.0.res.oracle    |  60 +++---
 .../wp_typed/oracle/user_init.1.res.oracle    |  60 +++---
 .../script/init_t2_v3_loop_assigns_part2.json |   4 +-
 .../script/init_t2_v3_loop_assigns_part3.json |   4 +-
 31 files changed, 294 insertions(+), 327 deletions(-)

diff --git a/src/plugins/wp/Cvalues.ml b/src/plugins/wp/Cvalues.ml
index 216b2cedafe..a56d4459849 100644
--- a/src/plugins/wp/Cvalues.ml
+++ b/src/plugins/wp/Cvalues.ml
@@ -126,17 +126,14 @@ struct
 
   let array_name te ds =
     let dim = List.length ds in
+    let pp_dim fmt d = if d > 1 then Format.fprintf fmt "_d%d" d in
     match te with
     | C_int i ->
-        Format.asprintf "%sArray%d_%a" C.prefix dim model_int i
-    | C_float _ ->
-        Format.asprintf "%sArray%d_float" C.prefix dim
-    | C_pointer _ ->
-        Format.asprintf "%sArray%d_pointer" C.prefix dim
+        Format.asprintf "%sArray%a_%a" C.prefix pp_dim dim model_int i
     | C_comp c ->
-        Format.asprintf "%sArray%d%s" C.prefix dim (Lang.comp_id c)
-    | C_array _ ->
-        Wp_parameters.fatal "Unflatten array (%s %a)" C.prefix Ctypes.pretty te
+        Format.asprintf "%sArray%a_%s" C.prefix pp_dim dim (Lang.comp_id c)
+    | C_float _ | C_pointer _ | C_array _ ->
+        assert false
 
   let rec is_obj obj t =
     match obj with
diff --git a/src/plugins/wp/tests/wp_acsl/oracle/assigns_range.res.oracle b/src/plugins/wp/tests/wp_acsl/oracle/assigns_range.res.oracle
index 47e610fd265..221a2fec8a8 100644
--- a/src/plugins/wp/tests/wp_acsl/oracle/assigns_range.res.oracle
+++ b/src/plugins/wp/tests/wp_acsl/oracle/assigns_range.res.oracle
@@ -92,7 +92,7 @@ Goal Instance of 'Pre-condition (file tests/wp_acsl/assigns_range.i, line 23) in
 Assume {
   Type: is_sint32(i) /\ is_sint32(j).
   (* Heap *)
-  Type: IsArray1_sint32(t2_0) /\ IsArray1_sint32(t3_0).
+  Type: IsArray_sint32(t2_0) /\ IsArray_sint32(t3_0).
   (* Pre-condition *)
   Have: (0 <= i) /\ (i <= j) /\ (j <= 19).
   (* Call 'assigns_t1_an_element' *)
@@ -153,7 +153,7 @@ Call Effect at line 57
 Assume {
   Type: is_sint32(i).
   (* Heap *)
-  Type: IsArray1_sint32(t2_0).
+  Type: IsArray_sint32(t2_0).
   (* Goal *)
   When: ((-2) <= i) /\ (i <= 19).
   (* Pre-condition *)
@@ -173,7 +173,7 @@ Call Effect at line 57
 Assume {
   Type: is_sint32(i).
   (* Heap *)
-  Type: IsArray1_sint32(t2_0).
+  Type: IsArray_sint32(t2_0).
   (* Goal *)
   When: ((-2) <= i) /\ (i <= 19).
   (* Pre-condition *)
@@ -204,7 +204,7 @@ Call Effect at line 65
 Assume {
   Type: is_sint32(i) /\ is_sint32(j).
   (* Heap *)
-  Type: IsArray1_sint32(t4_0).
+  Type: IsArray_sint32(t4_0).
   (* Goal *)
   When: 0 <= j.
   (* Pre-condition *)
@@ -222,7 +222,7 @@ Call Effect at line 65
 Assume {
   Type: is_sint32(i) /\ is_sint32(j).
   (* Heap *)
-  Type: IsArray1_sint32(t4_0).
+  Type: IsArray_sint32(t4_0).
   (* Goal *)
   When: 0 <= j.
   (* Pre-condition *)
diff --git a/src/plugins/wp/tests/wp_acsl/oracle/chunk_typing.res.oracle b/src/plugins/wp/tests/wp_acsl/oracle/chunk_typing.res.oracle
index e9965d8c184..e139ffdc57f 100644
--- a/src/plugins/wp/tests/wp_acsl/oracle/chunk_typing.res.oracle
+++ b/src/plugins/wp/tests/wp_acsl/oracle/chunk_typing.res.oracle
@@ -31,7 +31,7 @@ Let a_20 = a_9[shift_sint32(i32_0, i)].
 Let a_21 = a_11[shift_uint32(u32_0, i)].
 Let a_22 = a_13[shift_sint64(i64_0, i)].
 Assume {
-  Type: IsArray1_sint8(x) /\ is_sint16_chunk(Mint_1) /\
+  Type: IsArray_sint8(x) /\ is_sint16_chunk(Mint_1) /\
       is_sint32_chunk(Mint_3) /\ is_sint64_chunk(Mint_5) /\
       is_sint8_chunk(Mchar_0) /\ is_uint16_chunk(Mint_2) /\
       is_uint32_chunk(Mint_4) /\ is_uint64_chunk(Mint_6) /\
diff --git a/src/plugins/wp/tests/wp_acsl/oracle/equal.res.oracle b/src/plugins/wp/tests/wp_acsl/oracle/equal.res.oracle
index a543f1f54a2..202dde2b9d6 100644
--- a/src/plugins/wp/tests/wp_acsl/oracle/equal.res.oracle
+++ b/src/plugins/wp/tests/wp_acsl/oracle/equal.res.oracle
@@ -10,7 +10,7 @@ Goal Post-condition (file tests/wp_acsl/equal.i, line 22) in 'simple_array':
 Let x = t0_0[0].
 Let x_1 = t0_0[1].
 Assume {
-  Type: IsArray1_sint32(t0_0) /\ IsArray1_sint32(t1_0) /\ is_sint32(x) /\
+  Type: IsArray_sint32(t0_0) /\ IsArray_sint32(t1_0) /\ is_sint32(x) /\
       is_sint32(x_1).
 }
 Prove: EqArray1_int(2, t0_0, t1_0[0 <- x][1 <- x_1]).
@@ -32,8 +32,8 @@ Goal Post-condition (file tests/wp_acsl/equal.i, line 28) in 'with_array_struct'
 Let a = st0_0.F2_St_tab.
 Let a_1 = st1_0.F2_St_tab.
 Assume {
-  Type: IsS2_St(st0_0) /\ IsS2_St(st1_0) /\ IsArray1_sint32(a) /\
-      IsArray1_sint32(a_1).
+  Type: IsS2_St(st0_0) /\ IsS2_St(st1_0) /\ IsArray_sint32(a) /\
+      IsArray_sint32(a_1).
   (* Goal *)
   When: EqArray1_int(10, a, a_1).
 }
@@ -52,8 +52,8 @@ Let a_3 = q1_0.F4_Q_qs.
 Let a_4 = q0_0.F4_Q_qt.
 Let a_5 = q1_0.F4_Q_qt.
 Assume {
-  Type: IsS4_Q(q0_0) /\ IsS4_Q(q1_0) /\ IsArray1_sint32(a_4) /\
-      IsArray1_sint32(a_5) /\ IsS1_S(a_2) /\ IsS1_S(a_3).
+  Type: IsS4_Q(q0_0) /\ IsS4_Q(q1_0) /\ IsArray_sint32(a_4) /\
+      IsArray_sint32(a_5) /\ IsS1_S(a_2) /\ IsS1_S(a_3).
   (* Heap *)
   Type: (region(a_1.base) <= 0) /\ (region(a.base) <= 0).
   (* Goal *)
diff --git a/src/plugins/wp/tests/wp_acsl/oracle/funvar_inv.0.res.oracle b/src/plugins/wp/tests/wp_acsl/oracle/funvar_inv.0.res.oracle
index a6492896347..dcd51036376 100644
--- a/src/plugins/wp/tests/wp_acsl/oracle/funvar_inv.0.res.oracle
+++ b/src/plugins/wp/tests/wp_acsl/oracle/funvar_inv.0.res.oracle
@@ -26,7 +26,7 @@ Let x = G[0].
 Assume {
   Type: is_sint32(i) /\ is_sint32(x) /\ is_sint32(G[1]).
   (* Heap *)
-  Type: IsArray1_sint32(G).
+  Type: IsArray_sint32(G).
   If i <= 3
   Then { (* Else *) Have: G[i] = 0. }
 }
@@ -42,7 +42,7 @@ Let x = G[0].
 Assume {
   Type: is_sint32(i) /\ is_sint32(x).
   (* Heap *)
-  Type: IsArray1_sint32(G).
+  Type: IsArray_sint32(G).
   (* Goal *)
   When: (x != 0) /\ (G[1] = 0).
   If i <= 3
@@ -68,7 +68,7 @@ Let x = G[0].
 Assume {
   Type: is_sint32(i) /\ is_sint32(x) /\ is_sint32(G[1]).
   (* Heap *)
-  Type: IsArray1_sint32(G).
+  Type: IsArray_sint32(G).
   If i <= 3
   Then { (* Else *) Have: G[i] = 0. }
 }
@@ -84,7 +84,7 @@ Let x = G[0].
 Assume {
   Type: is_sint32(i) /\ is_sint32(x).
   (* Heap *)
-  Type: IsArray1_sint32(G).
+  Type: IsArray_sint32(G).
   (* Goal *)
   When: (x != 0) /\ (G[1] = 0).
   If i <= 3
@@ -110,7 +110,7 @@ Let x = G[0].
 Assume {
   Type: is_sint32(i) /\ is_sint32(x) /\ is_sint32(G[1]).
   (* Heap *)
-  Type: IsArray1_sint32(G).
+  Type: IsArray_sint32(G).
   If i <= 3
   Then { (* Else *) Have: G[i] = 0. }
 }
@@ -126,7 +126,7 @@ Let x = G[0].
 Assume {
   Type: is_sint32(i) /\ is_sint32(x).
   (* Heap *)
-  Type: IsArray1_sint32(G).
+  Type: IsArray_sint32(G).
   (* Goal *)
   When: (x != 0) /\ (G[1] = 0).
   If i <= 3
diff --git a/src/plugins/wp/tests/wp_acsl/oracle/init_label.res.oracle b/src/plugins/wp/tests/wp_acsl/oracle/init_label.res.oracle
index d6d7a763dab..af8d7fd203c 100644
--- a/src/plugins/wp/tests/wp_acsl/oracle/init_label.res.oracle
+++ b/src/plugins/wp/tests/wp_acsl/oracle/init_label.res.oracle
@@ -10,7 +10,7 @@
 
 Goal Post-condition 'KO' in 'extra':
 Let x = A[2].
-Assume { Type: is_sint32(x). (* Heap *) Type: IsArray1_sint32(A). }
+Assume { Type: is_sint32(x). (* Heap *) Type: IsArray_sint32(A). }
 Prove: x = 12.
 
 ------------------------------------------------------------
@@ -29,7 +29,7 @@ Prove: true.
 Goal Post-condition 'OK' in 'job':
 Let x = A[2].
 Assume {
-  Type: IsArray1_sint32(A) /\ IsArray1_sint32(A_1) /\ is_sint32(x).
+  Type: IsArray_sint32(A) /\ IsArray_sint32(A_1) /\ is_sint32(x).
   (* Initializer *)
   Init: A_1[0] = 10.
   (* Initializer *)
diff --git a/src/plugins/wp/tests/wp_acsl/oracle/init_value.0.res.oracle b/src/plugins/wp/tests/wp_acsl/oracle/init_value.0.res.oracle
index c072c17ac8b..3c0bd768f4e 100644
--- a/src/plugins/wp/tests/wp_acsl/oracle/init_value.0.res.oracle
+++ b/src/plugins/wp/tests/wp_acsl/oracle/init_value.0.res.oracle
@@ -14,7 +14,7 @@ Let x_3 = ta1_0[3].
 Assume {
   Type: is_sint32(x_1) /\ is_sint32(x_2) /\ is_sint32(x_3) /\ is_sint32(x).
   (* Heap *)
-  Type: IsArray1_sint32(ta1_0).
+  Type: IsArray_sint32(ta1_0).
   (* Initializer *)
   Init: forall i : Z. ((0 <= i) -> ((i <= 1) -> (ta1_0[i] = 0))).
   (* Initializer *)
@@ -34,7 +34,7 @@ Assume {
   Type: is_sint32(ta1_0[0]) /\ is_sint32(ta1_0[1]) /\ is_sint32(ta1_0[3]) /\
       is_sint32(x).
   (* Heap *)
-  Type: IsArray1_sint32(ta1_0).
+  Type: IsArray_sint32(ta1_0).
   (* Initializer *)
   Init: forall i : Z. ((0 <= i) -> ((i <= 1) -> (ta1_0[i] = 0))).
   (* Initializer *)
@@ -55,7 +55,7 @@ Assume {
   Type: is_sint32(ta1_0[0]) /\ is_sint32(ta1_0[1]) /\ is_sint32(x_1) /\
       is_sint32(x).
   (* Heap *)
-  Type: IsArray1_sint32(ta1_0).
+  Type: IsArray_sint32(ta1_0).
   (* Initializer *)
   Init: forall i : Z. ((0 <= i) -> ((i <= 1) -> (ta1_0[i] = 0))).
   (* Initializer *)
@@ -79,7 +79,7 @@ Let x_2 = ta2_0[4].
 Assume {
   Type: is_sint32(x) /\ is_sint32(x_1) /\ is_sint32(x_2).
   (* Heap *)
-  Type: IsArray1_sint32(ta2_0).
+  Type: IsArray_sint32(ta2_0).
   (* Initializer *)
   Init: forall i : Z. ((0 <= i) -> ((i <= 1) -> (ta2_0[i] = 0))).
   (* Initializer *)
@@ -96,7 +96,7 @@ Let x = ta2_0[4].
 Assume {
   Type: is_sint32(ta2_0[0]) /\ is_sint32(ta2_0[1]) /\ is_sint32(x).
   (* Heap *)
-  Type: IsArray1_sint32(ta2_0).
+  Type: IsArray_sint32(ta2_0).
   (* Initializer *)
   Init: forall i : Z. ((0 <= i) -> ((i <= 1) -> (ta2_0[i] = 0))).
   (* Initializer *)
@@ -113,7 +113,7 @@ Let x = ta2_0[1].
 Assume {
   Type: is_sint32(ta2_0[0]) /\ is_sint32(x) /\ is_sint32(ta2_0[4]).
   (* Heap *)
-  Type: IsArray1_sint32(ta2_0).
+  Type: IsArray_sint32(ta2_0).
   (* Initializer *)
   Init: forall i : Z. ((0 <= i) -> ((i <= 1) -> (ta2_0[i] = 0))).
   (* Initializer *)
@@ -137,8 +137,8 @@ Assume {
   Type: is_sint32(x_1) /\ is_sint32(x) /\ is_sint32(ta2_0[4]) /\
       is_sint32(x_2) /\ is_sint32(x_3).
   (* Heap *)
-  Type: IsArray1_sint32(ta1_0) /\ IsArray1_sint32(ta2_0) /\
-      IsArray1_sint32(ta3_0).
+  Type: IsArray_sint32(ta1_0) /\ IsArray_sint32(ta2_0) /\
+      IsArray_sint32(ta3_0).
   (* Initializer *)
   Init: forall i : Z. ((i <= 0) -> ((0 <= i) -> (ta3_0[i] = 0))).
   (* Initializer *)
@@ -176,8 +176,8 @@ Assume {
   Type: is_sint32(x_1) /\ is_sint32(x) /\ is_sint32(ta2_0[4]) /\
       is_sint32(x_2) /\ is_sint32(ta3_0[2]).
   (* Heap *)
-  Type: IsArray1_sint32(ta1_0) /\ IsArray1_sint32(ta2_0) /\
-      IsArray1_sint32(ta3_0).
+  Type: IsArray_sint32(ta1_0) /\ IsArray_sint32(ta2_0) /\
+      IsArray_sint32(ta3_0).
   (* Initializer *)
   Init: forall i : Z. ((i <= 0) -> ((0 <= i) -> (ta3_0[i] = 0))).
   (* Initializer *)
@@ -215,8 +215,8 @@ Assume {
   Type: is_sint32(x_1) /\ is_sint32(x) /\ is_sint32(ta2_0[4]) /\
       is_sint32(ta3_0[0]) /\ is_sint32(x_2).
   (* Heap *)
-  Type: IsArray1_sint32(ta1_0) /\ IsArray1_sint32(ta2_0) /\
-      IsArray1_sint32(ta3_0).
+  Type: IsArray_sint32(ta1_0) /\ IsArray_sint32(ta2_0) /\
+      IsArray_sint32(ta3_0).
   (* Initializer *)
   Init: forall i : Z. ((i <= 0) -> ((0 <= i) -> (ta3_0[i] = 0))).
   (* Initializer *)
@@ -254,8 +254,8 @@ Assume {
   Type: is_sint32(x_1) /\ is_sint32(x) /\ is_sint32(x_2) /\
       is_sint32(ta3_0[0]) /\ is_sint32(ta3_0[2]).
   (* Heap *)
-  Type: IsArray1_sint32(ta1_0) /\ IsArray1_sint32(ta2_0) /\
-      IsArray1_sint32(ta3_0).
+  Type: IsArray_sint32(ta1_0) /\ IsArray_sint32(ta2_0) /\
+      IsArray_sint32(ta3_0).
   (* Initializer *)
   Init: forall i : Z. ((i <= 0) -> ((0 <= i) -> (ta3_0[i] = 0))).
   (* Initializer *)
@@ -300,7 +300,7 @@ Assume {
   Type: IsS5(a_1) /\ IsS5(a_2) /\ IsS5(a_3) /\ is_sint32(a_1.F5_a) /\
       is_sint32(x_2) /\ is_sint32(x_1) /\ is_sint32(x).
   (* Heap *)
-  Type: IsArray1S5(ts1_0).
+  Type: IsArray_S5(ts1_0).
   (* Initializer *)
   Init: forall i : Z. let a_4 = ts1_0[i] in ((0 <= i) -> ((i <= 1) ->
       (((a_4.F5_a) = 0) /\ ((a_4.F5_b) = 0) /\ ((a_4.F5_c) = 0)))).
@@ -329,7 +329,7 @@ Assume {
       is_sint32(a_1.F5_a) /\ is_sint32(x_2) /\ is_sint32(x_1) /\
       is_sint32(x).
   (* Heap *)
-  Type: IsArray1S5(ts1_0).
+  Type: IsArray_S5(ts1_0).
   (* Initializer *)
   Init: forall i : Z. let a_2 = ts1_0[i] in ((0 <= i) -> ((i <= 1) ->
       (((a_2.F5_a) = 0) /\ ((a_2.F5_b) = 0) /\ ((a_2.F5_c) = 0)))).
@@ -358,7 +358,7 @@ Assume {
   Type: IsS5(a_1) /\ IsS5(ts1_0[1]) /\ IsS5(ts1_0[3]) /\ is_sint32(x_3) /\
       is_sint32(x_2) /\ is_sint32(x_1) /\ is_sint32(x).
   (* Heap *)
-  Type: IsArray1S5(ts1_0).
+  Type: IsArray_S5(ts1_0).
   (* Initializer *)
   Init: forall i : Z. let a_2 = ts1_0[i] in ((0 <= i) -> ((i <= 1) ->
       (((a_2.F5_a) = 0) /\ ((a_2.F5_b) = 0) /\ ((a_2.F5_c) = 0)))).
@@ -402,10 +402,9 @@ Assume {
       is_sint32(a_6) /\ is_sint32(a_7[1]) /\ is_sint32(a_7[2]) /\
       is_sint32(a_1) /\ is_sint32(a[5]).
   (* Heap *)
-  Type: IsArray1_sint32(t) /\ IsArray1_sint32(t1_0) /\
-      IsArray1_uint8(tab_0) /\ IsS1_S(s) /\ IsS2_St(st_0) /\
-      IsS3_Sc(sc0_0) /\ IsS3_Sc(sc1_0) /\ IsS3_Sc(sc2_0) /\ IsS3_Sc(sc3_0) /\
-      IsS3_Sc(sq0_0) /\ IsU4_U(u).
+  Type: IsArray_sint32(t) /\ IsArray_sint32(t1_0) /\ IsArray_uint8(tab_0) /\
+      IsS1_S(s) /\ IsS2_St(st_0) /\ IsS3_Sc(sc0_0) /\ IsS3_Sc(sc1_0) /\
+      IsS3_Sc(sc2_0) /\ IsS3_Sc(sc3_0) /\ IsS3_Sc(sq0_0) /\ IsU4_U(u).
   (* Initializer *)
   Init: x_5 = (-1).
   (* Initializer *)
@@ -512,10 +511,9 @@ Assume {
       is_sint32(a_6) /\ is_sint32(a_7[1]) /\ is_sint32(a_7[2]) /\
       is_sint32(a_1) /\ is_sint32(a[5]).
   (* Heap *)
-  Type: IsArray1_sint32(t) /\ IsArray1_sint32(t1_0) /\
-      IsArray1_uint8(tab_0) /\ IsS1_S(s) /\ IsS2_St(st_0) /\
-      IsS3_Sc(sc0_0) /\ IsS3_Sc(sc1_0) /\ IsS3_Sc(sc2_0) /\ IsS3_Sc(sc3_0) /\
-      IsS3_Sc(sq0_0) /\ IsU4_U(u).
+  Type: IsArray_sint32(t) /\ IsArray_sint32(t1_0) /\ IsArray_uint8(tab_0) /\
+      IsS1_S(s) /\ IsS2_St(st_0) /\ IsS3_Sc(sc0_0) /\ IsS3_Sc(sc1_0) /\
+      IsS3_Sc(sc2_0) /\ IsS3_Sc(sc3_0) /\ IsS3_Sc(sq0_0) /\ IsU4_U(u).
   (* Initializer *)
   Init: x_5 = (-1).
   (* Initializer *)
@@ -622,10 +620,9 @@ Assume {
       is_sint32(a_6) /\ is_sint32(a_7[1]) /\ is_sint32(a_7[2]) /\
       is_sint32(a_1) /\ is_sint32(a[5]).
   (* Heap *)
-  Type: IsArray1_sint32(t) /\ IsArray1_sint32(t1_0) /\
-      IsArray1_uint8(tab_0) /\ IsS1_S(s) /\ IsS2_St(st_0) /\
-      IsS3_Sc(sc0_0) /\ IsS3_Sc(sc1_0) /\ IsS3_Sc(sc2_0) /\ IsS3_Sc(sc3_0) /\
-      IsS3_Sc(sq0_0) /\ IsU4_U(u).
+  Type: IsArray_sint32(t) /\ IsArray_sint32(t1_0) /\ IsArray_uint8(tab_0) /\
+      IsS1_S(s) /\ IsS2_St(st_0) /\ IsS3_Sc(sc0_0) /\ IsS3_Sc(sc1_0) /\
+      IsS3_Sc(sc2_0) /\ IsS3_Sc(sc3_0) /\ IsS3_Sc(sq0_0) /\ IsU4_U(u).
   (* Initializer *)
   Init: x_5 = (-1).
   (* Initializer *)
@@ -733,10 +730,9 @@ Assume {
       is_sint32(a_6) /\ is_sint32(a_7[1]) /\ is_sint32(a_7[2]) /\
       is_sint32(a_1) /\ is_sint32(a[5]).
   (* Heap *)
-  Type: IsArray1_sint32(t) /\ IsArray1_sint32(t1_0) /\
-      IsArray1_uint8(tab_0) /\ IsS1_S(s) /\ IsS2_St(st_0) /\
-      IsS3_Sc(sc0_0) /\ IsS3_Sc(sc1_0) /\ IsS3_Sc(sc2_0) /\ IsS3_Sc(sc3_0) /\
-      IsS3_Sc(sq0_0) /\ IsU4_U(u).
+  Type: IsArray_sint32(t) /\ IsArray_sint32(t1_0) /\ IsArray_uint8(tab_0) /\
+      IsS1_S(s) /\ IsS2_St(st_0) /\ IsS3_Sc(sc0_0) /\ IsS3_Sc(sc1_0) /\
+      IsS3_Sc(sc2_0) /\ IsS3_Sc(sc3_0) /\ IsS3_Sc(sq0_0) /\ IsU4_U(u).
   (* Initializer *)
   Init: x_5 = (-1).
   (* Initializer *)
@@ -844,10 +840,9 @@ Assume {
       is_sint32(a_6) /\ is_sint32(a_7[1]) /\ is_sint32(a_7[2]) /\
       is_sint32(a_1) /\ is_sint32(a_8).
   (* Heap *)
-  Type: IsArray1_sint32(t) /\ IsArray1_sint32(t1_0) /\
-      IsArray1_uint8(tab_0) /\ IsS1_S(s) /\ IsS2_St(st_0) /\
-      IsS3_Sc(sc0_0) /\ IsS3_Sc(sc1_0) /\ IsS3_Sc(sc2_0) /\ IsS3_Sc(sc3_0) /\
-      IsS3_Sc(sq0_0) /\ IsU4_U(u).
+  Type: IsArray_sint32(t) /\ IsArray_sint32(t1_0) /\ IsArray_uint8(tab_0) /\
+      IsS1_S(s) /\ IsS2_St(st_0) /\ IsS3_Sc(sc0_0) /\ IsS3_Sc(sc1_0) /\
+      IsS3_Sc(sc2_0) /\ IsS3_Sc(sc3_0) /\ IsS3_Sc(sq0_0) /\ IsU4_U(u).
   (* Initializer *)
   Init: x_5 = (-1).
   (* Initializer *)
@@ -954,10 +949,9 @@ Assume {
       is_sint32(a_6) /\ is_sint32(a_7[1]) /\ is_sint32(a_7[2]) /\
       is_sint32(a_1) /\ is_sint32(a[5]).
   (* Heap *)
-  Type: IsArray1_sint32(t) /\ IsArray1_sint32(t1_0) /\
-      IsArray1_uint8(tab_0) /\ IsS1_S(s) /\ IsS2_St(st_0) /\
-      IsS3_Sc(sc0_0) /\ IsS3_Sc(sc1_0) /\ IsS3_Sc(sc2_0) /\ IsS3_Sc(sc3_0) /\
-      IsS3_Sc(sq0_0) /\ IsU4_U(u).
+  Type: IsArray_sint32(t) /\ IsArray_sint32(t1_0) /\ IsArray_uint8(tab_0) /\
+      IsS1_S(s) /\ IsS2_St(st_0) /\ IsS3_Sc(sc0_0) /\ IsS3_Sc(sc1_0) /\
+      IsS3_Sc(sc2_0) /\ IsS3_Sc(sc3_0) /\ IsS3_Sc(sq0_0) /\ IsU4_U(u).
   (* Initializer *)
   Init: x_5 = (-1).
   (* Initializer *)
@@ -1064,10 +1058,9 @@ Assume {
       is_sint32(a_6) /\ is_sint32(a_7[1]) /\ is_sint32(a_7[2]) /\
       is_sint32(a_1) /\ is_sint32(a[5]).
   (* Heap *)
-  Type: IsArray1_sint32(t) /\ IsArray1_sint32(t1_0) /\
-      IsArray1_uint8(tab_0) /\ IsS1_S(s) /\ IsS2_St(st_0) /\
-      IsS3_Sc(sc0_0) /\ IsS3_Sc(sc1_0) /\ IsS3_Sc(sc2_0) /\ IsS3_Sc(sc3_0) /\
-      IsS3_Sc(sq0_0) /\ IsU4_U(u).
+  Type: IsArray_sint32(t) /\ IsArray_sint32(t1_0) /\ IsArray_uint8(tab_0) /\
+      IsS1_S(s) /\ IsS2_St(st_0) /\ IsS3_Sc(sc0_0) /\ IsS3_Sc(sc1_0) /\
+      IsS3_Sc(sc2_0) /\ IsS3_Sc(sc3_0) /\ IsS3_Sc(sq0_0) /\ IsU4_U(u).
   (* Initializer *)
   Init: x_5 = (-1).
   (* Initializer *)
@@ -1175,10 +1168,9 @@ Assume {
       is_sint32(a_7[1]) /\ is_sint32(a_7[2]) /\ is_sint32(a_1) /\
       is_sint32(a[5]).
   (* Heap *)
-  Type: IsArray1_sint32(t) /\ IsArray1_sint32(t1_0) /\
-      IsArray1_uint8(tab_0) /\ IsS1_S(s) /\ IsS2_St(st_0) /\
-      IsS3_Sc(sc0_0) /\ IsS3_Sc(sc1_0) /\ IsS3_Sc(sc2_0) /\ IsS3_Sc(sc3_0) /\
-      IsS3_Sc(sq0_0) /\ IsU4_U(u).
+  Type: IsArray_sint32(t) /\ IsArray_sint32(t1_0) /\ IsArray_uint8(tab_0) /\
+      IsS1_S(s) /\ IsS2_St(st_0) /\ IsS3_Sc(sc0_0) /\ IsS3_Sc(sc1_0) /\
+      IsS3_Sc(sc2_0) /\ IsS3_Sc(sc3_0) /\ IsS3_Sc(sq0_0) /\ IsU4_U(u).
   (* Initializer *)
   Init: x_5 = (-1).
   (* Initializer *)
@@ -1285,10 +1277,9 @@ Assume {
       is_sint32(a_6) /\ is_sint32(a_7[1]) /\ is_sint32(a_7[2]) /\
       is_sint32(a_1) /\ is_sint32(a[5]).
   (* Heap *)
-  Type: IsArray1_sint32(t) /\ IsArray1_sint32(t1_0) /\
-      IsArray1_uint8(tab_0) /\ IsS1_S(s) /\ IsS2_St(st_0) /\
-      IsS3_Sc(sc0_0) /\ IsS3_Sc(sc1_0) /\ IsS3_Sc(sc2_0) /\ IsS3_Sc(sc3_0) /\
-      IsS3_Sc(sq0_0) /\ IsU4_U(u).
+  Type: IsArray_sint32(t) /\ IsArray_sint32(t1_0) /\ IsArray_uint8(tab_0) /\
+      IsS1_S(s) /\ IsS2_St(st_0) /\ IsS3_Sc(sc0_0) /\ IsS3_Sc(sc1_0) /\
+      IsS3_Sc(sc2_0) /\ IsS3_Sc(sc3_0) /\ IsS3_Sc(sq0_0) /\ IsU4_U(u).
   (* Initializer *)
   Init: x_5 = (-1).
   (* Initializer *)
@@ -1395,10 +1386,9 @@ Assume {
       is_sint32(a_6) /\ is_sint32(a_7[1]) /\ is_sint32(a_7[2]) /\
       is_sint32(a_1) /\ is_sint32(a[5]).
   (* Heap *)
-  Type: IsArray1_sint32(t) /\ IsArray1_sint32(t1_0) /\
-      IsArray1_uint8(tab_0) /\ IsS1_S(s) /\ IsS2_St(st_0) /\
-      IsS3_Sc(sc0_0) /\ IsS3_Sc(sc1_0) /\ IsS3_Sc(sc2_0) /\ IsS3_Sc(sc3_0) /\
-      IsS3_Sc(sq0_0) /\ IsU4_U(u).
+  Type: IsArray_sint32(t) /\ IsArray_sint32(t1_0) /\ IsArray_uint8(tab_0) /\
+      IsS1_S(s) /\ IsS2_St(st_0) /\ IsS3_Sc(sc0_0) /\ IsS3_Sc(sc1_0) /\
+      IsS3_Sc(sc2_0) /\ IsS3_Sc(sc3_0) /\ IsS3_Sc(sq0_0) /\ IsU4_U(u).
   (* Initializer *)
   Init: x_5 = (-1).
   (* Initializer *)
@@ -1505,10 +1495,9 @@ Assume {
       is_sint32(a_6) /\ is_sint32(a_7[1]) /\ is_sint32(a_7[2]) /\
       is_sint32(a_1) /\ is_sint32(a[5]).
   (* Heap *)
-  Type: IsArray1_sint32(t) /\ IsArray1_sint32(t1_0) /\
-      IsArray1_uint8(tab_0) /\ IsS1_S(s) /\ IsS2_St(st_0) /\
-      IsS3_Sc(sc0_0) /\ IsS3_Sc(sc1_0) /\ IsS3_Sc(sc2_0) /\ IsS3_Sc(sc3_0) /\
-      IsS3_Sc(sq0_0) /\ IsU4_U(u).
+  Type: IsArray_sint32(t) /\ IsArray_sint32(t1_0) /\ IsArray_uint8(tab_0) /\
+      IsS1_S(s) /\ IsS2_St(st_0) /\ IsS3_Sc(sc0_0) /\ IsS3_Sc(sc1_0) /\
+      IsS3_Sc(sc2_0) /\ IsS3_Sc(sc3_0) /\ IsS3_Sc(sq0_0) /\ IsU4_U(u).
   (* Initializer *)
   Init: x_5 = (-1).
   (* Initializer *)
@@ -1616,10 +1605,9 @@ Assume {
       is_sint32(a_6) /\ is_sint32(a_7[1]) /\ is_sint32(a_7[2]) /\
       is_sint32(a_1) /\ is_sint32(a[5]).
   (* Heap *)
-  Type: IsArray1_sint32(t) /\ IsArray1_sint32(t1_0) /\
-      IsArray1_uint8(tab_0) /\ IsS1_S(s) /\ IsS2_St(st_0) /\
-      IsS3_Sc(sc0_0) /\ IsS3_Sc(sc1_0) /\ IsS3_Sc(sc2_0) /\ IsS3_Sc(sc3_0) /\
-      IsS3_Sc(sq0_0) /\ IsU4_U(u).
+  Type: IsArray_sint32(t) /\ IsArray_sint32(t1_0) /\ IsArray_uint8(tab_0) /\
+      IsS1_S(s) /\ IsS2_St(st_0) /\ IsS3_Sc(sc0_0) /\ IsS3_Sc(sc1_0) /\
+      IsS3_Sc(sc2_0) /\ IsS3_Sc(sc3_0) /\ IsS3_Sc(sq0_0) /\ IsU4_U(u).
   (* Initializer *)
   Init: x_5 = (-1).
   (* Initializer *)
@@ -1726,10 +1714,9 @@ Assume {
       is_sint32(a_6) /\ is_sint32(a_7[1]) /\ is_sint32(a_7[2]) /\
       is_sint32(a_1) /\ is_sint32(a[5]).
   (* Heap *)
-  Type: IsArray1_sint32(t) /\ IsArray1_sint32(t1_0) /\
-      IsArray1_uint8(tab_0) /\ IsS1_S(s) /\ IsS2_St(st_0) /\
-      IsS3_Sc(sc0_0) /\ IsS3_Sc(sc1_0) /\ IsS3_Sc(sc2_0) /\ IsS3_Sc(sc3_0) /\
-      IsS3_Sc(sq0_0) /\ IsU4_U(u).
+  Type: IsArray_sint32(t) /\ IsArray_sint32(t1_0) /\ IsArray_uint8(tab_0) /\
+      IsS1_S(s) /\ IsS2_St(st_0) /\ IsS3_Sc(sc0_0) /\ IsS3_Sc(sc1_0) /\
+      IsS3_Sc(sc2_0) /\ IsS3_Sc(sc3_0) /\ IsS3_Sc(sq0_0) /\ IsU4_U(u).
   (* Goal *)
   When: (0 <= i) /\ (i <= 31) /\ is_sint32(i).
   (* Initializer *)
@@ -1839,10 +1826,9 @@ Assume {
       is_sint32(a_6) /\ is_sint32(a_8) /\ is_sint32(a_7[2]) /\
       is_sint32(a_1) /\ is_sint32(a[5]).
   (* Heap *)
-  Type: IsArray1_sint32(t) /\ IsArray1_sint32(t1_0) /\
-      IsArray1_uint8(tab_0) /\ IsS1_S(s) /\ IsS2_St(st_0) /\
-      IsS3_Sc(sc0_0) /\ IsS3_Sc(sc1_0) /\ IsS3_Sc(sc2_0) /\ IsS3_Sc(sc3_0) /\
-      IsS3_Sc(sq0_0) /\ IsU4_U(u).
+  Type: IsArray_sint32(t) /\ IsArray_sint32(t1_0) /\ IsArray_uint8(tab_0) /\
+      IsS1_S(s) /\ IsS2_St(st_0) /\ IsS3_Sc(sc0_0) /\ IsS3_Sc(sc1_0) /\
+      IsS3_Sc(sc2_0) /\ IsS3_Sc(sc3_0) /\ IsS3_Sc(sq0_0) /\ IsU4_U(u).
   (* Initializer *)
   Init: x_5 = (-1).
   (* Initializer *)
@@ -1950,10 +1936,9 @@ Assume {
       is_sint32(a_6) /\ is_sint32(a_7[1]) /\ is_sint32(a_8) /\
       is_sint32(a_1) /\ is_sint32(a[5]).
   (* Heap *)
-  Type: IsArray1_sint32(t) /\ IsArray1_sint32(t1_0) /\
-      IsArray1_uint8(tab_0) /\ IsS1_S(s) /\ IsS2_St(st_0) /\
-      IsS3_Sc(sc0_0) /\ IsS3_Sc(sc1_0) /\ IsS3_Sc(sc2_0) /\ IsS3_Sc(sc3_0) /\
-      IsS3_Sc(sq0_0) /\ IsU4_U(u).
+  Type: IsArray_sint32(t) /\ IsArray_sint32(t1_0) /\ IsArray_uint8(tab_0) /\
+      IsS1_S(s) /\ IsS2_St(st_0) /\ IsS3_Sc(sc0_0) /\ IsS3_Sc(sc1_0) /\
+      IsS3_Sc(sc2_0) /\ IsS3_Sc(sc3_0) /\ IsS3_Sc(sq0_0) /\ IsU4_U(u).
   (* Initializer *)
   Init: x_5 = (-1).
   (* Initializer *)
@@ -2060,10 +2045,9 @@ Assume {
       is_sint32(a_6) /\ is_sint32(a_7[1]) /\ is_sint32(a_7[2]) /\
       is_sint32(a_1) /\ is_sint32(a[5]).
   (* Heap *)
-  Type: IsArray1_sint32(t) /\ IsArray1_sint32(t1_0) /\
-      IsArray1_uint8(tab_0) /\ IsS1_S(s) /\ IsS2_St(st_0) /\
-      IsS3_Sc(sc0_0) /\ IsS3_Sc(sc1_0) /\ IsS3_Sc(sc2_0) /\ IsS3_Sc(sc3_0) /\
-      IsS3_Sc(sq0_0) /\ IsU4_U(u).
+  Type: IsArray_sint32(t) /\ IsArray_sint32(t1_0) /\ IsArray_uint8(tab_0) /\
+      IsS1_S(s) /\ IsS2_St(st_0) /\ IsS3_Sc(sc0_0) /\ IsS3_Sc(sc1_0) /\
+      IsS3_Sc(sc2_0) /\ IsS3_Sc(sc3_0) /\ IsS3_Sc(sq0_0) /\ IsU4_U(u).
   (* Goal *)
   When: (0 <= i) /\ (i <= 3).
   (* Initializer *)
@@ -2173,10 +2157,9 @@ Assume {
       is_sint32(a_7[1]) /\ is_sint32(a_7[2]) /\ is_sint32(a_1) /\
       is_sint32(a[5]).
   (* Heap *)
-  Type: IsArray1_sint32(t) /\ IsArray1_sint32(t1_0) /\
-      IsArray1_uint8(tab_0) /\ IsS1_S(s) /\ IsS2_St(st_0) /\
-      IsS3_Sc(sc0_0) /\ IsS3_Sc(sc1_0) /\ IsS3_Sc(sc2_0) /\ IsS3_Sc(sc3_0) /\
-      IsS3_Sc(sq0_0) /\ IsU4_U(u).
+  Type: IsArray_sint32(t) /\ IsArray_sint32(t1_0) /\ IsArray_uint8(tab_0) /\
+      IsS1_S(s) /\ IsS2_St(st_0) /\ IsS3_Sc(sc0_0) /\ IsS3_Sc(sc1_0) /\
+      IsS3_Sc(sc2_0) /\ IsS3_Sc(sc3_0) /\ IsS3_Sc(sq0_0) /\ IsU4_U(u).
   (* Initializer *)
   Init: x_5 = (-1).
   (* Initializer *)
@@ -2283,10 +2266,9 @@ Assume {
       is_sint32(a_6) /\ is_sint32(a_7[1]) /\ is_sint32(a_7[2]) /\
       is_sint32(a_1) /\ is_sint32(a[5]).
   (* Heap *)
-  Type: IsArray1_sint32(t) /\ IsArray1_sint32(t1_0) /\
-      IsArray1_uint8(tab_0) /\ IsS1_S(s) /\ IsS2_St(st_0) /\
-      IsS3_Sc(sc0_0) /\ IsS3_Sc(sc1_0) /\ IsS3_Sc(sc2_0) /\ IsS3_Sc(sc3_0) /\
-      IsS3_Sc(sq0_0) /\ IsU4_U(u).
+  Type: IsArray_sint32(t) /\ IsArray_sint32(t1_0) /\ IsArray_uint8(tab_0) /\
+      IsS1_S(s) /\ IsS2_St(st_0) /\ IsS3_Sc(sc0_0) /\ IsS3_Sc(sc1_0) /\
+      IsS3_Sc(sc2_0) /\ IsS3_Sc(sc3_0) /\ IsS3_Sc(sq0_0) /\ IsU4_U(u).
   (* Goal *)
   When: (6 <= i) /\ (i <= 6).
   (* Initializer *)
@@ -2395,10 +2377,9 @@ Assume {
       is_sint32(a_6) /\ is_sint32(a_7[1]) /\ is_sint32(a_7[2]) /\
       is_sint32(a_1) /\ is_sint32(a[5]).
   (* Heap *)
-  Type: IsArray1_sint32(t) /\ IsArray1_sint32(t1_0) /\
-      IsArray1_uint8(tab_0) /\ IsS1_S(s) /\ IsS2_St(st_0) /\
-      IsS3_Sc(sc0_0) /\ IsS3_Sc(sc1_0) /\ IsS3_Sc(sc2_0) /\ IsS3_Sc(sc3_0) /\
-      IsS3_Sc(sq0_0) /\ IsU4_U(u).
+  Type: IsArray_sint32(t) /\ IsArray_sint32(t1_0) /\ IsArray_uint8(tab_0) /\
+      IsS1_S(s) /\ IsS2_St(st_0) /\ IsS3_Sc(sc0_0) /\ IsS3_Sc(sc1_0) /\
+      IsS3_Sc(sc2_0) /\ IsS3_Sc(sc3_0) /\ IsS3_Sc(sq0_0) /\ IsU4_U(u).
   (* Goal *)
   When: (7 <= i) /\ (i <= 9).
   (* Initializer *)
@@ -2507,10 +2488,9 @@ Assume {
       is_sint32(a_6) /\ is_sint32(a_7[1]) /\ is_sint32(a_7[2]) /\
       is_sint32(a_1) /\ is_sint32(a[5]).
   (* Heap *)
-  Type: IsArray1_sint32(t) /\ IsArray1_sint32(t1_0) /\
-      IsArray1_uint8(tab_0) /\ IsS1_S(s) /\ IsS2_St(st_0) /\
-      IsS3_Sc(sc0_0) /\ IsS3_Sc(sc1_0) /\ IsS3_Sc(sc2_0) /\ IsS3_Sc(sc3_0) /\
-      IsS3_Sc(sq0_0) /\ IsU4_U(u).
+  Type: IsArray_sint32(t) /\ IsArray_sint32(t1_0) /\ IsArray_uint8(tab_0) /\
+      IsS1_S(s) /\ IsS2_St(st_0) /\ IsS3_Sc(sc0_0) /\ IsS3_Sc(sc1_0) /\
+      IsS3_Sc(sc2_0) /\ IsS3_Sc(sc3_0) /\ IsS3_Sc(sq0_0) /\ IsU4_U(u).
   (* Initializer *)
   Init: x_5 = (-1).
   (* Initializer *)
diff --git a/src/plugins/wp/tests/wp_acsl/oracle/init_value.1.res.oracle b/src/plugins/wp/tests/wp_acsl/oracle/init_value.1.res.oracle
index 9501f9dee9b..5f0846a76ea 100644
--- a/src/plugins/wp/tests/wp_acsl/oracle/init_value.1.res.oracle
+++ b/src/plugins/wp/tests/wp_acsl/oracle/init_value.1.res.oracle
@@ -14,7 +14,7 @@ Assume {
   Type: is_sint32(x) /\ is_sint32(x_1) /\ is_sint32(x_2) /\
       is_sint32(ta1_0[4]).
   (* Heap *)
-  Type: IsArray1_sint32(ta1_0).
+  Type: IsArray_sint32(ta1_0).
 }
 Prove: (x_1 = x) /\ (x_2 = x_1).
 
@@ -26,7 +26,7 @@ Assume {
   Type: is_sint32(ta1_0[0]) /\ is_sint32(ta1_0[1]) /\ is_sint32(ta1_0[3]) /\
       is_sint32(x).
   (* Heap *)
-  Type: IsArray1_sint32(ta1_0).
+  Type: IsArray_sint32(ta1_0).
 }
 Prove: x = 0.
 
@@ -38,7 +38,7 @@ Assume {
   Type: is_sint32(ta1_0[0]) /\ is_sint32(ta1_0[1]) /\ is_sint32(x) /\
       is_sint32(ta1_0[4]).
   (* Heap *)
-  Type: IsArray1_sint32(ta1_0).
+  Type: IsArray_sint32(ta1_0).
 }
 Prove: x = 1.
 
@@ -54,7 +54,7 @@ Let x_2 = ta2_0[4].
 Assume {
   Type: is_sint32(x) /\ is_sint32(x_1) /\ is_sint32(x_2).
   (* Heap *)
-  Type: IsArray1_sint32(ta2_0).
+  Type: IsArray_sint32(ta2_0).
 }
 Prove: (x_1 = x) /\ (x_2 = x_1).
 
@@ -65,7 +65,7 @@ Let x = ta2_0[4].
 Assume {
   Type: is_sint32(ta2_0[0]) /\ is_sint32(ta2_0[1]) /\ is_sint32(x).
   (* Heap *)
-  Type: IsArray1_sint32(ta2_0).
+  Type: IsArray_sint32(ta2_0).
 }
 Prove: x = 1.
 
@@ -76,7 +76,7 @@ Let x = ta2_0[1].
 Assume {
   Type: is_sint32(ta2_0[0]) /\ is_sint32(x) /\ is_sint32(ta2_0[4]).
   (* Heap *)
-  Type: IsArray1_sint32(ta2_0).
+  Type: IsArray_sint32(ta2_0).
 }
 Prove: x = 1.
 
@@ -94,8 +94,8 @@ Assume {
   Type: is_sint32(x) /\ is_sint32(x_1) /\ is_sint32(ta2_0[4]) /\
       is_sint32(x_2) /\ is_sint32(x_3).
   (* Heap *)
-  Type: IsArray1_sint32(ta1_0) /\ IsArray1_sint32(ta2_0) /\
-      IsArray1_sint32(ta3_0).
+  Type: IsArray_sint32(ta1_0) /\ IsArray_sint32(ta2_0) /\
+      IsArray_sint32(ta3_0).
 }
 Prove: (x_1 = x) /\ (x_3 = x_2).
 
@@ -107,8 +107,8 @@ Assume {
   Type: is_sint32(ta1_0[2]) /\ is_sint32(ta1_0[4]) /\ is_sint32(ta2_0[4]) /\
       is_sint32(x) /\ is_sint32(ta3_0[2]).
   (* Heap *)
-  Type: IsArray1_sint32(ta1_0) /\ IsArray1_sint32(ta2_0) /\
-      IsArray1_sint32(ta3_0).
+  Type: IsArray_sint32(ta1_0) /\ IsArray_sint32(ta2_0) /\
+      IsArray_sint32(ta3_0).
 }
 Prove: x = 1.
 
@@ -120,8 +120,8 @@ Assume {
   Type: is_sint32(ta1_0[2]) /\ is_sint32(ta1_0[4]) /\ is_sint32(ta2_0[4]) /\
       is_sint32(ta3_0[0]) /\ is_sint32(x).
   (* Heap *)
-  Type: IsArray1_sint32(ta1_0) /\ IsArray1_sint32(ta2_0) /\
-      IsArray1_sint32(ta3_0).
+  Type: IsArray_sint32(ta1_0) /\ IsArray_sint32(ta2_0) /\
+      IsArray_sint32(ta3_0).
 }
 Prove: x = 1.
 
@@ -133,8 +133,8 @@ Assume {
   Type: is_sint32(ta1_0[2]) /\ is_sint32(ta1_0[4]) /\ is_sint32(x) /\
       is_sint32(ta3_0[0]) /\ is_sint32(ta3_0[2]).
   (* Heap *)
-  Type: IsArray1_sint32(ta1_0) /\ IsArray1_sint32(ta2_0) /\
-      IsArray1_sint32(ta3_0).
+  Type: IsArray_sint32(ta1_0) /\ IsArray_sint32(ta2_0) /\
+      IsArray_sint32(ta3_0).
 }
 Prove: x = 1.
 
@@ -154,7 +154,7 @@ Assume {
   Type: IsS5(a) /\ IsS5(a_1) /\ IsS5(a_2) /\ is_sint32(a.F5_a) /\
       is_sint32(x) /\ is_sint32(x_1) /\ is_sint32(a_3.F5_c).
   (* Heap *)
-  Type: IsArray1S5(ts1_0).
+  Type: IsArray_S5(ts1_0).
 }
 Prove: (x_1 = x) /\ EqS5(a, a_1) /\ EqS5(a_1, a_2).
 
@@ -168,7 +168,7 @@ Assume {
   Type: IsS5(a) /\ IsS5(ts1_0[1]) /\ IsS5(ts1_0[3]) /\ is_sint32(a.F5_a) /\
       is_sint32(a_1.F5_a) /\ is_sint32(a_1.F5_b) /\ is_sint32(x).
   (* Heap *)
-  Type: IsArray1S5(ts1_0).
+  Type: IsArray_S5(ts1_0).
 }
 Prove: x = 1.
 
@@ -182,7 +182,7 @@ Assume {
   Type: IsS5(a) /\ IsS5(ts1_0[1]) /\ IsS5(ts1_0[3]) /\ is_sint32(x) /\
       is_sint32(a_1.F5_a) /\ is_sint32(a_1.F5_b) /\ is_sint32(a_1.F5_c).
   (* Heap *)
-  Type: IsArray1S5(ts1_0).
+  Type: IsArray_S5(ts1_0).
 }
 Prove: x = 1.
 
@@ -204,9 +204,8 @@ Assume {
       is_sint64(u.F4_U_b) /\ is_sint16((u.F4_U_t)[0]) /\ is_sint32(a_4) /\
       is_sint32(a_1).
   (* Heap *)
-  Type: IsArray1_sint32(t) /\ IsArray1_sint32(t1_0) /\
-      IsArray1_uint8(tab_0) /\ IsS2_St(st_0) /\ IsS3_Sc(sc2_0) /\
-      IsS3_Sc(sc3_0) /\ IsU4_U(u).
+  Type: IsArray_sint32(t) /\ IsArray_sint32(t1_0) /\ IsArray_uint8(tab_0) /\
+      IsS2_St(st_0) /\ IsS3_Sc(sc2_0) /\ IsS3_Sc(sc3_0) /\ IsU4_U(u).
   (* Initializer *)
   Init: (u.F4_U_a) = (-1).
   (* Initializer *)
@@ -271,9 +270,8 @@ Assume {
       is_sint64(u.F4_U_b) /\ is_sint16((u.F4_U_t)[0]) /\ is_sint32(a_4) /\
       is_sint32(a_1).
   (* Heap *)
-  Type: IsArray1_sint32(t) /\ IsArray1_sint32(t1_0) /\
-      IsArray1_uint8(tab_0) /\ IsS2_St(st_0) /\ IsS3_Sc(sc2_0) /\
-      IsS3_Sc(sc3_0) /\ IsU4_U(u).
+  Type: IsArray_sint32(t) /\ IsArray_sint32(t1_0) /\ IsArray_uint8(tab_0) /\
+      IsS2_St(st_0) /\ IsS3_Sc(sc2_0) /\ IsS3_Sc(sc3_0) /\ IsU4_U(u).
   (* Initializer *)
   Init: (u.F4_U_a) = (-1).
   (* Initializer *)
@@ -338,9 +336,8 @@ Assume {
       is_sint64(u.F4_U_b) /\ is_sint16((u.F4_U_t)[0]) /\ is_sint32(a_4) /\
       is_sint32(a_1).
   (* Heap *)
-  Type: IsArray1_sint32(t) /\ IsArray1_sint32(t1_0) /\
-      IsArray1_uint8(tab_0) /\ IsS2_St(st_0) /\ IsS3_Sc(sc2_0) /\
-      IsS3_Sc(sc3_0) /\ IsU4_U(u).
+  Type: IsArray_sint32(t) /\ IsArray_sint32(t1_0) /\ IsArray_uint8(tab_0) /\
+      IsS2_St(st_0) /\ IsS3_Sc(sc2_0) /\ IsS3_Sc(sc3_0) /\ IsU4_U(u).
   (* Initializer *)
   Init: (u.F4_U_a) = (-1).
   (* Initializer *)
@@ -406,9 +403,8 @@ Assume {
       is_sint64(u.F4_U_b) /\ is_sint16((u.F4_U_t)[0]) /\ is_sint32(a_4) /\
       is_sint32(a_1).
   (* Heap *)
-  Type: IsArray1_sint32(t) /\ IsArray1_sint32(t1_0) /\
-      IsArray1_uint8(tab_0) /\ IsS2_St(st_0) /\ IsS3_Sc(sc2_0) /\
-      IsS3_Sc(sc3_0) /\ IsU4_U(u).
+  Type: IsArray_sint32(t) /\ IsArray_sint32(t1_0) /\ IsArray_uint8(tab_0) /\
+      IsS2_St(st_0) /\ IsS3_Sc(sc2_0) /\ IsS3_Sc(sc3_0) /\ IsU4_U(u).
   (* Initializer *)
   Init: (u.F4_U_a) = (-1).
   (* Initializer *)
@@ -473,9 +469,8 @@ Assume {
       is_sint64(u.F4_U_b) /\ is_sint16((u.F4_U_t)[0]) /\ is_sint32(a_4) /\
       is_sint32(a_1).
   (* Heap *)
-  Type: IsArray1_sint32(t) /\ IsArray1_sint32(t1_0) /\
-      IsArray1_uint8(tab_0) /\ IsS2_St(st_0) /\ IsS3_Sc(sc2_0) /\
-      IsS3_Sc(sc3_0) /\ IsU4_U(u).
+  Type: IsArray_sint32(t) /\ IsArray_sint32(t1_0) /\ IsArray_uint8(tab_0) /\
+      IsS2_St(st_0) /\ IsS3_Sc(sc2_0) /\ IsS3_Sc(sc3_0) /\ IsU4_U(u).
   (* Initializer *)
   Init: (u.F4_U_a) = (-1).
   (* Initializer *)
@@ -541,9 +536,8 @@ Assume {
       is_sint64(u.F4_U_b) /\ is_sint16((u.F4_U_t)[0]) /\ is_sint32(a_4) /\
       is_sint32(a_1).
   (* Heap *)
-  Type: IsArray1_sint32(t) /\ IsArray1_sint32(t1_0) /\
-      IsArray1_uint8(tab_0) /\ IsS2_St(st_0) /\ IsS3_Sc(sc2_0) /\
-      IsS3_Sc(sc3_0) /\ IsU4_U(u).
+  Type: IsArray_sint32(t) /\ IsArray_sint32(t1_0) /\ IsArray_uint8(tab_0) /\
+      IsS2_St(st_0) /\ IsS3_Sc(sc2_0) /\ IsS3_Sc(sc3_0) /\ IsU4_U(u).
   (* Initializer *)
   Init: (u.F4_U_a) = (-1).
   (* Initializer *)
@@ -609,9 +603,8 @@ Assume {
       is_sint64(u.F4_U_b) /\ is_sint16((u.F4_U_t)[0]) /\ is_sint32(a_4) /\
       is_sint32(a_1).
   (* Heap *)
-  Type: IsArray1_sint32(t) /\ IsArray1_sint32(t1_0) /\
-      IsArray1_uint8(tab_0) /\ IsS2_St(st_0) /\ IsS3_Sc(sc2_0) /\
-      IsS3_Sc(sc3_0) /\ IsU4_U(u).
+  Type: IsArray_sint32(t) /\ IsArray_sint32(t1_0) /\ IsArray_uint8(tab_0) /\
+      IsS2_St(st_0) /\ IsS3_Sc(sc2_0) /\ IsS3_Sc(sc3_0) /\ IsU4_U(u).
   (* Initializer *)
   Init: (u.F4_U_a) = (-1).
   (* Initializer *)
@@ -677,9 +670,8 @@ Assume {
       is_sint64(x_1) /\ is_sint16((u.F4_U_t)[0]) /\ is_sint32(a_4) /\
       is_sint32(a_1).
   (* Heap *)
-  Type: IsArray1_sint32(t) /\ IsArray1_sint32(t1_0) /\
-      IsArray1_uint8(tab_0) /\ IsS2_St(st_0) /\ IsS3_Sc(sc2_0) /\
-      IsS3_Sc(sc3_0) /\ IsU4_U(u).
+  Type: IsArray_sint32(t) /\ IsArray_sint32(t1_0) /\ IsArray_uint8(tab_0) /\
+      IsS2_St(st_0) /\ IsS3_Sc(sc2_0) /\ IsS3_Sc(sc3_0) /\ IsU4_U(u).
   (* Initializer *)
   Init: (u.F4_U_a) = (-1).
   (* Initializer *)
@@ -745,9 +737,8 @@ Assume {
       is_sint64(u.F4_U_b) /\ is_sint16(a_5) /\ is_sint32(a_4) /\
       is_sint32(a_1).
   (* Heap *)
-  Type: IsArray1_sint32(t) /\ IsArray1_sint32(t1_0) /\
-      IsArray1_uint8(tab_0) /\ IsS2_St(st_0) /\ IsS3_Sc(sc2_0) /\
-      IsS3_Sc(sc3_0) /\ IsU4_U(u).
+  Type: IsArray_sint32(t) /\ IsArray_sint32(t1_0) /\ IsArray_uint8(tab_0) /\
+      IsS2_St(st_0) /\ IsS3_Sc(sc2_0) /\ IsS3_Sc(sc3_0) /\ IsU4_U(u).
   (* Initializer *)
   Init: (u.F4_U_a) = (-1).
   (* Initializer *)
diff --git a/src/plugins/wp/tests/wp_acsl/oracle/logic.res.oracle b/src/plugins/wp/tests/wp_acsl/oracle/logic.res.oracle
index b941722cdbd..cebaff887df 100644
--- a/src/plugins/wp/tests/wp_acsl/oracle/logic.res.oracle
+++ b/src/plugins/wp/tests/wp_acsl/oracle/logic.res.oracle
@@ -41,7 +41,7 @@ Goal Post-condition (file tests/wp_acsl/logic.i, line 21) in 'h':
 Let a = global(G_t_29).
 Let m = Array1_S1(shift_S1(a, 0), 3, Mint_0).
 Let m_1 = Array1_S1(a, 3, Mint_0).
-Assume { Type: IsArray1S1(m_1) /\ IsArray1S1(m). (* Call 'f' *) Have: P_P(m).
+Assume { Type: IsArray_S1(m_1) /\ IsArray_S1(m). (* Call 'f' *) Have: P_P(m).
 }
 Prove: P_P(m_1).
 
@@ -72,7 +72,7 @@ Let a_2 = shift_S1(a, 1).
 Let a_3 = shift_S1(a, 0).
 Let m = Array1_S1(a, 3, Mint_0).
 Assume {
-  Type: IsArray1S1(m) /\ IsArray1S1(Array1_S1(a_3, 3, Mint_0)).
+  Type: IsArray_S1(m) /\ IsArray_S1(Array1_S1(a_3, 3, Mint_0)).
   (* Initializer *)
   Init: Mint_0[shiftfield_F1_x(a_3)] = 10.
   (* Initializer *)
@@ -97,7 +97,7 @@ Let a_2 = shift_S1(a, 1).
 Let a_3 = shift_S1(a, 0).
 Let m = Array1_S1(a, 3, Mint_0).
 Assume {
-  Type: IsArray1S1(m) /\ IsArray1S1(Array1_S1(a_3, 3, Mint_0)).
+  Type: IsArray_S1(m) /\ IsArray_S1(Array1_S1(a_3, 3, Mint_0)).
   (* Initializer *)
   Init: Mint_0[shiftfield_F1_x(a_3)] = 10.
   (* Initializer *)
@@ -122,7 +122,7 @@ Let a_2 = shift_S1(a, 1).
 Let a_3 = shift_S1(a, 0).
 Let m = Array1_S1(a_3, 3, Mint_0).
 Assume {
-  Type: IsArray1S1(Array1_S1(a, 3, Mint_0)) /\ IsArray1S1(m).
+  Type: IsArray_S1(Array1_S1(a, 3, Mint_0)) /\ IsArray_S1(m).
   (* Initializer *)
   Init: Mint_0[shiftfield_F1_x(a_3)] = 10.
   (* Initializer *)
diff --git a/src/plugins/wp/tests/wp_acsl/oracle/record.res.oracle b/src/plugins/wp/tests/wp_acsl/oracle/record.res.oracle
index 43d8c4d3ece..02cc1e7481d 100644
--- a/src/plugins/wp/tests/wp_acsl/oracle/record.res.oracle
+++ b/src/plugins/wp/tests/wp_acsl/oracle/record.res.oracle
@@ -50,7 +50,7 @@ Prove: true.
 
 Goal Post-condition 'P2,qed_ok' in 'f':
 Assume {
-  Type: IsArray1_sint32(t1_0) /\ IsArray1_sint32(t2_0).
+  Type: IsArray_sint32(t1_0) /\ IsArray_sint32(t2_0).
   (* Goal *)
   When: forall i : Z. ((0 <= i) -> ((i <= 9) -> (t2_0[i] = t1_0[i]))).
 }
diff --git a/src/plugins/wp/tests/wp_bts/oracle/bts788.res.oracle b/src/plugins/wp/tests/wp_bts/oracle/bts788.res.oracle
index fcb5d4edc86..28eb004ea32 100644
--- a/src/plugins/wp/tests/wp_bts/oracle/bts788.res.oracle
+++ b/src/plugins/wp/tests/wp_bts/oracle/bts788.res.oracle
@@ -16,7 +16,7 @@ Let x = t20_0[1].
 Assume {
   Type: is_sint32(x) /\ is_sint32(t20_0[2]).
   (* Heap *)
-  Type: IsArray1_sint32(t20_0).
+  Type: IsArray_sint32(t20_0).
   (* Initializer *)
   Init: t20_0[0] = 3.
   (* Initializer *)
@@ -31,7 +31,7 @@ Let x = t20_0[2].
 Assume {
   Type: is_sint32(t20_0[1]) /\ is_sint32(x).
   (* Heap *)
-  Type: IsArray1_sint32(t20_0).
+  Type: IsArray_sint32(t20_0).
   (* Initializer *)
   Init: t20_0[0] = 3.
   (* Initializer *)
diff --git a/src/plugins/wp/tests/wp_hoare/oracle/logicarr.res.oracle b/src/plugins/wp/tests/wp_hoare/oracle/logicarr.res.oracle
index 9875c8c8f67..d53c4143c88 100644
--- a/src/plugins/wp/tests/wp_hoare/oracle/logicarr.res.oracle
+++ b/src/plugins/wp/tests/wp_hoare/oracle/logicarr.res.oracle
@@ -14,8 +14,8 @@ Let a_2 = shift_sint32(a, j).
 Let m = Mint_0[a_1 <- Mint_0[a_2]][a_2 <- x][shift_sint32(a, k) <- x].
 Assume {
   Type: is_sint32(i) /\ is_sint32(j) /\ is_sint32(k) /\
-      IsArray1_sint32(Array1_int(a, 10, Mint_0)) /\ is_sint32(x) /\
-      IsArray1_sint32(Array1_int(a, 10, m)).
+      IsArray_sint32(Array1_int(a, 10, Mint_0)) /\ is_sint32(x) /\
+      IsArray_sint32(Array1_int(a, 10, m)).
   (* Pre-condition *)
   Have: (0 <= i) /\ (0 <= j) /\ (0 <= k) /\ (i <= 9) /\ (j <= 9) /\ (k <= 9).
 }
@@ -32,8 +32,8 @@ Let a_2 = shift_sint32(a, j).
 Let m_1 = Array1_int(a, 10,
             Mint_0[a_1 <- Mint_0[a_2]][a_2 <- x][shift_sint32(a, k) <- x]).
 Assume {
-  Type: is_sint32(i) /\ is_sint32(j) /\ is_sint32(k) /\ IsArray1_sint32(m) /\
-      is_sint32(x) /\ IsArray1_sint32(m_1).
+  Type: is_sint32(i) /\ is_sint32(j) /\ is_sint32(k) /\ IsArray_sint32(m) /\
+      is_sint32(x) /\ IsArray_sint32(m_1).
   (* Pre-condition *)
   Have: (0 <= i) /\ (0 <= j) /\ (0 <= k) /\ (i <= 9) /\ (j <= 9) /\ (k <= 9).
 }
@@ -50,8 +50,8 @@ Let m = Array1_int(a, 10,
           Mint_0[a_1 <- Mint_0[a_2]][a_2 <- x][shift_sint32(a, k) <- x]).
 Assume {
   Type: is_sint32(i) /\ is_sint32(j) /\ is_sint32(k) /\
-      IsArray1_sint32(Array1_int(a, 10, Mint_0)) /\ is_sint32(x) /\
-      IsArray1_sint32(m).
+      IsArray_sint32(Array1_int(a, 10, Mint_0)) /\ is_sint32(x) /\
+      IsArray_sint32(m).
   (* Pre-condition *)
   Have: (0 <= i) /\ (0 <= j) /\ (0 <= k) /\ (i <= 9) /\ (j <= 9) /\ (k <= 9).
 }
diff --git a/src/plugins/wp/tests/wp_hoare/oracle/reference_and_struct.res.oracle b/src/plugins/wp/tests/wp_hoare/oracle/reference_and_struct.res.oracle
index d6202c41035..ef6f162dd9a 100644
--- a/src/plugins/wp/tests/wp_hoare/oracle/reference_and_struct.res.oracle
+++ b/src/plugins/wp/tests/wp_hoare/oracle/reference_and_struct.res.oracle
@@ -133,7 +133,7 @@ Prove: true.
 Goal Post-condition 'Preset_5' in 'call_reset_5':
 Assume {
   (* Heap *)
-  Type: IsArray1S1_T(ts_1).
+  Type: IsArray_S1_T(ts_1).
   (* Goal *)
   When: (0 <= i) /\ (i <= 4).
   (* Call 'reset_5' *)
@@ -170,7 +170,7 @@ Goal Post-condition 'Presset_mat' in 'call_reset_5_dim2':
 Let m = smatrix_0[1].
 Assume {
   (* Heap *)
-  Type: IsArray2S1_T(smatrix_1).
+  Type: IsArray_d2_S1_T(smatrix_1).
   (* Goal *)
   When: (0 <= i) /\ (i <= 4).
   (* Call 'reset_5' *)
diff --git a/src/plugins/wp/tests/wp_hoare/oracle/reference_array.res.oracle b/src/plugins/wp/tests/wp_hoare/oracle/reference_array.res.oracle
index e9a8a909640..aeb64156ce6 100644
--- a/src/plugins/wp/tests/wp_hoare/oracle/reference_array.res.oracle
+++ b/src/plugins/wp/tests/wp_hoare/oracle/reference_array.res.oracle
@@ -10,7 +10,7 @@ Goal Post-condition (file tests/wp_hoare/reference_array.i, line 49) in 'add_1_5
 Let a = shift_A5_sint32(ap_0, 0).
 Assume {
   (* Heap *)
-  Type: (region(ap_0.base) <= 0) /\ IsArray1_sint32(reg_load_0) /\
+  Type: (region(ap_0.base) <= 0) /\ IsArray_sint32(reg_load_0) /\
       linked(Malloc_0).
   (* Goal *)
   When: (0 <= i) /\ (i <= 4).
@@ -46,7 +46,7 @@ Prove: true.
 Goal Post-condition 'Pload' in 'calls_on_array_dim_1':
 Assume {
   (* Heap *)
-  Type: IsArray1_sint32(t).
+  Type: IsArray_sint32(t).
   (* Goal *)
   When: (0 <= i) /\ (i <= 4).
   (* Call 'load_5' *)
@@ -68,7 +68,7 @@ Prove: t[i] = reg_load_0[i].
 Goal Post-condition 'Preset' in 'calls_on_array_dim_1':
 Assume {
   (* Heap *)
-  Type: IsArray1_sint32(t_1).
+  Type: IsArray_sint32(t_1).
   (* Goal *)
   When: (0 <= i) /\ (i <= 4).
   (* Call 'load_5' *)
@@ -90,7 +90,7 @@ Prove: t[i] = 0.
 Goal Post-condition 'Padd' in 'calls_on_array_dim_1':
 Assume {
   (* Heap *)
-  Type: IsArray1_sint32(t).
+  Type: IsArray_sint32(t).
   (* Goal *)
   When: (0 <= i) /\ (i <= 4).
   (* Call 'load_5' *)
@@ -144,7 +144,7 @@ Goal Post-condition 'Pload' in 'calls_on_array_dim_2':
 Let m = tt_0[0].
 Assume {
   (* Heap *)
-  Type: IsArray2_sint32(tt_0).
+  Type: IsArray_d2_sint32(tt_0).
   (* Goal *)
   When: (0 <= i) /\ (i <= 4).
   (* Call 'load_1_5' *)
@@ -163,7 +163,7 @@ Prove: m[i] = reg_load_0[i].
 Goal Post-condition 'Preset' in 'calls_on_array_dim_2':
 Assume {
   (* Heap *)
-  Type: IsArray2_sint32(tt_0).
+  Type: IsArray_d2_sint32(tt_0).
   (* Goal *)
   When: (0 <= i) /\ (i <= 4).
   (* Call 'load_1_5' *)
@@ -183,7 +183,7 @@ Goal Post-condition 'Padd' in 'calls_on_array_dim_2':
 Let m = tt_0[0].
 Assume {
   (* Heap *)
-  Type: IsArray2_sint32(tt_0).
+  Type: IsArray_d2_sint32(tt_0).
   (* Goal *)
   When: (0 <= i) /\ (i <= 4).
   (* Call 'load_1_5' *)
@@ -235,7 +235,7 @@ Let m = tt_1[0].
 Let m_1 = tt_0[0].
 Assume {
   (* Heap *)
-  Type: IsArray2_sint32(tt_0).
+  Type: IsArray_d2_sint32(tt_0).
   (* Goal *)
   When: (0 <= i) /\ (i <= 4).
   (* Call 'load_5' *)
@@ -257,7 +257,7 @@ Goal Post-condition 'Preset' in 'calls_on_array_dim_2_to_1':
 Let m = tt_0[0].
 Assume {
   (* Heap *)
-  Type: IsArray2_sint32(tt_1).
+  Type: IsArray_d2_sint32(tt_1).
   (* Goal *)
   When: (0 <= i) /\ (i <= 4).
   (* Call 'load_5' *)
@@ -280,7 +280,7 @@ Let m = tt_1[0].
 Let m_1 = tt_0[0].
 Assume {
   (* Heap *)
-  Type: IsArray2_sint32(tt_0).
+  Type: IsArray_d2_sint32(tt_0).
   (* Goal *)
   When: (0 <= i) /\ (i <= 4).
   (* Call 'load_5' *)
diff --git a/src/plugins/wp/tests/wp_plugin/oracle/init_const.res.oracle b/src/plugins/wp/tests/wp_plugin/oracle/init_const.res.oracle
index 46f3cde2efb..88e29f14f68 100644
--- a/src/plugins/wp/tests/wp_plugin/oracle/init_const.res.oracle
+++ b/src/plugins/wp/tests/wp_plugin/oracle/init_const.res.oracle
@@ -16,7 +16,7 @@ Assume {
   Type: is_sint32(x) /\ is_sint32(x_1) /\ is_sint32(x_2) /\ is_sint32(x_3) /\
       is_sint32(x_4).
   (* Heap *)
-  Type: IsArray1_sint32(A).
+  Type: IsArray_sint32(A).
 }
 Prove: x_4 = 6.
 
@@ -35,7 +35,7 @@ Prove: true.
 
 Goal Post-condition 'KO' in 'fC':
 Let x = A[3].
-Assume { Type: is_sint32(x). (* Heap *) Type: IsArray1_sint32(A). }
+Assume { Type: is_sint32(x). (* Heap *) Type: IsArray_sint32(A). }
 Prove: x = 0.
 
 ------------------------------------------------------------
diff --git a/src/plugins/wp/tests/wp_plugin/oracle/injector.res.oracle b/src/plugins/wp/tests/wp_plugin/oracle/injector.res.oracle
index 1ac8bbc1f3f..03f12a3394f 100644
--- a/src/plugins/wp/tests/wp_plugin/oracle/injector.res.oracle
+++ b/src/plugins/wp/tests/wp_plugin/oracle/injector.res.oracle
@@ -91,7 +91,7 @@ Let x_1 = inp_0[0].
 Assume {
   Type: is_sint32(b) /\ is_sint32(v) /\ is_sint32(x_1) /\ is_sint32(x).
   (* Heap *)
-  Type: IsArray1_sint32(inp_1) /\ IsArray1_sint32(out_0).
+  Type: IsArray_sint32(inp_1) /\ IsArray_sint32(out_0).
   If x != 33
   Then { Have: inp_1[0 <- v] = inp_0. }
   Else { (* Call Effects *) Have: inp_1[0 <- v][1 <- b] = inp_0. }
@@ -106,7 +106,7 @@ Prove: x_1 = b.
 Goal Post-condition for 'ko_1' 'qed_ko' in 'f':
 Assume {
   (* Heap *)
-  Type: IsArray1_sint32(out_0).
+  Type: IsArray_sint32(out_0).
   (* Pre-condition for 'ko_1' *)
   Have: out_0[0] = 33.
   (* Pre-condition for 'ko_1' *)
@@ -120,7 +120,7 @@ Goal Post-condition for 'ko_1' 'qed_ko' in 'f':
 Assume {
   Type: is_sint32(b) /\ is_sint32(v).
   (* Heap *)
-  Type: IsArray1_sint32(out_0).
+  Type: IsArray_sint32(out_0).
   (* Pre-condition for 'ko_1' *)
   Have: out_0[0] = 33.
   (* Pre-condition for 'ko_1' *)
@@ -133,7 +133,7 @@ Prove: v = b.
 Goal Post-condition for 'ko_1' 'qed_ko' in 'f':
 Assume {
   (* Heap *)
-  Type: IsArray1_sint32(out_0).
+  Type: IsArray_sint32(out_0).
   (* Pre-condition for 'ko_1' *)
   Have: out_0[0] = 33.
   (* Pre-condition for 'ko_1' *)
diff --git a/src/plugins/wp/tests/wp_plugin/oracle/overarray.res.oracle b/src/plugins/wp/tests/wp_plugin/oracle/overarray.res.oracle
index 5392e0e5e2b..96f6ad55ed4 100644
--- a/src/plugins/wp/tests/wp_plugin/oracle/overarray.res.oracle
+++ b/src/plugins/wp/tests/wp_plugin/oracle/overarray.res.oracle
@@ -62,7 +62,7 @@ Goal Assigns nothing in 'f5_ko':
 Call Effect at line 25
 Assume {
   (* Heap *)
-  Type: IsArray1_sint32(A).
+  Type: IsArray_sint32(A).
   (* Exit Effects *)
   Have: forall i : Z. let x = 15 + i in (((-15) <= i) -> ((i <= 4) ->
       (((i < 0) \/ (10 <= i)) -> (A_1[x] = A[x])))).
@@ -75,7 +75,7 @@ Goal Assigns nothing in 'f5_ko':
 Call Effect at line 25
 Assume {
   (* Heap *)
-  Type: IsArray1_sint32(A).
+  Type: IsArray_sint32(A).
   (* Call Effects *)
   Have: forall i : Z. let x = 15 + i in (((-15) <= i) -> ((i <= 4) ->
       (((i < 0) \/ (10 <= i)) -> (A_1[x] = A[x])))).
@@ -91,7 +91,7 @@ Goal Assigns nothing in 'f6_ko':
 Call Effect at line 28
 Assume {
   (* Heap *)
-  Type: IsArray1_sint32(A).
+  Type: IsArray_sint32(A).
   (* Exit Effects *)
   Have: forall i : Z. let x = i - 5 in ((5 <= i) -> ((i <= 24) ->
       (((i < 0) \/ (10 <= i)) -> (A_1[x] = A[x])))).
@@ -104,7 +104,7 @@ Goal Assigns nothing in 'f6_ko':
 Call Effect at line 28
 Assume {
   (* Heap *)
-  Type: IsArray1_sint32(A).
+  Type: IsArray_sint32(A).
   (* Call Effects *)
   Have: forall i : Z. let x = i - 5 in ((5 <= i) -> ((i <= 24) ->
       (((i < 0) \/ (10 <= i)) -> (A_1[x] = A[x])))).
diff --git a/src/plugins/wp/tests/wp_typed/oracle/array_initialized.0.res.oracle b/src/plugins/wp/tests/wp_typed/oracle/array_initialized.0.res.oracle
index 6911b721195..478d90b93f1 100644
--- a/src/plugins/wp/tests/wp_typed/oracle/array_initialized.0.res.oracle
+++ b/src/plugins/wp/tests/wp_typed/oracle/array_initialized.0.res.oracle
@@ -11,7 +11,7 @@
 Goal Assertion (file tests/wp_typed/array_initialized.c, line 71):
 Assume {
   (* Heap *)
-  Type: IsArray1_sint32(g).
+  Type: IsArray_sint32(g).
   (* Goal *)
   When: (0 <= i) /\ (i <= 499).
   (* Initializer *)
@@ -27,7 +27,7 @@ Prove: g[i] = 0.
 Goal Assertion (file tests/wp_typed/array_initialized.c, line 185):
 Assume {
   (* Heap *)
-  Type: IsArray1_sint32(h1_0) /\ IsArray1_sint32(h2_0).
+  Type: IsArray_sint32(h1_0) /\ IsArray_sint32(h2_0).
   (* Goal *)
   When: (0 <= i) /\ (i <= 499).
   (* Initializer *)
diff --git a/src/plugins/wp/tests/wp_typed/oracle/frame.0.res.oracle b/src/plugins/wp/tests/wp_typed/oracle/frame.0.res.oracle
index ff1c02a4ba5..e433d6edd6b 100644
--- a/src/plugins/wp/tests/wp_typed/oracle/frame.0.res.oracle
+++ b/src/plugins/wp/tests/wp_typed/oracle/frame.0.res.oracle
@@ -10,7 +10,7 @@ Goal Assertion 'SEP' (file tests/wp_typed/frame.i, line 10):
 Assume {
   Type: is_sint32(k).
   (* Heap *)
-  Type: IsArray1S1(comp_0) /\
+  Type: IsArray_S1(comp_0) /\
       (forall i : Z. region(comp_0[i].F1_ptr.base) <= 0).
   (* Pre-condition *)
   Have: (0 <= k) /\ (k <= 19).
@@ -26,7 +26,7 @@ Let x = Mint_0[a <- 4][a_1].
 Assume {
   Type: is_sint32(k) /\ is_sint32(x).
   (* Heap *)
-  Type: IsArray1S1(comp_0) /\
+  Type: IsArray_S1(comp_0) /\
       (forall i : Z. region(comp_0[i].F1_ptr.base) <= 0).
   (* Pre-condition *)
   Have: (0 <= k) /\ (k <= 19).
diff --git a/src/plugins/wp/tests/wp_typed/oracle/frame.1.res.oracle b/src/plugins/wp/tests/wp_typed/oracle/frame.1.res.oracle
index 93b72601618..f958319c4c3 100644
--- a/src/plugins/wp/tests/wp_typed/oracle/frame.1.res.oracle
+++ b/src/plugins/wp/tests/wp_typed/oracle/frame.1.res.oracle
@@ -10,7 +10,7 @@ Goal Assertion 'SEP' (file tests/wp_typed/frame.i, line 10):
 Assume {
   Type: is_sint32(k).
   (* Heap *)
-  Type: IsArray1S1(comp_0) /\
+  Type: IsArray_S1(comp_0) /\
       (forall i : Z. region(comp_0[i].F1_ptr.base) <= 0).
   (* Pre-condition *)
   Have: (0 <= k) /\ (k <= 19).
@@ -26,7 +26,7 @@ Let x = Mint_0[a <- 4][a_1].
 Assume {
   Type: is_sint32(k) /\ is_sint32(x).
   (* Heap *)
-  Type: IsArray1S1(comp_0) /\
+  Type: IsArray_S1(comp_0) /\
       (forall i : Z. region(comp_0[i].F1_ptr.base) <= 0).
   (* Pre-condition *)
   Have: (0 <= k) /\ (k <= 19).
diff --git a/src/plugins/wp/tests/wp_typed/oracle/mvar.0.res.oracle b/src/plugins/wp/tests/wp_typed/oracle/mvar.0.res.oracle
index b7a091489fb..39eec2a7ec3 100644
--- a/src/plugins/wp/tests/wp_typed/oracle/mvar.0.res.oracle
+++ b/src/plugins/wp/tests/wp_typed/oracle/mvar.0.res.oracle
@@ -11,7 +11,7 @@
 Goal Post-condition (file tests/wp_typed/mvar.i, line 12) in 'Job':
 Assume {
   (* Heap *)
-  Type: IsArray1_sint8(A).
+  Type: IsArray_sint8(A).
   (* Call 'Write' *)
   Have: A[0] = 1.
 }
diff --git a/src/plugins/wp/tests/wp_typed/oracle/mvar.1.res.oracle b/src/plugins/wp/tests/wp_typed/oracle/mvar.1.res.oracle
index a58a157b823..4baeb158a84 100644
--- a/src/plugins/wp/tests/wp_typed/oracle/mvar.1.res.oracle
+++ b/src/plugins/wp/tests/wp_typed/oracle/mvar.1.res.oracle
@@ -11,7 +11,7 @@
 Goal Post-condition (file tests/wp_typed/mvar.i, line 12) in 'Job':
 Assume {
   (* Heap *)
-  Type: IsArray1_sint8(A).
+  Type: IsArray_sint8(A).
   (* Call 'Write' *)
   Have: A[0] = 1.
 }
diff --git a/src/plugins/wp/tests/wp_typed/oracle/struct_array_type.res.oracle b/src/plugins/wp/tests/wp_typed/oracle/struct_array_type.res.oracle
index 5fcad89c141..d88f617e216 100644
--- a/src/plugins/wp/tests/wp_typed/oracle/struct_array_type.res.oracle
+++ b/src/plugins/wp/tests/wp_typed/oracle/struct_array_type.res.oracle
@@ -23,8 +23,7 @@ theory Matrix
   
   (* use frama_c_wp.cint.Cint *)
   
-  predicate IsArray1_sint32 (t:int -> int) =
-    forall i:int. is_sint32 (get t i)
+  predicate IsArray_sint32 (t:int -> int) = forall i:int. is_sint32 (get t i)
 end
 ---------------------------------------------
 --- Context 'typed_f' Cluster 'S1_s' 
@@ -50,9 +49,9 @@ theory S1_s
   (* use Matrix *)
   
   predicate IsS1_s (s:S1_s) =
-    IsArray1_sint32 (F1_s_a s) /\ IsArray1_sint32 (F1_s_b s)
+    IsArray_sint32 (F1_s_a s) /\ IsArray_sint32 (F1_s_b s)
   
-  predicate IsArray1S1_s (t:int -> S1_s) = forall i:int. IsS1_s (get t i)
+  predicate IsArray_S1_s (t:int -> S1_s) = forall i:int. IsS1_s (get t i)
 end
 [wp:print-generated] 
   theory WP
@@ -81,7 +80,7 @@ end
        0 <= i ->
        a1 < a2 ->
        i <= 9 ->
-       IsArray1S1_s t ->
+       IsArray_S1_s t ->
        is_uint32 i ->
        is_sint32 a2 ->
        is_sint32 a1 -> is_sint32 ((1 + ((- 1) * a1)) + a3) -> (2 * a1) <= a3
@@ -100,7 +99,7 @@ Assume {
   Type: is_uint32(SynchroId_0) /\ is_sint32(a_2) /\ is_sint32(a_1) /\
       is_sint32(1 + a_3 - a_1).
   (* Heap *)
-  Type: IsArray1S1_s(t).
+  Type: IsArray_S1_s(t).
   (* Residual *)
   When: a_1 < a_2.
   (* Pre-condition *)
diff --git a/src/plugins/wp/tests/wp_typed/oracle/unit_matrix.0.res.oracle b/src/plugins/wp/tests/wp_typed/oracle/unit_matrix.0.res.oracle
index f3cb015dea5..d0e98a6c7f4 100644
--- a/src/plugins/wp/tests/wp_typed/oracle/unit_matrix.0.res.oracle
+++ b/src/plugins/wp/tests/wp_typed/oracle/unit_matrix.0.res.oracle
@@ -13,7 +13,7 @@ Assume {
   Type: is_sint32(a) /\ is_sint32(b) /\ is_sint32(c) /\ is_sint32(d) /\
       is_sint32(x).
   (* Heap *)
-  Type: IsArray2_sint32(t).
+  Type: IsArray_d2_sint32(t).
   (* Goal *)
   When: c != a.
 }
@@ -33,7 +33,7 @@ Assume {
   Type: is_sint32(a) /\ is_sint32(b) /\ is_sint32(c) /\ is_sint32(d) /\
       is_sint32(x).
   (* Heap *)
-  Type: IsArray2_sint32(t).
+  Type: IsArray_d2_sint32(t).
 }
 Prove: x = 1.
 
diff --git a/src/plugins/wp/tests/wp_typed/oracle/unit_matrix.1.res.oracle b/src/plugins/wp/tests/wp_typed/oracle/unit_matrix.1.res.oracle
index c0f6bc8b083..bb1396ee3af 100644
--- a/src/plugins/wp/tests/wp_typed/oracle/unit_matrix.1.res.oracle
+++ b/src/plugins/wp/tests/wp_typed/oracle/unit_matrix.1.res.oracle
@@ -13,7 +13,7 @@ Assume {
   Type: is_sint32(a) /\ is_sint32(b) /\ is_sint32(c) /\ is_sint32(d) /\
       is_sint32(x).
   (* Heap *)
-  Type: IsArray2_sint32(t).
+  Type: IsArray_d2_sint32(t).
   (* Goal *)
   When: c != a.
 }
@@ -33,7 +33,7 @@ Assume {
   Type: is_sint32(a) /\ is_sint32(b) /\ is_sint32(c) /\ is_sint32(d) /\
       is_sint32(x).
   (* Heap *)
-  Type: IsArray2_sint32(t).
+  Type: IsArray_d2_sint32(t).
 }
 Prove: x = 1.
 
diff --git a/src/plugins/wp/tests/wp_typed/oracle/user_collect.0.res.oracle b/src/plugins/wp/tests/wp_typed/oracle/user_collect.0.res.oracle
index 08ed2413253..111dc92f510 100644
--- a/src/plugins/wp/tests/wp_typed/oracle/user_collect.0.res.oracle
+++ b/src/plugins/wp/tests/wp_typed/oracle/user_collect.0.res.oracle
@@ -16,9 +16,9 @@ Let x = k - 1.
 Let m = p[x <- v].
 Let m_1 = m[k <- v_1].
 Assume {
-  Type: IsArray1_sint32(p) /\ is_sint32(k) /\ is_sint32(v_1) /\
+  Type: IsArray_sint32(p) /\ is_sint32(k) /\ is_sint32(v_1) /\
       is_sint32(v) /\ is_sint32(x1_0) /\ is_sint32(x2_0) /\ is_sint32(x) /\
-      is_sint32(1 + k) /\ IsArray1_sint32(m) /\ IsArray1_sint32(m_1).
+      is_sint32(1 + k) /\ IsArray_sint32(m) /\ IsArray_sint32(m_1).
   (* Pre-condition *)
   Have: (0 < k) /\ (k <= 9).
   (* Call 'job' *)
@@ -35,9 +35,9 @@ Let x = k - 1.
 Let m = p[x <- v_1].
 Let m_1 = m[k <- v].
 Assume {
-  Type: IsArray1_sint32(p) /\ is_sint32(k) /\ is_sint32(v) /\
+  Type: IsArray_sint32(p) /\ is_sint32(k) /\ is_sint32(v) /\
       is_sint32(v_1) /\ is_sint32(x1_0) /\ is_sint32(x2_0) /\ is_sint32(x) /\
-      is_sint32(1 + k) /\ IsArray1_sint32(m) /\ IsArray1_sint32(m_1).
+      is_sint32(1 + k) /\ IsArray_sint32(m) /\ IsArray_sint32(m_1).
   (* Pre-condition *)
   Have: (0 < k) /\ (k <= 9).
   (* Call 'job' *)
@@ -61,8 +61,8 @@ Goal Instance of 'Pre-condition (file tests/wp_typed/user_collect.i, line 15) in
 :
 Let m = p[k <- v].
 Assume {
-  Type: IsArray1_sint32(p) /\ is_sint32(k) /\ is_sint32(x1_0) /\
-      IsArray1_sint32(m) /\ is_sint32(1 + k).
+  Type: IsArray_sint32(p) /\ is_sint32(k) /\ is_sint32(x1_0) /\
+      IsArray_sint32(m) /\ is_sint32(1 + k).
   (* Pre-condition *)
   Have: (0 <= k) /\ (k <= 8).
   (* Call 'job' *)
@@ -85,9 +85,9 @@ Let x = k - 1.
 Let m = q[x <- v].
 Let m_1 = m[k <- v_1].
 Assume {
-  Type: IsArray1S1_S(q) /\ IsS1_S(s1_0) /\ IsS1_S(s2_0) /\ IsS1_S(v_1) /\
+  Type: IsArray_S1_S(q) /\ IsS1_S(s1_0) /\ IsS1_S(s2_0) /\ IsS1_S(v_1) /\
       IsS1_S(v) /\ is_sint32(k) /\ is_sint32(x) /\ is_sint32(1 + k) /\
-      IsArray1S1_S(m) /\ IsArray1S1_S(m_1).
+      IsArray_S1_S(m) /\ IsArray_S1_S(m_1).
   (* Pre-condition *)
   Have: (0 < k) /\ (k <= 9).
   (* Call 'job2' *)
@@ -104,9 +104,9 @@ Let x = k - 1.
 Let m = q[x <- v_1].
 Let m_1 = m[k <- v].
 Assume {
-  Type: IsArray1S1_S(q) /\ IsS1_S(s1_0) /\ IsS1_S(s2_0) /\ IsS1_S(v) /\
+  Type: IsArray_S1_S(q) /\ IsS1_S(s1_0) /\ IsS1_S(s2_0) /\ IsS1_S(v) /\
       IsS1_S(v_1) /\ is_sint32(k) /\ is_sint32(x) /\ is_sint32(1 + k) /\
-      IsArray1S1_S(m) /\ IsArray1S1_S(m_1).
+      IsArray_S1_S(m) /\ IsArray_S1_S(m_1).
   (* Pre-condition *)
   Have: (0 < k) /\ (k <= 9).
   (* Call 'job2' *)
@@ -124,9 +124,9 @@ Let m = q[x <- v].
 Let m_1 = m[k <- v_1].
 Let m_2 = q[x <- s1_0].
 Assume {
-  Type: IsArray1S1_S(q) /\ IsS1_S(s1_0) /\ IsS1_S(s2_0) /\ IsS1_S(v_1) /\
+  Type: IsArray_S1_S(q) /\ IsS1_S(s1_0) /\ IsS1_S(s2_0) /\ IsS1_S(v_1) /\
       IsS1_S(v) /\ is_sint32(k) /\ is_sint32(x) /\ is_sint32(1 + k) /\
-      IsArray1S1_S(m) /\ IsArray1S1_S(m_1).
+      IsArray_S1_S(m) /\ IsArray_S1_S(m_1).
   (* Pre-condition *)
   Have: (0 < k) /\ (k <= 9).
   (* Call 'job2' *)
@@ -150,7 +150,7 @@ Goal Instance of 'Pre-condition (file tests/wp_typed/user_collect.i, line 26) in
 :
 Let m = q[k <- v].
 Assume {
-  Type: IsArray1S1_S(q) /\ IsS1_S(s1_0) /\ is_sint32(k) /\ IsArray1S1_S(m) /\
+  Type: IsArray_S1_S(q) /\ IsS1_S(s1_0) /\ is_sint32(k) /\ IsArray_S1_S(m) /\
       is_sint32(1 + k).
   (* Pre-condition *)
   Have: (0 <= k) /\ (k <= 8).
@@ -174,9 +174,9 @@ Let x = k - 1.
 Let m = q[x <- v].
 Let m_1 = m[k <- v_1].
 Assume {
-  Type: IsArray1S1_S(q) /\ IsS1_S(s1_0) /\ IsS1_S(s2_0) /\ IsS1_S(v_1) /\
+  Type: IsArray_S1_S(q) /\ IsS1_S(s1_0) /\ IsS1_S(s2_0) /\ IsS1_S(v_1) /\
       IsS1_S(v) /\ is_sint32(k) /\ is_sint32(x) /\ is_sint32(1 + k) /\
-      IsArray1S1_S(m) /\ IsArray1S1_S(m_1).
+      IsArray_S1_S(m) /\ IsArray_S1_S(m_1).
   (* Pre-condition *)
   Have: (0 < k) /\ (k <= 9).
   (* Call 'job3' *)
@@ -193,9 +193,9 @@ Let x = k - 1.
 Let m = q[x <- v_1].
 Let m_1 = m[k <- v].
 Assume {
-  Type: IsArray1S1_S(q) /\ IsS1_S(s1_0) /\ IsS1_S(s2_0) /\ IsS1_S(v) /\
+  Type: IsArray_S1_S(q) /\ IsS1_S(s1_0) /\ IsS1_S(s2_0) /\ IsS1_S(v) /\
       IsS1_S(v_1) /\ is_sint32(k) /\ is_sint32(x) /\ is_sint32(1 + k) /\
-      IsArray1S1_S(m) /\ IsArray1S1_S(m_1).
+      IsArray_S1_S(m) /\ IsArray_S1_S(m_1).
   (* Pre-condition *)
   Have: (0 < k) /\ (k <= 9).
   (* Call 'job3' *)
@@ -213,9 +213,9 @@ Let m = q[x <- v].
 Let m_1 = m[k <- v_1].
 Let m_2 = q[x <- s1_0].
 Assume {
-  Type: IsArray1S1_S(q) /\ IsS1_S(s1_0) /\ IsS1_S(s2_0) /\ IsS1_S(v_1) /\
+  Type: IsArray_S1_S(q) /\ IsS1_S(s1_0) /\ IsS1_S(s2_0) /\ IsS1_S(v_1) /\
       IsS1_S(v) /\ is_sint32(k) /\ is_sint32(x) /\ is_sint32(1 + k) /\
-      IsArray1S1_S(m) /\ IsArray1S1_S(m_1).
+      IsArray_S1_S(m) /\ IsArray_S1_S(m_1).
   (* Pre-condition *)
   Have: (0 < k) /\ (k <= 9).
   (* Call 'job3' *)
@@ -239,7 +239,7 @@ Goal Instance of 'Pre-condition (file tests/wp_typed/user_collect.i, line 37) in
 :
 Let m = q[k <- v].
 Assume {
-  Type: IsArray1S1_S(q) /\ IsS1_S(s1_0) /\ is_sint32(k) /\ IsArray1S1_S(m) /\
+  Type: IsArray_S1_S(q) /\ IsS1_S(s1_0) /\ is_sint32(k) /\ IsArray_S1_S(m) /\
       is_sint32(1 + k).
   (* Pre-condition *)
   Have: (0 <= k) /\ (k <= 8).
@@ -322,7 +322,7 @@ Goal Post-condition 'Q' in 'job3':
 Let a = s.F1_S_f.
 Let m = q[k <- { F1_S_f = (q[k].F1_S_f)[0 <- a[0]][1 <- a[1]] }].
 Assume {
-  Type: IsArray1S1_S(q) /\ IsS1_S(s) /\ is_sint32(k) /\ IsArray1S1_S(m).
+  Type: IsArray_S1_S(q) /\ IsS1_S(s) /\ is_sint32(k) /\ IsArray_S1_S(m).
   (* Pre-condition *)
   Have: (0 <= k) /\ (k <= 9).
 }
diff --git a/src/plugins/wp/tests/wp_typed/oracle/user_collect.1.res.oracle b/src/plugins/wp/tests/wp_typed/oracle/user_collect.1.res.oracle
index af4d14ff9c3..1b950374764 100644
--- a/src/plugins/wp/tests/wp_typed/oracle/user_collect.1.res.oracle
+++ b/src/plugins/wp/tests/wp_typed/oracle/user_collect.1.res.oracle
@@ -16,9 +16,9 @@ Let x = k - 1.
 Let m = p[x <- v].
 Let m_1 = m[k <- v_1].
 Assume {
-  Type: IsArray1_sint32(p) /\ is_sint32(k) /\ is_sint32(v_1) /\
+  Type: IsArray_sint32(p) /\ is_sint32(k) /\ is_sint32(v_1) /\
       is_sint32(v) /\ is_sint32(x1_0) /\ is_sint32(x2_0) /\ is_sint32(x) /\
-      is_sint32(1 + k) /\ IsArray1_sint32(m) /\ IsArray1_sint32(m_1).
+      is_sint32(1 + k) /\ IsArray_sint32(m) /\ IsArray_sint32(m_1).
   (* Pre-condition *)
   Have: (0 < k) /\ (k <= 9).
   (* Call 'job' *)
@@ -35,9 +35,9 @@ Let x = k - 1.
 Let m = p[x <- v_1].
 Let m_1 = m[k <- v].
 Assume {
-  Type: IsArray1_sint32(p) /\ is_sint32(k) /\ is_sint32(v) /\
+  Type: IsArray_sint32(p) /\ is_sint32(k) /\ is_sint32(v) /\
       is_sint32(v_1) /\ is_sint32(x1_0) /\ is_sint32(x2_0) /\ is_sint32(x) /\
-      is_sint32(1 + k) /\ IsArray1_sint32(m) /\ IsArray1_sint32(m_1).
+      is_sint32(1 + k) /\ IsArray_sint32(m) /\ IsArray_sint32(m_1).
   (* Pre-condition *)
   Have: (0 < k) /\ (k <= 9).
   (* Call 'job' *)
@@ -61,8 +61,8 @@ Goal Instance of 'Pre-condition (file tests/wp_typed/user_collect.i, line 15) in
 :
 Let m = p[k <- v].
 Assume {
-  Type: IsArray1_sint32(p) /\ is_sint32(k) /\ is_sint32(x1_0) /\
-      IsArray1_sint32(m) /\ is_sint32(1 + k).
+  Type: IsArray_sint32(p) /\ is_sint32(k) /\ is_sint32(x1_0) /\
+      IsArray_sint32(m) /\ is_sint32(1 + k).
   (* Pre-condition *)
   Have: (0 <= k) /\ (k <= 8).
   (* Call 'job' *)
@@ -85,9 +85,9 @@ Let x = k - 1.
 Let m = q[x <- v].
 Let m_1 = m[k <- v_1].
 Assume {
-  Type: IsArray1S1_S(q) /\ IsS1_S(s1_0) /\ IsS1_S(s2_0) /\ IsS1_S(v_1) /\
+  Type: IsArray_S1_S(q) /\ IsS1_S(s1_0) /\ IsS1_S(s2_0) /\ IsS1_S(v_1) /\
       IsS1_S(v) /\ is_sint32(k) /\ is_sint32(x) /\ is_sint32(1 + k) /\
-      IsArray1S1_S(m) /\ IsArray1S1_S(m_1).
+      IsArray_S1_S(m) /\ IsArray_S1_S(m_1).
   (* Pre-condition *)
   Have: (0 < k) /\ (k <= 9).
   (* Call 'job2' *)
@@ -104,9 +104,9 @@ Let x = k - 1.
 Let m = q[x <- v_1].
 Let m_1 = m[k <- v].
 Assume {
-  Type: IsArray1S1_S(q) /\ IsS1_S(s1_0) /\ IsS1_S(s2_0) /\ IsS1_S(v) /\
+  Type: IsArray_S1_S(q) /\ IsS1_S(s1_0) /\ IsS1_S(s2_0) /\ IsS1_S(v) /\
       IsS1_S(v_1) /\ is_sint32(k) /\ is_sint32(x) /\ is_sint32(1 + k) /\
-      IsArray1S1_S(m) /\ IsArray1S1_S(m_1).
+      IsArray_S1_S(m) /\ IsArray_S1_S(m_1).
   (* Pre-condition *)
   Have: (0 < k) /\ (k <= 9).
   (* Call 'job2' *)
@@ -124,9 +124,9 @@ Let m = q[x <- v].
 Let m_1 = m[k <- v_1].
 Let m_2 = q[x <- s1_0].
 Assume {
-  Type: IsArray1S1_S(q) /\ IsS1_S(s1_0) /\ IsS1_S(s2_0) /\ IsS1_S(v_1) /\
+  Type: IsArray_S1_S(q) /\ IsS1_S(s1_0) /\ IsS1_S(s2_0) /\ IsS1_S(v_1) /\
       IsS1_S(v) /\ is_sint32(k) /\ is_sint32(x) /\ is_sint32(1 + k) /\
-      IsArray1S1_S(m) /\ IsArray1S1_S(m_1).
+      IsArray_S1_S(m) /\ IsArray_S1_S(m_1).
   (* Pre-condition *)
   Have: (0 < k) /\ (k <= 9).
   (* Call 'job2' *)
@@ -150,7 +150,7 @@ Goal Instance of 'Pre-condition (file tests/wp_typed/user_collect.i, line 26) in
 :
 Let m = q[k <- v].
 Assume {
-  Type: IsArray1S1_S(q) /\ IsS1_S(s1_0) /\ is_sint32(k) /\ IsArray1S1_S(m) /\
+  Type: IsArray_S1_S(q) /\ IsS1_S(s1_0) /\ is_sint32(k) /\ IsArray_S1_S(m) /\
       is_sint32(1 + k).
   (* Pre-condition *)
   Have: (0 <= k) /\ (k <= 8).
@@ -174,9 +174,9 @@ Let x = k - 1.
 Let m = q[x <- v].
 Let m_1 = m[k <- v_1].
 Assume {
-  Type: IsArray1S1_S(q) /\ IsS1_S(s1_0) /\ IsS1_S(s2_0) /\ IsS1_S(v_1) /\
+  Type: IsArray_S1_S(q) /\ IsS1_S(s1_0) /\ IsS1_S(s2_0) /\ IsS1_S(v_1) /\
       IsS1_S(v) /\ is_sint32(k) /\ is_sint32(x) /\ is_sint32(1 + k) /\
-      IsArray1S1_S(m) /\ IsArray1S1_S(m_1).
+      IsArray_S1_S(m) /\ IsArray_S1_S(m_1).
   (* Pre-condition *)
   Have: (0 < k) /\ (k <= 9).
   (* Call 'job3' *)
@@ -193,9 +193,9 @@ Let x = k - 1.
 Let m = q[x <- v_1].
 Let m_1 = m[k <- v].
 Assume {
-  Type: IsArray1S1_S(q) /\ IsS1_S(s1_0) /\ IsS1_S(s2_0) /\ IsS1_S(v) /\
+  Type: IsArray_S1_S(q) /\ IsS1_S(s1_0) /\ IsS1_S(s2_0) /\ IsS1_S(v) /\
       IsS1_S(v_1) /\ is_sint32(k) /\ is_sint32(x) /\ is_sint32(1 + k) /\
-      IsArray1S1_S(m) /\ IsArray1S1_S(m_1).
+      IsArray_S1_S(m) /\ IsArray_S1_S(m_1).
   (* Pre-condition *)
   Have: (0 < k) /\ (k <= 9).
   (* Call 'job3' *)
@@ -213,9 +213,9 @@ Let m = q[x <- v].
 Let m_1 = m[k <- v_1].
 Let m_2 = q[x <- s1_0].
 Assume {
-  Type: IsArray1S1_S(q) /\ IsS1_S(s1_0) /\ IsS1_S(s2_0) /\ IsS1_S(v_1) /\
+  Type: IsArray_S1_S(q) /\ IsS1_S(s1_0) /\ IsS1_S(s2_0) /\ IsS1_S(v_1) /\
       IsS1_S(v) /\ is_sint32(k) /\ is_sint32(x) /\ is_sint32(1 + k) /\
-      IsArray1S1_S(m) /\ IsArray1S1_S(m_1).
+      IsArray_S1_S(m) /\ IsArray_S1_S(m_1).
   (* Pre-condition *)
   Have: (0 < k) /\ (k <= 9).
   (* Call 'job3' *)
@@ -239,7 +239,7 @@ Goal Instance of 'Pre-condition (file tests/wp_typed/user_collect.i, line 37) in
 :
 Let m = q[k <- v].
 Assume {
-  Type: IsArray1S1_S(q) /\ IsS1_S(s1_0) /\ is_sint32(k) /\ IsArray1S1_S(m) /\
+  Type: IsArray_S1_S(q) /\ IsS1_S(s1_0) /\ is_sint32(k) /\ IsArray_S1_S(m) /\
       is_sint32(1 + k).
   (* Pre-condition *)
   Have: (0 <= k) /\ (k <= 8).
@@ -322,7 +322,7 @@ Goal Post-condition 'Q' in 'job3':
 Let a = s.F1_S_f.
 Let m = q[k <- { F1_S_f = (q[k].F1_S_f)[0 <- a[0]][1 <- a[1]] }].
 Assume {
-  Type: IsArray1S1_S(q) /\ IsS1_S(s) /\ is_sint32(k) /\ IsArray1S1_S(m).
+  Type: IsArray_S1_S(q) /\ IsS1_S(s) /\ is_sint32(k) /\ IsArray_S1_S(m).
   (* Pre-condition *)
   Have: (0 <= k) /\ (k <= 9).
 }
diff --git a/src/plugins/wp/tests/wp_typed/oracle/user_init.0.res.oracle b/src/plugins/wp/tests/wp_typed/oracle/user_init.0.res.oracle
index 57d9150a815..e1453e78f00 100644
--- a/src/plugins/wp/tests/wp_typed/oracle/user_init.0.res.oracle
+++ b/src/plugins/wp/tests/wp_typed/oracle/user_init.0.res.oracle
@@ -795,7 +795,7 @@ Prove: true.
 Goal Post-condition (file tests/wp_typed/user_init.i, line 39) in 'init_t2_v1':
 Assume {
   (* Heap *)
-  Type: IsArray2_sint32(t2_1).
+  Type: IsArray_d2_sint32(t2_1).
   (* Goal *)
   When: (0 <= i) /\ (0 <= i_1) /\ (i <= 9) /\ (i_1 <= 19).
   (* Loop assigns 'lack,Zone_i' *)
@@ -816,7 +816,7 @@ Let m = t2_0[i].
 Assume {
   Type: is_uint32(i).
   (* Heap *)
-  Type: IsArray2_sint32(t2_1).
+  Type: IsArray_d2_sint32(t2_1).
   (* Goal *)
   When: (0 <= i_1) /\ (0 <= i_2) /\ (i_1 < to_uint32(1 + i)) /\ (i_2 <= 19).
   (* Loop assigns 'lack,Zone_i' *)
@@ -855,7 +855,7 @@ Goal Preservation of Invariant 'Range_i' (file tests/wp_typed/user_init.i, line
 Assume {
   Type: is_uint32(i).
   (* Heap *)
-  Type: IsArray2_sint32(t2_0).
+  Type: IsArray_d2_sint32(t2_0).
   (* Loop assigns 'lack,Zone_i' *)
   Have: forall i_2,i_1 : Z. ((0 <= i_2) -> ((0 <= i_1) -> ((i_2 <= 9) ->
       ((i_1 <= 19) ->
@@ -893,7 +893,7 @@ Let m = t2_0[i].
 Assume {
   Type: is_uint32(i) /\ is_uint32(j).
   (* Heap *)
-  Type: IsArray2_sint32(t2_1).
+  Type: IsArray_d2_sint32(t2_1).
   (* Goal *)
   When: (0 <= i_1) /\ (i_1 < to_uint32(1 + j)).
   (* Loop assigns 'lack,Zone_i' *)
@@ -937,7 +937,7 @@ Let m = t2_0[i].
 Assume {
   Type: is_uint32(i) /\ is_uint32(j).
   (* Heap *)
-  Type: IsArray2_sint32(t2_2).
+  Type: IsArray_d2_sint32(t2_2).
   (* Goal *)
   When: (0 <= i_1) /\ (i_1 < i) /\ (0 <= i_2) /\ (i_2 <= 19).
   (* Loop assigns 'lack,Zone_i' *)
@@ -980,7 +980,7 @@ Goal Preservation of Invariant 'Range_j' (file tests/wp_typed/user_init.i, line
 Assume {
   Type: is_uint32(i) /\ is_uint32(j).
   (* Heap *)
-  Type: IsArray2_sint32(t2_0).
+  Type: IsArray_d2_sint32(t2_0).
   (* Loop assigns 'lack,Zone_i' *)
   Have: forall i_2,i_1 : Z. ((0 <= i_2) -> ((0 <= i_1) -> ((i_2 <= 9) ->
       ((i_1 <= 19) ->
@@ -1037,7 +1037,7 @@ Effect at line 51
 Assume {
   Type: is_uint32(i_2).
   (* Heap *)
-  Type: IsArray2_sint32(t2_0).
+  Type: IsArray_d2_sint32(t2_0).
   (* Goal *)
   When: (0 <= i_3) /\ (0 <= i_4) /\ (0 <= i_5) /\ (0 <= i_6) /\ (0 <= i) /\
       (0 <= i_1) /\ (i_3 <= 9) /\ (i_5 <= 9) /\ (i <= 9) /\ (i_4 <= 19) /\
@@ -1076,7 +1076,7 @@ Effect at line 58
 Assume {
   Type: is_uint32(i_2).
   (* Heap *)
-  Type: IsArray2_sint32(t2_0).
+  Type: IsArray_d2_sint32(t2_0).
   (* Goal *)
   When: (0 <= i_3) /\ (0 <= i_4) /\ (0 <= i_5) /\ (0 <= i_6) /\ (0 <= i) /\
       (0 <= i_1) /\ (i_3 <= 9) /\ (i_5 <= 9) /\ (i <= 9) /\ (i_4 <= 19) /\
@@ -1120,7 +1120,7 @@ Effect at line 58
 Assume {
   Type: is_uint32(i_2) /\ is_uint32(j).
   (* Heap *)
-  Type: IsArray2_sint32(t2_0).
+  Type: IsArray_d2_sint32(t2_0).
   (* Goal *)
   When: (0 <= i_3) /\ (0 <= i_4) /\ (0 <= i_5) /\ (0 <= i_6) /\ (0 <= i) /\
       (0 <= i_1) /\ (i_3 <= 9) /\ (i_5 <= 9) /\ (i <= 9) /\ (i_4 <= 19) /\
@@ -1162,7 +1162,7 @@ Effect at line 59
 Assume {
   Type: is_uint32(i) /\ is_uint32(j).
   (* Heap *)
-  Type: IsArray2_sint32(t2_0).
+  Type: IsArray_d2_sint32(t2_0).
   (* Goal *)
   When: (0 <= i) /\ (0 <= j) /\ (i <= 9) /\ (j <= 19).
   (* Loop assigns 'lack,Zone_i' *)
@@ -1211,7 +1211,7 @@ Assume {
   Have: i <= 9.
   Have: i_1 <= 19.
   (* Heap *)
-  Type: IsArray2_sint32(t2_0).
+  Type: IsArray_d2_sint32(t2_0).
   (* Loop assigns 'lack,Zone_i' *)
   Have: forall i_5,i_4 : Z. ((0 <= i_5) -> ((0 <= i_4) -> ((i_5 <= 9) ->
       ((i_4 <= 19) ->
@@ -1227,7 +1227,7 @@ Goal Decreasing of Loop variant at loop (file tests/wp_typed/user_init.i, line 5
 Assume {
   Type: is_uint32(i).
   (* Heap *)
-  Type: IsArray2_sint32(t2_0).
+  Type: IsArray_d2_sint32(t2_0).
   (* Loop assigns 'lack,Zone_i' *)
   Have: forall i_2,i_1 : Z. ((0 <= i_2) -> ((0 <= i_1) -> ((i_2 <= 9) ->
       ((i_1 <= 19) ->
@@ -1264,7 +1264,7 @@ Goal Decreasing of Loop variant at loop (file tests/wp_typed/user_init.i, line 5
 Assume {
   Type: is_uint32(i) /\ is_uint32(j).
   (* Heap *)
-  Type: IsArray2_sint32(t2_0).
+  Type: IsArray_d2_sint32(t2_0).
   (* Loop assigns 'lack,Zone_i' *)
   Have: forall i_2,i_1 : Z. ((0 <= i_2) -> ((0 <= i_1) -> ((i_2 <= 9) ->
       ((i_1 <= 19) ->
@@ -1680,8 +1680,8 @@ Prove: P_MemSet20(t2_0[i], 20, v).
 
 Goal Preservation of Invariant 'Partial_i' (file tests/wp_typed/user_init.i, line 108):
 Assume {
-  Type: IsArray1_sint32(v) /\ is_uint32(i) /\ is_sint32(v_1) /\
-      IsArray1_sint32(t2_0[i]).
+  Type: IsArray_sint32(v) /\ is_uint32(i) /\ is_sint32(v_1) /\
+      IsArray_sint32(t2_0[i]).
   (* Goal *)
   When: (0 <= i_1) /\ (i_1 < to_uint32(1 + i)).
   (* Invariant 'Partial_i' *)
@@ -1705,8 +1705,8 @@ Prove: true.
 
 Goal Preservation of Invariant 'Range_i' (file tests/wp_typed/user_init.i, line 107):
 Assume {
-  Type: IsArray1_sint32(v) /\ is_uint32(i) /\ is_sint32(v_1) /\
-      IsArray1_sint32(t2_0[i]).
+  Type: IsArray_sint32(v) /\ is_uint32(i) /\ is_sint32(v_1) /\
+      IsArray_sint32(t2_0[i]).
   (* Invariant 'Partial_i' *)
   Have: forall i_1 : Z. ((0 <= i_1) -> ((i_1 < i) ->
       P_MemSet20(t2_0[i_1], 20, v_1))).
@@ -1729,8 +1729,8 @@ Prove: true.
 Goal Preservation of Invariant 'Partial_j' (file tests/wp_typed/user_init.i, line 114):
 Let m = v[j <- v_1].
 Assume {
-  Type: IsArray1_sint32(v) /\ is_uint32(i) /\ is_uint32(j) /\
-      is_sint32(v_1) /\ IsArray1_sint32(t2_0[i]) /\ IsArray1_sint32(m).
+  Type: IsArray_sint32(v) /\ is_uint32(i) /\ is_uint32(j) /\
+      is_sint32(v_1) /\ IsArray_sint32(t2_0[i]) /\ IsArray_sint32(m).
   (* Invariant 'Partial_i' *)
   Have: forall i_1 : Z. ((0 <= i_1) -> ((i_1 < i) ->
       P_MemSet20(t2_0[i_1], 20, v_1))).
@@ -1752,7 +1752,7 @@ Prove: P_MemSet20(m, to_uint32(1 + j), v_1).
 Goal Establishment of Invariant 'Partial_j' (file tests/wp_typed/user_init.i, line 114):
 Let m = t2_0[i].
 Assume {
-  Type: is_uint32(i) /\ is_sint32(v) /\ IsArray1_sint32(m).
+  Type: is_uint32(i) /\ is_sint32(v) /\ IsArray_sint32(m).
   (* Invariant 'Partial_i' *)
   Have: forall i_1 : Z. ((0 <= i_1) -> ((i_1 < i) ->
       P_MemSet20(t2_0[i_1], 20, v))).
@@ -1767,8 +1767,8 @@ Prove: P_MemSet20(m, 0, v).
 
 Goal Preservation of Invariant 'Range_j' (file tests/wp_typed/user_init.i, line 113):
 Assume {
-  Type: IsArray1_sint32(v) /\ is_uint32(i) /\ is_uint32(j) /\
-      is_sint32(v_1) /\ IsArray1_sint32(t2_0[i]).
+  Type: IsArray_sint32(v) /\ is_uint32(i) /\ is_uint32(j) /\
+      is_sint32(v_1) /\ IsArray_sint32(t2_0[i]).
   (* Invariant 'Partial_i' *)
   Have: forall i_1 : Z. ((0 <= i_1) -> ((i_1 < i) ->
       P_MemSet20(t2_0[i_1], 20, v_1))).
@@ -1810,8 +1810,8 @@ Prove: true.
 Goal Loop assigns 'tactic,Zone_i' (2/3):
 Effect at line 111
 Assume {
-  Type: IsArray1_sint32(v) /\ is_uint32(i_2) /\ is_sint32(v_1) /\
-      IsArray1_sint32(t2_0[i_2]).
+  Type: IsArray_sint32(v) /\ is_uint32(i_2) /\ is_sint32(v_1) /\
+      IsArray_sint32(t2_0[i_2]).
   (* Goal *)
   When: (0 <= i_3) /\ (0 <= i_4) /\ (0 <= i_5) /\ (0 <= i) /\ (i_3 <= 9) /\
       (i_5 <= 9) /\ (i <= 9) /\ (i_4 <= 19).
@@ -1833,8 +1833,8 @@ Prove: exists i_7,i_6 : Z. (i_7 <= i) /\ (i_6 <= i_1) /\ (0 <= i_7) /\
 Goal Loop assigns 'tactic,Zone_i' (3/3):
 Effect at line 117
 Assume {
-  Type: IsArray1_sint32(v) /\ is_uint32(i) /\ is_sint32(v_1) /\
-      IsArray1_sint32(t2_0[i]).
+  Type: IsArray_sint32(v) /\ is_uint32(i) /\ is_sint32(v_1) /\
+      IsArray_sint32(t2_0[i]).
   (* Goal *)
   When: (0 <= i) /\ (0 <= i_1) /\ (i <= 9) /\ (i_1 <= 19).
   (* Invariant 'Partial_i' *)
@@ -1884,8 +1884,8 @@ Prove: exists i_5,i_4 : Z. (i_5 <= i) /\ (i_4 <= i_1) /\ (0 <= i_5) /\
 
 Goal Decreasing of Loop variant at loop (file tests/wp_typed/user_init.i, line 111):
 Assume {
-  Type: IsArray1_sint32(v) /\ is_uint32(i) /\ is_sint32(v_1) /\
-      IsArray1_sint32(t2_0[i]).
+  Type: IsArray_sint32(v) /\ is_uint32(i) /\ is_sint32(v_1) /\
+      IsArray_sint32(t2_0[i]).
   (* Invariant 'Partial_i' *)
   Have: forall i_1 : Z. ((0 <= i_1) -> ((i_1 < i) ->
       P_MemSet20(t2_0[i_1], 20, v_1))).
@@ -1907,8 +1907,8 @@ Prove: true.
 
 Goal Decreasing of Loop variant at loop (file tests/wp_typed/user_init.i, line 117):
 Assume {
-  Type: IsArray1_sint32(v) /\ is_uint32(i) /\ is_uint32(j) /\
-      is_sint32(v_1) /\ IsArray1_sint32(t2_0[i]).
+  Type: IsArray_sint32(v) /\ is_uint32(i) /\ is_uint32(j) /\
+      is_sint32(v_1) /\ IsArray_sint32(t2_0[i]).
   (* Invariant 'Partial_i' *)
   Have: forall i_1 : Z. ((0 <= i_1) -> ((i_1 < i) ->
       P_MemSet20(t2_0[i_1], 20, v_1))).
diff --git a/src/plugins/wp/tests/wp_typed/oracle/user_init.1.res.oracle b/src/plugins/wp/tests/wp_typed/oracle/user_init.1.res.oracle
index 2b7c224c04f..52e4c648900 100644
--- a/src/plugins/wp/tests/wp_typed/oracle/user_init.1.res.oracle
+++ b/src/plugins/wp/tests/wp_typed/oracle/user_init.1.res.oracle
@@ -795,7 +795,7 @@ Prove: true.
 Goal Post-condition (file tests/wp_typed/user_init.i, line 39) in 'init_t2_v1':
 Assume {
   (* Heap *)
-  Type: IsArray2_sint32(t2_1).
+  Type: IsArray_d2_sint32(t2_1).
   (* Goal *)
   When: (0 <= i) /\ (0 <= i_1) /\ (i <= 9) /\ (i_1 <= 19).
   (* Loop assigns 'lack,Zone_i' *)
@@ -816,7 +816,7 @@ Let m = t2_0[i].
 Assume {
   Type: is_uint32(i).
   (* Heap *)
-  Type: IsArray2_sint32(t2_1).
+  Type: IsArray_d2_sint32(t2_1).
   (* Goal *)
   When: (0 <= i_1) /\ (0 <= i_2) /\ (i_1 < to_uint32(1 + i)) /\ (i_2 <= 19).
   (* Loop assigns 'lack,Zone_i' *)
@@ -855,7 +855,7 @@ Goal Preservation of Invariant 'Range_i' (file tests/wp_typed/user_init.i, line
 Assume {
   Type: is_uint32(i).
   (* Heap *)
-  Type: IsArray2_sint32(t2_0).
+  Type: IsArray_d2_sint32(t2_0).
   (* Loop assigns 'lack,Zone_i' *)
   Have: forall i_2,i_1 : Z. ((0 <= i_2) -> ((0 <= i_1) -> ((i_2 <= 9) ->
       ((i_1 <= 19) ->
@@ -893,7 +893,7 @@ Let m = t2_0[i].
 Assume {
   Type: is_uint32(i) /\ is_uint32(j).
   (* Heap *)
-  Type: IsArray2_sint32(t2_1).
+  Type: IsArray_d2_sint32(t2_1).
   (* Goal *)
   When: (0 <= i_1) /\ (i_1 < to_uint32(1 + j)).
   (* Loop assigns 'lack,Zone_i' *)
@@ -937,7 +937,7 @@ Let m = t2_0[i].
 Assume {
   Type: is_uint32(i) /\ is_uint32(j).
   (* Heap *)
-  Type: IsArray2_sint32(t2_2).
+  Type: IsArray_d2_sint32(t2_2).
   (* Goal *)
   When: (0 <= i_1) /\ (i_1 < i) /\ (0 <= i_2) /\ (i_2 <= 19).
   (* Loop assigns 'lack,Zone_i' *)
@@ -980,7 +980,7 @@ Goal Preservation of Invariant 'Range_j' (file tests/wp_typed/user_init.i, line
 Assume {
   Type: is_uint32(i) /\ is_uint32(j).
   (* Heap *)
-  Type: IsArray2_sint32(t2_0).
+  Type: IsArray_d2_sint32(t2_0).
   (* Loop assigns 'lack,Zone_i' *)
   Have: forall i_2,i_1 : Z. ((0 <= i_2) -> ((0 <= i_1) -> ((i_2 <= 9) ->
       ((i_1 <= 19) ->
@@ -1037,7 +1037,7 @@ Effect at line 51
 Assume {
   Type: is_uint32(i_2).
   (* Heap *)
-  Type: IsArray2_sint32(t2_0).
+  Type: IsArray_d2_sint32(t2_0).
   (* Goal *)
   When: (0 <= i_3) /\ (0 <= i_4) /\ (0 <= i_5) /\ (0 <= i_6) /\ (0 <= i) /\
       (0 <= i_1) /\ (i_3 <= 9) /\ (i_5 <= 9) /\ (i <= 9) /\ (i_4 <= 19) /\
@@ -1076,7 +1076,7 @@ Effect at line 58
 Assume {
   Type: is_uint32(i_2).
   (* Heap *)
-  Type: IsArray2_sint32(t2_0).
+  Type: IsArray_d2_sint32(t2_0).
   (* Goal *)
   When: (0 <= i_3) /\ (0 <= i_4) /\ (0 <= i_5) /\ (0 <= i_6) /\ (0 <= i) /\
       (0 <= i_1) /\ (i_3 <= 9) /\ (i_5 <= 9) /\ (i <= 9) /\ (i_4 <= 19) /\
@@ -1120,7 +1120,7 @@ Effect at line 58
 Assume {
   Type: is_uint32(i_2) /\ is_uint32(j).
   (* Heap *)
-  Type: IsArray2_sint32(t2_0).
+  Type: IsArray_d2_sint32(t2_0).
   (* Goal *)
   When: (0 <= i_3) /\ (0 <= i_4) /\ (0 <= i_5) /\ (0 <= i_6) /\ (0 <= i) /\
       (0 <= i_1) /\ (i_3 <= 9) /\ (i_5 <= 9) /\ (i <= 9) /\ (i_4 <= 19) /\
@@ -1162,7 +1162,7 @@ Effect at line 59
 Assume {
   Type: is_uint32(i) /\ is_uint32(j).
   (* Heap *)
-  Type: IsArray2_sint32(t2_0).
+  Type: IsArray_d2_sint32(t2_0).
   (* Goal *)
   When: (0 <= i) /\ (0 <= j) /\ (i <= 9) /\ (j <= 19).
   (* Loop assigns 'lack,Zone_i' *)
@@ -1211,7 +1211,7 @@ Assume {
   Have: i <= 9.
   Have: i_1 <= 19.
   (* Heap *)
-  Type: IsArray2_sint32(t2_0).
+  Type: IsArray_d2_sint32(t2_0).
   (* Loop assigns 'lack,Zone_i' *)
   Have: forall i_5,i_4 : Z. ((0 <= i_5) -> ((0 <= i_4) -> ((i_5 <= 9) ->
       ((i_4 <= 19) ->
@@ -1227,7 +1227,7 @@ Goal Decreasing of Loop variant at loop (file tests/wp_typed/user_init.i, line 5
 Assume {
   Type: is_uint32(i).
   (* Heap *)
-  Type: IsArray2_sint32(t2_0).
+  Type: IsArray_d2_sint32(t2_0).
   (* Loop assigns 'lack,Zone_i' *)
   Have: forall i_2,i_1 : Z. ((0 <= i_2) -> ((0 <= i_1) -> ((i_2 <= 9) ->
       ((i_1 <= 19) ->
@@ -1264,7 +1264,7 @@ Goal Decreasing of Loop variant at loop (file tests/wp_typed/user_init.i, line 5
 Assume {
   Type: is_uint32(i) /\ is_uint32(j).
   (* Heap *)
-  Type: IsArray2_sint32(t2_0).
+  Type: IsArray_d2_sint32(t2_0).
   (* Loop assigns 'lack,Zone_i' *)
   Have: forall i_2,i_1 : Z. ((0 <= i_2) -> ((0 <= i_1) -> ((i_2 <= 9) ->
       ((i_1 <= 19) ->
@@ -1680,8 +1680,8 @@ Prove: P_MemSet20(t2_0[i], 20, v).
 
 Goal Preservation of Invariant 'Partial_i' (file tests/wp_typed/user_init.i, line 108):
 Assume {
-  Type: IsArray1_sint32(v) /\ is_uint32(i) /\ is_sint32(v_1) /\
-      IsArray1_sint32(t2_0[i]).
+  Type: IsArray_sint32(v) /\ is_uint32(i) /\ is_sint32(v_1) /\
+      IsArray_sint32(t2_0[i]).
   (* Goal *)
   When: (0 <= i_1) /\ (i_1 < to_uint32(1 + i)).
   (* Invariant 'Partial_i' *)
@@ -1705,8 +1705,8 @@ Prove: true.
 
 Goal Preservation of Invariant 'Range_i' (file tests/wp_typed/user_init.i, line 107):
 Assume {
-  Type: IsArray1_sint32(v) /\ is_uint32(i) /\ is_sint32(v_1) /\
-      IsArray1_sint32(t2_0[i]).
+  Type: IsArray_sint32(v) /\ is_uint32(i) /\ is_sint32(v_1) /\
+      IsArray_sint32(t2_0[i]).
   (* Invariant 'Partial_i' *)
   Have: forall i_1 : Z. ((0 <= i_1) -> ((i_1 < i) ->
       P_MemSet20(t2_0[i_1], 20, v_1))).
@@ -1729,8 +1729,8 @@ Prove: true.
 Goal Preservation of Invariant 'Partial_j' (file tests/wp_typed/user_init.i, line 114):
 Let m = v[j <- v_1].
 Assume {
-  Type: IsArray1_sint32(v) /\ is_uint32(i) /\ is_uint32(j) /\
-      is_sint32(v_1) /\ IsArray1_sint32(t2_0[i]) /\ IsArray1_sint32(m).
+  Type: IsArray_sint32(v) /\ is_uint32(i) /\ is_uint32(j) /\
+      is_sint32(v_1) /\ IsArray_sint32(t2_0[i]) /\ IsArray_sint32(m).
   (* Invariant 'Partial_i' *)
   Have: forall i_1 : Z. ((0 <= i_1) -> ((i_1 < i) ->
       P_MemSet20(t2_0[i_1], 20, v_1))).
@@ -1752,7 +1752,7 @@ Prove: P_MemSet20(m, to_uint32(1 + j), v_1).
 Goal Establishment of Invariant 'Partial_j' (file tests/wp_typed/user_init.i, line 114):
 Let m = t2_0[i].
 Assume {
-  Type: is_uint32(i) /\ is_sint32(v) /\ IsArray1_sint32(m).
+  Type: is_uint32(i) /\ is_sint32(v) /\ IsArray_sint32(m).
   (* Invariant 'Partial_i' *)
   Have: forall i_1 : Z. ((0 <= i_1) -> ((i_1 < i) ->
       P_MemSet20(t2_0[i_1], 20, v))).
@@ -1767,8 +1767,8 @@ Prove: P_MemSet20(m, 0, v).
 
 Goal Preservation of Invariant 'Range_j' (file tests/wp_typed/user_init.i, line 113):
 Assume {
-  Type: IsArray1_sint32(v) /\ is_uint32(i) /\ is_uint32(j) /\
-      is_sint32(v_1) /\ IsArray1_sint32(t2_0[i]).
+  Type: IsArray_sint32(v) /\ is_uint32(i) /\ is_uint32(j) /\
+      is_sint32(v_1) /\ IsArray_sint32(t2_0[i]).
   (* Invariant 'Partial_i' *)
   Have: forall i_1 : Z. ((0 <= i_1) -> ((i_1 < i) ->
       P_MemSet20(t2_0[i_1], 20, v_1))).
@@ -1810,8 +1810,8 @@ Prove: true.
 Goal Loop assigns 'tactic,Zone_i' (2/3):
 Effect at line 111
 Assume {
-  Type: IsArray1_sint32(v) /\ is_uint32(i_2) /\ is_sint32(v_1) /\
-      IsArray1_sint32(t2_0[i_2]).
+  Type: IsArray_sint32(v) /\ is_uint32(i_2) /\ is_sint32(v_1) /\
+      IsArray_sint32(t2_0[i_2]).
   (* Goal *)
   When: (0 <= i_3) /\ (0 <= i_4) /\ (0 <= i_5) /\ (0 <= i) /\ (i_3 <= 9) /\
       (i_5 <= 9) /\ (i <= 9) /\ (i_4 <= 19).
@@ -1833,8 +1833,8 @@ Prove: exists i_7,i_6 : Z. (i_7 <= i) /\ (i_6 <= i_1) /\ (0 <= i_7) /\
 Goal Loop assigns 'tactic,Zone_i' (3/3):
 Effect at line 117
 Assume {
-  Type: IsArray1_sint32(v) /\ is_uint32(i) /\ is_sint32(v_1) /\
-      IsArray1_sint32(t2_0[i]).
+  Type: IsArray_sint32(v) /\ is_uint32(i) /\ is_sint32(v_1) /\
+      IsArray_sint32(t2_0[i]).
   (* Goal *)
   When: (0 <= i) /\ (0 <= i_1) /\ (i <= 9) /\ (i_1 <= 19).
   (* Invariant 'Partial_i' *)
@@ -1884,8 +1884,8 @@ Prove: exists i_5,i_4 : Z. (i_5 <= i) /\ (i_4 <= i_1) /\ (0 <= i_5) /\
 
 Goal Decreasing of Loop variant at loop (file tests/wp_typed/user_init.i, line 111):
 Assume {
-  Type: IsArray1_sint32(v) /\ is_uint32(i) /\ is_sint32(v_1) /\
-      IsArray1_sint32(t2_0[i]).
+  Type: IsArray_sint32(v) /\ is_uint32(i) /\ is_sint32(v_1) /\
+      IsArray_sint32(t2_0[i]).
   (* Invariant 'Partial_i' *)
   Have: forall i_1 : Z. ((0 <= i_1) -> ((i_1 < i) ->
       P_MemSet20(t2_0[i_1], 20, v_1))).
@@ -1907,8 +1907,8 @@ Prove: true.
 
 Goal Decreasing of Loop variant at loop (file tests/wp_typed/user_init.i, line 117):
 Assume {
-  Type: IsArray1_sint32(v) /\ is_uint32(i) /\ is_uint32(j) /\
-      is_sint32(v_1) /\ IsArray1_sint32(t2_0[i]).
+  Type: IsArray_sint32(v) /\ is_uint32(i) /\ is_uint32(j) /\
+      is_sint32(v_1) /\ IsArray_sint32(t2_0[i]).
   (* Invariant 'Partial_i' *)
   Have: forall i_1 : Z. ((0 <= i_1) -> ((i_1 < i) ->
       P_MemSet20(t2_0[i_1], 20, v_1))).
diff --git a/src/plugins/wp/tests/wp_typed/oracle_qualif/user_init.1.session/script/init_t2_v3_loop_assigns_part2.json b/src/plugins/wp/tests/wp_typed/oracle_qualif/user_init.1.session/script/init_t2_v3_loop_assigns_part2.json
index a9966d41d85..b729e0fa942 100644
--- a/src/plugins/wp/tests/wp_typed/oracle_qualif/user_init.1.session/script/init_t2_v3_loop_assigns_part2.json
+++ b/src/plugins/wp/tests/wp_typed/oracle_qualif/user_init.1.session/script/init_t2_v3_loop_assigns_part2.json
@@ -3,8 +3,8 @@
                 "target": "exists i_0,i_1:int.\n(i_0<=i_13) /\\ (i_1<=i_14) /\\ (0<=i_0) /\\ (i_13<=i_0) /\\ (i_14<=i_1)\n/\\ (i_0<=9)",
                 "pattern": "\\E$i$i0$i$i9" },
     "children": { "Goal 1/2": [ { "prover": "Alt-Ergo:2.2.0",
-                                  "verdict": "valid", "time": 0.0196,
+                                  "verdict": "valid", "time": 0.0169,
                                   "steps": 39 } ],
                   "Goal 2/2": [ { "prover": "Alt-Ergo:2.2.0",
-                                  "verdict": "valid", "time": 0.0223,
+                                  "verdict": "valid", "time": 0.0167,
                                   "steps": 39 } ] } } ]
diff --git a/src/plugins/wp/tests/wp_typed/oracle_qualif/user_init.1.session/script/init_t2_v3_loop_assigns_part3.json b/src/plugins/wp/tests/wp_typed/oracle_qualif/user_init.1.session/script/init_t2_v3_loop_assigns_part3.json
index 0be61590020..2580abd19c2 100644
--- a/src/plugins/wp/tests/wp_typed/oracle_qualif/user_init.1.session/script/init_t2_v3_loop_assigns_part3.json
+++ b/src/plugins/wp/tests/wp_typed/oracle_qualif/user_init.1.session/script/init_t2_v3_loop_assigns_part3.json
@@ -3,8 +3,8 @@
                 "target": "exists i_0,i_1:int.\n(i_0<=i_4) /\\ (i_1<=i_6) /\\ (0<=i_0) /\\ (i_4<=i_0) /\\ (i_6<=i_1) /\\ (i_0<=9)",
                 "pattern": "\\E$i$i0$i$i9" },
     "children": { "Goal 1/2": [ { "prover": "Alt-Ergo:2.2.0",
-                                  "verdict": "valid", "time": 0.0152,
+                                  "verdict": "valid", "time": 0.0146,
                                   "steps": 27 } ],
                   "Goal 2/2": [ { "prover": "Alt-Ergo:2.2.0",
-                                  "verdict": "valid", "time": 0.0151,
+                                  "verdict": "valid", "time": 0.0146,
                                   "steps": 27 } ] } } ]
-- 
GitLab