diff --git a/ivette/src/frama-c/kernel/api/parameters/index.ts b/ivette/src/frama-c/kernel/api/parameters/index.ts
index f42b08cf6cd7c4df096be969b4b1ff93861bacd4..8fca8d4066e468e70fbdc1f924826e08a4a5b41a 100644
--- a/ivette/src/frama-c/kernel/api/parameters/index.ts
+++ b/ivette/src/frama-c/kernel/api/parameters/index.ts
@@ -8284,294 +8284,6 @@ const wpModel_internal: State.State<string> = {
 /** State of parameter -wp-model */
 export const wpModel: State.State<string> = wpModel_internal;
 
-/** Signal for state [`regionAnnot`](#regionannot)  */
-export const signalRegionAnnot: Server.Signal = {
-  name: 'kernel.parameters.signalRegionAnnot',
-};
-
-const getRegionAnnot_internal: Server.GetRequest<null,boolean> = {
-  kind: Server.RqKind.GET,
-  name: 'kernel.parameters.getRegionAnnot',
-  input: Json.jNull,
-  output: Json.jBoolean,
-  fallback: false,
-  signals: [],
-};
-/** Getter for state [`regionAnnot`](#regionannot)  */
-export const getRegionAnnot: Server.GetRequest<null,boolean>= getRegionAnnot_internal;
-
-const setRegionAnnot_internal: Server.SetRequest<boolean,null> = {
-  kind: Server.RqKind.SET,
-  name: 'kernel.parameters.setRegionAnnot',
-  input: Json.jBoolean,
-  output: Json.jNull,
-  fallback: null,
-  signals: [],
-};
-/** Setter for state [`regionAnnot`](#regionannot)  */
-export const setRegionAnnot: Server.SetRequest<boolean,null>= setRegionAnnot_internal;
-
-const regionAnnot_internal: State.State<boolean> = {
-  name: 'kernel.parameters.regionAnnot',
-  signal: signalRegionAnnot,
-  getter: getRegionAnnot,
-  setter: setRegionAnnot,
-};
-/** State of parameter -region-annot */
-export const regionAnnot: State.State<boolean> = regionAnnot_internal;
-
-/** Signal for state [`wpRegionFlat`](#wpregionflat)  */
-export const signalWpRegionFlat: Server.Signal = {
-  name: 'kernel.parameters.signalWpRegionFlat',
-};
-
-const getWpRegionFlat_internal: Server.GetRequest<null,boolean> = {
-  kind: Server.RqKind.GET,
-  name: 'kernel.parameters.getWpRegionFlat',
-  input: Json.jNull,
-  output: Json.jBoolean,
-  fallback: false,
-  signals: [],
-};
-/** Getter for state [`wpRegionFlat`](#wpregionflat)  */
-export const getWpRegionFlat: Server.GetRequest<null,boolean>= getWpRegionFlat_internal;
-
-const setWpRegionFlat_internal: Server.SetRequest<boolean,null> = {
-  kind: Server.RqKind.SET,
-  name: 'kernel.parameters.setWpRegionFlat',
-  input: Json.jBoolean,
-  output: Json.jNull,
-  fallback: null,
-  signals: [],
-};
-/** Setter for state [`wpRegionFlat`](#wpregionflat)  */
-export const setWpRegionFlat: Server.SetRequest<boolean,null>= setWpRegionFlat_internal;
-
-const wpRegionFlat_internal: State.State<boolean> = {
-  name: 'kernel.parameters.wpRegionFlat',
-  signal: signalWpRegionFlat,
-  getter: getWpRegionFlat,
-  setter: setWpRegionFlat,
-};
-/** State of parameter -wp-region-flat */
-export const wpRegionFlat: State.State<boolean> = wpRegionFlat_internal;
-
-/** Signal for state [`wpRegionPack`](#wpregionpack)  */
-export const signalWpRegionPack: Server.Signal = {
-  name: 'kernel.parameters.signalWpRegionPack',
-};
-
-const getWpRegionPack_internal: Server.GetRequest<null,boolean> = {
-  kind: Server.RqKind.GET,
-  name: 'kernel.parameters.getWpRegionPack',
-  input: Json.jNull,
-  output: Json.jBoolean,
-  fallback: false,
-  signals: [],
-};
-/** Getter for state [`wpRegionPack`](#wpregionpack)  */
-export const getWpRegionPack: Server.GetRequest<null,boolean>= getWpRegionPack_internal;
-
-const setWpRegionPack_internal: Server.SetRequest<boolean,null> = {
-  kind: Server.RqKind.SET,
-  name: 'kernel.parameters.setWpRegionPack',
-  input: Json.jBoolean,
-  output: Json.jNull,
-  fallback: null,
-  signals: [],
-};
-/** Setter for state [`wpRegionPack`](#wpregionpack)  */
-export const setWpRegionPack: Server.SetRequest<boolean,null>= setWpRegionPack_internal;
-
-const wpRegionPack_internal: State.State<boolean> = {
-  name: 'kernel.parameters.wpRegionPack',
-  signal: signalWpRegionPack,
-  getter: getWpRegionPack,
-  setter: setWpRegionPack,
-};
-/** State of parameter -wp-region-pack */
-export const wpRegionPack: State.State<boolean> = wpRegionPack_internal;
-
-/** Signal for state [`wpRegionRw`](#wpregionrw)  */
-export const signalWpRegionRw: Server.Signal = {
-  name: 'kernel.parameters.signalWpRegionRw',
-};
-
-const getWpRegionRw_internal: Server.GetRequest<null,boolean> = {
-  kind: Server.RqKind.GET,
-  name: 'kernel.parameters.getWpRegionRw',
-  input: Json.jNull,
-  output: Json.jBoolean,
-  fallback: false,
-  signals: [],
-};
-/** Getter for state [`wpRegionRw`](#wpregionrw)  */
-export const getWpRegionRw: Server.GetRequest<null,boolean>= getWpRegionRw_internal;
-
-const setWpRegionRw_internal: Server.SetRequest<boolean,null> = {
-  kind: Server.RqKind.SET,
-  name: 'kernel.parameters.setWpRegionRw',
-  input: Json.jBoolean,
-  output: Json.jNull,
-  fallback: null,
-  signals: [],
-};
-/** Setter for state [`wpRegionRw`](#wpregionrw)  */
-export const setWpRegionRw: Server.SetRequest<boolean,null>= setWpRegionRw_internal;
-
-const wpRegionRw_internal: State.State<boolean> = {
-  name: 'kernel.parameters.wpRegionRw',
-  signal: signalWpRegionRw,
-  getter: getWpRegionRw,
-  setter: setWpRegionRw,
-};
-/** State of parameter -wp-region-rw */
-export const wpRegionRw: State.State<boolean> = wpRegionRw_internal;
-
-/** Signal for state [`wpRegionInline`](#wpregioninline)  */
-export const signalWpRegionInline: Server.Signal = {
-  name: 'kernel.parameters.signalWpRegionInline',
-};
-
-const getWpRegionInline_internal: Server.GetRequest<null,boolean> = {
-  kind: Server.RqKind.GET,
-  name: 'kernel.parameters.getWpRegionInline',
-  input: Json.jNull,
-  output: Json.jBoolean,
-  fallback: false,
-  signals: [],
-};
-/** Getter for state [`wpRegionInline`](#wpregioninline)  */
-export const getWpRegionInline: Server.GetRequest<null,boolean>= getWpRegionInline_internal;
-
-const setWpRegionInline_internal: Server.SetRequest<boolean,null> = {
-  kind: Server.RqKind.SET,
-  name: 'kernel.parameters.setWpRegionInline',
-  input: Json.jBoolean,
-  output: Json.jNull,
-  fallback: null,
-  signals: [],
-};
-/** Setter for state [`wpRegionInline`](#wpregioninline)  */
-export const setWpRegionInline: Server.SetRequest<boolean,null>= setWpRegionInline_internal;
-
-const wpRegionInline_internal: State.State<boolean> = {
-  name: 'kernel.parameters.wpRegionInline',
-  signal: signalWpRegionInline,
-  getter: getWpRegionInline,
-  setter: setWpRegionInline,
-};
-/** State of parameter -wp-region-inline */
-export const wpRegionInline: State.State<boolean> = wpRegionInline_internal;
-
-/** Signal for state [`wpRegionCluster`](#wpregioncluster)  */
-export const signalWpRegionCluster: Server.Signal = {
-  name: 'kernel.parameters.signalWpRegionCluster',
-};
-
-const getWpRegionCluster_internal: Server.GetRequest<null,boolean> = {
-  kind: Server.RqKind.GET,
-  name: 'kernel.parameters.getWpRegionCluster',
-  input: Json.jNull,
-  output: Json.jBoolean,
-  fallback: false,
-  signals: [],
-};
-/** Getter for state [`wpRegionCluster`](#wpregioncluster)  */
-export const getWpRegionCluster: Server.GetRequest<null,boolean>= getWpRegionCluster_internal;
-
-const setWpRegionCluster_internal: Server.SetRequest<boolean,null> = {
-  kind: Server.RqKind.SET,
-  name: 'kernel.parameters.setWpRegionCluster',
-  input: Json.jBoolean,
-  output: Json.jNull,
-  fallback: null,
-  signals: [],
-};
-/** Setter for state [`wpRegionCluster`](#wpregioncluster)  */
-export const setWpRegionCluster: Server.SetRequest<boolean,null>= setWpRegionCluster_internal;
-
-const wpRegionCluster_internal: State.State<boolean> = {
-  name: 'kernel.parameters.wpRegionCluster',
-  signal: signalWpRegionCluster,
-  getter: getWpRegionCluster,
-  setter: setWpRegionCluster,
-};
-/** State of parameter -wp-region-cluster */
-export const wpRegionCluster: State.State<boolean> = wpRegionCluster_internal;
-
-/** Signal for state [`wpRegionFixpoint`](#wpregionfixpoint)  */
-export const signalWpRegionFixpoint: Server.Signal = {
-  name: 'kernel.parameters.signalWpRegionFixpoint',
-};
-
-const getWpRegionFixpoint_internal: Server.GetRequest<null,boolean> = {
-  kind: Server.RqKind.GET,
-  name: 'kernel.parameters.getWpRegionFixpoint',
-  input: Json.jNull,
-  output: Json.jBoolean,
-  fallback: false,
-  signals: [],
-};
-/** Getter for state [`wpRegionFixpoint`](#wpregionfixpoint)  */
-export const getWpRegionFixpoint: Server.GetRequest<null,boolean>= getWpRegionFixpoint_internal;
-
-const setWpRegionFixpoint_internal: Server.SetRequest<boolean,null> = {
-  kind: Server.RqKind.SET,
-  name: 'kernel.parameters.setWpRegionFixpoint',
-  input: Json.jBoolean,
-  output: Json.jNull,
-  fallback: null,
-  signals: [],
-};
-/** Setter for state [`wpRegionFixpoint`](#wpregionfixpoint)  */
-export const setWpRegionFixpoint: Server.SetRequest<boolean,null>= setWpRegionFixpoint_internal;
-
-const wpRegionFixpoint_internal: State.State<boolean> = {
-  name: 'kernel.parameters.wpRegionFixpoint',
-  signal: signalWpRegionFixpoint,
-  getter: getWpRegionFixpoint,
-  setter: setWpRegionFixpoint,
-};
-/** State of parameter -wp-region-fixpoint */
-export const wpRegionFixpoint: State.State<boolean> = wpRegionFixpoint_internal;
-
-/** Signal for state [`wpRegion`](#wpregion)  */
-export const signalWpRegion: Server.Signal = {
-  name: 'kernel.parameters.signalWpRegion',
-};
-
-const getWpRegion_internal: Server.GetRequest<null,boolean> = {
-  kind: Server.RqKind.GET,
-  name: 'kernel.parameters.getWpRegion',
-  input: Json.jNull,
-  output: Json.jBoolean,
-  fallback: false,
-  signals: [],
-};
-/** Getter for state [`wpRegion`](#wpregion)  */
-export const getWpRegion: Server.GetRequest<null,boolean>= getWpRegion_internal;
-
-const setWpRegion_internal: Server.SetRequest<boolean,null> = {
-  kind: Server.RqKind.SET,
-  name: 'kernel.parameters.setWpRegion',
-  input: Json.jBoolean,
-  output: Json.jNull,
-  fallback: null,
-  signals: [],
-};
-/** Setter for state [`wpRegion`](#wpregion)  */
-export const setWpRegion: Server.SetRequest<boolean,null>= setWpRegion_internal;
-
-const wpRegion_internal: State.State<boolean> = {
-  name: 'kernel.parameters.wpRegion',
-  signal: signalWpRegion,
-  getter: getWpRegion,
-  setter: setWpRegion,
-};
-/** State of parameter -wp-region */
-export const wpRegion: State.State<boolean> = wpRegion_internal;
-
 /** Signal for state [`wpWhy3ExtraConfig`](#wpwhy3extraconfig)  */
 export const signalWpWhy3ExtraConfig: Server.Signal = {
   name: 'kernel.parameters.signalWpWhy3ExtraConfig',
diff --git a/src/plugins/wp/Changelog b/src/plugins/wp/Changelog
index 303cbaecda2f4dd3c6fdcb11de0957c2eab4c1c8..322dcfd08e9b6ae33b81668cce69d067f8ff5689 100644
--- a/src/plugins/wp/Changelog
+++ b/src/plugins/wp/Changelog
@@ -24,7 +24,8 @@
 Plugin WP <next-release>
 ###############################################################################
 
-* WP          [2024-07-02] Fixed parsing of decimal literals
+-! WP         [2024-08-23] Remove wp_region
+-* WP         [2024-07-02] Fixed parsing of decimal literals
 
 ###############################################################################
 Plugin WP 29.0 (Copper)
diff --git a/src/plugins/wp/Factory.ml b/src/plugins/wp/Factory.ml
index 6c66a582bf1367a4012415a32b106f6c75267bb4..488ce673bc4bf6c3da09f5ec1d0545ed45297c8b 100644
--- a/src/plugins/wp/Factory.ml
+++ b/src/plugins/wp/Factory.ml
@@ -24,7 +24,7 @@
 (* --- Model Factory                                                      --- *)
 (* -------------------------------------------------------------------------- *)
 
-type mheap = Hoare | ZeroAlias | Region | Typed of MemTyped.pointer | Eva
+type mheap = Hoare | ZeroAlias | Typed of MemTyped.pointer | Eva
 type mvar = Raw | Var | Ref | Caveat
 
 type setup = {
@@ -64,7 +64,6 @@ let descr_mtyped d = function
   | MemTyped.Fits -> ()
 
 let descr_mheap d = function
-  | Region -> main d "region"
   | ZeroAlias -> main d "zeroalias"
   | Hoare -> main d "hoare"
   | Typed p -> main d "typed" ; descr_mtyped d p
@@ -218,7 +217,6 @@ struct
   module A = LogicAssigns.Make(M)(L)
 end
 
-module Comp_Region = MakeCompiler(Register(MemVar.Static)(MemRegion))
 module Comp_MemZeroAlias = MakeCompiler(MemZeroAlias)
 module Comp_Hoare_Raw = MakeCompiler(Model_Hoare_Raw)
 module Comp_Hoare_Ref = MakeCompiler(Model_Hoare_Ref)
@@ -232,7 +230,6 @@ module Comp_MemVal = MakeCompiler(MemVal)
 let compiler mheap mvar : (module Sigs.Compiler) =
   match mheap , mvar with
   | ZeroAlias , _     -> (module Comp_MemZeroAlias)
-  | Region , _        -> (module Comp_Region)
   | _    ,   Caveat   -> (module Comp_Caveat)
   | Hoare , (Raw|Var) -> (module Comp_Hoare_Raw)
   | Hoare ,   Ref     -> (module Comp_Hoare_Ref)
@@ -248,7 +245,6 @@ let compiler mheap mvar : (module Sigs.Compiler) =
 let configure_mheap = function
   | Hoare -> MemEmpty.configure ()
   | ZeroAlias -> MemZeroAlias.configure ()
-  | Region -> MemRegion.configure ()
   | Eva -> MemVal.configure ()
   | Typed p ->
     let rollback_memtyped = MemTyped.configure () in
@@ -329,7 +325,6 @@ let split ~warning (m:string) : string list =
 
 let update_config ~warning m s = function
   | "ZEROALIAS" -> { s with mheap = ZeroAlias }
-  | "REGION" -> { s with mheap = Region }
   | "HOARE" -> { s with mheap = Hoare }
   | "TYPED" -> { s with mheap = Typed MemTyped.Fits }
   | "CAST" -> { s with mheap = Typed MemTyped.Unsafe }
diff --git a/src/plugins/wp/Factory.mli b/src/plugins/wp/Factory.mli
index eaa02b38e678049a00ff835a010c649e115e3b88..dc9e29707e3241907c83617588ce6900b2d4fcec 100644
--- a/src/plugins/wp/Factory.mli
+++ b/src/plugins/wp/Factory.mli
@@ -24,7 +24,7 @@
 (* --- Model Factory                                                      --- *)
 (* -------------------------------------------------------------------------- *)
 
-type mheap = Hoare | ZeroAlias | Region | Typed of MemTyped.pointer | Eva
+type mheap = Hoare | ZeroAlias | Typed of MemTyped.pointer | Eva
 type mvar = Raw | Var | Ref | Caveat
 
 type setup = {
diff --git a/src/plugins/wp/Layout.ml b/src/plugins/wp/Layout.ml
index 39b59cd426aa54145b25cf23dbd39b524abe6358..6661a8ddf21a976e0af492d6de048f1fd766eb88 100644
--- a/src/plugins/wp/Layout.ml
+++ b/src/plugins/wp/Layout.ml
@@ -216,15 +216,6 @@ struct
 
 end
 
-module Mode(OPT : sig val get : unit -> bool end) =
-struct
-  let default = OPT.get
-  let merge a b = if default () then a && b else a || b
-end
-
-module RW = Mode(Wp.Region_rw)
-module Flat = Mode(Wp.Region_flat)
-module Pack = Mode(Wp.Region_pack)
 
 (* -------------------------------------------------------------------------- *)
 (* --- Data Layout                                                        --- *)
diff --git a/src/plugins/wp/Layout.mli b/src/plugins/wp/Layout.mli
index 5370aa2299e1ca43c79644f52c12c27e6815f7ac..1db68dd9fa0d75eb25f20a5d3b97a0f49f655595 100644
--- a/src/plugins/wp/Layout.mli
+++ b/src/plugins/wp/Layout.mli
@@ -261,25 +261,4 @@ end
 (** {2 Options} *)
 (* -------------------------------------------------------------------------- *)
 
-(** Read-Write access *)
-module RW :
-sig
-  val default : unit -> bool
-  val merge : bool -> bool -> bool
-end
-
-(** Flatten arrays *)
-module Flat :
-sig
-  val default : unit -> bool
-  val merge : bool -> bool -> bool
-end
-
-(** Pack fields *)
-module Pack :
-sig
-  val default : unit -> bool
-  val merge : bool -> bool -> bool
-end
-
 (* -------------------------------------------------------------------------- *)
diff --git a/src/plugins/wp/MemRegion.ml b/src/plugins/wp/MemRegion.ml
deleted file mode 100644
index 9ff7c488921994ae1b68c5b8908b621a091713ea..0000000000000000000000000000000000000000
--- a/src/plugins/wp/MemRegion.ml
+++ /dev/null
@@ -1,898 +0,0 @@
-(**************************************************************************)
-(*                                                                        *)
-(*  This file is part of WP plug-in of Frama-C.                           *)
-(*                                                                        *)
-(*  Copyright (C) 2007-2024                                               *)
-(*    CEA (Commissariat a l'energie atomique et aux energies              *)
-(*         alternatives)                                                  *)
-(*                                                                        *)
-(*  you can redistribute it and/or modify it under the terms of the GNU   *)
-(*  Lesser General Public License as published by the Free Software       *)
-(*  Foundation, version 2.1.                                              *)
-(*                                                                        *)
-(*  It is distributed in the hope that it will be useful,                 *)
-(*  but WITHOUT ANY WARRANTY; without even the implied warranty of        *)
-(*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *)
-(*  GNU Lesser General Public License for more details.                   *)
-(*                                                                        *)
-(*  See the GNU Lesser General Public License version 2.1                 *)
-(*  for more details (enclosed in the file licenses/LGPLv2.1).            *)
-(*                                                                        *)
-(**************************************************************************)
-
-(* TODO DEVEL MODE *)
-[@@@ warning "-32-37-60"]
-
-(* -------------------------------------------------------------------------- *)
-(* --- Region Memory Model                                                 --- *)
-(* -------------------------------------------------------------------------- *)
-
-open Cil_types
-open Sigs
-open Definitions
-
-module Wp = Wp_parameters
-module F = Lang.F
-module L = Qed.Logic
-
-(* -------------------------------------------------------------------------- *)
-(* --- Why-3 Region Theory                                                --- *)
-(* -------------------------------------------------------------------------- *)
-
-let library = "region"
-
-let cluster_region () =
-  Definitions.cluster ~id:"Region" ~title:"Region Index Constructors" ()
-
-(* Index *)
-let t_addr = MemAddr.t_addr
-let t_index = L.Data( Lang.datatype ~library "index" ,[] )
-let f_addrof = Lang.extern_f ~library ~result:t_addr "addrof"
-let f_consistent = Lang.extern_fp ~library "consistent"
-let f_consistent_range = Lang.extern_fp ~library "consistent_range"
-
-let a_addrof l = F.e_fun f_addrof [l]
-let p_consistent l = F.p_call f_consistent [l]
-let p_consistent_range l n = F.p_call f_consistent_range [l;n]
-let p_range k n ps = F.(p_leq e_zero k :: p_lt k n :: ps)
-
-(* Null *)
-let f_inull = Lang.extern_f ~library ~result:t_index "inull"
-let l_inull = F.e_fun f_inull []
-let p_inull l = F.p_equal MemAddr.null (a_addrof l)
-
-(* Constructors *)
-let region_ctor ~result =
-  Lang.extern_f ~library ~category:L.Constructor ~result "%s"
-
-let f_addr_var = region_ctor ~result:t_addr "addr_var"
-let f_addr_ref = region_ctor ~result:t_addr "addr_ref"
-let f_base_var = region_ctor ~result:L.Int "base_var"
-let f_base_ref = region_ctor ~result:L.Int "base_ref"
-let f_index_var = region_ctor ~result:t_index "index_var"
-let f_index_ref = region_ctor ~result:t_index "index_ref"
-let f_index_mem = region_ctor ~result:t_index "index_mem"
-
-let a_addr_var x = F.e_fun f_addr_var [x]
-let a_addr_ref p = F.e_fun f_addr_ref [p]
-let l_index_var x = F.e_fun f_index_var [F.e_int x]
-let l_index_mem l k n = F.e_fun f_index_ref [l;k;n]
-let l_index_ref l = F.e_fun f_index_ref [l]
-
-(* Shifts *)
-
-let f_shift_index = Lang.extern_f ~library ~result:t_index "shift_index"
-let l_shift_index l p = F.e_fun f_shift_index [l;p]
-
-(* Bits *)
-let t_bits = L.Int
-
-(* -------------------------------------------------------------------------- *)
-(* --- Index Simplifiers                                                  --- *)
-(* -------------------------------------------------------------------------- *)
-
-type index_builtin = {
-  index: (Lang.lfun -> F.term list -> F.term -> F.term) ;
-  addrof : (F.term list -> F.term) ;
-  consistent : (F.term list -> F.pred) ;
-}
-
-module IndexBuiltin = WpContext.Static
-    (struct
-      type key = Lang.lfun
-      type data = index_builtin
-      let name = "MemRegion.INDEXER"
-      include Lang.Fun
-    end)
-
-(* f enjoys shifting props:
-   -  f(l,p,...)+k == f(l,p+k,...)
-   - &f(l,p,...) = &l+p
-*)
-let is_shiftable f =
-  ( f == f_shift_index ) || ( f == f_index_mem)
-
-let phi_addrof index =
-  match F.repr index with
-  | L.Fun(f,[]) when f == f_inull -> MemAddr.null
-  | L.Fun(f,[x]) when f == f_index_var -> a_addr_var x
-  | L.Fun(f,[l]) when f == f_index_ref -> a_addr_ref (a_addrof l)
-  | L.Fun(f,l::p::_) when is_shiftable f -> MemAddr.shift (a_addrof l) p
-  | L.Fun(f,es) -> (IndexBuiltin.find f).addrof es
-  | _ -> raise Not_found
-
-let phi_shift_index l p =
-  if p == F.e_zero then l else
-    match F.repr l with
-    | L.Fun(f,l::q::w) when is_shiftable f -> F.e_fun f (l::(F.e_add p q)::w)
-    | L.Fun(f,es) -> (IndexBuiltin.find f).index f es p
-    | _ -> raise Not_found
-
-let phi_consistent index =
-  match F.repr index with
-  | L.Fun(f,[]) when f == f_inull -> F.e_false
-  | L.Fun(f,[x]) when f == f_index_var ->
-    F.e_neq x F.e_zero
-  | L.Fun(f,[l]) when f == f_index_ref ->
-    F.e_prop @@ p_consistent l
-  | L.Fun(f,[l;k;n]) when f == f_index_mem ->
-    F.e_prop @@ F.p_conj @@ p_range k n [p_consistent l]
-  | L.Fun(f,es) ->
-    F.e_prop @@ (IndexBuiltin.find f).consistent es
-  | _ -> raise Not_found
-
-let phi_consistent_range index sizeof =
-  match F.repr index with
-  | L.Fun(f,[l;k;n]) when f == f_index_mem ->
-    F.e_prop @@ F.p_conj @@ F.[
-        p_leq e_zero sizeof ;
-        p_leq e_zero k ;
-        p_leq (e_add k sizeof) n ;
-        p_consistent l ;
-      ]
-  | _ -> raise Not_found
-
-let () = Context.register
-    begin fun () ->
-      MemAddr.register f_addr_var
-        ~base:(F.e_fun f_base_var) ~offset:(fun _ -> F.e_zero) ;
-      MemAddr.register f_addr_ref
-        ~base:(F.e_fun f_base_ref) ;
-      F.set_builtin_1 f_addrof phi_addrof ;
-      F.set_builtin_1 f_consistent phi_consistent ;
-      F.set_builtin_2 f_shift_index phi_shift_index ;
-      F.set_builtin_2 f_consistent_range phi_consistent_range ;
-    end
-
-let cid = ref 0 (* TODO: projectified *)
-
-let constructor ~basename ~params ~index ~addrof ~consistent =
-  let id = incr cid ; !cid in
-  let lfun = Lang.generated_f ~result:t_index "%s_%d" basename id in
-  let ps = List.map F.e_var params in
-  let l = F.e_fun lfun ps in
-  let k = Lang.freshvar ~basename:"k" L.Int in
-  let ofs = F.e_var k in
-  (* Must compute properties before registering simplifiers *)
-  let p_addrof = F.p_equal (a_addrof l) (addrof ps) in
-  let p_consistent = F.p_equiv (p_consistent l) (consistent ps) in
-  let p_index = F.p_equal (l_shift_index l ofs) (index lfun ps ofs) in
-  IndexBuiltin.define lfun { index ; addrof ; consistent } ;
-  fun cluster ->
-    begin
-      Definitions.define_symbol {
-        d_cluster = cluster ;
-        d_lfun = lfun ; d_params = params ; d_types = 0 ;
-        d_definition = Logic t_index ;
-      } ;
-      Definitions.define_lemma {
-        l_cluster = cluster ;
-        l_kind = Admit ;
-        l_name = Printf.sprintf "addrof_%s_%d" basename id ;
-        l_forall = params ; l_triggers = [] ;
-        l_lemma = p_addrof ;
-      } ;
-      Definitions.define_lemma {
-        l_cluster = cluster ;
-        l_kind = Admit ;
-        l_name = Printf.sprintf "consistent_%s_%d" basename id ;
-        l_forall = params ; l_triggers = [] ;
-        l_lemma = p_consistent ;
-      } ;
-      if p_index != F.p_true then
-        Definitions.define_lemma {
-          l_cluster = cluster ;
-          l_kind = Admit ;
-          l_name = Printf.sprintf "index_%s_%d" basename id ;
-          l_forall = params @ [k] ; l_triggers = [] ;
-          l_lemma = p_index ;
-        } ;
-      lfun
-    end
-
-(* -------------------------------------------------------------------------- *)
-(* --- Field Index Constructors                                           --- *)
-(* -------------------------------------------------------------------------- *)
-
-module FIELD =
-struct
-
-  type t = int list (* Overlay offsets *)
-
-  let pretty fmt = function
-    | [] -> Format.fprintf fmt "{}"
-    | p::ps ->
-      begin
-        Format.fprintf fmt "@[<hov 2>{%d" p ;
-        List.iter (fun p -> Format.fprintf fmt ",@,%d" p) ps ;
-        Format.fprintf fmt "}@]" ;
-      end
-
-  let compare = Stdlib.compare
-
-  (* Extract constant offset *)
-  let offset k =
-    let rec walk s a =
-      match F.repr a with
-      | L.Add es -> List.fold_left walk s es
-      | L.Kint z ->
-        (try s + Integer.to_int_exn z
-         with Z.Overflow -> s)
-      | _ -> s
-    in walk 0 k
-
-  let builtin_index f es q = match es with
-    | [l;p] -> F.e_fun f [l;F.e_add q p]
-    | _ -> raise Not_found
-
-  let builtin_addrof = function
-    | [l;p] -> MemAddr.shift (a_addrof l) p
-    | _ -> raise Not_found
-
-  let builtin_consistent fds = function
-    | [l;p] -> F.p_and (p_consistent l)
-                 (F.p_any (fun fd -> F.p_equal (F.e_int fd) p) fds)
-    | _ -> raise Not_found
-
-end
-
-(* Model Independant Generators *)
-module FIELD_GEN = WpContext.StaticGenerator(FIELD)
-    (struct
-      type key = FIELD.t
-      type data = cluster -> Lang.lfun
-      let name = "MemRegion.FIELD_GEN"
-      let compile fds =
-        let l = Lang.freshvar ~basename:"l" t_index in
-        let p = Lang.freshvar ~basename:"p" L.Int in
-        constructor
-          ~basename:"field"
-          ~params:[l;p]
-          ~index:FIELD.builtin_index
-          ~addrof:FIELD.builtin_addrof
-          ~consistent:(FIELD.builtin_consistent fds)
-    end)
-
-(* Model Dependent Definitions *)
-module FIELD_MODEL = WpContext.Generator(FIELD)
-    (struct
-      type key = FIELD.t
-      type data = Lang.lfun
-      let name = "MemRegion.FIELD_MODEL"
-      let compile fds = FIELD_GEN.get fds @@ cluster_region ()
-    end)
-
-let l_field ovl l k =
-  let fds = List.map (fun rg -> rg.Layout.ofs) ovl in
-  F.e_fun (FIELD_MODEL.get fds) [l;k]
-
-(* -------------------------------------------------------------------------- *)
-(* --- Array Index Constructors                                           --- *)
-(* -------------------------------------------------------------------------- *)
-
-module ARRAY =
-struct
-
-  type t = int * int list
-  let compare = Stdlib.compare
-  let pretty fmt (s,ds) = Format.fprintf fmt "%d%a" s Layout.Matrix.pretty ds
-
-  (* Coefficient from Matrix dimensions: c_i = \Pi_{i<j} d_j *)
-  let coefs s ds =
-    let rec walk cs s = function
-      | d::ds -> walk (s::cs) (d*s) ds
-      | [] -> cs
-    in walk [] s ds
-
-  (* All zeroes *)
-  let zeroes = List.map (fun _ -> F.e_zero)
-
-  (* Address shift with coefficient c_i for each index k_i *)
-  let rec shift a cs ks =
-    match cs , ks with
-    | c::cs , k::ks -> shift (MemAddr.shift a (F.e_fact c k)) cs ks
-    | _ -> a
-
-  (* Address of an array index *)
-  let builtin_addrof cs = function
-    | l::ks -> shift (a_addrof l) cs ks
-    | _ -> raise Not_found
-
-  (* Add conditions (0 <= ki < ni) to [ps].
-     WARNING: ns = rev ds *)
-  let rec add_range_dims ps ks ns =
-    match ks , ns with
-    | k::ks , n::ns ->
-      add_range_dims F.(p_range k (e_int n) ps) ks ns
-    | k::ks , [] ->
-      add_range_dims F.(p_equal e_zero k :: ps) ks []
-    | [] , _ -> ps
-
-  (* Consistent index.
-     WARNING: ns = rev ds *)
-  let builtin_consistent ns = function
-    | l::ks -> F.p_conj (add_range_dims [p_consistent l] ks ns)
-    | _ -> raise Not_found
-
-  (* Extract linear forms *)
-  let rec get_linear poly a =
-    match F.repr a with
-    | L.Add es -> List.fold_left get_linear poly es
-    | L.Kint z ->
-      (try (Integer.to_int_exn z,F.e_one)::poly
-       with Z.Overflow -> (1,a)::poly)
-    | L.Times(c,e) ->
-      (try (Integer.to_int_exn c,e)::poly
-       with Z.Overflow -> (1,a)::poly)
-    | _ -> (1,a)::poly
-
-  (* Some of linear form *)
-  let rec add_linear s = function
-    | (k,e)::poly -> add_linear (F.e_add s (F.e_fact k e)) poly
-    | [] -> s
-
-  (* Euclidian division *)
-  (* euclid q r ci p = q',r' <-> p + ci.q + r = ci.q' + r' *)
-  let rec euclid q r ci = function
-    | [] -> q,r
-    | (c,k)::poly ->
-      let q0 = c / ci in
-      let r0 = c mod ci in
-      euclid (F.e_add q (F.e_fact q0 k)) ((r0,k)::r) ci poly
-
-  (* Linear offset decomposed on each coefficient *)
-  let rec add_linear_index cs ks ks' p =
-    match cs , ks with
-    | c :: cs , k :: ks ->
-      let k' , r = euclid k [] c p in
-      add_linear_index cs ks (k'::ks') r
-    | _ -> List.rev_append ks' ks , p
-
-  (* Linear offset and remainder delta *)
-  let offset cs ks p =
-    let ks',r = add_linear_index cs ks [] (get_linear [] p) in
-    ks' , add_linear F.e_zero r
-
-  (* Builtin simplifier *)
-  let builtin_index cs f es p = match es with
-    | l::ks ->
-      let ks' , r = offset cs ks p in
-      if Qed.Hcons.equal_list F.equal ks ks' then
-        raise Not_found
-      else
-        let l' = F.e_fun f (l :: ks) in
-        l_shift_index l' r
-    | _ -> raise Not_found
-
-end
-
-module ARRAY_GEN = WpContext.StaticGenerator(ARRAY)
-    (struct
-      type key = ARRAY.t
-      type data = (cluster -> Lang.lfun)
-      let name = "MemRegion.ARRAY_GEN"
-      let compile (s,ds) =
-        let l = Lang.freshvar ~basename:"l" t_index in
-        let ks = List.map (fun _ -> Lang.freshvar ~basename:"k" L.Int) ds in
-        let cs = ARRAY.coefs s ds in
-        let ns = List.rev ds in
-        constructor
-          ~basename:"array"
-          ~params:(l::ks)
-          ~index:(ARRAY.builtin_index cs)
-          ~addrof:(ARRAY.builtin_addrof cs)
-          ~consistent:(ARRAY.builtin_consistent ns)
-    end)
-
-module ARRAY_MODEL = WpContext.Generator(ARRAY)
-    (struct
-      type key = ARRAY.t
-      type data = Lang.lfun
-      let name = "MemRegion.ARRAY_MODEL"
-      let compile dim = ARRAY_GEN.get dim @@ cluster_region ()
-    end)
-
-let l_array s ds l ks = F.e_fun (ARRAY_MODEL.get (s,ds)) (l::ks)
-
-(* -------------------------------------------------------------------------- *)
-(* --- Model Context                                                      --- *)
-(* -------------------------------------------------------------------------- *)
-
-let datatype = "MemRegion"
-
-let configure () =
-  begin
-    let orig_pointer = Context.push Lang.pointer t_index in
-    let orig_null = Context.push Cvalues.null p_inull in
-    let rollback () =
-      Context.pop Lang.pointer orig_pointer ;
-      Context.pop Cvalues.null orig_null
-    in
-    rollback
-  end
-
-let configure_ia =
-  let no_binder = { bind = fun _ f v -> f v } in
-  fun _vertex -> no_binder
-
-let hypotheses p = p
-
-let error msg = Warning.error ~source:"Region Model" msg
-
-(* -------------------------------------------------------------------------- *)
-(* --- Region Maps                                                        --- *)
-(* -------------------------------------------------------------------------- *)
-
-let map () =
-  RegionAnalysis.get
-    begin match WpContext.get_scope () with
-      | WpContext.Global -> None
-      | WpContext.Kf kf -> Some kf
-    end
-
-(* -------------------------------------------------------------------------- *)
-(* --- Locations                                                          --- *)
-(* -------------------------------------------------------------------------- *)
-
-open Layout
-
-type region = Region.region
-type index = F.term
-
-let pp_index = F.pp_term
-let pp_region = Region.R.pretty
-let pp_value = Value.pretty pp_region
-let pp_args fmt = function
-  | [] -> ()
-  | k::ks ->
-    F.pp_term fmt k ;
-    List.iter (fun k -> Format.fprintf fmt "@,,%a" F.pp_term k) ks
-
-let pp_field fmt k =
-  if F.is_atomic k then
-    Format.fprintf fmt "@,+%a" F.pp_term k
-  else
-    Format.fprintf fmt "@,+(%a)" F.pp_term k
-
-let pp_delta fmt k =
-  if k != F.e_zero then pp_field fmt k
-
-type loc =
-  | GarbledMix (* any possible location *)
-  | Index of index (* unqualified address *)
-  | Lref of region * index * region
-  | Lmem of region * index * root * region value
-  | Lraw of region * index * root * region option
-  | Lfld of region * index * F.term * region overlay
-  | Larr of region * index * F.term * F.term list * int * int list
-  (* For Lxxx locations:
-     - index: start index inside the chunk
-     - term: additional shift index
-     - term list: array index from start *)
-
-(* -------------------------------------------------------------------------- *)
-(* --- Loc Basics                                                         --- *)
-(* -------------------------------------------------------------------------- *)
-
-let null = Index l_inull
-
-let vars = function
-  | GarbledMix -> F.Vars.empty
-  | Index l | Lref(_,l,_) | Lmem(_,l,_,_) | Lraw(_,l,_,_) -> F.vars l
-  | Lfld(_,l,k,_) ->
-    F.Vars.union (F.vars l) (F.vars k)
-  | Larr(_,l,k,ks,_,_) ->
-    Qed.Hcons.fold_list F.Vars.union F.vars F.Vars.empty (l::k::ks)
-
-let occurs x = function
-  | GarbledMix -> false
-  | Index l | Lref(_,l,_) | Lmem(_,l,_,_) | Lraw(_,l,_,_) -> F.occurs x l
-  | Lfld(_,l,k,_) ->
-    F.occurs x l || F.occurs x k
-  | Larr(_,l,k,ks,_,_) ->
-    List.exists (F.occurs x) (l::k::ks)
-
-let pretty fmt = function
-  | GarbledMix -> Format.pp_print_string fmt "garbled-mix"
-  | Index l ->
-    Format.fprintf fmt "@[<hov 2>Index(%a)@]" pp_index l
-  | Lref(r,l,r') ->
-    Format.fprintf fmt "@[<hov 2>Ref@,{%a->%a}@,(%a)@]"
-      pp_region r pp_region r' pp_index l
-  | Lmem(r,l,_,v) ->
-    Format.fprintf fmt "@[<hov 2>Mem@,{%a:@,%a}@,(%a)@]"
-      pp_region r pp_value v pp_index l
-  | Lraw(r,l,_,None) ->
-    Format.fprintf fmt "@[<hov 2>Raw@,{%a}@,(%a)"
-      pp_region r pp_index l
-  | Lraw(r,l,_,Some r') ->
-    Format.fprintf fmt "@[<hov 2>Raw@,{%a->%a}@,(%a)"
-      pp_region r pp_region r' pp_index l
-  | Lfld(r,l,k,_) ->
-    Format.fprintf fmt "@[<hov 2>Field@,{%a}@,(%a%a)@]"
-      pp_region r pp_index l pp_field k
-  | Larr(r,l,k,ks,_,_) ->
-    Format.fprintf fmt "@[<hov 2>Index@,{%a}@,@[<hov 2>(%a[%a]%a)@]@]"
-      pp_region r pp_index l pp_args ks pp_delta k
-
-(* -------------------------------------------------------------------------- *)
-(* --- Loc Constructors                                                   --- *)
-(* -------------------------------------------------------------------------- *)
-
-let rec index map (r:region) (l:index)  (ofs:F.term) (len:int) =
-  index_chunk map r l ofs len (Region.chunk map r)
-
-and index_chunk map (r:region) l ofs len = function
-  | Mref r' -> Lref(r,l_shift_index l ofs,r')
-  | Mraw(m,p) -> Lraw(r,l_shift_index l ofs,m,p)
-  | Mmem(m,v) -> Lmem(r,l_shift_index l ofs,m,v)
-  | Mcomp(_,[{ofs=0;reg;dim}]) -> index_dim map reg l ofs len dim
-  | Mcomp(_,overlay) -> index_field map r l ofs len overlay
-
-and index_field map r l ofs len overlay =
-  try
-    let k = FIELD.offset ofs in
-    let rg = List.find (Layout.Range.included k len) overlay in
-    let fd = F.e_int k in
-    let l' = l_field overlay l fd in
-    index_dim map rg.reg l' (F.e_sub ofs fd) len rg.dim
-  with Not_found ->
-    Lfld(r,l,ofs,overlay)
-
-and index_dim map r l ofs len = function
-  | Raw s | Dim(s,[]) ->
-    index map r (l_index_mem l F.e_zero (F.e_int s)) ofs len
-  | Dim(s,ds) ->
-    index_array map r l (ARRAY.zeroes ds) ofs len s ds
-
-and index_array map r l ks ofs len s ds =
-  let cs = ARRAY.coefs s ds in
-  let ks,ofs = ARRAY.offset cs ks ofs in
-  if len <= s then
-    let l' = l_array s ds l ks in
-    index map r l' ofs len
-  else
-    Larr(r,l,ofs,ks,s,ds)
-
-and shift_index_loc map loc ofs len =
-  match loc with
-  | GarbledMix -> GarbledMix
-  | Index l -> Index (l_shift_index l ofs)
-  | Lref(r,l,r') -> Lref(r,l_shift_index l ofs,r')
-  | Lmem(r,l,m,v) -> Lmem(r,l_shift_index l ofs,m,v)
-  | Lraw(r,l,m,p) -> Lraw(r,l_shift_index l ofs,m,p)
-  | Lfld(r,l,k,overlay) -> index_field map r l (F.e_add k ofs) len overlay
-  | Larr(r,l,k,ks,s,ds) -> index_array map r l ks (F.e_add k ofs) len s ds
-
-let cvar x =
-  let map = map () in
-  let region = Region.of_cvar map x in
-  let id = if Cil.isConstType x.vtype then - x.vid else x.vid in
-  index map region (l_index_var id) F.e_zero (Cil.bitsSizeOf x.vtype)
-
-let field loc fd =
-  let map = map () in
-  let ofs,len = Region.field_offset map fd in
-  shift_index_loc map loc (F.e_int ofs) len
-
-let shift loc obj n =
-  let map = map () in
-  let s = Ctypes.bits_sizeof_object obj in
-  shift_index_loc map loc (F.e_fact s n) s
-
-let pointer_loc l = Index l
-let pointer_val = function
-  | GarbledMix -> error "Can not obtain address of Garbled-Mix location"
-  | Index l | Lref(_,l,_) | Lmem(_,l,_,_) | Lraw(_,l,_,_) -> l
-  | Lfld(_,l,k,overlay) -> l_field overlay l k
-  | Larr(_,l,k,ks,s,ds) -> l_shift_index (l_array s ds l ks) k
-
-let loc_of_index re ty l =
-  index (map()) re l F.e_zero (Cil.bitsSizeOf ty)
-
-(* -------------------------------------------------------------------------- *)
-(* --- Chunks                                                             --- *)
-(* -------------------------------------------------------------------------- *)
-
-type chunk =
-  | Mu_alloc
-  | Mu_raw of region * root
-  | Mu_mem of region * root * region value
-
-module Chunk =
-struct
-
-  type t = chunk
-  let self = "region"
-
-  let id = function
-    | Mu_raw(r,_) | Mu_mem(r,_,_) -> Region.id r
-    | Mu_alloc -> Region.noid
-
-  let hash m = id m
-  let compare m m' =
-    if m==m then 0 else Stdlib.compare (id m) (id m')
-  let equal m m' = m==m' || (id m = id m')
-
-  let tau_of_value = function
-    | Int _ -> L.Int
-    | Float _ -> L.Real
-    | Pointer _ -> t_index
-
-  let tau_of_chunk = function
-    | Mu_alloc -> MemMemory.t_malloc
-    | Mu_raw _ -> t_bits
-    | Mu_mem(_,root,v) ->
-      let value = tau_of_value v in
-      if Root.indexed root then L.Array(t_addr,value) else value
-
-  let basename_of_chunk = function
-    | Mu_raw _ -> "B"
-    | Mu_mem(_,root,Int _) -> if Root.indexed root then "M" else "V"
-    | Mu_mem(_,root,Float _) -> if Root.indexed root then "Mf" else "F"
-    | Mu_mem(_,root,Pointer _) -> if Root.indexed root then "Mp" else "M"
-    | Mu_alloc -> "A"
-
-  let is_framed = function
-    | Mu_raw(_,root) | Mu_mem(_,root,_) -> Root.framed root
-    | Mu_alloc -> false
-
-  let pretty fmt mu = Format.pp_print_string fmt (basename_of_chunk mu)
-
-end
-
-module Heap =
-struct
-  include Qed.Collection.Make(Chunk)
-  let empty = Set.empty
-  let of_raw r rt = Set.singleton (Mu_raw(r,rt))
-  let of_mem r rt v = Set.singleton (Mu_mem(r,rt,v))
-
-  let rec of_region map r =
-    match Region.chunk map r with
-    | Mref _ -> Set.empty
-    | Mraw(rt,_) -> of_raw r rt
-    | Mmem(rt,v) -> of_mem r rt v
-    | Mcomp(_,overlay) -> of_overlay map overlay
-
-  and of_range map { reg } = of_region map reg
-
-  and of_overlay map ovl =
-    Qed.Hcons.fold_list Set.union (of_range map) empty ovl
-
-end
-module Sigma = Sigma.Make(Chunk)(Heap)
-
-type sigma = Sigma.t
-type domain = Sigma.domain
-
-let value_footprint _obj = function
-  | GarbledMix | Index _ -> error "Can not compute Garbled-mix domain"
-  | Lref _ -> Heap.empty
-  | Lraw(r,_,rt,_) -> Heap.of_raw r rt
-  | Lmem(r,_,rt,v) -> Heap.of_mem r rt v
-  | Lfld(_,_,_,ovl) -> Heap.of_overlay (map()) ovl
-  | Larr(r,_,_,_,_,_) -> Heap.of_region (map()) r
-
-let init_footprint _ _ = Heap.empty
-
-let is_well_formed _s = Lang.F.p_true
-
-let region_of_loc = function
-  | (GarbledMix | Index _) as l -> error "Can not find region of %a" pretty l
-  | Lref(r,_,_) | Lraw(r,_,_,_) | Lmem(r,_,_,_)
-  | Lfld(r,_,_,_) | Larr(r,_,_,_,_,_) -> r
-
-(* -------------------------------------------------------------------------- *)
-(* ---  Loader                                                            --- *)
-(* -------------------------------------------------------------------------- *)
-
-module MODEL =
-struct
-
-  module Chunk = Chunk
-  module Sigma = Sigma
-  let name = "MemRegion.LOADER"
-  type nonrec loc = loc
-  let field = field
-  let shift = shift
-  let sizeof obj = Lang.F.e_int (Ctypes.bits_sizeof_object obj)
-  let value_footprint = value_footprint
-  let init_footprint = init_footprint
-  let frames _ _ _ = []
-
-  let to_addr l = a_addrof (pointer_val l)
-  let to_region_pointer l = Region.id (region_of_loc l) , pointer_val l
-  let of_region_pointer r obj l =
-    let map = map () in
-    index map (Region.region map r) l F.e_zero (Ctypes.bits_sizeof_object obj)
-
-  let load_mem sigma r rt v l =
-    let m = Sigma.value sigma (Mu_mem(r,rt,v)) in
-    if Root.indexed rt then F.e_get m (a_addrof l) else m
-
-  let load_int sigma i = function
-    | Lmem(r,l,rt,(Int i0 as v)) when i = i0 -> load_mem sigma r rt v l
-    | l -> error "Can not load %a value from %a" Ctypes.pp_int i pretty l
-
-  let load_float sigma f = function
-    | Lmem(r,l,rt,(Float f0 as v)) when f = f0 -> load_mem sigma r rt v l
-    | l -> error "Can not load %a value from %a" Ctypes.pp_float f pretty l
-
-  let load_pointer sigma ty = function
-    | Lmem(r,l,rt,(Pointer r' as v)) ->
-      loc_of_index r' ty (load_mem sigma r rt v l)
-    | Lref(_,l,r') ->
-      loc_of_index r' ty (l_index_ref l)
-    | l -> error "Can not load pointer value from %a" pretty l
-
-  let havoc obj loc ~length (chunk:chunk) ~fresh ~current =
-    match chunk with
-    | Mu_alloc -> fresh
-    | Mu_raw _ -> error "Can not havoc raw memories"
-    | Mu_mem(_,root,_) ->
-      if Layout.Root.indexed root then
-        let addr = to_addr loc in
-        let offset = F.e_fact (Ctypes.bits_sizeof_object obj) length in
-        F.e_fun MemMemory.f_havoc [fresh;current;addr;offset]
-      else
-        fresh
-
-  let eqmem obj loc chunk m1 m2 =
-    match chunk with
-    | Mu_alloc -> error "Can not compare allocation tables"
-    | Mu_raw _ -> error "Can not compare raw memories"
-    | Mu_mem(_,root,_) ->
-      if Layout.Root.indexed root then
-        let addr = to_addr loc in
-        let offset = F.e_int (Ctypes.bits_sizeof_object obj) in
-        F.p_call MemMemory.p_eqmem [m1;m2;addr;offset]
-      else F.p_equal m1 m2
-
-  let eqmem_forall obj loc chunk m1 m2 =
-    match chunk with
-    | Mu_alloc -> error "Can not compare allocation tables"
-    | Mu_raw _ -> error "Can not compare raw memories"
-    | Mu_mem(_,root,_) ->
-      if Layout.Root.indexed root then
-        let xp = Lang.freshvar ~basename:"p" t_addr in
-        let p = F.e_var xp in
-        let a = to_addr loc in
-        let n = F.e_int (Ctypes.bits_sizeof_object obj) in
-        let separated = F.p_call MemAddr.p_separated [ p ; F.e_one ; a ; n ] in
-        let equal = F.p_equal (F.e_get m1 p) (F.e_get m2 p) in
-        [xp],separated,equal
-      else [],F.p_true,F.p_equal m1 m2
-
-  let last _ = error "Can not compute last valid index"
-
-  let store_mem sigma r rt v l value =
-    let c = Mu_mem(r,rt,v) in
-    if Root.indexed rt then
-      c , F.e_set (Sigma.value sigma c) (a_addrof l) value
-    else c , value
-
-  let store_int sigma i loc value =
-    match loc with
-    | Lmem(r,l,rt,(Int i0 as v)) when i = i0 -> store_mem sigma r rt v l value
-    | _ -> error "Can not store %a value into %a" Ctypes.pp_int i pretty loc
-
-  let store_float sigma f loc value =
-    match loc with
-    | Lmem(r,l,rt,(Float f0 as v)) when f = f0 -> store_mem sigma r rt v l value
-    | _ -> error "Can not store %a value into %a" Ctypes.pp_float f pretty loc
-
-  let store_pointer sigma _ty loc value =
-    match loc with
-    | Lmem(r,l,rt,(Pointer _ as v)) -> store_mem sigma r rt v l value
-    | _ -> error "Can not store pointer values into %a" pretty loc
-
-  let set_init_atom _ _ _ = assert false
-  let set_init _obj _loc ~length _chunk ~current =
-    let _ = length in
-    let _ = current in
-    assert false
-  let is_init_atom _ _ = assert false
-  let is_init_range _ _ _ _ = assert false
-  let monotonic_init _ _ = assert false
-
-end
-
-module LOADER = MemLoader.Make(MODEL)
-
-let load = LOADER.load
-let load_init = LOADER.load_init
-let load_value = LOADER.load_value
-
-let stored = LOADER.stored
-let stored_init = LOADER.stored_init
-let copied = LOADER.copied
-let copied_init = LOADER.copied_init
-let assigned = LOADER.assigned
-let initialized = LOADER.initialized
-
-let domain = LOADER.domain
-
-(* -------------------------------------------------------------------------- *)
-(* ---  Loc Segments                                                      --- *)
-(* -------------------------------------------------------------------------- *)
-
-type segment = loc rloc
-
-let region_of_sloc = function Rloc(_,l) | Rrange(l,_,_,_) -> region_of_loc l
-
-let disjoint_region s1 s2 =
-  let map = map () in
-  let c1 = Region.chunks map (region_of_sloc s1) in
-  let c2 = Region.chunks map (region_of_sloc s2) in
-  not (Qed.Intset.intersect c1 c2)
-
-
-let addrof = MODEL.to_addr
-let sizeof = MODEL.sizeof
-
-let included s1 s2 =
-  if disjoint_region s1 s2 then F.p_false else
-    MemAddr.included ~shift ~addrof ~sizeof s1 s2
-
-let separated s1 s2 =
-  if disjoint_region s1 s2 then F.p_true else
-    MemAddr.separated ~shift ~addrof ~sizeof s1 s2
-
-(* -------------------------------------------------------------------------- *)
-(* ---  TODO TODO TODO TODO TODO TODO TODO TODO TODO TODO TODO TODO TODO  --- *)
-(* -------------------------------------------------------------------------- *)
-
-type state = unit
-
-let state _ = ()
-let iter _ _ = ()
-let lookup _ _ = Mterm
-let updates _ _ = Bag.empty
-let apply _ _ = ()
-
-let literal ~eid _ = ignore eid ; GarbledMix
-
-let base_addr _l = GarbledMix
-let base_offset l = MemAddr.offset (addrof l)
-let block_length _s _obj _l = F.e_zero
-
-let cast _ _l = GarbledMix
-let loc_of_int _ _ = GarbledMix
-let int_of_loc _ _ = F.e_zero
-
-let not_yet_pointer () = error "Pointer comparison not yet implemented"
-
-let is_null _ = not_yet_pointer ()
-let loc_eq _ _ = not_yet_pointer ()
-let loc_lt _ _ = not_yet_pointer ()
-let loc_leq _ _ = not_yet_pointer ()
-let loc_neq _ _ = not_yet_pointer ()
-let loc_diff _ _ _ = not_yet_pointer ()
-
-let frame _sigma = []
-let alloc sigma _xs = sigma
-let scope _seq _s _xs = []
-let valid _sigma _acs _l = error "Validity not yet implemented"
-let invalid _sigma _l = error "Validity not yet implemented"
-let global _sigma _p = F.p_true
diff --git a/src/plugins/wp/MemRegion.mli b/src/plugins/wp/MemRegion.mli
deleted file mode 100644
index ab78db145f0b52ef58a3e5ee367c4e94d1750d92..0000000000000000000000000000000000000000
--- a/src/plugins/wp/MemRegion.mli
+++ /dev/null
@@ -1,27 +0,0 @@
-(**************************************************************************)
-(*                                                                        *)
-(*  This file is part of WP plug-in of Frama-C.                           *)
-(*                                                                        *)
-(*  Copyright (C) 2007-2024                                               *)
-(*    CEA (Commissariat a l'energie atomique et aux energies              *)
-(*         alternatives)                                                  *)
-(*                                                                        *)
-(*  you can redistribute it and/or modify it under the terms of the GNU   *)
-(*  Lesser General Public License as published by the Free Software       *)
-(*  Foundation, version 2.1.                                              *)
-(*                                                                        *)
-(*  It is distributed in the hope that it will be useful,                 *)
-(*  but WITHOUT ANY WARRANTY; without even the implied warranty of        *)
-(*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *)
-(*  GNU Lesser General Public License for more details.                   *)
-(*                                                                        *)
-(*  See the GNU Lesser General Public License version 2.1                 *)
-(*  for more details (enclosed in the file licenses/LGPLv2.1).            *)
-(*                                                                        *)
-(**************************************************************************)
-
-(* -------------------------------------------------------------------------- *)
-(* --- Empty Memory Model                                                 --- *)
-(* -------------------------------------------------------------------------- *)
-
-include Sigs.Model
diff --git a/src/plugins/wp/Region.ml b/src/plugins/wp/Region.ml
deleted file mode 100644
index f2640d16056f7b3e17d3a2639a237d815424ebc9..0000000000000000000000000000000000000000
--- a/src/plugins/wp/Region.ml
+++ /dev/null
@@ -1,644 +0,0 @@
-(**************************************************************************)
-(*                                                                        *)
-(*  This file is part of WP plug-in of Frama-C.                           *)
-(*                                                                        *)
-(*  Copyright (C) 2007-2024                                               *)
-(*    CEA (Commissariat a l'energie atomique et aux energies              *)
-(*         alternatives)                                                  *)
-(*                                                                        *)
-(*  you can redistribute it and/or modify it under the terms of the GNU   *)
-(*  Lesser General Public License as published by the Free Software       *)
-(*  Foundation, version 2.1.                                              *)
-(*                                                                        *)
-(*  It is distributed in the hope that it will be useful,                 *)
-(*  but WITHOUT ANY WARRANTY; without even the implied warranty of        *)
-(*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *)
-(*  GNU Lesser General Public License for more details.                   *)
-(*                                                                        *)
-(*  See the GNU Lesser General Public License version 2.1                 *)
-(*  for more details (enclosed in the file licenses/LGPLv2.1).            *)
-(*                                                                        *)
-(**************************************************************************)
-
-open Cil_datatype
-open Layout
-
-module Wp = Wp_parameters
-
-(* -------------------------------------------------------------------------- *)
-(* --- Access Maps                                                        --- *)
-(* -------------------------------------------------------------------------- *)
-
-module Vmap = Varinfo.Map
-module Smap = Datatype.String.Map
-module Rmap = Qed.Intmap
-module Rset = Qed.Intset
-module Dmap = Qed.Listmap.Make(Offset)
-module Dset = Qed.Listset.Make(Deref)
-module Acs = Qed.Listset.Make(Lvalue)
-module Class = Qed.Listset.Make(Datatype.String)
-
-type region = {
-  id : int ;
-  mutable garbled : bool ;
-  rw : bool ;
-  pack : bool ;
-  flat : bool ;
-  mutable names : Class.t ;
-  mutable alias : alias ;
-  mutable delta : int Dmap.t ;
-  mutable deref : Dset.t ;
-  mutable read : Acs.t ;
-  mutable written : Acs.t ;
-  mutable shifted : Acs.t ;
-  mutable copiedTo : Rset.t ; (* copies to *)
-  mutable pointsTo : int option ;
-}
-
-type map = {
-  cache : Offset.cache ;
-  queue : int Queue.t ;
-  mutable rid : int ;
-  mutable vars : int Vmap.t ;
-  mutable return : int ; (* -1 when undefined *)
-  mutable strings : (int * string) Rmap.t ; (* eid -> rid *)
-  mutable index : int Smap.t ;
-  mutable region : region Rmap.t ;
-  mutable aliasing : int Rmap.t ;
-  mutable cluster : region cluster Rmap.t ;
-  mutable roots : root Rmap.t ;
-  mutable froms : region from list Rmap.t ;
-  mutable domain : Rset.t ; (* reachable regions via clusters *)
-  mutable chunk : region chunk Rmap.t ; (* memory chunks *)
-}
-
-let create () = {
-  rid = 0 ;
-  return = (-1) ;
-  cache = Offset.cache () ;
-  vars = Vmap.empty ;
-  strings = Rmap.empty ;
-  index = Smap.empty ;
-  region = Rmap.empty ;
-  aliasing = Rmap.empty ;
-  queue = Queue.create () ;
-  cluster = Rmap.empty ;
-  roots = Rmap.empty ;
-  froms = Rmap.empty ;
-  domain = Rset.empty ;
-  chunk = Rmap.empty ;
-}
-
-let noid = 0
-let is_empty map = (map.rid = 0)
-
-let fresh map =
-  let id = map.rid in
-  map.rid <- succ id ;
-  let region = {
-    id ;
-    garbled = false ;
-    rw = RW.default () ;
-    flat = Flat.default () ;
-    pack = Pack.default () ;
-    names = [] ;
-    alias = NotUsed ;
-    delta = Dmap.empty ;
-    deref = Dset.empty ;
-    read = Acs.empty ;
-    written = Acs.empty ;
-    shifted = Acs.empty ;
-    copiedTo = Rset.empty ;
-    pointsTo = None ;
-  } in
-  map.region <- Rmap.add id region map.region ;
-  region
-
-(* -------------------------------------------------------------------------- *)
-(* --- Datatype                                                           --- *)
-(* -------------------------------------------------------------------------- *)
-
-module R =
-struct
-  type t = region
-  let id a = a.id
-  let equal a b = (a.id = b.id)
-  let compare a b = Stdlib.compare a.id b.id
-  let pp_rid fmt id = Format.fprintf fmt "R%03d" id
-  let pretty fmt r = pp_rid fmt r.id
-end
-
-module Map = Qed.Idxmap.Make(R)
-module Set = Qed.Idxset.Make(R)
-
-(* -------------------------------------------------------------------------- *)
-(* --- Union Find                                                         --- *)
-(* -------------------------------------------------------------------------- *)
-
-let rec aliasing map i =
-  try
-    let j = aliasing map (Rmap.find i map.aliasing) in
-    if j <> i then map.aliasing <- Rmap.add i j map.aliasing ; j
-  with Not_found -> i
-
-let linkto map i k =
-  if i <> k then
-    begin
-      map.aliasing <- Rmap.add i k map.aliasing ;
-      Queue.add i map.queue ;
-    end
-
-let region map r =
-  try Rmap.find (aliasing map r) map.region
-  with Not_found -> failwith "Wp.Region: Undefined Region"
-
-let join_classes map i j =
-  let k = min i j in (linkto map i k ; linkto map j k ; k)
-
-let join_id map i j =
-  let i = aliasing map i in
-  let j = aliasing map j in
-  if i = j then i else join_classes map i j
-
-let join_region map ra rb =
-  let i = aliasing map ra.id in
-  let j = aliasing map rb.id in
-  let k = join_classes map i j in
-  if k = i then ra else
-  if k = j then rb else
-    (* defensive *) region map k
-
-(* -------------------------------------------------------------------------- *)
-(* --- Aliasing                                                           --- *)
-(* -------------------------------------------------------------------------- *)
-
-let alias map a b =
-  let k = join_id map a.id b.id in
-  let r = region map k in
-  r.alias <- Aliased ; r
-
-let do_alias map a b = ignore (alias map a b)
-
-let add_alias map ~into:a b =
-  let i = aliasing map a.id in
-  let j = aliasing map b.id in
-  let wa = (region map i).alias in
-  let wb = (region map j).alias in
-  let k = join_classes map i j in
-  (* Aliasing has changed *)
-  (region map k).alias <- Alias.alias wa (Alias.use wb)
-
-let get_merged map r =
-  let i = aliasing map r.id in
-  if i <> r.id then Some (region map i) else None
-
-let get_alias map r =
-  let i = aliasing map r.id in
-  if i <> r.id then region map i else r
-
-let eq_alias map a b = (aliasing map a.id = aliasing map b.id)
-
-(* -------------------------------------------------------------------------- *)
-(* --- General Iterator                                                   --- *)
-(* -------------------------------------------------------------------------- *)
-
-let once mark r =
-  if Rset.mem r.id !mark then false
-  else ( mark := Rset.add r.id !mark ; true )
-
-let iter map f =
-  let do_once marks f r = if once marks r then f r else () in
-  Rmap.iter (do_once (ref Rset.empty) f) map.region
-
-(* -------------------------------------------------------------------------- *)
-(* --- Region Accessor                                                    --- *)
-(* -------------------------------------------------------------------------- *)
-
-let id reg = reg.id
-let is_garbled reg = reg.garbled
-let has_pointed reg = reg.pointsTo <> None
-let has_deref reg = not (Dset.is_empty reg.deref)
-let has_layout reg = not (Dmap.is_empty reg.delta)
-let has_offset reg d = Dmap.mem d reg.delta
-let iter_offset map f reg =
-  Dmap.iter (fun ofs r -> f ofs (region map r)) reg.delta
-
-let has_copies reg = not (Rset.is_empty reg.copiedTo)
-let iter_copies map f reg =
-  Rset.iter (fun r -> f (region map r)) reg.copiedTo
-
-let add_offset map reg d =
-  try region map (Dmap.find d reg.delta)
-  with Not_found ->
-    let rd = fresh map in
-    reg.delta <- Dmap.add d rd.id reg.delta ; rd
-
-let add_pointed map reg =
-  match reg.pointsTo with
-  | Some k -> region map k
-  | None ->
-    let r = fresh map in
-    reg.pointsTo <- Some r.id ; r
-
-let get_addrof map reg =
-  let addr = fresh map in
-  addr.pointsTo <- Some reg.id ; addr
-
-let get_pointed map reg =
-  match reg.pointsTo with
-  | None -> None
-  | Some r -> Some (region map r)
-
-let get_offset map reg d =
-  try Some (region map (Dmap.find d reg.delta))
-  with Not_found -> None
-
-let get_copies map reg =
-  List.map (region map) (Rset.elements reg.copiedTo)
-
-(* -------------------------------------------------------------------------- *)
-(* --- Access                                                             --- *)
-(* -------------------------------------------------------------------------- *)
-
-let acs_read rg lvalue = rg.read <- Acs.add lvalue rg.read
-let acs_write rg lvalue = rg.written <- Acs.add lvalue rg.written
-let acs_shift rg lvalue = rg.shifted <- Acs.add lvalue rg.shifted
-let acs_deref rg deref = rg.deref <- Dset.add deref rg.deref
-let acs_copy ~src ~tgt =
-  if tgt.id <> src.id then src.copiedTo <- Rset.add tgt.id src.copiedTo
-
-let iter_read f rg = Acs.iter f rg.read
-let iter_write f rg = Acs.iter f rg.written
-let iter_shift f rg = Acs.iter f rg.shifted
-let iter_deref f rg = Dset.iter f rg.deref
-
-let is_read rg = not (Acs.is_empty rg.read)
-let is_written rg = not (Acs.is_empty rg.written)
-let is_shifted rg = not (Acs.is_empty rg.shifted)
-let is_aliased rg = Alias.is_aliased rg.alias
-
-(* -------------------------------------------------------------------------- *)
-(* --- Varinfo Index                                                      --- *)
-(* -------------------------------------------------------------------------- *)
-
-let rvar map x r =
-  let reg = region map r in
-  if reg.id <> r then map.vars <- Vmap.add x reg.id map.vars ; reg
-
-let of_null map = fresh map (* A fresh region each time: polymorphic *)
-
-let of_cvar map x =
-  try rvar map x (Vmap.find x map.vars)
-  with Not_found ->
-    let reg = fresh map in
-    map.vars <- Vmap.add x reg.id map.vars ; reg
-
-let of_return map =
-  if map.return < 0 then
-    let reg = fresh map in
-    map.return <- reg.id ; reg
-  else
-    region map map.return
-
-let has_return map = 0 <= map.return
-
-let iter_vars map f = Vmap.iter (fun x r -> f x (rvar map x r)) map.vars
-
-(* -------------------------------------------------------------------------- *)
-(* --- Field Info Index                                                   --- *)
-(* -------------------------------------------------------------------------- *)
-
-let field_offset map fd = Offset.field_offset map.cache fd
-
-(* -------------------------------------------------------------------------- *)
-(* --- String Literal Index                                               --- *)
-(* -------------------------------------------------------------------------- *)
-
-let of_cstring map ~eid ~cst =
-  try region map (fst @@ Rmap.find eid map.strings)
-  with Not_found ->
-    let reg = fresh map in
-    map.strings <- Rmap.add eid (reg.id,cst) map.strings ; reg
-
-let iter_strings map f =
-  Rmap.iter (fun (rid,cst) -> f (region map rid) cst) map.strings
-
-(* -------------------------------------------------------------------------- *)
-(* --- Region Index                                                       --- *)
-(* -------------------------------------------------------------------------- *)
-
-let rindex map a r =
-  let reg = region map r in
-  if reg.id <> r then map.index <- Smap.add a reg.id map.index ; reg
-
-let of_name map a =
-  try rindex map a (Smap.find a map.index)
-  with Not_found ->
-    let reg = fresh map in
-    reg.names <- [a] ;
-    map.index <- Smap.add a reg.id map.index ; reg
-
-let of_class map = function
-  | None -> fresh map
-  | Some a -> of_name map a
-
-let has_names reg = not (Class.is_empty reg.names)
-let iter_names map f = Smap.iter (fun a r -> f a (rindex map a r)) map.index
-
-(* -------------------------------------------------------------------------- *)
-(* --- Fusion                                                             --- *)
-(* -------------------------------------------------------------------------- *)
-
-let merge_pointed map u v =
-  match u,v with
-  | None , w | w , None -> w
-  | Some i , Some j -> Some (join_id map i j)
-
-let merge_delta map _d a b = join_id map a b
-
-let merge_region map ~id a b =
-  {
-    id ;
-    garbled = a.garbled || b.garbled ;
-    rw = RW.merge a.rw b.rw ;
-    flat = Flat.merge a.flat b.flat ;
-    pack = Pack.merge a.pack b.pack ;
-    alias = Alias.merge a.alias b.alias ;
-    names = Class.union a.names b.names ;
-    read = Acs.union a.read b.read ;
-    written = Acs.union a.written b.written ;
-    shifted = Acs.union a.shifted b.shifted ;
-    copiedTo = Rset.union a.copiedTo b.copiedTo ;
-    pointsTo = merge_pointed map a.pointsTo b.pointsTo ;
-    delta = Dmap.union (merge_delta map) a.delta b.delta ;
-    deref = Dset.union a.deref b.deref ;
-  }
-
-let fusion map =
-  while not (Queue.is_empty map.queue) do
-    let i = Queue.pop map.queue in
-    let j = aliasing map i in
-    if i <> j then
-      begin
-        if not (Wp.Region_fixpoint.get ()) then
-          Wp.debug "Region %a -> %a" R.pp_rid i R.pp_rid j ;
-        let a = try Rmap.find i map.region with Not_found -> assert false in
-        let b = try Rmap.find j map.region with Not_found -> assert false in
-        assert (i = a.id) ;
-        assert (j = b.id ) ;
-        let c = merge_region map ~id:j a b in
-        map.region <- Rmap.add j c (Rmap.remove i map.region) ;
-      end
-  done
-
-let fusionned map = not (Queue.is_empty map.queue)
-let iter_fusion map f = Queue.iter (fun i -> f i (region map i)) map.queue
-
-(* -------------------------------------------------------------------------- *)
-(* --- Garbling                                                           --- *)
-(* -------------------------------------------------------------------------- *)
-
-let rec garblify map reg =
-  if not reg.garbled then
-    begin
-      reg.garbled <- true ;
-      Dmap.iter
-        (fun _delta r ->
-           garblify map (region map r) ;
-           ignore (join_id map reg.id r) ;
-        ) reg.delta ;
-      reg.delta <- Dmap.empty ;
-    end
-
-(* -------------------------------------------------------------------------- *)
-(* --- Clustering                                                         --- *)
-(* -------------------------------------------------------------------------- *)
-
-let cluster map reg =
-  try Rmap.find reg.id map.cluster
-  with Not_found -> Layout.Empty
-
-module Cluster =
-struct
-  open Layout
-
-  let rec from_region map reg =
-    try Rmap.find reg.id map.cluster
-    with Not_found ->
-      if reg.garbled then Garbled else
-      if not (Wp.Region_cluster.get ()) then Empty else
-        begin
-          map.cluster <- Rmap.add reg.id Empty map.cluster ;
-          let mu ~raw ra rb =
-            if raw then
-              begin
-                garblify map ra ;
-                garblify map rb ;
-              end ;
-            join_region map ra rb
-          in
-          let cluster =
-            if has_layout reg then
-              Cluster.reshape ~eq:R.equal ~flat:reg.flat ~pack:reg.pack @@
-              from_layout map mu reg
-            else
-              from_deref map mu reg
-          in
-          if cluster = Garbled then garblify map reg ;
-          map.cluster <- Rmap.add reg.id cluster map.cluster ;
-          cluster
-        end
-
-  and from_deref map mu reg =
-    let pointed = lazy (add_pointed map reg) in
-    List.fold_left
-      (fun chunk deref ->
-         Cluster.merge R.pretty mu chunk (Cluster.deref ~pointed deref)
-      ) Empty reg.deref
-
-  and from_layout map mu reg =
-    Dmap.fold
-      (fun offset tgt acc ->
-         let layout = shift map offset (region map tgt) in
-         Cluster.merge R.pretty mu (Layout layout) acc
-      ) reg.delta Empty
-
-  and shift map offset target =
-    let inline = Wp.Region_inline.get () || not (is_aliased target) in
-    let cluster = from_region map target in
-    Cluster.shift map.cache R.pretty offset target ~inline cluster
-
-  let compute map reg =
-    begin
-      if has_layout reg && has_deref reg then
-        begin
-          Dset.iter
-            (fun deref ->
-               let target = add_offset map reg (Index(snd deref,1)) in
-               target.read <- Acs.union reg.read target.read ;
-               target.written <- Acs.union reg.written target.written ;
-               acs_deref target deref
-            ) reg.deref ;
-          reg.deref <- Dset.empty ;
-          reg.read <- Acs.empty ;
-          reg.written <- Acs.empty ;
-          Queue.add reg.id map.queue ;
-        end ;
-      ignore (from_region map reg) ;
-    end
-
-end
-
-(* -------------------------------------------------------------------------- *)
-(* --- Froms Analysis                                                     --- *)
-(* -------------------------------------------------------------------------- *)
-
-let get_froms map reg =
-  try Rmap.find reg.id map.froms
-  with Not_found -> []
-
-let add_from map ~from ~target =
-  let rs = get_froms map target in
-  map.froms <- Rmap.add target.id (from :: rs) map.froms
-
-module Froms =
-struct
-  open Layout
-
-  let rec forward map marks ~source ~from ~target =
-    map.domain <- Rset.add source.id map.domain ;
-    add_from map ~from ~target ;
-    if once marks target then add_region map marks target
-
-  and add_region map marks reg =
-    begin
-      add_points_to map marks ~source:reg reg.pointsTo ;
-      add_cluster map marks ~source:reg (cluster map reg) ;
-    end
-
-  and add_points_to map marks ~source = function
-    | None -> ()
-    | Some p -> add_deref map marks ~source ~target:(region map p)
-
-  and add_deref map marks ~source ~target =
-    let from = if is_shifted target then Farray source else Fderef source in
-    forward map marks ~source ~from ~target
-
-  and add_cluster map marks ~source = function
-    | Empty | Garbled | Chunk (Int _ | Float _) -> ()
-    | Chunk (Pointer target) -> add_deref map marks ~source ~target
-    | Layout { layout } -> List.iter (add_range map marks ~source) layout
-
-  and add_range map marks ~source = function
-    | { ofs ; reg = target ; dim = Dim(_,[]) } ->
-      forward map marks ~source ~from:(Ffield(source,ofs)) ~target
-    | { reg = target } ->
-      forward map marks ~source ~from:(Findex source) ~target
-
-end
-
-(* -------------------------------------------------------------------------- *)
-(* --- Roots Analysis                                                     --- *)
-(* -------------------------------------------------------------------------- *)
-
-let get_roots map reg =
-  try Rmap.find reg.id map.roots
-  with Not_found -> Rnone
-
-let has_roots map reg = get_roots map reg <> Rnone
-
-module Roots =
-struct
-
-  let rec of_region map region =
-    try Rmap.find region.id map.roots
-    with Not_found ->
-      let froms = get_froms map region in
-      let roots =
-        List.fold_left
-          (fun roots from ->
-             Root.merge roots (Root.from ~root:(of_region map) from)
-          ) Rnone froms
-      in map.roots <- Rmap.add region.id roots map.roots ; roots
-
-  let compute map reg = ignore (of_region map reg)
-
-end
-
-(* -------------------------------------------------------------------------- *)
-(* --- Forward & Backward Propagation                                     --- *)
-(* -------------------------------------------------------------------------- *)
-
-let forward map =
-  begin
-    let marks = ref Rset.empty in
-    map.domain <- Rset.empty ;
-    Vmap.iter
-      (fun x r ->
-         let reg = region map r in
-         let open Cil_types in
-         if x.vglob || x.vformal then
-           add_from map ~from:(Fvar x) ~target:(region map r) ;
-         Froms.add_region map marks reg ;
-      ) map.vars ;
-  end
-
-let backward map =
-  begin
-    Rmap.iter (Roots.compute map) map.region ;
-  end
-
-(* -------------------------------------------------------------------------- *)
-(* --- Chunk Analysis                                                     --- *)
-(* -------------------------------------------------------------------------- *)
-
-let rec chunk map region =
-  try Rmap.find region.id map.chunk
-  with Not_found ->
-    let roots = get_roots map region in
-    let chunk =
-      match cluster map region with
-      | Empty | Garbled -> Mraw (roots,get_pointed map region)
-      | Chunk v ->
-        if is_read region || is_written region then
-          Mmem(roots,v)
-        else
-          begin match v with
-            | Pointer r -> Mref r
-            | _ -> Mraw (roots,get_pointed map region)
-          end
-      | Layout { layout } ->
-        let chunks = Chunk.union_map (fun { reg } -> chunks map reg) layout
-        in Mcomp(chunks,layout)
-
-    in map.chunk <- Rmap.add region.id chunk map.chunk ; chunk
-
-and chunks map region =
-  match chunk map region with
-  | Mcomp(rs,_) -> rs
-  | _ -> Chunk.singleton region.id
-
-(* -------------------------------------------------------------------------- *)
-(* --- Fixpoint                                                           --- *)
-(* -------------------------------------------------------------------------- *)
-
-let fixpoint map =
-  begin
-    let turn = ref 0 in
-    let loop = ref true in
-    while !loop do
-      incr turn ;
-      Wp.feedback ~ontty:`Transient "Region clustering (loop #%d)" !turn ;
-      fusion map ;
-      map.cluster <- Rmap.empty ;
-      iter map (Cluster.compute map) ;
-      loop := fusionned map ;
-    done ;
-    Wp.feedback ~ontty:`Transient "Region forward analysis" ;
-    forward map ;
-    Wp.feedback ~ontty:`Transient "Region backward analysis" ;
-    backward map ;
-    Wp.feedback ~ontty:`Transient "Region fixpoint reached" ;
-  end
-
-(* -------------------------------------------------------------------------- *)
diff --git a/src/plugins/wp/Region.mli b/src/plugins/wp/Region.mli
deleted file mode 100644
index 1852732e5034a8e3f76b196b666b2fd3441bf2b4..0000000000000000000000000000000000000000
--- a/src/plugins/wp/Region.mli
+++ /dev/null
@@ -1,105 +0,0 @@
-(**************************************************************************)
-(*                                                                        *)
-(*  This file is part of WP plug-in of Frama-C.                           *)
-(*                                                                        *)
-(*  Copyright (C) 2007-2024                                               *)
-(*    CEA (Commissariat a l'energie atomique et aux energies              *)
-(*         alternatives)                                                  *)
-(*                                                                        *)
-(*  you can redistribute it and/or modify it under the terms of the GNU   *)
-(*  Lesser General Public License as published by the Free Software       *)
-(*  Foundation, version 2.1.                                              *)
-(*                                                                        *)
-(*  It is distributed in the hope that it will be useful,                 *)
-(*  but WITHOUT ANY WARRANTY; without even the implied warranty of        *)
-(*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *)
-(*  GNU Lesser General Public License for more details.                   *)
-(*                                                                        *)
-(*  See the GNU Lesser General Public License version 2.1                 *)
-(*  for more details (enclosed in the file licenses/LGPLv2.1).            *)
-(*                                                                        *)
-(**************************************************************************)
-
-open Cil_types
-open Layout
-
-type region
-type map
-
-module R : Layout.Data with type t = region
-module Map : Qed.Idxmap.S with type key = region
-module Set : Qed.Idxset.S with type elt = region
-
-val create : unit -> map
-val is_empty : map -> bool
-val iter : map -> (region -> unit) -> unit
-
-val id: region -> int
-val noid: int
-
-val get_addrof : map -> region -> region
-val add_pointed : map -> region -> region
-val add_offset : map -> region -> offset -> region
-val field_offset : map -> fieldinfo -> int * int
-
-val get_froms : map -> region -> region from list
-val get_roots : map -> region -> root
-val has_roots : map -> region -> bool
-
-val is_garbled : region -> bool
-val has_pointed : region -> bool
-val has_layout : region -> bool
-val has_offset : region -> offset -> bool
-val has_copies : region -> bool
-val has_deref : region -> bool
-val has_names : region -> bool
-val has_return : map -> bool
-
-val get_pointed : map -> region -> region option
-val get_offset : map -> region -> offset -> region option
-val get_copies : map -> region -> region list
-val get_alias : map -> region -> region
-val get_merged : map -> region -> region option
-val eq_alias : map -> region -> region -> bool
-
-val acs_read : region -> lvalue -> unit
-val acs_write : region -> lvalue -> unit
-val acs_shift : region -> lvalue -> unit
-val acs_deref : region -> deref -> unit
-val acs_copy : src:region -> tgt:region -> unit
-
-val is_read : region -> bool
-val is_written : region -> bool
-val is_shifted : region -> bool
-val is_aliased : region -> bool
-
-val iter_read : (lvalue -> unit) -> region -> unit
-val iter_write : (lvalue -> unit) -> region -> unit
-val iter_shift : (lvalue -> unit) -> region -> unit
-val iter_deref : (deref -> unit) -> region -> unit
-val iter_offset : map -> (offset -> region -> unit) -> region -> unit
-val iter_copies : map -> (region -> unit) -> region -> unit
-val iter_vars : map -> (varinfo -> region -> unit) -> unit
-val iter_names : map -> (string -> region -> unit) -> unit
-val iter_strings : map -> (region -> string -> unit) -> unit
-
-val of_null : map -> region
-val of_return : map -> region
-val of_cvar : map -> varinfo -> region
-val of_cstring : map -> eid:int -> cst:string -> region
-val of_name : map -> string -> region
-val of_class : map -> string option -> region
-
-val region : map -> int -> region
-val cluster : map -> region -> region cluster
-val chunk : map -> region -> region chunk
-val chunks : map -> region -> chunks
-
-val alias : map -> region -> region -> region
-val do_alias : map -> region -> region -> unit
-val add_alias : map -> into:region -> region -> unit
-
-val fusion : map -> unit
-val fusionned : map -> bool
-val iter_fusion : map -> (int -> region -> unit) -> unit
-val fixpoint : map -> unit
diff --git a/src/plugins/wp/RegionAccess.ml b/src/plugins/wp/RegionAccess.ml
deleted file mode 100644
index 68f734e9e57610f5ef3a2d72bd045af15a22cf3b..0000000000000000000000000000000000000000
--- a/src/plugins/wp/RegionAccess.ml
+++ /dev/null
@@ -1,453 +0,0 @@
-(**************************************************************************)
-(*                                                                        *)
-(*  This file is part of WP plug-in of Frama-C.                           *)
-(*                                                                        *)
-(*  Copyright (C) 2007-2024                                               *)
-(*    CEA (Commissariat a l'energie atomique et aux energies              *)
-(*         alternatives)                                                  *)
-(*                                                                        *)
-(*  you can redistribute it and/or modify it under the terms of the GNU   *)
-(*  Lesser General Public License as published by the Free Software       *)
-(*  Foundation, version 2.1.                                              *)
-(*                                                                        *)
-(*  It is distributed in the hope that it will be useful,                 *)
-(*  but WITHOUT ANY WARRANTY; without even the implied warranty of        *)
-(*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *)
-(*  GNU Lesser General Public License for more details.                   *)
-(*                                                                        *)
-(*  See the GNU Lesser General Public License version 2.1                 *)
-(*  for more details (enclosed in the file licenses/LGPLv2.1).            *)
-(*                                                                        *)
-(**************************************************************************)
-
-open Cil_types
-open Layout
-open Region
-
-(* -------------------------------------------------------------------------- *)
-(* --- Location Compiler                                                  --- *)
-(* -------------------------------------------------------------------------- *)
-
-type addr = {
-  addrof : Region.region ;
-  typeOfPointed : typ ;
-  shift : bool ;
-}
-
-type value =
-  | Pure
-  | Read_at of typ * region
-  | Addr_of of addr
-
-[@@@ warning "-32"]
-let pp_value fmt = function
-  | Pure -> Format.pp_print_string fmt "scalar"
-  | Read_at(_,r) -> Format.fprintf fmt "read %a" R.pretty r
-  | Addr_of a ->
-    if a.shift then
-      Format.fprintf fmt "addr %a+" R.pretty a.addrof
-    else
-      Format.fprintf fmt "addr %a" R.pretty a.addrof
-[@@@ warning "+32"]
-
-(* -------------------------------------------------------------------------- *)
-(* --- Strings                                                            --- *)
-(* -------------------------------------------------------------------------- *)
-
-let cc_string map exp =
-  let cst = Pretty_utils.to_string Cil_datatype.Exp.pretty exp in
-  let addrof = Region.of_cstring map ~eid:exp.eid ~cst in
-  { addrof ; typeOfPointed = Cil_const.charType ; shift=false }
-
-(* -------------------------------------------------------------------------- *)
-(* --- Reading Values                                                     --- *)
-(* -------------------------------------------------------------------------- *)
-
-let read acs = function
-  | Pure -> ()
-  | Addr_of _ -> ()
-  | Read_at(tr,r) ->
-    acs_deref r (Value,tr) ;
-    acs_read r acs
-
-let points_to = function { shift ; addrof = pointed ; typeOfPointed = typ } ->
-  acs_deref pointed ((if shift then Array else Deref),typ)
-
-let addrof map = function
-  | Pure -> failwith "Wp.Region: physical address"
-  | Read_at(tr,r) ->
-    acs_deref r (Value,tr) ;
-    {
-      addrof = add_pointed map r ;
-      typeOfPointed = Cil.typeOf_pointed tr ;
-      shift = false ;
-    }
-  | Addr_of addr -> addr
-
-let cast ty value =
-  if Cil.isPointerType ty then
-    match value with
-    | Addr_of addr ->
-      Addr_of { addr with typeOfPointed = Cil.typeOf_pointed ty }
-    | Read_at (_,r) -> Read_at(ty,r)
-    | Pure -> Pure
-  else
-    value
-
-let is_pointer_value = function
-  | Pure -> false
-  | Addr_of _ -> true
-  | Read_at(tr,_) -> Cil.isPointerType tr
-
-let merge_type t t' =
-  if Cil.isVoidType t then t' else
-  if Cil.isVoidType t' then t else
-  if Cil_datatype.Typ.equal t t' then t
-  else failwith "Wp.Region: merge incompatible pointer types"
-
-let merge_addrof (map:map) v1 v2 =
-  if not (is_pointer_value v1) then v2 else
-  if not (is_pointer_value v2) then v1 else
-    let a1 = addrof map v1 in
-    let a2 = addrof map v2 in
-    let typeOfPointed = merge_type a1.typeOfPointed a2.typeOfPointed in
-    let addrof = Region.alias map a1.addrof a2.addrof in
-    let shift = a1.shift || a2.shift in
-    Addr_of { addrof ; typeOfPointed ; shift }
-
-(* -------------------------------------------------------------------------- *)
-(* --- Expressions & L-values                                             --- *)
-(* -------------------------------------------------------------------------- *)
-
-let rec cc_exp (map:map) exp =
-  match exp.enode with
-  | BinOp( (PlusPI | MinusPI) , a , b , _ ) ->
-    cc_read map b ;
-    let { addrof = pointed } as addr = cc_addr map a in
-    acs_shift pointed (Eval exp) ;
-    Addr_of { addr with shift = true }
-  | AddrOf lv | StartOf lv ->
-    Addr_of {
-      addrof = cc_lval map lv ;
-      typeOfPointed = Cil.typeOfLval lv ;
-      shift = false ;
-    }
-  | Lval lv -> Read_at (Cil.typeOfLval lv , cc_lval map lv)
-  | CastE(ty,e) -> cast ty (cc_exp map e)
-  | Const (CStr _ | CWStr _) -> Addr_of (cc_string map exp)
-  | Const (CInt64 _ | CChr _ | CEnum _ | CReal _)
-  | SizeOf _ | SizeOfE _ | SizeOfStr _
-  | AlignOf _ | AlignOfE _ -> Pure
-  | UnOp(_,e,ty) ->
-    assert (not (Cil.isPointerType ty)) ;
-    cc_read map e ; Pure
-  | BinOp(_,a,b,ty) ->
-    assert (not (Cil.isPointerType ty)) ;
-    cc_read map a ; cc_read map b ; Pure
-
-and cc_host map = function
-  | Var x -> of_cvar map x , x.vtype
-  | Mem e ->
-    let a = cc_addr map e in
-    points_to a ; (* deref, not read !*)
-    a.addrof , a.typeOfPointed
-
-and cc_lval map (host , offset) =
-  let r,ty = cc_host map host in cc_offset map r ty offset
-
-and cc_offset map r ty = function
-  | Cil_types.NoOffset -> r
-  | Cil_types.Field(fd,ofs) ->
-    let df = Offset.field fd in
-    cc_offset map (add_offset map r df) fd.ftype ofs
-  | Cil_types.Index(e,ofs) ->
-    cc_read map e ;
-    let de = Offset.index ty in
-    let te = Offset.typeof de in
-    cc_offset map (add_offset map r de) te ofs
-
-and cc_addr map a = addrof map (cc_exp map a)
-
-and cc_read map e = read (Eval e) (cc_exp map e)
-
-and cc_comp map e =
-  match cc_exp map e with
-  | Pure | Addr_of _ -> failwith "Wp.Region: comp expected"
-  | Read_at(_,r) -> r
-
-let cc_writes map stmt tgt typ e =
-  acs_deref tgt (Value,typ) ;
-  acs_write tgt (Assigned stmt) ;
-  match Cil.unrollType typ with
-  | TPtr _ ->
-    let a = cc_addr map e in
-    points_to a ; (* deref, not read! *)
-    do_alias map a.addrof (add_pointed map tgt)
-  | TComp _ ->
-    let src = cc_comp map e in
-    acs_copy ~src ~tgt
-  | _ ->
-    cc_read map e
-
-let cc_assign map stmt lv e =
-  cc_writes map stmt (cc_lval map lv) (Cil.typeOfLval lv) e
-
-let cc_return map stmt e =
-  cc_writes map stmt (Region.of_return map) (Cil.typeOf e) e
-
-(* -------------------------------------------------------------------------- *)
-(* ---  Stmt & Instructions                                               --- *)
-(* -------------------------------------------------------------------------- *)
-
-let rec cc_init map stmt lv = function
-  | SingleInit e -> cc_assign map stmt lv e
-  | CompoundInit(_,content) ->
-    List.iter
-      (fun (ofs,vi) ->
-         cc_init map stmt (Cil.addOffsetLval ofs lv) vi
-      ) content
-
-let cc_local_init map stmt x = function
-  | AssignInit vi -> cc_init map stmt (Var x,NoOffset) vi
-  | ConsInit _ -> failwith "Wp.Region: cons-init not implemented"
-
-let cc_instr map stmt = function
-  | Set(lv,e,_) -> cc_assign map stmt lv e
-  | Call _ -> failwith "Wp.Region: call not implemented"
-  | Local_init(x,vi,_) -> cc_local_init map stmt x vi
-  | Asm _ | Skip _ | Code_annot _ -> ()
-
-let cc_skind map stmt =
-  match stmt.skind with
-  | Instr instr -> cc_instr map stmt instr
-  | Return(Some ve,_) -> cc_return map stmt ve
-  | If(e,_,_,_) -> cc_read map e
-  | Switch(e,_,_,_) -> cc_read map e
-
-  | Return(None,_) | Goto _ | Break _ | Continue _ | Loop _
-  | Block _ | UnspecifiedSequence _
-  | Throw _ | TryCatch _ | TryFinally _ | TryExcept _ -> ()
-
-(* -------------------------------------------------------------------------- *)
-(* --- ACSL Terms                                                         --- *)
-(* -------------------------------------------------------------------------- *)
-
-let rec cc_term map t = read (Tval t) (cc_term_value map t)
-
-and cc_term_value (map:map) (term:term) =
-  match term.term_node with
-  | TLval lv ->
-    begin match cc_term_lval map lv with
-      | None -> Pure
-      | Some(ty,reg) -> Read_at(ty,reg)
-    end
-  | TAddrOf lv | TStartOf lv ->
-    begin match cc_term_lval map lv with
-      | None -> failwith "Wp.Region: pure term-value"
-      | Some(ty,reg) -> Addr_of {
-          addrof = reg ;
-          typeOfPointed = ty ;
-          shift = false ;
-        }
-    end
-  | TBinOp( (PlusPI | MinusPI) , a , b ) ->
-    begin
-      cc_term map b ;
-      let { addrof = pointed } as addr = cc_term_addr map a in
-      acs_shift pointed (Tval term) ;
-      Addr_of { addr with shift = true }
-    end
-
-  | Tnull ->
-    Addr_of {
-      addrof = Region.of_null map ;
-      typeOfPointed = Cil_const.charType ;
-      shift = false ;
-    }
-
-  | TUnOp(_,a) -> cc_term map a ; Pure
-  | TBinOp(_,a,b) -> cc_term map a ; cc_term map b ; Pure
-
-  | Tat(t,_) -> cc_term_value map t
-
-  | TCast (_, Ctype ty,t) -> cast ty @@ cc_term_value map t
-  | TCast (true, _,t) -> cc_term_value map t
-  | TCast (false, _,_) -> assert false
-
-  | TConst _
-  | TSizeOf _ | TSizeOfE _ | TSizeOfStr _
-  | TAlignOf _ | TAlignOfE _ | Ttype _ | Ttypeof _
-    -> Pure
-
-  | TDataCons(_,ts) -> List.iter (cc_term map) ts ; Pure
-  | TUpdate(w,ofs,v) ->
-    cc_term map w ;
-    cc_term map v ;
-    cc_term_offset_read map ofs ;
-    Pure
-
-  | Tbase_addr(_at,t) -> cast Cil_const.voidPtrType @@ cc_term_value map t
-  | Tblock_length(_at,t) | Toffset(_at,t) -> cc_term map t ; Pure
-
-  | Tif(c,a,b) ->
-    cc_term map c ;
-    merge_addrof map (cc_term_value map a) (cc_term_value map b)
-
-  | Tempty_set -> Pure
-  | Tunion ts | Tinter ts ->
-    List.fold_left
-      (fun v t -> merge_addrof map v (cc_term_value map t)) Pure ts
-
-  | Tcomprehension(t,_,None) -> cc_term_value map t
-  | Tcomprehension(t,_,Some p) -> cc_pred map p ; cc_term_value map t
-  | Trange(a,b) -> cc_term_option map a ; cc_term_option map b ; Pure
-
-  | Tlet _ | Tlambda _ | Tapp _ ->
-    failwith "Wp.Region: unsupported logic functions and bindings"
-
-and cc_term_lval map (lhost,loffset) =
-  match lhost with
-  | TResult typ -> Some(typ,of_return map)
-  | TVar lvar ->
-    begin
-      match lvar.lv_origin with
-      | Some x ->
-        let ty,rv = cc_term_offset map (of_cvar map x) x.vtype loffset in
-        Some(ty,rv)
-      | None ->
-        cc_term_offset_read map loffset ;
-        None
-    end
-  | TMem p ->
-    begin
-      let a = cc_term_addr map p in
-      points_to a ;
-      let ty,ra = cc_term_offset map a.addrof a.typeOfPointed loffset in
-      Some(ty,ra)
-    end
-
-and cc_term_offset map r ty = function
-  | TNoOffset -> ty,r
-  | TField(fd,ofs) ->
-    let df = Offset.field fd in
-    cc_term_offset map (add_offset map r df) fd.ftype ofs
-  | TIndex(t,ofs) ->
-    cc_term map t ;
-    let de = Offset.index ty in
-    let te = Offset.typeof de in
-    cc_term_offset map (add_offset map r de) te ofs
-  | TModel _ -> failwith "Wp.Region: model field"
-
-and cc_term_offset_read map = function
-  | TNoOffset -> ()
-  | TField(_,ofs) -> cc_term_offset_read map ofs
-  | TModel(_,ofs) -> cc_term_offset_read map ofs
-  | TIndex(t,ofs) -> cc_term map t ; cc_term_offset_read map ofs
-
-and cc_term_addr map t = addrof map @@ cc_term_value map t
-
-and cc_term_option map = function None -> () | Some t -> cc_term map t
-
-(* -------------------------------------------------------------------------- *)
-(* --- ACSL Predicates                                                    --- *)
-(* -------------------------------------------------------------------------- *)
-
-and cc_pred (map:map) (p:predicate) =
-  match p.pred_content with
-  | Pfalse | Ptrue -> ()
-
-  | Prel(_,a,b) ->
-    cc_term map a ; cc_term map b
-
-  | Pnot a -> cc_pred map a
-  | Pif(t,a,b) ->
-    cc_term map t ; cc_pred map a ; cc_pred map b
-  | Pand(a,b) | Por(a,b) | Pxor(a,b) | Pimplies(a,b) | Piff(a,b) ->
-    cc_pred map a ; cc_pred map b
-
-  | Pforall(_,p) | Pexists(_,p) -> cc_pred map p
-
-  | Pseparated ts -> List.iter (cc_term map) ts
-  | Pvalid(_,t) | Pvalid_read(_,t) | Pobject_pointer(_,t) | Pvalid_function t
-  | Pinitialized(_,t) | Pdangling(_,t) | Pallocable(_,t)
-  | Pfreeable(_,t) -> cc_term map t
-  | Pfresh(_,_,ptr,n) -> cc_term map ptr ; cc_term map n
-
-  | Pat(p,_at) -> cc_pred map p
-
-  | Plet _ | Papp _ ->
-    failwith "Wp.Region: unsupported logic predicates and bindings"
-
-(* -------------------------------------------------------------------------- *)
-(* --- ACSL Spec & Defs                                                   --- *)
-(* -------------------------------------------------------------------------- *)
-
-class visitor map =
-  object
-    inherit Visitor.frama_c_inplace as super
-
-    method! vpredicate p = cc_pred map p ; Cil.SkipChildren
-    method! vterm t = cc_term map t ; Cil.SkipChildren
-    method! vstmt s = cc_skind map s ; super#vstmt s
-    (* vpredicate and vterm are called from vcode_annot *)
-
-    (* speed up: skip non interesting subtrees *)
-    method! vvdec _ = Cil.SkipChildren (* done via stmt *)
-    method! vexpr _ = Cil.SkipChildren (* done via stmt *)
-    method! vlval _ = Cil.SkipChildren (* done via stmt *)
-    method! vattr _ = Cil.SkipChildren (* done via stmt *)
-    method! vinst _ =  Cil.SkipChildren (* done via stmt *)
-  end
-
-let cc_fundec map def =
-  let visitor = new visitor map in
-  ignore (Cil.visitCilFunction (visitor:>Cil.cilVisitor) def)
-
-let cc_spec map spec =
-  let visitor = new visitor map in
-  ignore (Cil.visitCilFunspec (visitor:>Cil.cilVisitor) spec)
-
-(* -------------------------------------------------------------------------- *)
-(* --- L-path Iterator                                                    --- *)
-(* -------------------------------------------------------------------------- *)
-
-open RegionAnnot
-
-let iter_star map f t r =
-  let pointed = add_pointed map r in
-  acs_deref pointed (Deref,t) ; f pointed
-
-let iter_shift map f t r =
-  let pointed = add_pointed map r in
-  acs_deref pointed (Array,t) ; f r
-
-let iter_index map f tarr r =
-  f (add_offset map r (Offset.index tarr))
-
-let iter_fields map f fds r =
-  List.iter (fun fd -> f (add_offset map r (Offset.field fd))) fds
-
-let rec iter_lpath map f lv =
-  match lv.lnode with
-  | L_var x -> f (of_cvar map x)
-  | L_region a -> f (of_name map a)
-  | L_cast(_,a) -> iter_lpath map f a
-  | L_addr a -> iter_lpath map (fun r -> f (get_addrof map r)) a
-  | L_star(te,a) -> iter_lpath map (iter_star map f te) a
-  | L_shift(a,te,_) -> iter_lpath map (iter_shift map f te) a
-  | L_index(a,_,_) -> iter_lpath map (iter_index map f lv.ltype) a
-  | L_field(a,fs) -> iter_lpath map (iter_fields map f fs) a
-
-(* -------------------------------------------------------------------------- *)
-(* --- Region Specs                                                       --- *)
-(* -------------------------------------------------------------------------- *)
-
-let cc_lpath map rclass _rpattern lv =
-  iter_lpath map (Region.add_alias map ~into:rclass) lv
-
-let cc_region map spec =
-  let rclass = Region.of_class map spec.region_name in
-  let rpattern = spec.region_pattern in
-  List.iter (cc_lpath map rclass rpattern) spec.region_lpath
-
-(* -------------------------------------------------------------------------- *)
diff --git a/src/plugins/wp/RegionAccess.mli b/src/plugins/wp/RegionAccess.mli
deleted file mode 100644
index b422f3af429e2fd85d7c7b09ec2e39973733e0ac..0000000000000000000000000000000000000000
--- a/src/plugins/wp/RegionAccess.mli
+++ /dev/null
@@ -1,42 +0,0 @@
-(**************************************************************************)
-(*                                                                        *)
-(*  This file is part of WP plug-in of Frama-C.                           *)
-(*                                                                        *)
-(*  Copyright (C) 2007-2024                                               *)
-(*    CEA (Commissariat a l'energie atomique et aux energies              *)
-(*         alternatives)                                                  *)
-(*                                                                        *)
-(*  you can redistribute it and/or modify it under the terms of the GNU   *)
-(*  Lesser General Public License as published by the Free Software       *)
-(*  Foundation, version 2.1.                                              *)
-(*                                                                        *)
-(*  It is distributed in the hope that it will be useful,                 *)
-(*  but WITHOUT ANY WARRANTY; without even the implied warranty of        *)
-(*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *)
-(*  GNU Lesser General Public License for more details.                   *)
-(*                                                                        *)
-(*  See the GNU Lesser General Public License version 2.1                 *)
-(*  for more details (enclosed in the file licenses/LGPLv2.1).            *)
-(*                                                                        *)
-(**************************************************************************)
-
-open Cil_types
-open Region
-
-(* -------------------------------------------------------------------------- *)
-
-val cc_lval : map -> lval -> region
-val cc_read : map -> exp -> unit
-val cc_assign : map -> stmt -> lval -> exp -> unit
-val cc_init : map -> stmt -> lval -> init -> unit
-val cc_instr : map -> stmt -> instr -> unit
-val cc_fundec : map -> fundec -> unit
-
-val cc_pred : map -> predicate -> unit
-val cc_term : map -> term -> unit
-val cc_spec : map -> spec -> unit
-
-open RegionAnnot
-val cc_region : map -> region_spec -> unit
-
-(* -------------------------------------------------------------------------- *)
diff --git a/src/plugins/wp/RegionAnalysis.ml b/src/plugins/wp/RegionAnalysis.ml
deleted file mode 100644
index 6a97a95abac711cf459f44063e4007314675d855..0000000000000000000000000000000000000000
--- a/src/plugins/wp/RegionAnalysis.ml
+++ /dev/null
@@ -1,116 +0,0 @@
-(**************************************************************************)
-(*                                                                        *)
-(*  This file is part of WP plug-in of Frama-C.                           *)
-(*                                                                        *)
-(*  Copyright (C) 2007-2024                                               *)
-(*    CEA (Commissariat a l'energie atomique et aux energies              *)
-(*         alternatives)                                                  *)
-(*                                                                        *)
-(*  you can redistribute it and/or modify it under the terms of the GNU   *)
-(*  Lesser General Public License as published by the Free Software       *)
-(*  Foundation, version 2.1.                                              *)
-(*                                                                        *)
-(*  It is distributed in the hope that it will be useful,                 *)
-(*  but WITHOUT ANY WARRANTY; without even the implied warranty of        *)
-(*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *)
-(*  GNU Lesser General Public License for more details.                   *)
-(*                                                                        *)
-(*  See the GNU Lesser General Public License version 2.1                 *)
-(*  for more details (enclosed in the file licenses/LGPLv2.1).            *)
-(*                                                                        *)
-(**************************************************************************)
-
-open Cil_types
-module Wp = Wp_parameters
-module Kf = Kernel_function
-
-(* ---------------------------------------------------------------------- *)
-(* --- Compute Analysis                                               --- *)
-(* ---------------------------------------------------------------------- *)
-
-let compute kf =
-  let map = Region.create () in
-  if Kf.is_definition kf then
-    begin
-      Wp.feedback ~ontty:`Transient "[region] Analyzing %a" Kf.pretty kf ;
-      let def = Kf.get_definition kf in
-      RegionAccess.cc_fundec map def ;
-      Populate_spec.populate_funspec kf [`Assigns];
-      let spec = Annotations.funspec kf in
-      RegionAccess.cc_spec map spec ;
-      List.iter
-        (fun bhv ->
-           let region_specs = RegionAnnot.of_behavior bhv in
-           if region_specs <> [] then
-             if Cil.is_default_behavior bhv then
-               List.iter (RegionAccess.cc_region map) region_specs
-             else
-               Wp.warning ~once:true
-                 "Region specifications in non-default behaviours are skipped."
-        ) spec.spec_behavior ;
-      if Wp.Region_fixpoint.get () then Region.fixpoint map ;
-    end ;
-  map
-
-(* ---------------------------------------------------------------------- *)
-(* --- Projectified Analysis Result                                   --- *)
-(* ---------------------------------------------------------------------- *)
-
-module REGION = Datatype.Make
-    (struct
-      type t = Region.map
-      include Datatype.Undefined
-      let reprs = [Region.create ()]
-      let name = "Wp.RegionAnalysis.region"
-      let mem_project = Datatype.never_any_project
-    end)
-
-module GLOBAL = State_builder.Ref
-    (REGION)
-    (struct
-      let name = "Wp.RegionAnalysis.ref"
-      let dependencies = [Ast.self]
-      let default = Region.create
-    end)
-
-module REGISTRY = State_builder.Hashtbl
-    (Kernel_function.Hashtbl)
-    (REGION)
-    (struct
-      let name = "Wp.RegionAnalysis.registry"
-      let dependencies = [Ast.self]
-      let size = 32
-    end)
-
-let get = function
-  | None -> GLOBAL.get ()
-  | Some kf ->
-    try REGISTRY.find kf
-    with Not_found ->
-      let map = compute kf in
-      REGISTRY.add kf map ; map
-
-(* ---------------------------------------------------------------------- *)
-(* --- Command Line Registry                                          --- *)
-(* ---------------------------------------------------------------------- *)
-
-let main () =
-  if Wp.Region.get () then
-    begin
-      Ast.compute () ;
-      let dump =
-        if Wp_parameters.Region_output_dot.is_set () then
-          RegionDump.dump_in_file ~file:(Wp_parameters.Region_output_dot.get())
-        else
-          RegionDump.dump_in_dir ~dir:(Wp.get_output_dir "region")
-      in
-      Wp.iter_kf (fun kf ->
-          let map = get (Some kf) in
-          if not (Region.is_empty map) then
-            dump (Kernel_function.get_name kf) map
-        ) ;
-    end
-
-let () = Boot.Main.extend main
-
-(* ---------------------------------------------------------------------- *)
diff --git a/src/plugins/wp/RegionAnalysis.mli b/src/plugins/wp/RegionAnalysis.mli
deleted file mode 100644
index d3d4b6998d5bee5ab060a3c3c96372066d5c0be8..0000000000000000000000000000000000000000
--- a/src/plugins/wp/RegionAnalysis.mli
+++ /dev/null
@@ -1,29 +0,0 @@
-(**************************************************************************)
-(*                                                                        *)
-(*  This file is part of WP plug-in of Frama-C.                           *)
-(*                                                                        *)
-(*  Copyright (C) 2007-2024                                               *)
-(*    CEA (Commissariat a l'energie atomique et aux energies              *)
-(*         alternatives)                                                  *)
-(*                                                                        *)
-(*  you can redistribute it and/or modify it under the terms of the GNU   *)
-(*  Lesser General Public License as published by the Free Software       *)
-(*  Foundation, version 2.1.                                              *)
-(*                                                                        *)
-(*  It is distributed in the hope that it will be useful,                 *)
-(*  but WITHOUT ANY WARRANTY; without even the implied warranty of        *)
-(*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *)
-(*  GNU Lesser General Public License for more details.                   *)
-(*                                                                        *)
-(*  See the GNU Lesser General Public License version 2.1                 *)
-(*  for more details (enclosed in the file licenses/LGPLv2.1).            *)
-(*                                                                        *)
-(**************************************************************************)
-
-
-(* -------------------------------------------------------------------------- *)
-
-(** Memoized and Projectified Region Analyzis for the given Function. *)
-val get : Kernel_function.t option -> Region.map
-
-(* -------------------------------------------------------------------------- *)
diff --git a/src/plugins/wp/RegionAnnot.ml b/src/plugins/wp/RegionAnnot.ml
deleted file mode 100644
index f2697affd43569089fda263bbf4cb02213b1f987..0000000000000000000000000000000000000000
--- a/src/plugins/wp/RegionAnnot.ml
+++ /dev/null
@@ -1,507 +0,0 @@
-(**************************************************************************)
-(*                                                                        *)
-(*  This file is part of WP plug-in of Frama-C.                           *)
-(*                                                                        *)
-(*  Copyright (C) 2007-2024                                               *)
-(*    CEA (Commissariat a l'energie atomique et aux energies              *)
-(*         alternatives)                                                  *)
-(*                                                                        *)
-(*  you can redistribute it and/or modify it under the terms of the GNU   *)
-(*  Lesser General Public License as published by the Free Software       *)
-(*  Foundation, version 2.1.                                              *)
-(*                                                                        *)
-(*  It is distributed in the hope that it will be useful,                 *)
-(*  but WITHOUT ANY WARRANTY; without even the implied warranty of        *)
-(*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *)
-(*  GNU Lesser General Public License for more details.                   *)
-(*                                                                        *)
-(*  See the GNU Lesser General Public License version 2.1                 *)
-(*  for more details (enclosed in the file licenses/LGPLv2.1).            *)
-(*                                                                        *)
-(**************************************************************************)
-
-open Cil_types
-open Cil_datatype
-open Logic_ptree
-
-module Wp = Wp_parameters
-
-(* -------------------------------------------------------------------------- *)
-(* --- L-Path                                                             --- *)
-(* -------------------------------------------------------------------------- *)
-
-type region_pattern =
-  | FREE
-  | PVAR
-  | PREF
-  | PMEM
-  | PVECTOR
-  | PMATRIX
-
-type lrange =
-  | R_index of term
-  | R_range of term option * term option
-
-type lpath = {
-  loc : location ;
-  lnode : lnode ;
-  ltype : typ ;
-}
-and lnode =
-  | L_var of varinfo
-  | L_region of string
-  | L_addr of lpath
-  | L_star of typ * lpath
-  | L_shift of lpath * typ * lrange
-  | L_index of lpath * typ * lrange
-  | L_field of lpath * fieldinfo list
-  | L_cast of typ * lpath
-
-type region_spec = {
-  region_name: string option ;
-  region_pattern: region_pattern ;
-  region_lpath: lpath list ;
-}
-
-(*
-let get_int e =
-  match Logic_utils.constFoldTermToInt e with
-  | None -> None
-  | Some a -> Some (Integer.to_int_exn a)
-
-let get_int_option = function
-  | None -> None
-  | Some e -> get_int e
-*)
-
-module Lpath =
-struct
-
-  type t = lpath
-
-  let compare_bound a b =
-    match a,b with
-    | None , None -> 0
-    | Some a , Some b -> Term.compare a b
-    | None , Some _ -> (-1)
-    | Some _ , None -> 1
-
-  let compare_range a b =
-    match a,b with
-    | R_index a , R_index b -> Term.compare a b
-    | R_index _ , _ -> (-1)
-    | _ , R_index _ -> 1
-    | R_range(a1,b1) , R_range(a2,b2) ->
-      let cmp = compare_bound a1 a2 in
-      if cmp <> 0 then cmp else compare_bound b1 b2
-
-  let rec compare a b =
-    match a.lnode , b.lnode with
-    | L_var x , L_var y -> Varinfo.compare x y
-    | L_var _ , _ -> (-1)
-    | _ , L_var _ -> 1
-    | L_region a , L_region b -> String.compare a b
-    | L_region _ , _ -> (-1)
-    | _ , L_region _ -> 1
-    | L_star(ta,a) , L_star(tb,b) ->
-      let cmp = Typ.compare ta tb in
-      if cmp <> 0 then cmp else compare a b
-    | L_star _ , _ -> (-1)
-    | _ , L_star _ -> 1
-    | L_addr a , L_addr b -> compare a b
-    | L_addr _ , _ -> (-1)
-    | _ , L_addr _ -> 1
-    | L_shift(a,ta,i) , L_shift(b,tb,j) -> compare_index a ta i b tb j
-    | L_shift _ , _ -> (-1)
-    | _ , L_shift _ -> 1
-    | L_index(a,ta,i) , L_index(b,tb,j) -> compare_index a ta i b tb j
-    | L_index _ , _ -> (-1)
-    | _ , L_index _ -> 1
-    | L_field(a,fs) , L_field(b,gs) ->
-      let cmp = compare a b in
-      if cmp <> 0 then cmp
-      else Qed.Hcons.compare_list Fieldinfo.compare fs gs
-    | L_field _ , _ -> (-1)
-    | _ , L_field _ -> 1
-    | L_cast(ta,a) , L_cast(tb,b) ->
-      let cmp = Typ.compare ta tb in
-      if cmp <> 0 then cmp else compare a b
-
-  and compare_index a ta i b tb j =
-    let cmp = compare a b in
-    if cmp <> 0 then cmp else
-      let cmp = Typ.compare ta tb in
-      if cmp <> 0 then cmp else
-        compare_range i j
-
-  let equal a b = (compare a b = 0)
-
-  let pp_bound pp fmt = function None -> () | Some a -> pp fmt a
-  let pp_range pp fmt = function
-    | R_index a -> pp fmt a
-    | R_range(a,b) ->
-      begin
-        pp_bound pp fmt a ;
-        Format.fprintf fmt "@,.." ;
-        pp_bound pp fmt b ;
-      end
-
-  let first = function [] -> assert false | f::_ -> f
-  let rec last = function [] -> assert false | [f] -> f | _::fs -> last fs
-
-  let is_lval = function
-    | L_var _ | L_region _ | L_index _ | L_field _ -> true
-    | _ -> false
-
-  let rec pp_lpath pp fmt a = match a.lnode with
-    | L_var x -> Varinfo.pretty fmt x
-    | L_region a -> Format.pp_print_string fmt a
-    | L_field( p , [f] ) -> pfield pp p f fmt
-    | L_field( p , fs ) ->
-      Format.fprintf fmt "@[<hov 2>(%t@,..%t)@]"
-        (pfield pp p (first fs)) (pfield pp p (last fs))
-    | L_index(a,_,i) ->
-      Format.fprintf fmt "@[<hov 2>%a@,[%a]@]"
-        (pp_lval pp) a (pp_range pp) i
-    | L_shift(a,_,i) ->
-      Format.fprintf fmt "@[<hov 2>%a@,+(%a)@]"
-        (pp_lpath pp) a (pp_range pp) i
-    | L_star(_,a) -> Format.fprintf fmt "*%a" (pp_lval pp) a
-    | L_addr a -> Format.fprintf fmt "&%a" (pp_lval pp) a
-    | L_cast(t,a) -> Format.fprintf fmt "(%a)@,%a" Typ.pretty t (pp_lval pp) a
-
-  and pfield pp a f fmt =
-    Format.fprintf fmt "@[<hov 2>%a%a@]" (panchor pp) a Fieldinfo.pretty f
-
-  and panchor pp fmt a =
-    match a.lnode with
-    | L_star(_,p) -> Format.fprintf fmt "%a@,->" (pp_lval pp) p
-    | _ -> Format.fprintf fmt "%a@,." (pp_lval pp) a
-
-  and pp_lval pp fmt a =
-    if is_lval a.lnode then pp_lpath pp fmt a
-    else Format.fprintf fmt "(%a)" (pp_lpath pp) a
-
-  let pretty = pp_lpath Term.pretty
-
-end
-
-(* -------------------------------------------------------------------------- *)
-(* --- Region Spec Printer                                                --- *)
-(* -------------------------------------------------------------------------- *)
-
-let patterns = [
-  "PVAR" , PVAR ;
-  "PREF" , PREF ;
-  "PMEM" , PMEM ;
-  "PVECTOR" , PVECTOR ;
-  "PMATRIX" , PMATRIX ;
-]
-
-let p_name p = fst (List.find (fun (_,q) -> q = p) patterns)
-
-let pp_pattern_spec fmt p =
-  try Format.fprintf fmt "\\pattern{%s}" (p_name p) ; true
-  with Not_found -> false
-
-let pp_path_spec pp fmt coma lv =
-  if coma then Format.fprintf fmt ",@ " ;
-  Lpath.pp_lpath pp fmt lv ; true
-
-let pp_region_spec pp fmt coma spec =
-  begin
-    if coma then Format.fprintf fmt ",@ " ;
-    Format.fprintf fmt "@[<hv 2>" ;
-    Option.iter (Format.fprintf fmt "%s:@ ") spec.region_name ;
-    let coma = pp_pattern_spec fmt spec.region_pattern in
-    let coma = List.fold_left (pp_path_spec pp fmt) coma spec.region_lpath in
-    Format.fprintf fmt "@]" ;
-    coma
-  end
-
-(* -------------------------------------------------------------------------- *)
-(* --- Typing Env                                                         --- *)
-(* -------------------------------------------------------------------------- *)
-
-type env = {
-  context : Logic_typing.typing_context ;
-  mutable declared : string list ;
-  mutable name : string option ;
-  mutable pattern : region_pattern ;
-  mutable paths : lpath list ;
-  mutable specs : region_spec list ;
-}
-
-let error env ~loc msg = env.context.Logic_typing.error loc msg
-
-let flush env =
-  let region_name = env.name in env.name <- None ;
-  let region_pattern = env.pattern in env.pattern <- FREE ;
-  let region_lpath = List.rev env.paths in env.paths <- [] ;
-  Option.iter (fun a -> env.declared <- a::env.declared) region_name ;
-  if not (region_name = None && region_lpath = []) then
-    let region = { region_name ; region_pattern ; region_lpath } in
-    env.specs <- region :: env.specs
-
-(* -------------------------------------------------------------------------- *)
-(* --- Type Utils                                                         --- *)
-(* -------------------------------------------------------------------------- *)
-
-let isIndexType t =
-  match Logic_utils.unroll_type t with
-  | Ctype (TInt _) | Linteger -> true
-  | _ -> false
-
-let getCompoundType env ~loc typ =
-  match Cil.unrollType typ with
-  | TComp(comp,_) -> comp
-  | _ -> error env ~loc "Expected compound type for term"
-
-(* -------------------------------------------------------------------------- *)
-(* --- Path Typechecking                                                  --- *)
-(* -------------------------------------------------------------------------- *)
-
-let parse_varinfo env ~loc x =
-  try
-    match env.context.Logic_typing.find_var x with
-    | { lv_origin = Some v } -> v
-    | _ -> error env ~loc "Variable '%s' is not a C-variable" x
-  with Not_found ->
-    error env ~loc "Unknown variable (or region) '%s'" x
-
-let parse_fieldinfo env ~loc comp f =
-  try List.find (fun fd -> fd.fname = f) (Option.value ~default:[] comp.cfields)
-  with Not_found ->
-    error env ~loc "No field '%s' in compound type '%s'" f comp.cname
-
-let parse_lindex env e =
-  let open Logic_typing in
-  let g = env.context in
-  let t = g.type_term g g.pre_state e in
-  if isIndexType t.term_type then t
-  else error env ~loc:t.term_loc "Index term shall have a integer type"
-
-let parse_ltype env ~loc t =
-  let open Logic_typing in
-  let g = env.context in
-  let t = g.logic_type g loc g.pre_state t in
-  match Logic_utils.unroll_type t with
-  | Ctype typ -> typ
-  | _ -> error env ~loc "C-type expected for casting l-values"
-
-let parse_lbound env = function
-  | None -> None
-  | Some e -> Some (parse_lindex env e)
-
-let parse_lrange env e =
-  match e.lexpr_node with
-  | PLrange(a,b) -> R_range( parse_lbound env a , parse_lbound env b )
-  | _ -> R_index( parse_lindex env e )
-
-let sugar ~loc node = { lexpr_loc = loc ; lexpr_node = node }
-
-let rec field_range ~inside fa fb = function
-  | [] -> []
-  | f::fs ->
-    let bound = Fieldinfo.equal f fa || Fieldinfo.equal f fb in
-    if inside then f :: (if bound then [] else field_range ~inside fa fb fs)
-    else if bound then f :: (field_range ~inside:true fa fb fs)
-    else field_range ~inside fa fb fs
-
-let rec typeof_fields = function
-  | [] -> TVoid []
-  | [f] -> f.ftype
-  | f::fs ->
-    let t = typeof_fields fs in
-    if Typ.equal f.ftype t then t else TVoid []
-
-let rec parse_lpath env e =
-  let loc = e.lexpr_loc in
-  match e.lexpr_node with
-  | PLvar x ->
-    if List.mem x env.declared
-    then { loc ; lnode = L_region x ; ltype = TVoid [] }
-    else
-      let v = parse_varinfo env ~loc x in
-      { loc ; lnode = L_var v ; ltype = v.vtype }
-  | PLunop( Ustar , p ) ->
-    let lv = parse_lpath env p in
-    if Cil.isPointerType lv.ltype then
-      let te = Cil.typeOf_pointed lv.ltype in
-      { loc ; lnode = L_star(te,lv) ; ltype = te }
-    else
-      error env ~loc "Pointer-type expected for operator '&'"
-  | PLunop( Uamp , p ) ->
-    let lv = parse_lpath env p in
-    let ltype = TPtr( lv.ltype , [] ) in
-    { loc ; lnode = L_addr lv ; ltype }
-  | PLbinop( p , Badd , r ) ->
-    let { ltype } as lv = parse_lpath env p in
-    let rg = parse_lrange env r in
-    if Cil.isPointerType ltype then
-      let te = Cil.typeOf_pointed ltype in
-      { loc ; lnode = L_shift(lv,te,rg) ; ltype = ltype }
-    else
-    if Cil.isArrayType ltype then
-      let te = Cil.typeOf_array_elem ltype in
-      { loc ; lnode = L_shift(lv,te,rg) ; ltype = TPtr(te,[]) }
-    else
-      error env ~loc "Pointer-type expected for operator '+'"
-  | PLdot( p , f ) ->
-    let lv = parse_lpath env p in
-    let comp = getCompoundType env ~loc:lv.loc lv.ltype in
-    let fd = parse_fieldinfo env ~loc comp f in
-    { loc ; lnode = L_field(lv,[fd]) ; ltype = fd.ftype }
-  | PLarrow( p , f ) ->
-    let sp = sugar ~loc (PLunop(Ustar,p)) in
-    let pf = sugar ~loc (PLdot(sp,f)) in
-    parse_lpath env pf
-  | PLarrget( p , k ) ->
-    let { ltype } as lv = parse_lpath env p in
-    let rg = parse_lrange env k in
-    if Cil.isPointerType ltype then
-      let pointed = Cil.typeOf_pointed ltype in
-      let ls = { loc ; lnode = L_shift(lv,pointed,rg) ; ltype } in
-      { loc ; lnode = L_star(pointed,ls) ; ltype = pointed }
-    else
-    if Cil.isArrayType ltype then
-      let elt = Cil.typeOf_array_elem ltype in
-      { loc ; lnode = L_index(lv,elt,rg) ; ltype = elt }
-    else
-      error env ~loc:lv.loc "Pointer or array type expected"
-  | PLcast( t , a ) ->
-    let lv = parse_lpath env a in
-    let ty = parse_ltype env ~loc t in
-    { loc ; lnode = L_cast(ty,lv) ; ltype = ty }
-  | PLrange( Some a , Some b ) ->
-    let pa,fa = parse_fpath env a in
-    let pb,fb = parse_fpath env b in
-    let p =
-      if Lpath.equal pa pb then pa
-      else error env ~loc "Range of fields from different l-values" in
-    let comp =
-      if Compinfo.equal fa.fcomp fb.fcomp then fa.fcomp
-      else error env ~loc "Range of fields from incompatible types" in
-    let fields =
-      field_range ~inside:false fa fb
-        (Option.value ~default:[] comp.cfields)
-    in
-    let ltype = typeof_fields fields in
-    { loc ; lnode = L_field(p,fields) ; ltype }
-  | PLrange( Some a , None ) ->
-    let p,fd = parse_fpath env a in
-    let fields =
-      field_range ~inside:false fd fd
-        (Option.value ~default:[] fd.fcomp.cfields)
-    in
-    let ltype = typeof_fields fields in
-    { loc ; lnode = L_field(p,fields) ; ltype }
-  | PLrange( None , Some a ) ->
-    let p,fd = parse_fpath env a in
-    let fields =
-      field_range ~inside:true fd fd
-        (Option.value ~default:[] fd.fcomp.cfields)
-    in
-    let ltype = typeof_fields fields in
-    { loc ; lnode = L_field(p,fields) ; ltype }
-  | _ ->
-    error env ~loc "Unexpected expression for region spec"
-
-and parse_fpath env p =
-  let lv = parse_lpath env p in
-  match lv.lnode with
-  | L_field( a , [f] ) -> a , f
-  | _ -> error env ~loc:lv.loc "Missing field access in range"
-
-(* -------------------------------------------------------------------------- *)
-(* --- Spec Typechecking                                                  --- *)
-(* -------------------------------------------------------------------------- *)
-
-let kspec = ref 0
-let registry = Hashtbl.create 0
-
-let parse_pattern env ~loc names params =
-  match names with
-  | [name] ->
-    let pattern =
-      try List.assoc name patterns
-      with Not_found -> error env ~loc "Unknown pattern '%s'" name in
-    if params <> [] then
-      error env ~loc "Unexpected parameters for pattern '%s'" name ;
-    pattern
-  | [] -> error env ~loc "Missing pattern name"
-  | _ -> error env ~loc "Duplicate pattern names"
-
-let rec parse_region env p =
-  let loc = p.lexpr_loc in
-  match p.lexpr_node with
-  | PLnamed( name , p ) ->
-    flush env ;
-    env.name <- Some name ;
-    parse_region env p
-  | PLapp("\\pattern",names,params) ->
-    let pattern = parse_pattern env ~loc names params in
-    if env.pattern <> FREE && env.pattern <> pattern then
-      error env ~loc "Duplicate pattern definition in region"
-    else
-      env.pattern <- pattern
-  | _ ->
-    let path = parse_lpath env p in
-    env.paths <- path :: env.paths
-
-let typecheck typing_context _loc ps =
-  let env = {
-    name = None ;
-    declared = [] ;
-    context = typing_context ;
-    pattern = FREE ;
-    paths = [] ; specs = [] ;
-  } in
-  List.iter (parse_region env) ps ;
-  let id = !kspec in incr kspec ;
-  let specs = flush env ; env.specs in
-  Hashtbl.add registry id specs ; Ext_id id
-
-(* -------------------------------------------------------------------------- *)
-(* --- Registry                                                           --- *)
-(* -------------------------------------------------------------------------- *)
-
-let of_extid = Hashtbl.find registry
-let of_extrev = function
-  | { ext_name="wpregion" ; ext_kind = Ext_id k } -> of_extid k
-  | _ -> raise Not_found
-let of_extension e = List.rev (of_extrev e)
-let of_behavior bhv =
-  List.fold_left
-    (fun acc e -> List.rev_append (try of_extrev e with Not_found -> []) acc)
-    [] bhv.Cil_types.b_extended
-
-let pp_extension printer fmt = function
-  | Ext_id k ->
-    let spec = try Hashtbl.find registry k with Not_found -> [] in
-    ignore (List.fold_left (pp_region_spec printer#term fmt) false spec)
-  | _ -> ()
-
-let specified =
-  let re = Str.regexp_case_fold "region" in
-  fun model ->
-    try
-      ignore (Str.search_forward re model 0) ; true
-    with Not_found -> false
-
-let registered = ref false
-let register () =
-  if not !registered && (
-      Wp.Region.get () || Wp.Region_annot.get () ||
-      List.exists specified (Wp.Model.get ())
-    )
-  then
-    begin
-      registered := true ;
-      Acsl_extension.register_behavior ~plugin:"wp" "wpregion"
-        typecheck ~printer:pp_extension false
-    end
-
-let () = Cmdline.run_after_configuring_stage register
-
-(* -------------------------------------------------------------------------- *)
diff --git a/src/plugins/wp/RegionAnnot.mli b/src/plugins/wp/RegionAnnot.mli
deleted file mode 100644
index 7ebe1d8ed6247ccb8db8f12cd9ba0e48aa661fde..0000000000000000000000000000000000000000
--- a/src/plugins/wp/RegionAnnot.mli
+++ /dev/null
@@ -1,70 +0,0 @@
-(**************************************************************************)
-(*                                                                        *)
-(*  This file is part of WP plug-in of Frama-C.                           *)
-(*                                                                        *)
-(*  Copyright (C) 2007-2024                                               *)
-(*    CEA (Commissariat a l'energie atomique et aux energies              *)
-(*         alternatives)                                                  *)
-(*                                                                        *)
-(*  you can redistribute it and/or modify it under the terms of the GNU   *)
-(*  Lesser General Public License as published by the Free Software       *)
-(*  Foundation, version 2.1.                                              *)
-(*                                                                        *)
-(*  It is distributed in the hope that it will be useful,                 *)
-(*  but WITHOUT ANY WARRANTY; without even the implied warranty of        *)
-(*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *)
-(*  GNU Lesser General Public License for more details.                   *)
-(*                                                                        *)
-(*  See the GNU Lesser General Public License version 2.1                 *)
-(*  for more details (enclosed in the file licenses/LGPLv2.1).            *)
-(*                                                                        *)
-(**************************************************************************)
-
-open Cil_types
-
-type lrange =
-  | R_index of term
-  | R_range of term option * term option
-
-type lpath = {
-  loc : location ;
-  lnode : lnode ;
-  ltype : typ ;
-}
-and lnode =
-  | L_var of varinfo
-  | L_region of string
-  | L_addr of lpath
-  | L_star of typ * lpath
-  | L_shift of lpath * typ * lrange
-  | L_index of lpath * typ * lrange
-  | L_field of lpath * fieldinfo list
-  | L_cast of typ * lpath
-
-module Lpath :
-sig
-  type t = lpath
-  val equal : t -> t -> bool
-  val compare : t -> t -> int
-  val pretty : Format.formatter -> t -> unit
-end
-
-type region_pattern =
-  | FREE
-  | PVAR
-  | PREF
-  | PMEM
-  | PVECTOR
-  | PMATRIX
-
-type region_spec = {
-  region_name: string option ;
-  region_pattern: region_pattern ;
-  region_lpath: lpath list ;
-}
-
-val p_name : region_pattern -> string
-val of_extension : acsl_extension -> region_spec list
-val of_behavior : behavior -> region_spec list
-
-val register : unit -> unit (** Auto when `-wp-region` *)
diff --git a/src/plugins/wp/RegionDump.ml b/src/plugins/wp/RegionDump.ml
deleted file mode 100644
index 87ba674bee5ce22df81b134ea30a9a2248d3b739..0000000000000000000000000000000000000000
--- a/src/plugins/wp/RegionDump.ml
+++ /dev/null
@@ -1,297 +0,0 @@
-(**************************************************************************)
-(*                                                                        *)
-(*  This file is part of WP plug-in of Frama-C.                           *)
-(*                                                                        *)
-(*  Copyright (C) 2007-2024                                               *)
-(*    CEA (Commissariat a l'energie atomique et aux energies              *)
-(*         alternatives)                                                  *)
-(*                                                                        *)
-(*  you can redistribute it and/or modify it under the terms of the GNU   *)
-(*  Lesser General Public License as published by the Free Software       *)
-(*  Foundation, version 2.1.                                              *)
-(*                                                                        *)
-(*  It is distributed in the hope that it will be useful,                 *)
-(*  but WITHOUT ANY WARRANTY; without even the implied warranty of        *)
-(*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *)
-(*  GNU Lesser General Public License for more details.                   *)
-(*                                                                        *)
-(*  See the GNU Lesser General Public License version 2.1                 *)
-(*  for more details (enclosed in the file licenses/LGPLv2.1).            *)
-(*                                                                        *)
-(**************************************************************************)
-
-module Wp = Wp_parameters
-module G = Dotgraph
-module R = G.Node(Region.Map)
-
-let node_default = [`Attr("fontname","monospace")]
-let edge_default = [`Attr("fontname","monospace")]
-
-let attr_offset = [ `Filled ; `Color "grey" ; `Box ]
-let attr_write = [ `Label "W" ; `Fillcolor "green" ; `Filled ]
-let attr_read  = [ `Label "R" ; `Fillcolor "green" ; `Filled ]
-let attr_alias = [ `Label "&" ; `Fillcolor "orange" ; `Filled ]
-let attr_merge = [ `Color "red" ; `Fillcolor "red" ; `Filled ]
-let attr_shift = [ `Label "[]" ]
-let attr_delta = [ `Filled ; `Color "lightblue" ; `Box ]
-let attr_deref = [ `ArrowHead "tee" ]
-let attr_cil = [ `Filled ; `Fillcolor "yellow" ]
-let attr_region = `Shape "tab" :: attr_cil
-let attr_var = `Shape "cds" :: attr_cil
-let attr_garbled = [`Fillcolor "red";`Filled]
-let attr_froms = [ `Color "blue" ; `Attr("dir","back") ]
-
-let attr_pointed = [
-  `Color "red"
-]
-
-let attr_pointed_deref = [
-  `Attr("taillabel","*");
-  `Attr("labelangle","+30");
-  `Color "red";
-]
-
-let attr_pointed_shift = [
-  `Attr("taillabel","[..]");
-  `Attr("labeldistance","1.7");
-  `Attr("labelangle","+40");
-  `Color "red";
-]
-
-let rid_key = Wp.register_category "rid"
-let dot_key = Wp.register_category "dot"
-let pdf_key = Wp.register_category "pdf"
-let deref_key = Wp.register_category "deref"
-let roots_key = Wp.register_category "roots"
-let froms_key = Wp.register_category "froms"
-let cluster_key = Wp.register_category "cluster"
-let chunk_key = Wp.register_category "chunk"
-let offset_key = Wp.register_category "offset"
-
-let sfprintf = Format.asprintf
-
-let dotpointed ~label r =
-  let attr =
-    if Region.is_shifted r
-    then attr_pointed_shift else attr_pointed_deref in
-  let target = G.port (R.get r) "w" in
-  `Port ("",["",attr,target],label)
-
-let dotvalue ?(prefix="") value : Dotgraph.record =
-  let open Layout in
-  match value with
-  | Int i -> `Label (sfprintf "%s%a" prefix Ctypes.pp_int i)
-  | Float f -> `Label (sfprintf "%s%a" prefix Ctypes.pp_float f)
-  | Pointer r -> dotpointed ~label:(prefix ^ "ptr") r
-
-let dotrange ?(prefix="") rg : Dotgraph.record =
-  let open Layout in
-  let pp_dim fmt = function
-    | Raw _ -> Format.pp_print_string fmt "raw"
-    | Dim(s,ds) -> Format.fprintf fmt "%d%a" s Matrix.pretty ds
-  in
-  let label = sfprintf "%d..%d: %s%a"
-      rg.ofs (rg.ofs + rg.len - 1)
-      prefix pp_dim rg.dim in
-  `Port("",["",[`Dotted],R.get rg.reg],label)
-
-let dotcluster cluster : Dotgraph.record =
-  let open Layout in
-  match cluster with
-  | Empty -> `Label "-"
-  | Garbled -> `Label "Garbled"
-  | Chunk v -> dotvalue v
-  | Layout { sizeof ; layout } ->
-    let label = Printf.sprintf "sizeof:%d" sizeof in
-    `Hbox (`Label label :: List.map dotrange layout)
-
-let dotchunk mem : Dotgraph.record =
-  let open Layout in
-  match mem with
-  | Mraw(_,None) -> `Label "Raw"
-  | Mraw(_,Some r) -> dotpointed ~label:"Raw" r
-  | Mref r -> dotpointed ~label:"Ref" r
-  | Mmem(rt,v) ->
-    let prefix = if Layout.Root.indexed rt then "Mem " else "Var " in
-    dotvalue ~prefix v
-  | Mcomp(_,ovl) ->
-    let range rg = dotrange
-        ~prefix:(if Overlay.once rg.reg ovl then "D" else "C") rg in
-    `Hbox (List.map range ovl)
-
-let dotregion dot map region node =
-  begin
-    let is_read = Region.is_read region in
-    let is_written = Region.is_written region in
-    let is_aliased = Region.is_aliased region in
-    let is_accessed = is_read || is_written || is_aliased in
-    let has_deref = Wp.has_dkey deref_key && Region.has_deref region in
-    let has_roots = Wp.has_dkey roots_key && Region.has_roots map region in
-    let has_index_infos = has_deref || has_roots in
-    let has_side_cluster =
-      is_accessed ||
-      has_index_infos ||
-      Region.has_names region ||
-      Wp.has_dkey offset_key ||
-      Wp.has_dkey rid_key ||
-      not (Wp.has_dkey cluster_key || Wp.has_dkey chunk_key) ||
-      not (Wp.Region_fixpoint.get ())
-    in
-    if has_side_cluster then
-      begin
-        let attr = G.decorate [ `Oval ] [
-            is_read , attr_read ;
-            Region.has_pointed region , [ `Label "D" ] ;
-            is_written , attr_write ;
-            Region.is_shifted region , attr_shift ;
-            is_aliased , attr_alias ;
-            Region.get_alias map region != region , attr_merge ;
-            Region.is_garbled region , attr_merge ;
-          ] in
-        G.node dot node attr ;
-      end ;
-    if Wp.has_dkey offset_key then
-      Region.iter_offset map
-        (fun offset target ->
-           let label = Pretty_utils.to_string Layout.Offset.pretty offset in
-           let delta = G.inode dot (`Label label :: attr_offset) in
-           G.link dot [node;delta;R.get target] [`Dotted]
-        ) region ;
-    if Wp.has_dkey offset_key then
-      Option.iter
-        (fun target ->
-           let label = if Region.is_shifted target then "[..]" else "*" in
-           let deref = G.inode dot (`Label label :: attr_offset) in
-           G.link dot [node;deref;R.get target] attr_pointed
-        ) (Region.get_pointed map region) ;
-    if has_index_infos then
-      begin
-        let derefs = ref [] in
-        let label s = derefs := s :: !derefs in
-        if has_roots then
-          label @@ sfprintf "roots:%a"
-            Layout.Root.pretty (Region.get_roots map region) ;
-        if has_deref then
-          Region.iter_deref
-            (fun deref ->
-               label @@ Pretty_utils.to_string Layout.Deref.pretty deref
-            ) region ;
-        if !derefs <> [] then
-          begin
-            let label = String.concat "\n" (List.rev !derefs) in
-            let delta = G.inode dot (`Label label :: attr_delta) in
-            G.rank dot [node;delta] ;
-            G.edge dot delta node attr_deref
-          end
-      end ;
-    if Wp.has_dkey cluster_key then
-      begin
-        let cluster = Region.cluster map region in
-        if not (has_side_cluster && Layout.Cluster.is_empty cluster) then
-          let record = dotcluster cluster in
-          let attr = if Region.is_garbled region then attr_garbled else [] in
-          if has_side_cluster then
-            let delta = G.irecord dot ~attr record in
-            G.edge dot node (G.port delta "w") attr_deref
-          else
-            G.record dot node ~attr record
-      end ;
-    if Wp.has_dkey chunk_key then
-      begin
-        let chunk = Region.chunk map region in
-        let record = dotchunk chunk in
-        let attr = if Region.is_garbled region then attr_garbled else [] in
-        if has_side_cluster then
-          let delta = G.irecord dot ~attr record in
-          G.edge dot node (G.port delta "w") attr_deref
-        else
-          G.record dot node ~attr record
-      end ;
-    if Wp.has_dkey froms_key then
-      begin
-        let open Layout in
-        List.iter
-          (function
-            | Fvar _ -> ()
-            | Farray r ->
-              G.edge dot (R.get r) node (`Label "[]"::attr_froms)
-            | Fderef r ->
-              G.edge dot (R.get r) node (`Label "*"::attr_froms)
-            | Findex r ->
-              G.edge dot (R.get r) node (`Label "+(..)"::attr_froms)
-            | Ffield(r,ofs) ->
-              let label = Printf.sprintf "+%d" ofs in
-              G.edge dot (R.get r) node (`Label label::attr_froms)
-          ) (Region.get_froms map region)
-      end ;
-    Region.iter_copies map
-      (fun target ->
-         G.edge dot node (R.get target) [`Color "green"]
-      ) region ;
-    Option.iter
-      (fun target ->
-         G.edge dot node (R.get target) [`Color "red"]
-      ) (Region.get_merged map region) ;
-  end
-
-let dotvar dot x r =
-  begin
-    let open Cil_types in
-    let xnode = G.inode dot ~prefix:"V" (`Label x.vname :: attr_var) in
-    G.edge dot (G.port xnode "e") (R.get r) [] ;
-  end
-
-let dotlabel dot a r =
-  begin
-    let anode = G.inode dot ~prefix:"R" (`Label a :: attr_region) in
-    let rnode = R.get r in
-    G.rank dot [ anode ; rnode ] ;
-    G.edge dot anode rnode []
-  end
-
-let dotrid dot r =
-  dotlabel dot (Pretty_utils.to_string Region.R.pretty r) r
-
-let dotstr dot r cst =
-  dotlabel dot (String.escaped cst) r
-
-let dotgraph dot map =
-  begin
-    G.node_default dot node_default ;
-    G.edge_default dot edge_default ;
-    R.clear () ;
-    R.define dot (dotregion dot map) ;
-    Region.iter_vars map (dotvar dot) ;
-    Region.iter_strings map (dotstr dot) ;
-    G.run dot ;
-    if Wp.has_dkey rid_key then Region.iter map (dotrid dot) ;
-    Region.iter_names map (dotlabel dot) ;
-    if Region.has_return map then
-      dotlabel dot "\\result" (Region.of_return map) ;
-    Region.iter_fusion map (fun i r ->
-        let rid = Region.id r in
-        if i <> rid then
-          dotlabel dot (Printf.sprintf "Fusion R%03d" i) r
-        else
-          dotlabel dot "Fusion (Self)" r
-      ) ;
-    G.run dot ;
-  end
-
-let dump_in_file ~file name map =
-  if Wp.has_dkey dot_key || Wp.has_dkey pdf_key then
-    begin
-      let file = Pretty_utils.to_string Datatype.Filepath.pretty file in
-      let dot = Dotgraph.open_dot ~attr:[`LR] ~name ~file () in
-      dotgraph dot map ;
-      Dotgraph.close dot ;
-      let outcome =
-        if Wp.has_dkey pdf_key
-        then Dotgraph.layout dot
-        else file in
-      Wp.result "Region Graph: %s" outcome
-    end
-
-let dump_in_dir ~dir name map =
-  let file = Datatype.Filepath.concat dir (name ^ ".dot") in
-  dump_in_file ~file name map
diff --git a/src/plugins/wp/RegionDump.mli b/src/plugins/wp/RegionDump.mli
deleted file mode 100644
index ea54c4d40745762ccfb7421b16683695bdacefe8..0000000000000000000000000000000000000000
--- a/src/plugins/wp/RegionDump.mli
+++ /dev/null
@@ -1,28 +0,0 @@
-(**************************************************************************)
-(*                                                                        *)
-(*  This file is part of WP plug-in of Frama-C.                           *)
-(*                                                                        *)
-(*  Copyright (C) 2007-2024                                               *)
-(*    CEA (Commissariat a l'energie atomique et aux energies              *)
-(*         alternatives)                                                  *)
-(*                                                                        *)
-(*  you can redistribute it and/or modify it under the terms of the GNU   *)
-(*  Lesser General Public License as published by the Free Software       *)
-(*  Foundation, version 2.1.                                              *)
-(*                                                                        *)
-(*  It is distributed in the hope that it will be useful,                 *)
-(*  but WITHOUT ANY WARRANTY; without even the implied warranty of        *)
-(*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *)
-(*  GNU Lesser General Public License for more details.                   *)
-(*                                                                        *)
-(*  See the GNU Lesser General Public License version 2.1                 *)
-(*  for more details (enclosed in the file licenses/LGPLv2.1).            *)
-(*                                                                        *)
-(**************************************************************************)
-
-(* Dump region graphs to dir according to -wp options.
-   By default, does nothing. *)
-
-val dump_in_dir : dir:Datatype.Filepath.t -> string -> Region.map -> unit
-
-val dump_in_file : file:Datatype.Filepath.t -> string -> Region.map -> unit
diff --git a/src/plugins/wp/gui/GuiPanel.ml b/src/plugins/wp/gui/GuiPanel.ml
index 9370b0fef04609219dd0251fab6b1cbb71f62264..8292028a5c6851fa95f60b7e7fe612d0e641d7c5 100644
--- a/src/plugins/wp/gui/GuiPanel.ml
+++ b/src/plugins/wp/gui/GuiPanel.ml
@@ -99,7 +99,7 @@ let run_and_prove
 (* ---  Model Panel                                                     --- *)
 (* ------------------------------------------------------------------------ *)
 
-type memory = TREE | HOARE | TYPED | REGION | EVA
+type memory = TREE | HOARE | TYPED | EVA
 
 class model_selector (main : Design.main_window_extension_points) =
   let dialog = new Wpane.dialog
@@ -145,7 +145,6 @@ class model_selector (main : Design.main_window_extension_points) =
       begin
         (match s.mheap with
          | ZeroAlias -> memory#set TREE
-         | Region -> memory#set REGION
          | Hoare -> memory#set HOARE
          | Typed m -> memory#set TYPED ; c_casts#set (m = MemTyped.Unsafe)
          | Eva -> memory#set EVA
@@ -159,7 +158,6 @@ class model_selector (main : Design.main_window_extension_points) =
     method get : setup =
       let m = match memory#get with
         | TREE -> ZeroAlias
-        | REGION -> Region
         | HOARE -> Hoare
         | TYPED -> Typed
                      (if c_casts#get then MemTyped.Unsafe else MemTyped.Fits)
diff --git a/src/plugins/wp/tests/ptests_config b/src/plugins/wp/tests/ptests_config
index 5221e8c0f16237b724d4e1a878776e1b22e8ac88..d71d6024da0cf68a48b803c1cebd369561434d5f 100644
--- a/src/plugins/wp/tests/ptests_config
+++ b/src/plugins/wp/tests/ptests_config
@@ -1,8 +1,8 @@
 DEFAULT_SUITES= wp wp_acsl wp_plugin wp_ce wp_bts wp_store wp_hoare
-DEFAULT_SUITES= wp_typed wp_usage wp_gallery wp_manual wp_region wp_tip
+DEFAULT_SUITES= wp_typed wp_usage wp_gallery wp_manual wp_tip
 
 qualif_SUITES= wp wp_acsl wp_plugin wp_bts wp_store wp_hoare
-qualif_SUITES= wp_typed wp_usage wp_gallery wp_manual wp_region wp_tip
+qualif_SUITES= wp_typed wp_usage wp_gallery wp_manual wp_tip
 qualif_SUITES= why3
 
 ce_SUITES= wp_ce
diff --git a/src/plugins/wp/tests/wp_bts/bts_2110.i b/src/plugins/wp/tests/wp_bts/bts_2110.i
index 2b30f0a37265c6096a082ec72db3c61e46fa31a7..30ca648fd0547ee1a6c6b5da2f5e9974e8078c7c 100644
--- a/src/plugins/wp/tests/wp_bts/bts_2110.i
+++ b/src/plugins/wp/tests/wp_bts/bts_2110.i
@@ -1,5 +1,5 @@
 /* run.config
-   CMD: @frama-c@ -wp -wp-msg-key shell,cluster,print-generated -wp-prover why3 -wp-gen -wp-share @PTEST_SHARE_DIR@ -wp-warn-key "pedantic-assigns=inactive"
+   CMD: @frama-c@ -wp -wp-msg-key shell,print-generated -wp-prover why3 -wp-gen -wp-share @PTEST_SHARE_DIR@ -wp-warn-key "pedantic-assigns=inactive"
    OPT:
 */
 
diff --git a/src/plugins/wp/tests/wp_plugin/model.i b/src/plugins/wp/tests/wp_plugin/model.i
index 07e59f63a7ddb17bc624dde14525f1dd14bcdee8..4475ecd7fd97e7a12c736b542050f49b1187f32f 100644
--- a/src/plugins/wp/tests/wp_plugin/model.i
+++ b/src/plugins/wp/tests/wp_plugin/model.i
@@ -1,5 +1,5 @@
 /* run.config
-   CMD: @frama-c@ -wp-share @PTEST_SHARE_DIR@ -wp-msg-key cluster,shell,print-generated -wp-prover why3 -wp-warn-key "pedantic-assigns=inactive"
+   CMD: @frama-c@ -wp-share @PTEST_SHARE_DIR@ -wp-msg-key shell,print-generated -wp-prover why3 -wp-warn-key "pedantic-assigns=inactive"
    OPT: -wp-model Typed -wp -wp-gen -wp-print -then -wp-model Typed+ref -wp -wp-gen -wp-print
 */
 
diff --git a/src/plugins/wp/tests/wp_region/README.md b/src/plugins/wp/tests/wp_region/README.md
deleted file mode 100644
index 54aa9413764131ff977dc1b9539a6f01c5c599fa..0000000000000000000000000000000000000000
--- a/src/plugins/wp/tests/wp_region/README.md
+++ /dev/null
@@ -1,13 +0,0 @@
-# Testing WP/Region
-
-Use `./fc.sh -h|--help` to visualize the output before commiting changes.
-
-# Recommanded workflow
-
-With default configuration, put a single 'job' function in each test file.
-Then:
-
-1. Run `./fc.sh test.i -r` to visualize the region graph and check the proofs
-2. Run `./fc.sh test.i -u` to update the region-graph oracle (creates also the oracle directories)
-3. Run `./fc.sh test.i -t` to check test is OK (eventually use `-t -show` or `-t -update`)
-4. Run `./fc.sh test.i -q` to check qualif test is OK
diff --git a/src/plugins/wp/tests/wp_region/annot.i b/src/plugins/wp/tests/wp_region/annot.i
deleted file mode 100644
index 2312dafd8a402817ff5cc572dee05384826bd01c..0000000000000000000000000000000000000000
--- a/src/plugins/wp/tests/wp_region/annot.i
+++ /dev/null
@@ -1,66 +0,0 @@
-/* run.config
-   PLUGIN: wp
-   OPT: -region-annot -print -generated-spec-mode skip
-   EXECNOW: BIN ocode_@PTEST_NAME@_1.i @frama-c@ %{dep:@PTEST_DIR@/@PTEST_NAME@.i}            -region-annot -print -ocode @PTEST_RESULT@/ocode_@PTEST_NAME@_1.i > @DEV_NULL@ 2> @DEV_NULL@
-   EXECNOW: BIN ocode_@PTEST_NAME@_2.i @frama-c@ %{dep:@PTEST_RESULT@/ocode_@PTEST_NAME@_1.i} -region-annot -print -ocode @PTEST_RESULT@/ocode_@PTEST_NAME@_2.i > @DEV_NULL@ 2> @DEV_NULL@
-   EXECNOW: LOG  diff_@PTEST_NAME@.txt diff %{dep:@PTEST_RESULT@/ocode_@PTEST_NAME@_1.i} %{dep:@PTEST_RESULT@/ocode_@PTEST_NAME@_2.i} &> @PTEST_RESULT@/diff_@PTEST_NAME@.txt
-COMMENT: The file diff_@PTEST_NAME@.txt must be empty.
-COMMENT: So, that file has not to be present into the oracle directory since absent files are considered such as empty files.
- */
-
-/* run.config_qualif
-   DONTRUN:
-*/
-
-// This test only checks that annotation are correctly parsed & printed
-
-typedef struct N { double v ; int s ; } *SN ;
-typedef struct L { int v ; int s ; } *SL ;
-
-typedef struct Block {
-  SN prm ;
-  SN inp1 ;
-  SN inp2 ;
-  SN inp3 ;
-  SN out1 ;
-  SN out2 ;
-  SN out3 ;
-  SL idx1 ;
-  SL idx2 ;
-  SL idx3 ;
-  SN sum ;
-} FB ;
-
-//@ \wp::wpregion *fb ;
-void fb_ADD(FB *fb)
-{
-  fb->out1->v = fb->out1->v + fb->out2->v ;
-  fb->out1->s = fb->out1->s | fb->out2->s ;
-}
-
-/*@
-  \wp::wpregion IN:   (fb->inp1 .. fb->inp3), \pattern{PMEM} ;
-  \wp::wpregion OUT:  (fb->out1 .. fb->out3), \pattern{PVECTOR} ;
-  \wp::wpregion IDX:  (fb->idx1 .. fb->idx3), \pattern{PVECTOR} ;
- */
-void fb_SORT(FB *fb)
-{
-  SN *inp = &(fb->inp1) ;
-  SN *out = &(fb->out1) ;
-  SL *idx = &(fb->idx1) ;
-
-  for (int i = 0; i < 3; i++) {
-    out[i]->v = inp[i]->v + fb->prm->v ;
-    out[i]->s = 0 ;
-    idx[i]->v = inp[i]->s ;
-    idx[i]->s = 0 ;
-  }
-
-  fb->sum->v =
-    fb->out1->v +
-    fb->out2->v +
-    fb->out3->v ;
-
-  fb->sum->s = 0 ;
-
-}
diff --git a/src/plugins/wp/tests/wp_region/annot/a.i b/src/plugins/wp/tests/wp_region/annot/a.i
deleted file mode 100644
index fb6d84c2cb8cf463ae9e13dd1b6a159325899843..0000000000000000000000000000000000000000
--- a/src/plugins/wp/tests/wp_region/annot/a.i
+++ /dev/null
@@ -1,58 +0,0 @@
-/* Generated by Frama-C */
-struct N {
-   double v ;
-   int s ;
-};
-typedef struct N *SN;
-struct L {
-   int v ;
-   int s ;
-};
-typedef struct L *SL;
-struct Block {
-   SN prm ;
-   SN inp1 ;
-   SN inp2 ;
-   SN inp3 ;
-   SN out1 ;
-   SN out2 ;
-   SN out3 ;
-   SL idx1 ;
-   SL idx2 ;
-   SL idx3 ;
-   SN sum ;
-};
-typedef struct Block FB;
-/*@ terminates \true;
-    \wp::wpregion *fb; */
-void fb_ADD(FB *fb)
-{
-  (fb->out1)->v += (fb->out2)->v;
-  (fb->out1)->s |= (fb->out2)->s;
-  return;
-}
-
-/*@ terminates \true;
-    \wp::wpregion IN: \pattern{PMEM}, (fb->inp1..fb->inp3);
-    \wp::wpregion OUT: \pattern{PVECTOR}, (fb->out1..fb->out3);
-    \wp::wpregion IDX: \pattern{PVECTOR}, (fb->idx1..fb->idx3);
- */
-void fb_SORT(FB *fb)
-{
-  SN *inp = & fb->inp1;
-  SN *out = & fb->out1;
-  SL *idx = & fb->idx1;
-  {
-    int i = 0;
-    while (i < 3) {
-      (*(out + i))->v = (*(inp + i))->v + (fb->prm)->v;
-      (*(out + i))->s = 0;
-      (*(idx + i))->v = (*(inp + i))->s;
-      (*(idx + i))->s = 0;
-      i ++;
-    }
-  }
-  (fb->sum)->v = ((fb->out1)->v + (fb->out2)->v) + (fb->out3)->v;
-  (fb->sum)->s = 0;
-  return;
-}
diff --git a/src/plugins/wp/tests/wp_region/annot/b.i b/src/plugins/wp/tests/wp_region/annot/b.i
deleted file mode 100644
index fb6d84c2cb8cf463ae9e13dd1b6a159325899843..0000000000000000000000000000000000000000
--- a/src/plugins/wp/tests/wp_region/annot/b.i
+++ /dev/null
@@ -1,58 +0,0 @@
-/* Generated by Frama-C */
-struct N {
-   double v ;
-   int s ;
-};
-typedef struct N *SN;
-struct L {
-   int v ;
-   int s ;
-};
-typedef struct L *SL;
-struct Block {
-   SN prm ;
-   SN inp1 ;
-   SN inp2 ;
-   SN inp3 ;
-   SN out1 ;
-   SN out2 ;
-   SN out3 ;
-   SL idx1 ;
-   SL idx2 ;
-   SL idx3 ;
-   SN sum ;
-};
-typedef struct Block FB;
-/*@ terminates \true;
-    \wp::wpregion *fb; */
-void fb_ADD(FB *fb)
-{
-  (fb->out1)->v += (fb->out2)->v;
-  (fb->out1)->s |= (fb->out2)->s;
-  return;
-}
-
-/*@ terminates \true;
-    \wp::wpregion IN: \pattern{PMEM}, (fb->inp1..fb->inp3);
-    \wp::wpregion OUT: \pattern{PVECTOR}, (fb->out1..fb->out3);
-    \wp::wpregion IDX: \pattern{PVECTOR}, (fb->idx1..fb->idx3);
- */
-void fb_SORT(FB *fb)
-{
-  SN *inp = & fb->inp1;
-  SN *out = & fb->out1;
-  SL *idx = & fb->idx1;
-  {
-    int i = 0;
-    while (i < 3) {
-      (*(out + i))->v = (*(inp + i))->v + (fb->prm)->v;
-      (*(out + i))->s = 0;
-      (*(idx + i))->v = (*(inp + i))->s;
-      (*(idx + i))->s = 0;
-      i ++;
-    }
-  }
-  (fb->sum)->v = ((fb->out1)->v + (fb->out2)->v) + (fb->out3)->v;
-  (fb->sum)->s = 0;
-  return;
-}
diff --git a/src/plugins/wp/tests/wp_region/array1.i b/src/plugins/wp/tests/wp_region/array1.i
deleted file mode 100644
index bf3da7a503c8df46be495fd87a2d73c2c600b6c6..0000000000000000000000000000000000000000
--- a/src/plugins/wp/tests/wp_region/array1.i
+++ /dev/null
@@ -1,8 +0,0 @@
-//@ \wp::wpregion *p, *q ;
-int job( int n, int * p , int * q )
-{
-  int s = 0 ;
-  for (int k = 0; k < n; k++)
-    s += p[k] * q[k] ;
-  return s ;
-}
diff --git a/src/plugins/wp/tests/wp_region/array2.i b/src/plugins/wp/tests/wp_region/array2.i
deleted file mode 100644
index be59f8c030d72f6deb45f68ddcb7e2102e840a61..0000000000000000000000000000000000000000
--- a/src/plugins/wp/tests/wp_region/array2.i
+++ /dev/null
@@ -1,8 +0,0 @@
-//@ \wp::wpregion *p; \wp::wpregion *q ;
-int job( int n, int * p , int * q )
-{
-  int s = 0 ;
-  for (int k = 0; k < n; k++)
-    s += p[k] * q[k] ;
-  return s ;
-}
diff --git a/src/plugins/wp/tests/wp_region/array3.i b/src/plugins/wp/tests/wp_region/array3.i
deleted file mode 100644
index 5035254bf8aaa6b247354033761c93d685946871..0000000000000000000000000000000000000000
--- a/src/plugins/wp/tests/wp_region/array3.i
+++ /dev/null
@@ -1,6 +0,0 @@
-int job( int * p )
-{
-  int s = 0 ;
-  while (!*p) { s+=*p ; p++; }
-  return s;
-}
diff --git a/src/plugins/wp/tests/wp_region/array4.i b/src/plugins/wp/tests/wp_region/array4.i
deleted file mode 100644
index bc3b3b68375becdfef9d8e8bbffcc76fe9d9dc30..0000000000000000000000000000000000000000
--- a/src/plugins/wp/tests/wp_region/array4.i
+++ /dev/null
@@ -1,7 +0,0 @@
-int job( int * p )
-{
-  int s = 0 ;
-  int *q = p ;
-  while (!*q) { s+=*q ; q++; }
-  return s;
-}
diff --git a/src/plugins/wp/tests/wp_region/array5.i b/src/plugins/wp/tests/wp_region/array5.i
deleted file mode 100644
index 9fd9f2aa9f6e13083b6fb42918c613bec93e32c1..0000000000000000000000000000000000000000
--- a/src/plugins/wp/tests/wp_region/array5.i
+++ /dev/null
@@ -1,7 +0,0 @@
-int job( int * p , int * q )
-{
-  int s = 0 ;
-  q = p ;
-  while (!*q) { s+=*p ; p[s]; q++; }
-  return s;
-}
diff --git a/src/plugins/wp/tests/wp_region/array6.i b/src/plugins/wp/tests/wp_region/array6.i
deleted file mode 100644
index 8136a3c37b0541a2fce551b0c69651d1214258d0..0000000000000000000000000000000000000000
--- a/src/plugins/wp/tests/wp_region/array6.i
+++ /dev/null
@@ -1,9 +0,0 @@
-int A[10] ;
-int B[20] ;
-
-int job(int k)
-{
-  int s = 0 ;
-  while (!A[k]) { s += A[k]; k++; }
-  return s ;
-}
diff --git a/src/plugins/wp/tests/wp_region/array7.i b/src/plugins/wp/tests/wp_region/array7.i
deleted file mode 100644
index 8178ba26808b9319194fdf1966fd1a6b1ce531cd..0000000000000000000000000000000000000000
--- a/src/plugins/wp/tests/wp_region/array7.i
+++ /dev/null
@@ -1,10 +0,0 @@
-int A[10] ;
-int B[20] ;
-
-int job(int k)
-{
-  int s = 0 ;
-  int * p = A+k ;
-  while (!*p) { s += *p; p++; }
-  return s ;
-}
diff --git a/src/plugins/wp/tests/wp_region/array8.i b/src/plugins/wp/tests/wp_region/array8.i
deleted file mode 100644
index 2ded4d8661dcd95ee85c15161272ee6de7fc3831..0000000000000000000000000000000000000000
--- a/src/plugins/wp/tests/wp_region/array8.i
+++ /dev/null
@@ -1,10 +0,0 @@
-int A[10] ;
-int B[20] ;
-
-int job(int c,int k)
-{
-  int s = 0 ;
-  int * p = (c?A:B)+k ;
-  while (!*p) { s += *p; p++; }
-  return s ;
-}
diff --git a/src/plugins/wp/tests/wp_region/fb_ADD.i b/src/plugins/wp/tests/wp_region/fb_ADD.i
deleted file mode 100644
index dc378f6d5e6eab79016343050256ad68545f2b7e..0000000000000000000000000000000000000000
--- a/src/plugins/wp/tests/wp_region/fb_ADD.i
+++ /dev/null
@@ -1,25 +0,0 @@
-typedef struct N { double v ; int s ; } *SN ;
-typedef struct L { int v ; int s ; } *SL ;
-
-typedef struct Block {
-  SN prm ;
-  SN inp1 ;
-  SN inp2 ;
-  SN inp3 ;
-  SN out1 ;
-  SN out2 ;
-  SN out3 ;
-  SL idx1 ;
-  SL idx2 ;
-  SL idx3 ;
-  SN sum ;
-} FB ;
-
-/*@
-  \wp::wpregion A: fb ;
-*/
-void job(FB *fb)
-{
-  fb->out1->v = fb->out1->v + fb->out2->v ;
-  fb->out1->s = fb->out1->s | fb->out2->s ;
-}
diff --git a/src/plugins/wp/tests/wp_region/fb_SORT.i b/src/plugins/wp/tests/wp_region/fb_SORT.i
deleted file mode 100644
index 72629334e8a760da79b4436a7880cd15e41da5aa..0000000000000000000000000000000000000000
--- a/src/plugins/wp/tests/wp_region/fb_SORT.i
+++ /dev/null
@@ -1,44 +0,0 @@
-typedef struct N { double v ; int s ; } *SN ;
-typedef struct L { int v ; int s ; } *SL ;
-
-typedef struct Block {
-  SN prm ;
-  SN inp1 ;
-  SN inp2 ;
-  SN inp3 ;
-  SN out1 ;
-  SN out2 ;
-  SN out3 ;
-  SL idx1 ;
-  SL idx2 ;
-  SL idx3 ;
-  SN sum ;
-} FB ;
-
-/*@
-  \wp::wpregion Shared: *(fb->inp1 .. fb->inp3);
-  \wp::wpregion IN:      (fb->inp1 .. fb->inp3);
-  \wp::wpregion OUT:     (fb->out1 .. fb->out3);
-  \wp::wpregion IDX:     (fb->idx1 .. fb->idx3);
- */
-void job(FB *fb)
-{
-  SN *inp = &(fb->inp1) ;
-  SN *out = &(fb->out1) ;
-  SL *idx = &(fb->idx1) ;
-
-  for (int i = 0; i < 3; i++) {
-    out[i]->v = inp[i]->v + fb->prm->v ;
-    out[i]->s = 0 ;
-    idx[i]->v = inp[i]->s ;
-    idx[i]->s = 0 ;
-  }
-
-  fb->sum->v =
-    fb->out1->v +
-    fb->out2->v +
-    fb->out3->v ;
-
-  fb->sum->s = 0 ;
-
-}
diff --git a/src/plugins/wp/tests/wp_region/fc.sh b/src/plugins/wp/tests/wp_region/fc.sh
deleted file mode 100755
index f070fd5bb55354fb5e143e54c8b4bdc752c274a1..0000000000000000000000000000000000000000
--- a/src/plugins/wp/tests/wp_region/fc.sh
+++ /dev/null
@@ -1,109 +0,0 @@
-# Visualize output of WP/Region tests
-
-OPT=
-CMD=fc
-TEST="<none>"
-NAME="none"
-OPEN="none"
-DEFAULT="-wp-msg-key dot,chunk,roots,garbled"
-
-if type open &> /dev/null ; then
-    OPEN=open
-elif type xpdf &> /dev/null ; then
-    OPEN=xpdf
-elif type evince &> /dev/null ; then
-    OPEN=evince
-fi
-
-while [ "$1" != "" ];
-do
-    case $1 in
-        "-h"|"--help")
-            echo "fc.sh [options...] <test.[ic]>" ;
-            echo "  -h,--help     help and exit" ;
-            echo "  -D,--delete   clean output directory and exit" ;
-            echo "  -g,--gui      run in Frama-C Gui" ;
-            echo "  -r,--region   visualize region graph" ;
-            echo "  -u,--update   commit region graph in oracle" ;
-            echo "  -t,--test     run ptests.opt on test file (or all files)" ;
-            echo "  -q,--qualif   run ptests.opt with test-config qualif" ;
-            echo "  --open <cmd>  opens pdf with '<cmd>'" ;
-            echo "  -k <keys>     set message keys" ;
-            echo "  *             any other Frama-C options" ;
-            exit 0 ;
-            ;;
-        *.i) TEST=${1}; NAME=${TEST/.i/} ;;
-        *.c) TEST=${1}; NAME=${TEST/.c/} ;;
-        "-D"|"--delete") CMD=delete ;;
-        "-u"|"--update") CMD=update ;;
-        "-t"|"--test") CMD=test ;;
-        "-q"|"--qualif") CMD=qualif ;;
-        "-g"|"--gui") CMD=gui ;;
-        "-r"|"--region") CMD=region ; OPT="${OPT} -wp-msg-key pdf" ;;
-        "--open") shift ; CMD=region ; OPEN=${1} ;;
-        "-k") shift ; CMD=region ; DEFAULT="" ; OPT="${OPT} -wp-msg-key $1" ;;
-        *)
-            OPT="${OPT} $1"
-            ;;
-    esac
-    shift
-done
-
-BIN=../../../../../bin
-WP="-wp-region -wp-model Region -wp-fct job -wp-out result/${NAME}"
-
-case $CMD in
-    "fc"|"region")
-        echo "Running frama-c $TEST"
-        $BIN/frama-c $WP $TEST $DEFAULT $OPT
-        PDF="./result/${NAME}/region/job.pdf"
-        if [ $CMD = region ] && [ -f $PDF ]
-        then
-            if [ $OPEN != none ] ; then
-                echo "Source File:"
-                cat $TEST
-                $OPEN $PDF
-            else
-                echo "No command found for opening $PDF"
-                echo "Use --open <cmd> option"
-            fi
-        fi
-        ;;
-    "gui")
-        echo "Running frama-c $TEST (Gui)"
-        $BIN/frama-c-gui $WP $TEST $OPT
-        ;;
-    "test")
-        if [ $TEST == "<none>" ]
-        then
-            echo "Testing directory..."
-            ( cd ../.. ; ../../../bin/ptests.opt tests/wp_region > /dev/null )
-            for test in *.i
-            do
-                name=${test/.i/}
-                oracle=oracle/$name/region/job.dot
-                result=result/$name/region/job.dot
-                if [ -f $oracle ] && !( diff -q $oracle $result > /dev/null )
-                then
-                    echo "Diff: ./fc.sh $test -r"
-                fi
-            done
-        else
-            echo "Testing $TEST$OPT"
-            ( cd ../.. ; ../../../bin/ptests.opt tests/wp_region/$TEST $OPT )
-        fi
-        ;;
-    "qualif")
-        echo "Testing $TEST -config qualif$OPT"
-        ( cd ../.. ; ../../../bin/ptests.opt tests/wp_region/$TEST -config qualif $OPT )
-        ;;
-    "update")
-        echo "Update './oracle/$NAME/region/job.dot"
-        mkdir -p ./oracle/$NAME/region
-        cp -f ./result/$NAME/region/job.dot ./oracle/$NAME/region/
-        ;;
-    "delete")
-        echo "Cleaning './result/$NAME'"
-        rm -fr result/$NAME/*
-        ;;
-esac
diff --git a/src/plugins/wp/tests/wp_region/garbled.i b/src/plugins/wp/tests/wp_region/garbled.i
deleted file mode 100644
index 6b703ba4245ba130e45827ac182b69f5dd03dfdd..0000000000000000000000000000000000000000
--- a/src/plugins/wp/tests/wp_region/garbled.i
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-float job(int *p,int *q)
-{
-  return *q + *(float*)p + *p ;
-}
diff --git a/src/plugins/wp/tests/wp_region/index.i b/src/plugins/wp/tests/wp_region/index.i
deleted file mode 100644
index 6151de509bc5b4fc3eb172d09db656921aae72fb..0000000000000000000000000000000000000000
--- a/src/plugins/wp/tests/wp_region/index.i
+++ /dev/null
@@ -1,6 +0,0 @@
-int A[3][4][5] ;
-
-int job(int i,int j,int k)
-{
-  return A[i][j][k];
-}
diff --git a/src/plugins/wp/tests/wp_region/matrix.i b/src/plugins/wp/tests/wp_region/matrix.i
deleted file mode 100644
index f5133222090c0c4e7e9bfc09ca31aa381523eb44..0000000000000000000000000000000000000000
--- a/src/plugins/wp/tests/wp_region/matrix.i
+++ /dev/null
@@ -1,8 +0,0 @@
-void job( int cols , int rows , int ** m , int * v , int * r )
-{
-  for (int i = 0; i < rows; i++) {
-    r[i] = 0 ;
-    for (int j = 0; j < cols; j++)
-      r[i] += m[i][j] * v[j] ;
-  }
-}
diff --git a/src/plugins/wp/tests/wp_region/oracle/annot.res.oracle b/src/plugins/wp/tests/wp_region/oracle/annot.res.oracle
deleted file mode 100644
index 11a2a15408554226d844aa54f49e22a8df444ae6..0000000000000000000000000000000000000000
--- a/src/plugins/wp/tests/wp_region/oracle/annot.res.oracle
+++ /dev/null
@@ -1,59 +0,0 @@
-[kernel] Parsing annot.i (no preprocessing)
-/* Generated by Frama-C */
-struct N {
-   double v ;
-   int s ;
-};
-typedef struct N *SN;
-struct L {
-   int v ;
-   int s ;
-};
-typedef struct L *SL;
-struct Block {
-   SN prm ;
-   SN inp1 ;
-   SN inp2 ;
-   SN inp3 ;
-   SN out1 ;
-   SN out2 ;
-   SN out3 ;
-   SL idx1 ;
-   SL idx2 ;
-   SL idx3 ;
-   SN sum ;
-};
-typedef struct Block FB;
-/*@ \wp::wpregion *fb; */
-void fb_ADD(FB *fb)
-{
-  (fb->out1)->v += (fb->out2)->v;
-  (fb->out1)->s |= (fb->out2)->s;
-  return;
-}
-
-/*@ \wp::wpregion IN: \pattern{PMEM}, (fb->inp1..fb->inp3);
-    \wp::wpregion OUT: \pattern{PVECTOR}, (fb->out1..fb->out3);
-    \wp::wpregion IDX: \pattern{PVECTOR}, (fb->idx1..fb->idx3);
- */
-void fb_SORT(FB *fb)
-{
-  SN *inp = & fb->inp1;
-  SN *out = & fb->out1;
-  SL *idx = & fb->idx1;
-  {
-    int i = 0;
-    while (i < 3) {
-      (*(out + i))->v = (*(inp + i))->v + (fb->prm)->v;
-      (*(out + i))->s = 0;
-      (*(idx + i))->v = (*(inp + i))->s;
-      (*(idx + i))->s = 0;
-      i ++;
-    }
-  }
-  (fb->sum)->v = ((fb->out1)->v + (fb->out2)->v) + (fb->out3)->v;
-  (fb->sum)->s = 0;
-  return;
-}
-
-
diff --git a/src/plugins/wp/tests/wp_region/oracle/array1.0.dot b/src/plugins/wp/tests/wp_region/oracle/array1.0.dot
deleted file mode 100644
index 8061a50b2de13b2a37de192630ce8e3dc7ca4ba7..0000000000000000000000000000000000000000
--- a/src/plugins/wp/tests/wp_region/oracle/array1.0.dot
+++ /dev/null
@@ -1,57 +0,0 @@
-digraph "job" {
-  rankdir="LR" ;
-  node [ fontname="monospace" ];
-  edge [ fontname="monospace" ];
-  V000 [ label="n", shape="cds", style="filled", fillcolor="yellow" ];
-  V000:e -> A000 ;
-  V001 [ label="p", shape="cds", style="filled", fillcolor="yellow" ];
-  V001:e -> A001 ;
-  V002 [ label="q", shape="cds", style="filled", fillcolor="yellow" ];
-  V002:e -> A002 ;
-  V003 [ label="s", shape="cds", style="filled", fillcolor="yellow" ];
-  V003:e -> A003 ;
-  V004 [ label="k", shape="cds", style="filled", fillcolor="yellow" ];
-  V004:e -> A004 ;
-  A000 [ label="R", shape="oval", fillcolor="green", style="filled" ];
-  _005 [ label="roots:&n", style="filled", color="lightblue", shape="box" ];
-  { rank=same; A000; _005; }
-  _005 -> A000 [ arrowhead="tee" ];
-  _006 [ shape="record", label="Var sint32" ];
-  A000 -> _006:w [ arrowhead="tee" ];
-  A001 [ label="D", shape="oval" ];
-  _007 [ label="roots:&p", style="filled", color="lightblue", shape="box" ];
-  { rank=same; A001; _007; }
-  _007 -> A001 [ arrowhead="tee" ];
-  _008 [ shape="record", label="<_p1> Ref" ];
-  _008:_p1 -> A005:w [ taillabel="[..]", labeldistance="1.7",
-    labelangle="+40", color="red"
-  ];
-  A001 -> _008:w [ arrowhead="tee" ];
-  A002 [ label="D", shape="oval" ];
-  _009 [ label="roots:&q", style="filled", color="lightblue", shape="box" ];
-  { rank=same; A002; _009; }
-  _009 -> A002 [ arrowhead="tee" ];
-  _010 [ shape="record", label="<_p1> Ref" ];
-  _010:_p1 -> A005:w [ taillabel="[..]", labeldistance="1.7",
-    labelangle="+40", color="red"
-  ];
-  A002 -> _010:w [ arrowhead="tee" ];
-  A003 [ label="RW", shape="oval", fillcolor="green", style="filled" ];
-  _011 [ shape="record", label="Var sint32" ];
-  A003 -> _011:w [ arrowhead="tee" ];
-  A004 [ label="RW", shape="oval", fillcolor="green", style="filled" ];
-  _012 [ shape="record", label="Var sint32" ];
-  A004 -> _012:w [ arrowhead="tee" ];
-  A005 [ label="R[]&", shape="oval", fillcolor="orange", style="filled" ];
-  _013 [ label="roots:*", style="filled", color="lightblue", shape="box" ];
-  { rank=same; A005; _013; }
-  _013 -> A005 [ arrowhead="tee" ];
-  _014 [ shape="record", label="Mem sint32" ];
-  A005 -> _014:w [ arrowhead="tee" ];
-  R015 [ label="\\result", shape="tab", style="filled", fillcolor="yellow" ];
-  { rank=same; R015; A006; }
-  R015 -> A006 ;
-  A006 [ label="W", shape="oval", fillcolor="green", style="filled" ];
-  _016 [ shape="record", label="Var sint32" ];
-  A006 -> _016:w [ arrowhead="tee" ];
-}
diff --git a/src/plugins/wp/tests/wp_region/oracle/array1.res.oracle b/src/plugins/wp/tests/wp_region/oracle/array1.res.oracle
deleted file mode 100644
index f594dcb8a6c44253248bd7915208a98c026474a0..0000000000000000000000000000000000000000
--- a/src/plugins/wp/tests/wp_region/oracle/array1.res.oracle
+++ /dev/null
@@ -1,4 +0,0 @@
-[kernel] Parsing array1.i (no preprocessing)
-[wp] Region Graph: array1.0.dot
-[wp] Running WP plugin...
-[wp] Warning: Missing RTE guards
diff --git a/src/plugins/wp/tests/wp_region/oracle/array2.0.dot b/src/plugins/wp/tests/wp_region/oracle/array2.0.dot
deleted file mode 100644
index 4e9b35936cb28e85a2e52c1329c3263720bd15f5..0000000000000000000000000000000000000000
--- a/src/plugins/wp/tests/wp_region/oracle/array2.0.dot
+++ /dev/null
@@ -1,63 +0,0 @@
-digraph "job" {
-  rankdir="LR" ;
-  node [ fontname="monospace" ];
-  edge [ fontname="monospace" ];
-  V000 [ label="n", shape="cds", style="filled", fillcolor="yellow" ];
-  V000:e -> A000 ;
-  V001 [ label="p", shape="cds", style="filled", fillcolor="yellow" ];
-  V001:e -> A001 ;
-  V002 [ label="q", shape="cds", style="filled", fillcolor="yellow" ];
-  V002:e -> A002 ;
-  V003 [ label="s", shape="cds", style="filled", fillcolor="yellow" ];
-  V003:e -> A003 ;
-  V004 [ label="k", shape="cds", style="filled", fillcolor="yellow" ];
-  V004:e -> A004 ;
-  A000 [ label="R", shape="oval", fillcolor="green", style="filled" ];
-  _005 [ label="roots:&n", style="filled", color="lightblue", shape="box" ];
-  { rank=same; A000; _005; }
-  _005 -> A000 [ arrowhead="tee" ];
-  _006 [ shape="record", label="Var sint32" ];
-  A000 -> _006:w [ arrowhead="tee" ];
-  A001 [ label="D", shape="oval" ];
-  _007 [ label="roots:&p", style="filled", color="lightblue", shape="box" ];
-  { rank=same; A001; _007; }
-  _007 -> A001 [ arrowhead="tee" ];
-  _008 [ shape="record", label="<_p1> Ref" ];
-  _008:_p1 -> A005:w [ taillabel="[..]", labeldistance="1.7",
-    labelangle="+40", color="red"
-  ];
-  A001 -> _008:w [ arrowhead="tee" ];
-  A002 [ label="D", shape="oval" ];
-  _009 [ label="roots:&q", style="filled", color="lightblue", shape="box" ];
-  { rank=same; A002; _009; }
-  _009 -> A002 [ arrowhead="tee" ];
-  _010 [ shape="record", label="<_p1> Ref" ];
-  _010:_p1 -> A006:w [ taillabel="[..]", labeldistance="1.7",
-    labelangle="+40", color="red"
-  ];
-  A002 -> _010:w [ arrowhead="tee" ];
-  A003 [ label="RW", shape="oval", fillcolor="green", style="filled" ];
-  _011 [ shape="record", label="Var sint32" ];
-  A003 -> _011:w [ arrowhead="tee" ];
-  A004 [ label="RW", shape="oval", fillcolor="green", style="filled" ];
-  _012 [ shape="record", label="Var sint32" ];
-  A004 -> _012:w [ arrowhead="tee" ];
-  A005 [ label="R[]", shape="oval", fillcolor="green", style="filled" ];
-  _013 [ label="roots:*", style="filled", color="lightblue", shape="box" ];
-  { rank=same; A005; _013; }
-  _013 -> A005 [ arrowhead="tee" ];
-  _014 [ shape="record", label="Mem sint32" ];
-  A005 -> _014:w [ arrowhead="tee" ];
-  A006 [ label="R[]", shape="oval", fillcolor="green", style="filled" ];
-  _015 [ label="roots:*", style="filled", color="lightblue", shape="box" ];
-  { rank=same; A006; _015; }
-  _015 -> A006 [ arrowhead="tee" ];
-  _016 [ shape="record", label="Mem sint32" ];
-  A006 -> _016:w [ arrowhead="tee" ];
-  R017 [ label="\\result", shape="tab", style="filled", fillcolor="yellow" ];
-  { rank=same; R017; A007; }
-  R017 -> A007 ;
-  A007 [ label="W", shape="oval", fillcolor="green", style="filled" ];
-  _018 [ shape="record", label="Var sint32" ];
-  A007 -> _018:w [ arrowhead="tee" ];
-}
diff --git a/src/plugins/wp/tests/wp_region/oracle/array2.res.oracle b/src/plugins/wp/tests/wp_region/oracle/array2.res.oracle
deleted file mode 100644
index 493acb0f32107b413f25d1e04f2ad9358d77e7fc..0000000000000000000000000000000000000000
--- a/src/plugins/wp/tests/wp_region/oracle/array2.res.oracle
+++ /dev/null
@@ -1,4 +0,0 @@
-[kernel] Parsing array2.i (no preprocessing)
-[wp] Region Graph: array2.0.dot
-[wp] Running WP plugin...
-[wp] Warning: Missing RTE guards
diff --git a/src/plugins/wp/tests/wp_region/oracle/array3.0.dot b/src/plugins/wp/tests/wp_region/oracle/array3.0.dot
deleted file mode 100644
index 02d81fff4e3f858e95add60a92a064b67aad324f..0000000000000000000000000000000000000000
--- a/src/plugins/wp/tests/wp_region/oracle/array3.0.dot
+++ /dev/null
@@ -1,33 +0,0 @@
-digraph "job" {
-  rankdir="LR" ;
-  node [ fontname="monospace" ];
-  edge [ fontname="monospace" ];
-  V000 [ label="p", shape="cds", style="filled", fillcolor="yellow" ];
-  V000:e -> A000 ;
-  V001 [ label="s", shape="cds", style="filled", fillcolor="yellow" ];
-  V001:e -> A001 ;
-  A000 [ label="DW", shape="oval", fillcolor="green", style="filled" ];
-  _002 [ label="roots:&p", style="filled", color="lightblue", shape="box" ];
-  { rank=same; A000; _002; }
-  _002 -> A000 [ arrowhead="tee" ];
-  _003 [ shape="record", label="<_p1> Var ptr" ];
-  _003:_p1 -> A002:w [ taillabel="[..]", labeldistance="1.7",
-    labelangle="+40", color="red"
-  ];
-  A000 -> _003:w [ arrowhead="tee" ];
-  A001 [ label="RW", shape="oval", fillcolor="green", style="filled" ];
-  _004 [ shape="record", label="Var sint32" ];
-  A001 -> _004:w [ arrowhead="tee" ];
-  A002 [ label="R[]&", shape="oval", fillcolor="orange", style="filled" ];
-  _005 [ label="roots:*", style="filled", color="lightblue", shape="box" ];
-  { rank=same; A002; _005; }
-  _005 -> A002 [ arrowhead="tee" ];
-  _006 [ shape="record", label="Mem sint32" ];
-  A002 -> _006:w [ arrowhead="tee" ];
-  R007 [ label="\\result", shape="tab", style="filled", fillcolor="yellow" ];
-  { rank=same; R007; A003; }
-  R007 -> A003 ;
-  A003 [ label="W", shape="oval", fillcolor="green", style="filled" ];
-  _008 [ shape="record", label="Var sint32" ];
-  A003 -> _008:w [ arrowhead="tee" ];
-}
diff --git a/src/plugins/wp/tests/wp_region/oracle/array3.res.oracle b/src/plugins/wp/tests/wp_region/oracle/array3.res.oracle
deleted file mode 100644
index ff1d6ff8c4774317d4469a6f9a31d287a36c489e..0000000000000000000000000000000000000000
--- a/src/plugins/wp/tests/wp_region/oracle/array3.res.oracle
+++ /dev/null
@@ -1,4 +0,0 @@
-[kernel] Parsing array3.i (no preprocessing)
-[wp] Region Graph: array3.0.dot
-[wp] Running WP plugin...
-[wp] Warning: Missing RTE guards
diff --git a/src/plugins/wp/tests/wp_region/oracle/array4.0.dot b/src/plugins/wp/tests/wp_region/oracle/array4.0.dot
deleted file mode 100644
index e885c887b4e821e26250b46ada6140d9bf34d4bb..0000000000000000000000000000000000000000
--- a/src/plugins/wp/tests/wp_region/oracle/array4.0.dot
+++ /dev/null
@@ -1,41 +0,0 @@
-digraph "job" {
-  rankdir="LR" ;
-  node [ fontname="monospace" ];
-  edge [ fontname="monospace" ];
-  V000 [ label="p", shape="cds", style="filled", fillcolor="yellow" ];
-  V000:e -> A000 ;
-  V001 [ label="s", shape="cds", style="filled", fillcolor="yellow" ];
-  V001:e -> A001 ;
-  V002 [ label="q", shape="cds", style="filled", fillcolor="yellow" ];
-  V002:e -> A002 ;
-  A000 [ label="D", shape="oval" ];
-  _003 [ label="roots:&p", style="filled", color="lightblue", shape="box" ];
-  { rank=same; A000; _003; }
-  _003 -> A000 [ arrowhead="tee" ];
-  _004 [ shape="record", label="<_p1> Ref" ];
-  _004:_p1 -> A003:w [ taillabel="[..]", labeldistance="1.7",
-    labelangle="+40", color="red"
-  ];
-  A000 -> _004:w [ arrowhead="tee" ];
-  A001 [ label="RW", shape="oval", fillcolor="green", style="filled" ];
-  _005 [ shape="record", label="Var sint32" ];
-  A001 -> _005:w [ arrowhead="tee" ];
-  A002 [ label="DW", shape="oval", fillcolor="green", style="filled" ];
-  _006 [ shape="record", label="<_p1> Var ptr" ];
-  _006:_p1 -> A003:w [ taillabel="[..]", labeldistance="1.7",
-    labelangle="+40", color="red"
-  ];
-  A002 -> _006:w [ arrowhead="tee" ];
-  A003 [ label="R[]&", shape="oval", fillcolor="orange", style="filled" ];
-  _007 [ label="roots:*", style="filled", color="lightblue", shape="box" ];
-  { rank=same; A003; _007; }
-  _007 -> A003 [ arrowhead="tee" ];
-  _008 [ shape="record", label="Mem sint32" ];
-  A003 -> _008:w [ arrowhead="tee" ];
-  R009 [ label="\\result", shape="tab", style="filled", fillcolor="yellow" ];
-  { rank=same; R009; A004; }
-  R009 -> A004 ;
-  A004 [ label="W", shape="oval", fillcolor="green", style="filled" ];
-  _010 [ shape="record", label="Var sint32" ];
-  A004 -> _010:w [ arrowhead="tee" ];
-}
diff --git a/src/plugins/wp/tests/wp_region/oracle/array4.res.oracle b/src/plugins/wp/tests/wp_region/oracle/array4.res.oracle
deleted file mode 100644
index a98da77e19cd9c9eb3fc069ff3394fd087dc3d1e..0000000000000000000000000000000000000000
--- a/src/plugins/wp/tests/wp_region/oracle/array4.res.oracle
+++ /dev/null
@@ -1,4 +0,0 @@
-[kernel] Parsing array4.i (no preprocessing)
-[wp] Region Graph: array4.0.dot
-[wp] Running WP plugin...
-[wp] Warning: Missing RTE guards
diff --git a/src/plugins/wp/tests/wp_region/oracle/array5.0.dot b/src/plugins/wp/tests/wp_region/oracle/array5.0.dot
deleted file mode 100644
index f017daa76b51774c4d4fa9f340f6e92c6b42d810..0000000000000000000000000000000000000000
--- a/src/plugins/wp/tests/wp_region/oracle/array5.0.dot
+++ /dev/null
@@ -1,49 +0,0 @@
-digraph "job" {
-  rankdir="LR" ;
-  node [ fontname="monospace" ];
-  edge [ fontname="monospace" ];
-  V000 [ label="p", shape="cds", style="filled", fillcolor="yellow" ];
-  V000:e -> A000 ;
-  V001 [ label="q", shape="cds", style="filled", fillcolor="yellow" ];
-  V001:e -> A001 ;
-  V002 [ label="s", shape="cds", style="filled", fillcolor="yellow" ];
-  V002:e -> A002 ;
-  V003 [ label="tmp", shape="cds", style="filled", fillcolor="yellow" ];
-  V003:e -> A003 ;
-  A000 [ label="D", shape="oval" ];
-  _004 [ label="roots:&p", style="filled", color="lightblue", shape="box" ];
-  { rank=same; A000; _004; }
-  _004 -> A000 [ arrowhead="tee" ];
-  _005 [ shape="record", label="<_p1> Ref" ];
-  _005:_p1 -> A004:w [ taillabel="[..]", labeldistance="1.7",
-    labelangle="+40", color="red"
-  ];
-  A000 -> _005:w [ arrowhead="tee" ];
-  A001 [ label="DW", shape="oval", fillcolor="green", style="filled" ];
-  _006 [ label="roots:&q", style="filled", color="lightblue", shape="box" ];
-  { rank=same; A001; _006; }
-  _006 -> A001 [ arrowhead="tee" ];
-  _007 [ shape="record", label="<_p1> Var ptr" ];
-  _007:_p1 -> A004:w [ taillabel="[..]", labeldistance="1.7",
-    labelangle="+40", color="red"
-  ];
-  A001 -> _007:w [ arrowhead="tee" ];
-  A002 [ label="RW", shape="oval", fillcolor="green", style="filled" ];
-  _008 [ shape="record", label="Var sint32" ];
-  A002 -> _008:w [ arrowhead="tee" ];
-  A003 [ label="W", shape="oval", fillcolor="green", style="filled" ];
-  _009 [ shape="record", label="Var sint32" ];
-  A003 -> _009:w [ arrowhead="tee" ];
-  A004 [ label="R[]&", shape="oval", fillcolor="orange", style="filled" ];
-  _010 [ label="roots:*", style="filled", color="lightblue", shape="box" ];
-  { rank=same; A004; _010; }
-  _010 -> A004 [ arrowhead="tee" ];
-  _011 [ shape="record", label="Mem sint32" ];
-  A004 -> _011:w [ arrowhead="tee" ];
-  R012 [ label="\\result", shape="tab", style="filled", fillcolor="yellow" ];
-  { rank=same; R012; A005; }
-  R012 -> A005 ;
-  A005 [ label="W", shape="oval", fillcolor="green", style="filled" ];
-  _013 [ shape="record", label="Var sint32" ];
-  A005 -> _013:w [ arrowhead="tee" ];
-}
diff --git a/src/plugins/wp/tests/wp_region/oracle/array5.res.oracle b/src/plugins/wp/tests/wp_region/oracle/array5.res.oracle
deleted file mode 100644
index 49fd11f80bd23706ec5b54ff355c2fcd1775e119..0000000000000000000000000000000000000000
--- a/src/plugins/wp/tests/wp_region/oracle/array5.res.oracle
+++ /dev/null
@@ -1,4 +0,0 @@
-[kernel] Parsing array5.i (no preprocessing)
-[wp] Region Graph: array5.0.dot
-[wp] Running WP plugin...
-[wp] Warning: Missing RTE guards
diff --git a/src/plugins/wp/tests/wp_region/oracle/array6.0.dot b/src/plugins/wp/tests/wp_region/oracle/array6.0.dot
deleted file mode 100644
index a55f8bb5e6ea2b6edd1878b2c9e765168e6aa0e7..0000000000000000000000000000000000000000
--- a/src/plugins/wp/tests/wp_region/oracle/array6.0.dot
+++ /dev/null
@@ -1,41 +0,0 @@
-digraph "job" {
-  rankdir="LR" ;
-  node [ fontname="monospace" ];
-  edge [ fontname="monospace" ];
-  V000 [ label="A", shape="cds", style="filled", fillcolor="yellow" ];
-  V000:e -> A000 ;
-  V001 [ label="k", shape="cds", style="filled", fillcolor="yellow" ];
-  V001:e -> A001 ;
-  V002 [ label="s", shape="cds", style="filled", fillcolor="yellow" ];
-  V002:e -> A002 ;
-  A000 [ label="", shape="oval" ];
-  _003 [ label="roots:&A", style="filled", color="lightblue", shape="box" ];
-  { rank=same; A000; _003; }
-  _003 -> A000 [ arrowhead="tee" ];
-  _004 [ shape="record", label="<_p1> 0..319: D32[10]" ];
-  _004:_p1 -> A003 [ style="dotted" ];
-  A000 -> _004:w [ arrowhead="tee" ];
-  A001 [ label="RW", shape="oval", fillcolor="green", style="filled" ];
-  _005 [ label="roots:&k", style="filled", color="lightblue", shape="box" ];
-  { rank=same; A001; _005; }
-  _005 -> A001 [ arrowhead="tee" ];
-  _006 [ shape="record", label="Var sint32" ];
-  A001 -> _006:w [ arrowhead="tee" ];
-  A002 [ label="RW", shape="oval", fillcolor="green", style="filled" ];
-  _007 [ shape="record", label="Var sint32" ];
-  A002 -> _007:w [ arrowhead="tee" ];
-  A003 [ label="R", shape="oval", fillcolor="green", style="filled" ];
-  _008 [ label="roots:&A+(..)", style="filled", color="lightblue",
-    shape="box"
-  ];
-  { rank=same; A003; _008; }
-  _008 -> A003 [ arrowhead="tee" ];
-  _009 [ shape="record", label="Mem sint32" ];
-  A003 -> _009:w [ arrowhead="tee" ];
-  R010 [ label="\\result", shape="tab", style="filled", fillcolor="yellow" ];
-  { rank=same; R010; A004; }
-  R010 -> A004 ;
-  A004 [ label="W", shape="oval", fillcolor="green", style="filled" ];
-  _011 [ shape="record", label="Var sint32" ];
-  A004 -> _011:w [ arrowhead="tee" ];
-}
diff --git a/src/plugins/wp/tests/wp_region/oracle/array6.res.oracle b/src/plugins/wp/tests/wp_region/oracle/array6.res.oracle
deleted file mode 100644
index 814e494ce84b36a29c84ac8253300456d1127889..0000000000000000000000000000000000000000
--- a/src/plugins/wp/tests/wp_region/oracle/array6.res.oracle
+++ /dev/null
@@ -1,4 +0,0 @@
-[kernel] Parsing array6.i (no preprocessing)
-[wp] Region Graph: array6.0.dot
-[wp] Running WP plugin...
-[wp] Warning: Missing RTE guards
diff --git a/src/plugins/wp/tests/wp_region/oracle/array7.0.dot b/src/plugins/wp/tests/wp_region/oracle/array7.0.dot
deleted file mode 100644
index e4b91ca2a02e735f39c91a531d400469093f4cd9..0000000000000000000000000000000000000000
--- a/src/plugins/wp/tests/wp_region/oracle/array7.0.dot
+++ /dev/null
@@ -1,47 +0,0 @@
-digraph "job" {
-  rankdir="LR" ;
-  node [ fontname="monospace" ];
-  edge [ fontname="monospace" ];
-  V000 [ label="A", shape="cds", style="filled", fillcolor="yellow" ];
-  V000:e -> A000 ;
-  V001 [ label="k", shape="cds", style="filled", fillcolor="yellow" ];
-  V001:e -> A001 ;
-  V002 [ label="s", shape="cds", style="filled", fillcolor="yellow" ];
-  V002:e -> A002 ;
-  V003 [ label="p", shape="cds", style="filled", fillcolor="yellow" ];
-  V003:e -> A003 ;
-  A000 [ label="", shape="oval" ];
-  _004 [ label="roots:&A", style="filled", color="lightblue", shape="box" ];
-  { rank=same; A000; _004; }
-  _004 -> A000 [ arrowhead="tee" ];
-  _005 [ shape="record", label="<_p1> 0..319: D32[10]" ];
-  _005:_p1 -> A004 [ style="dotted" ];
-  A000 -> _005:w [ arrowhead="tee" ];
-  A001 [ label="R", shape="oval", fillcolor="green", style="filled" ];
-  _006 [ label="roots:&k", style="filled", color="lightblue", shape="box" ];
-  { rank=same; A001; _006; }
-  _006 -> A001 [ arrowhead="tee" ];
-  _007 [ shape="record", label="Var sint32" ];
-  A001 -> _007:w [ arrowhead="tee" ];
-  A002 [ label="RW", shape="oval", fillcolor="green", style="filled" ];
-  _008 [ shape="record", label="Var sint32" ];
-  A002 -> _008:w [ arrowhead="tee" ];
-  A003 [ label="DW", shape="oval", fillcolor="green", style="filled" ];
-  _009 [ shape="record", label="<_p1> Var ptr" ];
-  _009:_p1 -> A004:w [ taillabel="[..]", labeldistance="1.7",
-    labelangle="+40", color="red"
-  ];
-  A003 -> _009:w [ arrowhead="tee" ];
-  A004 [ label="R[]&", shape="oval", fillcolor="orange", style="filled" ];
-  _010 [ label="roots:*", style="filled", color="lightblue", shape="box" ];
-  { rank=same; A004; _010; }
-  _010 -> A004 [ arrowhead="tee" ];
-  _011 [ shape="record", label="Mem sint32" ];
-  A004 -> _011:w [ arrowhead="tee" ];
-  R012 [ label="\\result", shape="tab", style="filled", fillcolor="yellow" ];
-  { rank=same; R012; A005; }
-  R012 -> A005 ;
-  A005 [ label="W", shape="oval", fillcolor="green", style="filled" ];
-  _013 [ shape="record", label="Var sint32" ];
-  A005 -> _013:w [ arrowhead="tee" ];
-}
diff --git a/src/plugins/wp/tests/wp_region/oracle/array7.res.oracle b/src/plugins/wp/tests/wp_region/oracle/array7.res.oracle
deleted file mode 100644
index 8bd34f4ece859e898fb01537baec9fe233b95f96..0000000000000000000000000000000000000000
--- a/src/plugins/wp/tests/wp_region/oracle/array7.res.oracle
+++ /dev/null
@@ -1,4 +0,0 @@
-[kernel] Parsing array7.i (no preprocessing)
-[wp] Region Graph: array7.0.dot
-[wp] Running WP plugin...
-[wp] Warning: Missing RTE guards
diff --git a/src/plugins/wp/tests/wp_region/oracle/array8.0.dot b/src/plugins/wp/tests/wp_region/oracle/array8.0.dot
deleted file mode 100644
index f062fa1492fad2f399e0458c6bb0dd25153c5714..0000000000000000000000000000000000000000
--- a/src/plugins/wp/tests/wp_region/oracle/array8.0.dot
+++ /dev/null
@@ -1,58 +0,0 @@
-digraph "job" {
-  rankdir="LR" ;
-  node [ fontname="monospace" ];
-  edge [ fontname="monospace" ];
-  V000 [ label="A", shape="cds", style="filled", fillcolor="yellow" ];
-  V000:e -> A000 ;
-  V001 [ label="B", shape="cds", style="filled", fillcolor="yellow" ];
-  V001:e -> A000 ;
-  V002 [ label="c", shape="cds", style="filled", fillcolor="yellow" ];
-  V002:e -> A001 ;
-  V003 [ label="k", shape="cds", style="filled", fillcolor="yellow" ];
-  V003:e -> A002 ;
-  V004 [ label="s", shape="cds", style="filled", fillcolor="yellow" ];
-  V004:e -> A003 ;
-  V005 [ label="p", shape="cds", style="filled", fillcolor="yellow" ];
-  V005:e -> A004 ;
-  V006 [ label="tmp", shape="cds", style="filled", fillcolor="yellow" ];
-  V006:e -> A005 ;
-  A000 [ label="R[]&", shape="oval", fillcolor="orange", style="filled" ];
-  _007 [ label="roots:*", style="filled", color="lightblue", shape="box" ];
-  { rank=same; A000; _007; }
-  _007 -> A000 [ arrowhead="tee" ];
-  _008 [ shape="record", label="Mem sint32" ];
-  A000 -> _008:w [ arrowhead="tee" ];
-  A001 [ label="R", shape="oval", fillcolor="green", style="filled" ];
-  _009 [ label="roots:&c", style="filled", color="lightblue", shape="box" ];
-  { rank=same; A001; _009; }
-  _009 -> A001 [ arrowhead="tee" ];
-  _010 [ shape="record", label="Var sint32" ];
-  A001 -> _010:w [ arrowhead="tee" ];
-  A002 [ label="R", shape="oval", fillcolor="green", style="filled" ];
-  _011 [ label="roots:&k", style="filled", color="lightblue", shape="box" ];
-  { rank=same; A002; _011; }
-  _011 -> A002 [ arrowhead="tee" ];
-  _012 [ shape="record", label="Var sint32" ];
-  A002 -> _012:w [ arrowhead="tee" ];
-  A003 [ label="RW", shape="oval", fillcolor="green", style="filled" ];
-  _013 [ shape="record", label="Var sint32" ];
-  A003 -> _013:w [ arrowhead="tee" ];
-  A004 [ label="DW", shape="oval", fillcolor="green", style="filled" ];
-  _014 [ shape="record", label="<_p1> Var ptr" ];
-  _014:_p1 -> A000:w [ taillabel="[..]", labeldistance="1.7",
-    labelangle="+40", color="red"
-  ];
-  A004 -> _014:w [ arrowhead="tee" ];
-  A005 [ label="DW", shape="oval", fillcolor="green", style="filled" ];
-  _015 [ shape="record", label="<_p1> Var ptr" ];
-  _015:_p1 -> A000:w [ taillabel="[..]", labeldistance="1.7",
-    labelangle="+40", color="red"
-  ];
-  A005 -> _015:w [ arrowhead="tee" ];
-  R016 [ label="\\result", shape="tab", style="filled", fillcolor="yellow" ];
-  { rank=same; R016; A006; }
-  R016 -> A006 ;
-  A006 [ label="W", shape="oval", fillcolor="green", style="filled" ];
-  _017 [ shape="record", label="Var sint32" ];
-  A006 -> _017:w [ arrowhead="tee" ];
-}
diff --git a/src/plugins/wp/tests/wp_region/oracle/array8.res.oracle b/src/plugins/wp/tests/wp_region/oracle/array8.res.oracle
deleted file mode 100644
index 045b9aa75392eb340e5721978817f7c314f76137..0000000000000000000000000000000000000000
--- a/src/plugins/wp/tests/wp_region/oracle/array8.res.oracle
+++ /dev/null
@@ -1,4 +0,0 @@
-[kernel] Parsing array8.i (no preprocessing)
-[wp] Region Graph: array8.0.dot
-[wp] Running WP plugin...
-[wp] Warning: Missing RTE guards
diff --git a/src/plugins/wp/tests/wp_region/oracle/diff_annot.txt b/src/plugins/wp/tests/wp_region/oracle/diff_annot.txt
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/src/plugins/wp/tests/wp_region/oracle/fb_ADD.0.dot b/src/plugins/wp/tests/wp_region/oracle/fb_ADD.0.dot
deleted file mode 100644
index c6648e78e8fafdbed4725292d27a9c09e54893e1..0000000000000000000000000000000000000000
--- a/src/plugins/wp/tests/wp_region/oracle/fb_ADD.0.dot
+++ /dev/null
@@ -1,95 +0,0 @@
-digraph "job" {
-  rankdir="LR" ;
-  node [ fontname="monospace" ];
-  edge [ fontname="monospace" ];
-  V000 [ label="fb", shape="cds", style="filled", fillcolor="yellow" ];
-  V000:e -> A000 ;
-  A000 [ label="D", shape="oval" ];
-  _001 [ label="roots:&fb", style="filled", color="lightblue", shape="box" ];
-  { rank=same; A000; _001; }
-  _001 -> A000 [ arrowhead="tee" ];
-  _002 [ shape="record", label="<_p1> Ref" ];
-  _002:_p1 -> A001:w [ taillabel="*", labelangle="+30", color="red" ];
-  A000 -> _002:w [ arrowhead="tee" ];
-  A001 [ label="", shape="oval" ];
-  _003 [ label="roots:&fb", style="filled", color="lightblue", shape="box" ];
-  { rank=same; A001; _003; }
-  _003 -> A001 [ arrowhead="tee" ];
-  _004 [ shape="record", label="<_p1> 256..319: D64|<_p2> 320..383: D64" ];
-  _004:_p2 -> A003 [ style="dotted" ];
-  _004:_p1 -> A002 [ style="dotted" ];
-  A001 -> _004:w [ arrowhead="tee" ];
-  A002 [ label="D", shape="oval" ];
-  _005 [ label="roots:&fb+256", style="filled", color="lightblue",
-    shape="box"
-  ];
-  { rank=same; A002; _005; }
-  _005 -> A002 [ arrowhead="tee" ];
-  _006 [ shape="record", label="<_p1> Ref" ];
-  _006:_p1 -> A004:w [ taillabel="*", labelangle="+30", color="red" ];
-  A002 -> _006:w [ arrowhead="tee" ];
-  A003 [ label="D", shape="oval" ];
-  _007 [ label="roots:&fb+320", style="filled", color="lightblue",
-    shape="box"
-  ];
-  { rank=same; A003; _007; }
-  _007 -> A003 [ arrowhead="tee" ];
-  _008 [ shape="record", label="<_p1> Ref" ];
-  _008:_p1 -> A005:w [ taillabel="*", labelangle="+30", color="red" ];
-  A003 -> _008:w [ arrowhead="tee" ];
-  A004 [ label="", shape="oval" ];
-  _009 [ label="roots:&fb+256", style="filled", color="lightblue",
-    shape="box"
-  ];
-  { rank=same; A004; _009; }
-  _009 -> A004 [ arrowhead="tee" ];
-  _010 [ shape="record", label="<_p1> 0..63: D64|<_p2> 64..95: D32" ];
-  _010:_p2 -> A007 [ style="dotted" ];
-  _010:_p1 -> A006 [ style="dotted" ];
-  A004 -> _010:w [ arrowhead="tee" ];
-  A005 [ label="", shape="oval" ];
-  _011 [ label="roots:&fb+320", style="filled", color="lightblue",
-    shape="box"
-  ];
-  { rank=same; A005; _011; }
-  _011 -> A005 [ arrowhead="tee" ];
-  _012 [ shape="record", label="<_p1> 0..63: D64|<_p2> 64..95: D32" ];
-  _012:_p2 -> A009 [ style="dotted" ];
-  _012:_p1 -> A008 [ style="dotted" ];
-  A005 -> _012:w [ arrowhead="tee" ];
-  A006 [ label="RW", shape="oval", fillcolor="green", style="filled" ];
-  _013 [ label="roots:&fb+256", style="filled", color="lightblue",
-    shape="box"
-  ];
-  { rank=same; A006; _013; }
-  _013 -> A006 [ arrowhead="tee" ];
-  _014 [ shape="record", label="Var float64" ];
-  A006 -> _014:w [ arrowhead="tee" ];
-  A007 [ label="RW", shape="oval", fillcolor="green", style="filled" ];
-  _015 [ label="roots:&fb+320", style="filled", color="lightblue",
-    shape="box"
-  ];
-  { rank=same; A007; _015; }
-  _015 -> A007 [ arrowhead="tee" ];
-  _016 [ shape="record", label="Var sint32" ];
-  A007 -> _016:w [ arrowhead="tee" ];
-  A008 [ label="R", shape="oval", fillcolor="green", style="filled" ];
-  _017 [ label="roots:&fb+320", style="filled", color="lightblue",
-    shape="box"
-  ];
-  { rank=same; A008; _017; }
-  _017 -> A008 [ arrowhead="tee" ];
-  _018 [ shape="record", label="Var float64" ];
-  A008 -> _018:w [ arrowhead="tee" ];
-  A009 [ label="R", shape="oval", fillcolor="green", style="filled" ];
-  _019 [ label="roots:&fb+384", style="filled", color="lightblue",
-    shape="box"
-  ];
-  { rank=same; A009; _019; }
-  _019 -> A009 [ arrowhead="tee" ];
-  _020 [ shape="record", label="Var sint32" ];
-  A009 -> _020:w [ arrowhead="tee" ];
-  R021 [ label="A", shape="tab", style="filled", fillcolor="yellow" ];
-  { rank=same; R021; A000; }
-  R021 -> A000 ;
-}
diff --git a/src/plugins/wp/tests/wp_region/oracle/fb_ADD.res.oracle b/src/plugins/wp/tests/wp_region/oracle/fb_ADD.res.oracle
deleted file mode 100644
index c174f1f4537b111fc04000bee0674114dd058fd4..0000000000000000000000000000000000000000
--- a/src/plugins/wp/tests/wp_region/oracle/fb_ADD.res.oracle
+++ /dev/null
@@ -1,4 +0,0 @@
-[kernel] Parsing fb_ADD.i (no preprocessing)
-[wp] Region Graph: fb_ADD.0.dot
-[wp] Running WP plugin...
-[wp] Warning: Missing RTE guards
diff --git a/src/plugins/wp/tests/wp_region/oracle/fb_SORT.0.dot b/src/plugins/wp/tests/wp_region/oracle/fb_SORT.0.dot
deleted file mode 100644
index c278bffd20975f825e0e81a8884920114b062563..0000000000000000000000000000000000000000
--- a/src/plugins/wp/tests/wp_region/oracle/fb_SORT.0.dot
+++ /dev/null
@@ -1,204 +0,0 @@
-digraph "job" {
-  rankdir="LR" ;
-  node [ fontname="monospace" ];
-  edge [ fontname="monospace" ];
-  V000 [ label="fb", shape="cds", style="filled", fillcolor="yellow" ];
-  V000:e -> A000 ;
-  V001 [ label="inp", shape="cds", style="filled", fillcolor="yellow" ];
-  V001:e -> A001 ;
-  V002 [ label="out", shape="cds", style="filled", fillcolor="yellow" ];
-  V002:e -> A002 ;
-  V003 [ label="idx", shape="cds", style="filled", fillcolor="yellow" ];
-  V003:e -> A003 ;
-  V004 [ label="i", shape="cds", style="filled", fillcolor="yellow" ];
-  V004:e -> A004 ;
-  A000 [ label="D", shape="oval" ];
-  _005 [ label="roots:&fb", style="filled", color="lightblue", shape="box" ];
-  { rank=same; A000; _005; }
-  _005 -> A000 [ arrowhead="tee" ];
-  _006 [ shape="record", label="<_p1> Ref" ];
-  _006:_p1 -> A005:w [ taillabel="*", labelangle="+30", color="red" ];
-  A000 -> _006:w [ arrowhead="tee" ];
-  A001 [ label="DW", shape="oval", fillcolor="green", style="filled" ];
-  _007 [ shape="record", label="<_p1> Var ptr" ];
-  _007:_p1 -> A006:w [ taillabel="[..]", labeldistance="1.7",
-    labelangle="+40", color="red"
-  ];
-  A001 -> _007:w [ arrowhead="tee" ];
-  A002 [ label="DW", shape="oval", fillcolor="green", style="filled" ];
-  _008 [ shape="record", label="<_p1> Var ptr" ];
-  _008:_p1 -> A007:w [ taillabel="[..]", labeldistance="1.7",
-    labelangle="+40", color="red"
-  ];
-  A002 -> _008:w [ arrowhead="tee" ];
-  A003 [ label="DW", shape="oval", fillcolor="green", style="filled" ];
-  _009 [ shape="record", label="<_p1> Var ptr" ];
-  _009:_p1 -> A008:w [ taillabel="[..]", labeldistance="1.7",
-    labelangle="+40", color="red"
-  ];
-  A003 -> _009:w [ arrowhead="tee" ];
-  A004 [ label="RW", shape="oval", fillcolor="green", style="filled" ];
-  _010 [ shape="record", label="Var sint32" ];
-  A004 -> _010:w [ arrowhead="tee" ];
-  A005 [ label="", shape="oval" ];
-  _011 [ label="roots:&fb", style="filled", color="lightblue", shape="box" ];
-  { rank=same; A005; _011; }
-  _011 -> A005 [ arrowhead="tee" ];
-  _012 [ shape="record",
-    label="<_p1> 0..63: D64|<_p2> 64..255: D64[3]|<_p3> 256..447: D64[3]|<_p4> 448..639: D64[3]|<_p5> 640..703: D64"
-  ];
-  _012:_p5 -> A010 [ style="dotted" ];
-  _012:_p4 -> A008 [ style="dotted" ];
-  _012:_p3 -> A007 [ style="dotted" ];
-  _012:_p2 -> A006 [ style="dotted" ];
-  _012:_p1 -> A009 [ style="dotted" ];
-  A005 -> _012:w [ arrowhead="tee" ];
-  A006 [ label="D[]&", shape="oval", fillcolor="orange", style="filled" ];
-  _013 [ label="roots:*", style="filled", color="lightblue", shape="box" ];
-  { rank=same; A006; _013; }
-  _013 -> A006 [ arrowhead="tee" ];
-  _014 [ shape="record", label="<_p1> Ref" ];
-  _014:_p1 -> A011:w [ taillabel="*", labelangle="+30", color="red" ];
-  A006 -> _014:w [ arrowhead="tee" ];
-  A007 [ label="D[]&", shape="oval", fillcolor="orange", style="filled" ];
-  _015 [ label="roots:*", style="filled", color="lightblue", shape="box" ];
-  { rank=same; A007; _015; }
-  _015 -> A007 [ arrowhead="tee" ];
-  _016 [ shape="record", label="<_p1> Ref" ];
-  _016:_p1 -> A012:w [ taillabel="*", labelangle="+30", color="red" ];
-  A007 -> _016:w [ arrowhead="tee" ];
-  A008 [ label="D[]&", shape="oval", fillcolor="orange", style="filled" ];
-  _017 [ label="roots:*", style="filled", color="lightblue", shape="box" ];
-  { rank=same; A008; _017; }
-  _017 -> A008 [ arrowhead="tee" ];
-  _018 [ shape="record", label="<_p1> Ref" ];
-  _018:_p1 -> A013:w [ taillabel="*", labelangle="+30", color="red" ];
-  A008 -> _018:w [ arrowhead="tee" ];
-  A009 [ label="D", shape="oval" ];
-  _019 [ label="roots:&fb", style="filled", color="lightblue", shape="box" ];
-  { rank=same; A009; _019; }
-  _019 -> A009 [ arrowhead="tee" ];
-  _020 [ shape="record", label="<_p1> Ref" ];
-  _020:_p1 -> A014:w [ taillabel="*", labelangle="+30", color="red" ];
-  A009 -> _020:w [ arrowhead="tee" ];
-  A010 [ label="D", shape="oval" ];
-  _021 [ label="roots:&fb+640", style="filled", color="lightblue",
-    shape="box"
-  ];
-  { rank=same; A010; _021; }
-  _021 -> A010 [ arrowhead="tee" ];
-  _022 [ shape="record", label="<_p1> Ref" ];
-  _022:_p1 -> A015:w [ taillabel="*", labelangle="+30", color="red" ];
-  A010 -> _022:w [ arrowhead="tee" ];
-  A011 [ label="&", shape="oval", fillcolor="orange", style="filled" ];
-  _023 [ label="roots:*", style="filled", color="lightblue", shape="box" ];
-  { rank=same; A011; _023; }
-  _023 -> A011 [ arrowhead="tee" ];
-  _024 [ shape="record", label="<_p1> 0..63: D64|<_p2> 64..95: D32" ];
-  _024:_p2 -> A017 [ style="dotted" ];
-  _024:_p1 -> A016 [ style="dotted" ];
-  A011 -> _024:w [ arrowhead="tee" ];
-  A012 [ label="", shape="oval" ];
-  _025 [ label="roots:*", style="filled", color="lightblue", shape="box" ];
-  { rank=same; A012; _025; }
-  _025 -> A012 [ arrowhead="tee" ];
-  _026 [ shape="record", label="<_p1> 0..63: D64|<_p2> 64..95: D32" ];
-  _026:_p2 -> A019 [ style="dotted" ];
-  _026:_p1 -> A018 [ style="dotted" ];
-  A012 -> _026:w [ arrowhead="tee" ];
-  A013 [ label="", shape="oval" ];
-  _027 [ label="roots:*", style="filled", color="lightblue", shape="box" ];
-  { rank=same; A013; _027; }
-  _027 -> A013 [ arrowhead="tee" ];
-  _028 [ shape="record", label="<_p1> 0..31: D32|<_p2> 32..63: D32" ];
-  _028:_p2 -> A021 [ style="dotted" ];
-  _028:_p1 -> A020 [ style="dotted" ];
-  A013 -> _028:w [ arrowhead="tee" ];
-  A014 [ label="", shape="oval" ];
-  _029 [ label="roots:&fb", style="filled", color="lightblue", shape="box" ];
-  { rank=same; A014; _029; }
-  _029 -> A014 [ arrowhead="tee" ];
-  _030 [ shape="record", label="<_p1> 0..63: D64" ];
-  _030:_p1 -> A022 [ style="dotted" ];
-  A014 -> _030:w [ arrowhead="tee" ];
-  A015 [ label="", shape="oval" ];
-  _031 [ label="roots:&fb+640", style="filled", color="lightblue",
-    shape="box"
-  ];
-  { rank=same; A015; _031; }
-  _031 -> A015 [ arrowhead="tee" ];
-  _032 [ shape="record", label="<_p1> 0..63: D64|<_p2> 64..95: D32" ];
-  _032:_p2 -> A024 [ style="dotted" ];
-  _032:_p1 -> A023 [ style="dotted" ];
-  A015 -> _032:w [ arrowhead="tee" ];
-  A016 [ label="R", shape="oval", fillcolor="green", style="filled" ];
-  _033 [ label="roots:*", style="filled", color="lightblue", shape="box" ];
-  { rank=same; A016; _033; }
-  _033 -> A016 [ arrowhead="tee" ];
-  _034 [ shape="record", label="Mem float64" ];
-  A016 -> _034:w [ arrowhead="tee" ];
-  A017 [ label="R", shape="oval", fillcolor="green", style="filled" ];
-  _035 [ label="roots:*", style="filled", color="lightblue", shape="box" ];
-  { rank=same; A017; _035; }
-  _035 -> A017 [ arrowhead="tee" ];
-  _036 [ shape="record", label="Mem sint32" ];
-  A017 -> _036:w [ arrowhead="tee" ];
-  A018 [ label="RW", shape="oval", fillcolor="green", style="filled" ];
-  _037 [ label="roots:*", style="filled", color="lightblue", shape="box" ];
-  { rank=same; A018; _037; }
-  _037 -> A018 [ arrowhead="tee" ];
-  _038 [ shape="record", label="Mem float64" ];
-  A018 -> _038:w [ arrowhead="tee" ];
-  A019 [ label="W", shape="oval", fillcolor="green", style="filled" ];
-  _039 [ label="roots:*", style="filled", color="lightblue", shape="box" ];
-  { rank=same; A019; _039; }
-  _039 -> A019 [ arrowhead="tee" ];
-  _040 [ shape="record", label="Mem sint32" ];
-  A019 -> _040:w [ arrowhead="tee" ];
-  A020 [ label="W", shape="oval", fillcolor="green", style="filled" ];
-  _041 [ label="roots:*", style="filled", color="lightblue", shape="box" ];
-  { rank=same; A020; _041; }
-  _041 -> A020 [ arrowhead="tee" ];
-  _042 [ shape="record", label="Mem sint32" ];
-  A020 -> _042:w [ arrowhead="tee" ];
-  A021 [ label="W", shape="oval", fillcolor="green", style="filled" ];
-  _043 [ label="roots:*", style="filled", color="lightblue", shape="box" ];
-  { rank=same; A021; _043; }
-  _043 -> A021 [ arrowhead="tee" ];
-  _044 [ shape="record", label="Mem sint32" ];
-  A021 -> _044:w [ arrowhead="tee" ];
-  A022 [ label="R", shape="oval", fillcolor="green", style="filled" ];
-  _045 [ label="roots:&fb", style="filled", color="lightblue", shape="box" ];
-  { rank=same; A022; _045; }
-  _045 -> A022 [ arrowhead="tee" ];
-  _046 [ shape="record", label="Var float64" ];
-  A022 -> _046:w [ arrowhead="tee" ];
-  A023 [ label="W", shape="oval", fillcolor="green", style="filled" ];
-  _047 [ label="roots:&fb+640", style="filled", color="lightblue",
-    shape="box"
-  ];
-  { rank=same; A023; _047; }
-  _047 -> A023 [ arrowhead="tee" ];
-  _048 [ shape="record", label="Var float64" ];
-  A023 -> _048:w [ arrowhead="tee" ];
-  A024 [ label="W", shape="oval", fillcolor="green", style="filled" ];
-  _049 [ label="roots:&fb+704", style="filled", color="lightblue",
-    shape="box"
-  ];
-  { rank=same; A024; _049; }
-  _049 -> A024 [ arrowhead="tee" ];
-  _050 [ shape="record", label="Var sint32" ];
-  A024 -> _050:w [ arrowhead="tee" ];
-  R051 [ label="IDX", shape="tab", style="filled", fillcolor="yellow" ];
-  { rank=same; R051; A008; }
-  R051 -> A008 ;
-  R052 [ label="IN", shape="tab", style="filled", fillcolor="yellow" ];
-  { rank=same; R052; A006; }
-  R052 -> A006 ;
-  R053 [ label="OUT", shape="tab", style="filled", fillcolor="yellow" ];
-  { rank=same; R053; A007; }
-  R053 -> A007 ;
-  R054 [ label="Shared", shape="tab", style="filled", fillcolor="yellow" ];
-  { rank=same; R054; A011; }
-  R054 -> A011 ;
-}
diff --git a/src/plugins/wp/tests/wp_region/oracle/fb_SORT.res.oracle b/src/plugins/wp/tests/wp_region/oracle/fb_SORT.res.oracle
deleted file mode 100644
index bfcc8d4d3ca21cf73c28dcb50c0f414a8ac16774..0000000000000000000000000000000000000000
--- a/src/plugins/wp/tests/wp_region/oracle/fb_SORT.res.oracle
+++ /dev/null
@@ -1,4 +0,0 @@
-[kernel] Parsing fb_SORT.i (no preprocessing)
-[wp] Region Graph: fb_SORT.0.dot
-[wp] Running WP plugin...
-[wp] Warning: Missing RTE guards
diff --git a/src/plugins/wp/tests/wp_region/oracle/garbled.0.dot b/src/plugins/wp/tests/wp_region/oracle/garbled.0.dot
deleted file mode 100644
index 1f13727a1f33006dd8dc3a85b608b3e74a1b5dc3..0000000000000000000000000000000000000000
--- a/src/plugins/wp/tests/wp_region/oracle/garbled.0.dot
+++ /dev/null
@@ -1,48 +0,0 @@
-digraph "job" {
-  rankdir="LR" ;
-  node [ fontname="monospace" ];
-  edge [ fontname="monospace" ];
-  V000 [ label="p", shape="cds", style="filled", fillcolor="yellow" ];
-  V000:e -> A000 ;
-  V001 [ label="q", shape="cds", style="filled", fillcolor="yellow" ];
-  V001:e -> A001 ;
-  V002 [ label="__retres", shape="cds", style="filled", fillcolor="yellow" ];
-  V002:e -> A002 ;
-  A000 [ label="D", shape="oval" ];
-  _003 [ label="roots:&p", style="filled", color="lightblue", shape="box" ];
-  { rank=same; A000; _003; }
-  _003 -> A000 [ arrowhead="tee" ];
-  _004 [ shape="record", label="<_p1> Ref" ];
-  _004:_p1 -> A003:w [ taillabel="*", labelangle="+30", color="red" ];
-  A000 -> _004:w [ arrowhead="tee" ];
-  A001 [ label="D", shape="oval" ];
-  _005 [ label="roots:&q", style="filled", color="lightblue", shape="box" ];
-  { rank=same; A001; _005; }
-  _005 -> A001 [ arrowhead="tee" ];
-  _006 [ shape="record", label="<_p1> Ref" ];
-  _006:_p1 -> A004:w [ taillabel="*", labelangle="+30", color="red" ];
-  A001 -> _006:w [ arrowhead="tee" ];
-  A002 [ label="RW", shape="oval", fillcolor="green", style="filled" ];
-  _007 [ shape="record", label="Var float32" ];
-  A002 -> _007:w [ arrowhead="tee" ];
-  A003 [ label="R", shape="oval", color="red", fillcolor="red",
-    style="filled"
-  ];
-  _008 [ label="roots:&p", style="filled", color="lightblue", shape="box" ];
-  { rank=same; A003; _008; }
-  _008 -> A003 [ arrowhead="tee" ];
-  _009 [ shape="record", label="Raw", fillcolor="red", style="filled" ];
-  A003 -> _009:w [ arrowhead="tee" ];
-  A004 [ label="R", shape="oval", fillcolor="green", style="filled" ];
-  _010 [ label="roots:&q", style="filled", color="lightblue", shape="box" ];
-  { rank=same; A004; _010; }
-  _010 -> A004 [ arrowhead="tee" ];
-  _011 [ shape="record", label="Var sint32" ];
-  A004 -> _011:w [ arrowhead="tee" ];
-  R012 [ label="\\result", shape="tab", style="filled", fillcolor="yellow" ];
-  { rank=same; R012; A005; }
-  R012 -> A005 ;
-  A005 [ label="W", shape="oval", fillcolor="green", style="filled" ];
-  _013 [ shape="record", label="Var float32" ];
-  A005 -> _013:w [ arrowhead="tee" ];
-}
diff --git a/src/plugins/wp/tests/wp_region/oracle/garbled.res.oracle b/src/plugins/wp/tests/wp_region/oracle/garbled.res.oracle
deleted file mode 100644
index c390ec3e2ade1fc8b4890a2f7602092b90108f78..0000000000000000000000000000000000000000
--- a/src/plugins/wp/tests/wp_region/oracle/garbled.res.oracle
+++ /dev/null
@@ -1,7 +0,0 @@
-[kernel] Parsing garbled.i (no preprocessing)
-[wp:garbled] Garbled Clusters: A=sint32 B=float32
-[wp:garbled] Garbled Clusters: A=garbled B=sint32
-[wp:garbled] Garbled Clusters: A=garbled B=float32
-[wp] Region Graph: garbled.0.dot
-[wp] Running WP plugin...
-[wp] Warning: Missing RTE guards
diff --git a/src/plugins/wp/tests/wp_region/oracle/index.0.dot b/src/plugins/wp/tests/wp_region/oracle/index.0.dot
deleted file mode 100644
index 5aea05755a41cc4c8ae8eaf06c3a06ed763927e8..0000000000000000000000000000000000000000
--- a/src/plugins/wp/tests/wp_region/oracle/index.0.dot
+++ /dev/null
@@ -1,57 +0,0 @@
-digraph "job" {
-  rankdir="LR" ;
-  node [ fontname="monospace" ];
-  edge [ fontname="monospace" ];
-  V000 [ label="A", shape="cds", style="filled", fillcolor="yellow" ];
-  V000:e -> A000 ;
-  V001 [ label="i", shape="cds", style="filled", fillcolor="yellow" ];
-  V001:e -> A001 ;
-  V002 [ label="j", shape="cds", style="filled", fillcolor="yellow" ];
-  V002:e -> A002 ;
-  V003 [ label="k", shape="cds", style="filled", fillcolor="yellow" ];
-  V003:e -> A003 ;
-  V004 [ label="__retres", shape="cds", style="filled", fillcolor="yellow" ];
-  V004:e -> A004 ;
-  A000 [ label="", shape="oval" ];
-  _005 [ label="roots:&A", style="filled", color="lightblue", shape="box" ];
-  { rank=same; A000; _005; }
-  _005 -> A000 [ arrowhead="tee" ];
-  _006 [ shape="record", label="<_p1> 0..1919: D32[5,4,3]" ];
-  _006:_p1 -> A005 [ style="dotted" ];
-  A000 -> _006:w [ arrowhead="tee" ];
-  A001 [ label="R", shape="oval", fillcolor="green", style="filled" ];
-  _007 [ label="roots:&i", style="filled", color="lightblue", shape="box" ];
-  { rank=same; A001; _007; }
-  _007 -> A001 [ arrowhead="tee" ];
-  _008 [ shape="record", label="Var sint32" ];
-  A001 -> _008:w [ arrowhead="tee" ];
-  A002 [ label="R", shape="oval", fillcolor="green", style="filled" ];
-  _009 [ label="roots:&j", style="filled", color="lightblue", shape="box" ];
-  { rank=same; A002; _009; }
-  _009 -> A002 [ arrowhead="tee" ];
-  _010 [ shape="record", label="Var sint32" ];
-  A002 -> _010:w [ arrowhead="tee" ];
-  A003 [ label="R", shape="oval", fillcolor="green", style="filled" ];
-  _011 [ label="roots:&k", style="filled", color="lightblue", shape="box" ];
-  { rank=same; A003; _011; }
-  _011 -> A003 [ arrowhead="tee" ];
-  _012 [ shape="record", label="Var sint32" ];
-  A003 -> _012:w [ arrowhead="tee" ];
-  A004 [ label="RW", shape="oval", fillcolor="green", style="filled" ];
-  _013 [ shape="record", label="Var sint32" ];
-  A004 -> _013:w [ arrowhead="tee" ];
-  A005 [ label="R", shape="oval", fillcolor="green", style="filled" ];
-  _014 [ label="roots:&A+(..)", style="filled", color="lightblue",
-    shape="box"
-  ];
-  { rank=same; A005; _014; }
-  _014 -> A005 [ arrowhead="tee" ];
-  _015 [ shape="record", label="Mem sint32" ];
-  A005 -> _015:w [ arrowhead="tee" ];
-  R016 [ label="\\result", shape="tab", style="filled", fillcolor="yellow" ];
-  { rank=same; R016; A006; }
-  R016 -> A006 ;
-  A006 [ label="W", shape="oval", fillcolor="green", style="filled" ];
-  _017 [ shape="record", label="Var sint32" ];
-  A006 -> _017:w [ arrowhead="tee" ];
-}
diff --git a/src/plugins/wp/tests/wp_region/oracle/index.res.oracle b/src/plugins/wp/tests/wp_region/oracle/index.res.oracle
deleted file mode 100644
index 953037c02faad26a8582d6e58dfd2e5f879cff63..0000000000000000000000000000000000000000
--- a/src/plugins/wp/tests/wp_region/oracle/index.res.oracle
+++ /dev/null
@@ -1,4 +0,0 @@
-[kernel] Parsing index.i (no preprocessing)
-[wp] Region Graph: index.0.dot
-[wp] Running WP plugin...
-[wp] Warning: Missing RTE guards
diff --git a/src/plugins/wp/tests/wp_region/oracle/matrix.0.dot b/src/plugins/wp/tests/wp_region/oracle/matrix.0.dot
deleted file mode 100644
index fcce73f07e94697143a17a714e1605709e77c9f6..0000000000000000000000000000000000000000
--- a/src/plugins/wp/tests/wp_region/oracle/matrix.0.dot
+++ /dev/null
@@ -1,93 +0,0 @@
-digraph "job" {
-  rankdir="LR" ;
-  node [ fontname="monospace" ];
-  edge [ fontname="monospace" ];
-  V000 [ label="cols", shape="cds", style="filled", fillcolor="yellow" ];
-  V000:e -> A000 ;
-  V001 [ label="rows", shape="cds", style="filled", fillcolor="yellow" ];
-  V001:e -> A001 ;
-  V002 [ label="m", shape="cds", style="filled", fillcolor="yellow" ];
-  V002:e -> A002 ;
-  V003 [ label="v", shape="cds", style="filled", fillcolor="yellow" ];
-  V003:e -> A003 ;
-  V004 [ label="r", shape="cds", style="filled", fillcolor="yellow" ];
-  V004:e -> A004 ;
-  V005 [ label="i", shape="cds", style="filled", fillcolor="yellow" ];
-  V005:e -> A005 ;
-  V006 [ label="j", shape="cds", style="filled", fillcolor="yellow" ];
-  V006:e -> A006 ;
-  A000 [ label="R", shape="oval", fillcolor="green", style="filled" ];
-  _007 [ label="roots:&cols", style="filled", color="lightblue", shape="box"
-  ];
-  { rank=same; A000; _007; }
-  _007 -> A000 [ arrowhead="tee" ];
-  _008 [ shape="record", label="Var sint32" ];
-  A000 -> _008:w [ arrowhead="tee" ];
-  A001 [ label="R", shape="oval", fillcolor="green", style="filled" ];
-  _009 [ label="roots:&rows", style="filled", color="lightblue", shape="box"
-  ];
-  { rank=same; A001; _009; }
-  _009 -> A001 [ arrowhead="tee" ];
-  _010 [ shape="record", label="Var sint32" ];
-  A001 -> _010:w [ arrowhead="tee" ];
-  A002 [ label="D", shape="oval" ];
-  _011 [ label="roots:&m", style="filled", color="lightblue", shape="box" ];
-  { rank=same; A002; _011; }
-  _011 -> A002 [ arrowhead="tee" ];
-  _012 [ shape="record", label="<_p1> Ref" ];
-  _012:_p1 -> A007:w [ taillabel="[..]", labeldistance="1.7",
-    labelangle="+40", color="red"
-  ];
-  A002 -> _012:w [ arrowhead="tee" ];
-  A003 [ label="D", shape="oval" ];
-  _013 [ label="roots:&v", style="filled", color="lightblue", shape="box" ];
-  { rank=same; A003; _013; }
-  _013 -> A003 [ arrowhead="tee" ];
-  _014 [ shape="record", label="<_p1> Ref" ];
-  _014:_p1 -> A008:w [ taillabel="[..]", labeldistance="1.7",
-    labelangle="+40", color="red"
-  ];
-  A003 -> _014:w [ arrowhead="tee" ];
-  A004 [ label="D", shape="oval" ];
-  _015 [ label="roots:&r", style="filled", color="lightblue", shape="box" ];
-  { rank=same; A004; _015; }
-  _015 -> A004 [ arrowhead="tee" ];
-  _016 [ shape="record", label="<_p1> Ref" ];
-  _016:_p1 -> A009:w [ taillabel="[..]", labeldistance="1.7",
-    labelangle="+40", color="red"
-  ];
-  A004 -> _016:w [ arrowhead="tee" ];
-  A005 [ label="RW", shape="oval", fillcolor="green", style="filled" ];
-  _017 [ shape="record", label="Var sint32" ];
-  A005 -> _017:w [ arrowhead="tee" ];
-  A006 [ label="RW", shape="oval", fillcolor="green", style="filled" ];
-  _018 [ shape="record", label="Var sint32" ];
-  A006 -> _018:w [ arrowhead="tee" ];
-  A007 [ label="D[]", shape="oval" ];
-  _019 [ label="roots:*", style="filled", color="lightblue", shape="box" ];
-  { rank=same; A007; _019; }
-  _019 -> A007 [ arrowhead="tee" ];
-  _020 [ shape="record", label="<_p1> Ref" ];
-  _020:_p1 -> A010:w [ taillabel="[..]", labeldistance="1.7",
-    labelangle="+40", color="red"
-  ];
-  A007 -> _020:w [ arrowhead="tee" ];
-  A008 [ label="R[]", shape="oval", fillcolor="green", style="filled" ];
-  _021 [ label="roots:*", style="filled", color="lightblue", shape="box" ];
-  { rank=same; A008; _021; }
-  _021 -> A008 [ arrowhead="tee" ];
-  _022 [ shape="record", label="Mem sint32" ];
-  A008 -> _022:w [ arrowhead="tee" ];
-  A009 [ label="RW[]", shape="oval", fillcolor="green", style="filled" ];
-  _023 [ label="roots:*", style="filled", color="lightblue", shape="box" ];
-  { rank=same; A009; _023; }
-  _023 -> A009 [ arrowhead="tee" ];
-  _024 [ shape="record", label="Mem sint32" ];
-  A009 -> _024:w [ arrowhead="tee" ];
-  A010 [ label="R[]", shape="oval", fillcolor="green", style="filled" ];
-  _025 [ label="roots:*", style="filled", color="lightblue", shape="box" ];
-  { rank=same; A010; _025; }
-  _025 -> A010 [ arrowhead="tee" ];
-  _026 [ shape="record", label="Mem sint32" ];
-  A010 -> _026:w [ arrowhead="tee" ];
-}
diff --git a/src/plugins/wp/tests/wp_region/oracle/matrix.res.oracle b/src/plugins/wp/tests/wp_region/oracle/matrix.res.oracle
deleted file mode 100644
index 01ca9097b9dfeb8be0bd47e99aa5de6975d8931e..0000000000000000000000000000000000000000
--- a/src/plugins/wp/tests/wp_region/oracle/matrix.res.oracle
+++ /dev/null
@@ -1,4 +0,0 @@
-[kernel] Parsing matrix.i (no preprocessing)
-[wp] Region Graph: matrix.0.dot
-[wp] Running WP plugin...
-[wp] Warning: Missing RTE guards
diff --git a/src/plugins/wp/tests/wp_region/oracle/structarray1.0.dot b/src/plugins/wp/tests/wp_region/oracle/structarray1.0.dot
deleted file mode 100644
index c9b16ac8ffe732d0e3f0782dc984f4254a571ad3..0000000000000000000000000000000000000000
--- a/src/plugins/wp/tests/wp_region/oracle/structarray1.0.dot
+++ /dev/null
@@ -1,70 +0,0 @@
-digraph "job" {
-  rankdir="LR" ;
-  node [ fontname="monospace" ];
-  edge [ fontname="monospace" ];
-  V000 [ label="M", shape="cds", style="filled", fillcolor="yellow" ];
-  V000:e -> A000 ;
-  V001 [ label="X", shape="cds", style="filled", fillcolor="yellow" ];
-  V001:e -> A001 ;
-  V002 [ label="R", shape="cds", style="filled", fillcolor="yellow" ];
-  V002:e -> A002 ;
-  V003 [ label="i", shape="cds", style="filled", fillcolor="yellow" ];
-  V003:e -> A003 ;
-  V004 [ label="j", shape="cds", style="filled", fillcolor="yellow" ];
-  V004:e -> A004 ;
-  A000 [ label="D", shape="oval" ];
-  _005 [ label="roots:&M", style="filled", color="lightblue", shape="box" ];
-  { rank=same; A000; _005; }
-  _005 -> A000 [ arrowhead="tee" ];
-  _006 [ shape="record", label="<_p1> Ref" ];
-  _006:_p1 -> A005:w [ taillabel="*", labelangle="+30", color="red" ];
-  A000 -> _006:w [ arrowhead="tee" ];
-  A001 [ label="D", shape="oval" ];
-  _007 [ label="roots:&X", style="filled", color="lightblue", shape="box" ];
-  { rank=same; A001; _007; }
-  _007 -> A001 [ arrowhead="tee" ];
-  _008 [ shape="record", label="<_p1> Ref" ];
-  _008:_p1 -> A006:w [ taillabel="*", labelangle="+30", color="red" ];
-  A001 -> _008:w [ arrowhead="tee" ];
-  A002 [ label="D", shape="oval" ];
-  _009 [ label="roots:&R", style="filled", color="lightblue", shape="box" ];
-  { rank=same; A002; _009; }
-  _009 -> A002 [ arrowhead="tee" ];
-  _010 [ shape="record", label="<_p1> Ref" ];
-  _010:_p1 -> A006:w [ taillabel="*", labelangle="+30", color="red" ];
-  A002 -> _010:w [ arrowhead="tee" ];
-  A003 [ label="RW", shape="oval", fillcolor="green", style="filled" ];
-  _011 [ shape="record", label="Var sint32" ];
-  A003 -> _011:w [ arrowhead="tee" ];
-  A004 [ label="RW", shape="oval", fillcolor="green", style="filled" ];
-  _012 [ shape="record", label="Var sint32" ];
-  A004 -> _012:w [ arrowhead="tee" ];
-  A005 [ label="", shape="oval" ];
-  _013 [ label="roots:&M", style="filled", color="lightblue", shape="box" ];
-  { rank=same; A005; _013; }
-  _013 -> A005 [ arrowhead="tee" ];
-  _014 [ shape="record", label="<_p1> 0..511: D32[4,4]" ];
-  _014:_p1 -> A007 [ style="dotted" ];
-  A005 -> _014:w [ arrowhead="tee" ];
-  A006 [ label="&", shape="oval", fillcolor="orange", style="filled" ];
-  _015 [ label="roots:*", style="filled", color="lightblue", shape="box" ];
-  { rank=same; A006; _015; }
-  _015 -> A006 [ arrowhead="tee" ];
-  _016 [ shape="record", label="<_p1> 0..127: D32[4]" ];
-  _016:_p1 -> A008 [ style="dotted" ];
-  A006 -> _016:w [ arrowhead="tee" ];
-  A007 [ label="R", shape="oval", fillcolor="green", style="filled" ];
-  _017 [ label="roots:&M+(..)", style="filled", color="lightblue",
-    shape="box"
-  ];
-  { rank=same; A007; _017; }
-  _017 -> A007 [ arrowhead="tee" ];
-  _018 [ shape="record", label="Mem sint32" ];
-  A007 -> _018:w [ arrowhead="tee" ];
-  A008 [ label="RW", shape="oval", fillcolor="green", style="filled" ];
-  _019 [ label="roots:*", style="filled", color="lightblue", shape="box" ];
-  { rank=same; A008; _019; }
-  _019 -> A008 [ arrowhead="tee" ];
-  _020 [ shape="record", label="Mem sint32" ];
-  A008 -> _020:w [ arrowhead="tee" ];
-}
diff --git a/src/plugins/wp/tests/wp_region/oracle/structarray1.res.oracle b/src/plugins/wp/tests/wp_region/oracle/structarray1.res.oracle
deleted file mode 100644
index 393a63b149847c622bb8740e221e706652f5e603..0000000000000000000000000000000000000000
--- a/src/plugins/wp/tests/wp_region/oracle/structarray1.res.oracle
+++ /dev/null
@@ -1,4 +0,0 @@
-[kernel] Parsing structarray1.i (no preprocessing)
-[wp] Region Graph: structarray1.0.dot
-[wp] Running WP plugin...
-[wp] Warning: Missing RTE guards
diff --git a/src/plugins/wp/tests/wp_region/oracle/structarray2.0.dot b/src/plugins/wp/tests/wp_region/oracle/structarray2.0.dot
deleted file mode 100644
index c230c91fe3fba56ccab5ad31aeb5b20e6952036a..0000000000000000000000000000000000000000
--- a/src/plugins/wp/tests/wp_region/oracle/structarray2.0.dot
+++ /dev/null
@@ -1,97 +0,0 @@
-digraph "job" {
-  rankdir="LR" ;
-  node [ fontname="monospace" ];
-  edge [ fontname="monospace" ];
-  V000 [ label="M", shape="cds", style="filled", fillcolor="yellow" ];
-  V000:e -> A000 ;
-  V001 [ label="X", shape="cds", style="filled", fillcolor="yellow" ];
-  V001:e -> A001 ;
-  V002 [ label="R", shape="cds", style="filled", fillcolor="yellow" ];
-  V002:e -> A002 ;
-  V003 [ label="i", shape="cds", style="filled", fillcolor="yellow" ];
-  V003:e -> A003 ;
-  V004 [ label="j", shape="cds", style="filled", fillcolor="yellow" ];
-  V004:e -> A004 ;
-  V005 [ label="C", shape="cds", style="filled", fillcolor="yellow" ];
-  V005:e -> A005 ;
-  A000 [ label="D", shape="oval" ];
-  _006 [ label="roots:&M", style="filled", color="lightblue", shape="box" ];
-  { rank=same; A000; _006; }
-  _006 -> A000 [ arrowhead="tee" ];
-  _007 [ shape="record", label="<_p1> Ref" ];
-  _007:_p1 -> A006:w [ taillabel="*", labelangle="+30", color="red" ];
-  A000 -> _007:w [ arrowhead="tee" ];
-  A001 [ label="D", shape="oval" ];
-  _008 [ label="roots:&X", style="filled", color="lightblue", shape="box" ];
-  { rank=same; A001; _008; }
-  _008 -> A001 [ arrowhead="tee" ];
-  _009 [ shape="record", label="<_p1> Ref" ];
-  _009:_p1 -> A007:w [ taillabel="*", labelangle="+30", color="red" ];
-  A001 -> _009:w [ arrowhead="tee" ];
-  A002 [ label="D", shape="oval" ];
-  _010 [ label="roots:&R", style="filled", color="lightblue", shape="box" ];
-  { rank=same; A002; _010; }
-  _010 -> A002 [ arrowhead="tee" ];
-  _011 [ shape="record", label="<_p1> Ref" ];
-  _011:_p1 -> A008:w [ taillabel="*", labelangle="+30", color="red" ];
-  A002 -> _011:w [ arrowhead="tee" ];
-  A003 [ label="RW", shape="oval", fillcolor="green", style="filled" ];
-  _012 [ shape="record", label="Var sint32" ];
-  A003 -> _012:w [ arrowhead="tee" ];
-  A004 [ label="RW", shape="oval", fillcolor="green", style="filled" ];
-  _013 [ shape="record", label="Var sint32" ];
-  A004 -> _013:w [ arrowhead="tee" ];
-  A005 [ label="DW", shape="oval", fillcolor="green", style="filled" ];
-  _014 [ shape="record", label="<_p1> Var ptr" ];
-  _014:_p1 -> A009:w [ taillabel="*", labelangle="+30", color="red" ];
-  A005 -> _014:w [ arrowhead="tee" ];
-  A006 [ label="", shape="oval" ];
-  _015 [ label="roots:&M", style="filled", color="lightblue", shape="box" ];
-  { rank=same; A006; _015; }
-  _015 -> A006 [ arrowhead="tee" ];
-  _016 [ shape="record", label="<_p1> 0..511: D32[4,4]" ];
-  _016:_p1 -> A010 [ style="dotted" ];
-  A006 -> _016:w [ arrowhead="tee" ];
-  A007 [ label="", shape="oval" ];
-  _017 [ label="roots:&X", style="filled", color="lightblue", shape="box" ];
-  { rank=same; A007; _017; }
-  _017 -> A007 [ arrowhead="tee" ];
-  _018 [ shape="record", label="<_p1> 0..127: D32[4]" ];
-  _018:_p1 -> A011 [ style="dotted" ];
-  A007 -> _018:w [ arrowhead="tee" ];
-  A008 [ label="", shape="oval" ];
-  _019 [ label="roots:&R", style="filled", color="lightblue", shape="box" ];
-  { rank=same; A008; _019; }
-  _019 -> A008 [ arrowhead="tee" ];
-  _020 [ shape="record", label="<_p1> 0..127: D32[4]" ];
-  _020:_p1 -> A012 [ style="dotted" ];
-  A008 -> _020:w [ arrowhead="tee" ];
-  A009 [ label="&", shape="oval", fillcolor="orange", style="filled" ];
-  _021 [ shape="record", label="<_p1> 0..127: D32[4]" ];
-  _021:_p1 -> A010 [ style="dotted" ];
-  A009 -> _021:w [ arrowhead="tee" ];
-  A010 [ label="R", shape="oval", fillcolor="green", style="filled" ];
-  _022 [ label="roots:&M+(..)", style="filled", color="lightblue",
-    shape="box"
-  ];
-  { rank=same; A010; _022; }
-  _022 -> A010 [ arrowhead="tee" ];
-  _023 [ shape="record", label="Mem sint32" ];
-  A010 -> _023:w [ arrowhead="tee" ];
-  A011 [ label="R", shape="oval", fillcolor="green", style="filled" ];
-  _024 [ label="roots:&X+(..)", style="filled", color="lightblue",
-    shape="box"
-  ];
-  { rank=same; A011; _024; }
-  _024 -> A011 [ arrowhead="tee" ];
-  _025 [ shape="record", label="Mem sint32" ];
-  A011 -> _025:w [ arrowhead="tee" ];
-  A012 [ label="RW", shape="oval", fillcolor="green", style="filled" ];
-  _026 [ label="roots:&R+(..)", style="filled", color="lightblue",
-    shape="box"
-  ];
-  { rank=same; A012; _026; }
-  _026 -> A012 [ arrowhead="tee" ];
-  _027 [ shape="record", label="Mem sint32" ];
-  A012 -> _027:w [ arrowhead="tee" ];
-}
diff --git a/src/plugins/wp/tests/wp_region/oracle/structarray2.res.oracle b/src/plugins/wp/tests/wp_region/oracle/structarray2.res.oracle
deleted file mode 100644
index f71c9e902cc6a49c9f5b16bf570b5fd58216c719..0000000000000000000000000000000000000000
--- a/src/plugins/wp/tests/wp_region/oracle/structarray2.res.oracle
+++ /dev/null
@@ -1,4 +0,0 @@
-[kernel] Parsing structarray2.i (no preprocessing)
-[wp] Region Graph: structarray2.0.dot
-[wp] Running WP plugin...
-[wp] Warning: Missing RTE guards
diff --git a/src/plugins/wp/tests/wp_region/oracle/structarray3.0.dot b/src/plugins/wp/tests/wp_region/oracle/structarray3.0.dot
deleted file mode 100644
index 8f7746c098f792497d8e861672c41824c426e180..0000000000000000000000000000000000000000
--- a/src/plugins/wp/tests/wp_region/oracle/structarray3.0.dot
+++ /dev/null
@@ -1,114 +0,0 @@
-digraph "job" {
-  rankdir="LR" ;
-  node [ fontname="monospace" ];
-  edge [ fontname="monospace" ];
-  V000 [ label="c", shape="cds", style="filled", fillcolor="yellow" ];
-  V000:e -> A000 ;
-  V001 [ label="P", shape="cds", style="filled", fillcolor="yellow" ];
-  V001:e -> A001 ;
-  V002 [ label="Q", shape="cds", style="filled", fillcolor="yellow" ];
-  V002:e -> A002 ;
-  V003 [ label="X", shape="cds", style="filled", fillcolor="yellow" ];
-  V003:e -> A003 ;
-  V004 [ label="R", shape="cds", style="filled", fillcolor="yellow" ];
-  V004:e -> A004 ;
-  V005 [ label="M", shape="cds", style="filled", fillcolor="yellow" ];
-  V005:e -> A005 ;
-  V006 [ label="tmp", shape="cds", style="filled", fillcolor="yellow" ];
-  V006:e -> A006 ;
-  V007 [ label="i", shape="cds", style="filled", fillcolor="yellow" ];
-  V007:e -> A007 ;
-  V008 [ label="j", shape="cds", style="filled", fillcolor="yellow" ];
-  V008:e -> A008 ;
-  A000 [ label="R", shape="oval", fillcolor="green", style="filled" ];
-  _009 [ label="roots:&c", style="filled", color="lightblue", shape="box" ];
-  { rank=same; A000; _009; }
-  _009 -> A000 [ arrowhead="tee" ];
-  _010 [ shape="record", label="Var sint32" ];
-  A000 -> _010:w [ arrowhead="tee" ];
-  A001 [ label="D", shape="oval" ];
-  _011 [ label="roots:&P", style="filled", color="lightblue", shape="box" ];
-  { rank=same; A001; _011; }
-  _011 -> A001 [ arrowhead="tee" ];
-  _012 [ shape="record", label="<_p1> Ref" ];
-  _012:_p1 -> A009:w [ taillabel="*", labelangle="+30", color="red" ];
-  A001 -> _012:w [ arrowhead="tee" ];
-  A002 [ label="D", shape="oval" ];
-  _013 [ label="roots:&Q", style="filled", color="lightblue", shape="box" ];
-  { rank=same; A002; _013; }
-  _013 -> A002 [ arrowhead="tee" ];
-  _014 [ shape="record", label="<_p1> Ref" ];
-  _014:_p1 -> A009:w [ taillabel="*", labelangle="+30", color="red" ];
-  A002 -> _014:w [ arrowhead="tee" ];
-  A003 [ label="D", shape="oval" ];
-  _015 [ label="roots:&X", style="filled", color="lightblue", shape="box" ];
-  { rank=same; A003; _015; }
-  _015 -> A003 [ arrowhead="tee" ];
-  _016 [ shape="record", label="<_p1> Ref" ];
-  _016:_p1 -> A010:w [ taillabel="*", labelangle="+30", color="red" ];
-  A003 -> _016:w [ arrowhead="tee" ];
-  A004 [ label="D", shape="oval" ];
-  _017 [ label="roots:&R", style="filled", color="lightblue", shape="box" ];
-  { rank=same; A004; _017; }
-  _017 -> A004 [ arrowhead="tee" ];
-  _018 [ shape="record", label="<_p1> Ref" ];
-  _018:_p1 -> A011:w [ taillabel="*", labelangle="+30", color="red" ];
-  A004 -> _018:w [ arrowhead="tee" ];
-  A005 [ label="DW", shape="oval", fillcolor="green", style="filled" ];
-  _019 [ shape="record", label="<_p1> Var ptr" ];
-  _019:_p1 -> A009:w [ taillabel="*", labelangle="+30", color="red" ];
-  A005 -> _019:w [ arrowhead="tee" ];
-  A006 [ label="DW", shape="oval", fillcolor="green", style="filled" ];
-  _020 [ shape="record", label="<_p1> Var ptr" ];
-  _020:_p1 -> A009:w [ taillabel="*", labelangle="+30", color="red" ];
-  A006 -> _020:w [ arrowhead="tee" ];
-  A007 [ label="RW", shape="oval", fillcolor="green", style="filled" ];
-  _021 [ shape="record", label="Var sint32" ];
-  A007 -> _021:w [ arrowhead="tee" ];
-  A008 [ label="RW", shape="oval", fillcolor="green", style="filled" ];
-  _022 [ shape="record", label="Var sint32" ];
-  A008 -> _022:w [ arrowhead="tee" ];
-  A009 [ label="&", shape="oval", fillcolor="orange", style="filled" ];
-  _023 [ label="roots:*", style="filled", color="lightblue", shape="box" ];
-  { rank=same; A009; _023; }
-  _023 -> A009 [ arrowhead="tee" ];
-  _024 [ shape="record", label="<_p1> 0..511: D32[4,4]" ];
-  _024:_p1 -> A012 [ style="dotted" ];
-  A009 -> _024:w [ arrowhead="tee" ];
-  A010 [ label="", shape="oval" ];
-  _025 [ label="roots:&X", style="filled", color="lightblue", shape="box" ];
-  { rank=same; A010; _025; }
-  _025 -> A010 [ arrowhead="tee" ];
-  _026 [ shape="record", label="<_p1> 0..127: D32[4]" ];
-  _026:_p1 -> A013 [ style="dotted" ];
-  A010 -> _026:w [ arrowhead="tee" ];
-  A011 [ label="", shape="oval" ];
-  _027 [ label="roots:&R", style="filled", color="lightblue", shape="box" ];
-  { rank=same; A011; _027; }
-  _027 -> A011 [ arrowhead="tee" ];
-  _028 [ shape="record", label="<_p1> 0..127: D32[4]" ];
-  _028:_p1 -> A014 [ style="dotted" ];
-  A011 -> _028:w [ arrowhead="tee" ];
-  A012 [ label="R", shape="oval", fillcolor="green", style="filled" ];
-  _029 [ label="roots:*", style="filled", color="lightblue", shape="box" ];
-  { rank=same; A012; _029; }
-  _029 -> A012 [ arrowhead="tee" ];
-  _030 [ shape="record", label="Mem sint32" ];
-  A012 -> _030:w [ arrowhead="tee" ];
-  A013 [ label="R", shape="oval", fillcolor="green", style="filled" ];
-  _031 [ label="roots:&X+(..)", style="filled", color="lightblue",
-    shape="box"
-  ];
-  { rank=same; A013; _031; }
-  _031 -> A013 [ arrowhead="tee" ];
-  _032 [ shape="record", label="Mem sint32" ];
-  A013 -> _032:w [ arrowhead="tee" ];
-  A014 [ label="RW", shape="oval", fillcolor="green", style="filled" ];
-  _033 [ label="roots:&R+(..)", style="filled", color="lightblue",
-    shape="box"
-  ];
-  { rank=same; A014; _033; }
-  _033 -> A014 [ arrowhead="tee" ];
-  _034 [ shape="record", label="Mem sint32" ];
-  A014 -> _034:w [ arrowhead="tee" ];
-}
diff --git a/src/plugins/wp/tests/wp_region/oracle/structarray3.res.oracle b/src/plugins/wp/tests/wp_region/oracle/structarray3.res.oracle
deleted file mode 100644
index 1e7d3cfb40046d4e352658865cad70b70e222e9a..0000000000000000000000000000000000000000
--- a/src/plugins/wp/tests/wp_region/oracle/structarray3.res.oracle
+++ /dev/null
@@ -1,4 +0,0 @@
-[kernel] Parsing structarray3.i (no preprocessing)
-[wp] Region Graph: structarray3.0.dot
-[wp] Running WP plugin...
-[wp] Warning: Missing RTE guards
diff --git a/src/plugins/wp/tests/wp_region/oracle/structarray4.0.dot b/src/plugins/wp/tests/wp_region/oracle/structarray4.0.dot
deleted file mode 100644
index 7e75e99526513c32b32f184aa7c173118bac28b1..0000000000000000000000000000000000000000
--- a/src/plugins/wp/tests/wp_region/oracle/structarray4.0.dot
+++ /dev/null
@@ -1,110 +0,0 @@
-digraph "job" {
-  rankdir="LR" ;
-  node [ fontname="monospace" ];
-  edge [ fontname="monospace" ];
-  V000 [ label="M", shape="cds", style="filled", fillcolor="yellow" ];
-  V000:e -> A000 ;
-  V001 [ label="X", shape="cds", style="filled", fillcolor="yellow" ];
-  V001:e -> A001 ;
-  V002 [ label="R", shape="cds", style="filled", fillcolor="yellow" ];
-  V002:e -> A002 ;
-  V003 [ label="p", shape="cds", style="filled", fillcolor="yellow" ];
-  V003:e -> A003 ;
-  V004 [ label="i", shape="cds", style="filled", fillcolor="yellow" ];
-  V004:e -> A004 ;
-  V005 [ label="j", shape="cds", style="filled", fillcolor="yellow" ];
-  V005:e -> A005 ;
-  V006 [ label="C", shape="cds", style="filled", fillcolor="yellow" ];
-  V006:e -> A006 ;
-  A000 [ label="D", shape="oval" ];
-  _007 [ label="roots:&M", style="filled", color="lightblue", shape="box" ];
-  { rank=same; A000; _007; }
-  _007 -> A000 [ arrowhead="tee" ];
-  _008 [ shape="record", label="<_p1> Ref" ];
-  _008:_p1 -> A007:w [ taillabel="*", labelangle="+30", color="red" ];
-  A000 -> _008:w [ arrowhead="tee" ];
-  A001 [ label="D", shape="oval" ];
-  _009 [ label="roots:&X", style="filled", color="lightblue", shape="box" ];
-  { rank=same; A001; _009; }
-  _009 -> A001 [ arrowhead="tee" ];
-  _010 [ shape="record", label="<_p1> Ref" ];
-  _010:_p1 -> A008:w [ taillabel="*", labelangle="+30", color="red" ];
-  A001 -> _010:w [ arrowhead="tee" ];
-  A002 [ label="D", shape="oval" ];
-  _011 [ label="roots:&R", style="filled", color="lightblue", shape="box" ];
-  { rank=same; A002; _011; }
-  _011 -> A002 [ arrowhead="tee" ];
-  _012 [ shape="record", label="<_p1> Ref" ];
-  _012:_p1 -> A009:w [ taillabel="*", labelangle="+30", color="red" ];
-  A002 -> _012:w [ arrowhead="tee" ];
-  A003 [ label="DW", shape="oval", fillcolor="green", style="filled" ];
-  _013 [ shape="record", label="<_p1> Var ptr" ];
-  _013:_p1 -> A010:w [ taillabel="[..]", labeldistance="1.7",
-    labelangle="+40", color="red"
-  ];
-  A003 -> _013:w [ arrowhead="tee" ];
-  A004 [ label="RW", shape="oval", fillcolor="green", style="filled" ];
-  _014 [ shape="record", label="Var sint32" ];
-  A004 -> _014:w [ arrowhead="tee" ];
-  A005 [ label="RW", shape="oval", fillcolor="green", style="filled" ];
-  _015 [ shape="record", label="Var sint32" ];
-  A005 -> _015:w [ arrowhead="tee" ];
-  A006 [ label="DW", shape="oval", fillcolor="green", style="filled" ];
-  _016 [ shape="record", label="<_p1> Var ptr" ];
-  _016:_p1 -> A011:w [ taillabel="*", labelangle="+30", color="red" ];
-  A006 -> _016:w [ arrowhead="tee" ];
-  A007 [ label="", shape="oval" ];
-  _017 [ label="roots:&M", style="filled", color="lightblue", shape="box" ];
-  { rank=same; A007; _017; }
-  _017 -> A007 [ arrowhead="tee" ];
-  _018 [ shape="record", label="<_p1> 0..511: D32[16]" ];
-  _018:_p1 -> A012 [ style="dotted" ];
-  A007 -> _018:w [ arrowhead="tee" ];
-  A008 [ label="", shape="oval" ];
-  _019 [ label="roots:&X", style="filled", color="lightblue", shape="box" ];
-  { rank=same; A008; _019; }
-  _019 -> A008 [ arrowhead="tee" ];
-  _020 [ shape="record", label="<_p1> 0..127: D32[4]" ];
-  _020:_p1 -> A013 [ style="dotted" ];
-  A008 -> _020:w [ arrowhead="tee" ];
-  A009 [ label="", shape="oval" ];
-  _021 [ label="roots:&R", style="filled", color="lightblue", shape="box" ];
-  { rank=same; A009; _021; }
-  _021 -> A009 [ arrowhead="tee" ];
-  _022 [ shape="record", label="<_p1> 0..127: D32[4]" ];
-  _022:_p1 -> A014 [ style="dotted" ];
-  A009 -> _022:w [ arrowhead="tee" ];
-  A010 [ label="[]&", shape="oval", fillcolor="orange", style="filled" ];
-  _023 [ label="roots:*", style="filled", color="lightblue", shape="box" ];
-  { rank=same; A010; _023; }
-  _023 -> A010 [ arrowhead="tee" ];
-  _024 [ shape="record", label="<_p1> 0..511: D32[16]" ];
-  _024:_p1 -> A012 [ style="dotted" ];
-  A010 -> _024:w [ arrowhead="tee" ];
-  A011 [ label="&", shape="oval", fillcolor="orange", style="filled" ];
-  _025 [ shape="record", label="<_p1> 0..127: D32[4]" ];
-  _025:_p1 -> A012 [ style="dotted" ];
-  A011 -> _025:w [ arrowhead="tee" ];
-  A012 [ label="RW", shape="oval", fillcolor="green", style="filled" ];
-  _026 [ label="roots:*", style="filled", color="lightblue", shape="box" ];
-  { rank=same; A012; _026; }
-  _026 -> A012 [ arrowhead="tee" ];
-  _027 [ shape="record", label="Mem sint32" ];
-  A012 -> _027:w [ arrowhead="tee" ];
-  A013 [ label="R", shape="oval", fillcolor="green", style="filled" ];
-  _028 [ label="roots:&X+(..)", style="filled", color="lightblue",
-    shape="box"
-  ];
-  { rank=same; A013; _028; }
-  _028 -> A013 [ arrowhead="tee" ];
-  _029 [ shape="record", label="Mem sint32" ];
-  A013 -> _029:w [ arrowhead="tee" ];
-  A014 [ label="RW", shape="oval", fillcolor="green", style="filled" ];
-  _030 [ label="roots:&R+(..)", style="filled", color="lightblue",
-    shape="box"
-  ];
-  { rank=same; A014; _030; }
-  _030 -> A014 [ arrowhead="tee" ];
-  _031 [ shape="record", label="Mem sint32" ];
-  A014 -> _031:w [ arrowhead="tee" ];
-}
diff --git a/src/plugins/wp/tests/wp_region/oracle/structarray4.res.oracle b/src/plugins/wp/tests/wp_region/oracle/structarray4.res.oracle
deleted file mode 100644
index 0f68a735ae39b5918b9e2fda64ca0d901879e306..0000000000000000000000000000000000000000
--- a/src/plugins/wp/tests/wp_region/oracle/structarray4.res.oracle
+++ /dev/null
@@ -1,4 +0,0 @@
-[kernel] Parsing structarray4.i (no preprocessing)
-[wp] Region Graph: structarray4.0.dot
-[wp] Running WP plugin...
-[wp] Warning: Missing RTE guards
diff --git a/src/plugins/wp/tests/wp_region/oracle/swap.0.dot b/src/plugins/wp/tests/wp_region/oracle/swap.0.dot
deleted file mode 100644
index f4e8e067375c647f46f431296f159c8600f387aa..0000000000000000000000000000000000000000
--- a/src/plugins/wp/tests/wp_region/oracle/swap.0.dot
+++ /dev/null
@@ -1,40 +0,0 @@
-digraph "job" {
-  rankdir="LR" ;
-  node [ fontname="monospace" ];
-  edge [ fontname="monospace" ];
-  V000 [ label="x", shape="cds", style="filled", fillcolor="yellow" ];
-  V000:e -> A000 ;
-  V001 [ label="y", shape="cds", style="filled", fillcolor="yellow" ];
-  V001:e -> A001 ;
-  V002 [ label="t", shape="cds", style="filled", fillcolor="yellow" ];
-  V002:e -> A002 ;
-  A000 [ label="D", shape="oval" ];
-  _003 [ label="roots:&x", style="filled", color="lightblue", shape="box" ];
-  { rank=same; A000; _003; }
-  _003 -> A000 [ arrowhead="tee" ];
-  _004 [ shape="record", label="<_p1> Ref" ];
-  _004:_p1 -> A003:w [ taillabel="*", labelangle="+30", color="red" ];
-  A000 -> _004:w [ arrowhead="tee" ];
-  A001 [ label="D", shape="oval" ];
-  _005 [ label="roots:&y", style="filled", color="lightblue", shape="box" ];
-  { rank=same; A001; _005; }
-  _005 -> A001 [ arrowhead="tee" ];
-  _006 [ shape="record", label="<_p1> Ref" ];
-  _006:_p1 -> A004:w [ taillabel="*", labelangle="+30", color="red" ];
-  A001 -> _006:w [ arrowhead="tee" ];
-  A002 [ label="RW", shape="oval", fillcolor="green", style="filled" ];
-  _007 [ shape="record", label="Var sint32" ];
-  A002 -> _007:w [ arrowhead="tee" ];
-  A003 [ label="RW", shape="oval", fillcolor="green", style="filled" ];
-  _008 [ label="roots:&x", style="filled", color="lightblue", shape="box" ];
-  { rank=same; A003; _008; }
-  _008 -> A003 [ arrowhead="tee" ];
-  _009 [ shape="record", label="Var sint32" ];
-  A003 -> _009:w [ arrowhead="tee" ];
-  A004 [ label="RW", shape="oval", fillcolor="green", style="filled" ];
-  _010 [ label="roots:&y", style="filled", color="lightblue", shape="box" ];
-  { rank=same; A004; _010; }
-  _010 -> A004 [ arrowhead="tee" ];
-  _011 [ shape="record", label="Var sint32" ];
-  A004 -> _011:w [ arrowhead="tee" ];
-}
diff --git a/src/plugins/wp/tests/wp_region/oracle/swap.res.oracle b/src/plugins/wp/tests/wp_region/oracle/swap.res.oracle
deleted file mode 100644
index 77078dae158d2c0aab7dffec8982c49d0d4cbeb8..0000000000000000000000000000000000000000
--- a/src/plugins/wp/tests/wp_region/oracle/swap.res.oracle
+++ /dev/null
@@ -1,4 +0,0 @@
-[kernel] Parsing swap.i (no preprocessing)
-[wp] Region Graph: swap.0.dot
-[wp] Running WP plugin...
-[wp] Warning: Missing RTE guards
diff --git a/src/plugins/wp/tests/wp_region/oracle_qualif/array1.res.oracle b/src/plugins/wp/tests/wp_region/oracle_qualif/array1.res.oracle
deleted file mode 100644
index e7bafef6d0ddb31c0c6b0bfbae553ed91e43a9ab..0000000000000000000000000000000000000000
--- a/src/plugins/wp/tests/wp_region/oracle_qualif/array1.res.oracle
+++ /dev/null
@@ -1,6 +0,0 @@
-# frama-c -wp [...]
-[kernel] Parsing array1.i (no preprocessing)
-[wp] Running WP plugin...
-[wp] Warning: Missing RTE guards
-[wp] Warning: No goal generated
-------------------------------------------------------------
diff --git a/src/plugins/wp/tests/wp_region/oracle_qualif/array2.res.oracle b/src/plugins/wp/tests/wp_region/oracle_qualif/array2.res.oracle
deleted file mode 100644
index f65e5113a5de004f1735416feae1c6cccf9a2d17..0000000000000000000000000000000000000000
--- a/src/plugins/wp/tests/wp_region/oracle_qualif/array2.res.oracle
+++ /dev/null
@@ -1,6 +0,0 @@
-# frama-c -wp [...]
-[kernel] Parsing array2.i (no preprocessing)
-[wp] Running WP plugin...
-[wp] Warning: Missing RTE guards
-[wp] Warning: No goal generated
-------------------------------------------------------------
diff --git a/src/plugins/wp/tests/wp_region/oracle_qualif/array3.res.oracle b/src/plugins/wp/tests/wp_region/oracle_qualif/array3.res.oracle
deleted file mode 100644
index 8a0eef80a86db86ded3c0259766b6e8dfa11d6a4..0000000000000000000000000000000000000000
--- a/src/plugins/wp/tests/wp_region/oracle_qualif/array3.res.oracle
+++ /dev/null
@@ -1,6 +0,0 @@
-# frama-c -wp [...]
-[kernel] Parsing array3.i (no preprocessing)
-[wp] Running WP plugin...
-[wp] Warning: Missing RTE guards
-[wp] Warning: No goal generated
-------------------------------------------------------------
diff --git a/src/plugins/wp/tests/wp_region/oracle_qualif/array4.res.oracle b/src/plugins/wp/tests/wp_region/oracle_qualif/array4.res.oracle
deleted file mode 100644
index 43b02d2fdd5eca9ca26e7690ae3c8efd1c0dcb38..0000000000000000000000000000000000000000
--- a/src/plugins/wp/tests/wp_region/oracle_qualif/array4.res.oracle
+++ /dev/null
@@ -1,6 +0,0 @@
-# frama-c -wp [...]
-[kernel] Parsing array4.i (no preprocessing)
-[wp] Running WP plugin...
-[wp] Warning: Missing RTE guards
-[wp] Warning: No goal generated
-------------------------------------------------------------
diff --git a/src/plugins/wp/tests/wp_region/oracle_qualif/array5.res.oracle b/src/plugins/wp/tests/wp_region/oracle_qualif/array5.res.oracle
deleted file mode 100644
index 5dde4c62c227399d8568f8137b8e4b57221e8be6..0000000000000000000000000000000000000000
--- a/src/plugins/wp/tests/wp_region/oracle_qualif/array5.res.oracle
+++ /dev/null
@@ -1,6 +0,0 @@
-# frama-c -wp [...]
-[kernel] Parsing array5.i (no preprocessing)
-[wp] Running WP plugin...
-[wp] Warning: Missing RTE guards
-[wp] Warning: No goal generated
-------------------------------------------------------------
diff --git a/src/plugins/wp/tests/wp_region/oracle_qualif/array6.res.oracle b/src/plugins/wp/tests/wp_region/oracle_qualif/array6.res.oracle
deleted file mode 100644
index 87e0d0c26bf0a990fc829a839352f75b8e656f4e..0000000000000000000000000000000000000000
--- a/src/plugins/wp/tests/wp_region/oracle_qualif/array6.res.oracle
+++ /dev/null
@@ -1,6 +0,0 @@
-# frama-c -wp [...]
-[kernel] Parsing array6.i (no preprocessing)
-[wp] Running WP plugin...
-[wp] Warning: Missing RTE guards
-[wp] Warning: No goal generated
-------------------------------------------------------------
diff --git a/src/plugins/wp/tests/wp_region/oracle_qualif/array7.res.oracle b/src/plugins/wp/tests/wp_region/oracle_qualif/array7.res.oracle
deleted file mode 100644
index 58b7b84d760ce95e3c5d23a2c98b6be7086f2946..0000000000000000000000000000000000000000
--- a/src/plugins/wp/tests/wp_region/oracle_qualif/array7.res.oracle
+++ /dev/null
@@ -1,6 +0,0 @@
-# frama-c -wp [...]
-[kernel] Parsing array7.i (no preprocessing)
-[wp] Running WP plugin...
-[wp] Warning: Missing RTE guards
-[wp] Warning: No goal generated
-------------------------------------------------------------
diff --git a/src/plugins/wp/tests/wp_region/oracle_qualif/array8.res.oracle b/src/plugins/wp/tests/wp_region/oracle_qualif/array8.res.oracle
deleted file mode 100644
index ee372986dc5310bb4f6978e2add72844ddf3da6b..0000000000000000000000000000000000000000
--- a/src/plugins/wp/tests/wp_region/oracle_qualif/array8.res.oracle
+++ /dev/null
@@ -1,6 +0,0 @@
-# frama-c -wp [...]
-[kernel] Parsing array8.i (no preprocessing)
-[wp] Running WP plugin...
-[wp] Warning: Missing RTE guards
-[wp] Warning: No goal generated
-------------------------------------------------------------
diff --git a/src/plugins/wp/tests/wp_region/oracle_qualif/fb_ADD.res.oracle b/src/plugins/wp/tests/wp_region/oracle_qualif/fb_ADD.res.oracle
deleted file mode 100644
index 65aa343de9a1b94acd10ff6274490c5a3f722d8c..0000000000000000000000000000000000000000
--- a/src/plugins/wp/tests/wp_region/oracle_qualif/fb_ADD.res.oracle
+++ /dev/null
@@ -1,6 +0,0 @@
-# frama-c -wp [...]
-[kernel] Parsing fb_ADD.i (no preprocessing)
-[wp] Running WP plugin...
-[wp] Warning: Missing RTE guards
-[wp] Warning: No goal generated
-------------------------------------------------------------
diff --git a/src/plugins/wp/tests/wp_region/oracle_qualif/fb_SORT.res.oracle b/src/plugins/wp/tests/wp_region/oracle_qualif/fb_SORT.res.oracle
deleted file mode 100644
index eed91319fd7abab0f314fbbdfd71c1753ae78784..0000000000000000000000000000000000000000
--- a/src/plugins/wp/tests/wp_region/oracle_qualif/fb_SORT.res.oracle
+++ /dev/null
@@ -1,6 +0,0 @@
-# frama-c -wp [...]
-[kernel] Parsing fb_SORT.i (no preprocessing)
-[wp] Running WP plugin...
-[wp] Warning: Missing RTE guards
-[wp] Warning: No goal generated
-------------------------------------------------------------
diff --git a/src/plugins/wp/tests/wp_region/oracle_qualif/garbled.res.oracle b/src/plugins/wp/tests/wp_region/oracle_qualif/garbled.res.oracle
deleted file mode 100644
index ef140ddb0945880bdc5b4a9fe7961a59f61aa854..0000000000000000000000000000000000000000
--- a/src/plugins/wp/tests/wp_region/oracle_qualif/garbled.res.oracle
+++ /dev/null
@@ -1,6 +0,0 @@
-# frama-c -wp [...]
-[kernel] Parsing garbled.i (no preprocessing)
-[wp] Running WP plugin...
-[wp] Warning: Missing RTE guards
-[wp] Warning: No goal generated
-------------------------------------------------------------
diff --git a/src/plugins/wp/tests/wp_region/oracle_qualif/index.res.oracle b/src/plugins/wp/tests/wp_region/oracle_qualif/index.res.oracle
deleted file mode 100644
index 514228d38dc3ab6a10dcfa8d33622f0628694515..0000000000000000000000000000000000000000
--- a/src/plugins/wp/tests/wp_region/oracle_qualif/index.res.oracle
+++ /dev/null
@@ -1,6 +0,0 @@
-# frama-c -wp [...]
-[kernel] Parsing index.i (no preprocessing)
-[wp] Running WP plugin...
-[wp] Warning: Missing RTE guards
-[wp] Warning: No goal generated
-------------------------------------------------------------
diff --git a/src/plugins/wp/tests/wp_region/oracle_qualif/matrix.res.oracle b/src/plugins/wp/tests/wp_region/oracle_qualif/matrix.res.oracle
deleted file mode 100644
index 2b4866fb08ab090c40ba740c4ccd906303dbc66c..0000000000000000000000000000000000000000
--- a/src/plugins/wp/tests/wp_region/oracle_qualif/matrix.res.oracle
+++ /dev/null
@@ -1,6 +0,0 @@
-# frama-c -wp [...]
-[kernel] Parsing matrix.i (no preprocessing)
-[wp] Running WP plugin...
-[wp] Warning: Missing RTE guards
-[wp] Warning: No goal generated
-------------------------------------------------------------
diff --git a/src/plugins/wp/tests/wp_region/oracle_qualif/structarray1.res.oracle b/src/plugins/wp/tests/wp_region/oracle_qualif/structarray1.res.oracle
deleted file mode 100644
index ffb1d191f763685a760f84611bab0e15f56c7a1f..0000000000000000000000000000000000000000
--- a/src/plugins/wp/tests/wp_region/oracle_qualif/structarray1.res.oracle
+++ /dev/null
@@ -1,6 +0,0 @@
-# frama-c -wp [...]
-[kernel] Parsing structarray1.i (no preprocessing)
-[wp] Running WP plugin...
-[wp] Warning: Missing RTE guards
-[wp] Warning: No goal generated
-------------------------------------------------------------
diff --git a/src/plugins/wp/tests/wp_region/oracle_qualif/structarray2.res.oracle b/src/plugins/wp/tests/wp_region/oracle_qualif/structarray2.res.oracle
deleted file mode 100644
index 7625bb9224d3c4d3945cbc4efb68da60ffe10d52..0000000000000000000000000000000000000000
--- a/src/plugins/wp/tests/wp_region/oracle_qualif/structarray2.res.oracle
+++ /dev/null
@@ -1,6 +0,0 @@
-# frama-c -wp [...]
-[kernel] Parsing structarray2.i (no preprocessing)
-[wp] Running WP plugin...
-[wp] Warning: Missing RTE guards
-[wp] Warning: No goal generated
-------------------------------------------------------------
diff --git a/src/plugins/wp/tests/wp_region/oracle_qualif/structarray3.res.oracle b/src/plugins/wp/tests/wp_region/oracle_qualif/structarray3.res.oracle
deleted file mode 100644
index ecc9c7ec63c066d46c5bf594011263da37558e9f..0000000000000000000000000000000000000000
--- a/src/plugins/wp/tests/wp_region/oracle_qualif/structarray3.res.oracle
+++ /dev/null
@@ -1,6 +0,0 @@
-# frama-c -wp [...]
-[kernel] Parsing structarray3.i (no preprocessing)
-[wp] Running WP plugin...
-[wp] Warning: Missing RTE guards
-[wp] Warning: No goal generated
-------------------------------------------------------------
diff --git a/src/plugins/wp/tests/wp_region/oracle_qualif/structarray4.res.oracle b/src/plugins/wp/tests/wp_region/oracle_qualif/structarray4.res.oracle
deleted file mode 100644
index f71833e1171a8e563ddc262e66b27fa1d38b1a77..0000000000000000000000000000000000000000
--- a/src/plugins/wp/tests/wp_region/oracle_qualif/structarray4.res.oracle
+++ /dev/null
@@ -1,6 +0,0 @@
-# frama-c -wp [...]
-[kernel] Parsing structarray4.i (no preprocessing)
-[wp] Running WP plugin...
-[wp] Warning: Missing RTE guards
-[wp] Warning: No goal generated
-------------------------------------------------------------
diff --git a/src/plugins/wp/tests/wp_region/oracle_qualif/swap.res.oracle b/src/plugins/wp/tests/wp_region/oracle_qualif/swap.res.oracle
deleted file mode 100644
index ee37192b8778fae5286ec682656d921730952fbe..0000000000000000000000000000000000000000
--- a/src/plugins/wp/tests/wp_region/oracle_qualif/swap.res.oracle
+++ /dev/null
@@ -1,6 +0,0 @@
-# frama-c -wp [...]
-[kernel] Parsing swap.i (no preprocessing)
-[wp] Running WP plugin...
-[wp] Warning: Missing RTE guards
-[wp] Warning: No goal generated
-------------------------------------------------------------
diff --git a/src/plugins/wp/tests/wp_region/structarray1.i b/src/plugins/wp/tests/wp_region/structarray1.i
deleted file mode 100644
index e8fb0e753eb65c3fb5fd35c27ba3bd74b16cf5e9..0000000000000000000000000000000000000000
--- a/src/plugins/wp/tests/wp_region/structarray1.i
+++ /dev/null
@@ -1,18 +0,0 @@
-typedef struct Vector {
-  int coord[4];
-} * vector ;
-
-typedef struct Matrix {
-  int coef[4][4];
-} * matrix ;
-
-//@ \wp::wpregion *X , *R ;
-void job( matrix M , vector X , vector R )
-{
-  for (int i = 0; i < 4; i++) {
-    R->coord[i] = 0 ;
-    for (int j = 0; j < 4; i++) {
-      R->coord[i] += M->coef[i][j] * X->coord[j];
-    }
-  }
-}
diff --git a/src/plugins/wp/tests/wp_region/structarray2.i b/src/plugins/wp/tests/wp_region/structarray2.i
deleted file mode 100644
index 472077d231c95dd046d466e3f7871abe3e46ad43..0000000000000000000000000000000000000000
--- a/src/plugins/wp/tests/wp_region/structarray2.i
+++ /dev/null
@@ -1,18 +0,0 @@
-typedef struct Vector {
-  int coord[4];
-} * vector ;
-
-typedef struct Matrix {
-  int coef[4][4];
-} * matrix ;
-
-void job( matrix M , vector X , vector R )
-{
-  for (int i = 0; i < 4; i++) {
-    R->coord[i] = 0 ;
-    for (int j = 0; j < 4; i++) {
-      vector C = (vector) (M->coef[i]) ;
-      R->coord[i] += C->coord[j] * X->coord[j];
-    }
-  }
-}
diff --git a/src/plugins/wp/tests/wp_region/structarray3.i b/src/plugins/wp/tests/wp_region/structarray3.i
deleted file mode 100644
index fc05e0a87a77b692fcd6a4106ffcf7532a7dd039..0000000000000000000000000000000000000000
--- a/src/plugins/wp/tests/wp_region/structarray3.i
+++ /dev/null
@@ -1,18 +0,0 @@
-typedef struct Vector {
-  int coord[4];
-} * vector ;
-
-typedef struct Matrix {
-  int coef[4][4];
-} * matrix ;
-
-void job( int c , matrix P , matrix Q , vector X , vector R )
-{
-  matrix M = c ? P : Q ;
-  for (int i = 0; i < 4; i++) {
-    R->coord[i] = 0 ;
-    for (int j = 0; j < 4; i++) {
-      R->coord[i] += M->coef[i][j] * X->coord[j];
-    }
-  }
-}
diff --git a/src/plugins/wp/tests/wp_region/structarray4.i b/src/plugins/wp/tests/wp_region/structarray4.i
deleted file mode 100644
index c27ac7ed8f7fa1ea3ea5a52a0c1e87b0a23a1bd9..0000000000000000000000000000000000000000
--- a/src/plugins/wp/tests/wp_region/structarray4.i
+++ /dev/null
@@ -1,20 +0,0 @@
-typedef struct Vector {
-  int coord[4];
-} * vector ;
-
-typedef struct Matrix {
-  int coef[4][4];
-} * matrix ;
-
-void job( matrix M , vector X , vector R )
-{
-  int * p = (int *) M->coef ;
-  p[14] = 2 ;
-  for (int i = 0; i < 4; i++) {
-    R->coord[i] = 0 ;
-    for (int j = 0; j < 4; i++) {
-      vector C = (vector) (M->coef[i]) ;
-      R->coord[i] += C->coord[j] * X->coord[j];
-    }
-  }
-}
diff --git a/src/plugins/wp/tests/wp_region/swap.i b/src/plugins/wp/tests/wp_region/swap.i
deleted file mode 100644
index f299d9687047b1df56a724cb770bc950972274f0..0000000000000000000000000000000000000000
--- a/src/plugins/wp/tests/wp_region/swap.i
+++ /dev/null
@@ -1,8 +0,0 @@
-// Test Config
-
-void job(int *x,int *y)
-{
-  int t = *x ;
-  *x = *y ;
-  *y = t ;
-}
diff --git a/src/plugins/wp/tests/wp_region/test_config b/src/plugins/wp/tests/wp_region/test_config
deleted file mode 100644
index 4d45c6ca7df1a65ec039b874d56601b4cf276e50..0000000000000000000000000000000000000000
--- a/src/plugins/wp/tests/wp_region/test_config
+++ /dev/null
@@ -1,4 +0,0 @@
-PLUGIN: wp,rtegen
-CMD: @frama-c@
-LOG: @PTEST_NAME@.@PTEST_NUMBER@.dot
-OPT: -wp-prover none -wp-region -wp-msg-key dot,chunk,roots,garbled -wp-warn-key pedantic-assigns=inactive -wp-region-output-dot @PTEST_RESULT@/@PTEST_NAME@.@PTEST_NUMBER@.dot -wp-fct job -generated-spec-custom assigns:skip,exits:skip,terminates:skip
diff --git a/src/plugins/wp/tests/wp_region/test_config_qualif b/src/plugins/wp/tests/wp_region/test_config_qualif
deleted file mode 100644
index 4cd9b34453a93bc0bdedc29d321928e781110942..0000000000000000000000000000000000000000
--- a/src/plugins/wp/tests/wp_region/test_config_qualif
+++ /dev/null
@@ -1 +0,0 @@
-OPT: -wp-region  -generated-spec-custom assigns:skip,exits:skip,terminates:skip
diff --git a/src/plugins/wp/wp.ml b/src/plugins/wp/wp.ml
index 1c5a2d30adcc83efcba2be5271dc21ffaf8119a1..abeb0a7931bed7a557bac4234534ecc5a5447fdf 100644
--- a/src/plugins/wp/wp.ml
+++ b/src/plugins/wp/wp.ml
@@ -95,7 +95,6 @@ module MemDebug = MemDebug
 module MemEmpty = MemEmpty
 module MemLoader = MemLoader
 module MemMemory = MemMemory
-module MemRegion = MemRegion
 module MemTyped = MemTyped
 module MemVal = MemVal
 module MemVar = MemVar
@@ -123,12 +122,7 @@ module AssignsCompleteness = AssignsCompleteness
 
 (** {2 Region Analysis} *)
 
-module Region = Region
 module Layout = Layout
-module RegionAccess = RegionAccess
-module RegionAnalysis = RegionAnalysis
-module RegionAnnot = RegionAnnot
-module RegionDump = RegionDump
 
 (** {2 Compilers} *)
 
diff --git a/src/plugins/wp/wp_parameters.ml b/src/plugins/wp/wp_parameters.ml
index a0334d13b33e70c17d25d9fb35223a6788ed728d..9268c9e87a80e682a9c5a7c346a9a1c04da61d68 100644
--- a/src/plugins/wp/wp_parameters.ml
+++ b/src/plugins/wp/wp_parameters.ml
@@ -284,95 +284,6 @@ module Volatile =
                 Use -wp-no-volatile to ignore volatile attributes."
   end)
 
-(* -------------------------------------------------------------------------- *)
-(* --- Region Model                                                       --- *)
-(* -------------------------------------------------------------------------- *)
-
-let wp_region = add_group "Region Analysis"
-
-let () = Parameter_customize.set_group wp_region
-let () = Parameter_customize.do_not_save ()
-module Region =
-  False
-    (struct
-      let option_name = "-wp-region"
-      let help = "Perform Region Analysis (experimental)"
-    end)
-
-let () = Parameter_customize.set_group wp_region
-let () = Parameter_customize.do_not_save ()
-module Region_fixpoint =
-  True
-    (struct
-      let option_name = "-wp-region-fixpoint"
-      let help = "Compute region aliasing fixpoint"
-    end)
-
-let () = Parameter_customize.set_group wp_region
-let () = Parameter_customize.do_not_save ()
-module Region_cluster =
-  True
-    (struct
-      let option_name = "-wp-region-cluster"
-      let help = "Compute region clustering fixpoint"
-    end)
-
-let () = Parameter_customize.set_group wp_region
-let () = Parameter_customize.do_not_save ()
-module Region_inline =
-  True
-    (struct
-      let option_name = "-wp-region-inline"
-      let help = "Inline aliased sub-clusters"
-    end)
-
-let () = Parameter_customize.set_group wp_region
-let () = Parameter_customize.do_not_save ()
-module Region_rw =
-  True
-    (struct
-      let option_name = "-wp-region-rw"
-      let help = "Written region are considered read-write by default"
-    end)
-
-let () = Parameter_customize.set_group wp_region
-let () = Parameter_customize.do_not_save ()
-module Region_pack =
-  True
-    (struct
-      let option_name = "-wp-region-pack"
-      let help = "Pack clusters by default"
-    end)
-
-let () = Parameter_customize.set_group wp_region
-let () = Parameter_customize.do_not_save ()
-module Region_flat =
-  False
-    (struct
-      let option_name = "-wp-region-flat"
-      let help = "Flatten arrays by default"
-    end)
-
-let () = Parameter_customize.set_group wp_region
-module Region_annot =
-  False
-    (struct
-      let option_name = "-region-annot"
-      let help = "Register '@region' ACSL Annotations (auto with -wp-region)"
-    end)
-
-let () = Parameter_customize.set_group wp_region
-let () = Parameter_customize.is_invisible ()
-module Region_output_dot =
-  Filepath
-    (struct
-      let option_name = "-wp-region-output-dot"
-      let arg_name = "output.dot"
-      let file_kind = "DOT"
-      let existence = Fc_Filepath.Indifferent
-      let help = "Outputs the region graph in DOT format to the specified file."
-    end)
-
 (* ------------------------------------------------------------------------ *)
 (* ---  WP Strategy                                                     --- *)
 (* ------------------------------------------------------------------------ *)
diff --git a/src/plugins/wp/wp_parameters.mli b/src/plugins/wp/wp_parameters.mli
index 5c5159c59b555de8425115b69d7971a89c18ec07..84a25a418c36a8b3ca43d84f4b195aeb76505873 100644
--- a/src/plugins/wp/wp_parameters.mli
+++ b/src/plugins/wp/wp_parameters.mli
@@ -64,16 +64,6 @@ module Literals : Parameter_sig.Bool
 module Volatile : Parameter_sig.Bool
 module WeakIntModel : Parameter_sig.Bool
 
-module Region: Parameter_sig.Bool
-module Region_rw: Parameter_sig.Bool
-module Region_pack: Parameter_sig.Bool
-module Region_flat: Parameter_sig.Bool
-module Region_annot: Parameter_sig.Bool
-module Region_inline: Parameter_sig.Bool
-module Region_fixpoint: Parameter_sig.Bool
-module Region_cluster: Parameter_sig.Bool
-module Region_output_dot : Parameter_sig.Filepath
-
 (** {2 Computation Strategies} *)
 
 module Init: Parameter_sig.Bool