diff --git a/Makefile b/Makefile
index 33a67f1597a66546ae488bd42802c6ff9c7ae115..62da0160b06b00127cd4a487da4e77d2e5a8486b 100644
--- a/Makefile
+++ b/Makefile
@@ -430,6 +430,7 @@ LIB_CMO =\
 	src/libraries/datatype/type \
 	src/libraries/datatype/descr \
 	src/libraries/utils/filepath \
+	src/libraries/utils/sanitizer \
 	src/libraries/utils/pretty_utils \
 	src/libraries/utils/hook \
 	src/libraries/utils/bag \
diff --git a/headers/header_spec.txt b/headers/header_spec.txt
index 0a279499223744d29686aa8da1ff084dab09e751..80fdaba048b40b8b8a639b45aa48a1aa6e8077dc 100644
--- a/headers/header_spec.txt
+++ b/headers/header_spec.txt
@@ -667,12 +667,16 @@ src/libraries/utils/pretty_utils.ml: CEA_LGPL
 src/libraries/utils/pretty_utils.mli: CEA_LGPL
 src/libraries/utils/qstack.ml: CEA_LGPL
 src/libraries/utils/qstack.mli: CEA_LGPL
+src/libraries/utils/sanitizer.ml: CEA_LGPL
+src/libraries/utils/sanitizer.mli: CEA_LGPL
 src/libraries/utils/rangemap.ml: OCAML_STDLIB
 src/libraries/utils/rangemap.mli: OCAML_STDLIB
 src/libraries/utils/rgmap.ml: CEA_LGPL
 src/libraries/utils/rgmap.mli: CEA_LGPL
 src/libraries/utils/rich_text.ml: CEA_LGPL
 src/libraries/utils/rich_text.mli: CEA_LGPL
+src/libraries/utils/sanitizer.ml: CEA_LGPL
+src/libraries/utils/sanitizer.mli: CEA_LGPL
 src/libraries/utils/task.ml: CEA_LGPL
 src/libraries/utils/task.mli: CEA_LGPL
 src/libraries/utils/unicode.ml: CEA_LGPL
@@ -999,8 +1003,6 @@ src/plugins/report/csv.ml: CEA_LGPL_OR_PROPRIETARY
 src/plugins/report/csv.mli: CEA_LGPL_OR_PROPRIETARY
 src/plugins/report/dump.ml: CEA_LGPL_OR_PROPRIETARY
 src/plugins/report/dump.mli: CEA_LGPL_OR_PROPRIETARY
-src/plugins/report/property_names.ml: CEA_LGPL_OR_PROPRIETARY
-src/plugins/report/property_names.mli: CEA_LGPL_OR_PROPRIETARY
 src/plugins/report/register.ml: CEA_LGPL_OR_PROPRIETARY
 src/plugins/report/register.mli: CEA_LGPL_OR_PROPRIETARY
 src/plugins/report/report_parameters.ml: CEA_LGPL_OR_PROPRIETARY
diff --git a/share/analysis-scripts/frama-c.mk b/share/analysis-scripts/frama-c.mk
index 6f0ec68c482eabf8234d60eefabfeecb41fae351..3da9f1cf65582a904f5e2903fb7f0cf3adffa336 100644
--- a/share/analysis-scripts/frama-c.mk
+++ b/share/analysis-scripts/frama-c.mk
@@ -186,16 +186,17 @@ SHELL        := /bin/bash
 	    $(EVA) \
 	      -load $(PARSE_RESULT)/framac.sav -save $@/framac.sav \
 	      -eva-flamegraph $@/flamegraph.txt \
-	      -report-csv $@/alarms.csv -report-no-proven \
 	      -kernel-log w:$@/warnings.log \
 	      -from-log w:$@/warnings.log \
 	      -inout-log w:$@/warnings.log \
-	      -report-log w:$@/warnings.log \
 	      -scope-log w:$@/warnings.log \
 	      -eva-log w:$@/warnings.log \
-	      -metrics-log a:$@/metrics.log \
+	      -then \
+	      -report-csv $@/alarms.csv -report-no-proven \
+	      -report-log w:$@/warnings.log \
 	      -metrics-eva-cover \
-	      -then -nonterm -nonterm-log a:$@/nonterm.log \
+	      -metrics-log a:$@/metrics.log \
+	      -nonterm -nonterm-log a:$@/nonterm.log \
 	    || ($(RM) $@/stats.txt && false) # Prevents having error code reporting in stats.txt
 	} 2>&1 |
 	  $(SED_UNBUFFERED) '/\[eva\] Values at end of function/,999999d' |
diff --git a/src/kernel_services/ast_data/property.ml b/src/kernel_services/ast_data/property.ml
index 4b49226f70f318ca3b60565b60509917e2c86f86..233e4c4162cc2af8bc76e1bd0e600d2958777741 100644
--- a/src/kernel_services/ast_data/property.ml
+++ b/src/kernel_services/ast_data/property.ml
@@ -34,9 +34,9 @@ type identified_code_annotation =
     kernel_function * stmt * code_annotation
 
 type identified_allocation =
-    kernel_function 
-    * kinstr 
-    * behavior_or_loop 
+    kernel_function
+    * kinstr
+    * behavior_or_loop
     * (identified_term list * identified_term list)
 
 type identified_assigns =
@@ -116,7 +116,7 @@ type identified_extended = extended_loc * Cil_types.acsl_extension
 
 and identified_axiomatic = string * identified_property list
 
-and identified_lemma = 
+and identified_lemma =
     string * logic_label list * string list * predicate * location
 
 and identified_axiom = identified_lemma
@@ -163,15 +163,15 @@ let o_loc_of_stmt kf = function
 
 let get_kinstr = function
   | IPPredicate (_,_,ki,_)
-  | IPBehavior(_, ki,_,_) 
+  | IPBehavior(_, ki,_,_)
   | IPComplete (_,ki,_,_)
-  | IPDisjoint(_,ki,_,_) 
-  | IPAllocation (_,ki,_,_) 
-  | IPAssigns (_,ki,_,_) 
+  | IPDisjoint(_,ki,_,_)
+  | IPAllocation (_,ki,_,_)
+  | IPAssigns (_,ki,_,_)
   | IPFrom(_,ki,_,_)
   | IPReachable (_, ki, _)
   | IPDecrease (_,ki,_,_) -> ki
-  | IPAxiom _ 
+  | IPAxiom _
   | IPAxiomatic _
   | IPLemma _  -> Kglobal
   | IPOther(_,loc_e) -> ki_of_o_loc loc_e
@@ -192,14 +192,14 @@ let get_kf = function
   | IPPredicate (_,kf,_,_)
   | IPBehavior(kf,_,_,_)
   | IPCodeAnnot (kf,_,_)
-  | IPComplete (kf,_,_,_) 
-  | IPDisjoint(kf,_,_,_) 
+  | IPComplete (kf,_,_,_)
+  | IPDisjoint(kf,_,_,_)
   | IPAllocation(kf,_,_,_)
   | IPAssigns(kf,_,_,_)
-  | IPFrom(kf,_,_,_) 
+  | IPFrom(kf,_,_,_)
   | IPDecrease (kf,_,_,_)
   | IPPropertyInstance (kf, _, _, _) -> Some kf
-  | IPAxiom _ 
+  | IPAxiom _
   | IPAxiomatic _
   | IPLemma _ -> None
   | IPReachable (kfopt, _, _) -> kfopt
@@ -277,7 +277,7 @@ let get_behavior = function
   | IPAllocation(_,_,Id_loop _,_)
   | IPAssigns(_,_,Id_loop _,_)
   | IPFrom(_,_,Id_loop _,_)
-  | IPAxiom _ 
+  | IPAxiom _
   | IPAxiomatic _
   | IPExtended _
   | IPLemma _
@@ -293,8 +293,8 @@ let get_behavior = function
 
 include Datatype.Make_with_collections
     (struct
-      
-      include Datatype.Serializable_undefined 
+
+      include Datatype.Serializable_undefined
 
       type t = identified_property
       let name = "Property.t"
@@ -321,12 +321,12 @@ include Datatype.Make_with_collections
 	  Format.fprintf fmt "invariant@ %s for type %a" s Cil_printer.pp_typ ty
 	| IPGlobalInvariant(s,_,_) ->
 	  Format.fprintf fmt "global invariant@ %s" s
-	| IPBehavior(_kf, ki, active, b) -> 
+	| IPBehavior(_kf, ki, active, b) ->
             if Cil.is_default_behavior b then
               Format.pp_print_string fmt "default behavior"
             else
 	      Format.fprintf fmt "behavior %s" b.b_name;
-	    (match ki with 
+	    (match ki with
 	    | Kstmt s -> Format.fprintf fmt " for statement %d" s.sid
 	    | Kglobal -> ());
             pp_active fmt active
@@ -343,19 +343,19 @@ include Datatype.Make_with_collections
 	       (fun fmt s ->  Format.fprintf fmt " %s" s))
 	    l;
           pp_active fmt active
-	| IPAllocation(_, _, _, (f,a)) -> 
+	| IPAllocation(_, _, _, (f,a)) ->
 	    Cil_printer.pp_allocation fmt (FreeAlloc(f,a))
 	| IPAssigns(_, _, _, l) -> Cil_printer.pp_assigns fmt (Writes l)
 	| IPFrom (_,_,_, f) -> Cil_printer.pp_from fmt f
 	| IPDecrease(_, _, None,v) -> Cil_printer.pp_decreases fmt v
 	| IPDecrease(_, _, _,v) -> Cil_printer.pp_variant fmt v
 	| IPReachable(None, Kstmt _, _) ->  assert false
-	| IPReachable(None, Kglobal, _) -> 
+	| IPReachable(None, Kglobal, _) ->
 	  Format.fprintf fmt "reachability of entry point"
-	| IPReachable(Some kf, Kglobal, _) -> 
+	| IPReachable(Some kf, Kglobal, _) ->
 	  Format.fprintf fmt "reachability of function %a" Kf.pretty kf
-	| IPReachable(Some kf, Kstmt stmt, ba) -> 
-	  Format.fprintf fmt "reachability %s stmt %a in %a" 
+	| IPReachable(Some kf, Kstmt stmt, ba) ->
+	  Format.fprintf fmt "reachability %s stmt %a in %a"
 	    (match ba with Before -> "of" | After -> "post")
 	    Cil_datatype.Location.pretty_line (Cil_datatype.Stmt.loc stmt)
 	    Kf.pretty kf
@@ -398,10 +398,10 @@ include Datatype.Make_with_collections
         (* At most one loop variant per statement anyway, no
            need to discriminate against the code annotation itself *)
 	  Hashtbl.hash (10, Kf.hash kf, Kinstr.hash ki)
-	| IPBehavior(kf, s, a, b) -> 
+	| IPBehavior(kf, s, a, b) ->
 	  Hashtbl.hash
             (11, Kf.hash kf, Kinstr.hash s,
-             (b.b_name:string), (a:Datatype.String.Set.t)) 
+             (b.b_name:string), (a:Datatype.String.Set.t))
 	| IPReachable(kf, ki, ba) ->
 	  Hashtbl.hash(12, Extlib.may_map Kf.hash ~dft:0 kf,
                        Kinstr.hash ki, Hashtbl.hash ba)
@@ -418,7 +418,7 @@ include Datatype.Make_with_collections
       let rec equal p1 p2 =
 	let eq_bhv (f1,ki1,b1) (f2,ki2,b2) =
 	  Kf.equal f1 f2 && Kinstr.equal ki1 ki2
-	  && 
+	  &&
             (match b1, b2 with
             | Id_loop ca1, Id_loop ca2 ->
               ca1.annot_id = ca2.annot_id
@@ -435,7 +435,7 @@ include Datatype.Make_with_collections
 	| IPAxiomatic(s1, _), IPAxiomatic(s2, _)
 	| IPTypeInvariant(s1,_,_,_), IPTypeInvariant(s2,_,_,_)
 	| IPGlobalInvariant(s1,_,_), IPGlobalInvariant(s2,_,_)
-	| IPLemma (s1,_,_,_,_), IPLemma (s2,_,_,_,_) -> 
+	| IPLemma (s1,_,_,_,_), IPLemma (s2,_,_,_,_) ->
 	  Datatype.String.equal s1 s2
 	| IPCodeAnnot(_,_,ca1), IPCodeAnnot(_,_,ca2) ->
           ca1.annot_id = ca2.annot_id
@@ -494,7 +494,7 @@ include Datatype.Make_with_collections
           Datatype.Int.compare i1 i2
 	| IPCodeAnnot(_,_,ca1), IPCodeAnnot(_,_,ca2) ->
           Datatype.Int.compare ca1.annot_id ca2.annot_id
-	| IPBehavior(f1, k1, a1, b1), IPBehavior(f2, k2, a2, b2) -> 
+	| IPBehavior(f1, k1, a1, b1), IPBehavior(f2, k2, a2, b2) ->
 	  cmp_bhv (f1, k1, Id_contract (a1,b1)) (f2, k2, Id_contract (a2,b2))
 	| IPComplete(f1, ki1, a1, x1), IPComplete(f2, ki2, a2, x2)
 	| IPDisjoint(f1, ki1, a1, x1), IPDisjoint(f2, ki2, a2, x2) ->
@@ -518,17 +518,17 @@ include Datatype.Make_with_collections
 	  if n = 0 then Kinstr.compare ki1 ki2 else n
 	| IPReachable(kf1, ki1, ba1), IPReachable(kf2, ki2, ba2) ->
 	  let n = Extlib.opt_compare Kf.compare kf1 kf2 in
-	  if n = 0 then 
+	  if n = 0 then
 	    let n = Kinstr.compare ki1 ki2 in
 	    if n = 0 then Pervasives.compare ba1 ba2 else n
-	  else 
+	  else
 	    n
 	| IPAxiom (s1,_,_,_,_), IPAxiom (s2,_,_,_,_)
 	| IPAxiomatic(s1, _), IPAxiomatic(s2, _)
 	| IPTypeInvariant(s1,_,_,_), IPTypeInvariant(s2,_,_,_)
 	| IPLemma (s1,_,_,_,_), IPLemma (s2,_,_,_,_) ->
 	    Datatype.String.compare s1 s2
-	| IPOther(s1,le1), IPOther(s2,le2) -> 
+	| IPOther(s1,le1), IPOther(s2,le2) ->
 	    let s = Datatype.String.compare s1 s2 in
 	    if s <> 0 then s else other_loc_compare le1 le2
 	| IPAllocation (f1, ki1, b1, _), IPAllocation (f2, ki2, b2, _) ->
@@ -764,19 +764,26 @@ let rec pretty_debug fmt = function
       Cil_types_debug.pp_string s
       pp_other_loc ol
 
-module Names = struct
-  module NamesTbl = 
+(* -------------------------------------------------------------------------- *)
+(* --- Legacy Property Names                                              --- *)
+(* -------------------------------------------------------------------------- *)
+
+(* Shall be deprecated *)
+module LegacyNames =
+struct
+
+  module NamesTbl =
     State_builder.Hashtbl(Datatype.String.Hashtbl)(Datatype.Int)
       (struct
 	 let name = "PropertyNames"
-	 let dependencies = [ ] 
+	 let dependencies = [ ]
 	 let size = 97
        end)
   module IndexTbl =
     State_builder.Hashtbl(Hashtbl)(Datatype.String)
       (struct
 	 let name = "PropertyIndex"
-	 let dependencies = [ Ast.self; NamesTbl.self; Globals.Functions.self ] 
+	 let dependencies = [ Ast.self; NamesTbl.self; Globals.Functions.self ]
 	 let size = 97
        end)
 
@@ -793,10 +800,10 @@ module Names = struct
     match l with [] -> ()
       | _ -> Format.fprintf fmt "_%a"
           (Pretty_utils.pp_list ~sep:"_" Format.pp_print_string) l
-	  
-  let pp_code_annot_names fmt ca = 
+
+  let pp_code_annot_names fmt ca =
     match ca.annot_content with
-      | AAssert(for_bhv,named_pred) | AInvariant(for_bhv,_,named_pred) -> 
+      | AAssert(for_bhv,named_pred) | AInvariant(for_bhv,_,named_pred) ->
         let pp_for_bhv fmt l =
           match l with
           | [] -> ()
@@ -806,15 +813,15 @@ module Names = struct
         Format.fprintf fmt "%a%a" pp_names named_pred.pred_name pp_for_bhv for_bhv
       | AVariant(term, _) -> pp_names fmt term.term_name
       | _ -> () (* TODO : add some more names ? *)
-	  
-  let behavior_prefix b = 
+
+  let behavior_prefix b =
     if Cil.is_default_behavior b then ""
     else b.b_name ^ "_"
 
-  let variant_suffix = function      
+  let variant_suffix = function
     | (_,Some s) -> s
     | _ -> ""
-	
+
   let string_of_termination_kind = function
       Normal -> "post"
     | Exits -> "exit"
@@ -836,19 +843,19 @@ module Names = struct
     | OLStmt (kf,s) -> kf_prefix kf ^ stmt_prefix s
     | OLGlob _ -> "global_"
 
-  let predicate_kind_txt pk ki = 
+  let predicate_kind_txt pk ki =
     let name = match pk with
       | PKRequires b -> (behavior_prefix b) ^ "pre"
       | PKAssumes b -> (behavior_prefix b) ^ "assume"
       | PKEnsures (b, tk) -> (behavior_prefix b) ^ string_of_termination_kind tk
-      | PKTerminates -> "term" 
+      | PKTerminates -> "term"
     in
       (ki_prefix ki) ^ name
 
   let active_prefix fmt a =
     let print_one a = Format.fprintf fmt "_%s" a in
     Datatype.String.Set.iter print_one a
-	
+
   let rec id_prop_txt p = match p with
     | IPPredicate (pk,kf,ki,idp) ->
         Format.asprintf "%s%s%a"
@@ -858,7 +865,7 @@ module Names = struct
       Format.asprintf  "%sextended%a" (extended_loc_prefix le) pp_names [name]
     | IPCodeAnnot (kf,_, ca) ->
         let name = match ca.annot_content with
-          | AAssert _ -> "assert" 
+          | AAssert _ -> "assert"
           | AInvariant (_,true,_) -> "loop_inv"
           | AInvariant _ -> "inv"
           | APragma _ -> "pragma"
@@ -885,7 +892,7 @@ module Names = struct
         name pp_names named_pred.pred_name
     | IPAllocation (kf, ki, (Id_contract (a,b)), _) ->
       Format.asprintf "%s%s%a%salloc"
-        (kf_prefix kf) (ki_prefix ki) active_prefix a (behavior_prefix b) 
+        (kf_prefix kf) (ki_prefix ki) active_prefix a (behavior_prefix b)
     | IPAllocation (kf, Kstmt _s, (Id_loop ca), _) ->
       Format.asprintf "%sloop_alloc%a"
         (kf_prefix kf) pp_code_annot_names ca
@@ -897,7 +904,7 @@ module Names = struct
       Format.asprintf "%sloop_assign%a"
         (kf_prefix kf) pp_code_annot_names ca
     | IPAssigns _ -> assert false
-    | IPFrom (_, _, _, (out,_)) -> 
+    | IPFrom (_, _, _, (out,_)) ->
         "from_id_"^(string_of_int (out.it_id))
     | IPReachable _ -> "reachable_stmt"
     | IPBehavior(kf, ki, a, b) ->
@@ -910,7 +917,7 @@ module Names = struct
     | IPOther(s,le) -> other_loc_prefix le ^ s
 
   (** function used to normalize basename *)
-  let normalize_basename s = 
+  let normalize_basename s =
     let is_valid_char_id = function
       | 'a'..'z' | 'A' .. 'Z' | '0' .. '9' | '_' -> true
       | _ -> false
@@ -926,7 +933,7 @@ module Names = struct
   (** returns the name that should be returned by the function [get_prop_name_id] if the given property has [name] as basename. That name is reserved so that [get_prop_name_id prop] can never return an identical name. *)
   let reserve_name_id basename =
     let basename = normalize_basename basename in
-      try 
+      try
 	let speed_up_start = NamesTbl.find basename in
 	  (* this basename is already reserved *)
 	let n,unique_name = Extlib.make_unique_name NamesTbl.mem ~sep:"_" ~start:speed_up_start basename
@@ -935,7 +942,7 @@ module Names = struct
       with Not_found -> (* first time that basename is reserved *)
 	NamesTbl.add basename 2 ;
 	basename
-	  
+
   (** returns the basename of the property. *)
   let get_prop_basename ip = normalize_basename (id_prop_txt ip)
 
@@ -949,19 +956,205 @@ module Names = struct
 	IndexTbl.add ip unique_name ;
 	unique_name
 
-(* 
-  (** force computation of the unique name identifying the property *)
-  let make_prop_name_id ip =
-    ignore (get_prop_name_id ip)
-      
-  let remove_prop_name_id ip =
-    try 
-      ignore (IndexTbl.find ip);
-      IndexTbl.remove ip
-  with Not_found -> ()
-*)
 end
 
+(* -------------------------------------------------------------------------- *)
+(* --- Property Names                                                     --- *)
+(* -------------------------------------------------------------------------- *)
+
+module Names =
+struct
+
+  open Cil_types
+
+  type part =
+    | B of behavior
+    | K of kernel_function
+    | A of string
+    | I of identified_predicate
+    | P of predicate
+    | T of term
+    | S of stmt
+
+  let add_part buffer = function
+    | B bhv ->
+      if not (Cil.is_default_behavior bhv)
+      then Sanitizer.add_string buffer bhv.b_name
+    | K kf -> Sanitizer.add_string buffer (Kernel_function.get_name kf)
+    | A msg -> Sanitizer.add_string buffer msg
+    | S stmt -> Sanitizer.add_string buffer (Printf.sprintf "s%d" stmt.sid)
+    | I { ip_content = { pred_name = a } }
+    | P { pred_name = a } | T { term_name = a } -> Sanitizer.add_list buffer a
+
+  let rec add_parts buffer = function
+    | [] -> ()
+    | p::ps ->
+      let open Sanitizer in
+      add_part buffer p ; add_sep buffer ; add_parts buffer ps
+
+  let rec parts_of_property ip : part list =
+    match ip with
+    | IPBehavior(kf,Kglobal,_,bhv) ->
+      [ K kf ; B bhv ]
+    | IPBehavior(kf,Kstmt s,_,bhv) ->
+      [ K kf ; B bhv ; S s ]
+
+    | IPPredicate (PKAssumes bhv,kf,_,ip) ->
+      [ K kf ; B bhv ; A "assumes" ; I ip ]
+    | IPPredicate (PKRequires bhv,kf,_,ip) ->
+      [ K kf ; B bhv ; A "requires" ; I ip ]
+    | IPPredicate (PKEnsures(bhv,Normal),kf,_,ip) ->
+      [ K kf ; B bhv ; A "ensures" ; I ip ]
+    | IPPredicate (PKEnsures(bhv,Exits),kf,_,ip) ->
+      [ K kf ; B bhv ; A "exits" ; I ip ]
+    | IPPredicate (PKEnsures(bhv,Breaks),kf,_,ip) ->
+      [ K kf ; B bhv ; A "breaks" ; I ip ]
+    | IPPredicate (PKEnsures(bhv,Continues),kf,_,ip) ->
+      [ K kf ; B bhv ; A "continues" ; I ip ]
+    | IPPredicate (PKEnsures(bhv,Returns),kf,_,ip) ->
+      [ K kf ; B bhv ; A "returns" ; I ip ]
+    | IPPredicate (PKTerminates,kf,_,ip) ->
+      [ K kf ; A "terminates" ; I ip ]
+
+    | IPAllocation(kf,_,Id_contract(_,bhv),_) ->
+      [ K kf ; B bhv ; A "allocates" ]
+    | IPAllocation(kf,_,Id_loop _,_) ->
+      [ K kf ; A "loop_allocates" ]
+
+    | IPAssigns(kf,_,Id_contract(_,bhv),_) ->
+      [ K kf ; B bhv ; A "assigns" ]
+
+    | IPAssigns(kf,_,Id_loop _,_) ->
+      [ K kf ; A "loop_assigns" ]
+
+    | IPFrom(kf,_,Id_contract(_,bhv),_) ->
+      [ K kf ; B bhv ; A "assigns_from" ]
+
+    | IPFrom(kf,_,Id_loop _,_) ->
+      [ K kf ; A "loop_assigns_from" ]
+
+    | IPDecrease (kf,_,None,_) ->
+      [ K kf ; A "variant" ]
+
+    | IPDecrease (kf,_,Some _,_) ->
+      [ K kf ; A "loop_variant" ]
+
+    | IPCodeAnnot (kf,stmt, { annot_content = AStmtSpec _ } ) ->
+      [ K kf ; A "contract" ; S stmt ]
+
+    | IPCodeAnnot (kf,stmt, { annot_content = APragma _ } ) ->
+      [ K kf ; A "pragma" ; S stmt ]
+
+    | IPCodeAnnot (kf,stmt, { annot_content = AExtended(_,_,(_,clause,_,_)) } )
+      -> [ K kf ; A clause ; S stmt ]
+
+    | IPCodeAnnot (kf,_, { annot_content = AAssert(_,p) } ) ->
+      [K kf ; A "assert" ; P p ]
+    | IPCodeAnnot (kf,_, { annot_content = AInvariant(_,true,p) } ) ->
+      [K kf ; A "loop_invariant" ; P p ]
+    | IPCodeAnnot (kf,_, { annot_content = AInvariant(_,false,p) } ) ->
+      [K kf ; A "invariant" ; P p ]
+    | IPCodeAnnot (kf,_, { annot_content = AVariant(e,_) } ) ->
+      [K kf ; A "loop_variant" ; T e ]
+    | IPCodeAnnot (kf,_, { annot_content = AAssigns _ } ) ->
+      [K kf ; A "loop_assigns" ]
+    | IPCodeAnnot (kf,_, { annot_content = AAllocation _ } ) ->
+      [K kf ; A "loop_allocates" ]
+
+    | IPComplete (kf,_,_,cs) ->
+      (K kf :: A "complete" :: List.map (fun a -> A a) cs)
+    | IPDisjoint(kf,_,_,cs) ->
+      (K kf :: A "disjoint" :: List.map (fun a -> A a) cs)
+
+    | IPReachable (None, _, _) -> []
+    | IPReachable (Some kf,Kglobal,Before) ->
+      [ K kf ; A "reachable" ]
+    | IPReachable (Some kf,Kglobal,After) ->
+      [ K kf ; A "reachable_post" ]
+    | IPReachable (Some kf,Kstmt s,Before) ->
+      [ K kf ; A "reachable" ; S s ]
+    | IPReachable (Some kf,Kstmt s,After) ->
+      [ K kf ; A "reachable_after" ; S s ]
+
+    | IPAxiomatic _
+    | IPAxiom _ -> []
+    | IPLemma(name,_,_,p,_) ->
+      [ A "lemma" ; A name ; P p ]
+
+    | IPTypeInvariant(name,_,_,_)
+    | IPGlobalInvariant(name,_,_) ->
+      [ A "invariant" ; A name ]
+
+    | IPOther(name,OLGlob _) -> [ A name ]
+    | IPOther(name,OLContract kf) -> [ K kf ; A name ]
+    | IPOther(name,OLStmt(kf,s)) -> [ K kf ; A name ; S s ]
+
+    | IPExtended(ELGlob,(_,name,_,_)) -> [ A name ]
+    | IPExtended(ELContract(kf),(_,name,_,_)) -> [ K kf ; A name ]
+    | IPExtended(ELStmt(kf,s),(_,name,_,_)) -> [ K kf ; A name ; S s ]
+
+    | IPPropertyInstance (_, _, _, ip) -> parts_of_property ip
+
+  let get_prop_basename ?truncate ip =
+    let buffer =
+      match truncate with
+      | None -> Sanitizer.create ~truncate:false 20
+      | Some n -> Sanitizer.create ~truncate:true n
+    in
+    add_parts buffer (parts_of_property ip) ;
+    Sanitizer.contents buffer
+
+  (* Numerotation of properties with same basename *)
+  module NamesTbl =
+    State_builder.Hashtbl(Datatype.String.Hashtbl)(Datatype.Int)
+      (struct
+	let name = "Property.Names.NamesTbl"
+        let dependencies = [ ]
+        let size = 97
+      end)
+
+  (* Computed name of properties *)
+  module IndexTbl = (* indexed by Property *)
+    State_builder.Hashtbl(Hashtbl)(Datatype.String)
+      (struct
+	let name = "Property.Names.IndexTbl"
+	let dependencies = [ Ast.self; NamesTbl.self; Globals.Functions.self ]
+	let size = 97
+      end)
+
+  let self = IndexTbl.self
+
+  let compute_name_id basename =
+    try
+      let speed_up_start = NamesTbl.find basename in
+      (* this basename is already reserved *)
+      let n,unique_name = Extlib.make_unique_name NamesTbl.mem ~sep:"_" ~start:speed_up_start basename
+      in NamesTbl.replace basename (succ n) ; (* to speed up Extlib.make_unique_name for next time *)
+      unique_name
+    with Not_found -> (* first time that basename is reserved *)
+      NamesTbl.add basename 2 ;
+      basename
+
+  let get_prop_name_id ip =
+    try IndexTbl.find ip
+    with Not_found -> (* first time we are asking for a name for that [ip] *)
+      let basename = get_prop_basename ip in
+      let unique_name = compute_name_id basename in
+      IndexTbl.add ip unique_name ;
+      unique_name
+
+end
+
+(* -------------------------------------------------------------------------- *)
+(* --- Smart Constructors                                                 --- *)
+(* -------------------------------------------------------------------------- *)
+
+
+(* -------------------------------------------------------------------------- *)
+(* --- Smart Constructors                                                 --- *)
+(* -------------------------------------------------------------------------- *)
+
+
 let ip_other s le = IPOther(s,le)
 
 let ip_reachable_stmt kf ki = IPReachable(Some kf, Kstmt ki, Before)
@@ -976,9 +1169,9 @@ let ip_reachable_ppt p =
     | IPDecrease _ | IPPropertyInstance _ | IPOther _
     | IPTypeInvariant _ | IPGlobalInvariant _
       -> Before
-    | IPPredicate(PKEnsures _, _, _, _) | IPAssigns _ | IPFrom _ 
+    | IPPredicate(PKEnsures _, _, _, _) | IPAssigns _ | IPFrom _
     | IPExtended _
-    | IPBehavior _ 
+    | IPBehavior _
       -> After
     | IPReachable _ -> Kernel.fatal "IPReachable(IPReachable _) is not possible"
   in
@@ -1012,7 +1205,7 @@ let ip_assigns_of_behavior kf st ~active b =
   let a = Datatype.String.Set.of_list active in
   ip_of_assigns kf st (Id_contract (a,b)) b.b_assigns
 
-let ip_of_from kf st loc from = 
+let ip_of_from kf st loc from =
   match snd from with
     | FromAny -> None
     | From _ -> Some (IPFrom (kf,st, loc, from))
@@ -1021,13 +1214,13 @@ let ip_from_of_behavior kf st ~active b =
   match b.b_assigns with
   | WritesAny -> []
   | Writes l ->
-    let treat_from acc (out, froms) = match froms with 
+    let treat_from acc (out, froms) = match froms with
       | FromAny -> acc
       | From _ ->
         let a = Datatype.String.Set.of_list active in
 	let ip =
           Extlib.the (ip_of_from kf st (Id_contract (a,b)) (out, froms))
-        in 
+        in
 	ip :: acc
     in
     List.fold_left treat_from [] l
@@ -1128,10 +1321,10 @@ let ip_of_code_annot kf stmt ca =
   | AAssert _ | AInvariant _ -> [ IPCodeAnnot(kf, stmt, ca) ]
   | AStmtSpec (active,s) -> ip_of_spec kf ki active s
   | AVariant t -> [ IPDecrease (kf,ki,(Some ca),t) ]
-  | AAllocation _ -> 
+  | AAllocation _ ->
       Extlib.list_of_opt (ip_allocation_of_code_annot kf ki ca)
     @ ip_from_of_code_annot kf ki ca
-  | AAssigns _ -> 
+  | AAssigns _ ->
     Extlib.list_of_opt (ip_assigns_of_code_annot kf ki ca)
     @ ip_from_of_code_annot kf ki ca
   | APragma p when Logic_utils.is_property_pragma p ->
@@ -1150,7 +1343,7 @@ let ip_of_code_annot_single kf stmt ca = match ip_of_code_annot kf stmt ca with
     raise (Invalid_argument "ip_of_code_annot_single")
   | [ ip ] -> ip
   | ip :: _ ->
-    Kernel.warning 
+    Kernel.warning
       "@[choosing one of multiple properties associated \
            to code annotation@\n%a@]"
       Cil_printer.pp_code_annotation ca;
@@ -1161,12 +1354,12 @@ let ip_of_code_annot_single kf stmt ca = match ip_of_code_annot kf stmt ca with
 let ip_of_global_annotation a =
   let once = true in
   let rec aux acc = function
-    | Daxiomatic(name, l, _, _) -> 
+    | Daxiomatic(name, l, _, _) ->
       let ppts = List.fold_left aux [] l in
       IPAxiomatic(name, ppts) :: (ppts @ acc)
     | Dlemma(name, true, a, b, c, _, d) -> ip_axiom (name,a,b,c,d) :: acc
     | Dlemma(name, false, a, b, c, _, d) -> ip_lemma (name,a,b,c,d) :: acc
-    | Dinvariant(l, loc) -> 
+    | Dinvariant(l, loc) ->
       let pred = match l.l_body with
 	| LBpred p -> p
 	| _ -> assert false
@@ -1190,8 +1383,8 @@ let ip_of_global_annotation a =
       (* TODO *)
       Kernel.warning ~once "ignoring status of custom annotation";
       acc
-    | Dmodel_annot _ | Dfun_or_pred _ | Dvolatile _ | Dtype _ -> 
-      (* no associated status for these annotations *) 
+    | Dmodel_annot _ | Dfun_or_pred _ | Dvolatile _ | Dtype _ ->
+      (* no associated status for these annotations *)
       acc
     | Dextended(ext,_,_) -> IPExtended (ELGlob, ext) :: acc
   in
@@ -1199,7 +1392,7 @@ let ip_of_global_annotation a =
 
 let ip_of_global_annotation_single a = match ip_of_global_annotation a with
   | [] -> None
-  | ip :: _ -> 
+  | ip :: _ ->
     (* the first one is the good one, see ip_of_global_annotation *)
     Some ip
 
diff --git a/src/kernel_services/ast_data/property.mli b/src/kernel_services/ast_data/property.mli
index 7b5100d1ae11ab05d021dc551b057805e680febe..61f401c12a113f0abec2eebf75176897db61c6cb 100644
--- a/src/kernel_services/ast_data/property.mli
+++ b/src/kernel_services/ast_data/property.mli
@@ -461,23 +461,32 @@ val source: identified_property -> Filepath.position option
 (** {2 names} *)
 (**************************************************************************)
 
+
+(** @since Frama-C+dev deprecated old naming scheeme, 
+    to be removed in future versions. *)
+module LegacyNames :
+sig
+  val self: State.t
+  val get_prop_basename: identified_property -> string
+  val get_prop_name_id: identified_property -> string
+end
+
 (** @since Oxygen-20120901 *)
-module Names: sig
+module Names :
+sig
 
   val self: State.t
 
   val get_prop_name_id: identified_property -> string
-    (** returns a unique name identifying the property.
-	This name is built from the basename of the property. *)
-    
-  val get_prop_basename: identified_property -> string
-    (** returns the basename of the property. *)
+  (** returns a unique name identifying the property.
+      This name is built from the basename of the property. 
+      @modify Frama-C+dev new naming scheme, Cf. LegacyNames
+  *)
     
-  val reserve_name_id: string -> string
-(** returns the name that should be returned by the function
-    [get_prop_name_id] if the given property has [name] as basename. That name
-    is reserved so that [get_prop_name_id prop] can never return an identical
-    name. *)
+  val get_prop_basename: ?truncate:int -> identified_property -> string
+  (** returns the basename of the property. 
+      @modify Frama-C+dev additional truncation parameter
+  *)
 
 end
 
diff --git a/src/kernel_services/ast_queries/file.ml b/src/kernel_services/ast_queries/file.ml
index cc22eb64b92a5628a90b5cb3d00c82b73c678fbd..eb8c87f31fb8609cf32f555fb36e40a3c18e6d71 100644
--- a/src/kernel_services/ast_queries/file.ml
+++ b/src/kernel_services/ast_queries/file.ml
@@ -119,7 +119,7 @@ let from_filename ?cpp f =
         | None -> get_preprocessor_command ()
         | Some cpp -> cpp, cpp_opt_kind ()
       in
-      (if flags = "" then cpp else cpp ^ " " ^ flags), gnu
+      (if flags = [] then cpp else cpp ^ " " ^ String.concat " " flags), gnu
   in
   if Filename.check_suffix f ".i" then begin
     NoCPP f
diff --git a/src/kernel_services/ast_queries/json_compilation_database.ko.ml b/src/kernel_services/ast_queries/json_compilation_database.ko.ml
index 079422abcf706e5f3d4052bf209cbe9055686379..1536859cce6c7eb3cf1436e30ce370d607679892 100644
--- a/src/kernel_services/ast_queries/json_compilation_database.ko.ml
+++ b/src/kernel_services/ast_queries/json_compilation_database.ko.ml
@@ -31,4 +31,4 @@ let get_flags _ =
       "Attempt to parse json compilation database %s \
        with a Frama-C compiled without Yojson support." db
   end;
-  ""
+  []
diff --git a/src/kernel_services/ast_queries/json_compilation_database.mli b/src/kernel_services/ast_queries/json_compilation_database.mli
index 8bd90611e25f9aded8fb15a36f03c1eef384daeb..d6caacc0cab16d9a85050668a4b5c0bcae750d42 100644
--- a/src/kernel_services/ast_queries/json_compilation_database.mli
+++ b/src/kernel_services/ast_queries/json_compilation_database.mli
@@ -23,4 +23,4 @@
 (** [get_flags f] returns the preprocessing flags associated to file [f]
     in the JSON compilation database (when enabled), or the empty string
     otherwise. If not empty, the flags always start with a space. *)
-val get_flags : Datatype.Filepath.t -> string
+val get_flags : Datatype.Filepath.t -> string list
diff --git a/src/kernel_services/ast_queries/json_compilation_database.ok.ml b/src/kernel_services/ast_queries/json_compilation_database.ok.ml
index 2f2990575fa4e91b7e24bf26fee4fb02bd6b415e..851ddde5a87304e73ed6dd7c9e94d552b24a7132 100644
--- a/src/kernel_services/ast_queries/json_compilation_database.ok.ml
+++ b/src/kernel_services/ast_queries/json_compilation_database.ok.ml
@@ -20,10 +20,12 @@
 (*                                                                        *)
 (**************************************************************************)
 
+module StringList = Datatype.List(Datatype.String)
+
 module Flags =
   State_builder.Hashtbl
     (Datatype.Filepath.Hashtbl)
-    (Datatype.String)
+    (StringList)
     (struct
       let name ="JsonCompilationDatabase.Flags"
       let dependencies = [Kernel.JsonCompilationDatabase.self]
@@ -205,18 +207,28 @@ let parse_entry ?(cwd=Sys.getcwd()) (r : Yojson.Basic.json) =
   (* Note: the same file may be compiled several times, under different
      (and possibly incompatible) configurations, leading to multiple
      occurrences in the list. Since we cannot infer which of them is the
-     "right" one, we pick the first and warn the user if there are
-     others. *)
-  let flags = String.concat " " (List.rev res) in
+     "right" one, we replace them with the latest ones found, warning the
+     user if previous flags were different. *)
+  let flags = List.rev res in
   try
     let previous_flags = Flags.find path in
     if previous_flags <> flags then
+      let removed_flags = List.filter (fun e -> not (List.mem e previous_flags)) flags in
+      let removed_str =
+        if removed_flags = [] then "" else
+          Format.asprintf "@ Old flags no longer present: %a"
+            (Pretty_utils.pp_list ~sep:" " Format.pp_print_string) removed_flags
+      in
+      let added_flags = List.filter (fun e -> not (List.mem e flags)) previous_flags in
+      let added_str =
+        if added_flags = [] then "" else
+          Format.asprintf "@ New flags not previously present: %a"
+            (Pretty_utils.pp_list ~sep:" " Format.pp_print_string) added_flags
+      in
       Kernel.warning ~wkey:Kernel.wkey_jcdb
-        "@[<v>found duplicate flags for '%a'.\
-         @ Previous flags: %s\
-         @      New flags: %s@]" Datatype.Filepath.pretty path
-        previous_flags flags;
-    Flags.replace path flags
+        "@[<v>found duplicate flags for '%a', replacing old flags.%s%s@]"
+        Datatype.Filepath.pretty path removed_str added_str;
+      Flags.replace path flags
   with
   | Not_found ->
     Flags.add path flags
@@ -250,11 +262,11 @@ let get_flags f =
     try
       let flags = Flags.find f in
       Kernel.feedback ~dkey:Kernel.dkey_compilation_db
-        "flags found for '%a': %s"  Datatype.Filepath.pretty f flags;
+        "flags found for '%a': %a"  Datatype.Filepath.pretty f StringList.pretty flags;
       flags
     with Not_found ->
       Kernel.feedback ~dkey:Kernel.dkey_compilation_db
         "no flags found for '%a'"  Datatype.Filepath.pretty f;
-      ""
+      []
   end
-  else ""
+  else []
diff --git a/src/kernel_services/plugin_entry_points/kernel.ml b/src/kernel_services/plugin_entry_points/kernel.ml
index 4557fc830718516406d81c41596b812271f7878f..5063b344f1198a3ea61441f44345d12062bb7e8b 100644
--- a/src/kernel_services/plugin_entry_points/kernel.ml
+++ b/src/kernel_services/plugin_entry_points/kernel.ml
@@ -153,6 +153,7 @@ let () = set_warn_status wkey_cert_exp_10 Log.Winactive
 let wkey_check_volatile = register_warn_category "check:volatile"
 
 let wkey_jcdb = register_warn_category "pp:compilation-db"
+let () = set_warn_status wkey_jcdb Log.Wonce
 
 let wkey_implicit_function_declaration = register_warn_category
     "typing:implicit-function-declaration"
diff --git a/src/libraries/utils/json.mli b/src/libraries/utils/json.mli
index 39136af9caceae2176591cb428ab3529b4619ea3..76a2b809f0f5ba08e5f0117059e845ce146b5539 100644
--- a/src/libraries/utils/json.mli
+++ b/src/libraries/utils/json.mli
@@ -109,6 +109,11 @@ val list : t -> t list
     [Null] is considered an empty list.
     @raise Invalid_argument if the object is not a list. *)
 
+val assoc : t -> (string * t) list
+(** Extract the list of an [Assoc] object.
+    [Null] is considered an empty assoc.
+    @raise Invalid_argument if the object is not a list. *)
+
 val fold : (string -> t -> 'a -> 'a) -> t -> 'a -> 'a
 (** Fold over all fields of the object.
     [Null] is considered an empty object.
diff --git a/src/libraries/utils/json.mll b/src/libraries/utils/json.mll
index 700505ac5cb6f4a65a282353e3cd5a17f04408dd..8444a4bc8ed32eb86fd517fedf9d7fd74143df47 100644
--- a/src/libraries/utils/json.mll
+++ b/src/libraries/utils/json.mll
@@ -273,6 +273,11 @@ let array = function
   | `List es -> Array.of_list es
   | _ -> invalid "array"
 
+let assoc = function
+  | `Null -> []
+  | `Assoc fs -> fs
+  | _ -> invalid "assoc"
+
 let field f = function
   | `Null -> raise Not_found
   | `Assoc fs -> List.assoc f fs
diff --git a/src/libraries/utils/sanitizer.ml b/src/libraries/utils/sanitizer.ml
new file mode 100644
index 0000000000000000000000000000000000000000..cb0d0148b09c826865e3e4859bda5360660d2c9b
--- /dev/null
+++ b/src/libraries/utils/sanitizer.ml
@@ -0,0 +1,99 @@
+(**************************************************************************)
+(*                                                                        *)
+(*  This file is part of Frama-C.                                         *)
+(*                                                                        *)
+(*  Copyright (C) 2007-2019                                               *)
+(*    CEA (Commissariat à l'énergie atomique et aux énergies              *)
+(*         alternatives)                                                  *)
+(*                                                                        *)
+(*  you can redistribute it and/or modify it under the terms of the GNU   *)
+(*  Lesser General Public License as published by the Free Software       *)
+(*  Foundation, version 2.1.                                              *)
+(*                                                                        *)
+(*  It is distributed in the hope that it will be useful,                 *)
+(*  but WITHOUT ANY WARRANTY; without even the implied warranty of        *)
+(*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *)
+(*  GNU Lesser General Public License for more details.                   *)
+(*                                                                        *)
+(*  See the GNU Lesser General Public License version 2.1                 *)
+(*  for more details (enclosed in the file licenses/LGPLv2.1).            *)
+(*                                                                        *)
+(**************************************************************************)
+
+(* -------------------------------------------------------------------------- *)
+(* --- Sanitizer                                                          --- *)
+(* -------------------------------------------------------------------------- *)
+
+(*
+   Keeps only alphanumerical characters,
+   remove consecutive, trailing and leading `_`
+*)
+
+type state = START | SEP | CHAR | TRUNCATE
+
+type buffer = {
+  content : Buffer.t ;
+  truncate : int ;
+  mutable lastsep : int ;
+  mutable state : state ;
+}
+
+let create ?(truncate=false) n = {
+  content = Buffer.create n ;
+  truncate = if truncate then n else max_int ;
+  lastsep = 0 ;
+  state = START ;
+}
+
+let clear buffer =
+  begin
+    Buffer.clear buffer.content ;
+    buffer.state <- START ;
+    buffer.lastsep <- 0 ;
+  end
+
+let add_sep buffer =
+  if buffer.state = CHAR then
+    let offset = Buffer.length buffer.content in
+    if offset < buffer.truncate then
+      begin
+        buffer.state <- SEP ;
+        buffer.lastsep <- offset ;
+      end
+    else
+      begin
+        buffer.state <- TRUNCATE ;
+        (* TODO [OCaml 4.05] Buffer.truncate buffer.content buffer.lastsep ; *)
+      end
+
+let add_char buffer = function
+  | ('a'..'z' | 'A'..'Z' | '0'..'9') as c ->
+    begin
+      match buffer.state with
+      | START ->
+        Buffer.add_char buffer.content c ;
+        buffer.state <- CHAR
+      | SEP ->
+        Buffer.add_char buffer.content '_' ;
+        Buffer.add_char buffer.content c ;
+        buffer.state <- CHAR
+      | CHAR ->
+        Buffer.add_char buffer.content c
+      | TRUNCATE -> ()
+    end
+  | '_' | '-' | ' ' | '\t' | ',' | ';' | '.' | '/' | '\\' | ':' ->
+    add_sep buffer
+  | _ -> ()
+
+let add_string buffer s = String.iter (add_char buffer) s
+
+let rec add_list buffer = function
+  | [] -> ()
+  | p::ps -> add_string buffer p ; add_sep buffer ; add_list buffer ps
+
+let contents buffer =
+  (* TODO [OCaml 4.05] simply buffer contents if using Buffer.truncate *)
+  let s = Buffer.contents buffer.content in
+  if buffer.state = TRUNCATE then
+    String.sub s 0 buffer.lastsep
+  else s
diff --git a/src/plugins/report/property_names.mli b/src/libraries/utils/sanitizer.mli
similarity index 76%
rename from src/plugins/report/property_names.mli
rename to src/libraries/utils/sanitizer.mli
index 1a34d4cdef3c042ad3970108461ef5f9a1481092..3371d4cd4a5930320d2f77bc70b1b0d8242b61fc 100644
--- a/src/plugins/report/property_names.mli
+++ b/src/libraries/utils/sanitizer.mli
@@ -20,20 +20,21 @@
 (*                                                                        *)
 (**************************************************************************)
 
-open Cil_types
+(** {2 Sanitizer}
 
-type part =
-  | B of behavior
-  | K of kernel_function
-  | A of string
-  | I of identified_predicate
-  | P of predicate
-  | T of term
-  | S of stmt
+    Keeps only alpha-numerical characters.
+    Separator ['_'] is allowed, but leading, trailing and consecutive
+    separators are removed.
+*)
 
-val is_name : string -> bool
-val join : string list -> string
+type buffer
 
-val string_of_part : part -> string
-val string_of_parts : part list -> string
-val parts_of_property : Property.t -> part list
+val create : ?truncate:bool -> int -> buffer
+val clear : buffer -> unit
+
+val add_sep : buffer -> unit (** Adds ['_'] character *)
+val add_char : buffer -> char -> unit
+val add_string : buffer -> string -> unit
+val add_list : buffer -> string list -> unit (** Separated with ['_'] *)
+
+val contents : buffer -> string
diff --git a/src/plugins/report/Makefile.in b/src/plugins/report/Makefile.in
index bb159e8f5ab30d00ff02a32cadea5e19a0d0b0a6..7011cc664417688ec84af0e515664f7db4dd7504 100644
--- a/src/plugins/report/Makefile.in
+++ b/src/plugins/report/Makefile.in
@@ -36,7 +36,7 @@ endif
 PLUGIN_DIR ?=.
 PLUGIN_ENABLE:=@ENABLE_REPORT@
 PLUGIN_NAME:=Report
-PLUGIN_CMO:= report_parameters scan dump csv property_names classify register
+PLUGIN_CMO:= report_parameters scan dump csv classify register
 PLUGIN_DISTRIBUTED:=$(PLUGIN_ENABLE)
 PLUGIN_DISTRIB_EXTERNAL:= Makefile.in configure.ac configure
 #PLUGIN_NO_DEFAULT_TEST:=no
diff --git a/src/plugins/report/classify.ml b/src/plugins/report/classify.ml
index b40a5a6d4438d0f5d612b5e3c6c2f7bdf9e16830..f14ae80130e34ff8adf403f3605582636f5ad075 100644
--- a/src/plugins/report/classify.ml
+++ b/src/plugins/report/classify.ml
@@ -74,7 +74,7 @@ let errors = {
 type props = {
   ps_name : string ;
   ps_rules : rule Queue.t ;
-  ps_action : (unit -> string) ;
+  ps_action : (unit -> string) ; (* plugin option getter *)
 }
 
 let props ps_name ps_action =
@@ -408,19 +408,50 @@ let pending f pending =
         (fun _ ips -> Property.Set.iter f ips) m)
     pending
 
+let rec monitored_property ip =
+  let open Cil_types in
+  let open Property in
+  match ip with
+  | IPBehavior _ -> false
+  | IPPredicate (PKAssumes _,_,_,_) -> false
+  | IPPredicate (PKRequires _,_,_,_) -> true
+  | IPPredicate (PKEnsures _,_,_,_) -> true
+  | IPPredicate (PKTerminates,_,_,_) -> true
+  | IPAllocation(_,_,_,_) -> true
+  | IPAssigns(_,_,_,_) -> true
+  | IPFrom(_,_,_,_) -> true
+  | IPDecrease (_,_,_,_) -> true
+  | IPCodeAnnot (_,_, { annot_content = AStmtSpec _ } ) -> false
+  | IPCodeAnnot (_,_, { annot_content = APragma _ } ) -> false
+  | IPCodeAnnot (_,_, { annot_content = AExtended _ } ) -> true
+  | IPCodeAnnot (_,_, { annot_content = AAssert _ } ) -> true
+  | IPCodeAnnot (_,_, { annot_content = AInvariant _ } ) -> true
+  | IPCodeAnnot (_,_, { annot_content = AVariant _ } ) -> true
+  | IPCodeAnnot (_,_, { annot_content = AAssigns _ } ) -> true
+  | IPCodeAnnot (_,_, { annot_content = AAllocation _ } ) -> true
+  | IPComplete (_,_,_,_) -> true
+  | IPDisjoint(_,_,_,_) -> true
+  | IPReachable (None,_,_) -> false
+  | IPReachable (Some _,_,_) -> true
+  | IPAxiomatic _ | IPAxiom _ -> false
+  | IPLemma(_,_,_,_,_) -> true
+  | IPTypeInvariant(_,_,_,_) | IPGlobalInvariant(_,_,_) -> true
+  | IPOther(_,_) -> true
+  | IPExtended _ -> true
+  | IPPropertyInstance (_, _, _, ip) -> monitored_property ip
+
 let monitor_status properties ip =
-  let ps = Property_names.parts_of_property ip in
-  if ps = [] then () else
-    let msg = Property_names.string_of_parts ps in
+  if monitored_property ip then
+    let name = Property.Names.get_prop_name_id ip in
     let lookup = find properties.ps_rules in
     let source = Property.source ip in
     let unclassified () =
       let e_id = "unclassified." ^ properties.ps_name in
-      let e_title = msg in
+      let e_title = name in
       let e_action = properties.ps_action () |> action in
       let e_descr = T.String.capitalize_ascii properties.ps_name ^ " status" in
       { unclassified with e_id ; e_action ; e_title ; e_descr }
-    in monitor ~lookup ~category:[] ~msg ~source unclassified
+    in monitor ~lookup ~category:[] ~msg:name ~source unclassified
 
 let monitor_property pool push ip =
   begin
diff --git a/src/plugins/report/property_names.ml b/src/plugins/report/property_names.ml
deleted file mode 100644
index dd31d925e9f93501c8dd19d99e810b12047d5df8..0000000000000000000000000000000000000000
--- a/src/plugins/report/property_names.ml
+++ /dev/null
@@ -1,131 +0,0 @@
-(**************************************************************************)
-(*                                                                        *)
-(*  This file is part of Frama-C.                                         *)
-(*                                                                        *)
-(*  Copyright (C) 2007-2019                                               *)
-(*    CEA (Commissariat à l'énergie atomique et aux énergies              *)
-(*         alternatives)                                                  *)
-(*                                                                        *)
-(*  you can redistribute it and/or modify it under the terms of the GNU   *)
-(*  Lesser General Public License as published by the Free Software       *)
-(*  Foundation, version 2.1.                                              *)
-(*                                                                        *)
-(*  It is distributed in the hope that it will be useful,                 *)
-(*  but WITHOUT ANY WARRANTY; without even the implied warranty of        *)
-(*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *)
-(*  GNU Lesser General Public License for more details.                   *)
-(*                                                                        *)
-(*  See the GNU Lesser General Public License version 2.1                 *)
-(*  for more details (enclosed in the file licenses/LGPLv2.1).            *)
-(*                                                                        *)
-(**************************************************************************)
-
-open Cil_types
-
-type part =
-  | B of behavior
-  | K of kernel_function
-  | A of string
-  | I of identified_predicate
-  | P of predicate
-  | T of term
-  | S of stmt
-
-let is_name s = s <> "" && s <> "_"
-let join ps = String.concat "_" (List.filter is_name ps)
-
-let string_of_part = function
-  | B bhv -> if Cil.is_default_behavior bhv then "" else bhv.b_name
-  | K kf -> Kernel_function.get_name kf
-  | A msg -> msg
-  | S stmt -> Printf.sprintf "s%d" stmt.sid
-  | I { ip_content = { pred_name = a } }
-  | P { pred_name = a } | T { term_name = a } -> join a
-
-let string_of_parts ps = join (List.map string_of_part ps)
-
-let rec parts_of_property ip : part list =
-  let open Property in
-  match ip with
-  | IPBehavior _ -> []
-  | IPPredicate (PKAssumes _,_,_,_) -> []
-  | IPPredicate (PKRequires bhv,kf,_,ip) ->
-    [ K kf ; B bhv ; A "requires" ; I ip ]
-  | IPPredicate (PKEnsures(bhv,Normal),kf,_,ip) ->
-    [ K kf ; B bhv ; A "ensures" ; I ip ]
-  | IPPredicate (PKEnsures(bhv,Exits),kf,_,ip) ->
-    [ K kf ; B bhv ; A "exits" ; I ip ]
-  | IPPredicate (PKEnsures(bhv,Breaks),kf,_,ip) ->
-    [ K kf ; B bhv ; A "breaks" ; I ip ]
-  | IPPredicate (PKEnsures(bhv,Continues),kf,_,ip) ->
-    [ K kf ; B bhv ; A "continues" ; I ip ]
-  | IPPredicate (PKEnsures(bhv,Returns),kf,_,ip) ->
-    [ K kf ; B bhv ; A "returns" ; I ip ]
-  | IPPredicate (PKTerminates,kf,_,ip) ->
-    [ K kf ; A "terminates" ; I ip ]
-
-  | IPAllocation(kf,_,Id_contract(_,bhv),_) ->
-    [ K kf ; B bhv ; A "allocates" ]
-  | IPAllocation(kf,_,Id_loop _,_) ->
-    [ K kf ; A "loop_allocates" ]
-
-  | IPAssigns(kf,_,Id_contract(_,bhv),_) ->
-    [ K kf ; B bhv ; A "assigns" ]
-
-  | IPAssigns(kf,_,Id_loop _,_) ->
-    [ K kf ; A "loop_assigns" ]
-
-  | IPFrom(kf,_,Id_contract(_,bhv),_) ->
-    [ K kf ; B bhv ; A "assigns_from" ]
-
-  | IPFrom(kf,_,Id_loop _,_) ->
-    [ K kf ; A "loop_assigns_from" ]
-
-  | IPDecrease (kf,_,None,_) ->
-    [ K kf ; A "variant" ]
-
-  | IPDecrease (kf,_,Some _,_) ->
-    [ K kf ; A "loop_variant" ]
-
-  | IPCodeAnnot (_,_, { annot_content = AStmtSpec _ } ) -> []
-  | IPCodeAnnot (_,_, { annot_content = APragma _ | AExtended _ } ) -> []
-  | IPCodeAnnot (kf,_, { annot_content = AAssert(_,p) } ) ->
-    [K kf ; A "assert" ; P p ]
-  | IPCodeAnnot (kf,_, { annot_content = AInvariant(_,true,p) } ) ->
-    [K kf ; A "loop_invariant" ; P p ]
-  | IPCodeAnnot (kf,_, { annot_content = AInvariant(_,false,p) } ) ->
-    [K kf ; A "invariant" ; P p ]
-  | IPCodeAnnot (kf,_, { annot_content = AVariant(e,_) } ) ->
-    [K kf ; A "loop_variant" ; T e ]
-  | IPCodeAnnot (kf,_, { annot_content = AAssigns _ } ) ->
-    [K kf ; A "loop_assigns" ]
-  | IPCodeAnnot (kf,_, { annot_content = AAllocation _ } ) ->
-    [K kf ; A "loop_allocates" ]
-
-  | IPComplete (kf,_,_,cs) ->
-    (K kf :: A "complete" :: List.map (fun a -> A a) cs)
-  | IPDisjoint(kf,_,_,cs) ->
-    (K kf :: A "disjoint" :: List.map (fun a -> A a) cs)
-
-  | IPReachable (None, _, _) -> []
-  | IPReachable (Some kf,Kglobal,Before) ->
-    [ K kf ; A "reachable" ]
-  | IPReachable (Some kf,Kglobal,After) ->
-    [ K kf ; A "reachable_post" ]
-  | IPReachable (Some kf,Kstmt s,Before) ->
-    [ K kf ; S s ; A "reachable" ]
-  | IPReachable (Some kf,Kstmt s,After) ->
-    [ K kf ; S s ; A "reachable_after" ]
-  | IPAxiomatic _ | IPAxiom _ -> []
-  | IPLemma(name,_,_,_,_) -> [ A "lemma" ; A name ]
-  | IPTypeInvariant(name,_,_,_)
-  | IPGlobalInvariant(name,_,_) -> [ A "invariant" ; A name]
-  | IPOther(name, OLContract kf) -> [ K kf ; A name ]
-  | IPOther(name, OLStmt (kf, s)) -> [K kf; S s; A name]
-  | IPOther(name,OLGlob _) -> [ A name ]
-  | IPPropertyInstance (_, _, _, ip) -> parts_of_property ip
-  | IPExtended(ELContract kf,(_,name,_,_)) -> [ K kf ; A name ]
-  | IPExtended(ELStmt (kf, s),(_,name,_,_)) -> [ K kf ; S s ; A name ]
-  | IPExtended(ELGlob, (_,name,_,_)) -> [ A name ]
-
-(**************************************************************************)
diff --git a/src/plugins/report/tests/report/oracle/classify.0.res.oracle b/src/plugins/report/tests/report/oracle/classify.0.res.oracle
index 08e3a2f22246d9b0ce10e23016c15f9413fe8218..2d9f271aea5752a9bbc3037c9c42b90aac05b38e 100644
--- a/src/plugins/report/tests/report/oracle/classify.0.res.oracle
+++ b/src/plugins/report/tests/report/oracle/classify.0.res.oracle
@@ -4,8 +4,8 @@
 [wp] Running WP plugin...
 [wp] Warning: Missing RTE guards
 [wp] 2 goals scheduled
-[wp] [Qed] Goal typed_f_assign : Valid
-[wp] [Qed] Goal typed_f_post : Valid
+[wp] [Qed] Goal typed_f_assigns : Valid
+[wp] [Qed] Goal typed_f_ensures : Valid
 [wp] Proved goals:    2 / 2
   Qed:             2
 [report] Classification
diff --git a/src/plugins/report/tests/report/oracle/classify.1.res.oracle b/src/plugins/report/tests/report/oracle/classify.1.res.oracle
index 5dc01f6e288d62097d7aeb8bcff5de4b9a758aeb..9266851bb999c61aaf138053b920459d475fb73d 100644
--- a/src/plugins/report/tests/report/oracle/classify.1.res.oracle
+++ b/src/plugins/report/tests/report/oracle/classify.1.res.oracle
@@ -5,8 +5,8 @@
 [wp] Running WP plugin...
 [wp] Warning: Missing RTE guards
 [wp] 2 goals scheduled
-[wp] [Qed] Goal typed_f_assign : Valid
-[wp] [Qed] Goal typed_f_post : Valid
+[wp] [Qed] Goal typed_f_assigns : Valid
+[wp] [Qed] Goal typed_f_ensures : Valid
 [wp] Proved goals:    2 / 2
   Qed:             2
 [report] Classification
diff --git a/src/plugins/report/tests/report/oracle/classify.2.res.oracle b/src/plugins/report/tests/report/oracle/classify.2.res.oracle
index 0d4bf582b12dcdfdfcd194cce2b00f461d03f48b..8e0f90163361e74984979077ddaa1a85702be12e 100644
--- a/src/plugins/report/tests/report/oracle/classify.2.res.oracle
+++ b/src/plugins/report/tests/report/oracle/classify.2.res.oracle
@@ -5,8 +5,8 @@
 [wp] Running WP plugin...
 [wp] Warning: Missing RTE guards
 [wp] 2 goals scheduled
-[wp] [Qed] Goal typed_f_assign : Valid
-[wp] [Qed] Goal typed_f_post : Valid
+[wp] [Qed] Goal typed_f_assigns : Valid
+[wp] [Qed] Goal typed_f_ensures : Valid
 [wp] Proved goals:    2 / 2
   Qed:             2
 [report] Classification
diff --git a/src/plugins/report/tests/report/oracle/classify.3.res.oracle b/src/plugins/report/tests/report/oracle/classify.3.res.oracle
index e41bd323df63f3913f41fe42d9e7ac2fdf50227b..5fab349a04e38664af8b21b15febbb573588c6c7 100644
--- a/src/plugins/report/tests/report/oracle/classify.3.res.oracle
+++ b/src/plugins/report/tests/report/oracle/classify.3.res.oracle
@@ -6,8 +6,8 @@
 [wp] Running WP plugin...
 [wp] Warning: Missing RTE guards
 [wp] 2 goals scheduled
-[wp] [Qed] Goal typed_f_assign : Valid
-[wp] [Qed] Goal typed_f_post : Valid
+[wp] [Qed] Goal typed_f_assigns : Valid
+[wp] [Qed] Goal typed_f_ensures : Valid
 [wp] Proved goals:    2 / 2
   Qed:             2
 [report] Classification
diff --git a/src/plugins/report/tests/report/oracle/classify.4.res.oracle b/src/plugins/report/tests/report/oracle/classify.4.res.oracle
index 70e846d1bf34b306e607d9579046c28735bb18d0..4fe970e76ac2d9a5d2c965d22a6f185ebaeb2f95 100644
--- a/src/plugins/report/tests/report/oracle/classify.4.res.oracle
+++ b/src/plugins/report/tests/report/oracle/classify.4.res.oracle
@@ -6,8 +6,8 @@
 [wp] Running WP plugin...
 [wp] Warning: Missing RTE guards
 [wp] 2 goals scheduled
-[wp] [Qed] Goal typed_f_assign : Valid
-[wp] [Qed] Goal typed_f_post : Valid
+[wp] [Qed] Goal typed_f_assigns : Valid
+[wp] [Qed] Goal typed_f_ensures : Valid
 [wp] Proved goals:    2 / 2
   Qed:             2
 [report] Classification
diff --git a/src/plugins/report/tests/report/oracle/classify.5.res.oracle b/src/plugins/report/tests/report/oracle/classify.5.res.oracle
index da6f9a37f4f68fd31782b82428ff795cf9ea9ebc..fe7d84466c0e64effca171af82723994cecf7759 100644
--- a/src/plugins/report/tests/report/oracle/classify.5.res.oracle
+++ b/src/plugins/report/tests/report/oracle/classify.5.res.oracle
@@ -5,8 +5,8 @@
   unbound logic variable ignored. Ignoring code annotation
 [wp] Running WP plugin...
 [wp] Warning: Missing RTE guards
-[wp] Goal typed_f_post : not tried
-[wp] Goal typed_f_assign : trivial
+[wp] Goal typed_f_ensures : not tried
+[wp] Goal typed_f_assigns : trivial
 [report] Classification
 [report] Output tests/report/result/classified.5.json
 [report] Reviews     :    2
diff --git a/src/plugins/wp/Cfloat.ml b/src/plugins/wp/Cfloat.ml
index 7c5a2c9f5a357dfe0080eb176d23012816b2740c..81842f01a2eb694506b55e6640baba76d03a7870 100644
--- a/src/plugins/wp/Cfloat.ml
+++ b/src/plugins/wp/Cfloat.ml
@@ -45,7 +45,7 @@ let ftau = function
   | Float32 -> t32
   | Float64 -> t64
 
-let suffix fmt = function
+let pp_suffix fmt = function
   | Float32 -> Format.pp_print_string fmt "f32"
   | Float64 -> Format.pp_print_string fmt "f64"
 
@@ -55,9 +55,9 @@ let link phi = Lang.infoprover (Qed.Engine.F_call phi)
 let fq32 = extern_f ~library ~result:t32 ~link:(link "to_f32") "q32"
 let fq64 = extern_f ~library ~result:t64 ~link:(link "to_f64") "q64"
 
-let f_model ft = extern_f ~library ~result:(ftau ft) "model_%a" suffix ft
-let f_delta ft = extern_f ~library ~result:(ftau ft) "delta_%a" suffix ft
-let f_epsilon ft = extern_f ~library ~result:(ftau ft) "epsilon_%a" suffix ft
+let f_model ft = extern_f ~library ~result:(ftau ft) "model_%a" pp_suffix ft
+let f_delta ft = extern_f ~library ~result:(ftau ft) "delta_%a" pp_suffix ft
+let f_epsilon ft = extern_f ~library ~result:(ftau ft) "epsilon_%a" pp_suffix ft
 
 (* -------------------------------------------------------------------------- *)
 (* --- Model Setting                                                      --- *)
@@ -135,39 +135,45 @@ let fmake ulp value = match ulp with
   | Float64 -> F.e_fun fq64 [F.e_float value]
 
 let qmake ulp q = fmake ulp (Transitioning.Q.to_float q)
-
 let mantissa = "\\([-+]?[0-9]*\\)"
 let comma = "\\(.\\(\\(0*[1-9]\\)*\\)0*\\)?"
 let exponent = "\\([eE]\\([-+]?[0-9]*\\)\\)?"
-let real = Str.regexp (mantissa ^ comma ^ exponent ^ "$")
+let suffix = "\\([flFL]\\)?"
+let real = Str.regexp (mantissa ^ comma ^ exponent ^ suffix ^ "$")
 
-let parse_literal v r =
+let parse_literal ~model v r =
   try
     if Str.string_match real r 0 then
-      let ma = Str.matched_group 1 r in
-      let mb = try Str.matched_group 3 r with Not_found -> "" in
-      let me = try Str.matched_group 6 r with Not_found -> "0" in
-      let n = int_of_string me - String.length mb in
-      let d n =
-        let s = Bytes.make (succ n) '0' in
-        Bytes.set s 0 '1' ; Q.of_string (Bytes.to_string s) in
-      let m = Q.of_string (ma ^ mb) in
-      if n < 0 then Q.div m (d (-n)) else
-      if n > 0 then Q.mul m (d n) else m
+      let has_suffix =
+        try ignore (Str.matched_group 7 r) ; true
+        with Not_found -> false in
+      if has_suffix && model = Float then
+        Q.of_float v
+      else
+        let ma = Str.matched_group 1 r in
+        let mb = try Str.matched_group 3 r with Not_found -> "" in
+        let me = try Str.matched_group 6 r with Not_found -> "0" in
+        let n = int_of_string me - String.length mb in
+        let d n =
+          let s = Bytes.make (succ n) '0' in
+          Bytes.set s 0 '1' ; Q.of_string (Bytes.to_string s) in
+        let m = Q.of_string (ma ^ mb) in
+        if n < 0 then Q.div m (d (-n)) else
+        if n > 0 then Q.mul m (d n) else m
     else Q.of_float v
   with Failure _ ->
     Warning.error "Unexpected constant literal %S" r
 
 let acsl_lit l =
   let open Cil_types in
-  F.e_real (parse_literal l.r_nearest l.r_literal)
+  F.e_real (parse_literal ~model:(Context.get model) l.r_nearest l.r_literal)
 
 let code_lit ulp value original =
   match Context.get model , ulp , original with
   | Float , Float32 , _ -> F.e_fun fq32 [F.e_float value]
   | Float , Float64 , _ -> F.e_fun fq64 [F.e_float value]
   | Real , _ , None -> F.e_float value
-  | Real , _ , Some r -> F.e_real (parse_literal value r)
+  | Real , _ , Some r -> F.e_real (parse_literal ~model:Real value r)
 
 (* -------------------------------------------------------------------------- *)
 (* --- Computations                                                       --- *)
@@ -200,13 +206,13 @@ let compute op ulp xs =
 
 let make_fun_float ?result name op ft =
   let result = match result with None -> ftau ft | Some r -> r in
-  let phi = extern_f ~library ~result "%s_%a" name suffix ft in
+  let phi = extern_f ~library ~result "%s_%a" name pp_suffix ft in
   Lang.F.set_builtin phi (compute op ft) ;
   REGISTRY.define phi (op,ft) ; phi
 
 let make_pred_float name op ft =
-  let prop = Pretty_utils.sfprintf "%s_%a" name suffix ft in
-  let bool = Pretty_utils.sfprintf "%s_%ab" name suffix ft in
+  let prop = Pretty_utils.sfprintf "%s_%a" name pp_suffix ft in
+  let bool = Pretty_utils.sfprintf "%s_%ab" name pp_suffix ft in
   let phi = extern_p ~library ~bool ~prop () in
   Lang.F.set_builtin phi (compute op ft) ;
   REGISTRY.define phi (op,ft) ; phi
diff --git a/src/plugins/wp/Changelog b/src/plugins/wp/Changelog
index 844b5b50097f8f55d30a604eb2ec14cd13cf1498..65843136872b5e143fc4ce3420645d94c8a8c47e 100644
--- a/src/plugins/wp/Changelog
+++ b/src/plugins/wp/Changelog
@@ -20,7 +20,35 @@
 #   <Prover>: prover
 ###############################################################################
 
--  Wp         [2019/01/28] New floating-point model
+ -  Wp         [2019/01/28] New floating-point model
+ - WP          [2018/02/16] Filter out some variables from separation
+ - TIP         [2018/02/15] Extend bitwise-eq auto-strategy on hypotheses
+ - TIP         [2018/02/15] Fix wrong reconciliation of sub-scripts during replay
+ - Wp          [2018/02/15] Better naming convention, consistent with report-classify
+ - Wp          [2018/01/18] Auto-Search mode, see -wp-auto
+ - TIP         [2018/01/18] Auto-Search mode from the GUI
+ - TIP         [2018/01/18] New Strategies for bitwise and congruence operations
+ - TIP         [2017/12/17] Fix bug that makes the TIP wrongly reuse previous results
+ - Wp          [2017/12/17] Option -wp-print-separation changed into -wp-warn-separation
+ - Wp          [2017/12/17] Option -wp-unfold-assigns for proving assigns of aggregates field by field
+ - TIP         [2017/04/25] New tactical Congruence (divisions and products)
+ - Qed         [2017/10/30] Extends simplifications for lsl,lsr and div
+ - Wp          [2017/10/27] Fix soundness bug when assigning non-valid ranges
+ - Qed         [2017/10/27] New simplifications for validirt and ranges
+ - TIP         [2017/10/27] New tacticals for validity and ranges
+ - TIP         [2017/04/25] Options -wp-time-{extra|margin} for more stability
+ -* Gui        [2017/04/25] Fixed bug when running prover from the TIP
+ - Wp          [2017/04/25] Improved model and simplifications of logical shifts
+ - Wp          [2017/04/25] New simplification logic functions (-wp-reduce)
+ - Wp          [2017/04/25] New simplification of unused variables (-wp-parasite)
+ - Wp          [2017/04/25] New simplification for ground terms (-wp-ground)
+ - Wp          [2017/04/25] Option -wp-prenex to normalize nested binders
+ - Wp          [2017/04/25] Option -wp-overflows to add explicit assumptions
+ - TIP         [2017/04/25] New tactical Overflow (to cope with modulus)
+ - TIP         [2017/04/25] New tactical Bitwised, BitRange and Shift
+ - TIP         [2017/04/25] New tactical Rewrite (two apply equalities)
+ - Wp          [2017/03/12] Reduction of equalities with logic functions
+ - Wp          [2017/03/12] More simplifications wrt integer domains
 
 ######################
 Plugin WP 18.0 (Argon)
@@ -35,6 +63,26 @@ Plugin WP 18.0 (Argon)
 -  Qed        [2018/06/20] Added more simplifications for invertible functions
 -  TIP        [2018/06/07] Extends tactical 'Split' to distribution of qualitifiers
 
+#########################
+Plugin WP Sulfur-20171101
+#########################
+
+ - Wp         [2017/10/18] Support for LoopCurrent and LoopEntry
+ - TIP        [2017/04/25] Options -wp-time-{extra|margin} for more stability
+ -* Gui       [2017/04/25] Fixed bug when running prover from the TIP
+ - Wp         [2017/04/25] Improved model and simplifications of logical shifts
+ - Wp         [2017/04/25] New simplification logic functions (-wp-reduce)
+ - Wp         [2017/04/25] New simplification of unused variables (-wp-parasite)
+ - Wp         [2017/04/25] New simplification for ground terms (-wp-ground)
+ - Wp         [2017/04/25] Option -wp-prenex to normalize nested binders
+ - Wp         [2017/04/25] Option -wp-overflows to add explicit assumptions
+ - TIP        [2017/04/25] New tactical Overflow (to cope with modulus)
+ - TIP        [2017/04/25] New tactical Ratio (divisions and products)
+ - TIP        [2017/04/25] New tactical Bitwised, BitRange and Shift
+ - TIP        [2017/04/25] New tactical Rewrite (two apply equalities)
+ - Wp         [2017/03/12] Reduction of equalities with logic functions
+ - Wp         [2017/03/12] More simplifications wrt integer domains
+
 ###########################
 Plugin WP Chlorine-20180501
 ###########################
@@ -86,6 +134,7 @@ Plugin WP Sulfur-20171101
 Plugin WP Phosphorus-20170501
 #############################
 
+- Qed         [2017/12/13] Transforms some quantifications into let constructs
 -  WP         [2017/05/15] Extract inductive predicates as Inductive in Coq
 -! WP         [2017/03/24] Remove support for generalized invariants (-wp-invariants)
 -o Ergo       [2017/01/12] Update qualif tests to Alt-Ergo 1.30
diff --git a/src/plugins/wp/Cint.ml b/src/plugins/wp/Cint.ml
index 462cf49b991556092fdc92911adfe197762e1061..02c88290a4e5bf52db262ee8661d51cce8d337a2 100644
--- a/src/plugins/wp/Cint.ml
+++ b/src/plugins/wp/Cint.ml
@@ -153,7 +153,7 @@ let match_positive_or_null e =
   if not (is_positive_or_null e) then raise Not_found;
   e
 
-let match_power2, match_power2_minus1 =
+let match_power2, _match_power2_minus1 =
   let highest_bit_number =
     let hsb p = if p land 2 = 0 then 0 else 1
     in let hsb p = let n = p lsr 2 in if n = 0 then hsb p else 2 + hsb n
@@ -258,21 +258,6 @@ let simplify_f_to_conv f iota e conv e' =
      signed iota -> iota' can have any sign *)
   else raise Not_found
 
-let simplify_f_to_land f iota e es' =
-  let size', es' = match_list_head match_power2_minus1 es' in
-  (* land (2**(size')-1) _ is equivalent to a conversion
-     to an unsigned integer of size' bits.
-     So, the end of this function is similar to [simplify_conv] *)
-  let size = Ctypes.i_bits iota in
-  match is_leq (e_int size) size' with
-  | Logic.Yes ->
-      let e' = match es' with
-        | [] -> assert false
-        | [_] -> es' | _ -> [e_fun f_land es']
-      in e_fun f e'
-  | Logic.No -> e
-  | Logic.Maybe -> raise Not_found
-
 let simplify_f_to_bounds iota e =
   (* min(ctypes)<=y<=max(ctypes) ==> to_ctypes(y)=y *)
   let lower,upper = Ctypes.bounds iota in
@@ -285,37 +270,40 @@ let f_to_int = Ctypes.i_memo (fun iota -> make_fun_int "to" iota)
 
 let configure_to_int iota =
   let f = f_to_int iota in
-  let simplify  = function
-    | [e] ->
-        begin
-          match F.repr e with
-          | Logic.Kint value ->
-              let size = Integer.of_int (Ctypes.i_bits iota) in
-              let signed = Ctypes.signed iota in
-              F.e_zint (Integer.cast ~size ~signed ~value)
-          | Logic.Fun( fland , es ) when Fun.equal fland f_land ->
-              (try simplify_f_to_land f iota e es
-               with Not_found -> simplify_f_to_bounds iota e)
-          | Logic.Fun( flor , es ) when (Fun.equal flor f_lor)
-                                     && not (Ctypes.signed iota) ->
-              (* to_uintN(a|b) == (to_uintN(a) | to_uintN(b)) *)
-              e_fun f_lor (List.map (fun e' -> e_fun f [e']) es)
-          | Logic.Fun( flnot , [ e ] ) when (Fun.equal flnot f_lnot)
-                                         && not (Ctypes.signed iota) ->
-              begin
-                match F.repr e with
-                | Logic.Fun( f' , w ) when f' == f ->
-                    e_fun f [ e_fun f_lnot w ]
-                | _ -> raise Not_found
-              end
-          | Logic.Fun( conv , [e'] ) -> (* unary op *)
-              (try simplify_f_to_conv f iota e conv e'
-               with Not_found -> simplify_f_to_bounds iota e)
-          | _ -> simplify_f_to_bounds iota e
-        end
-    | _ -> raise Not_found
+  let simplify e =
+    begin
+      try match F.repr e with
+        | Logic.Kint value ->
+            let size = Integer.of_int (Ctypes.i_bits iota) in
+            let signed = Ctypes.signed iota in
+            F.e_zint (Integer.cast ~size ~signed ~value)
+        | Logic.Fun( fland , es )
+          when Fun.equal fland f_land &&
+               not (Ctypes.signed iota) &&
+               List.exists is_positive_or_null es ->
+            (* to_uintN(a) == a & (2^N-1) when a >= 0 *)
+            let m = F.e_zint (snd (Ctypes.bounds iota)) in
+            F.e_fun f_land (m :: es)
+        | Logic.Fun( flor , es ) when (Fun.equal flor f_lor)
+                                   && not (Ctypes.signed iota) ->
+            (* to_uintN(a|b) == (to_uintN(a) | to_uintN(b)) *)
+            F.e_fun f_lor (List.map (fun e' -> e_fun f [e']) es)
+        | Logic.Fun( flnot , [ e ] ) when (Fun.equal flnot f_lnot)
+                                       && not (Ctypes.signed iota) ->
+            begin
+              match F.repr e with
+              | Logic.Fun( f' , w ) when f' == f ->
+                  e_fun f [ e_fun f_lnot w ]
+              | _ -> raise Not_found
+            end
+        | Logic.Fun( conv , [e'] ) -> (* unary op *)
+            simplify_f_to_conv f iota e conv e'
+        | _ -> raise Not_found
+      with Not_found ->
+        simplify_f_to_bounds iota e
+    end
   in
-  F.set_builtin f simplify ;
+  F.set_builtin_1 f simplify ;
 
   let simplify_leq x y =
     let lower,upper = Ctypes.bounds iota in
diff --git a/src/plugins/wp/CodeSemantics.ml b/src/plugins/wp/CodeSemantics.ml
index e7dacab67bf5ee7a8fb910ca905891cea21f3ce2..d1c55685ea4d7add16b3f3e43080df932afe60c3 100644
--- a/src/plugins/wp/CodeSemantics.ml
+++ b/src/plugins/wp/CodeSemantics.ml
@@ -32,6 +32,26 @@ open Sigs
 open Lang
 open Lang.F
 
+module WpLog = Wp_parameters
+let constfold_ctyp = function
+  | TArray (_,Some {enode = (Const CInt64 _) },_,_) as ct -> ct
+  | TArray (ty,Some len,cache,attr) as ct -> begin
+      match Cil.constFold true len with
+      | {enode = (Const CInt64 _) } as len ->
+          TArray(ty,Some len,cache,attr)
+      | _ -> ct
+    end
+  | ct -> ct
+
+let constfold_coffset = function
+  | Index({enode=Const (CInt64 _)}, _) as off -> off
+  | Index(idx, next) as off -> begin
+      match Cil.constFold true idx with
+      | {enode = (Const CInt64 _) } as idx -> Index(idx, next)
+      | _ -> off
+    end
+  | off -> off
+
 module Make(M : Sigs.Model) =
 struct
 
@@ -448,22 +468,18 @@ struct
         init_value ~sigma lv (Cil.typeOfLval lv) (Some exp) :: acc
 
     | CompoundInit ( ct , initl ) ->
-
-        let len = List.length initl in
-        let acc =
+        let ct = constfold_ctyp ct in
+        let acc = (* updated acc with default init of structure *)
           match ct with
-          | TArray (ty,Some {enode = (Const CInt64 (size,_,_))},_,_)
-            when Integer.lt (Integer.of_int len) size  ->
-              init_range ~sigma lv ty (Integer.of_int len) size None :: acc
-
-          | TComp (cp,_,_) when len < (List.length cp.cfields) ->
-
+          | TComp (cp,_,_) when cp.cstruct && (* not for union... *)
+                                (List.length initl) < (List.length cp.cfields) ->
+              (* default init for unintialized field of a struct *)
               List.fold_left
                 (fun acc f ->
                    if List.exists
                        (function
                          | Field(g,_),_ -> Fieldinfo.equal f g
-                         | _ -> false)
+                         | _ ->  WpLog.fatal "Kernel invariant broken into an initializer")
                        initl
                    then acc
                    else
@@ -477,47 +493,80 @@ struct
           | _ -> acc
         in
         match ct with
-        | TArray (ty,_,_,_)
-          when Wp_parameters.InitWithForall.get () ->
-            (* delayed: the last consecutive index have the same value
-               and are not yet initialized.
-                (i0,pred,il) =def \forall x. x \in [il;i0] t[x] == pred
-            *)
+        | TArray (ty,len,_,_) ->
+            let delayed =
+              match len with (* number of required elements *)
+              | Some {enode = (Const CInt64 (size,_,_))} ->
+                  (size, None)
+              | _ -> (* CIL invariant broken. *)
+                  WpLog.fatal "CIL invariant broken: unknown initialized array size"
+            in
             let make_quant acc = function
-              | None -> acc
-              | Some (Index({enode=Const (CInt64 (i0,_,_))}, NoOffset),exp,il)
-                when Integer.lt il i0 ->
+              (* adds delayed initializations from info about
+                 the last consecutive indices having
+                 the same value, but that have not yet initialized. *)
+              | (_,None) -> acc (* nothing was delayed *)
+              | (il,Some (i0,_,exp)) when Integer.lt il i0 ->
+                  (* Added pred: \forall i \in [il .. i0] ; t[i]==exp *)
                   let i2 = Integer.succ i0 in
                   init_range ~sigma lv ty il i2 (Some exp) :: acc
-              | Some (off,exp,_) ->
+              | (_il,Some (_i0,off,exp)) ->
+                  (* case [_il=_i0], so uses [off] corresponding to [_i0]
+                     Added pred: t[i]==exp*)
                   let lv = Cil.addOffsetLval off lv in
                   init_value ~sigma lv ty (Some exp) :: acc
             in
+            let add_missing_indices acc i0 = function
+              (* adds eventual default value for missing indices. *)
+              | (i1, _) ->
+                  if Integer.ge i0 i1 then (* no hole *) acc
+                  else (* defaults values
+                          Added pred: \forall i \in [i0 .. i1[ ; t[i]==default *)
+                    init_range ~sigma lv ty i0 i1 None :: acc
+            in
             let acc, delayed =
               List.fold_left
                 (fun (acc,delayed) (off,init) ->
-                   match delayed, off, init with
-                   | None, Index({enode=Const (CInt64 (i0,_,_))}, NoOffset),
-                     SingleInit curr ->
-                       (acc,Some(off,curr,i0))
-                   | Some (i0,prev,ip), Index({enode=Const (CInt64 (i,_,_))}, NoOffset),
-                     SingleInit curr
-                     when ExpStructEq.equal prev curr
-                       && Integer.equal (Integer.pred ip) i ->
-                       (acc,Some(i0,prev,i))
-                   | _, _,_ ->
+                   let off = constfold_coffset off in
+                   let idx,acc = match off with
+                     | Index({enode=Const CInt64 (idx,_,_)}, _) ->
+                         (match delayed with
+                          | (iprev, _) when Integer.lt iprev idx ->
+                              (* CIL invariant broken.
+                                 without that invariant, an algo with a 2sd pass
+                                 is required for introducing default values *)
+                              WpLog.fatal "CIL invariant broken: unordered initializer";
+                          | _ -> ()) ;
+                         idx,
+                         (* adds default values for missing indices *)
+                         add_missing_indices acc (Integer.succ idx) delayed
+                     | _ -> (* CIL invariant broken. *)
+                         WpLog.fatal "CIL invariant broken: unknown initialized index"
+                   in
+                   match off, init with (* only simple init can be delayed *)
+                   | Index(_, NoOffset), SingleInit init -> begin
+                       match delayed with
+                       | (i_prev,(Some (_,_,init_delayed) as delayed_info))
+                         when Wp_parameters.InitWithForall.get ()
+                           && Integer.equal (Integer.pred i_prev) idx
+                           && ExpStructEq.equal init_delayed init ->
+                           acc, (idx,delayed_info)
+                       | _ -> (* flush the delayed init, and store the new one *)
+                           let acc = make_quant acc delayed in
+                           acc, (idx, Some (idx,off,init))
+                     end
+                   | Index(_, _),_ ->
+                       (* flush the delayed init, and adds the current one *)
                        let acc = make_quant acc delayed in
-                       begin match off, init with
-                         | Index({enode=Const (CInt64 (i0,_,_))}, NoOffset),
-                           SingleInit curr ->
-                             acc, Some (off,curr,i0)
-                         | _ ->
-                             let lv = Cil.addOffsetLval off lv in
-                             init_variable ~sigma lv init acc, None
-                       end)
-                (acc,None)
-                (List.rev initl) in
-            (make_quant acc delayed)
+                       let lv = Cil.addOffsetLval off lv in
+                       (init_variable ~sigma lv init acc), (idx, None)
+                   | _ -> WpLog.fatal "CIL invariant broken: not an index"
+                )
+                (acc,delayed)
+                (List.rev initl)
+            in
+            let acc = make_quant acc delayed in
+            add_missing_indices acc Integer.zero delayed
         | _ ->
             List.fold_left
               (fun acc (off,init) ->
diff --git a/src/plugins/wp/GuiComposer.ml b/src/plugins/wp/GuiComposer.ml
index 779d9f467f79b19a280785b206c5bd3f2bf9da1f..c550f764282a454e18e65b476a82f4ac97150148 100644
--- a/src/plugins/wp/GuiComposer.ml
+++ b/src/plugins/wp/GuiComposer.ml
@@ -69,7 +69,7 @@ class composer (focused : GuiSequent.focused) =
       match args with
       | a::b::_ when cc#ranged ->
           begin
-            match self#get_int a, self#get_int b with
+            match Tactical.get_int a, Tactical.get_int b with
             | Some a,Some b when a <= b ->
                 let callback () =
                   cc#set_value (Tactical.range a b) ;
@@ -89,11 +89,6 @@ class composer (focused : GuiSequent.focused) =
           update () in
         focused#button ~title:"Stack" ~callback fmt
 
-    method private get_int = function
-      | Tactical.Compose(Tactical.Cint z) ->
-          (try Some (Integer.to_int z) with Z.Overflow -> None)
-      | _ -> None
-
     method private op1 title job args fmt = match args with
       | a::w ->
           let callback () =
diff --git a/src/plugins/wp/GuiGoal.ml b/src/plugins/wp/GuiGoal.ml
index ee0e78942eba08a5e799e055e21174224afb8bec..5b8539b2c9085ede840a8c805c957d1834529ab5 100644
--- a/src/plugins/wp/GuiGoal.ml
+++ b/src/plugins/wp/GuiGoal.ml
@@ -35,30 +35,38 @@ type mode = [ `Refresh | `Autofocus | `ViewModel | `ViewAll | `ViewRaw ]
 
 module Config = Gtk_helper.Configuration
 
-class autofocus =
-  let options = [
-    `Refresh , "Refresh" ;
-    `Autofocus , "Autofocus" ;
-    `ViewAll , "Full Context" ;
-    `ViewModel , "Unmangled Memory" ;
-    `ViewRaw , "Raw Obligation" ;
-  ] in
-  let values = [
-    `Refresh , "REFRESH" ;
-    `Autofocus , "AUTOFOCUS" ;
-    `ViewAll , "VIEW_ALL" ;
-    `ViewModel , "VIEW_MODEL" ;
-    `ViewRaw , "VIEW_RAW" ;
-  ] in
+class ['a] menu ~(data : ('a * string * string) list) ~key ~default =
+  let options = List.map (fun (v,d,_) -> v,d) data in
+  let values = List.map (fun (v,_,k) -> v,k) data in
   object(self)
-    inherit [mode] Widget.menu ~default:`Autofocus ~options ()
+    inherit ['a] Widget.menu ~default ~options ()
     initializer
-      Wutil.later
-        begin fun () ->
-          Config.config_values
-            ~key:"GuiGoal.autofocus"
-            ~default:`Autofocus ~values self
-        end
+      Wutil.later (fun () -> Config.config_values ~key ~default ~values self)
+  end
+
+
+class autofocus =
+  object inherit [mode] menu
+      ~key:"GuiGoal.autofocus"
+      ~default:`Autofocus
+      ~data:[
+        `Refresh , "Refresh" , "REFRESH" ;
+        `Autofocus , "Autofocus" , "AUTOFOCUS" ;
+        `ViewAll , "Full Context" , "VIEW_ALL" ;
+        `ViewModel , "Unmangled Memory" , "VIEW_MODEL" ;
+        `ViewRaw , "Raw Obligation" , "VIEW_RAW" ;
+      ]
+  end
+
+class iformat =
+  object inherit [Plang.iformat] menu
+      ~key:"GuiGoal.iformat"
+      ~default:`Dec
+      ~data:[
+        `Dec , "Decimal" , "DEC" ;
+        `Hex , "Hexa" , "HEX" ;
+        `Bin , "Binary" , "BIN" ;
+      ]
   end
 
 (* -------------------------------------------------------------------------- *)
@@ -97,6 +105,7 @@ class pane (proverpane : GuiConfig.provers) =
   let save_script = new Widget.button
     ~icon:`SAVE ~tooltip:"Save Script" () in
   let autofocus = new autofocus in
+  let iformat = new iformat in
   let strategies = new GuiTactic.strategies () in
   object(self)
 
@@ -109,7 +118,8 @@ class pane (proverpane : GuiConfig.provers) =
         let toolbar =
           Wbox.(toolbar
                   [ w prev ; w next ; w cancel ; w forward ;
-                    w autofocus ; w play_script ; w save_script ;
+                    w autofocus ; w iformat ;
+                    w play_script ; w save_script ;
                     w ~padding:6 icon ; h ~padding:6 status ]
                   [ w help ; w delete ]) in
         layout#populate (Wbox.panel ~top:toolbar ~right:scroll_palette_widget text) ;
@@ -140,6 +150,7 @@ class pane (proverpane : GuiConfig.provers) =
         save_script#connect (fun () -> self#save_script) ;
         play_script#connect (fun () -> self#play_script) ;
         autofocus#connect self#autofocus ;
+        iformat#connect self#iformat ;
         composer#connect (fun () -> self#update) ;
         browser#connect (fun () -> self#update) ;
         help#connect (fun () -> self#open_help) ;
@@ -208,6 +219,8 @@ class pane (proverpane : GuiConfig.provers) =
           | `Leaf (k,_) -> ProofEngine.goto p (`Leaf(f k)) ; self#update
           | `Main | `Internal _ -> ()
 
+    method private iformat f = printer#set_iformat f ; self#update
+
     method private autofocus = function
       | `Autofocus ->
           printer#set_focus_mode true ;
@@ -242,6 +255,7 @@ class pane (proverpane : GuiConfig.provers) =
       | Proof p ->
           ProofEngine.reset p ;
           ProverScript.spawn
+            ~provers:[ VCS.AltErgo ]
             ~result:
               (fun wpo prv res ->
                  text#printf "[%a] %a : %a@."
diff --git a/src/plugins/wp/GuiSequent.ml b/src/plugins/wp/GuiSequent.ml
index 18e3d22a79cd6c2a21520a4223a217e634864554..9caaecce6659ed64c2dac555ff2f1c4a7aa17375 100644
--- a/src/plugins/wp/GuiSequent.ml
+++ b/src/plugins/wp/GuiSequent.ml
@@ -526,6 +526,9 @@ class focused (wtext : Wtext.text) =
     method get_state_mode = pcond#get_state
     method set_state_mode = pcond#set_state
 
+    method set_iformat = plang#set_iformat
+    method get_iformat = plang#get_iformat
+
     method selected =
       begin
         self#set_target self#selection ;
diff --git a/src/plugins/wp/GuiSequent.mli b/src/plugins/wp/GuiSequent.mli
index d1cfa16bbbe4f7b89fed7c8094253e0628556f18..b11d583cdf96a71bb0e8379df39f930610c2de04 100644
--- a/src/plugins/wp/GuiSequent.mli
+++ b/src/plugins/wp/GuiSequent.mli
@@ -37,6 +37,8 @@ class focused : Wtext.text ->
     method set_focus_mode : bool -> unit
     method get_state_mode : bool
     method set_state_mode : bool -> unit
+    method get_iformat : Plang.iformat
+    method set_iformat : Plang.iformat -> unit
 
     method selected : unit
     method unselect : target
diff --git a/src/plugins/wp/MemEmpty.ml b/src/plugins/wp/MemEmpty.ml
index a9999cc1990b2e2b24909ac5926e788623bbc9e2..cf7d3dc174069393407c5a60dcbca667178d9fb0 100644
--- a/src/plugins/wp/MemEmpty.ml
+++ b/src/plugins/wp/MemEmpty.ml
@@ -35,6 +35,8 @@ let configure () =
     Context.set Lang.pointer (fun _typ -> Logic.Int) ;
     Context.set Cvalues.null (p_equal e_zero) ;
   end
+let no_binder = { bind = fun _ f v -> f v }
+let configure_ia _ = no_binder
 
 let hypotheses () = []
 
diff --git a/src/plugins/wp/MemTyped.ml b/src/plugins/wp/MemTyped.ml
index 7439f2f8393fba8312c40754507ac3794dfd820e..410076e90d5b76643c128246e264f40d836807d6 100644
--- a/src/plugins/wp/MemTyped.ml
+++ b/src/plugins/wp/MemTyped.ml
@@ -149,7 +149,6 @@ let a_addr b k = a_shift (a_global b) k
 (* --- Qed Simplifiers                                                    --- *)
 (* -------------------------------------------------------------------------- *)
 
-
 (*
     Pointer arithmetic for structure access and array access could be
     defined directly using the record [{ base = p.base; offset = p.offset
@@ -367,6 +366,7 @@ let phi_addr_of_int p =
 (* -------------------------------------------------------------------------- *)
 (* --- Simplifier Registration                                            --- *)
 (* -------------------------------------------------------------------------- *)
+
 let () = Context.register
     begin fun () ->
       F.set_builtin_1   f_base   phi_base ;
@@ -391,6 +391,8 @@ let configure () =
     Context.set Lang.pointer (fun _ -> t_addr) ;
     Context.set Cvalues.null (p_equal a_null) ;
   end
+let no_binder = { bind = fun _ f v -> f v }
+let configure_ia _ = no_binder
 
 type pointer = NoCast | Fits | Unsafe
 let pointer = Context.create "MemTyped.pointer"
@@ -1028,7 +1030,7 @@ let load sigma obj l = Val (loadvalue sigma obj l)
 (* --- Locations                                                          --- *)
 (* -------------------------------------------------------------------------- *)
 
-let null = a_null
+let null = a_null (* as a loc *)
 
 let literal ~eid cst =
   shift (a_global (STRING.get (eid,cst))) (C_int (Ctypes.c_char ())) e_zero
diff --git a/src/plugins/wp/MemVar.ml b/src/plugins/wp/MemVar.ml
index cd5dcfd28d4f04fee81807c9d5604dea8bb52d43..b4d8a304b5e39ebcfb26c760a27b16bc269f24c9 100644
--- a/src/plugins/wp/MemVar.ml
+++ b/src/plugins/wp/MemVar.ml
@@ -49,6 +49,8 @@ struct
 
   let datatype = "MemVar." ^ V.datatype ^ M.datatype
   let configure = M.configure
+  let no_binder = { bind = fun _ f v -> f v }
+  let configure_ia _ = no_binder
 
   let hypotheses () = V.hypotheses () @ M.hypotheses ()
 
diff --git a/src/plugins/wp/MemZeroAlias.ml b/src/plugins/wp/MemZeroAlias.ml
index 1983f2361f498823fd38afb9fccaa19e372d77e6..c88f4531a438160afc5b4b7377c13978f189b43e 100644
--- a/src/plugins/wp/MemZeroAlias.ml
+++ b/src/plugins/wp/MemZeroAlias.ml
@@ -39,6 +39,8 @@ let configure () =
     Context.set Lang.pointer (fun _typ -> Logic.Int) ;
     Context.set Cvalues.null F.(p_equal e_zero) ;
   end
+let no_binder = { bind = fun _ f v -> f v }
+let configure_ia _ = no_binder
 
 (* TODO: compute actual separation hypotheses *)
 let hypotheses () = []
diff --git a/src/plugins/wp/Plang.ml b/src/plugins/wp/Plang.ml
index 95cbcbe5258c07f036e32983240b08f73e34a58e..5349fad798834ca1b646bae7713b6e398a366a25 100644
--- a/src/plugins/wp/Plang.ml
+++ b/src/plugins/wp/Plang.ml
@@ -67,6 +67,7 @@ module E = Qed.Export.Make(Lang.F.QED)
 module Env = E.Env
 
 type scope = Qed.Engine.scope
+type iformat = [ `Dec | `Hex | `Bin ]
 let sanitizer = Qed.Export.sanitize ~to_lowercase:false
 
 class engine =
@@ -75,6 +76,10 @@ class engine =
     inherit Lang.idprinting
     method infoprover w = w.altergo
 
+    val mutable iformat : iformat = `Dec
+    method get_iformat = iformat
+    method set_iformat (f : iformat) = iformat <- f
+
     (* --- Types --- *)
 
     method t_int = "Z"
@@ -97,7 +102,20 @@ class engine =
 
     method e_true _ = "true"
     method e_false _ = "false"
-    method pp_int _ = Integer.pretty ~hexa:false
+
+    method pp_int _ fmt z =
+      try
+        let n = Integer.to_int z in
+        if -256 <= n && n <= 256 then
+          Format.pp_print_int fmt n
+        else
+          raise Z.Overflow
+      with Z.Overflow ->
+      match iformat with
+      | `Dec -> Integer.pretty ~hexa:false fmt z
+      | `Hex -> Integer.pp_hex ~sep:"." fmt z
+      | `Bin -> Integer.pp_bin ~sep:"." fmt z
+
     method pp_real fmt q =
       match Q.classify q with
       | Q.ZERO -> Format.pp_print_string fmt ".0"
diff --git a/src/plugins/wp/Plang.mli b/src/plugins/wp/Plang.mli
index e837b405c730cfe25267591416585d0879a26284..3dd2bf095125c2c298443944d4eb8e32aeedd74f 100644
--- a/src/plugins/wp/Plang.mli
+++ b/src/plugins/wp/Plang.mli
@@ -36,9 +36,13 @@ val alloc_xs : pool -> (var -> unit) -> Vars.t -> unit
 val alloc_domain : pool -> Vars.t
 val sanitizer : string -> string
 
+type iformat = [ `Hex | `Dec | `Bin ]
+
 class engine :
   object
     inherit [Z.t,ADT.t,Field.t,Fun.t,tau,var,term,Env.t] Qed.Engine.engine
+    method get_iformat : iformat
+    method set_iformat : iformat -> unit
     method marks : Env.t * Lang.F.marks
     method pp_pred : Format.formatter -> pred -> unit
     method lookup : term -> scope
diff --git a/src/plugins/wp/ProofEngine.ml b/src/plugins/wp/ProofEngine.ml
index e3db17f70e4b0eb0ef694c329fa4e3c10eaf5b05..6d2bca1144d0184eea2d63679675fa643615cccc 100644
--- a/src/plugins/wp/ProofEngine.ml
+++ b/src/plugins/wp/ProofEngine.ml
@@ -69,6 +69,7 @@ let get wpo =
     | Some { script = Tactic _ } -> if proof.saved then `Saved else `Proof
   with Not_found ->
     if ProofSession.exists wpo then `Script else `None
+
 let iter_all f ns = List.iter (fun (_,n) -> f n) ns
 let map_all f ns = List.map (fun (k,n) -> k,f n) ns
 
@@ -277,6 +278,7 @@ let mk_goal t ~title ~part ~axioms sequent =
   let sid = Printf.sprintf "%s-%d" t.main.Wpo.po_sid id in
   Wpo.({
       po_gid = gid ;
+      po_leg = "" ; (* no use for legacy name *)
       po_sid = sid ;
       po_name = Printf.sprintf "%s (%s)" title part ;
       po_idx = t.main.po_idx ;
diff --git a/src/plugins/wp/ProofScript.ml b/src/plugins/wp/ProofScript.ml
index ef8404c41bd0541a3b2f4d35cfca3e33fafb11bb..2f5b986d29a6a3c94ff0e8905df5e92eb10cd5ef 100644
--- a/src/plugins/wp/ProofScript.ml
+++ b/src/plugins/wp/ProofScript.ml
@@ -300,6 +300,7 @@ let children_of_json = function
       List.map (fun j -> "",j) js
   | `Assoc fs -> fs
   | _ -> []
+
 let tactic_of_json js =
   try
     let header = js >? "header" |> Json.string in
@@ -382,7 +383,7 @@ let rec subgoals n = function
   | (_,a)::s -> subgoals (n + status a) s
 
 let a_prover p r = Prover(p,r)
-let a_tactic tac children = Tactic(subgoals 0 children,tac,children)
+let a_tactic tac children  = Tactic(subgoals 0 children,tac,children)
 
 (* -------------------------------------------------------------------------- *)
 (* --- Codecs                                                             --- *)
diff --git a/src/plugins/wp/ProofSession.ml b/src/plugins/wp/ProofSession.ml
index 987c4639ad8d4b8c777ee91becefde37f6c5a577..e79a9491ca5cac9e75d54e7b49b80bfd8ec60e94 100644
--- a/src/plugins/wp/ProofSession.ml
+++ b/src/plugins/wp/ProofSession.ml
@@ -22,39 +22,79 @@
 
 open Wpo
 
-let files = Hashtbl.create 32
+type status =
+  | NoScript
+  | Script of string
+  | Deprecated of string
 
-let filename wpo =
+let files : (string,status) Hashtbl.t = Hashtbl.create 32
+
+let filename ?(legacy=false) wpo =
   let m = Model.get_id wpo.po_model in
   let d = Wp_parameters.get_session_dir m in
-  Printf.sprintf "%s/%s.json" d wpo.po_gid
+  Printf.sprintf "%s/%s.json" d (if legacy then wpo.po_leg else wpo.po_gid)
 
 let pretty fmt wpo = Format.pp_print_string fmt (filename wpo)
 
-let exists wpo =
+let status wpo =
   let f = filename wpo in
   try Hashtbl.find files f
   with Not_found ->
-    let e = Sys.file_exists f in
-    Hashtbl.add files f e ; e
+    let status =
+      if Sys.file_exists f then Script f else
+        let f' = filename ~legacy:true wpo in
+        if Sys.file_exists f' then
+          ( Wp_parameters.warning ~current:false
+              "Deprecated script for '%s'" wpo.po_sid ;
+            Deprecated f' )
+        else NoScript in
+    Hashtbl.add files f status ; status
+
+let exists wpo =
+  match status wpo with NoScript -> false | Script _ | Deprecated _ -> true
 
 let load wpo =
-  let f = filename wpo in
-  if Sys.file_exists f then Json.load_file f else `Null
+  match status wpo with
+  | NoScript -> `Null
+  | Script f | Deprecated f ->
+      if Sys.file_exists f then Json.load_file f else `Null
+
+let remove wpo =
+  match status wpo with
+  | NoScript -> ()
+  | Script f ->
+      begin
+        Extlib.safe_remove f ;
+        Hashtbl.replace files f NoScript ;
+      end
+  | Deprecated f0 ->
+      begin
+        Wp_parameters.feedback
+          "Removed deprecated script for '%s'" wpo.po_sid ;
+        Extlib.safe_remove f0 ;
+        Hashtbl.replace files (filename wpo) NoScript ;
+      end
 
 let save wpo js =
-  let f = filename wpo in
   let empty =
     match js with
     | `Null | `List [] | `Assoc [] -> true
-    | _ -> false
-  in
-  ( if empty
-    then Extlib.safe_remove f
-    else Json.save_file f js ) ;
-  Hashtbl.replace files f (not empty)
-
-let remove wpo =
-  let f = filename wpo in
-  Extlib.safe_remove f ;
-  Hashtbl.replace files f false
+    | _ -> false in
+  if empty then remove wpo else
+    match status wpo with
+    | Script f -> Json.save_file f js
+    | NoScript ->
+        begin
+          let f = filename wpo in
+          Json.save_file f js ;
+          Hashtbl.replace files f (Script f) ;
+        end
+    | Deprecated f0 ->
+        begin
+          Wp_parameters.feedback
+            "Upgraded script for '%s'" wpo.po_sid ;
+          Extlib.safe_remove f0 ;
+          let f = filename wpo in
+          Json.save_file f js ;
+          Hashtbl.replace files f (Script f) ;
+        end
diff --git a/src/plugins/wp/ProofSession.mli b/src/plugins/wp/ProofSession.mli
index 3abe47aa97b9d894a8dd3b947f34e90afef942b8..1387357f27ae30e98cd0b8da4f52d81bf22f022d 100644
--- a/src/plugins/wp/ProofSession.mli
+++ b/src/plugins/wp/ProofSession.mli
@@ -21,7 +21,7 @@
 (**************************************************************************)
 
 val pretty : Format.formatter -> Wpo.t -> unit
-val filename : Wpo.t -> string
+val filename : ?legacy:bool -> Wpo.t -> string
 val exists : Wpo.t -> bool
 val save : Wpo.t -> Json.t -> unit
 val load : Wpo.t -> Json.t
diff --git a/src/plugins/wp/ProverCoq.ml b/src/plugins/wp/ProverCoq.ml
index 8a74ab1f2dc03ab707fc31e57643dc9bedf8df9d..7f07fdfe2587d78255717aa24699c2fec2bcd482 100644
--- a/src/plugins/wp/ProverCoq.ml
+++ b/src/plugins/wp/ProverCoq.ml
@@ -523,6 +523,7 @@ open Wpo
 type coq_wpo = {
   cw_pid : WpPropId.prop_id ;
   cw_gid : string ;
+  cw_leg : string ;
   cw_goal : string ; (* filename for goal without proof *)
   cw_script : string ; (* filename for goal with proof script *)
   cw_headers : string list ; (* filename for libraries *)
@@ -559,14 +560,14 @@ let rec try_hints w = function
       if succeed then
         let required,hints = WpPropId.prop_id_keys w.cw_pid in
         let keys = List.merge String.compare required hints in
-        Proof.add_script w.cw_gid keys script closing ;
+        Proof.add_script_for ~gid:w.cw_gid keys script closing ;
         Task.return true
       else
         try_hints w hints
 
 let try_prove w =
   begin
-    match Proof.script_for ~pid:w.cw_pid ~gid:w.cw_gid with
+    match Proof.script_for ~pid:w.cw_pid ~gid:w.cw_gid ~legacy:w.cw_leg with
     | Some (script,closing) ->
         Wp_parameters.feedback ~ontty "[Coq] Goal %s : Saved script" w.cw_gid ;
         try_script w script closing
@@ -579,7 +580,8 @@ let try_prove w =
     try_hints w (Proof.hints_for ~pid:w.cw_pid)
 
 let try_coqide w =
-  let script,closing = Proof.script_for_ide ~pid:w.cw_pid ~gid:w.cw_gid in
+  let script,closing =
+    Proof.script_for_ide ~pid:w.cw_pid ~gid:w.cw_gid ~legacy:w.cw_leg in
   make_script w script closing ;
   (new runcoq w.cw_includes w.cw_script)#coqide >>= fun st ->
   if st = 0 then
@@ -588,16 +590,16 @@ let try_coqide w =
         Wp_parameters.feedback "[Coq] No proof found" ;
         Task.return false
     | Some(script,closing) ->
-        if Proof.is_empty script then
+        if Proof.is_empty_script script then
           begin
-            Proof.delete_script w.cw_gid ;
+            Proof.delete_script_for ~gid:w.cw_gid ;
             Task.canceled () ;
           end
         else
           begin
             let req,hs = WpPropId.prop_id_keys w.cw_pid in
             let hints = List.merge String.compare req hs in
-            Proof.add_script w.cw_gid hints script closing ;
+            Proof.add_script_for ~gid:w.cw_gid hints script closing ;
             Wp_parameters.feedback ~ontty "[Coq] Goal %s : Script" w.cw_gid ;
             try_script w script closing
           end
@@ -651,6 +653,7 @@ let prove_session ~mode w =
 let prove_prop wpo ~mode ~axioms ~prop =
   let pid = wpo.po_pid in
   let gid = wpo.po_gid in
+  let leg = wpo.po_leg in
   let model = wpo.po_model in
   let script = DISK.file_goal ~pid ~model ~prover:Coq in
   let includes , headers , goal =
@@ -659,6 +662,7 @@ let prove_prop wpo ~mode ~axioms ~prop =
   prove_session ~mode {
     cw_pid = pid ;
     cw_gid = gid ;
+    cw_leg = leg ;
     cw_goal = goal ;
     cw_script = script ;
     cw_headers = headers ;
diff --git a/src/plugins/wp/ProverScript.ml b/src/plugins/wp/ProverScript.ml
index 153da7b96ef104963c41ef5fe1088dcb6e3b82ee..199f8180f9e0678a76630cebc3c578bc76a4401c 100644
--- a/src/plugins/wp/ProverScript.ml
+++ b/src/plugins/wp/ProverScript.ml
@@ -102,6 +102,7 @@ open Task
 
 module Env =
 struct
+
   type t = {
     tree : ProofEngine.tree ;
     valid : bool ; (* play valid provers *)
@@ -410,6 +411,7 @@ type 'a process =
 let skip1 _ = ()
 let skip2 _ _ = ()
 let skip3 _ _ _ = ()
+
 let prove
     ?(valid = true) ?(failed = true) ?(provers = [])
     ?(depth = 0) ?(width = 0) ?(backtrack = 0) ?(auto = [])
diff --git a/src/plugins/wp/Sigs.ml b/src/plugins/wp/Sigs.ml
index aa49e4f9d21b6052dbb868d93dfa3573905c5624..d451e04f15fcb2003abd1d85c6769e6a4afc1da0 100644
--- a/src/plugins/wp/Sigs.ml
+++ b/src/plugins/wp/Sigs.ml
@@ -27,6 +27,7 @@
 open Cil_types
 open Ctypes
 open Lang.F
+open Interpreted_automata
 
 (* -------------------------------------------------------------------------- *)
 (** {1 General Definitions} *)
@@ -34,6 +35,8 @@ open Lang.F
 
 type 'a sequence = { pre : 'a ; post : 'a }
 
+type 'a binder = { bind: 'b 'c. 'a -> ('b -> 'c) -> 'b -> 'c }
+
 (** Oriented equality or arbitrary relation *)
 type equation =
   | Set of term * term (** [Set(a,b)] is [a := b]. *)
@@ -267,6 +270,11 @@ sig
   (** Initializers to be run before using the model.
       Typically sets {!Context} values. *)
 
+  val configure_ia: automaton -> vertex binder
+  (** Given an automaton, return a vertex's binder.
+      Currently used by the automata compiler to bind current vertex.
+      See {!StmtSemantics}. *)
+
   val datatype : string
   (** For projectification. Must be unique among models. *)
 
diff --git a/src/plugins/wp/StmtSemantics.ml b/src/plugins/wp/StmtSemantics.ml
index dcfe6882c457142db1f40bb156ea742e8f894c3e..968c460cb2b5941bbe21304fc8ea819281bf9330 100644
--- a/src/plugins/wp/StmtSemantics.ml
+++ b/src/plugins/wp/StmtSemantics.ml
@@ -66,6 +66,7 @@ struct
   (* --- Env Utilities                                                      --- *)
   (* -------------------------------------------------------------------------- *)
 
+
   let result env = env.result
 
   let bind l n env =
@@ -575,6 +576,8 @@ struct
 
   let automaton : env -> Interpreted_automata.automaton -> paths = fun env a ->
     let open Interpreted_automata in
+    let binder = M.configure_ia a in
+    let bind = binder.bind in
     let wto = WTO.partition ~pref ~init:a.entry_point ~succs:(G.succ a.graph) in
     let index = Compute.build_wto_index_table wto in
 
@@ -620,26 +623,30 @@ struct
           do_list ~fresh_nodes paths nodes n2 l
     in
     let rec component nodes paths = function
-      | Wto.Node v -> do_node nodes v paths
-      | Wto.Component (v,l) ->
-          assert (not (Automata.Map.mem v nodes.local));
-          let invariants,l = get_invariants g v l in
-          let n = get_node {nodes with local = Automata.Map.empty} v in
-          (* initialization *)
-          let n,paths = do_list ~fresh_nodes:true paths nodes n invariants in
-          (* preservation *)
-          let n_loop = Cfg.node () in
-          let _,paths = do_list ~fresh_nodes:true paths nodes n_loop invariants in
-          (* arbitrary number of loop *)
-          let n_havoc = Cfg.node () in
-          let havoc = Cfg.havoc n ~effects:{pre=n_havoc;post=n_loop} n_havoc in
-          let paths = (havoc |> paths_of_cfg) @^ paths in
-          (* body *)
-          let invariants_as_assumes = as_assumes invariants in
-          let _,paths =
-            do_list ~fresh_nodes:false paths (add_local nodes v n_havoc)
-              n_havoc invariants_as_assumes in
-          partition (add_local nodes v n_loop) paths l
+      | Wto.Node ((n, _) as v) -> bind n (do_node nodes v) paths
+      | Wto.Component ((n, _) as v, l) ->
+          let do_component (v, l) =
+            assert (not (Automata.Map.mem v nodes.local));
+            let invariants,l = get_invariants g v l in
+            let n = get_node {nodes with local = Automata.Map.empty} v in
+            (* initialization *)
+            let n,paths = do_list ~fresh_nodes:true paths nodes n invariants in
+            (* preservation *)
+            let n_loop = Cfg.node () in
+            let _,paths = do_list ~fresh_nodes:true paths nodes n_loop invariants in
+            (* arbitrary number of loop *)
+            let n_havoc = Cfg.node () in
+            let havoc = Cfg.havoc n ~effects:{pre=n_havoc;post=n_loop} n_havoc in
+            let paths = (havoc |> paths_of_cfg) @^ paths in
+            (* body *)
+            let invariants_as_assumes = as_assumes invariants in
+            let _,paths =
+              do_list ~fresh_nodes:false paths (add_local nodes v n_havoc)
+                n_havoc invariants_as_assumes in
+            partition (add_local nodes v n_loop) paths l
+          in
+          bind n do_component (v, l)
+
     and partition nodes paths l =
       List.fold_left (component nodes) paths l
     in
@@ -744,21 +751,34 @@ struct
 
 
   let compute_kf kf =
-    let autom = Interpreted_automata.Compute.get_automaton ~annotations:true kf in
+    let open Interpreted_automata in
+    let autom = Compute.get_automaton ~annotations:true kf in
     (* let cout = open_out (Format.sprintf "/tmp/cfg_automata_%s.dot" (Kernel_function.get_name kf)) in
      * Interpreted_automata.Compute.output_to_dot cout autom;
      * close_out cout; *)
-    let nprepre = Cfg.node () in
-    let npre = Cfg.node () in
-    let npost = Cfg.node () in
-    let npostpost = Cfg.node () in
-    let env = empty_env kf  in
-    let env = env @* [Clabels.pre,npre;Clabels.post,npost] in
+    let binder = M.configure_ia autom in
+    let bind = binder.bind in
+    let spec = Annotations.funspec kf in
+    (* start and end nodes of pre(resp. post)-conditions. *)
+    let pres = { pre = Cfg.node (); post = Cfg.node () } in
+    let posts = { pre = Cfg.node (); post = Cfg.node () } in
+    let env = empty_env kf @* [Clabels.pre,pres.post;Clabels.post,posts.pre] in
+    (* initialization *)
     let init = init ~is_pre_main:(WpStrategy.is_main_init kf)
-        (env @* [Clabels.here,nprepre]) in
-    let kf_spec = Annotations.funspec kf in
-    let pre = pre_spec (env @* [Clabels.here,nprepre;Clabels.next,npre]) kf_spec in
-    let paths = automaton (env @* [Clabels.here,npre;Clabels.next,npost]) autom in
-    let post = post_normal_spec (env @* [Clabels.here,npost;Clabels.next,npostpost]) kf_spec in
-    init @^ pre @^ paths @^ post, env @: Clabels.init
+        (env @* [Clabels.here,pres.pre]) in
+    (* pre-condition *)
+    let pre =
+      bind autom.entry_point @@
+      pre_spec (env @* [Clabels.here,pres.pre;Clabels.next,pres.post])
+    in
+    (* code *)
+    let paths =
+      automaton (env @* [Clabels.here,pres.post;Clabels.next,posts.pre]) autom
+    in
+    (* post-condition *)
+    let post =
+      bind autom.return_point @@
+      post_normal_spec (env @* [Clabels.here,posts.pre;Clabels.next,posts.post])
+    in
+    init @^ pre spec @^ paths @^ post spec, env @: Clabels.init
 end
diff --git a/src/plugins/wp/TacInstance.ml b/src/plugins/wp/TacInstance.ml
index 967dcf535d0331c4ccd7702d875e4f1bc242e02a..ea227ab18ef8b10f42a02a49126f5baadf28f2cd 100644
--- a/src/plugins/wp/TacInstance.ml
+++ b/src/plugins/wp/TacInstance.ml
@@ -134,8 +134,10 @@ let filter x e =
   try F.Tau.equal (F.tau_of_var x) (F.typeof e)
   with Not_found -> true (* allowed to not restrict usage *)
 
-let fieldname k x =
-  Pretty_utils.sfprintf "%s (%a)" (descr k) F.Tau.pretty (F.tau_of_var x)
+let fieldname ~range k x =
+  Pretty_utils.sfprintf "%s (%a)%t"
+    (descr k) F.Tau.pretty (F.tau_of_var x)
+    (fun fmt -> if range then Format.pp_print_string fmt "(accept range)")
 
 class instance =
   object(self)
@@ -151,14 +153,13 @@ class instance =
           let bindings,property = self#wrap env p fields in
           bindings, F.e_imply hs property
       | L.Bind(q,tau,phi) , fd :: fields when q = env.binder ->
+          env.index <- succ env.index ;
           let x = F.fresh env.pool tau in
           let v = self#get_field fd in
-          env.index <- succ env.index ;
+          let range = match tau with L.Int -> true | _ -> false in
+          let tooltip = fieldname ~range env.index x in
           env.feedback#update_field
-            ~tooltip:(fieldname env.index x)
-            ~enabled:true
-            ~range:(match tau with L.Int -> true | _ -> false)
-            ~filter:(filter x) fd ;
+            ~tooltip ~range ~enabled:true ~filter:(filter x) fd ;
           let lemma = F.QED.lc_open x phi in
           let bindings,property = self#wrap env lemma fields in
           (x,v) :: bindings , property
diff --git a/src/plugins/wp/TacShift.ml b/src/plugins/wp/TacShift.ml
index f0ac610edabdee568aaba4a00ca715d89e63ea1f..fff37a69094cfad98a268ab90100b7834634d576 100644
--- a/src/plugins/wp/TacShift.ml
+++ b/src/plugins/wp/TacShift.ml
@@ -22,15 +22,13 @@
 
 open Lang
 
-
 let select_op f =
-  let rewrite descr u v = Tactical.rewrite [ descr , F.p_true , u , v ]
-  in
+  let rewrite descr u v = Tactical.rewrite [ descr , F.p_true , u , v ] in
   let rewrite_lsl e a n =
     (* from selection e='a<<n', rewrites the sequent 'Hs |- G' into:
        - Hs[e := a*2^n] |- G[e := a*2^n)] *)
     let b = F.e_mul a (F.e_int (1 lsl n)) in
-    rewrite "left shift into mult" e b
+    rewrite "shift" e b
   in
   let rewrite_lsr e a n =
     (* from selection e='a>>n', rewrites the sequent 'Hs |- G' into:
@@ -38,7 +36,7 @@ let select_op f =
        - Hs[e := a*2^n] |- G[e := a*2^n] *)
     let b = F.e_div a (F.e_int (1 lsl n)) in
     (fun seq -> ("positive" , (fst seq , F.p_leq F.e_zero a)) ::
-                rewrite "right shift into div" e b seq)
+                rewrite "shift" e b seq)
   in
   if f == Cint.f_lsl then rewrite_lsl else
   if f == Cint.f_lsr then rewrite_lsr else
diff --git a/src/plugins/wp/Tactical.ml b/src/plugins/wp/Tactical.ml
index ea1ddb3e2204769773cda32649bbe1cb7f37c1a4..0b1c0175fcfb8fe35aa8fbdb0a5f05b9c21aaa79 100644
--- a/src/plugins/wp/Tactical.ml
+++ b/src/plugins/wp/Tactical.ml
@@ -106,6 +106,17 @@ let selected = function
   | Clause c -> e_prop (head c)
   | Compose code -> composed code
 
+let get_int_z z =
+  try Some (Integer.to_int z) with Z.Overflow -> None
+
+let get_int = function
+  | Empty -> None
+  | Compose(Cint a) -> get_int_z a
+  | s ->
+      match Lang.F.repr (selected s) with
+      | Qed.Logic.Kint z -> get_int_z z
+      | _ -> None
+
 let subclause clause p =
   match clause with
   | Step s ->
diff --git a/src/plugins/wp/Tactical.mli b/src/plugins/wp/Tactical.mli
index 33be0f4754ba4e587bd2f95763aab2a23695d491..f501602f64a148c810dcb1e447c33a779389a02c 100644
--- a/src/plugins/wp/Tactical.mli
+++ b/src/plugins/wp/Tactical.mli
@@ -51,6 +51,7 @@ val int : int -> selection
 val cint : Integer.t -> selection
 val range : int -> int -> selection
 val compose : string -> selection list -> selection
+val get_int : selection -> int option
 val destruct : selection -> selection list
 
 val head : clause -> pred
diff --git a/src/plugins/wp/VC.ml b/src/plugins/wp/VC.ml
index e6d5f44f65d2efa3e7833864dd417ea8144a30a7..eb42ed0d9e5fdadf978ca356b6884831224686ee 100644
--- a/src/plugins/wp/VC.ml
+++ b/src/plugins/wp/VC.ml
@@ -93,6 +93,7 @@ let generate_call ?model stmt =
 
 let prove = Prover.prove
 let spawn = Prover.spawn ~delayed:true
+
 let server = ProverTask.server
 let command vcs = Register.do_wp_proofs_iter (fun f -> Bag.iter f vcs)
 
diff --git a/src/plugins/wp/cfgWP.ml b/src/plugins/wp/cfgWP.ml
index 85897e1e65142736d1c019c05f54bf5b72c36a53..604c97700aac03d1b923e498ff741cd4dd0383fb 100644
--- a/src/plugins/wp/cfgWP.ml
+++ b/src/plugins/wp/cfgWP.ml
@@ -559,9 +559,10 @@ struct
          Gmap.add target group vcs
       ) effects vcs
 
-  let do_assigns ?descr ?stmt ~source ?hpid ?warn sequence region effects vcs =
-    let vcs = check_assigns stmt source ?warn region effects vcs in
-    let eqmem = A.apply_assigns sequence region in
+  let do_assigns ?descr ?stmt ~source ?hpid ?warn sequence
+      ~assigned ?(unfolded=assigned) effects vcs =
+    let vcs = check_assigns stmt source ?warn unfolded effects vcs in
+    let eqmem = A.apply_assigns sequence assigned in
     gmap (assume_vc ?descr ?hpid ?stmt ?warn eqmem) vcs
 
   let do_assigns_everything ?stmt ?warn effects vcs =
@@ -574,9 +575,13 @@ struct
          add_vc target ?warn F.p_false vcs)
       effects vcs
 
+  let cc_region ~unfold cc data =
+    let assigned = cc ~unfold:false data in
+    assigned , if unfold then cc ~unfold:true data else assigned
+
   let cc_assigned env ~unfold kind froms =
     let dummy = Sigma.create () in
-    let r0 = L.assigned_of_froms ~unfold (L.move_at env dummy) froms in
+    let r0 = L.assigned_of_froms ~unfold:false (L.move_at env dummy) froms in
     let d0 = A.domain r0 in
     let s1 = L.current env in
     let s0 = Sigma.havoc s1 d0 in
@@ -584,9 +589,10 @@ struct
       | StmtAssigns -> s0
       | LoopAssigns -> s1
     in
-    let assigned = L.assigned_of_froms ~unfold (L.move_at env sref) froms in
+    let cc_assigned = L.assigned_of_froms (L.move_at env sref) in
+    let assigned,unfolded = cc_region ~unfold cc_assigned froms in
     let sequence = { pre=s0 ; post=s1 } in
-    sequence , assigned
+    sequence , assigned , unfolded
 
   let use_assigns wenv stmt hpid ainfo wp = in_wenv wenv wp
       begin fun env wp ->
@@ -605,10 +611,12 @@ struct
                 (cc_assigned env ~unfold kind) froms
             in
             match outcome with
-            | Warning.Result(warn,(sequence,assigned)) ->
+            | Warning.Result(warn,(sequence,assigned,unfolded)) ->
                 let vcs =
                   do_assigns ~source:FromCode
-                    ?hpid ?stmt ~warn sequence assigned wp.effects wp.vcs in
+                    ?hpid ?stmt ~warn sequence
+                    ~assigned ~unfolded
+                    wp.effects wp.vcs in
                 { sigma = Some sequence.pre ; vcs=vcs ; effects = wp.effects }
             | Warning.Failed warn ->
                 let sigma = Sigma.havoc_any ~call:false (L.current env) in
@@ -698,7 +706,7 @@ struct
                 (* R-Value is unknown or L-Value is volatile *)
                 let warn = Warning.Set.union l_warn r_warn in
                 let vcs = do_assigns ~source:FromCode
-                    ~stmt ~warn seq region wp.effects wp.vcs in
+                    ~stmt ~warn seq ~assigned:region wp.effects wp.vcs in
                 { sigma = Some seq.pre ; vcs=vcs ; effects = wp.effects }
             | Warning.Result(r_warn,Some stored) ->
                 (* R-Value and effects has been translated *)
@@ -1055,19 +1063,21 @@ struct
     | Writes froms ->
         let env = L.move_at env0 cenv.sigma_pre in
         let unfold = Wp_parameters.UnfoldAssigns.get () in
-        let call_region = L.in_frame cenv.frame_pre
-            (L.assigned_of_froms env ~unfold) froms in
+        let assigned,unfolded = L.in_frame cenv.frame_pre
+            (cc_region ~unfold (L.assigned_of_froms env))
+            froms in
         let vcs_post = do_assigns ~descr:"Call Effects" ~source:FromCall
-            ~stmt cenv.seq_post call_region wpost.effects wpost.vcs in
+            ~stmt cenv.seq_post ~assigned ~unfolded wpost.effects wpost.vcs in
         let vcs_exit = do_assigns ~descr:"Exit Effects" ~source:FromCall
-            ~stmt cenv.seq_exit call_region wexit.effects wexit.vcs in
+            ~stmt cenv.seq_exit ~assigned ~unfolded wexit.effects wexit.vcs in
         let vcs_result =
           match cenv.loc_result with
           | None -> vcs_post (* no result *)
           | Some(_,obj,loc) ->
-              let res_region = [obj,Sloc loc] in
-              do_assigns ~descr:"Return Effects" ~source:FromReturn
-                ~stmt cenv.seq_result res_region wpost.effects vcs_post
+              let assigned = [obj,Sloc loc] in
+              do_assigns ~descr:"Return Effects"
+                ~source:FromReturn ~stmt cenv.seq_result
+                ~assigned wpost.effects vcs_post
         in
         { vcs_post = vcs_result ; vcs_exit = vcs_exit }
 
@@ -1274,6 +1284,7 @@ struct
       po_pid = pid ;
       po_sid = "" ;
       po_gid = "" ;
+      po_leg = "" ;
       po_name = "" ;
       po_idx = index ;
       po_formula = GoalAnnot vcq ;
@@ -1332,10 +1343,12 @@ struct
         WpAnnot.split
           begin fun po_pid wpo ->
             let po_sid = WpPropId.get_propid po_pid in
+            let po_leg = WpPropId.get_legacy po_pid in
             let po_gid = Printf.sprintf "%s_%s" mid po_sid in
+            let po_leg = Printf.sprintf "%s_%s" mid po_leg in
             let po_name = Pretty_utils.to_string WpPropId.pretty_local pid in
             let wpo =
-              { wpo with po_pid ; po_sid ; po_gid ; po_name }
+              { wpo with po_pid ; po_sid ; po_gid ; po_leg ; po_name }
             in
             Wpo.add wpo ;
             collection := Bag.append !collection wpo ;
@@ -1366,9 +1379,11 @@ struct
           | LogicUsage.Axiomatic a -> Wpo.Axiomatic (Some a.ax_name) in
         let mid = Model.get_id model in
         let sid = WpPropId.get_propid id in
+        let leg = WpPropId.get_legacy id in
         let wpo = {
           Wpo.po_model = model ;
           Wpo.po_gid = Printf.sprintf "%s_%s" mid sid ;
+          Wpo.po_leg = Printf.sprintf "%s_%s" mid leg ;
           Wpo.po_sid = sid ;
           Wpo.po_name = Printf.sprintf "Lemma '%s'" l.lem_name ;
           Wpo.po_idx = index ;
@@ -1395,6 +1410,7 @@ let add_qed_check collection model ~qed ~raw ~goal =
   let vck = let open VC_Check in { raw ; qed ; goal } in
   let w = let open Wpo in {
       po_gid = id ;
+      po_leg = "" ; (* no use for legacy checks *)
       po_sid = id ;
       po_name = id ;
       po_idx = Axiomatic None ;
diff --git a/src/plugins/wp/proof.ml b/src/plugins/wp/proof.ml
index 3726f133c873b1434f5f7282b1d064b8af8fcb7a..129c0aad1eef0dae724859a24e95067287cecfc3 100644
--- a/src/plugins/wp/proof.ml
+++ b/src/plugins/wp/proof.ml
@@ -31,14 +31,6 @@ let needback   = ref false (* file script need backup before modification *)
 let needsave   = ref false (* file script need to be saved *)
 let needwarn   = ref false (* user should be prompted for chosen scriptfile *)
 
-let clear () =
-  begin
-    Hashtbl.clear scriptbase ;
-    scriptfile := None ;
-    needback := false ;
-    needsave := false ;
-  end
-
 let sanitize hint =
   try
     let n = String.length hint in
@@ -54,8 +46,8 @@ let register_script goal hints proof closing =
   let hints = List.sort String.compare (List.filter sanitize hints) in
   Hashtbl.replace scriptbase goal (hints,proof,closing)
 
-let delete_script goal =
-  Hashtbl.remove scriptbase goal
+let delete_script_for ~gid =
+  Hashtbl.remove scriptbase gid
 
 (* -------------------------------------------------------------------------- *)
 (* --- Proof Scripts Parsers                                              --- *)
@@ -63,7 +55,7 @@ let delete_script goal =
 
 open Script
 
-let is_empty script =
+let is_empty_script script =
   try
     for i=0 to String.length script - 1 do
       match script.[i] with '\n' | ' ' | '\t' -> () | _ -> raise Exit
@@ -213,12 +205,21 @@ let loadscripts () =
         end
     end
 
-let find_script_for_goal goal =
+let find_script_for_goal ~gid ~legacy =
   loadscripts () ;
   try
-    let _,proof,qed = Hashtbl.find scriptbase goal in
+    let _,proof,qed = Hashtbl.find scriptbase gid in
+    Some(proof,qed)
+  with Not_found ->
+  try
+    let (_,proof,qed) as entry = Hashtbl.find scriptbase legacy in
+    Wp_parameters.feedback "Upgrading Coq script for '%s'" gid ;
+    Hashtbl.add scriptbase gid entry ;
+    Hashtbl.remove scriptbase legacy ;
+    needsave := true ;
     Some(proof,qed)
-  with Not_found -> None
+  with Not_found ->
+    None
 
 let update_hints_for_goal goal hints =
   try
@@ -268,21 +269,20 @@ let find_script_with_hints required hints =
         scriptbase []
     end
 
-let add_script goal hints proof =
-  needsave := true ; register_script goal hints proof
+let add_script_for ~gid hints proof =
+  needsave := true ; register_script gid hints proof
 
 (* -------------------------------------------------------------------------- *)
 (* --- Prover API                                                         --- *)
 (* -------------------------------------------------------------------------- *)
 
-let script_for ~pid ~gid =
-  match find_script_for_goal gid with
-  | None -> None
-  | (Some _) as script ->
+let script_for ~pid ~gid ~legacy =
+  let found = find_script_for_goal ~gid ~legacy in
+  ( if found <> None then
       let required,hints = WpPropId.prop_id_keys pid in
       let all = List.merge String.compare required hints in
-      update_hints_for_goal gid all ;
-      script
+      update_hints_for_goal gid all ) ;
+  found
 
 let rec head n = function [] -> []
                         | x::xs -> if n > 0 then x :: head (pred n) xs else []
@@ -301,8 +301,8 @@ let hints_for ~pid =
     else default
   else default
 
-let script_for_ide ~pid ~gid =
-  match find_script_for_goal gid with
+let script_for_ide ~pid ~gid ~legacy =
+  match find_script_for_goal ~gid ~legacy with
   | Some script -> script
   | None ->
       let required,hints = WpPropId.prop_id_keys pid in
diff --git a/src/plugins/wp/proof.mli b/src/plugins/wp/proof.mli
index 21937e8fc7add30c49e1a3d2f633d1123c7ac390..14a0f7e97e1ea091a97106c3e712184d0fbe1285 100644
--- a/src/plugins/wp/proof.mli
+++ b/src/plugins/wp/proof.mli
@@ -21,58 +21,28 @@
 (**************************************************************************)
 
 (* -------------------------------------------------------------------------- *)
-(** Proof Script Database                                                     *)
+(** Coq Proof Scripts *)
 (* -------------------------------------------------------------------------- *)
 
-(** {2 Database} *)
-
-val delete_script : string -> unit
-val add_script : string -> string list -> string -> string -> unit
-(** [new_script goal keys proof qed] registers the script [proof] terminated by [qed]
-    for goal [goal] and keywords [keys] *)
-
-val find_script_for_goal : string -> (string * string) option
-(** Retrieve script file for one specific goal.
-    The file specified by [-wp-script f] is loaded if necessary. *)
+open WpPropId
 
-val update_hints_for_goal : string -> string list -> unit
-(** Update the hints for one specific goal. The script file will be saved if hints
-    are different. *)
+val is_empty_script : string -> bool
+(** Check a proof script text for emptyness *)
 
-val find_script_with_hints : string list -> string list -> (int * string * string * string) list
-(** Retrieve matchable script files for w.r.t provided required and hints keywords.
-    Most suitable scripts comes first, with format [(n,g,p,q)] where [p,q] is a script
-    matching [n] hints from possibly deprecated goal [g]. *)
+val delete_script_for : gid:string -> unit
+(** [delete_script ~gid] remove known script for goal. *)
 
-val clear : unit -> unit
+val add_script_for : gid:string -> string list -> string -> string -> unit
+(** [new_script goal keys proof qed] registers the script [proof]
+    terminated by [qed] for goal [gid] and keywords [keys] *)
 
-val loadscripts : unit -> unit
-(** Load scripts from [-wp-script f]. Automatically invoked by [find_xxx] unless
-    [loadscripts] flags is unset. *)
+val parse_coqproof : string -> (string * string) option
+(** [parse_coqproof f] parses a coq-file [f] and fetch the first proof. *)
 
 val savescripts : unit -> unit
 (** If necessary, dump the scripts database into the file
     specified by [-wp-script f]. *)
 
-(** {2 Low-level Parsers and Printers} *)
-
-val is_empty : string -> bool
-
-val parse_coqproof : string -> (string * string) option
-(** [parse_coqproof f] parses a coq-file [f] and fetch the first proof. *)
-
-val parse_scripts : string -> unit
-(** [parse_scripts f] parses all scripts from file [f] and put them in the database. *)
-
-val dump_scripts : string -> unit
-(** [dump_scripts f] saves all scripts from the database into file [f]. *)
-
-(* -------------------------------------------------------------------------- *)
-(** Proof Script Interaction                                                  *)
-(* -------------------------------------------------------------------------- *)
-
-open WpPropId
-
-val script_for : pid:prop_id -> gid:string -> (string * string) option
-val script_for_ide : pid:prop_id -> gid:string -> string * string
+val script_for : pid:prop_id -> gid:string -> legacy:string -> (string * string) option
+val script_for_ide : pid:prop_id -> gid:string -> legacy:string -> string * string
 val hints_for : pid:prop_id -> (string * string * string) list
diff --git a/src/plugins/wp/share/Makefile b/src/plugins/wp/share/Makefile
index 8834bbe28cdb4252efc102cc0eb44d6ddf50686d..c4adc837f46a4ccf1f637fef636155f891c86489 100644
--- a/src/plugins/wp/share/Makefile
+++ b/src/plugins/wp/share/Makefile
@@ -32,6 +32,7 @@ WPLSHARE=$(Wp_DIR)/share
 wp-coq-clean:
 	find $(Wp_DIR) \( -name "*.vo" -or -name "*.glob" \) -print -delete
 	rm -f $(WPLSHARE)/coqwp/.depend $(WPLSHARE)/why3/.depend
+clean:: wp-coq-clean
 
 clean:: wp-coq-clean
 
@@ -81,7 +82,7 @@ COQWPINCLUDES= -R $(WPLSHARE)/coqwp ''
 
 $(WPLSHARE)/coqwp/%.vo: $(WPLSHARE)/coqwp/%.v
 	echo "Coqc         $<"
-	@coqc -w none $(COQWPINCLUDES) $<
+	coqc -w none $(COQWPINCLUDES) $<
 
 $(WPLSHARE)/coqwp/.depend: $(addprefix $(WPLSHARE)/, $(WP_COQ_SOURCES))
 	echo "Coqdep for $(WPLSHARE)/coqwp"
diff --git a/src/plugins/wp/share/coqwp/Cfloat.v b/src/plugins/wp/share/coqwp/Cfloat.v
index 32ac89fe1bf3daaed70a51033e4d5ba6220b9d10..f25c72b7027de53cfb3377ab0f3d139ac51f6538 100644
--- a/src/plugins/wp/share/coqwp/Cfloat.v
+++ b/src/plugins/wp/share/coqwp/Cfloat.v
@@ -27,9 +27,11 @@ Require Reals.Rbasic_fun.
 Require Reals.R_sqrt.
 Require BuiltIn.
 Require bool.Bool.
+Require int.Int.
 Require real.Real.
 Require real.RealInfix.
 Require real.Abs.
+Require real.FromInt.
 Require real.Square.
 
 (* Why3 goal *)
@@ -56,6 +58,22 @@ Admitted.
 Definition of_f64: f64 -> R.
 Admitted.
 
+(* Why3 goal *)
+Lemma to_f32_zero : ((of_f32 (to_f32 0%R)) = 0%R).
+Admitted.
+
+(* Why3 goal *)
+Lemma to_f32_one : ((of_f32 (to_f32 1%R)) = 1%R).
+Admitted.
+
+(* Why3 goal *)
+Lemma to_f64_zero : ((of_f64 (to_f64 0%R)) = 0%R).
+Admitted.
+
+(* Why3 goal *)
+Lemma to_f64_one : ((of_f64 (to_f64 1%R)) = 1%R).
+Admitted.
+
 (* Why3 assumption *)
 Inductive rounding_mode :=
   | Up : rounding_mode
@@ -118,7 +136,7 @@ Definition is_infinite_f32 (f:f32): Prop := ((classify_f32 f) = Inf_pos) \/
   ((classify_f32 f) = Inf_neg).
 
 (* Why3 assumption *)
-Definition is_infinite_f36 (d:f64): Prop := ((classify_f64 d) = Inf_pos) \/
+Definition is_infinite_f64 (d:f64): Prop := ((classify_f64 d) = Inf_pos) \/
   ((classify_f64 d) = Inf_neg).
 
 (* Why3 assumption *)
diff --git a/src/plugins/wp/share/ergo/Cfloat.mlw b/src/plugins/wp/share/ergo/Cfloat.mlw
index 206b283868c9233d5da92b0301b17dc3586aa410..3c0e03b4c0baa4c6eae2075a10ba292df73c66c2 100644
--- a/src/plugins/wp/share/ergo/Cfloat.mlw
+++ b/src/plugins/wp/share/ergo/Cfloat.mlw
@@ -24,9 +24,11 @@
 (** The theory BuiltIn_ must be appended to this file*)
 (** The theory Bool_ must be appended to this file*)
 (** The theory bool_Bool_ must be appended to this file*)
+(** The theory int_Int_ must be appended to this file*)
 (** The theory real_Real_ must be appended to this file*)
 (** The theory real_RealInfix_ must be appended to this file*)
 (** The theory real_Abs_ must be appended to this file*)
+(** The theory real_FromInt_ must be appended to this file*)
 (** The theory real_Square_ must be appended to this file*)
 type f32
 
@@ -40,6 +42,14 @@ logic to_f64 : real -> f64
 
 logic of_f64 : f64 -> real
 
+axiom to_f32_zero : (of_f32(to_f32(0.0)) = 0.0)
+
+axiom to_f32_one : (of_f32(to_f32(1.0)) = 1.0)
+
+axiom to_f64_zero : (of_f64(to_f64(0.0)) = 0.0)
+
+axiom to_f64_one : (of_f64(to_f64(1.0)) = 1.0)
+
 type rounding_mode = Up | Down | ToZero | NearestTiesToAway
   | NearestTiesToEven
 
@@ -112,7 +122,7 @@ predicate is_NaN_f64(d: f64) = (classify_f64(d) = NaN)
 predicate is_infinite_f32(f: f32) = ((classify_f32(f) = Inf_pos) or
   (classify_f32(f) = Inf_neg))
 
-predicate is_infinite_f36(d: f64) = ((classify_f64(d) = Inf_pos) or
+predicate is_infinite_f64(d: f64) = ((classify_f64(d) = Inf_pos) or
   (classify_f64(d) = Inf_neg))
 
 predicate is_positive_infinite_f32(f: f32) = (classify_f32(f) = Inf_pos)
diff --git a/src/plugins/wp/share/src/Cfloat.v b/src/plugins/wp/share/src/Cfloat.v
index f6ec365e55954b2ea213cdcde24579f61a166396..722da22037a3075a09cbcae763e225ebb9d371a1 100644
--- a/src/plugins/wp/share/src/Cfloat.v
+++ b/src/plugins/wp/share/src/Cfloat.v
@@ -5,9 +5,11 @@ Require Reals.Rbasic_fun.
 Require Reals.R_sqrt.
 Require BuiltIn.
 Require bool.Bool.
+Require int.Int.
 Require real.Real.
 Require real.RealInfix.
 Require real.Abs.
+Require real.FromInt.
 Require real.Square.
 
 (* Why3 goal *)
@@ -34,6 +36,22 @@ Admitted.
 Definition of_f64: f64 -> R.
 Admitted.
 
+(* Why3 goal *)
+Lemma to_f32_zero : ((of_f32 (to_f32 0%R)) = 0%R).
+Admitted.
+
+(* Why3 goal *)
+Lemma to_f32_one : ((of_f32 (to_f32 1%R)) = 1%R).
+Admitted.
+
+(* Why3 goal *)
+Lemma to_f64_zero : ((of_f64 (to_f64 0%R)) = 0%R).
+Admitted.
+
+(* Why3 goal *)
+Lemma to_f64_one : ((of_f64 (to_f64 1%R)) = 1%R).
+Admitted.
+
 (* Why3 assumption *)
 Inductive rounding_mode :=
   | Up : rounding_mode
@@ -96,7 +114,7 @@ Definition is_infinite_f32 (f:f32): Prop := ((classify_f32 f) = Inf_pos) \/
   ((classify_f32 f) = Inf_neg).
 
 (* Why3 assumption *)
-Definition is_infinite_f36 (d:f64): Prop := ((classify_f64 d) = Inf_pos) \/
+Definition is_infinite_f64 (d:f64): Prop := ((classify_f64 d) = Inf_pos) \/
   ((classify_f64 d) = Inf_neg).
 
 (* Why3 assumption *)
diff --git a/src/plugins/wp/share/src/alt_ergo_why3_stdlib.drv b/src/plugins/wp/share/src/alt_ergo_why3_stdlib.drv
index 2d442b749a10bd60569cffa72dba96a50549ee61..c913ef7afd438b8c45c5d8c3fdb321452a272de9 100644
--- a/src/plugins/wp/share/src/alt_ergo_why3_stdlib.drv
+++ b/src/plugins/wp/share/src/alt_ergo_why3_stdlib.drv
@@ -21,7 +21,7 @@
 (**************************************************************************)
 
 theory int.Int
-   remove prop CompatOrderMult
+  remove prop CompatOrderMult
 end
 
 theory int.Abs
@@ -44,7 +44,7 @@ theory int.ComputerDivision
 end
 
 theory real.Real
-   remove prop CompatOrderMult
+  remove prop CompatOrderMult
 end
 
 theory real.Abs
diff --git a/src/plugins/wp/share/src/cfloat.why b/src/plugins/wp/share/src/cfloat.why
index 711a803b32eab70a51cc93d9f5d22534c97c7c4f..f8bc5732032cd50db77121543f388a9ec3c721f0 100644
--- a/src/plugins/wp/share/src/cfloat.why
+++ b/src/plugins/wp/share/src/cfloat.why
@@ -30,6 +30,7 @@ theory Cfloat
   use import real.RealInfix
   use import real.Abs
   use import real.Square
+  use import real.FromInt
 
   (* -------------------------------------------------------------------------- *)
   (* --- C-Integer Arithmetics for Alt-Ergo                                 --- *)
@@ -46,6 +47,11 @@ theory Cfloat
   function to_f64 real : f64
   function of_f64 f64 : real
 
+  axiom to_f32_zero: of_f32 (to_f32 0.0) = 0.0
+  axiom to_f32_one:  of_f32 (to_f32 1.0) = 1.0
+  axiom to_f64_zero: of_f64 (to_f64 0.0) = 0.0
+  axiom to_f64_one:  of_f64 (to_f64 1.0) = 1.0
+
   (* C-Float Rounding Modes *)
 
   type rounding_mode = Up | Down | ToZero | NearestTiesToAway | NearestTiesToEven
@@ -113,7 +119,6 @@ theory Cfloat
   function eq_f64b (x:f64) (y:f64) : bool
   predicate eq_f32 (x:f32) (y:f32) = (eq_f32b x y = true)
   predicate eq_f64 (x:f64) (y:f64) = (eq_f64b x y = true)
-
   axiom eq_finite_f32 : forall x,y:f32 [eq_f32 x y]. is_finite_f32 x -> is_finite_f32 y ->
                                         eq_f32 x y <-> of_f32 x = of_f32 y
 
diff --git a/src/plugins/wp/share/src/logs/Cbits.coq_BACKUP_6706.err b/src/plugins/wp/share/src/logs/Cbits.coq_BACKUP_6706.err
new file mode 100644
index 0000000000000000000000000000000000000000..fb2d1d57a8f4d66263b04e818b12a116c91cc100
--- /dev/null
+++ b/src/plugins/wp/share/src/logs/Cbits.coq_BACKUP_6706.err
@@ -0,0 +1,400 @@
+<<<<<<< HEAD
+[Config] reading extra configuration file realization.conf
+File "SHARE/./qed.why", line 79, characters 8-19:
+warning: axiom c_euclidian does not contain any local abstract symbol
+File "SHARE/./qed.why", line 94, characters 8-22:
+warning: axiom cmod_remainder does not contain any local abstract symbol
+File "SHARE/./qed.why", line 100, characters 8-20:
+warning: axiom cdiv_neutral does not contain any local abstract symbol
+File "SHARE/./qed.why", line 101, characters 8-16:
+warning: axiom cdiv_inv does not contain any local abstract symbol
+File "SHARE/./cmath.why", line 33, characters 8-15:
+warning: axiom abs_def does not contain any local abstract symbol
+File "SHARE/./cmath.why", line 37, characters 8-17:
+warning: axiom sqrt_lin1 does not contain any local abstract symbol
+File "SHARE/./cmath.why", line 38, characters 8-17:
+warning: axiom sqrt_lin0 does not contain any local abstract symbol
+File "SHARE/./cmath.why", line 39, characters 8-14:
+warning: axiom sqrt_0 does not contain any local abstract symbol
+File "SHARE/./cmath.why", line 40, characters 8-14:
+warning: axiom sqrt_1 does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 37, characters 8-20:
+warning: axiom bit_test_def does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 44, characters 8-27:
+warning: axiom bit_test_extraction does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 50, characters 8-15:
+warning: axiom lsl_1_0 does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 52, characters 8-31:
+warning: axiom bit_test_extraction_bis does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 54, characters 8-34:
+warning: axiom bit_test_extraction_bis_eq does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 59, characters 8-23:
+warning: axiom lnot_extraction does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 65, characters 8-23:
+warning: axiom land_extraction does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 71, characters 8-22:
+warning: axiom lor_extraction does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 77, characters 8-23:
+warning: axiom lxor_extraction does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 85, characters 8-20:
+warning: axiom land_1_lsl_1 does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 90, characters 8-26:
+warning: axiom lsl_extraction_sup does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 96, characters 8-26:
+warning: axiom lsl_extraction_inf does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 102, characters 8-23:
+warning: axiom lsr_extractionl does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 108, characters 8-23:
+warning: axiom lsl1_extraction does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 139, characters 8-31:
+warning: axiom to_uint8_extraction_sup does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 144, characters 8-31:
+warning: axiom to_uint8_extraction_inf does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 155, characters 8-32:
+warning: axiom to_uint16_extraction_sup does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 160, characters 8-32:
+warning: axiom to_uint16_extraction_inf does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 171, characters 8-32:
+warning: axiom to_uint32_extraction_sup does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 176, characters 8-32:
+warning: axiom to_uint32_extraction_inf does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 187, characters 8-32:
+warning: axiom to_uint64_extraction_sup does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 192, characters 8-32:
+warning: axiom to_uint64_extraction_inf does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 219, characters 8-31:
+warning: axiom to_sint8_extraction_sup does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 224, characters 8-31:
+warning: axiom to_sint8_extraction_inf does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 235, characters 8-32:
+warning: axiom to_sint16_extraction_sup does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 240, characters 8-32:
+warning: axiom to_sint16_extraction_inf does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 251, characters 8-32:
+warning: axiom to_sint32_extraction_sup does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 256, characters 8-32:
+warning: axiom to_sint32_extraction_inf does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 267, characters 8-32:
+warning: axiom to_sint64_extraction_sup does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 272, characters 8-32:
+warning: axiom to_sint64_extraction_inf does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 299, characters 8-21:
+warning: axiom to_uint32_lor does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 329, characters 8-21:
+warning: axiom is_uint8_lxor does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 332, characters 8-20:
+warning: axiom is_uint8_lor does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 335, characters 8-21:
+warning: axiom is_uint8_land does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 338, characters 8-20:
+warning: axiom is_uint8_lsr does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 341, characters 8-25:
+warning: axiom is_uint8_lsl1_inf does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 344, characters 8-25:
+warning: axiom is_uint8_lsl1_sup does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 348, characters 8-22:
+warning: axiom is_uint16_lxor does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 351, characters 8-21:
+warning: axiom is_uint16_lor does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 354, characters 8-22:
+warning: axiom is_uint16_land does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 357, characters 8-21:
+warning: axiom is_uint16_lsr does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 360, characters 8-26:
+warning: axiom is_uint16_lsl1_inf does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 363, characters 8-26:
+warning: axiom is_uint16_lsl1_sup does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 367, characters 8-22:
+warning: axiom is_uint32_lxor does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 370, characters 8-21:
+warning: axiom is_uint32_lor does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 373, characters 8-22:
+warning: axiom is_uint32_land does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 376, characters 8-21:
+warning: axiom is_uint32_lsr does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 379, characters 8-26:
+warning: axiom is_uint32_lsl1_inf does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 382, characters 8-26:
+warning: axiom is_uint32_lsl1_sup does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 386, characters 8-22:
+warning: axiom is_uint64_lxor does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 389, characters 8-21:
+warning: axiom is_uint64_lor does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 392, characters 8-22:
+warning: axiom is_uint64_land does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 395, characters 8-21:
+warning: axiom is_uint64_lsr does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 398, characters 8-26:
+warning: axiom is_uint64_lsl1_inf does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 401, characters 8-26:
+warning: axiom is_uint64_lsl1_sup does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 428, characters 8-21:
+warning: axiom is_sint8_lnot does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 431, characters 8-21:
+warning: axiom is_sint8_lxor does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 434, characters 8-20:
+warning: axiom is_sint8_lor does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 437, characters 8-21:
+warning: axiom is_sint8_land does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 440, characters 8-20:
+warning: axiom is_sint8_lsr does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 443, characters 8-21:
+warning: axiom is_sint8_lsl1 does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 446, characters 8-25:
+warning: axiom is_sint8_lsl1_inf does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 449, characters 8-25:
+warning: axiom is_sint8_lsl1_sup does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 453, characters 8-22:
+warning: axiom is_sint16_lnot does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 456, characters 8-22:
+warning: axiom is_sint16_lxor does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 459, characters 8-21:
+warning: axiom is_sint16_lor does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 462, characters 8-22:
+warning: axiom is_sint16_land does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 465, characters 8-21:
+warning: axiom is_sint16_lsr does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 468, characters 8-22:
+warning: axiom is_sint16_lsl1 does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 471, characters 8-26:
+warning: axiom is_sint16_lsl1_inf does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 474, characters 8-26:
+warning: axiom is_sint16_lsl1_sup does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 478, characters 8-22:
+warning: axiom is_sint32_lnot does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 481, characters 8-22:
+warning: axiom is_sint32_lxor does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 484, characters 8-21:
+warning: axiom is_sint32_lor does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 487, characters 8-22:
+warning: axiom is_sint32_land does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 490, characters 8-21:
+warning: axiom is_sint32_lsr does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 493, characters 8-22:
+warning: axiom is_sint32_lsl1 does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 496, characters 8-26:
+warning: axiom is_sint32_lsl1_inf does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 499, characters 8-26:
+warning: axiom is_sint32_lsl1_sup does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 503, characters 8-22:
+warning: axiom is_sint64_lnot does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 506, characters 8-22:
+warning: axiom is_sint64_lxor does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 509, characters 8-21:
+warning: axiom is_sint64_lor does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 512, characters 8-22:
+warning: axiom is_sint64_land does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 515, characters 8-21:
+warning: axiom is_sint64_lsr does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 518, characters 8-22:
+warning: axiom is_sint64_lsl1 does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 521, characters 8-26:
+warning: axiom is_sint64_lsl1_inf does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 524, characters 8-26:
+warning: axiom is_sint64_lsl1_sup does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 549, characters 8-20:
+warning: axiom lor_addition does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 552, characters 8-21:
+warning: axiom lxor_addition does not contain any local abstract symbol
+||||||| merged common ancestors
+=======
+[Config] reading extra configuration file realization.conf
+File "WP-SHARE/src/./qed.why", line 76, characters 8-19:
+warning: axiom c_euclidian does not contain any local abstract symbol
+File "WP-SHARE/src/./qed.why", line 91, characters 8-22:
+warning: axiom cmod_remainder does not contain any local abstract symbol
+File "WP-SHARE/src/./qed.why", line 97, characters 8-20:
+warning: axiom cdiv_neutral does not contain any local abstract symbol
+File "WP-SHARE/src/./qed.why", line 98, characters 8-16:
+warning: axiom cdiv_inv does not contain any local abstract symbol
+File "WP-SHARE/src/./cmath.why", line 32, characters 8-15:
+warning: axiom abs_def does not contain any local abstract symbol
+File "WP-SHARE/src/./cmath.why", line 43, characters 8-17:
+warning: axiom sqrt_lin1 does not contain any local abstract symbol
+File "WP-SHARE/src/./cmath.why", line 44, characters 8-17:
+warning: axiom sqrt_lin0 does not contain any local abstract symbol
+File "WP-SHARE/src/./cmath.why", line 45, characters 8-14:
+warning: axiom sqrt_0 does not contain any local abstract symbol
+File "WP-SHARE/src/./cmath.why", line 46, characters 8-14:
+warning: axiom sqrt_1 does not contain any local abstract symbol
+File "WP-SHARE/src/./cmath.why", line 55, characters 8-15:
+warning: axiom exp_pos does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 37, characters 8-20:
+warning: axiom bit_test_def does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 44, characters 8-27:
+warning: axiom bit_test_extraction does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 50, characters 8-15:
+warning: axiom lsl_1_0 does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 52, characters 8-31:
+warning: axiom bit_test_extraction_bis does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 54, characters 8-34:
+warning: axiom bit_test_extraction_bis_eq does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 59, characters 8-23:
+warning: axiom lnot_extraction does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 65, characters 8-23:
+warning: axiom land_extraction does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 71, characters 8-22:
+warning: axiom lor_extraction does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 77, characters 8-23:
+warning: axiom lxor_extraction does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 85, characters 8-20:
+warning: axiom land_1_lsl_1 does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 90, characters 8-26:
+warning: axiom lsl_extraction_sup does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 96, characters 8-26:
+warning: axiom lsl_extraction_inf does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 102, characters 8-23:
+warning: axiom lsr_extractionl does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 108, characters 8-23:
+warning: axiom lsl1_extraction does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 139, characters 8-31:
+warning: axiom to_uint8_extraction_sup does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 144, characters 8-31:
+warning: axiom to_uint8_extraction_inf does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 155, characters 8-32:
+warning: axiom to_uint16_extraction_sup does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 160, characters 8-32:
+warning: axiom to_uint16_extraction_inf does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 171, characters 8-32:
+warning: axiom to_uint32_extraction_sup does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 176, characters 8-32:
+warning: axiom to_uint32_extraction_inf does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 187, characters 8-32:
+warning: axiom to_uint64_extraction_sup does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 192, characters 8-32:
+warning: axiom to_uint64_extraction_inf does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 219, characters 8-31:
+warning: axiom to_sint8_extraction_sup does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 224, characters 8-31:
+warning: axiom to_sint8_extraction_inf does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 235, characters 8-32:
+warning: axiom to_sint16_extraction_sup does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 240, characters 8-32:
+warning: axiom to_sint16_extraction_inf does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 251, characters 8-32:
+warning: axiom to_sint32_extraction_sup does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 256, characters 8-32:
+warning: axiom to_sint32_extraction_inf does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 267, characters 8-32:
+warning: axiom to_sint64_extraction_sup does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 272, characters 8-32:
+warning: axiom to_sint64_extraction_inf does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 299, characters 8-21:
+warning: axiom to_uint32_lor does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 329, characters 8-21:
+warning: axiom is_uint8_lxor does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 332, characters 8-20:
+warning: axiom is_uint8_lor does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 335, characters 8-21:
+warning: axiom is_uint8_land does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 338, characters 8-20:
+warning: axiom is_uint8_lsr does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 341, characters 8-25:
+warning: axiom is_uint8_lsl1_inf does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 344, characters 8-25:
+warning: axiom is_uint8_lsl1_sup does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 348, characters 8-22:
+warning: axiom is_uint16_lxor does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 351, characters 8-21:
+warning: axiom is_uint16_lor does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 354, characters 8-22:
+warning: axiom is_uint16_land does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 357, characters 8-21:
+warning: axiom is_uint16_lsr does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 360, characters 8-26:
+warning: axiom is_uint16_lsl1_inf does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 363, characters 8-26:
+warning: axiom is_uint16_lsl1_sup does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 367, characters 8-22:
+warning: axiom is_uint32_lxor does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 370, characters 8-21:
+warning: axiom is_uint32_lor does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 373, characters 8-22:
+warning: axiom is_uint32_land does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 376, characters 8-21:
+warning: axiom is_uint32_lsr does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 379, characters 8-26:
+warning: axiom is_uint32_lsl1_inf does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 382, characters 8-26:
+warning: axiom is_uint32_lsl1_sup does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 386, characters 8-22:
+warning: axiom is_uint64_lxor does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 389, characters 8-21:
+warning: axiom is_uint64_lor does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 392, characters 8-22:
+warning: axiom is_uint64_land does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 395, characters 8-21:
+warning: axiom is_uint64_lsr does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 398, characters 8-26:
+warning: axiom is_uint64_lsl1_inf does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 401, characters 8-26:
+warning: axiom is_uint64_lsl1_sup does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 428, characters 8-21:
+warning: axiom is_sint8_lnot does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 431, characters 8-21:
+warning: axiom is_sint8_lxor does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 434, characters 8-20:
+warning: axiom is_sint8_lor does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 437, characters 8-21:
+warning: axiom is_sint8_land does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 440, characters 8-20:
+warning: axiom is_sint8_lsr does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 443, characters 8-21:
+warning: axiom is_sint8_lsl1 does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 446, characters 8-25:
+warning: axiom is_sint8_lsl1_inf does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 449, characters 8-25:
+warning: axiom is_sint8_lsl1_sup does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 453, characters 8-22:
+warning: axiom is_sint16_lnot does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 456, characters 8-22:
+warning: axiom is_sint16_lxor does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 459, characters 8-21:
+warning: axiom is_sint16_lor does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 462, characters 8-22:
+warning: axiom is_sint16_land does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 465, characters 8-21:
+warning: axiom is_sint16_lsr does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 468, characters 8-22:
+warning: axiom is_sint16_lsl1 does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 471, characters 8-26:
+warning: axiom is_sint16_lsl1_inf does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 474, characters 8-26:
+warning: axiom is_sint16_lsl1_sup does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 478, characters 8-22:
+warning: axiom is_sint32_lnot does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 481, characters 8-22:
+warning: axiom is_sint32_lxor does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 484, characters 8-21:
+warning: axiom is_sint32_lor does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 487, characters 8-22:
+warning: axiom is_sint32_land does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 490, characters 8-21:
+warning: axiom is_sint32_lsr does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 493, characters 8-22:
+warning: axiom is_sint32_lsl1 does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 496, characters 8-26:
+warning: axiom is_sint32_lsl1_inf does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 499, characters 8-26:
+warning: axiom is_sint32_lsl1_sup does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 503, characters 8-22:
+warning: axiom is_sint64_lnot does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 506, characters 8-22:
+warning: axiom is_sint64_lxor does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 509, characters 8-21:
+warning: axiom is_sint64_lor does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 512, characters 8-22:
+warning: axiom is_sint64_land does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 515, characters 8-21:
+warning: axiom is_sint64_lsr does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 518, characters 8-22:
+warning: axiom is_sint64_lsl1 does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 521, characters 8-26:
+warning: axiom is_sint64_lsl1_inf does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 524, characters 8-26:
+warning: axiom is_sint64_lsl1_sup does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 549, characters 8-20:
+warning: axiom lor_addition does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 552, characters 8-21:
+warning: axiom lxor_addition does not contain any local abstract symbol
+>>>>>>> master
diff --git a/src/plugins/wp/share/src/logs/Cbits.coq_BASE_6706.err b/src/plugins/wp/share/src/logs/Cbits.coq_BASE_6706.err
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/src/plugins/wp/share/src/logs/Cbits.coq_LOCAL_6706.err b/src/plugins/wp/share/src/logs/Cbits.coq_LOCAL_6706.err
new file mode 100644
index 0000000000000000000000000000000000000000..bbdad5a73c9d8255f18628f6eec72fe43b1a5a22
--- /dev/null
+++ b/src/plugins/wp/share/src/logs/Cbits.coq_LOCAL_6706.err
@@ -0,0 +1,197 @@
+[Config] reading extra configuration file realization.conf
+File "SHARE/./qed.why", line 79, characters 8-19:
+warning: axiom c_euclidian does not contain any local abstract symbol
+File "SHARE/./qed.why", line 94, characters 8-22:
+warning: axiom cmod_remainder does not contain any local abstract symbol
+File "SHARE/./qed.why", line 100, characters 8-20:
+warning: axiom cdiv_neutral does not contain any local abstract symbol
+File "SHARE/./qed.why", line 101, characters 8-16:
+warning: axiom cdiv_inv does not contain any local abstract symbol
+File "SHARE/./cmath.why", line 33, characters 8-15:
+warning: axiom abs_def does not contain any local abstract symbol
+File "SHARE/./cmath.why", line 37, characters 8-17:
+warning: axiom sqrt_lin1 does not contain any local abstract symbol
+File "SHARE/./cmath.why", line 38, characters 8-17:
+warning: axiom sqrt_lin0 does not contain any local abstract symbol
+File "SHARE/./cmath.why", line 39, characters 8-14:
+warning: axiom sqrt_0 does not contain any local abstract symbol
+File "SHARE/./cmath.why", line 40, characters 8-14:
+warning: axiom sqrt_1 does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 37, characters 8-20:
+warning: axiom bit_test_def does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 44, characters 8-27:
+warning: axiom bit_test_extraction does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 50, characters 8-15:
+warning: axiom lsl_1_0 does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 52, characters 8-31:
+warning: axiom bit_test_extraction_bis does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 54, characters 8-34:
+warning: axiom bit_test_extraction_bis_eq does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 59, characters 8-23:
+warning: axiom lnot_extraction does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 65, characters 8-23:
+warning: axiom land_extraction does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 71, characters 8-22:
+warning: axiom lor_extraction does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 77, characters 8-23:
+warning: axiom lxor_extraction does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 85, characters 8-20:
+warning: axiom land_1_lsl_1 does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 90, characters 8-26:
+warning: axiom lsl_extraction_sup does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 96, characters 8-26:
+warning: axiom lsl_extraction_inf does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 102, characters 8-23:
+warning: axiom lsr_extractionl does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 108, characters 8-23:
+warning: axiom lsl1_extraction does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 139, characters 8-31:
+warning: axiom to_uint8_extraction_sup does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 144, characters 8-31:
+warning: axiom to_uint8_extraction_inf does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 155, characters 8-32:
+warning: axiom to_uint16_extraction_sup does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 160, characters 8-32:
+warning: axiom to_uint16_extraction_inf does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 171, characters 8-32:
+warning: axiom to_uint32_extraction_sup does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 176, characters 8-32:
+warning: axiom to_uint32_extraction_inf does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 187, characters 8-32:
+warning: axiom to_uint64_extraction_sup does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 192, characters 8-32:
+warning: axiom to_uint64_extraction_inf does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 219, characters 8-31:
+warning: axiom to_sint8_extraction_sup does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 224, characters 8-31:
+warning: axiom to_sint8_extraction_inf does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 235, characters 8-32:
+warning: axiom to_sint16_extraction_sup does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 240, characters 8-32:
+warning: axiom to_sint16_extraction_inf does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 251, characters 8-32:
+warning: axiom to_sint32_extraction_sup does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 256, characters 8-32:
+warning: axiom to_sint32_extraction_inf does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 267, characters 8-32:
+warning: axiom to_sint64_extraction_sup does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 272, characters 8-32:
+warning: axiom to_sint64_extraction_inf does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 299, characters 8-21:
+warning: axiom to_uint32_lor does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 329, characters 8-21:
+warning: axiom is_uint8_lxor does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 332, characters 8-20:
+warning: axiom is_uint8_lor does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 335, characters 8-21:
+warning: axiom is_uint8_land does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 338, characters 8-20:
+warning: axiom is_uint8_lsr does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 341, characters 8-25:
+warning: axiom is_uint8_lsl1_inf does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 344, characters 8-25:
+warning: axiom is_uint8_lsl1_sup does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 348, characters 8-22:
+warning: axiom is_uint16_lxor does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 351, characters 8-21:
+warning: axiom is_uint16_lor does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 354, characters 8-22:
+warning: axiom is_uint16_land does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 357, characters 8-21:
+warning: axiom is_uint16_lsr does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 360, characters 8-26:
+warning: axiom is_uint16_lsl1_inf does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 363, characters 8-26:
+warning: axiom is_uint16_lsl1_sup does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 367, characters 8-22:
+warning: axiom is_uint32_lxor does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 370, characters 8-21:
+warning: axiom is_uint32_lor does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 373, characters 8-22:
+warning: axiom is_uint32_land does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 376, characters 8-21:
+warning: axiom is_uint32_lsr does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 379, characters 8-26:
+warning: axiom is_uint32_lsl1_inf does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 382, characters 8-26:
+warning: axiom is_uint32_lsl1_sup does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 386, characters 8-22:
+warning: axiom is_uint64_lxor does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 389, characters 8-21:
+warning: axiom is_uint64_lor does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 392, characters 8-22:
+warning: axiom is_uint64_land does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 395, characters 8-21:
+warning: axiom is_uint64_lsr does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 398, characters 8-26:
+warning: axiom is_uint64_lsl1_inf does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 401, characters 8-26:
+warning: axiom is_uint64_lsl1_sup does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 428, characters 8-21:
+warning: axiom is_sint8_lnot does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 431, characters 8-21:
+warning: axiom is_sint8_lxor does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 434, characters 8-20:
+warning: axiom is_sint8_lor does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 437, characters 8-21:
+warning: axiom is_sint8_land does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 440, characters 8-20:
+warning: axiom is_sint8_lsr does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 443, characters 8-21:
+warning: axiom is_sint8_lsl1 does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 446, characters 8-25:
+warning: axiom is_sint8_lsl1_inf does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 449, characters 8-25:
+warning: axiom is_sint8_lsl1_sup does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 453, characters 8-22:
+warning: axiom is_sint16_lnot does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 456, characters 8-22:
+warning: axiom is_sint16_lxor does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 459, characters 8-21:
+warning: axiom is_sint16_lor does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 462, characters 8-22:
+warning: axiom is_sint16_land does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 465, characters 8-21:
+warning: axiom is_sint16_lsr does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 468, characters 8-22:
+warning: axiom is_sint16_lsl1 does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 471, characters 8-26:
+warning: axiom is_sint16_lsl1_inf does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 474, characters 8-26:
+warning: axiom is_sint16_lsl1_sup does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 478, characters 8-22:
+warning: axiom is_sint32_lnot does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 481, characters 8-22:
+warning: axiom is_sint32_lxor does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 484, characters 8-21:
+warning: axiom is_sint32_lor does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 487, characters 8-22:
+warning: axiom is_sint32_land does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 490, characters 8-21:
+warning: axiom is_sint32_lsr does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 493, characters 8-22:
+warning: axiom is_sint32_lsl1 does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 496, characters 8-26:
+warning: axiom is_sint32_lsl1_inf does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 499, characters 8-26:
+warning: axiom is_sint32_lsl1_sup does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 503, characters 8-22:
+warning: axiom is_sint64_lnot does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 506, characters 8-22:
+warning: axiom is_sint64_lxor does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 509, characters 8-21:
+warning: axiom is_sint64_lor does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 512, characters 8-22:
+warning: axiom is_sint64_land does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 515, characters 8-21:
+warning: axiom is_sint64_lsr does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 518, characters 8-22:
+warning: axiom is_sint64_lsl1 does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 521, characters 8-26:
+warning: axiom is_sint64_lsl1_inf does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 524, characters 8-26:
+warning: axiom is_sint64_lsl1_sup does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 549, characters 8-20:
+warning: axiom lor_addition does not contain any local abstract symbol
+File "SHARE/./cbits.why", line 552, characters 8-21:
+warning: axiom lxor_addition does not contain any local abstract symbol
diff --git a/src/plugins/wp/share/src/logs/Cbits.coq_REMOTE_6706.err b/src/plugins/wp/share/src/logs/Cbits.coq_REMOTE_6706.err
new file mode 100644
index 0000000000000000000000000000000000000000..0ef883890f35911f4abdc5a61b0d9dbaa48b22cf
--- /dev/null
+++ b/src/plugins/wp/share/src/logs/Cbits.coq_REMOTE_6706.err
@@ -0,0 +1,199 @@
+[Config] reading extra configuration file realization.conf
+File "WP-SHARE/src/./qed.why", line 76, characters 8-19:
+warning: axiom c_euclidian does not contain any local abstract symbol
+File "WP-SHARE/src/./qed.why", line 91, characters 8-22:
+warning: axiom cmod_remainder does not contain any local abstract symbol
+File "WP-SHARE/src/./qed.why", line 97, characters 8-20:
+warning: axiom cdiv_neutral does not contain any local abstract symbol
+File "WP-SHARE/src/./qed.why", line 98, characters 8-16:
+warning: axiom cdiv_inv does not contain any local abstract symbol
+File "WP-SHARE/src/./cmath.why", line 32, characters 8-15:
+warning: axiom abs_def does not contain any local abstract symbol
+File "WP-SHARE/src/./cmath.why", line 43, characters 8-17:
+warning: axiom sqrt_lin1 does not contain any local abstract symbol
+File "WP-SHARE/src/./cmath.why", line 44, characters 8-17:
+warning: axiom sqrt_lin0 does not contain any local abstract symbol
+File "WP-SHARE/src/./cmath.why", line 45, characters 8-14:
+warning: axiom sqrt_0 does not contain any local abstract symbol
+File "WP-SHARE/src/./cmath.why", line 46, characters 8-14:
+warning: axiom sqrt_1 does not contain any local abstract symbol
+File "WP-SHARE/src/./cmath.why", line 55, characters 8-15:
+warning: axiom exp_pos does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 37, characters 8-20:
+warning: axiom bit_test_def does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 44, characters 8-27:
+warning: axiom bit_test_extraction does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 50, characters 8-15:
+warning: axiom lsl_1_0 does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 52, characters 8-31:
+warning: axiom bit_test_extraction_bis does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 54, characters 8-34:
+warning: axiom bit_test_extraction_bis_eq does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 59, characters 8-23:
+warning: axiom lnot_extraction does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 65, characters 8-23:
+warning: axiom land_extraction does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 71, characters 8-22:
+warning: axiom lor_extraction does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 77, characters 8-23:
+warning: axiom lxor_extraction does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 85, characters 8-20:
+warning: axiom land_1_lsl_1 does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 90, characters 8-26:
+warning: axiom lsl_extraction_sup does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 96, characters 8-26:
+warning: axiom lsl_extraction_inf does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 102, characters 8-23:
+warning: axiom lsr_extractionl does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 108, characters 8-23:
+warning: axiom lsl1_extraction does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 139, characters 8-31:
+warning: axiom to_uint8_extraction_sup does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 144, characters 8-31:
+warning: axiom to_uint8_extraction_inf does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 155, characters 8-32:
+warning: axiom to_uint16_extraction_sup does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 160, characters 8-32:
+warning: axiom to_uint16_extraction_inf does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 171, characters 8-32:
+warning: axiom to_uint32_extraction_sup does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 176, characters 8-32:
+warning: axiom to_uint32_extraction_inf does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 187, characters 8-32:
+warning: axiom to_uint64_extraction_sup does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 192, characters 8-32:
+warning: axiom to_uint64_extraction_inf does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 219, characters 8-31:
+warning: axiom to_sint8_extraction_sup does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 224, characters 8-31:
+warning: axiom to_sint8_extraction_inf does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 235, characters 8-32:
+warning: axiom to_sint16_extraction_sup does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 240, characters 8-32:
+warning: axiom to_sint16_extraction_inf does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 251, characters 8-32:
+warning: axiom to_sint32_extraction_sup does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 256, characters 8-32:
+warning: axiom to_sint32_extraction_inf does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 267, characters 8-32:
+warning: axiom to_sint64_extraction_sup does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 272, characters 8-32:
+warning: axiom to_sint64_extraction_inf does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 299, characters 8-21:
+warning: axiom to_uint32_lor does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 329, characters 8-21:
+warning: axiom is_uint8_lxor does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 332, characters 8-20:
+warning: axiom is_uint8_lor does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 335, characters 8-21:
+warning: axiom is_uint8_land does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 338, characters 8-20:
+warning: axiom is_uint8_lsr does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 341, characters 8-25:
+warning: axiom is_uint8_lsl1_inf does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 344, characters 8-25:
+warning: axiom is_uint8_lsl1_sup does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 348, characters 8-22:
+warning: axiom is_uint16_lxor does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 351, characters 8-21:
+warning: axiom is_uint16_lor does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 354, characters 8-22:
+warning: axiom is_uint16_land does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 357, characters 8-21:
+warning: axiom is_uint16_lsr does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 360, characters 8-26:
+warning: axiom is_uint16_lsl1_inf does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 363, characters 8-26:
+warning: axiom is_uint16_lsl1_sup does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 367, characters 8-22:
+warning: axiom is_uint32_lxor does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 370, characters 8-21:
+warning: axiom is_uint32_lor does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 373, characters 8-22:
+warning: axiom is_uint32_land does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 376, characters 8-21:
+warning: axiom is_uint32_lsr does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 379, characters 8-26:
+warning: axiom is_uint32_lsl1_inf does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 382, characters 8-26:
+warning: axiom is_uint32_lsl1_sup does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 386, characters 8-22:
+warning: axiom is_uint64_lxor does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 389, characters 8-21:
+warning: axiom is_uint64_lor does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 392, characters 8-22:
+warning: axiom is_uint64_land does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 395, characters 8-21:
+warning: axiom is_uint64_lsr does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 398, characters 8-26:
+warning: axiom is_uint64_lsl1_inf does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 401, characters 8-26:
+warning: axiom is_uint64_lsl1_sup does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 428, characters 8-21:
+warning: axiom is_sint8_lnot does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 431, characters 8-21:
+warning: axiom is_sint8_lxor does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 434, characters 8-20:
+warning: axiom is_sint8_lor does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 437, characters 8-21:
+warning: axiom is_sint8_land does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 440, characters 8-20:
+warning: axiom is_sint8_lsr does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 443, characters 8-21:
+warning: axiom is_sint8_lsl1 does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 446, characters 8-25:
+warning: axiom is_sint8_lsl1_inf does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 449, characters 8-25:
+warning: axiom is_sint8_lsl1_sup does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 453, characters 8-22:
+warning: axiom is_sint16_lnot does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 456, characters 8-22:
+warning: axiom is_sint16_lxor does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 459, characters 8-21:
+warning: axiom is_sint16_lor does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 462, characters 8-22:
+warning: axiom is_sint16_land does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 465, characters 8-21:
+warning: axiom is_sint16_lsr does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 468, characters 8-22:
+warning: axiom is_sint16_lsl1 does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 471, characters 8-26:
+warning: axiom is_sint16_lsl1_inf does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 474, characters 8-26:
+warning: axiom is_sint16_lsl1_sup does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 478, characters 8-22:
+warning: axiom is_sint32_lnot does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 481, characters 8-22:
+warning: axiom is_sint32_lxor does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 484, characters 8-21:
+warning: axiom is_sint32_lor does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 487, characters 8-22:
+warning: axiom is_sint32_land does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 490, characters 8-21:
+warning: axiom is_sint32_lsr does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 493, characters 8-22:
+warning: axiom is_sint32_lsl1 does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 496, characters 8-26:
+warning: axiom is_sint32_lsl1_inf does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 499, characters 8-26:
+warning: axiom is_sint32_lsl1_sup does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 503, characters 8-22:
+warning: axiom is_sint64_lnot does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 506, characters 8-22:
+warning: axiom is_sint64_lxor does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 509, characters 8-21:
+warning: axiom is_sint64_lor does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 512, characters 8-22:
+warning: axiom is_sint64_land does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 515, characters 8-21:
+warning: axiom is_sint64_lsr does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 518, characters 8-22:
+warning: axiom is_sint64_lsl1 does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 521, characters 8-26:
+warning: axiom is_sint64_lsl1_inf does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 524, characters 8-26:
+warning: axiom is_sint64_lsl1_sup does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 549, characters 8-20:
+warning: axiom lor_addition does not contain any local abstract symbol
+File "WP-SHARE/src/./cbits.why", line 552, characters 8-21:
+warning: axiom lxor_addition does not contain any local abstract symbol
diff --git a/src/plugins/wp/share/why3/Cfloat.v b/src/plugins/wp/share/why3/Cfloat.v
index 32ac89fe1bf3daaed70a51033e4d5ba6220b9d10..f25c72b7027de53cfb3377ab0f3d139ac51f6538 100644
--- a/src/plugins/wp/share/why3/Cfloat.v
+++ b/src/plugins/wp/share/why3/Cfloat.v
@@ -27,9 +27,11 @@ Require Reals.Rbasic_fun.
 Require Reals.R_sqrt.
 Require BuiltIn.
 Require bool.Bool.
+Require int.Int.
 Require real.Real.
 Require real.RealInfix.
 Require real.Abs.
+Require real.FromInt.
 Require real.Square.
 
 (* Why3 goal *)
@@ -56,6 +58,22 @@ Admitted.
 Definition of_f64: f64 -> R.
 Admitted.
 
+(* Why3 goal *)
+Lemma to_f32_zero : ((of_f32 (to_f32 0%R)) = 0%R).
+Admitted.
+
+(* Why3 goal *)
+Lemma to_f32_one : ((of_f32 (to_f32 1%R)) = 1%R).
+Admitted.
+
+(* Why3 goal *)
+Lemma to_f64_zero : ((of_f64 (to_f64 0%R)) = 0%R).
+Admitted.
+
+(* Why3 goal *)
+Lemma to_f64_one : ((of_f64 (to_f64 1%R)) = 1%R).
+Admitted.
+
 (* Why3 assumption *)
 Inductive rounding_mode :=
   | Up : rounding_mode
@@ -118,7 +136,7 @@ Definition is_infinite_f32 (f:f32): Prop := ((classify_f32 f) = Inf_pos) \/
   ((classify_f32 f) = Inf_neg).
 
 (* Why3 assumption *)
-Definition is_infinite_f36 (d:f64): Prop := ((classify_f64 d) = Inf_pos) \/
+Definition is_infinite_f64 (d:f64): Prop := ((classify_f64 d) = Inf_pos) \/
   ((classify_f64 d) = Inf_neg).
 
 (* Why3 assumption *)
diff --git a/src/plugins/wp/share/why3/Cfloat.why b/src/plugins/wp/share/why3/Cfloat.why
index 531862713d2a2f20d0c462425b50a876846e2c15..f6493d5b5818307c2d411d8b064a0469d17e4a2f 100644
--- a/src/plugins/wp/share/why3/Cfloat.why
+++ b/src/plugins/wp/share/why3/Cfloat.why
@@ -22,8 +22,10 @@
 
 theory Cfloat
 use bool.Bool as Bool
+use int.Int as Int
 use real.Real as Real
 use real.Abs as Abs
+use real.FromInt as FromInt
 use real.Square as Square
 
 type f32
@@ -38,6 +40,14 @@ function to_f64 real : f64
 
 function of_f64 f64 : real
 
+axiom to_f32_zero : ((of_f32 (to_f32 0.0)) = (0.0))
+
+axiom to_f32_one : ((of_f32 (to_f32 1.0)) = (1.0))
+
+axiom to_f64_zero : ((of_f64 (to_f64 0.0)) = (0.0))
+
+axiom to_f64_one : ((of_f64 (to_f64 1.0)) = (1.0))
+
 type rounding_mode =
   | Up
   | Down
@@ -76,7 +86,7 @@ predicate is_NaN_f64 (d:f64) = ((classify_f64 d) = (NaN))
 predicate is_infinite_f32 (f:f32) = ("asym_split" ((classify_f32
   f) = (Inf_pos))) || ((classify_f32 f) = (Inf_neg))
 
-predicate is_infinite_f36 (d:f64) = ("asym_split" ((classify_f64
+predicate is_infinite_f64 (d:f64) = ("asym_split" ((classify_f64
   d) = (Inf_pos))) || ((classify_f64 d) = (Inf_neg))
 
 predicate is_positive_infinite_f32 (f:f32) = ((classify_f32 f) = (Inf_pos))
diff --git a/src/plugins/wp/tests/wp/oracle/sharing.res.oracle b/src/plugins/wp/tests/wp/oracle/sharing.res.oracle
index a0d983a2b87ba821477e9d9c565efca9970df679..33ccf33c4b4de07a852143364aa4b4bf0277534d 100644
--- a/src/plugins/wp/tests/wp/oracle/sharing.res.oracle
+++ b/src/plugins/wp/tests/wp/oracle/sharing.res.oracle
@@ -5,12 +5,12 @@
 [wp] Warning: Missing RTE guards
 [wp] 1 goal scheduled
 [wp:print-generated] 
-  "WPOUT/typed/f_post.ergo"
+  "WPOUT/typed/f_ensures.ergo"
   (* ---------------------------------------------------------- *)
   (* --- Post-condition (file tests/wp/sharing.c, line 8) in 'f' --- *)
   (* ---------------------------------------------------------- *)
   
-  goal f_post:
+  goal f_ensures:
     forall i_1,i : int.
     forall t : int farray.
     forall t_1 : (addr,int) farray.
diff --git a/src/plugins/wp/tests/wp/oracle/wp_eqb.res.oracle b/src/plugins/wp/tests/wp/oracle/wp_eqb.res.oracle
index 191de1ee13455a16f3cf455b3277454fb8a28ebb..f9360746b680f16c9895df394646273b82570572 100644
--- a/src/plugins/wp/tests/wp/oracle/wp_eqb.res.oracle
+++ b/src/plugins/wp/tests/wp/oracle/wp_eqb.res.oracle
@@ -5,12 +5,12 @@
 [wp] Warning: Missing RTE guards
 [wp] 1 goal scheduled
 [wp:print-generated] 
-  "WPOUT/typed/f_post.ergo"
+  "WPOUT/typed/f_ensures.ergo"
   (* ---------------------------------------------------------- *)
   (* --- Post-condition (file tests/wp/wp_eqb.i, line 8) in 'f' --- *)
   (* ---------------------------------------------------------- *)
   
-  goal f_post:
+  goal f_ensures:
     forall i_3,i_2,i_1,i : int.
     ((match_bool((eqb(i_3, i_2)), 1, 0)) = (match_bool((eqb(i_1, i)), 1, 0))) ->
     is_sint32(i) ->
diff --git a/src/plugins/wp/tests/wp/oracle_qualif/sharing.res.oracle b/src/plugins/wp/tests/wp/oracle_qualif/sharing.res.oracle
index 7988ff2ccb6da01de8db30aeb0fb8a1186753fa5..981c1640a089eb28da93becc26b57a8c94ce8f96 100644
--- a/src/plugins/wp/tests/wp/oracle_qualif/sharing.res.oracle
+++ b/src/plugins/wp/tests/wp/oracle_qualif/sharing.res.oracle
@@ -4,12 +4,12 @@
 [wp] Loading driver 'share/wp.driver'
 [wp] Warning: Missing RTE guards
 [wp] 1 goal scheduled
-[wp] [Alt-Ergo] Goal typed_f_post : Valid
+[wp] [Alt-Ergo] Goal typed_f_ensures : Valid
 [wp] Proved goals:    1 / 1
   Qed:             0 
   Alt-Ergo:        1
 [wp] Report 'tests/wp/sharing.c.0.report.json'
 -------------------------------------------------------------
 Functions           WP     Alt-Ergo        Total   Success
-f                   -       1 (44..56)       1       100%
+f                   -       1 (48..60)       1       100%
 -------------------------------------------------------------
diff --git a/src/plugins/wp/tests/wp/oracle_qualif/stmtcompiler_test.res.oracle b/src/plugins/wp/tests/wp/oracle_qualif/stmtcompiler_test.res.oracle
index 8f1cd7083055e2712a599239a2bb5cbba4665706..d2ce6cd6a429ef0dfa80b108ed4773ad1fc56dff 100644
--- a/src/plugins/wp/tests/wp/oracle_qualif/stmtcompiler_test.res.oracle
+++ b/src/plugins/wp/tests/wp/oracle_qualif/stmtcompiler_test.res.oracle
@@ -30,9 +30,9 @@
 [wp] [Qed] Goal typed_one_if_assert : Valid
 [wp] [Qed] Goal typed_some_seq_assert : Valid
 [wp] [Qed] Goal typed_some_seq_assert_2 : Valid
-[wp] [Qed] Goal typed_zloop_post : Valid
-[wp] [Alt-Ergo] Goal typed_zloop_loop_inv_preserved : Unknown
-[wp] [Qed] Goal typed_zloop_loop_inv_established : Valid
+[wp] [Qed] Goal typed_zloop_ensures : Valid
+[wp] [Alt-Ergo] Goal typed_zloop_loop_invariant_preserved : Unknown
+[wp] [Qed] Goal typed_zloop_loop_invariant_established : Valid
 [wp] [Qed] Goal typed_zloop_assert : Valid
 [wp] [Qed] Goal typed_zloop_assert_2 : Valid
 [wp] [Alt-Ergo] Goal typed_zloop_assert_3 : Unknown
@@ -56,6 +56,6 @@ behavior2            1     -                 1       100%
 behavior3            1     -                 1       100%
 behavior4            1     -                 1       100%
 behavior5           -      -                 1       0.0%
-if_assert            1      1 (1..12)        4      50.0%
+if_assert            1      1 (4..16)        4      50.0%
 compare              1     -                 1       100%
 -------------------------------------------------------------
diff --git a/src/plugins/wp/tests/wp/oracle_qualif/wp_behav.0.res.oracle b/src/plugins/wp/tests/wp/oracle_qualif/wp_behav.0.res.oracle
index 624ee703375823c18012b2a40e57dd5e369e5ff1..1b6f43fb505c53f5a984707b26ff1a6153372581 100644
--- a/src/plugins/wp/tests/wp/oracle_qualif/wp_behav.0.res.oracle
+++ b/src/plugins/wp/tests/wp/oracle_qualif/wp_behav.0.res.oracle
@@ -17,41 +17,41 @@
 [wp] [Alt-Ergo] Goal typed_assert_needed_assert_ko : Unknown
 [wp] [Qed] Goal typed_assert_needed_assert_qed_ok_ok_with_hyp : Valid
 [wp] [Alt-Ergo] Goal typed_bhv_complete_pos_neg : Valid
-[wp] [Qed] Goal typed_bhv_neg_post_qed_ok : Valid
-[wp] [Qed] Goal typed_bhv_pos_post_qed_ok : Valid
-[wp] [Alt-Ergo] Goal typed_bts0513_post_ko1 : Unknown
-[wp] [Alt-Ergo] Goal typed_bts0513_post_ko2 : Unknown
-[wp] [Qed] Goal typed_f_post_qed_ok : Valid
-[wp] [Qed] Goal typed_f_x1_post_qed_ok : Valid
-[wp] [Qed] Goal typed_f_assert_qed_ok_for_x1 : Valid
-[wp] [Qed] Goal typed_f_x2_post_qed_ok : Valid
-[wp] [Qed] Goal typed_f_assert_qed_ok_for_x2 : Valid
-[wp] [Qed] Goal typed_local_named_behavior_stmt_xpos_post_qed_ok : Valid
-[wp] [Qed] Goal typed_local_named_behavior_stmt_xpos_post_qed_ok_2 : Valid
+[wp] [Qed] Goal typed_bhv_neg_ensures_qed_ok : Valid
+[wp] [Qed] Goal typed_bhv_pos_ensures_qed_ok : Valid
+[wp] [Alt-Ergo] Goal typed_bts0513_ensures_ko1 : Unknown
+[wp] [Alt-Ergo] Goal typed_bts0513_ensures_ko2 : Unknown
+[wp] [Qed] Goal typed_f_ensures_qed_ok : Valid
+[wp] [Qed] Goal typed_f_x1_ensures_qed_ok : Valid
+[wp] [Qed] Goal typed_f_assert_qed_ok : Valid
+[wp] [Qed] Goal typed_f_x2_ensures_qed_ok : Valid
+[wp] [Qed] Goal typed_f_assert_qed_ok_2 : Valid
+[wp] [Qed] Goal typed_local_named_behavior_xpos_ensures_qed_ok : Valid
+[wp] [Qed] Goal typed_local_named_behavior_xpos_ensures_qed_ok_2 : Valid
 [wp] [Qed] Goal typed_min_complete_bx_by : Valid
 [wp] [Qed] Goal typed_min_disjoint_bx_by : Valid
-[wp] [Qed] Goal typed_min_bx_post_qed_ok : Valid
-[wp] [Qed] Goal typed_min_by_post_qed_ok : Valid
-[wp] [Qed] Goal typed_more_stmt_assigns_post_qed_ok_ok_with_hoare : Valid
-[wp] [Qed] Goal typed_more_stmt_assigns_stmt_blk_assign_part1 : Valid
-[wp] [Qed] Goal typed_more_stmt_assigns_stmt_blk_assign_part2 : Valid
-[wp] [Qed] Goal typed_part_stmt_bhv_b1_post_qed_ok : Valid
-[wp] [Alt-Ergo] Goal typed_part_stmt_bhv_stmt_bs_post : Unknown
-[wp] [Alt-Ergo] Goal typed_razT_loop_inv_qed_ok_preserved : Valid
-[wp] [Qed] Goal typed_razT_loop_inv_qed_ok_established : Valid
-[wp] [Alt-Ergo] Goal typed_razT_b1_post_e1 : Unknown
-[wp] [Qed] Goal typed_stmt_assigns_post : Valid
-[wp] [Alt-Ergo] Goal typed_stmt_assigns_stmt_assign : Unknown
-[wp] [Qed] Goal typed_stmt_contract_stmt_pre_qed_ok : Valid
-[wp] [Qed] Goal typed_stmt_contract_stmt_post_qed_ok : Valid
-[wp] [Qed] Goal typed_stmt_contract_ok_post_qed_ok : Valid
-[wp] [Qed] Goal typed_stmt_contract_assigns_stmt_pre_qed_ok : Valid
-[wp] [Qed] Goal typed_stmt_contract_assigns_stmt_post_qed_ok : Valid
-[wp] [Qed] Goal typed_stmt_contract_assigns_stmt_assign : Valid
-[wp] [Qed] Goal typed_stmt_contract_assigns_ok_post_qed_ok : Valid
-[wp] [Qed] Goal typed_stmt_contract_assigns_ok_asgn_post_qed_ok : Valid
-[wp] [Qed] Goal typed_stmt_contract_label_post_qed_ok : Valid
-[wp] [Qed] Goal typed_stmt_contract_label_stmt_post_qed_ok : Valid
+[wp] [Qed] Goal typed_min_bx_ensures_qed_ok : Valid
+[wp] [Qed] Goal typed_min_by_ensures_qed_ok : Valid
+[wp] [Qed] Goal typed_more_stmt_assigns_ensures_qed_ok_ok_with_hoare : Valid
+[wp] [Qed] Goal typed_more_stmt_assigns_blk_assigns_part1 : Valid
+[wp] [Qed] Goal typed_more_stmt_assigns_blk_assigns_part2 : Valid
+[wp] [Qed] Goal typed_part_stmt_bhv_b1_ensures_qed_ok : Valid
+[wp] [Alt-Ergo] Goal typed_part_stmt_bhv_bs_ensures : Unknown
+[wp] [Alt-Ergo] Goal typed_razT_loop_invariant_qed_ok_preserved : Valid
+[wp] [Qed] Goal typed_razT_loop_invariant_qed_ok_established : Valid
+[wp] [Alt-Ergo] Goal typed_razT_b1_ensures_e1 : Unknown
+[wp] [Qed] Goal typed_stmt_assigns_ensures : Valid
+[wp] [Alt-Ergo] Goal typed_stmt_assigns_assigns : Unknown
+[wp] [Qed] Goal typed_stmt_contract_requires_qed_ok : Valid
+[wp] [Qed] Goal typed_stmt_contract_ensures_qed_ok : Valid
+[wp] [Qed] Goal typed_stmt_contract_ok_ensures_qed_ok : Valid
+[wp] [Qed] Goal typed_stmt_contract_assigns_requires_qed_ok : Valid
+[wp] [Qed] Goal typed_stmt_contract_assigns_ensures_qed_ok : Valid
+[wp] [Qed] Goal typed_stmt_contract_assigns_assigns : Valid
+[wp] [Qed] Goal typed_stmt_contract_assigns_ok_ensures_qed_ok : Valid
+[wp] [Qed] Goal typed_stmt_contract_assigns_ok_asgn_ensures_qed_ok : Valid
+[wp] [Qed] Goal typed_stmt_contract_label_ensures_qed_ok_2 : Valid
+[wp] [Qed] Goal typed_stmt_contract_label_ensures_qed_ok : Valid
 [wp] Proved goals:   32 / 38
   Qed:            30 
   Alt-Ergo:        2  (unknown: 6)
@@ -60,7 +60,7 @@
 Functions           WP     Alt-Ergo        Total   Success
 f                    5     -                 5       100%
 min                  4     -                 4       100%
-bhv                  2      1 (1..12)        3       100%
+bhv                  2      1 (8..20)        3       100%
 stmt_contract        3     -                 3       100%
 stmt_contract_label   2    -                 2       100%
 stmt_contract_assigns   5   -                5       100%
@@ -68,7 +68,7 @@ local_named_behavior   2   -                 2       100%
 assert_needed        1     -                 2      50.0%
 bts0513             -      -                 2       0.0%
 stmt_assigns         1     -                 2      50.0%
-razT                 1      1 (8..20)        3      66.7%
+razT                 1      1 (12..24)       3      66.7%
 more_stmt_assigns    3     -                 3       100%
 part_stmt_bhv        1     -                 2      50.0%
 -------------------------------------------------------------
diff --git a/src/plugins/wp/tests/wp/oracle_qualif/wp_behav.1.res.oracle b/src/plugins/wp/tests/wp/oracle_qualif/wp_behav.1.res.oracle
index 83792030946b5942b66307d7f9c27588b8cd62b2..745a17600fa3965aa0a10b658d65edde47f6910e 100644
--- a/src/plugins/wp/tests/wp/oracle_qualif/wp_behav.1.res.oracle
+++ b/src/plugins/wp/tests/wp/oracle_qualif/wp_behav.1.res.oracle
@@ -8,14 +8,14 @@
 [wp] tests/wp/wp_behav.c:69: Warning: 
   Missing assigns clause (assigns 'everything' instead)
 [wp] 8 goals scheduled
-[wp] [Alt-Ergo] Goal typed_f_post_qed_ko : Unknown
-[wp] [Alt-Ergo] Goal typed_f_x1_post_qed_ko : Unknown
-[wp] [Alt-Ergo] Goal typed_f_x2_post_qed_ko : Unknown
-[wp] [Alt-Ergo] Goal typed_min_bx_post_qed_ko : Unknown
-[wp] [Alt-Ergo] Goal typed_min_by_post_qed_ko : Unknown
-[wp] [Alt-Ergo] Goal typed_stmt_contract_ko_post_qed_ko : Unknown
-[wp] [Alt-Ergo] Goal typed_stmt_contract_ko_without_asgn_post_qed_ko : Unknown
-[wp] [Alt-Ergo] Goal typed_stmt_contract_assigns_ko_post_qed_ko : Unknown
+[wp] [Alt-Ergo] Goal typed_f_ensures_qed_ko : Unknown
+[wp] [Alt-Ergo] Goal typed_f_x1_ensures_qed_ko : Unknown
+[wp] [Alt-Ergo] Goal typed_f_x2_ensures_qed_ko : Unknown
+[wp] [Alt-Ergo] Goal typed_min_bx_ensures_qed_ko : Unknown
+[wp] [Alt-Ergo] Goal typed_min_by_ensures_qed_ko : Unknown
+[wp] [Alt-Ergo] Goal typed_stmt_contract_ko_ensures_qed_ko : Unknown
+[wp] [Alt-Ergo] Goal typed_stmt_contract_ko_without_asgn_ensures_qed_ko : Unknown
+[wp] [Alt-Ergo] Goal typed_stmt_contract_assigns_ko_ensures_qed_ko : Unknown
 [wp] Proved goals:    0 / 8
   Alt-Ergo:        0  (unknown: 8)
 [wp] Report 'tests/wp/wp_behav.c.1.report.json'
diff --git a/src/plugins/wp/tests/wp/oracle_qualif/wp_call_pre.res.oracle b/src/plugins/wp/tests/wp/oracle_qualif/wp_call_pre.res.oracle
index bec840af1d64d50e33124d68757fedde515e086e..a61b5e65e10962836fd6e80269d7b38b84b0126a 100644
--- a/src/plugins/wp/tests/wp/oracle_qualif/wp_call_pre.res.oracle
+++ b/src/plugins/wp/tests/wp/oracle_qualif/wp_call_pre.res.oracle
@@ -8,16 +8,16 @@
   No code nor implicit assigns clause for function f, generating default assigns from the prototype
 [wp] Warning: Missing RTE guards
 [wp] 10 goals scheduled
-[wp] [Qed] Goal typed_call_g_call_g_pre_qed_ok_Rga : Valid
-[wp] [Qed] Goal typed_call_g_call_g_pre_Rgb : Valid
-[wp] [Qed] Goal typed_call_main_post_qed_ok : Valid
-[wp] [Qed] Goal typed_call_main_call_main_pre_qed_ok_Rmain : Valid
-[wp] [Qed] Goal typed_double_call_call_f_pre_qed_ok_Rf : Valid
-[wp] [Alt-Ergo] Goal typed_double_call_call_f_pre_qed_ok_Rf_2 : Valid
-[wp] [Qed] Goal typed_main_pre_qed_ok_Rmain : Valid
-[wp] [Qed] Goal typed_main_post_qed_ok_Emain : Valid
-[wp] [Qed] Goal typed_main_call_f_pre_qed_ok_Rf : Valid
-[wp] [Qed] Goal typed_stmt_pre_stmt_pre_qed_ok_Rstmt : Valid
+[wp] [Qed] Goal typed_call_g_call_g_requires_qed_ok_Rga : Valid
+[wp] [Qed] Goal typed_call_g_call_g_requires_Rgb : Valid
+[wp] [Qed] Goal typed_call_main_ensures_qed_ok : Valid
+[wp] [Qed] Goal typed_call_main_call_main_requires_qed_ok_Rmain : Valid
+[wp] [Qed] Goal typed_double_call_call_f_requires_qed_ok_Rf : Valid
+[wp] [Alt-Ergo] Goal typed_double_call_call_f_requires_qed_ok_Rf : Valid
+[wp] [Qed] Goal typed_main_requires_qed_ok_Rmain : Valid
+[wp] [Qed] Goal typed_main_ensures_qed_ok_Emain : Valid
+[wp] [Qed] Goal typed_main_call_f_requires_qed_ok_Rf : Valid
+[wp] [Qed] Goal typed_stmt_pre_requires_qed_ok_Rstmt : Valid
 [wp] Proved goals:   10 / 10
   Qed:             9 
   Alt-Ergo:        1
diff --git a/src/plugins/wp/tests/wp/oracle_qualif/wp_eqb.res.oracle b/src/plugins/wp/tests/wp/oracle_qualif/wp_eqb.res.oracle
index a08574adb8811eed37ff05686640fcc24d3205f1..e838815abc14a013119915deda971041887722ba 100644
--- a/src/plugins/wp/tests/wp/oracle_qualif/wp_eqb.res.oracle
+++ b/src/plugins/wp/tests/wp/oracle_qualif/wp_eqb.res.oracle
@@ -4,7 +4,7 @@
 [wp] Loading driver 'share/wp.driver'
 [wp] Warning: Missing RTE guards
 [wp] 1 goal scheduled
-[wp] [Alt-Ergo] Goal typed_f_post : Valid
+[wp] [Alt-Ergo] Goal typed_f_ensures : Valid
 [wp] Proved goals:    1 / 1
   Qed:             0 
   Alt-Ergo:        1
diff --git a/src/plugins/wp/tests/wp/oracle_qualif/wp_strategy.res.oracle b/src/plugins/wp/tests/wp/oracle_qualif/wp_strategy.res.oracle
index 2e5b53af9fcf2c34f57e8dd073f418cd261527b2..8dfdb335c2b8ed73c162e80ac9d560a08bbabc39 100644
--- a/src/plugins/wp/tests/wp/oracle_qualif/wp_strategy.res.oracle
+++ b/src/plugins/wp/tests/wp/oracle_qualif/wp_strategy.res.oracle
@@ -11,31 +11,31 @@
 [wp] Running WP plugin...
 [wp] Loading driver 'share/wp.driver'
 [wp] 25 goals scheduled
-[wp] [Alt-Ergo] Goal hoare_bts0513_post_qed_ko_ko1 : Unknown
-[wp] [Alt-Ergo] Goal hoare_bts0513_post_qed_ko_ko2 : Unknown
+[wp] [Alt-Ergo] Goal hoare_bts0513_ensures_qed_ko_ko1 : Unknown
+[wp] [Alt-Ergo] Goal hoare_bts0513_ensures_qed_ko_ko2 : Unknown
 [wp] [Alt-Ergo] Goal hoare_bts0513_bis_assert_qed_ko_ko1 : Unknown
 [wp] [Qed] Goal hoare_bts0513_bis_assert_qed_ok_ok : Valid
-[wp] [Qed] Goal hoare_default_behaviors_post_qed_ok : Valid
+[wp] [Qed] Goal hoare_default_behaviors_ensures_qed_ok : Valid
 [wp] [Qed] Goal hoare_default_behaviors_assert_qed_ok_2 : Valid
-[wp] [Qed] Goal hoare_default_behaviors_stmt_post_qed_ok_stmt_p : Valid
+[wp] [Qed] Goal hoare_default_behaviors_ensures_qed_ok_stmt_p : Valid
 [wp] [Qed] Goal hoare_default_behaviors_assert_qed_ok : Valid
 [wp] [Alt-Ergo] Goal hoare_default_behaviors_assert_rte_signed_overflow : Unknown
-[wp] [Qed] Goal hoare_default_behaviors_stmt_assign : Valid
+[wp] [Qed] Goal hoare_default_behaviors_assigns : Valid
 [wp] [Qed] Goal hoare_dpd1_assert_qed_ok_A : Valid
-[wp] [Alt-Ergo] Goal hoare_dpd1_stmt_post_qed_ko_Eko : Unknown
-[wp] [Qed] Goal hoare_dpd1_stmt_assign : Valid
-[wp] [Qed] Goal hoare_dpd2_assert_qed_ok_A_for_P : Valid
-[wp] [Alt-Ergo] Goal hoare_dpd2_stmt_post_qed_ko_Eko : Unknown
-[wp] [Qed] Goal hoare_dpd2_stmt_assign : Valid
-[wp] [Qed] Goal hoare_spec_if_post_qed_ok : Valid
-[wp] [Qed] Goal hoare_spec_if_stmt_post_qed_ok : Valid
-[wp] [Qed] Goal hoare_spec_if_stmt_assign : Valid
+[wp] [Alt-Ergo] Goal hoare_dpd1_ensures_qed_ko_Eko : Unknown
+[wp] [Qed] Goal hoare_dpd1_assigns : Valid
+[wp] [Qed] Goal hoare_dpd2_assert_qed_ok_A : Valid
+[wp] [Alt-Ergo] Goal hoare_dpd2_ensures_qed_ko_Eko : Unknown
+[wp] [Qed] Goal hoare_dpd2_assigns : Valid
+[wp] [Qed] Goal hoare_spec_if_ensures_qed_ok_2 : Valid
+[wp] [Qed] Goal hoare_spec_if_ensures_qed_ok : Valid
+[wp] [Qed] Goal hoare_spec_if_assigns : Valid
 [wp] [Alt-Ergo] Goal hoare_spec_if_assert_rte_signed_overflow : Unknown
-[wp] [Qed] Goal hoare_spec_if_stmt_assign_2 : Valid
+[wp] [Qed] Goal hoare_spec_if_assigns_2 : Valid
 [wp] [Alt-Ergo] Goal hoare_spec_if_assert_rte_signed_overflow_2 : Unknown
-[wp] [Qed] Goal hoare_spec_if_stmt_assign_3 : Valid
-[wp] [Qed] Goal hoare_spec_if_cond_stmt_post_qed_ok : Valid
-[wp] [Qed] Goal hoare_spec_if_not_cond_stmt_post_qed_ok : Valid
+[wp] [Qed] Goal hoare_spec_if_assigns_3 : Valid
+[wp] [Qed] Goal hoare_spec_if_cond_ensures_qed_ok : Valid
+[wp] [Qed] Goal hoare_spec_if_not_cond_ensures_qed_ok : Valid
 [wp] Proved goals:   17 / 25
   Qed:            17 
   Alt-Ergo:        0  (unknown: 8)
diff --git a/src/plugins/wp/tests/wp/sharing.c.0.report.json b/src/plugins/wp/tests/wp/sharing.c.0.report.json
index 4a51520be5395c49e07f447760b60b7c76508885..17a701f571cf6dbe5cfed605ec9b9613c7b168d2 100644
--- a/src/plugins/wp/tests/wp/sharing.c.0.report.json
+++ b/src/plugins/wp/tests/wp/sharing.c.0.report.json
@@ -1,12 +1,14 @@
-{ "wp:global": { "alt-ergo": { "total": 1, "valid": 1, "rank": 12 },
-                 "wp:main": { "total": 1, "valid": 1, "rank": 12 } },
-  "wp:functions": { "f": { "f_post": { "alt-ergo": { "total": 1, "valid": 1,
-                                                     "rank": 12 },
-                                       "wp:main": { "total": 1, "valid": 1,
-                                                    "rank": 12 } },
+{ "wp:global": { "alt-ergo": { "total": 1, "valid": 1, "rank": 13 },
+                 "wp:main": { "total": 1, "valid": 1, "rank": 13 } },
+  "wp:functions": { "f": { "f_ensures": { "alt-ergo": { "total": 1,
+                                                        "valid": 1,
+                                                        "rank": 13 },
+                                          "wp:main": { "total": 1,
+                                                       "valid": 1,
+                                                       "rank": 13 } },
                            "wp:section": { "alt-ergo": { "total": 1,
                                                          "valid": 1,
-                                                         "rank": 12 },
+                                                         "rank": 13 },
                                            "wp:main": { "total": 1,
                                                         "valid": 1,
-                                                        "rank": 12 } } } } }
+                                                        "rank": 13 } } } } }
diff --git a/src/plugins/wp/tests/wp/stmtcompiler_test.i.0.report.json b/src/plugins/wp/tests/wp/stmtcompiler_test.i.0.report.json
index 542d6fa1e57e7a7467757a22b7c5932a113c3365..23c6014c8c98bb6ceee65521782a49f50bd479a8 100644
--- a/src/plugins/wp/tests/wp/stmtcompiler_test.i.0.report.json
+++ b/src/plugins/wp/tests/wp/stmtcompiler_test.i.0.report.json
@@ -1,8 +1,8 @@
 { "wp:global": { "alt-ergo": { "total": 9, "valid": 1, "unknown": 8,
-                               "rank": 1 },
+                               "rank": 2 },
                  "qed": { "total": 18, "valid": 18 },
                  "wp:main": { "total": 27, "valid": 19, "unknown": 8,
-                              "rank": 1 } },
+                              "rank": 2 } },
   "wp:functions": { "empty": { "empty_assert": { "qed": { "total": 1,
                                                           "valid": 1 },
                                                  "wp:main": { "total": 1,
@@ -108,17 +108,18 @@
                                                           "valid": 1 },
                                                  "wp:main": { "total": 1,
                                                               "valid": 1 } },
-                               "zloop_loop_inv": { "alt-ergo": { "total": 1,
-                                                                 "unknown": 1 },
-                                                   "qed": { "total": 1,
-                                                            "valid": 1 },
-                                                   "wp:main": { "total": 2,
-                                                                "valid": 1,
-                                                                "unknown": 1 } },
-                               "zloop_post": { "qed": { "total": 1,
-                                                        "valid": 1 },
-                                               "wp:main": { "total": 1,
-                                                            "valid": 1 } },
+                               "zloop_loop_invariant": { "alt-ergo": 
+                                                           { "total": 1,
+                                                             "unknown": 1 },
+                                                         "qed": { "total": 1,
+                                                                  "valid": 1 },
+                                                         "wp:main": { "total": 2,
+                                                                    "valid": 1,
+                                                                    "unknown": 1 } },
+                               "zloop_ensures": { "qed": { "total": 1,
+                                                           "valid": 1 },
+                                                  "wp:main": { "total": 1,
+                                                               "valid": 1 } },
                                "wp:section": { "alt-ergo": { "total": 3,
                                                              "unknown": 3 },
                                                "qed": { "total": 4,
@@ -179,20 +180,20 @@
                                    "if_assert_assert": { "alt-ergo": 
                                                            { "total": 1,
                                                              "valid": 1,
-                                                             "rank": 1 },
+                                                             "rank": 2 },
                                                          "wp:main": { "total": 1,
                                                                     "valid": 1,
-                                                                    "rank": 1 } },
+                                                                    "rank": 2 } },
                                    "wp:section": { "alt-ergo": { "total": 3,
                                                                  "valid": 1,
                                                                  "unknown": 2,
-                                                                 "rank": 1 },
+                                                                 "rank": 2 },
                                                    "qed": { "total": 1,
                                                             "valid": 1 },
                                                    "wp:main": { "total": 4,
                                                                 "valid": 2,
                                                                 "unknown": 2,
-                                                                "rank": 1 } } },
+                                                                "rank": 2 } } },
                     "compare": { "compare_assert": { "qed": { "total": 1,
                                                               "valid": 1 },
                                                      "wp:main": { "total": 1,
diff --git a/src/plugins/wp/tests/wp/stmtcompiler_test.ml b/src/plugins/wp/tests/wp/stmtcompiler_test.ml
index 416f4e48137c375177750486711f2ae6ee39506e..320ad154cdac77a26b1768685510442f460ebc05 100644
--- a/src/plugins/wp/tests/wp/stmtcompiler_test.ml
+++ b/src/plugins/wp/tests/wp/stmtcompiler_test.ml
@@ -53,7 +53,7 @@ let run () =
         effect = None;
       } in
     let po = Wpo.{
-        po_gid = ""; po_sid = ""; po_name = "";
+        po_gid = ""; po_sid = ""; po_name = ""; po_leg = "";
         po_idx = Function(kf, None); po_model = model;
         po_pid = prop_id;
         po_formula = Wpo.GoalAnnot vc_annot;
diff --git a/src/plugins/wp/tests/wp/wp_behav.c.0.report.json b/src/plugins/wp/tests/wp/wp_behav.c.0.report.json
index 2ad0a05fcc3dc7c7eaba88253214719169bc3013..ca3a13935420937acbc8b0085343a38838deb755 100644
--- a/src/plugins/wp/tests/wp/wp_behav.c.0.report.json
+++ b/src/plugins/wp/tests/wp/wp_behav.c.0.report.json
@@ -1,28 +1,28 @@
 { "wp:global": { "alt-ergo": { "total": 8, "valid": 2, "unknown": 6,
-                               "rank": 3 },
+                               "rank": 4 },
                  "qed": { "total": 30, "valid": 30 },
                  "wp:main": { "total": 38, "valid": 32, "unknown": 6,
-                              "rank": 3 } },
-  "wp:functions": { "f": { "f_assert_qed_ok_for_x2": { "qed": { "total": 1,
-                                                                "valid": 1 },
-                                                       "wp:main": { "total": 1,
-                                                                    "valid": 1 } },
-                           "f_assert_qed_ok_for_x1": { "qed": { "total": 1,
-                                                                "valid": 1 },
-                                                       "wp:main": { "total": 1,
-                                                                    "valid": 1 } },
-                           "f_x2_post_qed_ok": { "qed": { "total": 1,
-                                                          "valid": 1 },
-                                                 "wp:main": { "total": 1,
-                                                              "valid": 1 } },
-                           "f_x1_post_qed_ok": { "qed": { "total": 1,
+                              "rank": 4 } },
+  "wp:functions": { "f": { "f_assert_qed_ok_2": { "qed": { "total": 1,
+                                                           "valid": 1 },
+                                                  "wp:main": { "total": 1,
+                                                               "valid": 1 } },
+                           "f_assert_qed_ok": { "qed": { "total": 1,
+                                                         "valid": 1 },
+                                                "wp:main": { "total": 1,
+                                                             "valid": 1 } },
+                           "f_x2_ensures_qed_ok": { "qed": { "total": 1,
+                                                             "valid": 1 },
+                                                    "wp:main": { "total": 1,
+                                                                 "valid": 1 } },
+                           "f_x1_ensures_qed_ok": { "qed": { "total": 1,
+                                                             "valid": 1 },
+                                                    "wp:main": { "total": 1,
+                                                                 "valid": 1 } },
+                           "f_ensures_qed_ok": { "qed": { "total": 1,
                                                           "valid": 1 },
                                                  "wp:main": { "total": 1,
                                                               "valid": 1 } },
-                           "f_post_qed_ok": { "qed": { "total": 1,
-                                                       "valid": 1 },
-                                              "wp:main": { "total": 1,
-                                                           "valid": 1 } },
                            "wp:section": { "qed": { "total": 5, "valid": 5 },
                                            "wp:main": { "total": 5,
                                                         "valid": 5 } } },
@@ -34,49 +34,49 @@
                                                               "valid": 1 },
                                                      "wp:main": { "total": 1,
                                                                   "valid": 1 } },
-                             "min_by_post_qed_ok": { "qed": { "total": 1,
-                                                              "valid": 1 },
-                                                     "wp:main": { "total": 1,
-                                                                  "valid": 1 } },
-                             "min_bx_post_qed_ok": { "qed": { "total": 1,
-                                                              "valid": 1 },
-                                                     "wp:main": { "total": 1,
-                                                                  "valid": 1 } },
+                             "min_by_ensures_qed_ok": { "qed": { "total": 1,
+                                                                 "valid": 1 },
+                                                        "wp:main": { "total": 1,
+                                                                    "valid": 1 } },
+                             "min_bx_ensures_qed_ok": { "qed": { "total": 1,
+                                                                 "valid": 1 },
+                                                        "wp:main": { "total": 1,
+                                                                    "valid": 1 } },
                              "wp:section": { "qed": { "total": 4,
                                                       "valid": 4 },
                                              "wp:main": { "total": 4,
                                                           "valid": 4 } } },
                     "bhv": { "bhv_complete_pos_neg": { "alt-ergo": { "total": 1,
                                                                     "valid": 1,
-                                                                    "rank": 1 },
+                                                                    "rank": 3 },
                                                        "wp:main": { "total": 1,
                                                                     "valid": 1,
-                                                                    "rank": 1 } },
-                             "bhv_neg_post_qed_ok": { "qed": { "total": 1,
-                                                               "valid": 1 },
-                                                      "wp:main": { "total": 1,
-                                                                   "valid": 1 } },
-                             "bhv_pos_post_qed_ok": { "qed": { "total": 1,
-                                                               "valid": 1 },
-                                                      "wp:main": { "total": 1,
-                                                                   "valid": 1 } },
+                                                                    "rank": 3 } },
+                             "bhv_neg_ensures_qed_ok": { "qed": { "total": 1,
+                                                                  "valid": 1 },
+                                                         "wp:main": { "total": 1,
+                                                                    "valid": 1 } },
+                             "bhv_pos_ensures_qed_ok": { "qed": { "total": 1,
+                                                                  "valid": 1 },
+                                                         "wp:main": { "total": 1,
+                                                                    "valid": 1 } },
                              "wp:section": { "alt-ergo": { "total": 1,
                                                            "valid": 1,
-                                                           "rank": 1 },
+                                                           "rank": 3 },
                                              "qed": { "total": 2,
                                                       "valid": 2 },
                                              "wp:main": { "total": 3,
                                                           "valid": 3,
-                                                          "rank": 1 } } },
-                    "stmt_contract": { "stmt_contract_stmt_post_qed_ok": 
+                                                          "rank": 3 } } },
+                    "stmt_contract": { "stmt_contract_ensures_qed_ok": 
                                          { "qed": { "total": 1, "valid": 1 },
                                            "wp:main": { "total": 1,
                                                         "valid": 1 } },
-                                       "stmt_contract_stmt_pre_qed_ok": 
+                                       "stmt_contract_requires_qed_ok": 
                                          { "qed": { "total": 1, "valid": 1 },
                                            "wp:main": { "total": 1,
                                                         "valid": 1 } },
-                                       "stmt_contract_ok_post_qed_ok": 
+                                       "stmt_contract_ok_ensures_qed_ok": 
                                          { "qed": { "total": 1, "valid": 1 },
                                            "wp:main": { "total": 1,
                                                         "valid": 1 } },
@@ -84,12 +84,12 @@
                                                                 "valid": 3 },
                                                        "wp:main": { "total": 3,
                                                                     "valid": 3 } } },
-                    "stmt_contract_label": { "stmt_contract_label_stmt_post_qed_ok": 
+                    "stmt_contract_label": { "stmt_contract_label_ensures_qed_ok_2": 
                                                { "qed": { "total": 1,
                                                           "valid": 1 },
                                                  "wp:main": { "total": 1,
                                                               "valid": 1 } },
-                                             "stmt_contract_label_post_qed_ok": 
+                                             "stmt_contract_label_ensures_qed_ok": 
                                                { "qed": { "total": 1,
                                                           "valid": 1 },
                                                  "wp:main": { "total": 1,
@@ -99,27 +99,27 @@
                                                              "wp:main": 
                                                                { "total": 2,
                                                                  "valid": 2 } } },
-                    "stmt_contract_assigns": { "stmt_contract_assigns_stmt_assign": 
+                    "stmt_contract_assigns": { "stmt_contract_assigns_assigns": 
                                                  { "qed": { "total": 1,
                                                             "valid": 1 },
                                                    "wp:main": { "total": 1,
                                                                 "valid": 1 } },
-                                               "stmt_contract_assigns_stmt_post_qed_ok": 
+                                               "stmt_contract_assigns_ensures_qed_ok": 
                                                  { "qed": { "total": 1,
                                                             "valid": 1 },
                                                    "wp:main": { "total": 1,
                                                                 "valid": 1 } },
-                                               "stmt_contract_assigns_stmt_pre_qed_ok": 
+                                               "stmt_contract_assigns_requires_qed_ok": 
                                                  { "qed": { "total": 1,
                                                             "valid": 1 },
                                                    "wp:main": { "total": 1,
                                                                 "valid": 1 } },
-                                               "stmt_contract_assigns_ok_asgn_post_qed_ok": 
+                                               "stmt_contract_assigns_ok_asgn_ensures_qed_ok": 
                                                  { "qed": { "total": 1,
                                                             "valid": 1 },
                                                    "wp:main": { "total": 1,
                                                                 "valid": 1 } },
-                                               "stmt_contract_assigns_ok_post_qed_ok": 
+                                               "stmt_contract_assigns_ok_ensures_qed_ok": 
                                                  { "qed": { "total": 1,
                                                             "valid": 1 },
                                                    "wp:main": { "total": 1,
@@ -130,12 +130,12 @@
                                                                "wp:main": 
                                                                  { "total": 5,
                                                                    "valid": 5 } } },
-                    "local_named_behavior": { "local_named_behavior_stmt_xpos_post_qed_ok_2": 
+                    "local_named_behavior": { "local_named_behavior_xpos_ensures_qed_ok_2": 
                                                 { "qed": { "total": 1,
                                                            "valid": 1 },
                                                   "wp:main": { "total": 1,
                                                                "valid": 1 } },
-                                              "local_named_behavior_stmt_xpos_post_qed_ok": 
+                                              "local_named_behavior_xpos_ensures_qed_ok": 
                                                 { "qed": { "total": 1,
                                                            "valid": 1 },
                                                   "wp:main": { "total": 1,
@@ -163,29 +163,34 @@
                                                        "wp:main": { "total": 2,
                                                                     "valid": 1,
                                                                     "unknown": 1 } } },
-                    "bts0513": { "bts0513_post_ko2": { "alt-ergo": { "total": 1,
-                                                                    "unknown": 1 },
-                                                       "wp:main": { "total": 1,
-                                                                    "unknown": 1 } },
-                                 "bts0513_post_ko1": { "alt-ergo": { "total": 1,
-                                                                    "unknown": 1 },
-                                                       "wp:main": { "total": 1,
-                                                                    "unknown": 1 } },
+                    "bts0513": { "bts0513_ensures_ko2": { "alt-ergo": 
+                                                            { "total": 1,
+                                                              "unknown": 1 },
+                                                          "wp:main": 
+                                                            { "total": 1,
+                                                              "unknown": 1 } },
+                                 "bts0513_ensures_ko1": { "alt-ergo": 
+                                                            { "total": 1,
+                                                              "unknown": 1 },
+                                                          "wp:main": 
+                                                            { "total": 1,
+                                                              "unknown": 1 } },
                                  "wp:section": { "alt-ergo": { "total": 2,
                                                                "unknown": 2 },
                                                  "wp:main": { "total": 2,
                                                               "unknown": 2 } } },
-                    "stmt_assigns": { "stmt_assigns_stmt_assign": { "alt-ergo": 
-                                                                    { "total": 1,
+                    "stmt_assigns": { "stmt_assigns_assigns": { "alt-ergo": 
+                                                                  { "total": 1,
                                                                     "unknown": 1 },
-                                                                    "wp:main": 
-                                                                    { "total": 1,
+                                                                "wp:main": 
+                                                                  { "total": 1,
                                                                     "unknown": 1 } },
-                                      "stmt_assigns_post": { "qed": { "total": 1,
+                                      "stmt_assigns_ensures": { "qed": 
+                                                                  { "total": 1,
                                                                     "valid": 1 },
-                                                             "wp:main": 
-                                                               { "total": 1,
-                                                                 "valid": 1 } },
+                                                                "wp:main": 
+                                                                  { "total": 1,
+                                                                    "valid": 1 } },
                                       "wp:section": { "alt-ergo": { "total": 1,
                                                                     "unknown": 1 },
                                                       "qed": { "total": 1,
@@ -193,34 +198,37 @@
                                                       "wp:main": { "total": 2,
                                                                    "valid": 1,
                                                                    "unknown": 1 } } },
-                    "razT": { "razT_loop_inv_qed_ok": { "alt-ergo": { "total": 1,
-                                                                    "valid": 1,
-                                                                    "rank": 3 },
-                                                        "qed": { "total": 1,
-                                                                 "valid": 1 },
-                                                        "wp:main": { "total": 2,
-                                                                    "valid": 2,
-                                                                    "rank": 3 } },
-                              "razT_b1_post_e1": { "alt-ergo": { "total": 1,
-                                                                 "unknown": 1 },
-                                                   "wp:main": { "total": 1,
-                                                                "unknown": 1 } },
+                    "razT": { "razT_loop_invariant_qed_ok": { "alt-ergo": 
+                                                                { "total": 1,
+                                                                  "valid": 1,
+                                                                  "rank": 4 },
+                                                              "qed": 
+                                                                { "total": 1,
+                                                                  "valid": 1 },
+                                                              "wp:main": 
+                                                                { "total": 2,
+                                                                  "valid": 2,
+                                                                  "rank": 4 } },
+                              "razT_b1_ensures_e1": { "alt-ergo": { "total": 1,
+                                                                    "unknown": 1 },
+                                                      "wp:main": { "total": 1,
+                                                                   "unknown": 1 } },
                               "wp:section": { "alt-ergo": { "total": 2,
                                                             "valid": 1,
                                                             "unknown": 1,
-                                                            "rank": 3 },
+                                                            "rank": 4 },
                                               "qed": { "total": 1,
                                                        "valid": 1 },
                                               "wp:main": { "total": 3,
                                                            "valid": 2,
                                                            "unknown": 1,
-                                                           "rank": 3 } } },
-                    "more_stmt_assigns": { "more_stmt_assigns_stmt_blk_assign": 
+                                                           "rank": 4 } } },
+                    "more_stmt_assigns": { "more_stmt_assigns_blk_assigns": 
                                              { "qed": { "total": 2,
                                                         "valid": 2 },
                                                "wp:main": { "total": 2,
                                                             "valid": 2 } },
-                                           "more_stmt_assigns_post_qed_ok_ok_with_hoare": 
+                                           "more_stmt_assigns_ensures_qed_ok_ok_with_hoare": 
                                              { "qed": { "total": 1,
                                                         "valid": 1 },
                                                "wp:main": { "total": 1,
@@ -230,12 +238,13 @@
                                                            "wp:main": 
                                                              { "total": 3,
                                                                "valid": 3 } } },
-                    "part_stmt_bhv": { "part_stmt_bhv_stmt_bs_post": 
-                                         { "alt-ergo": { "total": 1,
-                                                         "unknown": 1 },
-                                           "wp:main": { "total": 1,
-                                                        "unknown": 1 } },
-                                       "part_stmt_bhv_b1_post_qed_ok": 
+                    "part_stmt_bhv": { "part_stmt_bhv_bs_ensures": { "alt-ergo": 
+                                                                    { "total": 1,
+                                                                    "unknown": 1 },
+                                                                    "wp:main": 
+                                                                    { "total": 1,
+                                                                    "unknown": 1 } },
+                                       "part_stmt_bhv_b1_ensures_qed_ok": 
                                          { "qed": { "total": 1, "valid": 1 },
                                            "wp:main": { "total": 1,
                                                         "valid": 1 } },
diff --git a/src/plugins/wp/tests/wp/wp_behav.c.1.report.json b/src/plugins/wp/tests/wp/wp_behav.c.1.report.json
index 5179dc51e1f5a05ee8b4d95ff5496e2888964a4b..ca159cdef949ee9378ea7b68912908a313217b80 100644
--- a/src/plugins/wp/tests/wp/wp_behav.c.1.report.json
+++ b/src/plugins/wp/tests/wp/wp_behav.c.1.report.json
@@ -1,39 +1,39 @@
 { "wp:global": { "alt-ergo": { "total": 8, "unknown": 8 },
                  "wp:main": { "total": 8, "unknown": 8 } },
-  "wp:functions": { "f": { "f_x2_post_qed_ko": { "alt-ergo": { "total": 1,
+  "wp:functions": { "f": { "f_x2_ensures_qed_ko": { "alt-ergo": { "total": 1,
+                                                                  "unknown": 1 },
+                                                    "wp:main": { "total": 1,
+                                                                 "unknown": 1 } },
+                           "f_x1_ensures_qed_ko": { "alt-ergo": { "total": 1,
+                                                                  "unknown": 1 },
+                                                    "wp:main": { "total": 1,
+                                                                 "unknown": 1 } },
+                           "f_ensures_qed_ko": { "alt-ergo": { "total": 1,
                                                                "unknown": 1 },
                                                  "wp:main": { "total": 1,
                                                               "unknown": 1 } },
-                           "f_x1_post_qed_ko": { "alt-ergo": { "total": 1,
-                                                               "unknown": 1 },
-                                                 "wp:main": { "total": 1,
-                                                              "unknown": 1 } },
-                           "f_post_qed_ko": { "alt-ergo": { "total": 1,
-                                                            "unknown": 1 },
-                                              "wp:main": { "total": 1,
-                                                           "unknown": 1 } },
                            "wp:section": { "alt-ergo": { "total": 3,
                                                          "unknown": 3 },
                                            "wp:main": { "total": 3,
                                                         "unknown": 3 } } },
-                    "min": { "min_by_post_qed_ko": { "alt-ergo": { "total": 1,
-                                                                   "unknown": 1 },
-                                                     "wp:main": { "total": 1,
-                                                                  "unknown": 1 } },
-                             "min_bx_post_qed_ko": { "alt-ergo": { "total": 1,
-                                                                   "unknown": 1 },
-                                                     "wp:main": { "total": 1,
-                                                                  "unknown": 1 } },
+                    "min": { "min_by_ensures_qed_ko": { "alt-ergo": { "total": 1,
+                                                                    "unknown": 1 },
+                                                        "wp:main": { "total": 1,
+                                                                    "unknown": 1 } },
+                             "min_bx_ensures_qed_ko": { "alt-ergo": { "total": 1,
+                                                                    "unknown": 1 },
+                                                        "wp:main": { "total": 1,
+                                                                    "unknown": 1 } },
                              "wp:section": { "alt-ergo": { "total": 2,
                                                            "unknown": 2 },
                                              "wp:main": { "total": 2,
                                                           "unknown": 2 } } },
-                    "stmt_contract": { "stmt_contract_ko_without_asgn_post_qed_ko": 
+                    "stmt_contract": { "stmt_contract_ko_without_asgn_ensures_qed_ko": 
                                          { "alt-ergo": { "total": 1,
                                                          "unknown": 1 },
                                            "wp:main": { "total": 1,
                                                         "unknown": 1 } },
-                                       "stmt_contract_ko_post_qed_ko": 
+                                       "stmt_contract_ko_ensures_qed_ko": 
                                          { "alt-ergo": { "total": 1,
                                                          "unknown": 1 },
                                            "wp:main": { "total": 1,
@@ -42,7 +42,7 @@
                                                                     "unknown": 2 },
                                                        "wp:main": { "total": 2,
                                                                     "unknown": 2 } } },
-                    "stmt_contract_assigns": { "stmt_contract_assigns_ko_post_qed_ko": 
+                    "stmt_contract_assigns": { "stmt_contract_assigns_ko_ensures_qed_ko": 
                                                  { "alt-ergo": { "total": 1,
                                                                  "unknown": 1 },
                                                    "wp:main": { "total": 1,
diff --git a/src/plugins/wp/tests/wp/wp_call_pre.c.0.report.json b/src/plugins/wp/tests/wp/wp_call_pre.c.0.report.json
index e906db69b8c2655f456b55e33646bb6049ea674f..46ef943fa3849d7d744ad29bea8228c6e290fc7a 100644
--- a/src/plugins/wp/tests/wp/wp_call_pre.c.0.report.json
+++ b/src/plugins/wp/tests/wp/wp_call_pre.c.0.report.json
@@ -1,16 +1,20 @@
 { "wp:global": { "alt-ergo": { "total": 1, "valid": 1, "rank": 2 },
                  "qed": { "total": 9, "valid": 9 },
                  "wp:main": { "total": 10, "valid": 10, "rank": 2 } },
-  "wp:functions": { "double_call": { "specialization_f_pre_qed_ok_Rf_at_double_call_stmt_2": 
-                                       { "alt-ergo": { "total": 1,
-                                                       "valid": 1,
-                                                       "rank": 2 },
-                                         "wp:main": { "total": 1, "valid": 1,
-                                                      "rank": 2 } },
-                                     "specialization_f_pre_qed_ok_Rf_at_double_call_stmt_1": 
-                                       { "qed": { "total": 1, "valid": 1 },
-                                         "wp:main": { "total": 1,
-                                                      "valid": 1 } },
+  "wp:functions": { "double_call": { "f_requires_qed_ok_Rf_2": { "alt-ergo": 
+                                                                   { "total": 1,
+                                                                    "valid": 1,
+                                                                    "rank": 2 },
+                                                                 "wp:main": 
+                                                                   { "total": 1,
+                                                                    "valid": 1,
+                                                                    "rank": 2 } },
+                                     "f_requires_qed_ok_Rf": { "qed": 
+                                                                 { "total": 1,
+                                                                   "valid": 1 },
+                                                               "wp:main": 
+                                                                 { "total": 1,
+                                                                   "valid": 1 } },
                                      "wp:section": { "alt-ergo": { "total": 1,
                                                                    "valid": 1,
                                                                    "rank": 2 },
@@ -19,36 +23,43 @@
                                                      "wp:main": { "total": 2,
                                                                   "valid": 2,
                                                                   "rank": 2 } } },
-                    "main": { "specialization_f_pre_qed_ok_Rf_at_main_stmt_6": 
-                                { "qed": { "total": 1, "valid": 1 },
-                                  "wp:main": { "total": 1, "valid": 1 } },
-                              "main_post_qed_ok_Emain": { "qed": { "total": 1,
+                    "main": { "f_requires_qed_ok_Rf_3": { "qed": { "total": 1,
                                                                    "valid": 1 },
                                                           "wp:main": 
                                                             { "total": 1,
                                                               "valid": 1 } },
-                              "main_pre_qed_ok_Rmain": { "qed": { "total": 1,
-                                                                  "valid": 1 },
-                                                         "wp:main": { "total": 1,
-                                                                    "valid": 1 } },
-                              "wp:section": { "qed": { "total": 3,
-                                                       "valid": 3 },
-                                              "wp:main": { "total": 3,
-                                                           "valid": 3 } } },
-                    "call_main": { "specialization_main_pre_qed_ok_Rmain_at_call_main_stmt_11": 
-                                     { "qed": { "total": 1, "valid": 1 },
-                                       "wp:main": { "total": 1, "valid": 1 } },
-                                   "call_main_post_qed_ok": { "qed": 
+                              "main_ensures_qed_ok_Emain": { "qed": { "total": 1,
+                                                                    "valid": 1 },
+                                                             "wp:main": 
+                                                               { "total": 1,
+                                                                 "valid": 1 } },
+                              "main_requires_qed_ok_Rmain": { "qed": 
                                                                 { "total": 1,
                                                                   "valid": 1 },
                                                               "wp:main": 
                                                                 { "total": 1,
                                                                   "valid": 1 } },
+                              "wp:section": { "qed": { "total": 3,
+                                                       "valid": 3 },
+                                              "wp:main": { "total": 3,
+                                                           "valid": 3 } } },
+                    "call_main": { "main_requires_qed_ok_Rmain_2": { "qed": 
+                                                                    { "total": 1,
+                                                                    "valid": 1 },
+                                                                    "wp:main": 
+                                                                    { "total": 1,
+                                                                    "valid": 1 } },
+                                   "call_main_ensures_qed_ok": { "qed": 
+                                                                   { "total": 1,
+                                                                    "valid": 1 },
+                                                                 "wp:main": 
+                                                                   { "total": 1,
+                                                                    "valid": 1 } },
                                    "wp:section": { "qed": { "total": 2,
                                                             "valid": 2 },
                                                    "wp:main": { "total": 2,
                                                                 "valid": 2 } } },
-                    "stmt_pre": { "stmt_pre_stmt_pre_qed_ok_Rstmt": { "qed": 
+                    "stmt_pre": { "stmt_pre_requires_qed_ok_Rstmt": { "qed": 
                                                                     { "total": 1,
                                                                     "valid": 1 },
                                                                     "wp:main": 
@@ -58,12 +69,15 @@
                                                            "valid": 1 },
                                                   "wp:main": { "total": 1,
                                                                "valid": 1 } } },
-                    "call_g": { "specialization_g_pre_Rgb_at_call_g_stmt_22": 
-                                  { "qed": { "total": 1, "valid": 1 },
-                                    "wp:main": { "total": 1, "valid": 1 } },
-                                "specialization_g_pre_qed_ok_Rga_at_call_g_stmt_22": 
-                                  { "qed": { "total": 1, "valid": 1 },
-                                    "wp:main": { "total": 1, "valid": 1 } },
+                    "call_g": { "g_requires_Rgb": { "qed": { "total": 1,
+                                                             "valid": 1 },
+                                                    "wp:main": { "total": 1,
+                                                                 "valid": 1 } },
+                                "g_requires_qed_ok_Rga": { "qed": { "total": 1,
+                                                                    "valid": 1 },
+                                                           "wp:main": 
+                                                             { "total": 1,
+                                                               "valid": 1 } },
                                 "wp:section": { "qed": { "total": 2,
                                                          "valid": 2 },
                                                 "wp:main": { "total": 2,
diff --git a/src/plugins/wp/tests/wp/wp_eqb.i.0.report.json b/src/plugins/wp/tests/wp/wp_eqb.i.0.report.json
index 31678b1201a677a977dd04902eddb54caa33f639..61ebcf4782f55aad4236e4abfd5a7be592f4c998 100644
--- a/src/plugins/wp/tests/wp/wp_eqb.i.0.report.json
+++ b/src/plugins/wp/tests/wp/wp_eqb.i.0.report.json
@@ -1,9 +1,11 @@
 { "wp:global": { "alt-ergo": { "total": 1, "valid": 1, "rank": 9 },
                  "wp:main": { "total": 1, "valid": 1, "rank": 9 } },
-  "wp:functions": { "f": { "f_post": { "alt-ergo": { "total": 1, "valid": 1,
-                                                     "rank": 9 },
-                                       "wp:main": { "total": 1, "valid": 1,
-                                                    "rank": 9 } },
+  "wp:functions": { "f": { "f_ensures": { "alt-ergo": { "total": 1,
+                                                        "valid": 1,
+                                                        "rank": 10 },
+                                          "wp:main": { "total": 1,
+                                                       "valid": 1,
+                                                       "rank": 10 } },
                            "wp:section": { "alt-ergo": { "total": 1,
                                                          "valid": 1,
                                                          "rank": 9 },
diff --git a/src/plugins/wp/tests/wp/wp_strategy.c.0.report.json b/src/plugins/wp/tests/wp/wp_strategy.c.0.report.json
index 40f46e25467a95082221a53bb85c3ce8a04dce22..e49918bd0f45b613e0f363eafb042208dae7952a 100644
--- a/src/plugins/wp/tests/wp/wp_strategy.c.0.report.json
+++ b/src/plugins/wp/tests/wp/wp_strategy.c.0.report.json
@@ -1,18 +1,18 @@
 { "wp:global": { "alt-ergo": { "total": 8, "unknown": 8 },
                  "qed": { "total": 17, "valid": 17 },
                  "wp:main": { "total": 25, "valid": 17, "unknown": 8 } },
-  "wp:functions": { "bts0513": { "bts0513_post_qed_ko_ko2": { "alt-ergo": 
-                                                                { "total": 1,
-                                                                  "unknown": 1 },
-                                                              "wp:main": 
-                                                                { "total": 1,
-                                                                  "unknown": 1 } },
-                                 "bts0513_post_qed_ko_ko1": { "alt-ergo": 
-                                                                { "total": 1,
-                                                                  "unknown": 1 },
-                                                              "wp:main": 
-                                                                { "total": 1,
-                                                                  "unknown": 1 } },
+  "wp:functions": { "bts0513": { "bts0513_ensures_qed_ko_ko2": { "alt-ergo": 
+                                                                   { "total": 1,
+                                                                    "unknown": 1 },
+                                                                 "wp:main": 
+                                                                   { "total": 1,
+                                                                    "unknown": 1 } },
+                                 "bts0513_ensures_qed_ko_ko1": { "alt-ergo": 
+                                                                   { "total": 1,
+                                                                    "unknown": 1 },
+                                                                 "wp:main": 
+                                                                   { "total": 1,
+                                                                    "unknown": 1 } },
                                  "wp:section": { "alt-ergo": { "total": 2,
                                                                "unknown": 2 },
                                                  "wp:main": { "total": 2,
@@ -37,16 +37,16 @@
                                                                  "valid": 1 },
                                                         "wp:main": { "total": 1,
                                                                     "valid": 1 } },
-                              "dpd1_stmt_assign": { "qed": { "total": 1,
-                                                             "valid": 1 },
-                                                    "wp:main": { "total": 1,
-                                                                 "valid": 1 } },
-                              "dpd1_stmt_post_qed_ko_Eko": { "alt-ergo": 
-                                                               { "total": 1,
-                                                                 "unknown": 1 },
-                                                             "wp:main": 
-                                                               { "total": 1,
-                                                                 "unknown": 1 } },
+                              "dpd1_assigns": { "qed": { "total": 1,
+                                                         "valid": 1 },
+                                                "wp:main": { "total": 1,
+                                                             "valid": 1 } },
+                              "dpd1_ensures_qed_ko_Eko": { "alt-ergo": 
+                                                             { "total": 1,
+                                                               "unknown": 1 },
+                                                           "wp:main": 
+                                                             { "total": 1,
+                                                               "unknown": 1 } },
                               "wp:section": { "alt-ergo": { "total": 1,
                                                             "unknown": 1 },
                                               "qed": { "total": 2,
@@ -54,22 +54,20 @@
                                               "wp:main": { "total": 3,
                                                            "valid": 2,
                                                            "unknown": 1 } } },
-                    "dpd2": { "dpd2_assert_qed_ok_A_for_P": { "qed": 
-                                                                { "total": 1,
-                                                                  "valid": 1 },
-                                                              "wp:main": 
-                                                                { "total": 1,
-                                                                  "valid": 1 } },
-                              "dpd2_stmt_assign": { "qed": { "total": 1,
-                                                             "valid": 1 },
-                                                    "wp:main": { "total": 1,
-                                                                 "valid": 1 } },
-                              "dpd2_stmt_post_qed_ko_Eko": { "alt-ergo": 
-                                                               { "total": 1,
-                                                                 "unknown": 1 },
-                                                             "wp:main": 
-                                                               { "total": 1,
-                                                                 "unknown": 1 } },
+                    "dpd2": { "dpd2_assert_qed_ok_A": { "qed": { "total": 1,
+                                                                 "valid": 1 },
+                                                        "wp:main": { "total": 1,
+                                                                    "valid": 1 } },
+                              "dpd2_assigns": { "qed": { "total": 1,
+                                                         "valid": 1 },
+                                                "wp:main": { "total": 1,
+                                                             "valid": 1 } },
+                              "dpd2_ensures_qed_ko_Eko": { "alt-ergo": 
+                                                             { "total": 1,
+                                                               "unknown": 1 },
+                                                           "wp:main": 
+                                                             { "total": 1,
+                                                               "unknown": 1 } },
                               "wp:section": { "alt-ergo": { "total": 1,
                                                             "unknown": 1 },
                                               "qed": { "total": 2,
@@ -83,32 +81,29 @@
                                  "spec_if_assert_rte_signed_overflow": 
                                    { "alt-ergo": { "total": 1, "unknown": 1 },
                                      "wp:main": { "total": 1, "unknown": 1 } },
-                                 "spec_if_stmt_assign_3": { "qed": { "total": 1,
-                                                                    "valid": 1 },
-                                                            "wp:main": 
-                                                              { "total": 1,
-                                                                "valid": 1 } },
-                                 "spec_if_stmt_assign_2": { "qed": { "total": 1,
-                                                                    "valid": 1 },
-                                                            "wp:main": 
-                                                              { "total": 1,
-                                                                "valid": 1 } },
-                                 "spec_if_stmt_assign": { "qed": { "total": 1,
-                                                                   "valid": 1 },
-                                                          "wp:main": 
-                                                            { "total": 1,
-                                                              "valid": 1 } },
-                                 "spec_if_stmt_post_qed_ok": { "qed": 
+                                 "spec_if_assigns_3": { "qed": { "total": 1,
+                                                                 "valid": 1 },
+                                                        "wp:main": { "total": 1,
+                                                                    "valid": 1 } },
+                                 "spec_if_assigns_2": { "qed": { "total": 1,
+                                                                 "valid": 1 },
+                                                        "wp:main": { "total": 1,
+                                                                    "valid": 1 } },
+                                 "spec_if_assigns": { "qed": { "total": 1,
+                                                               "valid": 1 },
+                                                      "wp:main": { "total": 1,
+                                                                   "valid": 1 } },
+                                 "spec_if_ensures_qed_ok_2": { "qed": 
                                                                  { "total": 1,
                                                                    "valid": 1 },
                                                                "wp:main": 
                                                                  { "total": 1,
                                                                    "valid": 1 } },
-                                 "spec_if_post_qed_ok": { "qed": { "total": 1,
-                                                                   "valid": 1 },
-                                                          "wp:main": 
-                                                            { "total": 1,
-                                                              "valid": 1 } },
+                                 "spec_if_ensures_qed_ok": { "qed": { "total": 1,
+                                                                    "valid": 1 },
+                                                             "wp:main": 
+                                                               { "total": 1,
+                                                                 "valid": 1 } },
                                  "wp:section": { "alt-ergo": { "total": 2,
                                                                "unknown": 2 },
                                                  "qed": { "total": 5,
@@ -116,7 +111,7 @@
                                                  "wp:main": { "total": 7,
                                                               "valid": 5,
                                                               "unknown": 2 } } },
-                    "spec_if_cond": { "spec_if_cond_stmt_post_qed_ok": 
+                    "spec_if_cond": { "spec_if_cond_ensures_qed_ok": 
                                         { "qed": { "total": 1, "valid": 1 },
                                           "wp:main": { "total": 1,
                                                        "valid": 1 } },
@@ -124,7 +119,7 @@
                                                                "valid": 1 },
                                                       "wp:main": { "total": 1,
                                                                    "valid": 1 } } },
-                    "spec_if_not_cond": { "spec_if_not_cond_stmt_post_qed_ok": 
+                    "spec_if_not_cond": { "spec_if_not_cond_ensures_qed_ok": 
                                             { "qed": { "total": 1,
                                                        "valid": 1 },
                                               "wp:main": { "total": 1,
@@ -149,17 +144,17 @@
                                                         "valid": 1 },
                                                "wp:main": { "total": 1,
                                                             "valid": 1 } },
-                                           "default_behaviors_stmt_assign": 
+                                           "default_behaviors_assigns": 
                                              { "qed": { "total": 1,
                                                         "valid": 1 },
                                                "wp:main": { "total": 1,
                                                             "valid": 1 } },
-                                           "default_behaviors_stmt_post_qed_ok_stmt_p": 
+                                           "default_behaviors_ensures_qed_ok_stmt_p": 
                                              { "qed": { "total": 1,
                                                         "valid": 1 },
                                                "wp:main": { "total": 1,
                                                             "valid": 1 } },
-                                           "default_behaviors_post_qed_ok": 
+                                           "default_behaviors_ensures_qed_ok": 
                                              { "qed": { "total": 1,
                                                         "valid": 1 },
                                                "wp:main": { "total": 1,
diff --git a/src/plugins/wp/tests/wp_acsl/arith.i.0.report.json b/src/plugins/wp/tests/wp_acsl/arith.i.0.report.json
index 613f84813e258b26e25ef8f2db1f40d10206834a..13a54c0355915f6c11c608baf0017341de6d51ad 100644
--- a/src/plugins/wp/tests/wp_acsl/arith.i.0.report.json
+++ b/src/plugins/wp/tests/wp_acsl/arith.i.0.report.json
@@ -1,6 +1,6 @@
-{ "wp:global": { "alt-ergo": { "total": 3, "valid": 3, "rank": 3 },
+{ "wp:global": { "alt-ergo": { "total": 3, "valid": 3, "rank": 4 },
                  "qed": { "total": 21, "valid": 21 },
-                 "wp:main": { "total": 24, "valid": 24, "rank": 3 } },
+                 "wp:main": { "total": 24, "valid": 24, "rank": 4 } },
   "wp:axiomatics": { "": { "lemma_ucN2_qed_ok": { "qed": { "total": 1,
                                                            "valid": 1 },
                                                   "wp:main": { "total": 1,
@@ -106,7 +106,7 @@
                                            "wp:main": { "total": 21,
                                                         "valid": 21,
                                                         "rank": 0 } } } },
-  "wp:functions": { "cast_sgn_usgn": { "cast_sgn_usgn_post_qed_ok_nat": 
+  "wp:functions": { "cast_sgn_usgn": { "cast_sgn_usgn_ensures_qed_ok_nat": 
                                          { "qed": { "total": 1, "valid": 1 },
                                            "wp:main": { "total": 1,
                                                         "valid": 1 } },
@@ -117,18 +117,18 @@
                     "uchar_range": { "uchar_range_assert_qed_ok_A2": 
                                        { "alt-ergo": { "total": 1,
                                                        "valid": 1,
-                                                       "rank": 3 },
+                                                       "rank": 4 },
                                          "wp:main": { "total": 1, "valid": 1,
-                                                      "rank": 3 } },
+                                                      "rank": 4 } },
                                      "uchar_range_assert_qed_ok_A1": 
                                        { "alt-ergo": { "total": 1,
                                                        "valid": 1,
-                                                       "rank": 3 },
+                                                       "rank": 4 },
                                          "wp:main": { "total": 1, "valid": 1,
-                                                      "rank": 3 } },
+                                                      "rank": 4 } },
                                      "wp:section": { "alt-ergo": { "total": 2,
                                                                    "valid": 2,
-                                                                   "rank": 3 },
+                                                                   "rank": 4 },
                                                      "wp:main": { "total": 2,
                                                                   "valid": 2,
-                                                                  "rank": 3 } } } } }
+                                                                  "rank": 4 } } } } }
diff --git a/src/plugins/wp/tests/wp_acsl/arith.i.1.report.json b/src/plugins/wp/tests/wp_acsl/arith.i.1.report.json
index 5d5263c3f330fa7ee13c1252c37d23dec9c81519..d2cc0ea1c99088084f9c0d3f60a86defa91a9008 100644
--- a/src/plugins/wp/tests/wp_acsl/arith.i.1.report.json
+++ b/src/plugins/wp/tests/wp_acsl/arith.i.1.report.json
@@ -1,6 +1,6 @@
 { "wp:global": { "alt-ergo": { "total": 1, "unknown": 1 },
                  "wp:main": { "total": 1, "unknown": 1 } },
-  "wp:functions": { "cast_sgn_usgn": { "cast_sgn_usgn_post_qed_ko_KO": 
+  "wp:functions": { "cast_sgn_usgn": { "cast_sgn_usgn_ensures_qed_ko_KO": 
                                          { "alt-ergo": { "total": 1,
                                                          "unknown": 1 },
                                            "wp:main": { "total": 1,
diff --git a/src/plugins/wp/tests/wp_acsl/assign_array.i.0.report.json b/src/plugins/wp/tests/wp_acsl/assign_array.i.0.report.json
index 0ed6cda82f4f07ee74997ae359be44570d4ec148..c9b4abc0b34fba30c01071e1f47fe4f2e8c8ce92 100644
--- a/src/plugins/wp/tests/wp_acsl/assign_array.i.0.report.json
+++ b/src/plugins/wp/tests/wp_acsl/assign_array.i.0.report.json
@@ -1,17 +1,17 @@
 { "wp:global": { "qed": { "total": 4, "valid": 4 },
                  "wp:main": { "total": 4, "valid": 4 } },
-  "wp:functions": { "jobA": { "jobA_assign": { "qed": { "total": 2,
-                                                        "valid": 2 },
-                                               "wp:main": { "total": 2,
-                                                            "valid": 2 } },
+  "wp:functions": { "jobA": { "jobA_assigns": { "qed": { "total": 2,
+                                                         "valid": 2 },
+                                                "wp:main": { "total": 2,
+                                                             "valid": 2 } },
                               "wp:section": { "qed": { "total": 2,
                                                        "valid": 2 },
                                               "wp:main": { "total": 2,
                                                            "valid": 2 } } },
-                    "jobG": { "jobG_assign": { "qed": { "total": 2,
-                                                        "valid": 2 },
-                                               "wp:main": { "total": 2,
-                                                            "valid": 2 } },
+                    "jobG": { "jobG_assigns": { "qed": { "total": 2,
+                                                         "valid": 2 },
+                                                "wp:main": { "total": 2,
+                                                             "valid": 2 } },
                               "wp:section": { "qed": { "total": 2,
                                                        "valid": 2 },
                                               "wp:main": { "total": 2,
diff --git a/src/plugins/wp/tests/wp_acsl/assigns_path.i.0.report.json b/src/plugins/wp/tests/wp_acsl/assigns_path.i.0.report.json
index 2866dccc60d1584dfa4b3b0f120c0806543c8969..a3e18b8a1f10b2629a4c2dcfc0d7d34e0c338e01 100644
--- a/src/plugins/wp/tests/wp_acsl/assigns_path.i.0.report.json
+++ b/src/plugins/wp/tests/wp_acsl/assigns_path.i.0.report.json
@@ -1,45 +1,45 @@
-{ "wp:global": { "alt-ergo": { "total": 3, "valid": 3, "rank": 5 },
+{ "wp:global": { "alt-ergo": { "total": 3, "valid": 3, "rank": 6 },
                  "qed": { "total": 6, "valid": 6 },
-                 "wp:main": { "total": 9, "valid": 9, "rank": 5 } },
-  "wp:functions": { "job": { "job_loop_inv_2": { "alt-ergo": { "total": 1,
-                                                               "valid": 1,
-                                                               "rank": 5 },
-                                                 "qed": { "total": 1,
-                                                          "valid": 1 },
-                                                 "wp:main": { "total": 2,
-                                                              "valid": 2,
-                                                              "rank": 5 } },
-                             "job_loop_inv": { "alt-ergo": { "total": 1,
+                 "wp:main": { "total": 9, "valid": 9, "rank": 6 } },
+  "wp:functions": { "job": { "job_loop_invariant_2": { "alt-ergo": { "total": 1,
+                                                                    "valid": 1,
+                                                                    "rank": 6 },
+                                                       "qed": { "total": 1,
+                                                                "valid": 1 },
+                                                       "wp:main": { "total": 2,
+                                                                    "valid": 2,
+                                                                    "rank": 6 } },
+                             "job_loop_invariant": { "alt-ergo": { "total": 1,
+                                                                   "valid": 1,
+                                                                   "rank": 4 },
+                                                     "qed": { "total": 1,
+                                                              "valid": 1 },
+                                                     "wp:main": { "total": 2,
+                                                                  "valid": 2,
+                                                                  "rank": 4 } },
+                             "job_assigns": { "qed": { "total": 2,
+                                                       "valid": 2 },
+                                              "wp:main": { "total": 2,
+                                                           "valid": 2 } },
+                             "job_loop_assigns": { "qed": { "total": 1,
+                                                            "valid": 1 },
+                                                   "wp:main": { "total": 1,
+                                                                "valid": 1 } },
+                             "job_ensures_A": { "alt-ergo": { "total": 1,
+                                                              "valid": 1,
+                                                              "rank": 5 },
+                                                "wp:main": { "total": 1,
                                                              "valid": 1,
-                                                             "rank": 3 },
-                                               "qed": { "total": 1,
-                                                        "valid": 1 },
-                                               "wp:main": { "total": 2,
-                                                            "valid": 2,
-                                                            "rank": 3 } },
-                             "job_assign": { "qed": { "total": 2,
-                                                      "valid": 2 },
-                                             "wp:main": { "total": 2,
-                                                          "valid": 2 } },
-                             "job_loop_assign": { "qed": { "total": 1,
-                                                           "valid": 1 },
-                                                  "wp:main": { "total": 1,
-                                                               "valid": 1 } },
-                             "job_post_A": { "alt-ergo": { "total": 1,
-                                                           "valid": 1,
-                                                           "rank": 4 },
-                                             "wp:main": { "total": 1,
-                                                          "valid": 1,
-                                                          "rank": 4 } },
-                             "job_post_N": { "qed": { "total": 1,
-                                                      "valid": 1 },
-                                             "wp:main": { "total": 1,
-                                                          "valid": 1 } },
+                                                             "rank": 5 } },
+                             "job_ensures_N": { "qed": { "total": 1,
+                                                         "valid": 1 },
+                                                "wp:main": { "total": 1,
+                                                             "valid": 1 } },
                              "wp:section": { "alt-ergo": { "total": 3,
                                                            "valid": 3,
-                                                           "rank": 5 },
+                                                           "rank": 6 },
                                              "qed": { "total": 6,
                                                       "valid": 6 },
                                              "wp:main": { "total": 9,
                                                           "valid": 9,
-                                                          "rank": 5 } } } } }
+                                                          "rank": 6 } } } } }
diff --git a/src/plugins/wp/tests/wp_acsl/assigns_range.i.0.report.json b/src/plugins/wp/tests/wp_acsl/assigns_range.i.0.report.json
index 1fe78dc9d29e99b87af197f1f38cff8e938a55a7..bc9e60bf5444a59032712016285245540003092b 100644
--- a/src/plugins/wp/tests/wp_acsl/assigns_range.i.0.report.json
+++ b/src/plugins/wp/tests/wp_acsl/assigns_range.i.0.report.json
@@ -1,31 +1,31 @@
-{ "wp:global": { "alt-ergo": { "total": 5, "valid": 5, "rank": 2 },
+{ "wp:global": { "alt-ergo": { "total": 5, "valid": 5, "rank": 3 },
                  "qed": { "total": 12, "valid": 12 },
-                 "wp:main": { "total": 17, "valid": 17, "rank": 2 } },
-  "wp:functions": { "call_assigns_all": { "specialization_assigns_t4_sup_bound_pre_at_call_assigns_all_stmt_4": 
+                 "wp:main": { "total": 17, "valid": 17, "rank": 3 } },
+  "wp:functions": { "call_assigns_all": { "assigns_t4_sup_bound_requires": 
                                             { "alt-ergo": { "total": 1,
                                                             "valid": 1,
-                                                            "rank": 2 },
+                                                            "rank": 3 },
                                               "wp:main": { "total": 1,
                                                            "valid": 1,
-                                                           "rank": 2 } },
-                                          "specialization_assigns_t3_inf_bound_pre_at_call_assigns_all_stmt_3": 
+                                                           "rank": 3 } },
+                                          "assigns_t3_inf_bound_requires": 
                                             { "qed": { "total": 1,
                                                        "valid": 1 },
                                               "wp:main": { "total": 1,
                                                            "valid": 1 } },
-                                          "specialization_assigns_t2_bound_pre_at_call_assigns_all_stmt_2": 
+                                          "assigns_t2_bound_requires": 
                                             { "qed": { "total": 1,
                                                        "valid": 1 },
                                               "wp:main": { "total": 1,
                                                            "valid": 1 } },
-                                          "specialization_assigns_t1_an_element_pre_at_call_assigns_all_stmt_1": 
+                                          "assigns_t1_an_element_requires": 
                                             { "alt-ergo": { "total": 1,
                                                             "valid": 1,
                                                             "rank": 2 },
                                               "wp:main": { "total": 1,
                                                            "valid": 1,
                                                            "rank": 2 } },
-                                          "call_assigns_all_assign": 
+                                          "call_assigns_all_assigns": 
                                             { "qed": { "total": 10,
                                                        "valid": 10 },
                                               "wp:main": { "total": 10,
@@ -33,42 +33,42 @@
                                           "wp:section": { "alt-ergo": 
                                                             { "total": 2,
                                                               "valid": 2,
-                                                              "rank": 2 },
+                                                              "rank": 3 },
                                                           "qed": { "total": 12,
                                                                    "valid": 12 },
                                                           "wp:main": 
                                                             { "total": 14,
                                                               "valid": 14,
-                                                              "rank": 2 } } },
-                    "call_assigns_t1": { "specialization_assigns_t1_an_element_pre_at_call_assigns_t1_stmt_8": 
+                                                              "rank": 3 } } },
+                    "call_assigns_t1": { "assigns_t1_an_element_requires_2": 
                                            { "alt-ergo": { "total": 1,
                                                            "valid": 1,
-                                                           "rank": 1 },
+                                                           "rank": 2 },
                                              "wp:main": { "total": 1,
                                                           "valid": 1,
-                                                          "rank": 1 } },
+                                                          "rank": 2 } },
                                          "wp:section": { "alt-ergo": 
                                                            { "total": 1,
                                                              "valid": 1,
-                                                             "rank": 1 },
+                                                             "rank": 2 },
                                                          "wp:main": { "total": 1,
                                                                     "valid": 1,
-                                                                    "rank": 1 } } },
-                    "call_assigns_t2": { "specialization_assigns_t2_bound_pre_at_call_assigns_t2_stmt_11": 
+                                                                    "rank": 2 } } },
+                    "call_assigns_t2": { "assigns_t2_bound_requires_2": 
                                            { "alt-ergo": { "total": 1,
                                                            "valid": 1,
-                                                           "rank": 1 },
+                                                           "rank": 2 },
                                              "wp:main": { "total": 1,
                                                           "valid": 1,
-                                                          "rank": 1 } },
+                                                          "rank": 2 } },
                                          "wp:section": { "alt-ergo": 
                                                            { "total": 1,
                                                              "valid": 1,
-                                                             "rank": 1 },
+                                                             "rank": 2 },
                                                          "wp:main": { "total": 1,
                                                                     "valid": 1,
-                                                                    "rank": 1 } } },
-                    "call_assigns_t4": { "specialization_assigns_t4_sup_bound_pre_at_call_assigns_t4_stmt_14": 
+                                                                    "rank": 2 } } },
+                    "call_assigns_t4": { "assigns_t4_sup_bound_requires_2": 
                                            { "alt-ergo": { "total": 1,
                                                            "valid": 1,
                                                            "rank": 2 },
diff --git a/src/plugins/wp/tests/wp_acsl/assigns_range.i.1.report.json b/src/plugins/wp/tests/wp_acsl/assigns_range.i.1.report.json
index 95a3aef7e5be5982ddce042f7aeae17967b2fce4..e68efa739414de5aa88ca2c6c6b080ceb01e4d97 100644
--- a/src/plugins/wp/tests/wp_acsl/assigns_range.i.1.report.json
+++ b/src/plugins/wp/tests/wp_acsl/assigns_range.i.1.report.json
@@ -1,6 +1,6 @@
 { "wp:global": { "alt-ergo": { "total": 6, "unknown": 6 },
                  "wp:main": { "total": 6, "unknown": 6 } },
-  "wp:functions": { "call_assigns_t1": { "call_assigns_t1_assign": { "alt-ergo": 
+  "wp:functions": { "call_assigns_t1": { "call_assigns_t1_assigns": { "alt-ergo": 
                                                                     { "total": 2,
                                                                     "unknown": 2 },
                                                                     "wp:main": 
@@ -11,7 +11,7 @@
                                                              "unknown": 2 },
                                                          "wp:main": { "total": 2,
                                                                     "unknown": 2 } } },
-                    "call_assigns_t2": { "call_assigns_t2_assign": { "alt-ergo": 
+                    "call_assigns_t2": { "call_assigns_t2_assigns": { "alt-ergo": 
                                                                     { "total": 2,
                                                                     "unknown": 2 },
                                                                     "wp:main": 
@@ -22,7 +22,7 @@
                                                              "unknown": 2 },
                                                          "wp:main": { "total": 2,
                                                                     "unknown": 2 } } },
-                    "call_assigns_t4": { "call_assigns_t4_assign": { "alt-ergo": 
+                    "call_assigns_t4": { "call_assigns_t4_assigns": { "alt-ergo": 
                                                                     { "total": 2,
                                                                     "unknown": 2 },
                                                                     "wp:main": 
diff --git a/src/plugins/wp/tests/wp_acsl/axioms.i.0.report.json b/src/plugins/wp/tests/wp_acsl/axioms.i.0.report.json
index 04cbcf21bd93fe950ca4f1c2bf0e56d13bebae5b..eefcca4016015985dcbd4d79d14b610a9901b67e 100644
--- a/src/plugins/wp/tests/wp_acsl/axioms.i.0.report.json
+++ b/src/plugins/wp/tests/wp_acsl/axioms.i.0.report.json
@@ -3,41 +3,44 @@
                  "qed": { "total": 3, "valid": 3 },
                  "wp:main": { "total": 10, "valid": 8, "unknown": 2,
                               "rank": 22 } },
-  "wp:functions": { "f": { "f_loop_inv_Positive": { "alt-ergo": { "total": 1,
-                                                                  "valid": 1,
-                                                                  "rank": 8 },
-                                                    "qed": { "total": 1,
-                                                             "valid": 1 },
-                                                    "wp:main": { "total": 2,
-                                                                 "valid": 2,
-                                                                 "rank": 8 } },
-                           "f_loop_inv_Index": { "alt-ergo": { "total": 2,
-                                                               "valid": 2,
-                                                               "rank": 5 },
-                                                 "wp:main": { "total": 2,
+  "wp:functions": { "f": { "f_loop_invariant_Positive": { "alt-ergo": 
+                                                            { "total": 1,
+                                                              "valid": 1,
+                                                              "rank": 9 },
+                                                          "qed": { "total": 1,
+                                                                   "valid": 1 },
+                                                          "wp:main": 
+                                                            { "total": 2,
                                                               "valid": 2,
-                                                              "rank": 5 } },
-                           "f_assign": { "alt-ergo": { "total": 1,
-                                                       "unknown": 1 },
-                                         "wp:main": { "total": 1,
-                                                      "unknown": 1 } },
-                           "f_loop_assign": { "alt-ergo": { "total": 1,
-                                                            "valid": 1,
-                                                            "rank": 22 },
-                                              "qed": { "total": 2,
-                                                       "valid": 2 },
-                                              "wp:main": { "total": 3,
-                                                           "valid": 3,
-                                                           "rank": 22 } },
-                           "f_post_Q": { "alt-ergo": { "total": 1,
-                                                       "valid": 1,
-                                                       "rank": 12 },
-                                         "wp:main": { "total": 1, "valid": 1,
-                                                      "rank": 12 } },
-                           "f_post_P_todo": { "alt-ergo": { "total": 1,
-                                                            "unknown": 1 },
-                                              "wp:main": { "total": 1,
-                                                           "unknown": 1 } },
+                                                              "rank": 9 } },
+                           "f_loop_invariant_Index": { "alt-ergo": { "total": 2,
+                                                                    "valid": 2,
+                                                                    "rank": 5 },
+                                                       "wp:main": { "total": 2,
+                                                                    "valid": 2,
+                                                                    "rank": 5 } },
+                           "f_assigns": { "alt-ergo": { "total": 1,
+                                                        "unknown": 1 },
+                                          "wp:main": { "total": 1,
+                                                       "unknown": 1 } },
+                           "f_loop_assigns": { "alt-ergo": { "total": 1,
+                                                             "valid": 1,
+                                                             "rank": 22 },
+                                               "qed": { "total": 2,
+                                                        "valid": 2 },
+                                               "wp:main": { "total": 3,
+                                                            "valid": 3,
+                                                            "rank": 22 } },
+                           "f_ensures_Q": { "alt-ergo": { "total": 1,
+                                                          "valid": 1,
+                                                          "rank": 12 },
+                                            "wp:main": { "total": 1,
+                                                         "valid": 1,
+                                                         "rank": 12 } },
+                           "f_ensures_P_todo": { "alt-ergo": { "total": 1,
+                                                               "unknown": 1 },
+                                                 "wp:main": { "total": 1,
+                                                              "unknown": 1 } },
                            "wp:section": { "alt-ergo": { "total": 7,
                                                          "valid": 5,
                                                          "unknown": 2,
diff --git a/src/plugins/wp/tests/wp_acsl/base_offset.i.0.report.json b/src/plugins/wp/tests/wp_acsl/base_offset.i.0.report.json
index b89a535bdd006c8874e52faed199900d732a2999..00e56d6163eb0a3226a058f7518a6b315a27e255 100644
--- a/src/plugins/wp/tests/wp_acsl/base_offset.i.0.report.json
+++ b/src/plugins/wp/tests/wp_acsl/base_offset.i.0.report.json
@@ -1,16 +1,18 @@
 { "wp:global": { "alt-ergo": { "total": 1, "valid": 1, "rank": 3 },
                  "qed": { "total": 2, "valid": 2 },
                  "wp:main": { "total": 3, "valid": 3, "rank": 3 } },
-  "wp:functions": { "f": { "f_post_3": { "alt-ergo": { "total": 1,
-                                                       "valid": 1,
-                                                       "rank": 3 },
-                                         "wp:main": { "total": 1, "valid": 1,
-                                                      "rank": 3 } },
-                           "f_post_2": { "qed": { "total": 1, "valid": 1 },
-                                         "wp:main": { "total": 1,
-                                                      "valid": 1 } },
-                           "f_post": { "qed": { "total": 1, "valid": 1 },
-                                       "wp:main": { "total": 1, "valid": 1 } },
+  "wp:functions": { "f": { "f_ensures_3": { "alt-ergo": { "total": 1,
+                                                          "valid": 1,
+                                                          "rank": 3 },
+                                            "wp:main": { "total": 1,
+                                                         "valid": 1,
+                                                         "rank": 3 } },
+                           "f_ensures_2": { "qed": { "total": 1, "valid": 1 },
+                                            "wp:main": { "total": 1,
+                                                         "valid": 1 } },
+                           "f_ensures": { "qed": { "total": 1, "valid": 1 },
+                                          "wp:main": { "total": 1,
+                                                       "valid": 1 } },
                            "wp:section": { "alt-ergo": { "total": 1,
                                                          "valid": 1,
                                                          "rank": 3 },
diff --git a/src/plugins/wp/tests/wp_acsl/bitwise.i.0.report.json b/src/plugins/wp/tests/wp_acsl/bitwise.i.0.report.json
index c59febe4d379e2ecc4dfabe44e015b836b47ec35..65c0f07e3beca29399fdfe4d87c64f9a48c965b0 100644
--- a/src/plugins/wp/tests/wp_acsl/bitwise.i.0.report.json
+++ b/src/plugins/wp/tests/wp_acsl/bitwise.i.0.report.json
@@ -3,139 +3,150 @@
                  "qed": { "total": 25, "valid": 25 },
                  "wp:main": { "total": 29, "valid": 26, "unknown": 3,
                               "rank": 2 } },
-  "wp:functions": { "band": { "band_bit4_post_band6": { "qed": { "total": 1,
-                                                                 "valid": 1 },
-                                                        "wp:main": { "total": 1,
-                                                                    "valid": 1 } },
-                              "band_bit3_post_band5": { "qed": { "total": 1,
-                                                                 "valid": 1 },
-                                                        "wp:main": { "total": 1,
-                                                                    "valid": 1 } },
-                              "band_bit2_post_band4": { "qed": { "total": 1,
-                                                                 "valid": 1 },
-                                                        "wp:main": { "total": 1,
-                                                                    "valid": 1 } },
-                              "band_bit1_post_band3": { "qed": { "total": 1,
+  "wp:functions": { "band": { "band_bit4_ensures_band6": { "qed": { "total": 1,
+                                                                    "valid": 1 },
+                                                           "wp:main": 
+                                                             { "total": 1,
+                                                               "valid": 1 } },
+                              "band_bit3_ensures_band5": { "qed": { "total": 1,
+                                                                    "valid": 1 },
+                                                           "wp:main": 
+                                                             { "total": 1,
+                                                               "valid": 1 } },
+                              "band_bit2_ensures_band4": { "qed": { "total": 1,
+                                                                    "valid": 1 },
+                                                           "wp:main": 
+                                                             { "total": 1,
+                                                               "valid": 1 } },
+                              "band_bit1_ensures_band3": { "qed": { "total": 1,
+                                                                    "valid": 1 },
+                                                           "wp:main": 
+                                                             { "total": 1,
+                                                               "valid": 1 } },
+                              "band_bit0_ensures_band2": { "qed": { "total": 1,
+                                                                    "valid": 1 },
+                                                           "wp:main": 
+                                                             { "total": 1,
+                                                               "valid": 1 } },
+                              "band_bit0_ensures_band1": { "qed": { "total": 1,
+                                                                    "valid": 1 },
+                                                           "wp:main": 
+                                                             { "total": 1,
+                                                               "valid": 1 } },
+                              "band_ensures_band0": { "qed": { "total": 1,
+                                                               "valid": 1 },
+                                                      "wp:main": { "total": 1,
+                                                                   "valid": 1 } },
+                              "band_ensures": { "qed": { "total": 1,
+                                                         "valid": 1 },
+                                                "wp:main": { "total": 1,
+                                                             "valid": 1 } },
+                              "wp:section": { "qed": { "total": 8,
+                                                       "valid": 8 },
+                                              "wp:main": { "total": 8,
+                                                           "valid": 8 } } },
+                    "bor": { "bor_bit3_ensures_bor3": { "qed": { "total": 1,
                                                                  "valid": 1 },
                                                         "wp:main": { "total": 1,
                                                                     "valid": 1 } },
-                              "band_bit0_post_band2": { "qed": { "total": 1,
+                             "bor_bit2_ensures_bor2": { "qed": { "total": 1,
                                                                  "valid": 1 },
                                                         "wp:main": { "total": 1,
                                                                     "valid": 1 } },
-                              "band_bit0_post_band1": { "qed": { "total": 1,
+                             "bor_bit1_ensures_bor1": { "qed": { "total": 1,
                                                                  "valid": 1 },
                                                         "wp:main": { "total": 1,
                                                                     "valid": 1 } },
-                              "band_post_band0": { "qed": { "total": 1,
+                             "bor_ensures_bor0": { "qed": { "total": 1,
                                                             "valid": 1 },
                                                    "wp:main": { "total": 1,
                                                                 "valid": 1 } },
-                              "band_post": { "qed": { "total": 1,
-                                                      "valid": 1 },
-                                             "wp:main": { "total": 1,
-                                                          "valid": 1 } },
-                              "wp:section": { "qed": { "total": 8,
-                                                       "valid": 8 },
-                                              "wp:main": { "total": 8,
-                                                           "valid": 8 } } },
-                    "bor": { "bor_bit3_post_bor3": { "qed": { "total": 1,
-                                                              "valid": 1 },
-                                                     "wp:main": { "total": 1,
-                                                                  "valid": 1 } },
-                             "bor_bit2_post_bor2": { "qed": { "total": 1,
+                             "bor_ensures": { "qed": { "total": 1,
+                                                       "valid": 1 },
+                                              "wp:main": { "total": 1,
+                                                           "valid": 1 } },
+                             "wp:section": { "qed": { "total": 5,
+                                                      "valid": 5 },
+                                             "wp:main": { "total": 5,
+                                                          "valid": 5 } } },
+                    "bxor": { "bxor_bit2_ensures": { "qed": { "total": 1,
                                                               "valid": 1 },
                                                      "wp:main": { "total": 1,
                                                                   "valid": 1 } },
-                             "bor_bit1_post_bor1": { "qed": { "total": 1,
+                              "bxor_bit1_ensures": { "qed": { "total": 1,
                                                               "valid": 1 },
                                                      "wp:main": { "total": 1,
                                                                   "valid": 1 } },
-                             "bor_post_bor0": { "qed": { "total": 1,
+                              "bxor_ensures": { "qed": { "total": 1,
                                                          "valid": 1 },
                                                 "wp:main": { "total": 1,
                                                              "valid": 1 } },
-                             "bor_post": { "qed": { "total": 1, "valid": 1 },
-                                           "wp:main": { "total": 1,
-                                                        "valid": 1 } },
-                             "wp:section": { "qed": { "total": 5,
-                                                      "valid": 5 },
-                                             "wp:main": { "total": 5,
-                                                          "valid": 5 } } },
-                    "bxor": { "bxor_bit2_post": { "qed": { "total": 1,
-                                                           "valid": 1 },
-                                                  "wp:main": { "total": 1,
-                                                               "valid": 1 } },
-                              "bxor_bit1_post": { "qed": { "total": 1,
-                                                           "valid": 1 },
-                                                  "wp:main": { "total": 1,
-                                                               "valid": 1 } },
-                              "bxor_post": { "qed": { "total": 1,
-                                                      "valid": 1 },
-                                             "wp:main": { "total": 1,
-                                                          "valid": 1 } },
                               "wp:section": { "qed": { "total": 3,
                                                        "valid": 3 },
                                               "wp:main": { "total": 3,
                                                            "valid": 3 } } },
-                    "bnot": { "bnot_post": { "qed": { "total": 1,
-                                                      "valid": 1 },
-                                             "wp:main": { "total": 1,
-                                                          "valid": 1 } },
+                    "bnot": { "bnot_ensures": { "qed": { "total": 1,
+                                                         "valid": 1 },
+                                                "wp:main": { "total": 1,
+                                                             "valid": 1 } },
                               "wp:section": { "qed": { "total": 1,
                                                        "valid": 1 },
                                               "wp:main": { "total": 1,
                                                            "valid": 1 } } },
-                    "lshift": { "lshift_shift2_post_lsl3": { "qed": { "total": 1,
+                    "lshift": { "lshift_shift2_ensures_lsl3": { "qed": 
+                                                                  { "total": 1,
                                                                     "valid": 1 },
-                                                             "wp:main": 
-                                                               { "total": 1,
-                                                                 "valid": 1 } },
-                                "lshift_shift1_post_lsl2": { "qed": { "total": 1,
+                                                                "wp:main": 
+                                                                  { "total": 1,
+                                                                    "valid": 1 } },
+                                "lshift_shift1_ensures_lsl2": { "qed": 
+                                                                  { "total": 1,
                                                                     "valid": 1 },
-                                                             "wp:main": 
-                                                               { "total": 1,
-                                                                 "valid": 1 } },
-                                "lshift_shift1_post_lsl1": { "qed": { "total": 1,
+                                                                "wp:main": 
+                                                                  { "total": 1,
+                                                                    "valid": 1 } },
+                                "lshift_shift1_ensures_lsl1": { "qed": 
+                                                                  { "total": 1,
                                                                     "valid": 1 },
-                                                             "wp:main": 
-                                                               { "total": 1,
+                                                                "wp:main": 
+                                                                  { "total": 1,
+                                                                    "valid": 1 } },
+                                "lshift_ensures": { "qed": { "total": 1,
+                                                             "valid": 1 },
+                                                    "wp:main": { "total": 1,
                                                                  "valid": 1 } },
-                                "lshift_post": { "qed": { "total": 1,
-                                                          "valid": 1 },
-                                                 "wp:main": { "total": 1,
-                                                              "valid": 1 } },
                                 "wp:section": { "qed": { "total": 4,
                                                          "valid": 4 },
                                                 "wp:main": { "total": 4,
                                                              "valid": 4 } } },
-                    "rshift": { "rshift_shift1_post_lsr1": { "qed": { "total": 1,
+                    "rshift": { "rshift_shift1_ensures_lsr1": { "qed": 
+                                                                  { "total": 1,
                                                                     "valid": 1 },
-                                                             "wp:main": 
-                                                               { "total": 1,
+                                                                "wp:main": 
+                                                                  { "total": 1,
+                                                                    "valid": 1 } },
+                                "rshift_ensures": { "qed": { "total": 1,
+                                                             "valid": 1 },
+                                                    "wp:main": { "total": 1,
                                                                  "valid": 1 } },
-                                "rshift_post": { "qed": { "total": 1,
-                                                          "valid": 1 },
-                                                 "wp:main": { "total": 1,
-                                                              "valid": 1 } },
                                 "wp:section": { "qed": { "total": 2,
                                                          "valid": 2 },
                                                 "wp:main": { "total": 2,
                                                              "valid": 2 } } },
-                    "bor_bool": { "bor_bool_false_post": { "alt-ergo": 
-                                                             { "total": 1,
-                                                               "unknown": 1 },
-                                                           "wp:main": 
-                                                             { "total": 1,
-                                                               "unknown": 1 } },
-                                  "bor_bool_true_post": { "alt-ergo": 
-                                                            { "total": 1,
-                                                              "valid": 1,
-                                                              "rank": 2 },
-                                                          "wp:main": 
-                                                            { "total": 1,
-                                                              "valid": 1,
-                                                              "rank": 2 } },
+                    "bor_bool": { "bor_bool_false_ensures": { "alt-ergo": 
+                                                                { "total": 1,
+                                                                  "unknown": 1 },
+                                                              "wp:main": 
+                                                                { "total": 1,
+                                                                  "unknown": 1 } },
+                                  "bor_bool_true_ensures": { "alt-ergo": 
+                                                               { "total": 1,
+                                                                 "valid": 1,
+                                                                 "rank": 2 },
+                                                             "wp:main": 
+                                                               { "total": 1,
+                                                                 "valid": 1,
+                                                                 "rank": 2 } },
                                   "wp:section": { "alt-ergo": { "total": 2,
                                                                 "valid": 1,
                                                                 "unknown": 1,
@@ -144,17 +155,18 @@
                                                                "valid": 1,
                                                                "unknown": 1,
                                                                "rank": 2 } } },
-                    "band_bool": { "band_bool_false_post": { "alt-ergo": 
-                                                               { "total": 1,
-                                                                 "unknown": 1 },
-                                                             "wp:main": 
-                                                               { "total": 1,
-                                                                 "unknown": 1 } },
-                                   "band_bool_true_post": { "qed": { "total": 1,
-                                                                    "valid": 1 },
-                                                            "wp:main": 
-                                                              { "total": 1,
-                                                                "valid": 1 } },
+                    "band_bool": { "band_bool_false_ensures": { "alt-ergo": 
+                                                                  { "total": 1,
+                                                                    "unknown": 1 },
+                                                                "wp:main": 
+                                                                  { "total": 1,
+                                                                    "unknown": 1 } },
+                                   "band_bool_true_ensures": { "qed": 
+                                                                 { "total": 1,
+                                                                   "valid": 1 },
+                                                               "wp:main": 
+                                                                 { "total": 1,
+                                                                   "valid": 1 } },
                                    "wp:section": { "alt-ergo": { "total": 1,
                                                                  "unknown": 1 },
                                                    "qed": { "total": 1,
@@ -162,17 +174,18 @@
                                                    "wp:main": { "total": 2,
                                                                 "valid": 1,
                                                                 "unknown": 1 } } },
-                    "bxor_bool": { "bxor_bool_false_post": { "alt-ergo": 
-                                                               { "total": 1,
-                                                                 "unknown": 1 },
-                                                             "wp:main": 
-                                                               { "total": 1,
-                                                                 "unknown": 1 } },
-                                   "bxor_bool_true_post": { "qed": { "total": 1,
-                                                                    "valid": 1 },
-                                                            "wp:main": 
-                                                              { "total": 1,
-                                                                "valid": 1 } },
+                    "bxor_bool": { "bxor_bool_false_ensures": { "alt-ergo": 
+                                                                  { "total": 1,
+                                                                    "unknown": 1 },
+                                                                "wp:main": 
+                                                                  { "total": 1,
+                                                                    "unknown": 1 } },
+                                   "bxor_bool_true_ensures": { "qed": 
+                                                                 { "total": 1,
+                                                                   "valid": 1 },
+                                                               "wp:main": 
+                                                                 { "total": 1,
+                                                                   "valid": 1 } },
                                    "wp:section": { "alt-ergo": { "total": 1,
                                                                  "unknown": 1 },
                                                    "qed": { "total": 1,
diff --git a/src/plugins/wp/tests/wp_acsl/bitwise2.i b/src/plugins/wp/tests/wp_acsl/bitwise2.i
new file mode 100644
index 0000000000000000000000000000000000000000..55db7e757ca41c4394e36a5a416685c4733d42fb
--- /dev/null
+++ b/src/plugins/wp/tests/wp_acsl/bitwise2.i
@@ -0,0 +1,25 @@
+
+//@ ensures \result == ((unsigned)(A & (0x7FFFFE00 >> 9))) ;
+unsigned job1(unsigned A) {
+  return A & 0x7FFFFE00 >> 9 ;
+}
+
+//@ ensures \result == (A & 0x7FFFFE00 >> 9) ;
+unsigned job1bis(unsigned A) {
+  return A & 0x7FFFFE00 >> 9 ;
+}
+
+//@ ensures \result == (((unsigned)(A & 0x7FFFFE00)) >> 9) ;
+unsigned job2(unsigned A) {
+  return (A & 0x7FFFFE00) >> 9 ;
+}
+
+//@ ensures \result == ((unsigned)(A & (0x7FFFFE00 >> 9))) ;
+unsigned job3(unsigned A) {
+  return A & (0x7FFFFE00 >> 9) ;
+}
+
+//@ ensures \result == (A & (unsigned long)(0x7FFFFE00ul >> 9)) ;
+unsigned job4(unsigned A) {
+  return A & (0x7FFFFE00 >> 9) ;
+}
diff --git a/src/plugins/wp/tests/wp_acsl/bitwise2.i.0.report.json b/src/plugins/wp/tests/wp_acsl/bitwise2.i.0.report.json
new file mode 100644
index 0000000000000000000000000000000000000000..80f3747514082652f99e49c34a3b92ac8f7c16f2
--- /dev/null
+++ b/src/plugins/wp/tests/wp_acsl/bitwise2.i.0.report.json
@@ -0,0 +1,42 @@
+{ "wp:global": { "qed": { "total": 5, "valid": 5 },
+                 "wp:main": { "total": 5, "valid": 5 } },
+  "wp:functions": { "job1": { "job1_ensures": { "qed": { "total": 1,
+                                                         "valid": 1 },
+                                                "wp:main": { "total": 1,
+                                                             "valid": 1 } },
+                              "wp:section": { "qed": { "total": 1,
+                                                       "valid": 1 },
+                                              "wp:main": { "total": 1,
+                                                           "valid": 1 } } },
+                    "job1bis": { "job1bis_ensures": { "qed": { "total": 1,
+                                                               "valid": 1 },
+                                                      "wp:main": { "total": 1,
+                                                                   "valid": 1 } },
+                                 "wp:section": { "qed": { "total": 1,
+                                                          "valid": 1 },
+                                                 "wp:main": { "total": 1,
+                                                              "valid": 1 } } },
+                    "job2": { "job2_ensures": { "qed": { "total": 1,
+                                                         "valid": 1 },
+                                                "wp:main": { "total": 1,
+                                                             "valid": 1 } },
+                              "wp:section": { "qed": { "total": 1,
+                                                       "valid": 1 },
+                                              "wp:main": { "total": 1,
+                                                           "valid": 1 } } },
+                    "job3": { "job3_ensures": { "qed": { "total": 1,
+                                                         "valid": 1 },
+                                                "wp:main": { "total": 1,
+                                                             "valid": 1 } },
+                              "wp:section": { "qed": { "total": 1,
+                                                       "valid": 1 },
+                                              "wp:main": { "total": 1,
+                                                           "valid": 1 } } },
+                    "job4": { "job4_ensures": { "qed": { "total": 1,
+                                                         "valid": 1 },
+                                                "wp:main": { "total": 1,
+                                                             "valid": 1 } },
+                              "wp:section": { "qed": { "total": 1,
+                                                       "valid": 1 },
+                                              "wp:main": { "total": 1,
+                                                           "valid": 1 } } } } }
diff --git a/src/plugins/wp/tests/wp_acsl/block_length.i.0.report.json b/src/plugins/wp/tests/wp_acsl/block_length.i.0.report.json
index fb673ed5ab9532f8584ec65e285bd2a3be38b28c..20266136120270c069fde403de99a3b22be7845e 100644
--- a/src/plugins/wp/tests/wp_acsl/block_length.i.0.report.json
+++ b/src/plugins/wp/tests/wp_acsl/block_length.i.0.report.json
@@ -1,40 +1,45 @@
 { "wp:global": { "qed": { "total": 10, "valid": 10 },
                  "wp:main": { "total": 10, "valid": 10 } },
-  "wp:functions": { "f": { "f_post_Pts1": { "qed": { "total": 1, "valid": 1 },
-                                            "wp:main": { "total": 1,
-                                                         "valid": 1 } },
-                           "f_post_Pmat12": { "qed": { "total": 1,
+  "wp:functions": { "f": { "f_ensures_Pts1": { "qed": { "total": 1,
+                                                        "valid": 1 },
+                                               "wp:main": { "total": 1,
+                                                            "valid": 1 } },
+                           "f_ensures_Pmat12": { "qed": { "total": 1,
+                                                          "valid": 1 },
+                                                 "wp:main": { "total": 1,
+                                                              "valid": 1 } },
+                           "f_ensures_Pt1": { "qed": { "total": 1,
                                                        "valid": 1 },
                                               "wp:main": { "total": 1,
                                                            "valid": 1 } },
-                           "f_post_Pt1": { "qed": { "total": 1, "valid": 1 },
-                                           "wp:main": { "total": 1,
-                                                        "valid": 1 } },
-                           "f_post_Pts": { "qed": { "total": 1, "valid": 1 },
-                                           "wp:main": { "total": 1,
-                                                        "valid": 1 } },
-                           "f_post_Ps": { "qed": { "total": 1, "valid": 1 },
-                                          "wp:main": { "total": 1,
-                                                       "valid": 1 } },
-                           "f_post_Pmat2": { "qed": { "total": 1,
-                                                      "valid": 1 },
-                                             "wp:main": { "total": 1,
-                                                          "valid": 1 } },
-                           "f_post_Psiz2": { "qed": { "total": 1,
-                                                      "valid": 1 },
-                                             "wp:main": { "total": 1,
-                                                          "valid": 1 } },
-                           "f_post_Pmat1": { "qed": { "total": 1,
+                           "f_ensures_Pts": { "qed": { "total": 1,
+                                                       "valid": 1 },
+                                              "wp:main": { "total": 1,
+                                                           "valid": 1 } },
+                           "f_ensures_Ps": { "qed": { "total": 1,
                                                       "valid": 1 },
                                              "wp:main": { "total": 1,
                                                           "valid": 1 } },
-                           "f_post_Psiz1": { "qed": { "total": 1,
+                           "f_ensures_Pmat2": { "qed": { "total": 1,
+                                                         "valid": 1 },
+                                                "wp:main": { "total": 1,
+                                                             "valid": 1 } },
+                           "f_ensures_Psiz2": { "qed": { "total": 1,
+                                                         "valid": 1 },
+                                                "wp:main": { "total": 1,
+                                                             "valid": 1 } },
+                           "f_ensures_Pmat1": { "qed": { "total": 1,
+                                                         "valid": 1 },
+                                                "wp:main": { "total": 1,
+                                                             "valid": 1 } },
+                           "f_ensures_Psiz1": { "qed": { "total": 1,
+                                                         "valid": 1 },
+                                                "wp:main": { "total": 1,
+                                                             "valid": 1 } },
+                           "f_ensures_Pt": { "qed": { "total": 1,
                                                       "valid": 1 },
                                              "wp:main": { "total": 1,
                                                           "valid": 1 } },
-                           "f_post_Pt": { "qed": { "total": 1, "valid": 1 },
-                                          "wp:main": { "total": 1,
-                                                       "valid": 1 } },
                            "wp:section": { "qed": { "total": 10,
                                                     "valid": 10 },
                                            "wp:main": { "total": 10,
diff --git a/src/plugins/wp/tests/wp_acsl/cnf.i.0.report.json b/src/plugins/wp/tests/wp_acsl/cnf.i.0.report.json
index 67e7a7e8eb88868ae70419c0b6878abdf09e6605..02bbe2c305041e6d908733978e4dc5c0bf4eb7cf 100644
--- a/src/plugins/wp/tests/wp_acsl/cnf.i.0.report.json
+++ b/src/plugins/wp/tests/wp_acsl/cnf.i.0.report.json
@@ -1,231 +1,242 @@
 { "wp:global": { "alt-ergo": { "total": 32, "valid": 32, "rank": 42 },
                  "qed": { "total": 11, "valid": 11 },
                  "wp:main": { "total": 43, "valid": 43, "rank": 42 } },
-  "wp:functions": { "f": { "f_post_e2": { "alt-ergo": { "total": 1,
-                                                        "valid": 1,
-                                                        "rank": 1 },
-                                          "wp:main": { "total": 1,
-                                                       "valid": 1,
-                                                       "rank": 1 } },
-                           "f_post_e1": { "alt-ergo": { "total": 1,
-                                                        "valid": 1,
-                                                        "rank": 1 },
-                                          "wp:main": { "total": 1,
-                                                       "valid": 1,
-                                                       "rank": 1 } },
-                           "f_post_e0": { "alt-ergo": { "total": 1,
-                                                        "valid": 1,
-                                                        "rank": 1 },
-                                          "wp:main": { "total": 1,
-                                                       "valid": 1,
-                                                       "rank": 1 } },
-                           "f_post_d9": { "alt-ergo": { "total": 1,
-                                                        "valid": 1,
-                                                        "rank": 6 },
-                                          "wp:main": { "total": 1,
-                                                       "valid": 1,
-                                                       "rank": 6 } },
-                           "f_post_d8": { "alt-ergo": { "total": 1,
-                                                        "valid": 1,
-                                                        "rank": 2 },
-                                          "wp:main": { "total": 1,
-                                                       "valid": 1,
-                                                       "rank": 2 } },
-                           "f_post_d7": { "alt-ergo": { "total": 1,
-                                                        "valid": 1,
-                                                        "rank": 2 },
-                                          "wp:main": { "total": 1,
-                                                       "valid": 1,
-                                                       "rank": 2 } },
-                           "f_post_d6": { "alt-ergo": { "total": 1,
-                                                        "valid": 1,
-                                                        "rank": 5 },
-                                          "wp:main": { "total": 1,
-                                                       "valid": 1,
-                                                       "rank": 5 } },
-                           "f_post_d5": { "alt-ergo": { "total": 1,
-                                                        "valid": 1,
-                                                        "rank": 3 },
-                                          "wp:main": { "total": 1,
-                                                       "valid": 1,
-                                                       "rank": 3 } },
-                           "f_post_d4": { "alt-ergo": { "total": 1,
-                                                        "valid": 1,
-                                                        "rank": 5 },
-                                          "wp:main": { "total": 1,
-                                                       "valid": 1,
-                                                       "rank": 5 } },
-                           "f_post_d3": { "alt-ergo": { "total": 1,
-                                                        "valid": 1,
-                                                        "rank": 5 },
-                                          "wp:main": { "total": 1,
-                                                       "valid": 1,
-                                                       "rank": 5 } },
-                           "f_post_d2": { "alt-ergo": { "total": 1,
-                                                        "valid": 1,
-                                                        "rank": 4 },
-                                          "wp:main": { "total": 1,
-                                                       "valid": 1,
-                                                       "rank": 4 } },
-                           "f_post_d1": { "alt-ergo": { "total": 1,
-                                                        "valid": 1,
-                                                        "rank": 4 },
-                                          "wp:main": { "total": 1,
-                                                       "valid": 1,
-                                                       "rank": 4 } },
-                           "f_post_d0": { "alt-ergo": { "total": 1,
-                                                        "valid": 1,
-                                                        "rank": 5 },
-                                          "wp:main": { "total": 1,
-                                                       "valid": 1,
-                                                       "rank": 5 } },
-                           "f_post_c9": { "alt-ergo": { "total": 1,
-                                                        "valid": 1,
-                                                        "rank": 0 },
-                                          "wp:main": { "total": 1,
-                                                       "valid": 1,
-                                                       "rank": 0 } },
-                           "f_post_c8": { "alt-ergo": { "total": 1,
-                                                        "valid": 1,
-                                                        "rank": 0 },
-                                          "wp:main": { "total": 1,
-                                                       "valid": 1,
-                                                       "rank": 0 } },
-                           "f_post_c7": { "alt-ergo": { "total": 1,
-                                                        "valid": 1,
-                                                        "rank": 12 },
-                                          "wp:main": { "total": 1,
-                                                       "valid": 1,
-                                                       "rank": 12 } },
-                           "f_post_c6": { "alt-ergo": { "total": 1,
-                                                        "valid": 1,
-                                                        "rank": 9 },
-                                          "wp:main": { "total": 1,
-                                                       "valid": 1,
-                                                       "rank": 9 } },
-                           "f_post_c5": { "alt-ergo": { "total": 1,
-                                                        "valid": 1,
-                                                        "rank": 12 },
-                                          "wp:main": { "total": 1,
-                                                       "valid": 1,
-                                                       "rank": 12 } },
-                           "f_post_c4": { "alt-ergo": { "total": 1,
-                                                        "valid": 1,
-                                                        "rank": 3 },
-                                          "wp:main": { "total": 1,
-                                                       "valid": 1,
-                                                       "rank": 3 } },
-                           "f_post_c3": { "alt-ergo": { "total": 1,
-                                                        "valid": 1,
-                                                        "rank": 3 },
-                                          "wp:main": { "total": 1,
-                                                       "valid": 1,
-                                                       "rank": 3 } },
-                           "f_post_c2": { "alt-ergo": { "total": 1,
-                                                        "valid": 1,
-                                                        "rank": 2 },
-                                          "wp:main": { "total": 1,
-                                                       "valid": 1,
-                                                       "rank": 2 } },
-                           "f_post_c1": { "qed": { "total": 1, "valid": 1 },
-                                          "wp:main": { "total": 1,
-                                                       "valid": 1 } },
-                           "f_post_c0": { "alt-ergo": { "total": 1,
-                                                        "valid": 1,
-                                                        "rank": 3 },
-                                          "wp:main": { "total": 1,
-                                                       "valid": 1,
-                                                       "rank": 3 } },
-                           "f_post_b9": { "qed": { "total": 1, "valid": 1 },
-                                          "wp:main": { "total": 1,
-                                                       "valid": 1 } },
-                           "f_post_b8": { "qed": { "total": 1, "valid": 1 },
-                                          "wp:main": { "total": 1,
-                                                       "valid": 1 } },
-                           "f_post_b7": { "qed": { "total": 1, "valid": 1 },
-                                          "wp:main": { "total": 1,
-                                                       "valid": 1 } },
-                           "f_post_b6": { "qed": { "total": 1, "valid": 1 },
-                                          "wp:main": { "total": 1,
-                                                       "valid": 1 } },
-                           "f_post_b5": { "qed": { "total": 1, "valid": 1 },
-                                          "wp:main": { "total": 1,
-                                                       "valid": 1 } },
-                           "f_post_b4": { "alt-ergo": { "total": 1,
-                                                        "valid": 1,
-                                                        "rank": 0 },
-                                          "wp:main": { "total": 1,
-                                                       "valid": 1,
-                                                       "rank": 0 } },
-                           "f_post_b3": { "alt-ergo": { "total": 1,
-                                                        "valid": 1,
-                                                        "rank": 0 },
-                                          "wp:main": { "total": 1,
-                                                       "valid": 1,
-                                                       "rank": 0 } },
-                           "f_post_b2": { "alt-ergo": { "total": 1,
-                                                        "valid": 1,
-                                                        "rank": 0 },
-                                          "wp:main": { "total": 1,
-                                                       "valid": 1,
-                                                       "rank": 0 } },
-                           "f_post_b1": { "qed": { "total": 1, "valid": 1 },
-                                          "wp:main": { "total": 1,
-                                                       "valid": 1 } },
-                           "f_post_b0": { "qed": { "total": 1, "valid": 1 },
-                                          "wp:main": { "total": 1,
-                                                       "valid": 1 } },
-                           "f_post_a9": { "alt-ergo": { "total": 1,
-                                                        "valid": 1,
-                                                        "rank": 42 },
-                                          "wp:main": { "total": 1,
-                                                       "valid": 1,
-                                                       "rank": 42 } },
-                           "f_post_a8": { "alt-ergo": { "total": 1,
-                                                        "valid": 1,
-                                                        "rank": 22 },
-                                          "wp:main": { "total": 1,
-                                                       "valid": 1,
-                                                       "rank": 22 } },
-                           "f_post_a7": { "alt-ergo": { "total": 1,
-                                                        "valid": 1,
-                                                        "rank": 13 },
-                                          "wp:main": { "total": 1,
-                                                       "valid": 1,
-                                                       "rank": 13 } },
-                           "f_post_a6": { "alt-ergo": { "total": 1,
-                                                        "valid": 1,
-                                                        "rank": 4 },
-                                          "wp:main": { "total": 1,
-                                                       "valid": 1,
-                                                       "rank": 4 } },
-                           "f_post_a5": { "alt-ergo": { "total": 1,
-                                                        "valid": 1,
-                                                        "rank": 7 },
-                                          "wp:main": { "total": 1,
-                                                       "valid": 1,
-                                                       "rank": 7 } },
-                           "f_post_a4": { "alt-ergo": { "total": 1,
-                                                        "valid": 1,
-                                                        "rank": 0 },
-                                          "wp:main": { "total": 1,
-                                                       "valid": 1,
-                                                       "rank": 0 } },
-                           "f_post_a3": { "alt-ergo": { "total": 1,
-                                                        "valid": 1,
-                                                        "rank": 0 },
-                                          "wp:main": { "total": 1,
-                                                       "valid": 1,
-                                                       "rank": 0 } },
-                           "f_post_a2": { "qed": { "total": 1, "valid": 1 },
-                                          "wp:main": { "total": 1,
-                                                       "valid": 1 } },
-                           "f_post_a1": { "qed": { "total": 1, "valid": 1 },
-                                          "wp:main": { "total": 1,
-                                                       "valid": 1 } },
-                           "f_post_a0": { "qed": { "total": 1, "valid": 1 },
-                                          "wp:main": { "total": 1,
-                                                       "valid": 1 } },
+  "wp:functions": { "f": { "f_ensures_e2": { "alt-ergo": { "total": 1,
+                                                           "valid": 1,
+                                                           "rank": 1 },
+                                             "wp:main": { "total": 1,
+                                                          "valid": 1,
+                                                          "rank": 1 } },
+                           "f_ensures_e1": { "alt-ergo": { "total": 1,
+                                                           "valid": 1,
+                                                           "rank": 1 },
+                                             "wp:main": { "total": 1,
+                                                          "valid": 1,
+                                                          "rank": 1 } },
+                           "f_ensures_e0": { "alt-ergo": { "total": 1,
+                                                           "valid": 1,
+                                                           "rank": 1 },
+                                             "wp:main": { "total": 1,
+                                                          "valid": 1,
+                                                          "rank": 1 } },
+                           "f_ensures_d9": { "alt-ergo": { "total": 1,
+                                                           "valid": 1,
+                                                           "rank": 6 },
+                                             "wp:main": { "total": 1,
+                                                          "valid": 1,
+                                                          "rank": 6 } },
+                           "f_ensures_d8": { "alt-ergo": { "total": 1,
+                                                           "valid": 1,
+                                                           "rank": 2 },
+                                             "wp:main": { "total": 1,
+                                                          "valid": 1,
+                                                          "rank": 2 } },
+                           "f_ensures_d7": { "alt-ergo": { "total": 1,
+                                                           "valid": 1,
+                                                           "rank": 2 },
+                                             "wp:main": { "total": 1,
+                                                          "valid": 1,
+                                                          "rank": 2 } },
+                           "f_ensures_d6": { "alt-ergo": { "total": 1,
+                                                           "valid": 1,
+                                                           "rank": 5 },
+                                             "wp:main": { "total": 1,
+                                                          "valid": 1,
+                                                          "rank": 5 } },
+                           "f_ensures_d5": { "alt-ergo": { "total": 1,
+                                                           "valid": 1,
+                                                           "rank": 3 },
+                                             "wp:main": { "total": 1,
+                                                          "valid": 1,
+                                                          "rank": 3 } },
+                           "f_ensures_d4": { "alt-ergo": { "total": 1,
+                                                           "valid": 1,
+                                                           "rank": 5 },
+                                             "wp:main": { "total": 1,
+                                                          "valid": 1,
+                                                          "rank": 5 } },
+                           "f_ensures_d3": { "alt-ergo": { "total": 1,
+                                                           "valid": 1,
+                                                           "rank": 5 },
+                                             "wp:main": { "total": 1,
+                                                          "valid": 1,
+                                                          "rank": 5 } },
+                           "f_ensures_d2": { "alt-ergo": { "total": 1,
+                                                           "valid": 1,
+                                                           "rank": 4 },
+                                             "wp:main": { "total": 1,
+                                                          "valid": 1,
+                                                          "rank": 4 } },
+                           "f_ensures_d1": { "alt-ergo": { "total": 1,
+                                                           "valid": 1,
+                                                           "rank": 4 },
+                                             "wp:main": { "total": 1,
+                                                          "valid": 1,
+                                                          "rank": 4 } },
+                           "f_ensures_d0": { "alt-ergo": { "total": 1,
+                                                           "valid": 1,
+                                                           "rank": 5 },
+                                             "wp:main": { "total": 1,
+                                                          "valid": 1,
+                                                          "rank": 5 } },
+                           "f_ensures_c9": { "alt-ergo": { "total": 1,
+                                                           "valid": 1,
+                                                           "rank": 0 },
+                                             "wp:main": { "total": 1,
+                                                          "valid": 1,
+                                                          "rank": 0 } },
+                           "f_ensures_c8": { "alt-ergo": { "total": 1,
+                                                           "valid": 1,
+                                                           "rank": 0 },
+                                             "wp:main": { "total": 1,
+                                                          "valid": 1,
+                                                          "rank": 0 } },
+                           "f_ensures_c7": { "alt-ergo": { "total": 1,
+                                                           "valid": 1,
+                                                           "rank": 12 },
+                                             "wp:main": { "total": 1,
+                                                          "valid": 1,
+                                                          "rank": 12 } },
+                           "f_ensures_c6": { "alt-ergo": { "total": 1,
+                                                           "valid": 1,
+                                                           "rank": 9 },
+                                             "wp:main": { "total": 1,
+                                                          "valid": 1,
+                                                          "rank": 9 } },
+                           "f_ensures_c5": { "alt-ergo": { "total": 1,
+                                                           "valid": 1,
+                                                           "rank": 12 },
+                                             "wp:main": { "total": 1,
+                                                          "valid": 1,
+                                                          "rank": 12 } },
+                           "f_ensures_c4": { "alt-ergo": { "total": 1,
+                                                           "valid": 1,
+                                                           "rank": 3 },
+                                             "wp:main": { "total": 1,
+                                                          "valid": 1,
+                                                          "rank": 3 } },
+                           "f_ensures_c3": { "alt-ergo": { "total": 1,
+                                                           "valid": 1,
+                                                           "rank": 3 },
+                                             "wp:main": { "total": 1,
+                                                          "valid": 1,
+                                                          "rank": 3 } },
+                           "f_ensures_c2": { "alt-ergo": { "total": 1,
+                                                           "valid": 1,
+                                                           "rank": 2 },
+                                             "wp:main": { "total": 1,
+                                                          "valid": 1,
+                                                          "rank": 2 } },
+                           "f_ensures_c1": { "qed": { "total": 1,
+                                                      "valid": 1 },
+                                             "wp:main": { "total": 1,
+                                                          "valid": 1 } },
+                           "f_ensures_c0": { "alt-ergo": { "total": 1,
+                                                           "valid": 1,
+                                                           "rank": 3 },
+                                             "wp:main": { "total": 1,
+                                                          "valid": 1,
+                                                          "rank": 3 } },
+                           "f_ensures_b9": { "qed": { "total": 1,
+                                                      "valid": 1 },
+                                             "wp:main": { "total": 1,
+                                                          "valid": 1 } },
+                           "f_ensures_b8": { "qed": { "total": 1,
+                                                      "valid": 1 },
+                                             "wp:main": { "total": 1,
+                                                          "valid": 1 } },
+                           "f_ensures_b7": { "qed": { "total": 1,
+                                                      "valid": 1 },
+                                             "wp:main": { "total": 1,
+                                                          "valid": 1 } },
+                           "f_ensures_b6": { "qed": { "total": 1,
+                                                      "valid": 1 },
+                                             "wp:main": { "total": 1,
+                                                          "valid": 1 } },
+                           "f_ensures_b5": { "qed": { "total": 1,
+                                                      "valid": 1 },
+                                             "wp:main": { "total": 1,
+                                                          "valid": 1 } },
+                           "f_ensures_b4": { "alt-ergo": { "total": 1,
+                                                           "valid": 1,
+                                                           "rank": 0 },
+                                             "wp:main": { "total": 1,
+                                                          "valid": 1,
+                                                          "rank": 0 } },
+                           "f_ensures_b3": { "alt-ergo": { "total": 1,
+                                                           "valid": 1,
+                                                           "rank": 0 },
+                                             "wp:main": { "total": 1,
+                                                          "valid": 1,
+                                                          "rank": 0 } },
+                           "f_ensures_b2": { "alt-ergo": { "total": 1,
+                                                           "valid": 1,
+                                                           "rank": 0 },
+                                             "wp:main": { "total": 1,
+                                                          "valid": 1,
+                                                          "rank": 0 } },
+                           "f_ensures_b1": { "qed": { "total": 1,
+                                                      "valid": 1 },
+                                             "wp:main": { "total": 1,
+                                                          "valid": 1 } },
+                           "f_ensures_b0": { "qed": { "total": 1,
+                                                      "valid": 1 },
+                                             "wp:main": { "total": 1,
+                                                          "valid": 1 } },
+                           "f_ensures_a9": { "alt-ergo": { "total": 1,
+                                                           "valid": 1,
+                                                           "rank": 42 },
+                                             "wp:main": { "total": 1,
+                                                          "valid": 1,
+                                                          "rank": 42 } },
+                           "f_ensures_a8": { "alt-ergo": { "total": 1,
+                                                           "valid": 1,
+                                                           "rank": 22 },
+                                             "wp:main": { "total": 1,
+                                                          "valid": 1,
+                                                          "rank": 22 } },
+                           "f_ensures_a7": { "alt-ergo": { "total": 1,
+                                                           "valid": 1,
+                                                           "rank": 13 },
+                                             "wp:main": { "total": 1,
+                                                          "valid": 1,
+                                                          "rank": 13 } },
+                           "f_ensures_a6": { "alt-ergo": { "total": 1,
+                                                           "valid": 1,
+                                                           "rank": 4 },
+                                             "wp:main": { "total": 1,
+                                                          "valid": 1,
+                                                          "rank": 4 } },
+                           "f_ensures_a5": { "alt-ergo": { "total": 1,
+                                                           "valid": 1,
+                                                           "rank": 7 },
+                                             "wp:main": { "total": 1,
+                                                          "valid": 1,
+                                                          "rank": 7 } },
+                           "f_ensures_a4": { "alt-ergo": { "total": 1,
+                                                           "valid": 1,
+                                                           "rank": 0 },
+                                             "wp:main": { "total": 1,
+                                                          "valid": 1,
+                                                          "rank": 0 } },
+                           "f_ensures_a3": { "alt-ergo": { "total": 1,
+                                                           "valid": 1,
+                                                           "rank": 0 },
+                                             "wp:main": { "total": 1,
+                                                          "valid": 1,
+                                                          "rank": 0 } },
+                           "f_ensures_a2": { "qed": { "total": 1,
+                                                      "valid": 1 },
+                                             "wp:main": { "total": 1,
+                                                          "valid": 1 } },
+                           "f_ensures_a1": { "qed": { "total": 1,
+                                                      "valid": 1 },
+                                             "wp:main": { "total": 1,
+                                                          "valid": 1 } },
+                           "f_ensures_a0": { "qed": { "total": 1,
+                                                      "valid": 1 },
+                                             "wp:main": { "total": 1,
+                                                          "valid": 1 } },
                            "wp:section": { "alt-ergo": { "total": 32,
                                                          "valid": 32,
                                                          "rank": 42 },
diff --git a/src/plugins/wp/tests/wp_acsl/div_mod.i.0.report.json b/src/plugins/wp/tests/wp_acsl/div_mod.i.0.report.json
index a6918d2a8a054472d9f3d9a8b4649459216a1972..bd91b0af271e22d5b60297c2d1082bc1896541c7 100644
--- a/src/plugins/wp/tests/wp_acsl/div_mod.i.0.report.json
+++ b/src/plugins/wp/tests/wp_acsl/div_mod.i.0.report.json
@@ -1,140 +1,168 @@
-{ "wp:global": { "alt-ergo": { "total": 22, "valid": 22, "rank": 2 },
-                 "wp:main": { "total": 22, "valid": 22, "rank": 2 } },
-  "wp:functions": { "f": { "f_post_sm3_mod_neg_neg": { "alt-ergo": { "total": 1,
-                                                                    "valid": 1,
-                                                                    "rank": 2 },
-                                                       "wp:main": { "total": 1,
-                                                                    "valid": 1,
-                                                                    "rank": 2 } },
-                           "f_post_sm2_mod_pos_neg": { "alt-ergo": { "total": 1,
-                                                                    "valid": 1,
-                                                                    "rank": 2 },
-                                                       "wp:main": { "total": 1,
-                                                                    "valid": 1,
-                                                                    "rank": 2 } },
-                           "f_post_sm1_mod_neg_pos": { "alt-ergo": { "total": 1,
-                                                                    "valid": 1,
-                                                                    "rank": 2 },
-                                                       "wp:main": { "total": 1,
-                                                                    "valid": 1,
-                                                                    "rank": 2 } },
-                           "f_post_sm0_mod_pos_pos": { "alt-ergo": { "total": 1,
-                                                                    "valid": 1,
-                                                                    "rank": 2 },
-                                                       "wp:main": { "total": 1,
-                                                                    "valid": 1,
-                                                                    "rank": 2 } },
-                           "f_post_m6_mod_0_x": { "alt-ergo": { "total": 1,
-                                                                "valid": 1,
-                                                                "rank": 2 },
-                                                  "wp:main": { "total": 1,
-                                                               "valid": 1,
-                                                               "rank": 2 } },
-                           "f_post_m5_mod_x_minus1": { "alt-ergo": { "total": 1,
-                                                                    "valid": 1,
-                                                                    "rank": 2 },
-                                                       "wp:main": { "total": 1,
-                                                                    "valid": 1,
-                                                                    "rank": 2 } },
-                           "f_post_m4_mod_x_1": { "alt-ergo": { "total": 1,
-                                                                "valid": 1,
-                                                                "rank": 1 },
-                                                  "wp:main": { "total": 1,
-                                                               "valid": 1,
-                                                               "rank": 1 } },
-                           "f_post_m3_mod_neg_neg": { "alt-ergo": { "total": 1,
-                                                                    "valid": 1,
-                                                                    "rank": 1 },
-                                                      "wp:main": { "total": 1,
+{ "wp:global": { "alt-ergo": { "total": 22, "valid": 22, "rank": 3 },
+                 "wp:main": { "total": 22, "valid": 22, "rank": 3 } },
+  "wp:functions": { "f": { "f_ensures_sm3_mod_neg_neg": { "alt-ergo": 
+                                                            { "total": 1,
+                                                              "valid": 1,
+                                                              "rank": 2 },
+                                                          "wp:main": 
+                                                            { "total": 1,
+                                                              "valid": 1,
+                                                              "rank": 2 } },
+                           "f_ensures_sm2_mod_pos_neg": { "alt-ergo": 
+                                                            { "total": 1,
+                                                              "valid": 1,
+                                                              "rank": 2 },
+                                                          "wp:main": 
+                                                            { "total": 1,
+                                                              "valid": 1,
+                                                              "rank": 2 } },
+                           "f_ensures_sm1_mod_neg_pos": { "alt-ergo": 
+                                                            { "total": 1,
+                                                              "valid": 1,
+                                                              "rank": 2 },
+                                                          "wp:main": 
+                                                            { "total": 1,
+                                                              "valid": 1,
+                                                              "rank": 2 } },
+                           "f_ensures_sm0_mod_pos_pos": { "alt-ergo": 
+                                                            { "total": 1,
+                                                              "valid": 1,
+                                                              "rank": 2 },
+                                                          "wp:main": 
+                                                            { "total": 1,
+                                                              "valid": 1,
+                                                              "rank": 2 } },
+                           "f_ensures_m6_mod_0_x": { "alt-ergo": { "total": 1,
                                                                    "valid": 1,
-                                                                   "rank": 1 } },
-                           "f_post_m2_mod_pos_neg": { "alt-ergo": { "total": 1,
-                                                                    "valid": 1,
-                                                                    "rank": 1 },
-                                                      "wp:main": { "total": 1,
-                                                                   "valid": 1,
-                                                                   "rank": 1 } },
-                           "f_post_m1_mod_neg_pos": { "alt-ergo": { "total": 1,
-                                                                    "valid": 1,
-                                                                    "rank": 1 },
-                                                      "wp:main": { "total": 1,
+                                                                   "rank": 3 },
+                                                     "wp:main": { "total": 1,
+                                                                  "valid": 1,
+                                                                  "rank": 3 } },
+                           "f_ensures_m5_mod_x_minus1": { "alt-ergo": 
+                                                            { "total": 1,
+                                                              "valid": 1,
+                                                              "rank": 3 },
+                                                          "wp:main": 
+                                                            { "total": 1,
+                                                              "valid": 1,
+                                                              "rank": 3 } },
+                           "f_ensures_m4_mod_x_1": { "alt-ergo": { "total": 1,
                                                                    "valid": 1,
-                                                                   "rank": 1 } },
-                           "f_post_m0_mod_pos_pos": { "alt-ergo": { "total": 1,
-                                                                    "valid": 1,
-                                                                    "rank": 1 },
-                                                      "wp:main": { "total": 1,
-                                                                   "valid": 1,
-                                                                   "rank": 1 } },
-                           "f_post_sd3_div_neg_neg": { "alt-ergo": { "total": 1,
-                                                                    "valid": 1,
-                                                                    "rank": 2 },
-                                                       "wp:main": { "total": 1,
-                                                                    "valid": 1,
-                                                                    "rank": 2 } },
-                           "f_post_sd2_div_pos_neg": { "alt-ergo": { "total": 1,
+                                                                   "rank": 1 },
+                                                     "wp:main": { "total": 1,
+                                                                  "valid": 1,
+                                                                  "rank": 1 } },
+                           "f_ensures_m3_mod_neg_neg": { "alt-ergo": 
+                                                           { "total": 1,
+                                                             "valid": 1,
+                                                             "rank": 1 },
+                                                         "wp:main": { "total": 1,
                                                                     "valid": 1,
-                                                                    "rank": 2 },
-                                                       "wp:main": { "total": 1,
-                                                                    "valid": 1,
-                                                                    "rank": 2 } },
-                           "f_post_sd1_div_neg_pos": { "alt-ergo": { "total": 1,
-                                                                    "valid": 1,
-                                                                    "rank": 2 },
-                                                       "wp:main": { "total": 1,
-                                                                    "valid": 1,
-                                                                    "rank": 2 } },
-                           "f_post_sd0_div_pos_pos": { "alt-ergo": { "total": 1,
-                                                                    "valid": 1,
-                                                                    "rank": 2 },
-                                                       "wp:main": { "total": 1,
-                                                                    "valid": 1,
-                                                                    "rank": 2 } },
-                           "f_post_d6_div_0_x": { "alt-ergo": { "total": 1,
-                                                                "valid": 1,
-                                                                "rank": 2 },
-                                                  "wp:main": { "total": 1,
-                                                               "valid": 1,
-                                                               "rank": 2 } },
-                           "f_post_d5_div_x_minus1": { "alt-ergo": { "total": 1,
+                                                                    "rank": 1 } },
+                           "f_ensures_m2_mod_pos_neg": { "alt-ergo": 
+                                                           { "total": 1,
+                                                             "valid": 1,
+                                                             "rank": 1 },
+                                                         "wp:main": { "total": 1,
                                                                     "valid": 1,
-                                                                    "rank": 1 },
-                                                       "wp:main": { "total": 1,
+                                                                    "rank": 1 } },
+                           "f_ensures_m1_mod_neg_pos": { "alt-ergo": 
+                                                           { "total": 1,
+                                                             "valid": 1,
+                                                             "rank": 1 },
+                                                         "wp:main": { "total": 1,
                                                                     "valid": 1,
                                                                     "rank": 1 } },
-                           "f_post_d4_div_x_1": { "alt-ergo": { "total": 1,
-                                                                "valid": 1,
-                                                                "rank": 1 },
-                                                  "wp:main": { "total": 1,
-                                                               "valid": 1,
-                                                               "rank": 1 } },
-                           "f_post_d3_div_neg_neg": { "alt-ergo": { "total": 1,
+                           "f_ensures_m0_mod_pos_pos": { "alt-ergo": 
+                                                           { "total": 1,
+                                                             "valid": 1,
+                                                             "rank": 1 },
+                                                         "wp:main": { "total": 1,
                                                                     "valid": 1,
-                                                                    "rank": 1 },
-                                                      "wp:main": { "total": 1,
+                                                                    "rank": 1 } },
+                           "f_ensures_sd3_div_neg_neg": { "alt-ergo": 
+                                                            { "total": 1,
+                                                              "valid": 1,
+                                                              "rank": 2 },
+                                                          "wp:main": 
+                                                            { "total": 1,
+                                                              "valid": 1,
+                                                              "rank": 2 } },
+                           "f_ensures_sd2_div_pos_neg": { "alt-ergo": 
+                                                            { "total": 1,
+                                                              "valid": 1,
+                                                              "rank": 2 },
+                                                          "wp:main": 
+                                                            { "total": 1,
+                                                              "valid": 1,
+                                                              "rank": 2 } },
+                           "f_ensures_sd1_div_neg_pos": { "alt-ergo": 
+                                                            { "total": 1,
+                                                              "valid": 1,
+                                                              "rank": 2 },
+                                                          "wp:main": 
+                                                            { "total": 1,
+                                                              "valid": 1,
+                                                              "rank": 2 } },
+                           "f_ensures_sd0_div_pos_pos": { "alt-ergo": 
+                                                            { "total": 1,
+                                                              "valid": 1,
+                                                              "rank": 2 },
+                                                          "wp:main": 
+                                                            { "total": 1,
+                                                              "valid": 1,
+                                                              "rank": 2 } },
+                           "f_ensures_d6_div_0_x": { "alt-ergo": { "total": 1,
                                                                    "valid": 1,
-                                                                   "rank": 1 } },
-                           "f_post_d2_div_pos_neg": { "alt-ergo": { "total": 1,
-                                                                    "valid": 1,
-                                                                    "rank": 1 },
-                                                      "wp:main": { "total": 1,
+                                                                   "rank": 3 },
+                                                     "wp:main": { "total": 1,
+                                                                  "valid": 1,
+                                                                  "rank": 3 } },
+                           "f_ensures_d5_div_x_minus1": { "alt-ergo": 
+                                                            { "total": 1,
+                                                              "valid": 1,
+                                                              "rank": 2 },
+                                                          "wp:main": 
+                                                            { "total": 1,
+                                                              "valid": 1,
+                                                              "rank": 2 } },
+                           "f_ensures_d4_div_x_1": { "alt-ergo": { "total": 1,
                                                                    "valid": 1,
-                                                                   "rank": 1 } },
-                           "f_post_d1_div_neg_pos": { "alt-ergo": { "total": 1,
+                                                                   "rank": 2 },
+                                                     "wp:main": { "total": 1,
+                                                                  "valid": 1,
+                                                                  "rank": 2 } },
+                           "f_ensures_d3_div_neg_neg": { "alt-ergo": 
+                                                           { "total": 1,
+                                                             "valid": 1,
+                                                             "rank": 1 },
+                                                         "wp:main": { "total": 1,
                                                                     "valid": 1,
-                                                                    "rank": 1 },
-                                                      "wp:main": { "total": 1,
-                                                                   "valid": 1,
-                                                                   "rank": 1 } },
-                           "f_post_d0_div_pos_pos": { "alt-ergo": { "total": 1,
+                                                                    "rank": 1 } },
+                           "f_ensures_d2_div_pos_neg": { "alt-ergo": 
+                                                           { "total": 1,
+                                                             "valid": 1,
+                                                             "rank": 1 },
+                                                         "wp:main": { "total": 1,
                                                                     "valid": 1,
-                                                                    "rank": 1 },
-                                                      "wp:main": { "total": 1,
-                                                                   "valid": 1,
-                                                                   "rank": 1 } },
+                                                                    "rank": 1 } },
+                           "f_ensures_d1_div_neg_pos": { "alt-ergo": 
+                                                           { "total": 1,
+                                                             "valid": 1,
+                                                             "rank": 1 },
+                                                         "wp:main": { "total": 1,
+                                                                    "valid": 1,
+                                                                    "rank": 1 } },
+                           "f_ensures_d0_div_pos_pos": { "alt-ergo": 
+                                                           { "total": 1,
+                                                             "valid": 1,
+                                                             "rank": 1 },
+                                                         "wp:main": { "total": 1,
+                                                                    "valid": 1,
+                                                                    "rank": 1 } },
                            "wp:section": { "alt-ergo": { "total": 22,
                                                          "valid": 22,
-                                                         "rank": 2 },
+                                                         "rank": 3 },
                                            "wp:main": { "total": 22,
                                                         "valid": 22,
-                                                        "rank": 2 } } } } }
+                                                        "rank": 3 } } } } }
diff --git a/src/plugins/wp/tests/wp_acsl/div_mod.i.1.report.json b/src/plugins/wp/tests/wp_acsl/div_mod.i.1.report.json
index 42f37807207f7895f6b56751c5c1cab33f6cc17e..ce944a4be8c1f241fab89018a588b755f5b8a56d 100644
--- a/src/plugins/wp/tests/wp_acsl/div_mod.i.1.report.json
+++ b/src/plugins/wp/tests/wp_acsl/div_mod.i.1.report.json
@@ -1,111 +1,125 @@
 { "wp:global": { "why3:alt-ergo": { "total": 22, "valid": 22 },
                  "wp:main": { "total": 22, "valid": 22 } },
-  "wp:functions": { "f": { "f_post_sm3_mod_neg_neg": { "why3:alt-ergo": 
-                                                         { "total": 1,
-                                                           "valid": 1 },
-                                                       "wp:main": { "total": 1,
+  "wp:functions": { "f": { "f_ensures_sm3_mod_neg_neg": { "why3:alt-ergo": 
+                                                            { "total": 1,
+                                                              "valid": 1 },
+                                                          "wp:main": 
+                                                            { "total": 1,
+                                                              "valid": 1 } },
+                           "f_ensures_sm2_mod_pos_neg": { "why3:alt-ergo": 
+                                                            { "total": 1,
+                                                              "valid": 1 },
+                                                          "wp:main": 
+                                                            { "total": 1,
+                                                              "valid": 1 } },
+                           "f_ensures_sm1_mod_neg_pos": { "why3:alt-ergo": 
+                                                            { "total": 1,
+                                                              "valid": 1 },
+                                                          "wp:main": 
+                                                            { "total": 1,
+                                                              "valid": 1 } },
+                           "f_ensures_sm0_mod_pos_pos": { "why3:alt-ergo": 
+                                                            { "total": 1,
+                                                              "valid": 1 },
+                                                          "wp:main": 
+                                                            { "total": 1,
+                                                              "valid": 1 } },
+                           "f_ensures_m6_mod_0_x": { "why3:alt-ergo": 
+                                                       { "total": 1,
+                                                         "valid": 1 },
+                                                     "wp:main": { "total": 1,
+                                                                  "valid": 1 } },
+                           "f_ensures_m5_mod_x_minus1": { "why3:alt-ergo": 
+                                                            { "total": 1,
+                                                              "valid": 1 },
+                                                          "wp:main": 
+                                                            { "total": 1,
+                                                              "valid": 1 } },
+                           "f_ensures_m4_mod_x_1": { "why3:alt-ergo": 
+                                                       { "total": 1,
+                                                         "valid": 1 },
+                                                     "wp:main": { "total": 1,
+                                                                  "valid": 1 } },
+                           "f_ensures_m3_mod_neg_neg": { "why3:alt-ergo": 
+                                                           { "total": 1,
+                                                             "valid": 1 },
+                                                         "wp:main": { "total": 1,
                                                                     "valid": 1 } },
-                           "f_post_sm2_mod_pos_neg": { "why3:alt-ergo": 
-                                                         { "total": 1,
-                                                           "valid": 1 },
-                                                       "wp:main": { "total": 1,
+                           "f_ensures_m2_mod_pos_neg": { "why3:alt-ergo": 
+                                                           { "total": 1,
+                                                             "valid": 1 },
+                                                         "wp:main": { "total": 1,
                                                                     "valid": 1 } },
-                           "f_post_sm1_mod_neg_pos": { "why3:alt-ergo": 
-                                                         { "total": 1,
-                                                           "valid": 1 },
-                                                       "wp:main": { "total": 1,
+                           "f_ensures_m1_mod_neg_pos": { "why3:alt-ergo": 
+                                                           { "total": 1,
+                                                             "valid": 1 },
+                                                         "wp:main": { "total": 1,
                                                                     "valid": 1 } },
-                           "f_post_sm0_mod_pos_pos": { "why3:alt-ergo": 
-                                                         { "total": 1,
-                                                           "valid": 1 },
-                                                       "wp:main": { "total": 1,
+                           "f_ensures_m0_mod_pos_pos": { "why3:alt-ergo": 
+                                                           { "total": 1,
+                                                             "valid": 1 },
+                                                         "wp:main": { "total": 1,
                                                                     "valid": 1 } },
-                           "f_post_m6_mod_0_x": { "why3:alt-ergo": { "total": 1,
-                                                                    "valid": 1 },
-                                                  "wp:main": { "total": 1,
-                                                               "valid": 1 } },
-                           "f_post_m5_mod_x_minus1": { "why3:alt-ergo": 
-                                                         { "total": 1,
-                                                           "valid": 1 },
-                                                       "wp:main": { "total": 1,
+                           "f_ensures_sd3_div_neg_neg": { "why3:alt-ergo": 
+                                                            { "total": 1,
+                                                              "valid": 1 },
+                                                          "wp:main": 
+                                                            { "total": 1,
+                                                              "valid": 1 } },
+                           "f_ensures_sd2_div_pos_neg": { "why3:alt-ergo": 
+                                                            { "total": 1,
+                                                              "valid": 1 },
+                                                          "wp:main": 
+                                                            { "total": 1,
+                                                              "valid": 1 } },
+                           "f_ensures_sd1_div_neg_pos": { "why3:alt-ergo": 
+                                                            { "total": 1,
+                                                              "valid": 1 },
+                                                          "wp:main": 
+                                                            { "total": 1,
+                                                              "valid": 1 } },
+                           "f_ensures_sd0_div_pos_pos": { "why3:alt-ergo": 
+                                                            { "total": 1,
+                                                              "valid": 1 },
+                                                          "wp:main": 
+                                                            { "total": 1,
+                                                              "valid": 1 } },
+                           "f_ensures_d6_div_0_x": { "why3:alt-ergo": 
+                                                       { "total": 1,
+                                                         "valid": 1 },
+                                                     "wp:main": { "total": 1,
+                                                                  "valid": 1 } },
+                           "f_ensures_d5_div_x_minus1": { "why3:alt-ergo": 
+                                                            { "total": 1,
+                                                              "valid": 1 },
+                                                          "wp:main": 
+                                                            { "total": 1,
+                                                              "valid": 1 } },
+                           "f_ensures_d4_div_x_1": { "why3:alt-ergo": 
+                                                       { "total": 1,
+                                                         "valid": 1 },
+                                                     "wp:main": { "total": 1,
+                                                                  "valid": 1 } },
+                           "f_ensures_d3_div_neg_neg": { "why3:alt-ergo": 
+                                                           { "total": 1,
+                                                             "valid": 1 },
+                                                         "wp:main": { "total": 1,
                                                                     "valid": 1 } },
-                           "f_post_m4_mod_x_1": { "why3:alt-ergo": { "total": 1,
-                                                                    "valid": 1 },
-                                                  "wp:main": { "total": 1,
-                                                               "valid": 1 } },
-                           "f_post_m3_mod_neg_neg": { "why3:alt-ergo": 
-                                                        { "total": 1,
-                                                          "valid": 1 },
-                                                      "wp:main": { "total": 1,
-                                                                   "valid": 1 } },
-                           "f_post_m2_mod_pos_neg": { "why3:alt-ergo": 
-                                                        { "total": 1,
-                                                          "valid": 1 },
-                                                      "wp:main": { "total": 1,
-                                                                   "valid": 1 } },
-                           "f_post_m1_mod_neg_pos": { "why3:alt-ergo": 
-                                                        { "total": 1,
-                                                          "valid": 1 },
-                                                      "wp:main": { "total": 1,
-                                                                   "valid": 1 } },
-                           "f_post_m0_mod_pos_pos": { "why3:alt-ergo": 
-                                                        { "total": 1,
-                                                          "valid": 1 },
-                                                      "wp:main": { "total": 1,
-                                                                   "valid": 1 } },
-                           "f_post_sd3_div_neg_neg": { "why3:alt-ergo": 
-                                                         { "total": 1,
-                                                           "valid": 1 },
-                                                       "wp:main": { "total": 1,
+                           "f_ensures_d2_div_pos_neg": { "why3:alt-ergo": 
+                                                           { "total": 1,
+                                                             "valid": 1 },
+                                                         "wp:main": { "total": 1,
                                                                     "valid": 1 } },
-                           "f_post_sd2_div_pos_neg": { "why3:alt-ergo": 
-                                                         { "total": 1,
-                                                           "valid": 1 },
-                                                       "wp:main": { "total": 1,
+                           "f_ensures_d1_div_neg_pos": { "why3:alt-ergo": 
+                                                           { "total": 1,
+                                                             "valid": 1 },
+                                                         "wp:main": { "total": 1,
                                                                     "valid": 1 } },
-                           "f_post_sd1_div_neg_pos": { "why3:alt-ergo": 
-                                                         { "total": 1,
-                                                           "valid": 1 },
-                                                       "wp:main": { "total": 1,
+                           "f_ensures_d0_div_pos_pos": { "why3:alt-ergo": 
+                                                           { "total": 1,
+                                                             "valid": 1 },
+                                                         "wp:main": { "total": 1,
                                                                     "valid": 1 } },
-                           "f_post_sd0_div_pos_pos": { "why3:alt-ergo": 
-                                                         { "total": 1,
-                                                           "valid": 1 },
-                                                       "wp:main": { "total": 1,
-                                                                    "valid": 1 } },
-                           "f_post_d6_div_0_x": { "why3:alt-ergo": { "total": 1,
-                                                                    "valid": 1 },
-                                                  "wp:main": { "total": 1,
-                                                               "valid": 1 } },
-                           "f_post_d5_div_x_minus1": { "why3:alt-ergo": 
-                                                         { "total": 1,
-                                                           "valid": 1 },
-                                                       "wp:main": { "total": 1,
-                                                                    "valid": 1 } },
-                           "f_post_d4_div_x_1": { "why3:alt-ergo": { "total": 1,
-                                                                    "valid": 1 },
-                                                  "wp:main": { "total": 1,
-                                                               "valid": 1 } },
-                           "f_post_d3_div_neg_neg": { "why3:alt-ergo": 
-                                                        { "total": 1,
-                                                          "valid": 1 },
-                                                      "wp:main": { "total": 1,
-                                                                   "valid": 1 } },
-                           "f_post_d2_div_pos_neg": { "why3:alt-ergo": 
-                                                        { "total": 1,
-                                                          "valid": 1 },
-                                                      "wp:main": { "total": 1,
-                                                                   "valid": 1 } },
-                           "f_post_d1_div_neg_pos": { "why3:alt-ergo": 
-                                                        { "total": 1,
-                                                          "valid": 1 },
-                                                      "wp:main": { "total": 1,
-                                                                   "valid": 1 } },
-                           "f_post_d0_div_pos_pos": { "why3:alt-ergo": 
-                                                        { "total": 1,
-                                                          "valid": 1 },
-                                                      "wp:main": { "total": 1,
-                                                                   "valid": 1 } },
                            "wp:section": { "why3:alt-ergo": { "total": 22,
                                                               "valid": 22 },
                                            "wp:main": { "total": 22,
diff --git a/src/plugins/wp/tests/wp_acsl/div_mod.i.2.report.json b/src/plugins/wp/tests/wp_acsl/div_mod.i.2.report.json
index 2296ef2855715d7f43c75faf36c55c4f2ebe4cb8..0488ae3aa58aa498aaea1c450afe90a1dc670377 100644
--- a/src/plugins/wp/tests/wp_acsl/div_mod.i.2.report.json
+++ b/src/plugins/wp/tests/wp_acsl/div_mod.i.2.report.json
@@ -1,13 +1,13 @@
 { "wp:global": { "alt-ergo": { "total": 2, "unknown": 2 },
                  "wp:main": { "total": 2, "unknown": 2 } },
-  "wp:functions": { "f": { "f_post_m7_mod_0_x_ko": { "alt-ergo": { "total": 1,
-                                                                   "unknown": 1 },
-                                                     "wp:main": { "total": 1,
-                                                                  "unknown": 1 } },
-                           "f_post_d7_div_0_x_ko": { "alt-ergo": { "total": 1,
-                                                                   "unknown": 1 },
-                                                     "wp:main": { "total": 1,
-                                                                  "unknown": 1 } },
+  "wp:functions": { "f": { "f_ensures_m7_mod_0_x_ko": { "alt-ergo": { "total": 1,
+                                                                    "unknown": 1 },
+                                                        "wp:main": { "total": 1,
+                                                                    "unknown": 1 } },
+                           "f_ensures_d7_div_0_x_ko": { "alt-ergo": { "total": 1,
+                                                                    "unknown": 1 },
+                                                        "wp:main": { "total": 1,
+                                                                    "unknown": 1 } },
                            "wp:section": { "alt-ergo": { "total": 2,
                                                          "unknown": 2 },
                                            "wp:main": { "total": 2,
diff --git a/src/plugins/wp/tests/wp_acsl/e_imply.i.0.report.json b/src/plugins/wp/tests/wp_acsl/e_imply.i.0.report.json
index 764dbf0656bc0529dec4b6b2dae21d9668c2a7d4..3fc1468e9cae9d96c9159c092a6025ccae28afbf 100644
--- a/src/plugins/wp/tests/wp_acsl/e_imply.i.0.report.json
+++ b/src/plugins/wp/tests/wp_acsl/e_imply.i.0.report.json
@@ -1,702 +1,633 @@
 { "wp:global": { "alt-ergo": { "total": 111, "valid": 111, "rank": 3 },
                  "qed": { "total": 8, "valid": 8 },
                  "wp:main": { "total": 119, "valid": 119, "rank": 3 } },
-  "wp:axiomatics": { "": { "global_Qed_0077": { "alt-ergo": { "total": 1,
-                                                              "valid": 1,
-                                                              "rank": 0 },
-                                                "wp:main": { "total": 1,
-                                                             "valid": 1,
-                                                             "rank": 0 } },
-                           "global_Qed_0076": { "alt-ergo": { "total": 1,
-                                                              "valid": 1,
-                                                              "rank": 2 },
-                                                "wp:main": { "total": 1,
-                                                             "valid": 1,
-                                                             "rank": 2 } },
-                           "global_Qed_0075": { "alt-ergo": { "total": 1,
-                                                              "valid": 1,
-                                                              "rank": 2 },
-                                                "wp:main": { "total": 1,
-                                                             "valid": 1,
-                                                             "rank": 2 } },
-                           "global_Qed_0074": { "alt-ergo": { "total": 1,
-                                                              "valid": 1,
-                                                              "rank": 0 },
-                                                "wp:main": { "total": 1,
-                                                             "valid": 1,
-                                                             "rank": 0 } },
-                           "global_Qed_0073": { "alt-ergo": { "total": 1,
-                                                              "valid": 1,
-                                                              "rank": 0 },
-                                                "wp:main": { "total": 1,
-                                                             "valid": 1,
-                                                             "rank": 0 } },
-                           "global_Qed_0072": { "alt-ergo": { "total": 1,
-                                                              "valid": 1,
-                                                              "rank": 0 },
-                                                "wp:main": { "total": 1,
-                                                             "valid": 1,
-                                                             "rank": 0 } },
-                           "global_Qed_0071": { "alt-ergo": { "total": 1,
-                                                              "valid": 1,
-                                                              "rank": 0 },
-                                                "wp:main": { "total": 1,
-                                                             "valid": 1,
-                                                             "rank": 0 } },
-                           "global_Qed_0070": { "alt-ergo": { "total": 1,
-                                                              "valid": 1,
-                                                              "rank": 0 },
-                                                "wp:main": { "total": 1,
-                                                             "valid": 1,
-                                                             "rank": 0 } },
-                           "global_Qed_0069": { "alt-ergo": { "total": 1,
-                                                              "valid": 1,
-                                                              "rank": 0 },
-                                                "wp:main": { "total": 1,
-                                                             "valid": 1,
-                                                             "rank": 0 } },
-                           "global_Qed_0068": { "alt-ergo": { "total": 1,
-                                                              "valid": 1,
-                                                              "rank": 0 },
-                                                "wp:main": { "total": 1,
-                                                             "valid": 1,
-                                                             "rank": 0 } },
-                           "global_Qed_0067": { "alt-ergo": { "total": 1,
-                                                              "valid": 1,
-                                                              "rank": 0 },
-                                                "wp:main": { "total": 1,
-                                                             "valid": 1,
-                                                             "rank": 0 } },
-                           "global_Qed_0066": { "alt-ergo": { "total": 1,
-                                                              "valid": 1,
-                                                              "rank": 0 },
-                                                "wp:main": { "total": 1,
-                                                             "valid": 1,
-                                                             "rank": 0 } },
-                           "global_Qed_0065": { "alt-ergo": { "total": 1,
-                                                              "valid": 1,
-                                                              "rank": 0 },
-                                                "wp:main": { "total": 1,
-                                                             "valid": 1,
-                                                             "rank": 0 } },
-                           "global_Qed_0064": { "alt-ergo": { "total": 1,
-                                                              "valid": 1,
-                                                              "rank": 0 },
-                                                "wp:main": { "total": 1,
-                                                             "valid": 1,
-                                                             "rank": 0 } },
-                           "global_Qed_0063": { "alt-ergo": { "total": 1,
-                                                              "valid": 1,
-                                                              "rank": 0 },
-                                                "wp:main": { "total": 1,
-                                                             "valid": 1,
-                                                             "rank": 0 } },
-                           "global_Qed_0062": { "alt-ergo": { "total": 1,
-                                                              "valid": 1,
-                                                              "rank": 0 },
-                                                "wp:main": { "total": 1,
-                                                             "valid": 1,
-                                                             "rank": 0 } },
-                           "global_Qed_0061": { "alt-ergo": { "total": 1,
-                                                              "valid": 1,
-                                                              "rank": 0 },
-                                                "wp:main": { "total": 1,
-                                                             "valid": 1,
-                                                             "rank": 0 } },
-                           "global_Qed_0060": { "alt-ergo": { "total": 1,
-                                                              "valid": 1,
-                                                              "rank": 0 },
-                                                "wp:main": { "total": 1,
-                                                             "valid": 1,
-                                                             "rank": 0 } },
-                           "global_Qed_0059": { "alt-ergo": { "total": 1,
-                                                              "valid": 1,
-                                                              "rank": 0 },
-                                                "wp:main": { "total": 1,
-                                                             "valid": 1,
-                                                             "rank": 0 } },
-                           "global_Qed_0058": { "alt-ergo": { "total": 1,
-                                                              "valid": 1,
-                                                              "rank": 0 },
-                                                "wp:main": { "total": 1,
-                                                             "valid": 1,
-                                                             "rank": 0 } },
-                           "global_Qed_0057": { "alt-ergo": { "total": 1,
-                                                              "valid": 1,
-                                                              "rank": 0 },
-                                                "wp:main": { "total": 1,
-                                                             "valid": 1,
-                                                             "rank": 0 } },
-                           "global_Qed_0056": { "alt-ergo": { "total": 1,
-                                                              "valid": 1,
-                                                              "rank": 1 },
-                                                "wp:main": { "total": 1,
-                                                             "valid": 1,
-                                                             "rank": 1 } },
-                           "global_Qed_0055": { "alt-ergo": { "total": 1,
-                                                              "valid": 1,
-                                                              "rank": 2 },
-                                                "wp:main": { "total": 1,
-                                                             "valid": 1,
-                                                             "rank": 2 } },
-                           "global_Qed_0054": { "alt-ergo": { "total": 1,
-                                                              "valid": 1,
-                                                              "rank": 2 },
-                                                "wp:main": { "total": 1,
-                                                             "valid": 1,
-                                                             "rank": 2 } },
-                           "global_Qed_0053": { "alt-ergo": { "total": 1,
-                                                              "valid": 1,
-                                                              "rank": 2 },
-                                                "wp:main": { "total": 1,
-                                                             "valid": 1,
-                                                             "rank": 2 } },
-                           "global_Qed_0052": { "alt-ergo": { "total": 1,
-                                                              "valid": 1,
-                                                              "rank": 3 },
-                                                "wp:main": { "total": 1,
-                                                             "valid": 1,
-                                                             "rank": 3 } },
-                           "global_Qed_0051": { "alt-ergo": { "total": 1,
-                                                              "valid": 1,
-                                                              "rank": 0 },
-                                                "wp:main": { "total": 1,
-                                                             "valid": 1,
-                                                             "rank": 0 } },
-                           "global_Qed_0050": { "alt-ergo": { "total": 1,
-                                                              "valid": 1,
-                                                              "rank": 1 },
-                                                "wp:main": { "total": 1,
-                                                             "valid": 1,
-                                                             "rank": 1 } },
-                           "global_Qed_0049": { "alt-ergo": { "total": 1,
-                                                              "valid": 1,
-                                                              "rank": 0 },
-                                                "wp:main": { "total": 1,
-                                                             "valid": 1,
-                                                             "rank": 0 } },
-                           "global_Qed_0048": { "alt-ergo": { "total": 1,
-                                                              "valid": 1,
-                                                              "rank": 2 },
-                                                "wp:main": { "total": 1,
-                                                             "valid": 1,
-                                                             "rank": 2 } },
-                           "global_Qed_0047": { "alt-ergo": { "total": 1,
-                                                              "valid": 1,
-                                                              "rank": 0 },
-                                                "wp:main": { "total": 1,
-                                                             "valid": 1,
-                                                             "rank": 0 } },
-                           "global_Qed_0046": { "alt-ergo": { "total": 1,
-                                                              "valid": 1,
-                                                              "rank": 0 },
-                                                "wp:main": { "total": 1,
-                                                             "valid": 1,
-                                                             "rank": 0 } },
-                           "global_Qed_0045": { "alt-ergo": { "total": 1,
-                                                              "valid": 1,
-                                                              "rank": 0 },
-                                                "wp:main": { "total": 1,
-                                                             "valid": 1,
-                                                             "rank": 0 } },
-                           "global_Qed_0044": { "alt-ergo": { "total": 1,
-                                                              "valid": 1,
-                                                              "rank": 0 },
-                                                "wp:main": { "total": 1,
-                                                             "valid": 1,
-                                                             "rank": 0 } },
-                           "global_Qed_0043": { "alt-ergo": { "total": 1,
-                                                              "valid": 1,
-                                                              "rank": 0 },
-                                                "wp:main": { "total": 1,
-                                                             "valid": 1,
-                                                             "rank": 0 } },
-                           "global_Qed_0042": { "alt-ergo": { "total": 1,
-                                                              "valid": 1,
-                                                              "rank": 0 },
-                                                "wp:main": { "total": 1,
-                                                             "valid": 1,
-                                                             "rank": 0 } },
-                           "global_Qed_0041": { "alt-ergo": { "total": 1,
-                                                              "valid": 1,
-                                                              "rank": 2 },
-                                                "wp:main": { "total": 1,
-                                                             "valid": 1,
-                                                             "rank": 2 } },
-                           "global_Qed_0040": { "alt-ergo": { "total": 1,
-                                                              "valid": 1,
-                                                              "rank": 0 },
-                                                "wp:main": { "total": 1,
-                                                             "valid": 1,
-                                                             "rank": 0 } },
-                           "global_Qed_0039": { "alt-ergo": { "total": 1,
-                                                              "valid": 1,
-                                                              "rank": 2 },
-                                                "wp:main": { "total": 1,
-                                                             "valid": 1,
-                                                             "rank": 2 } },
-                           "global_Qed_0038": { "alt-ergo": { "total": 1,
-                                                              "valid": 1,
-                                                              "rank": 0 },
-                                                "wp:main": { "total": 1,
-                                                             "valid": 1,
-                                                             "rank": 0 } },
-                           "global_Qed_0037": { "alt-ergo": { "total": 1,
-                                                              "valid": 1,
-                                                              "rank": 2 },
-                                                "wp:main": { "total": 1,
-                                                             "valid": 1,
-                                                             "rank": 2 } },
-                           "global_Qed_0036": { "alt-ergo": { "total": 1,
-                                                              "valid": 1,
-                                                              "rank": 0 },
-                                                "wp:main": { "total": 1,
-                                                             "valid": 1,
-                                                             "rank": 0 } },
-                           "global_Qed_0035": { "alt-ergo": { "total": 1,
-                                                              "valid": 1,
-                                                              "rank": 0 },
-                                                "wp:main": { "total": 1,
-                                                             "valid": 1,
-                                                             "rank": 0 } },
-                           "global_Qed_0034": { "alt-ergo": { "total": 1,
-                                                              "valid": 1,
-                                                              "rank": 0 },
-                                                "wp:main": { "total": 1,
-                                                             "valid": 1,
-                                                             "rank": 0 } },
-                           "global_Qed_0033": { "alt-ergo": { "total": 1,
-                                                              "valid": 1,
-                                                              "rank": 2 },
-                                                "wp:main": { "total": 1,
-                                                             "valid": 1,
-                                                             "rank": 2 } },
-                           "global_Qed_0032": { "alt-ergo": { "total": 1,
-                                                              "valid": 1,
-                                                              "rank": 2 },
-                                                "wp:main": { "total": 1,
-                                                             "valid": 1,
-                                                             "rank": 2 } },
-                           "global_Qed_0031": { "alt-ergo": { "total": 1,
-                                                              "valid": 1,
-                                                              "rank": 0 },
-                                                "wp:main": { "total": 1,
-                                                             "valid": 1,
-                                                             "rank": 0 } },
-                           "global_Qed_0030": { "alt-ergo": { "total": 1,
-                                                              "valid": 1,
-                                                              "rank": 0 },
-                                                "wp:main": { "total": 1,
-                                                             "valid": 1,
-                                                             "rank": 0 } },
-                           "global_Qed_0029": { "alt-ergo": { "total": 1,
-                                                              "valid": 1,
-                                                              "rank": 2 },
-                                                "wp:main": { "total": 1,
-                                                             "valid": 1,
-                                                             "rank": 2 } },
-                           "global_Qed_0028": { "alt-ergo": { "total": 1,
-                                                              "valid": 1,
-                                                              "rank": 0 },
-                                                "wp:main": { "total": 1,
-                                                             "valid": 1,
-                                                             "rank": 0 } },
-                           "global_Qed_0027": { "alt-ergo": { "total": 1,
-                                                              "valid": 1,
-                                                              "rank": 0 },
-                                                "wp:main": { "total": 1,
-                                                             "valid": 1,
-                                                             "rank": 0 } },
-                           "global_Qed_0026": { "alt-ergo": { "total": 1,
-                                                              "valid": 1,
-                                                              "rank": 0 },
-                                                "wp:main": { "total": 1,
-                                                             "valid": 1,
-                                                             "rank": 0 } },
-                           "global_Qed_0025": { "alt-ergo": { "total": 1,
-                                                              "valid": 1,
-                                                              "rank": 0 },
-                                                "wp:main": { "total": 1,
-                                                             "valid": 1,
-                                                             "rank": 0 } },
-                           "global_Qed_0024": { "alt-ergo": { "total": 1,
-                                                              "valid": 1,
-                                                              "rank": 0 },
-                                                "wp:main": { "total": 1,
-                                                             "valid": 1,
-                                                             "rank": 0 } },
-                           "global_Qed_0023": { "alt-ergo": { "total": 1,
-                                                              "valid": 1,
-                                                              "rank": 0 },
-                                                "wp:main": { "total": 1,
-                                                             "valid": 1,
-                                                             "rank": 0 } },
-                           "global_Qed_0022": { "alt-ergo": { "total": 1,
-                                                              "valid": 1,
-                                                              "rank": 0 },
-                                                "wp:main": { "total": 1,
-                                                             "valid": 1,
-                                                             "rank": 0 } },
-                           "global_Qed_0021": { "alt-ergo": { "total": 1,
-                                                              "valid": 1,
-                                                              "rank": 0 },
-                                                "wp:main": { "total": 1,
-                                                             "valid": 1,
-                                                             "rank": 0 } },
-                           "global_Qed_0020": { "alt-ergo": { "total": 1,
-                                                              "valid": 1,
-                                                              "rank": 0 },
-                                                "wp:main": { "total": 1,
-                                                             "valid": 1,
-                                                             "rank": 0 } },
-                           "global_Qed_0019": { "alt-ergo": { "total": 1,
-                                                              "valid": 1,
-                                                              "rank": 0 },
-                                                "wp:main": { "total": 1,
-                                                             "valid": 1,
-                                                             "rank": 0 } },
-                           "global_Qed_0018": { "alt-ergo": { "total": 1,
-                                                              "valid": 1,
-                                                              "rank": 0 },
-                                                "wp:main": { "total": 1,
-                                                             "valid": 1,
-                                                             "rank": 0 } },
-                           "global_Qed_0017": { "alt-ergo": { "total": 1,
-                                                              "valid": 1,
-                                                              "rank": 0 },
-                                                "wp:main": { "total": 1,
-                                                             "valid": 1,
-                                                             "rank": 0 } },
-                           "global_Qed_0016": { "alt-ergo": { "total": 1,
-                                                              "valid": 1,
-                                                              "rank": 0 },
-                                                "wp:main": { "total": 1,
-                                                             "valid": 1,
-                                                             "rank": 0 } },
-                           "global_Qed_0015": { "alt-ergo": { "total": 1,
-                                                              "valid": 1,
-                                                              "rank": 1 },
-                                                "wp:main": { "total": 1,
-                                                             "valid": 1,
-                                                             "rank": 1 } },
-                           "global_Qed_0014": { "alt-ergo": { "total": 1,
-                                                              "valid": 1,
-                                                              "rank": 0 },
-                                                "wp:main": { "total": 1,
-                                                             "valid": 1,
-                                                             "rank": 0 } },
-                           "global_Qed_0013": { "alt-ergo": { "total": 1,
-                                                              "valid": 1,
-                                                              "rank": 1 },
-                                                "wp:main": { "total": 1,
-                                                             "valid": 1,
-                                                             "rank": 1 } },
-                           "global_Qed_0012": { "alt-ergo": { "total": 1,
-                                                              "valid": 1,
-                                                              "rank": 1 },
-                                                "wp:main": { "total": 1,
-                                                             "valid": 1,
-                                                             "rank": 1 } },
-                           "global_Qed_0011": { "alt-ergo": { "total": 1,
-                                                              "valid": 1,
-                                                              "rank": 0 },
-                                                "wp:main": { "total": 1,
-                                                             "valid": 1,
-                                                             "rank": 0 } },
-                           "global_Qed_0010": { "alt-ergo": { "total": 1,
-                                                              "valid": 1,
-                                                              "rank": 0 },
-                                                "wp:main": { "total": 1,
-                                                             "valid": 1,
-                                                             "rank": 0 } },
-                           "global_Qed_0009": { "alt-ergo": { "total": 1,
-                                                              "valid": 1,
-                                                              "rank": 0 },
-                                                "wp:main": { "total": 1,
-                                                             "valid": 1,
-                                                             "rank": 0 } },
-                           "global_Qed_0008": { "alt-ergo": { "total": 1,
-                                                              "valid": 1,
-                                                              "rank": 2 },
-                                                "wp:main": { "total": 1,
-                                                             "valid": 1,
-                                                             "rank": 2 } },
-                           "global_Qed_0007": { "alt-ergo": { "total": 1,
-                                                              "valid": 1,
-                                                              "rank": 0 },
-                                                "wp:main": { "total": 1,
-                                                             "valid": 1,
-                                                             "rank": 0 } },
-                           "global_Qed_0006": { "alt-ergo": { "total": 1,
-                                                              "valid": 1,
-                                                              "rank": 2 },
-                                                "wp:main": { "total": 1,
-                                                             "valid": 1,
-                                                             "rank": 2 } },
-                           "global_Qed_0005": { "alt-ergo": { "total": 1,
-                                                              "valid": 1,
-                                                              "rank": 0 },
-                                                "wp:main": { "total": 1,
-                                                             "valid": 1,
-                                                             "rank": 0 } },
-                           "global_Qed_0004": { "alt-ergo": { "total": 1,
-                                                              "valid": 1,
-                                                              "rank": 0 },
-                                                "wp:main": { "total": 1,
-                                                             "valid": 1,
-                                                             "rank": 0 } },
-                           "global_Qed_0003": { "alt-ergo": { "total": 1,
-                                                              "valid": 1,
-                                                              "rank": 0 },
-                                                "wp:main": { "total": 1,
-                                                             "valid": 1,
-                                                             "rank": 0 } },
-                           "global_Qed_0002": { "alt-ergo": { "total": 1,
-                                                              "valid": 1,
-                                                              "rank": 0 },
-                                                "wp:main": { "total": 1,
-                                                             "valid": 1,
-                                                             "rank": 0 } },
-                           "global_Qed_0001": { "alt-ergo": { "total": 1,
-                                                              "valid": 1,
-                                                              "rank": 0 },
-                                                "wp:main": { "total": 1,
-                                                             "valid": 1,
-                                                             "rank": 0 } },
+  "wp:axiomatics": { "": { "Qed_0077": { "alt-ergo": { "total": 1,
+                                                       "valid": 1,
+                                                       "rank": 0 },
+                                         "wp:main": { "total": 1, "valid": 1,
+                                                      "rank": 0 } },
+                           "Qed_0076": { "alt-ergo": { "total": 1,
+                                                       "valid": 1,
+                                                       "rank": 2 },
+                                         "wp:main": { "total": 1, "valid": 1,
+                                                      "rank": 2 } },
+                           "Qed_0075": { "alt-ergo": { "total": 1,
+                                                       "valid": 1,
+                                                       "rank": 2 },
+                                         "wp:main": { "total": 1, "valid": 1,
+                                                      "rank": 2 } },
+                           "Qed_0074": { "alt-ergo": { "total": 1,
+                                                       "valid": 1,
+                                                       "rank": 0 },
+                                         "wp:main": { "total": 1, "valid": 1,
+                                                      "rank": 0 } },
+                           "Qed_0073": { "alt-ergo": { "total": 1,
+                                                       "valid": 1,
+                                                       "rank": 0 },
+                                         "wp:main": { "total": 1, "valid": 1,
+                                                      "rank": 0 } },
+                           "Qed_0072": { "alt-ergo": { "total": 1,
+                                                       "valid": 1,
+                                                       "rank": 0 },
+                                         "wp:main": { "total": 1, "valid": 1,
+                                                      "rank": 0 } },
+                           "Qed_0071": { "alt-ergo": { "total": 1,
+                                                       "valid": 1,
+                                                       "rank": 0 },
+                                         "wp:main": { "total": 1, "valid": 1,
+                                                      "rank": 0 } },
+                           "Qed_0070": { "alt-ergo": { "total": 1,
+                                                       "valid": 1,
+                                                       "rank": 0 },
+                                         "wp:main": { "total": 1, "valid": 1,
+                                                      "rank": 0 } },
+                           "Qed_0069": { "alt-ergo": { "total": 1,
+                                                       "valid": 1,
+                                                       "rank": 0 },
+                                         "wp:main": { "total": 1, "valid": 1,
+                                                      "rank": 0 } },
+                           "Qed_0068": { "alt-ergo": { "total": 1,
+                                                       "valid": 1,
+                                                       "rank": 0 },
+                                         "wp:main": { "total": 1, "valid": 1,
+                                                      "rank": 0 } },
+                           "Qed_0067": { "alt-ergo": { "total": 1,
+                                                       "valid": 1,
+                                                       "rank": 0 },
+                                         "wp:main": { "total": 1, "valid": 1,
+                                                      "rank": 0 } },
+                           "Qed_0066": { "alt-ergo": { "total": 1,
+                                                       "valid": 1,
+                                                       "rank": 0 },
+                                         "wp:main": { "total": 1, "valid": 1,
+                                                      "rank": 0 } },
+                           "Qed_0065": { "alt-ergo": { "total": 1,
+                                                       "valid": 1,
+                                                       "rank": 0 },
+                                         "wp:main": { "total": 1, "valid": 1,
+                                                      "rank": 0 } },
+                           "Qed_0064": { "alt-ergo": { "total": 1,
+                                                       "valid": 1,
+                                                       "rank": 0 },
+                                         "wp:main": { "total": 1, "valid": 1,
+                                                      "rank": 0 } },
+                           "Qed_0063": { "alt-ergo": { "total": 1,
+                                                       "valid": 1,
+                                                       "rank": 0 },
+                                         "wp:main": { "total": 1, "valid": 1,
+                                                      "rank": 0 } },
+                           "Qed_0062": { "alt-ergo": { "total": 1,
+                                                       "valid": 1,
+                                                       "rank": 0 },
+                                         "wp:main": { "total": 1, "valid": 1,
+                                                      "rank": 0 } },
+                           "Qed_0061": { "alt-ergo": { "total": 1,
+                                                       "valid": 1,
+                                                       "rank": 0 },
+                                         "wp:main": { "total": 1, "valid": 1,
+                                                      "rank": 0 } },
+                           "Qed_0060": { "alt-ergo": { "total": 1,
+                                                       "valid": 1,
+                                                       "rank": 0 },
+                                         "wp:main": { "total": 1, "valid": 1,
+                                                      "rank": 0 } },
+                           "Qed_0059": { "alt-ergo": { "total": 1,
+                                                       "valid": 1,
+                                                       "rank": 0 },
+                                         "wp:main": { "total": 1, "valid": 1,
+                                                      "rank": 0 } },
+                           "Qed_0058": { "alt-ergo": { "total": 1,
+                                                       "valid": 1,
+                                                       "rank": 0 },
+                                         "wp:main": { "total": 1, "valid": 1,
+                                                      "rank": 0 } },
+                           "Qed_0057": { "alt-ergo": { "total": 1,
+                                                       "valid": 1,
+                                                       "rank": 0 },
+                                         "wp:main": { "total": 1, "valid": 1,
+                                                      "rank": 0 } },
+                           "Qed_0056": { "alt-ergo": { "total": 1,
+                                                       "valid": 1,
+                                                       "rank": 1 },
+                                         "wp:main": { "total": 1, "valid": 1,
+                                                      "rank": 1 } },
+                           "Qed_0055": { "alt-ergo": { "total": 1,
+                                                       "valid": 1,
+                                                       "rank": 2 },
+                                         "wp:main": { "total": 1, "valid": 1,
+                                                      "rank": 2 } },
+                           "Qed_0054": { "alt-ergo": { "total": 1,
+                                                       "valid": 1,
+                                                       "rank": 2 },
+                                         "wp:main": { "total": 1, "valid": 1,
+                                                      "rank": 2 } },
+                           "Qed_0053": { "alt-ergo": { "total": 1,
+                                                       "valid": 1,
+                                                       "rank": 2 },
+                                         "wp:main": { "total": 1, "valid": 1,
+                                                      "rank": 2 } },
+                           "Qed_0052": { "alt-ergo": { "total": 1,
+                                                       "valid": 1,
+                                                       "rank": 3 },
+                                         "wp:main": { "total": 1, "valid": 1,
+                                                      "rank": 3 } },
+                           "Qed_0051": { "alt-ergo": { "total": 1,
+                                                       "valid": 1,
+                                                       "rank": 0 },
+                                         "wp:main": { "total": 1, "valid": 1,
+                                                      "rank": 0 } },
+                           "Qed_0050": { "alt-ergo": { "total": 1,
+                                                       "valid": 1,
+                                                       "rank": 1 },
+                                         "wp:main": { "total": 1, "valid": 1,
+                                                      "rank": 1 } },
+                           "Qed_0049": { "alt-ergo": { "total": 1,
+                                                       "valid": 1,
+                                                       "rank": 0 },
+                                         "wp:main": { "total": 1, "valid": 1,
+                                                      "rank": 0 } },
+                           "Qed_0048": { "alt-ergo": { "total": 1,
+                                                       "valid": 1,
+                                                       "rank": 2 },
+                                         "wp:main": { "total": 1, "valid": 1,
+                                                      "rank": 2 } },
+                           "Qed_0047": { "alt-ergo": { "total": 1,
+                                                       "valid": 1,
+                                                       "rank": 0 },
+                                         "wp:main": { "total": 1, "valid": 1,
+                                                      "rank": 0 } },
+                           "Qed_0046": { "alt-ergo": { "total": 1,
+                                                       "valid": 1,
+                                                       "rank": 0 },
+                                         "wp:main": { "total": 1, "valid": 1,
+                                                      "rank": 0 } },
+                           "Qed_0045": { "alt-ergo": { "total": 1,
+                                                       "valid": 1,
+                                                       "rank": 0 },
+                                         "wp:main": { "total": 1, "valid": 1,
+                                                      "rank": 0 } },
+                           "Qed_0044": { "alt-ergo": { "total": 1,
+                                                       "valid": 1,
+                                                       "rank": 0 },
+                                         "wp:main": { "total": 1, "valid": 1,
+                                                      "rank": 0 } },
+                           "Qed_0043": { "alt-ergo": { "total": 1,
+                                                       "valid": 1,
+                                                       "rank": 0 },
+                                         "wp:main": { "total": 1, "valid": 1,
+                                                      "rank": 0 } },
+                           "Qed_0042": { "alt-ergo": { "total": 1,
+                                                       "valid": 1,
+                                                       "rank": 0 },
+                                         "wp:main": { "total": 1, "valid": 1,
+                                                      "rank": 0 } },
+                           "Qed_0041": { "alt-ergo": { "total": 1,
+                                                       "valid": 1,
+                                                       "rank": 2 },
+                                         "wp:main": { "total": 1, "valid": 1,
+                                                      "rank": 2 } },
+                           "Qed_0040": { "alt-ergo": { "total": 1,
+                                                       "valid": 1,
+                                                       "rank": 0 },
+                                         "wp:main": { "total": 1, "valid": 1,
+                                                      "rank": 0 } },
+                           "Qed_0039": { "alt-ergo": { "total": 1,
+                                                       "valid": 1,
+                                                       "rank": 2 },
+                                         "wp:main": { "total": 1, "valid": 1,
+                                                      "rank": 2 } },
+                           "Qed_0038": { "alt-ergo": { "total": 1,
+                                                       "valid": 1,
+                                                       "rank": 0 },
+                                         "wp:main": { "total": 1, "valid": 1,
+                                                      "rank": 0 } },
+                           "Qed_0037": { "alt-ergo": { "total": 1,
+                                                       "valid": 1,
+                                                       "rank": 2 },
+                                         "wp:main": { "total": 1, "valid": 1,
+                                                      "rank": 2 } },
+                           "Qed_0036": { "alt-ergo": { "total": 1,
+                                                       "valid": 1,
+                                                       "rank": 0 },
+                                         "wp:main": { "total": 1, "valid": 1,
+                                                      "rank": 0 } },
+                           "Qed_0035": { "alt-ergo": { "total": 1,
+                                                       "valid": 1,
+                                                       "rank": 0 },
+                                         "wp:main": { "total": 1, "valid": 1,
+                                                      "rank": 0 } },
+                           "Qed_0034": { "alt-ergo": { "total": 1,
+                                                       "valid": 1,
+                                                       "rank": 0 },
+                                         "wp:main": { "total": 1, "valid": 1,
+                                                      "rank": 0 } },
+                           "Qed_0033": { "alt-ergo": { "total": 1,
+                                                       "valid": 1,
+                                                       "rank": 2 },
+                                         "wp:main": { "total": 1, "valid": 1,
+                                                      "rank": 2 } },
+                           "Qed_0032": { "alt-ergo": { "total": 1,
+                                                       "valid": 1,
+                                                       "rank": 2 },
+                                         "wp:main": { "total": 1, "valid": 1,
+                                                      "rank": 2 } },
+                           "Qed_0031": { "alt-ergo": { "total": 1,
+                                                       "valid": 1,
+                                                       "rank": 0 },
+                                         "wp:main": { "total": 1, "valid": 1,
+                                                      "rank": 0 } },
+                           "Qed_0030": { "alt-ergo": { "total": 1,
+                                                       "valid": 1,
+                                                       "rank": 0 },
+                                         "wp:main": { "total": 1, "valid": 1,
+                                                      "rank": 0 } },
+                           "Qed_0029": { "alt-ergo": { "total": 1,
+                                                       "valid": 1,
+                                                       "rank": 2 },
+                                         "wp:main": { "total": 1, "valid": 1,
+                                                      "rank": 2 } },
+                           "Qed_0028": { "alt-ergo": { "total": 1,
+                                                       "valid": 1,
+                                                       "rank": 0 },
+                                         "wp:main": { "total": 1, "valid": 1,
+                                                      "rank": 0 } },
+                           "Qed_0027": { "alt-ergo": { "total": 1,
+                                                       "valid": 1,
+                                                       "rank": 0 },
+                                         "wp:main": { "total": 1, "valid": 1,
+                                                      "rank": 0 } },
+                           "Qed_0026": { "alt-ergo": { "total": 1,
+                                                       "valid": 1,
+                                                       "rank": 0 },
+                                         "wp:main": { "total": 1, "valid": 1,
+                                                      "rank": 0 } },
+                           "Qed_0025": { "alt-ergo": { "total": 1,
+                                                       "valid": 1,
+                                                       "rank": 0 },
+                                         "wp:main": { "total": 1, "valid": 1,
+                                                      "rank": 0 } },
+                           "Qed_0024": { "alt-ergo": { "total": 1,
+                                                       "valid": 1,
+                                                       "rank": 0 },
+                                         "wp:main": { "total": 1, "valid": 1,
+                                                      "rank": 0 } },
+                           "Qed_0023": { "alt-ergo": { "total": 1,
+                                                       "valid": 1,
+                                                       "rank": 0 },
+                                         "wp:main": { "total": 1, "valid": 1,
+                                                      "rank": 0 } },
+                           "Qed_0022": { "alt-ergo": { "total": 1,
+                                                       "valid": 1,
+                                                       "rank": 0 },
+                                         "wp:main": { "total": 1, "valid": 1,
+                                                      "rank": 0 } },
+                           "Qed_0021": { "alt-ergo": { "total": 1,
+                                                       "valid": 1,
+                                                       "rank": 0 },
+                                         "wp:main": { "total": 1, "valid": 1,
+                                                      "rank": 0 } },
+                           "Qed_0020": { "alt-ergo": { "total": 1,
+                                                       "valid": 1,
+                                                       "rank": 0 },
+                                         "wp:main": { "total": 1, "valid": 1,
+                                                      "rank": 0 } },
+                           "Qed_0019": { "alt-ergo": { "total": 1,
+                                                       "valid": 1,
+                                                       "rank": 0 },
+                                         "wp:main": { "total": 1, "valid": 1,
+                                                      "rank": 0 } },
+                           "Qed_0018": { "alt-ergo": { "total": 1,
+                                                       "valid": 1,
+                                                       "rank": 0 },
+                                         "wp:main": { "total": 1, "valid": 1,
+                                                      "rank": 0 } },
+                           "Qed_0017": { "alt-ergo": { "total": 1,
+                                                       "valid": 1,
+                                                       "rank": 0 },
+                                         "wp:main": { "total": 1, "valid": 1,
+                                                      "rank": 0 } },
+                           "Qed_0016": { "alt-ergo": { "total": 1,
+                                                       "valid": 1,
+                                                       "rank": 0 },
+                                         "wp:main": { "total": 1, "valid": 1,
+                                                      "rank": 0 } },
+                           "Qed_0015": { "alt-ergo": { "total": 1,
+                                                       "valid": 1,
+                                                       "rank": 1 },
+                                         "wp:main": { "total": 1, "valid": 1,
+                                                      "rank": 1 } },
+                           "Qed_0014": { "alt-ergo": { "total": 1,
+                                                       "valid": 1,
+                                                       "rank": 0 },
+                                         "wp:main": { "total": 1, "valid": 1,
+                                                      "rank": 0 } },
+                           "Qed_0013": { "alt-ergo": { "total": 1,
+                                                       "valid": 1,
+                                                       "rank": 1 },
+                                         "wp:main": { "total": 1, "valid": 1,
+                                                      "rank": 1 } },
+                           "Qed_0012": { "alt-ergo": { "total": 1,
+                                                       "valid": 1,
+                                                       "rank": 1 },
+                                         "wp:main": { "total": 1, "valid": 1,
+                                                      "rank": 1 } },
+                           "Qed_0011": { "alt-ergo": { "total": 1,
+                                                       "valid": 1,
+                                                       "rank": 0 },
+                                         "wp:main": { "total": 1, "valid": 1,
+                                                      "rank": 0 } },
+                           "Qed_0010": { "alt-ergo": { "total": 1,
+                                                       "valid": 1,
+                                                       "rank": 0 },
+                                         "wp:main": { "total": 1, "valid": 1,
+                                                      "rank": 0 } },
+                           "Qed_0009": { "alt-ergo": { "total": 1,
+                                                       "valid": 1,
+                                                       "rank": 0 },
+                                         "wp:main": { "total": 1, "valid": 1,
+                                                      "rank": 0 } },
+                           "Qed_0008": { "alt-ergo": { "total": 1,
+                                                       "valid": 1,
+                                                       "rank": 2 },
+                                         "wp:main": { "total": 1, "valid": 1,
+                                                      "rank": 2 } },
+                           "Qed_0007": { "alt-ergo": { "total": 1,
+                                                       "valid": 1,
+                                                       "rank": 0 },
+                                         "wp:main": { "total": 1, "valid": 1,
+                                                      "rank": 0 } },
+                           "Qed_0006": { "alt-ergo": { "total": 1,
+                                                       "valid": 1,
+                                                       "rank": 2 },
+                                         "wp:main": { "total": 1, "valid": 1,
+                                                      "rank": 2 } },
+                           "Qed_0005": { "alt-ergo": { "total": 1,
+                                                       "valid": 1,
+                                                       "rank": 0 },
+                                         "wp:main": { "total": 1, "valid": 1,
+                                                      "rank": 0 } },
+                           "Qed_0004": { "alt-ergo": { "total": 1,
+                                                       "valid": 1,
+                                                       "rank": 0 },
+                                         "wp:main": { "total": 1, "valid": 1,
+                                                      "rank": 0 } },
+                           "Qed_0003": { "alt-ergo": { "total": 1,
+                                                       "valid": 1,
+                                                       "rank": 0 },
+                                         "wp:main": { "total": 1, "valid": 1,
+                                                      "rank": 0 } },
+                           "Qed_0002": { "alt-ergo": { "total": 1,
+                                                       "valid": 1,
+                                                       "rank": 0 },
+                                         "wp:main": { "total": 1, "valid": 1,
+                                                      "rank": 0 } },
+                           "Qed_0001": { "alt-ergo": { "total": 1,
+                                                       "valid": 1,
+                                                       "rank": 0 },
+                                         "wp:main": { "total": 1, "valid": 1,
+                                                      "rank": 0 } },
                            "wp:section": { "alt-ergo": { "total": 77,
                                                          "valid": 77,
                                                          "rank": 3 },
                                            "wp:main": { "total": 77,
                                                         "valid": 77,
                                                         "rank": 3 } } } },
-  "wp:functions": { "f": { "f_post_f1": { "alt-ergo": { "total": 1,
-                                                        "valid": 1,
-                                                        "rank": 1 },
-                                          "wp:main": { "total": 1,
-                                                       "valid": 1,
-                                                       "rank": 1 } },
-                           "f_post_f0": { "alt-ergo": { "total": 1,
-                                                        "valid": 1,
-                                                        "rank": 1 },
-                                          "wp:main": { "total": 1,
-                                                       "valid": 1,
-                                                       "rank": 1 } },
-                           "f_post_o9": { "alt-ergo": { "total": 1,
-                                                        "valid": 1,
-                                                        "rank": 0 },
-                                          "wp:main": { "total": 1,
-                                                       "valid": 1,
-                                                       "rank": 0 } },
-                           "f_post_o8": { "alt-ergo": { "total": 1,
-                                                        "valid": 1,
-                                                        "rank": 0 },
-                                          "wp:main": { "total": 1,
-                                                       "valid": 1,
-                                                       "rank": 0 } },
-                           "f_post_o7": { "alt-ergo": { "total": 1,
-                                                        "valid": 1,
-                                                        "rank": 0 },
-                                          "wp:main": { "total": 1,
-                                                       "valid": 1,
-                                                       "rank": 0 } },
-                           "f_post_o6": { "alt-ergo": { "total": 1,
-                                                        "valid": 1,
-                                                        "rank": 0 },
-                                          "wp:main": { "total": 1,
-                                                       "valid": 1,
-                                                       "rank": 0 } },
-                           "f_post_o5": { "alt-ergo": { "total": 1,
-                                                        "valid": 1,
-                                                        "rank": 0 },
-                                          "wp:main": { "total": 1,
-                                                       "valid": 1,
-                                                       "rank": 0 } },
-                           "f_post_o4": { "qed": { "total": 1, "valid": 1 },
-                                          "wp:main": { "total": 1,
-                                                       "valid": 1 } },
-                           "f_post_o3": { "qed": { "total": 1, "valid": 1 },
-                                          "wp:main": { "total": 1,
-                                                       "valid": 1 } },
-                           "f_post_o2": { "alt-ergo": { "total": 1,
-                                                        "valid": 1,
-                                                        "rank": 0 },
-                                          "wp:main": { "total": 1,
-                                                       "valid": 1,
-                                                       "rank": 0 } },
-                           "f_post_o1": { "alt-ergo": { "total": 1,
-                                                        "valid": 1,
-                                                        "rank": 0 },
-                                          "wp:main": { "total": 1,
-                                                       "valid": 1,
-                                                       "rank": 0 } },
-                           "f_post_o0": { "alt-ergo": { "total": 1,
-                                                        "valid": 1,
-                                                        "rank": 0 },
-                                          "wp:main": { "total": 1,
-                                                       "valid": 1,
-                                                       "rank": 0 } },
-                           "f_post_a9": { "alt-ergo": { "total": 1,
-                                                        "valid": 1,
-                                                        "rank": 0 },
-                                          "wp:main": { "total": 1,
-                                                       "valid": 1,
-                                                       "rank": 0 } },
-                           "f_post_a8": { "alt-ergo": { "total": 1,
-                                                        "valid": 1,
-                                                        "rank": 0 },
-                                          "wp:main": { "total": 1,
-                                                       "valid": 1,
-                                                       "rank": 0 } },
-                           "f_post_a7": { "alt-ergo": { "total": 1,
-                                                        "valid": 1,
-                                                        "rank": 0 },
-                                          "wp:main": { "total": 1,
-                                                       "valid": 1,
-                                                       "rank": 0 } },
-                           "f_post_a6": { "alt-ergo": { "total": 1,
-                                                        "valid": 1,
-                                                        "rank": 0 },
-                                          "wp:main": { "total": 1,
-                                                       "valid": 1,
-                                                       "rank": 0 } },
-                           "f_post_a5": { "alt-ergo": { "total": 1,
-                                                        "valid": 1,
-                                                        "rank": 0 },
-                                          "wp:main": { "total": 1,
-                                                       "valid": 1,
-                                                       "rank": 0 } },
-                           "f_post_a4": { "alt-ergo": { "total": 1,
-                                                        "valid": 1,
-                                                        "rank": 0 },
-                                          "wp:main": { "total": 1,
-                                                       "valid": 1,
-                                                       "rank": 0 } },
-                           "f_post_a3": { "alt-ergo": { "total": 1,
-                                                        "valid": 1,
-                                                        "rank": 0 },
-                                          "wp:main": { "total": 1,
-                                                       "valid": 1,
-                                                       "rank": 0 } },
-                           "f_post_a2": { "alt-ergo": { "total": 1,
-                                                        "valid": 1,
-                                                        "rank": 0 },
-                                          "wp:main": { "total": 1,
-                                                       "valid": 1,
-                                                       "rank": 0 } },
-                           "f_post_a1": { "alt-ergo": { "total": 1,
-                                                        "valid": 1,
-                                                        "rank": 0 },
-                                          "wp:main": { "total": 1,
-                                                       "valid": 1,
-                                                       "rank": 0 } },
-                           "f_post_a0": { "alt-ergo": { "total": 1,
-                                                        "valid": 1,
-                                                        "rank": 0 },
-                                          "wp:main": { "total": 1,
-                                                       "valid": 1,
-                                                       "rank": 0 } },
-                           "f_post_i9": { "alt-ergo": { "total": 1,
-                                                        "valid": 1,
-                                                        "rank": 0 },
-                                          "wp:main": { "total": 1,
-                                                       "valid": 1,
-                                                       "rank": 0 } },
-                           "f_post_i8": { "alt-ergo": { "total": 1,
-                                                        "valid": 1,
-                                                        "rank": 0 },
-                                          "wp:main": { "total": 1,
-                                                       "valid": 1,
-                                                       "rank": 0 } },
-                           "f_post_i7": { "alt-ergo": { "total": 1,
-                                                        "valid": 1,
-                                                        "rank": 2 },
-                                          "wp:main": { "total": 1,
-                                                       "valid": 1,
-                                                       "rank": 2 } },
-                           "f_post_i6": { "alt-ergo": { "total": 1,
-                                                        "valid": 1,
-                                                        "rank": 2 },
-                                          "wp:main": { "total": 1,
-                                                       "valid": 1,
-                                                       "rank": 2 } },
-                           "f_post_i5": { "qed": { "total": 1, "valid": 1 },
-                                          "wp:main": { "total": 1,
-                                                       "valid": 1 } },
-                           "f_post_i4": { "qed": { "total": 1, "valid": 1 },
-                                          "wp:main": { "total": 1,
-                                                       "valid": 1 } },
-                           "f_post_i3": { "alt-ergo": { "total": 1,
-                                                        "valid": 1,
-                                                        "rank": 1 },
-                                          "wp:main": { "total": 1,
-                                                       "valid": 1,
-                                                       "rank": 1 } },
-                           "f_post_i2": { "alt-ergo": { "total": 1,
-                                                        "valid": 1,
-                                                        "rank": 0 },
-                                          "wp:main": { "total": 1,
-                                                       "valid": 1,
-                                                       "rank": 0 } },
-                           "f_post_i1": { "alt-ergo": { "total": 1,
-                                                        "valid": 1,
-                                                        "rank": 1 },
-                                          "wp:main": { "total": 1,
-                                                       "valid": 1,
-                                                       "rank": 1 } },
-                           "f_post_i0": { "qed": { "total": 1, "valid": 1 },
-                                          "wp:main": { "total": 1,
-                                                       "valid": 1 } },
-                           "f_post_p9": { "qed": { "total": 1, "valid": 1 },
-                                          "wp:main": { "total": 1,
-                                                       "valid": 1 } },
-                           "f_post_p8": { "alt-ergo": { "total": 1,
-                                                        "valid": 1,
-                                                        "rank": 1 },
-                                          "wp:main": { "total": 1,
-                                                       "valid": 1,
-                                                       "rank": 1 } },
-                           "f_post_p7": { "alt-ergo": { "total": 1,
-                                                        "valid": 1,
-                                                        "rank": 0 },
-                                          "wp:main": { "total": 1,
-                                                       "valid": 1,
-                                                       "rank": 0 } },
-                           "f_post_p6": { "qed": { "total": 1, "valid": 1 },
-                                          "wp:main": { "total": 1,
-                                                       "valid": 1 } },
-                           "f_post_p5": { "alt-ergo": { "total": 1,
-                                                        "valid": 1,
-                                                        "rank": 1 },
-                                          "wp:main": { "total": 1,
-                                                       "valid": 1,
-                                                       "rank": 1 } },
-                           "f_post_p4": { "qed": { "total": 1, "valid": 1 },
-                                          "wp:main": { "total": 1,
-                                                       "valid": 1 } },
-                           "f_post_p3": { "alt-ergo": { "total": 1,
-                                                        "valid": 1,
-                                                        "rank": 0 },
-                                          "wp:main": { "total": 1,
-                                                       "valid": 1,
-                                                       "rank": 0 } },
-                           "f_post_p2": { "alt-ergo": { "total": 1,
-                                                        "valid": 1,
-                                                        "rank": 0 },
-                                          "wp:main": { "total": 1,
-                                                       "valid": 1,
-                                                       "rank": 0 } },
-                           "f_post_p1": { "alt-ergo": { "total": 1,
-                                                        "valid": 1,
-                                                        "rank": 1 },
-                                          "wp:main": { "total": 1,
-                                                       "valid": 1,
-                                                       "rank": 1 } },
-                           "f_post_p0": { "alt-ergo": { "total": 1,
-                                                        "valid": 1,
-                                                        "rank": 0 },
-                                          "wp:main": { "total": 1,
-                                                       "valid": 1,
-                                                       "rank": 0 } },
+  "wp:functions": { "f": { "f_ensures_f1": { "alt-ergo": { "total": 1,
+                                                           "valid": 1,
+                                                           "rank": 2 },
+                                             "wp:main": { "total": 1,
+                                                          "valid": 1,
+                                                          "rank": 2 } },
+                           "f_ensures_f0": { "alt-ergo": { "total": 1,
+                                                           "valid": 1,
+                                                           "rank": 2 },
+                                             "wp:main": { "total": 1,
+                                                          "valid": 1,
+                                                          "rank": 2 } },
+                           "f_ensures_o9": { "alt-ergo": { "total": 1,
+                                                           "valid": 1,
+                                                           "rank": 0 },
+                                             "wp:main": { "total": 1,
+                                                          "valid": 1,
+                                                          "rank": 0 } },
+                           "f_ensures_o8": { "alt-ergo": { "total": 1,
+                                                           "valid": 1,
+                                                           "rank": 0 },
+                                             "wp:main": { "total": 1,
+                                                          "valid": 1,
+                                                          "rank": 0 } },
+                           "f_ensures_o7": { "alt-ergo": { "total": 1,
+                                                           "valid": 1,
+                                                           "rank": 0 },
+                                             "wp:main": { "total": 1,
+                                                          "valid": 1,
+                                                          "rank": 0 } },
+                           "f_ensures_o6": { "alt-ergo": { "total": 1,
+                                                           "valid": 1,
+                                                           "rank": 0 },
+                                             "wp:main": { "total": 1,
+                                                          "valid": 1,
+                                                          "rank": 0 } },
+                           "f_ensures_o5": { "alt-ergo": { "total": 1,
+                                                           "valid": 1,
+                                                           "rank": 0 },
+                                             "wp:main": { "total": 1,
+                                                          "valid": 1,
+                                                          "rank": 0 } },
+                           "f_ensures_o4": { "qed": { "total": 1,
+                                                      "valid": 1 },
+                                             "wp:main": { "total": 1,
+                                                          "valid": 1 } },
+                           "f_ensures_o3": { "qed": { "total": 1,
+                                                      "valid": 1 },
+                                             "wp:main": { "total": 1,
+                                                          "valid": 1 } },
+                           "f_ensures_o2": { "alt-ergo": { "total": 1,
+                                                           "valid": 1,
+                                                           "rank": 0 },
+                                             "wp:main": { "total": 1,
+                                                          "valid": 1,
+                                                          "rank": 0 } },
+                           "f_ensures_o1": { "alt-ergo": { "total": 1,
+                                                           "valid": 1,
+                                                           "rank": 0 },
+                                             "wp:main": { "total": 1,
+                                                          "valid": 1,
+                                                          "rank": 0 } },
+                           "f_ensures_o0": { "alt-ergo": { "total": 1,
+                                                           "valid": 1,
+                                                           "rank": 0 },
+                                             "wp:main": { "total": 1,
+                                                          "valid": 1,
+                                                          "rank": 0 } },
+                           "f_ensures_a9": { "alt-ergo": { "total": 1,
+                                                           "valid": 1,
+                                                           "rank": 0 },
+                                             "wp:main": { "total": 1,
+                                                          "valid": 1,
+                                                          "rank": 0 } },
+                           "f_ensures_a8": { "alt-ergo": { "total": 1,
+                                                           "valid": 1,
+                                                           "rank": 0 },
+                                             "wp:main": { "total": 1,
+                                                          "valid": 1,
+                                                          "rank": 0 } },
+                           "f_ensures_a7": { "alt-ergo": { "total": 1,
+                                                           "valid": 1,
+                                                           "rank": 0 },
+                                             "wp:main": { "total": 1,
+                                                          "valid": 1,
+                                                          "rank": 0 } },
+                           "f_ensures_a6": { "alt-ergo": { "total": 1,
+                                                           "valid": 1,
+                                                           "rank": 0 },
+                                             "wp:main": { "total": 1,
+                                                          "valid": 1,
+                                                          "rank": 0 } },
+                           "f_ensures_a5": { "alt-ergo": { "total": 1,
+                                                           "valid": 1,
+                                                           "rank": 0 },
+                                             "wp:main": { "total": 1,
+                                                          "valid": 1,
+                                                          "rank": 0 } },
+                           "f_ensures_a4": { "alt-ergo": { "total": 1,
+                                                           "valid": 1,
+                                                           "rank": 0 },
+                                             "wp:main": { "total": 1,
+                                                          "valid": 1,
+                                                          "rank": 0 } },
+                           "f_ensures_a3": { "alt-ergo": { "total": 1,
+                                                           "valid": 1,
+                                                           "rank": 0 },
+                                             "wp:main": { "total": 1,
+                                                          "valid": 1,
+                                                          "rank": 0 } },
+                           "f_ensures_a2": { "alt-ergo": { "total": 1,
+                                                           "valid": 1,
+                                                           "rank": 0 },
+                                             "wp:main": { "total": 1,
+                                                          "valid": 1,
+                                                          "rank": 0 } },
+                           "f_ensures_a1": { "alt-ergo": { "total": 1,
+                                                           "valid": 1,
+                                                           "rank": 1 },
+                                             "wp:main": { "total": 1,
+                                                          "valid": 1,
+                                                          "rank": 1 } },
+                           "f_ensures_a0": { "alt-ergo": { "total": 1,
+                                                           "valid": 1,
+                                                           "rank": 0 },
+                                             "wp:main": { "total": 1,
+                                                          "valid": 1,
+                                                          "rank": 0 } },
+                           "f_ensures_i9": { "alt-ergo": { "total": 1,
+                                                           "valid": 1,
+                                                           "rank": 0 },
+                                             "wp:main": { "total": 1,
+                                                          "valid": 1,
+                                                          "rank": 0 } },
+                           "f_ensures_i8": { "alt-ergo": { "total": 1,
+                                                           "valid": 1,
+                                                           "rank": 0 },
+                                             "wp:main": { "total": 1,
+                                                          "valid": 1,
+                                                          "rank": 0 } },
+                           "f_ensures_i7": { "alt-ergo": { "total": 1,
+                                                           "valid": 1,
+                                                           "rank": 2 },
+                                             "wp:main": { "total": 1,
+                                                          "valid": 1,
+                                                          "rank": 2 } },
+                           "f_ensures_i6": { "alt-ergo": { "total": 1,
+                                                           "valid": 1,
+                                                           "rank": 2 },
+                                             "wp:main": { "total": 1,
+                                                          "valid": 1,
+                                                          "rank": 2 } },
+                           "f_ensures_i5": { "qed": { "total": 1,
+                                                      "valid": 1 },
+                                             "wp:main": { "total": 1,
+                                                          "valid": 1 } },
+                           "f_ensures_i4": { "qed": { "total": 1,
+                                                      "valid": 1 },
+                                             "wp:main": { "total": 1,
+                                                          "valid": 1 } },
+                           "f_ensures_i3": { "alt-ergo": { "total": 1,
+                                                           "valid": 1,
+                                                           "rank": 2 },
+                                             "wp:main": { "total": 1,
+                                                          "valid": 1,
+                                                          "rank": 2 } },
+                           "f_ensures_i2": { "alt-ergo": { "total": 1,
+                                                           "valid": 1,
+                                                           "rank": 0 },
+                                             "wp:main": { "total": 1,
+                                                          "valid": 1,
+                                                          "rank": 0 } },
+                           "f_ensures_i1": { "alt-ergo": { "total": 1,
+                                                           "valid": 1,
+                                                           "rank": 2 },
+                                             "wp:main": { "total": 1,
+                                                          "valid": 1,
+                                                          "rank": 2 } },
+                           "f_ensures_i0": { "qed": { "total": 1,
+                                                      "valid": 1 },
+                                             "wp:main": { "total": 1,
+                                                          "valid": 1 } },
+                           "f_ensures_p9": { "qed": { "total": 1,
+                                                      "valid": 1 },
+                                             "wp:main": { "total": 1,
+                                                          "valid": 1 } },
+                           "f_ensures_p8": { "alt-ergo": { "total": 1,
+                                                           "valid": 1,
+                                                           "rank": 2 },
+                                             "wp:main": { "total": 1,
+                                                          "valid": 1,
+                                                          "rank": 2 } },
+                           "f_ensures_p7": { "alt-ergo": { "total": 1,
+                                                           "valid": 1,
+                                                           "rank": 0 },
+                                             "wp:main": { "total": 1,
+                                                          "valid": 1,
+                                                          "rank": 0 } },
+                           "f_ensures_p6": { "qed": { "total": 1,
+                                                      "valid": 1 },
+                                             "wp:main": { "total": 1,
+                                                          "valid": 1 } },
+                           "f_ensures_p5": { "alt-ergo": { "total": 1,
+                                                           "valid": 1,
+                                                           "rank": 2 },
+                                             "wp:main": { "total": 1,
+                                                          "valid": 1,
+                                                          "rank": 2 } },
+                           "f_ensures_p4": { "qed": { "total": 1,
+                                                      "valid": 1 },
+                                             "wp:main": { "total": 1,
+                                                          "valid": 1 } },
+                           "f_ensures_p3": { "alt-ergo": { "total": 1,
+                                                           "valid": 1,
+                                                           "rank": 0 },
+                                             "wp:main": { "total": 1,
+                                                          "valid": 1,
+                                                          "rank": 0 } },
+                           "f_ensures_p2": { "alt-ergo": { "total": 1,
+                                                           "valid": 1,
+                                                           "rank": 0 },
+                                             "wp:main": { "total": 1,
+                                                          "valid": 1,
+                                                          "rank": 0 } },
+                           "f_ensures_p1": { "alt-ergo": { "total": 1,
+                                                           "valid": 1,
+                                                           "rank": 2 },
+                                             "wp:main": { "total": 1,
+                                                          "valid": 1,
+                                                          "rank": 2 } },
+                           "f_ensures_p0": { "alt-ergo": { "total": 1,
+                                                           "valid": 1,
+                                                           "rank": 1 },
+                                             "wp:main": { "total": 1,
+                                                          "valid": 1,
+                                                          "rank": 1 } },
                            "wp:section": { "alt-ergo": { "total": 34,
                                                          "valid": 34,
                                                          "rank": 2 },
diff --git a/src/plugins/wp/tests/wp_acsl/equal.i.0.report.json b/src/plugins/wp/tests/wp_acsl/equal.i.0.report.json
index df2fc6fa43a89a0724d706d43dda02153146db91..2afde0a0ad7a95fae27abec86f30384ead3f0c52 100644
--- a/src/plugins/wp/tests/wp_acsl/equal.i.0.report.json
+++ b/src/plugins/wp/tests/wp_acsl/equal.i.0.report.json
@@ -1,75 +1,75 @@
-{ "wp:global": { "alt-ergo": { "total": 5, "valid": 5, "rank": 7 },
+{ "wp:global": { "alt-ergo": { "total": 5, "valid": 5, "rank": 8 },
                  "qed": { "total": 1, "valid": 1 },
-                 "wp:main": { "total": 6, "valid": 6, "rank": 7 } },
-  "wp:functions": { "simple_struct": { "simple_struct_post": { "qed": 
-                                                                 { "total": 1,
-                                                                   "valid": 1 },
-                                                               "wp:main": 
-                                                                 { "total": 1,
-                                                                   "valid": 1 } },
+                 "wp:main": { "total": 6, "valid": 6, "rank": 8 } },
+  "wp:functions": { "simple_struct": { "simple_struct_ensures": { "qed": 
+                                                                    { "total": 1,
+                                                                    "valid": 1 },
+                                                                  "wp:main": 
+                                                                    { "total": 1,
+                                                                    "valid": 1 } },
                                        "wp:section": { "qed": { "total": 1,
                                                                 "valid": 1 },
                                                        "wp:main": { "total": 1,
                                                                     "valid": 1 } } },
-                    "simple_array": { "simple_array_post": { "alt-ergo": 
-                                                               { "total": 1,
-                                                                 "valid": 1,
-                                                                 "rank": 4 },
-                                                             "wp:main": 
-                                                               { "total": 1,
-                                                                 "valid": 1,
-                                                                 "rank": 4 } },
+                    "simple_array": { "simple_array_ensures": { "alt-ergo": 
+                                                                  { "total": 1,
+                                                                    "valid": 1,
+                                                                    "rank": 4 },
+                                                                "wp:main": 
+                                                                  { "total": 1,
+                                                                    "valid": 1,
+                                                                    "rank": 4 } },
                                       "wp:section": { "alt-ergo": { "total": 1,
                                                                     "valid": 1,
                                                                     "rank": 4 },
                                                       "wp:main": { "total": 1,
                                                                    "valid": 1,
                                                                    "rank": 4 } } },
-                    "with_array_struct": { "with_array_struct_post": 
+                    "with_array_struct": { "with_array_struct_ensures": 
                                              { "alt-ergo": { "total": 1,
                                                              "valid": 1,
-                                                             "rank": 3 },
+                                                             "rank": 4 },
                                                "wp:main": { "total": 1,
                                                             "valid": 1,
-                                                            "rank": 3 } },
+                                                            "rank": 4 } },
                                            "wp:section": { "alt-ergo": 
                                                              { "total": 1,
                                                                "valid": 1,
-                                                               "rank": 3 },
+                                                               "rank": 4 },
                                                            "wp:main": 
                                                              { "total": 1,
                                                                "valid": 1,
-                                                               "rank": 3 } } },
-                    "with_ptr_struct": { "with_ptr_struct_post": { "alt-ergo": 
+                                                               "rank": 4 } } },
+                    "with_ptr_struct": { "with_ptr_struct_ensures": { "alt-ergo": 
                                                                     { "total": 1,
                                                                     "valid": 1,
-                                                                    "rank": 1 },
-                                                                   "wp:main": 
+                                                                    "rank": 3 },
+                                                                    "wp:main": 
                                                                     { "total": 1,
                                                                     "valid": 1,
-                                                                    "rank": 1 } },
+                                                                    "rank": 3 } },
                                          "wp:section": { "alt-ergo": 
                                                            { "total": 1,
                                                              "valid": 1,
-                                                             "rank": 1 },
+                                                             "rank": 3 },
                                                          "wp:main": { "total": 1,
                                                                     "valid": 1,
-                                                                    "rank": 1 } } },
-                    "with_ptr_array": { "with_ptr_array_post": { "alt-ergo": 
-                                                                   { "total": 1,
+                                                                    "rank": 3 } } },
+                    "with_ptr_array": { "with_ptr_array_ensures": { "alt-ergo": 
+                                                                    { "total": 1,
                                                                     "valid": 1,
-                                                                    "rank": 3 },
-                                                                 "wp:main": 
-                                                                   { "total": 1,
+                                                                    "rank": 4 },
+                                                                    "wp:main": 
+                                                                    { "total": 1,
                                                                     "valid": 1,
-                                                                    "rank": 3 } },
+                                                                    "rank": 4 } },
                                         "wp:section": { "alt-ergo": { "total": 1,
                                                                     "valid": 1,
-                                                                    "rank": 3 },
+                                                                    "rank": 4 },
                                                         "wp:main": { "total": 1,
                                                                     "valid": 1,
-                                                                    "rank": 3 } } },
-                    "with_ptr_and_array_struct": { "with_ptr_and_array_struct_post": 
+                                                                    "rank": 4 } } },
+                    "with_ptr_and_array_struct": { "with_ptr_and_array_struct_ensures": 
                                                      { "alt-ergo": { "total": 1,
                                                                     "valid": 1,
                                                                     "rank": 7 },
diff --git a/src/plugins/wp/tests/wp_acsl/funvar_inv.i.0.report.json b/src/plugins/wp/tests/wp_acsl/funvar_inv.i.0.report.json
index 3983dfdf97939afea2aea6a13b13249858667c74..798d459f646ea58a686252d9745495b2787cbbe6 100644
--- a/src/plugins/wp/tests/wp_acsl/funvar_inv.i.0.report.json
+++ b/src/plugins/wp/tests/wp_acsl/funvar_inv.i.0.report.json
@@ -1,23 +1,23 @@
 { "wp:global": { "qed": { "total": 3, "valid": 3 },
                  "wp:main": { "total": 3, "valid": 3 } },
-  "wp:functions": { "f": { "f_loop_assign": { "qed": { "total": 1,
-                                                       "valid": 1 },
-                                              "wp:main": { "total": 1,
-                                                           "valid": 1 } },
+  "wp:functions": { "f": { "f_loop_assigns": { "qed": { "total": 1,
+                                                        "valid": 1 },
+                                               "wp:main": { "total": 1,
+                                                            "valid": 1 } },
                            "wp:section": { "qed": { "total": 1, "valid": 1 },
                                            "wp:main": { "total": 1,
                                                         "valid": 1 } } },
-                    "f2": { "f2_loop_assign": { "qed": { "total": 1,
-                                                         "valid": 1 },
-                                                "wp:main": { "total": 1,
-                                                             "valid": 1 } },
+                    "f2": { "f2_loop_assigns": { "qed": { "total": 1,
+                                                          "valid": 1 },
+                                                 "wp:main": { "total": 1,
+                                                              "valid": 1 } },
                             "wp:section": { "qed": { "total": 1, "valid": 1 },
                                             "wp:main": { "total": 1,
                                                          "valid": 1 } } },
-                    "g": { "g_loop_assign": { "qed": { "total": 1,
-                                                       "valid": 1 },
-                                              "wp:main": { "total": 1,
-                                                           "valid": 1 } },
+                    "g": { "g_loop_assigns": { "qed": { "total": 1,
+                                                        "valid": 1 },
+                                               "wp:main": { "total": 1,
+                                                            "valid": 1 } },
                            "wp:section": { "qed": { "total": 1, "valid": 1 },
                                            "wp:main": { "total": 1,
                                                         "valid": 1 } } } } }
diff --git a/src/plugins/wp/tests/wp_acsl/implicit_enum_cast.i.0.report.json b/src/plugins/wp/tests/wp_acsl/implicit_enum_cast.i.0.report.json
index f374dc090cf064d168175b01954a44a584a9dc3b..ed396bf7e2986b4e9eee657b6c51541ae3c34d3d 100644
--- a/src/plugins/wp/tests/wp_acsl/implicit_enum_cast.i.0.report.json
+++ b/src/plugins/wp/tests/wp_acsl/implicit_enum_cast.i.0.report.json
@@ -1,12 +1,13 @@
 { "wp:global": { "qed": { "total": 9, "valid": 9 },
                  "wp:main": { "total": 9, "valid": 9 } },
-  "wp:functions": { "bar": { "bar_assign": { "qed": { "total": 8,
-                                                      "valid": 8 },
-                                             "wp:main": { "total": 8,
-                                                          "valid": 8 } },
-                             "bar_post": { "qed": { "total": 1, "valid": 1 },
-                                           "wp:main": { "total": 1,
-                                                        "valid": 1 } },
+  "wp:functions": { "bar": { "bar_assigns": { "qed": { "total": 8,
+                                                       "valid": 8 },
+                                              "wp:main": { "total": 8,
+                                                           "valid": 8 } },
+                             "bar_ensures": { "qed": { "total": 1,
+                                                       "valid": 1 },
+                                              "wp:main": { "total": 1,
+                                                           "valid": 1 } },
                              "wp:section": { "qed": { "total": 9,
                                                       "valid": 9 },
                                              "wp:main": { "total": 9,
diff --git a/src/plugins/wp/tests/wp_acsl/init_label.i.0.report.json b/src/plugins/wp/tests/wp_acsl/init_label.i.0.report.json
index 81a337fa1fbd2bfb2c9372356b869ed194937958..3d33c8c50aa7c8d908c3718f8ff99be5e4a3bac1 100644
--- a/src/plugins/wp/tests/wp_acsl/init_label.i.0.report.json
+++ b/src/plugins/wp/tests/wp_acsl/init_label.i.0.report.json
@@ -3,38 +3,38 @@
                  "qed": { "total": 2, "valid": 2 },
                  "wp:main": { "total": 4, "valid": 3, "unknown": 1,
                               "rank": 5 } },
-  "wp:functions": { "main": { "main_pre_OK": { "qed": { "total": 1,
-                                                        "valid": 1 },
-                                               "wp:main": { "total": 1,
-                                                            "valid": 1 } },
+  "wp:functions": { "main": { "main_requires_OK": { "qed": { "total": 1,
+                                                             "valid": 1 },
+                                                    "wp:main": { "total": 1,
+                                                                 "valid": 1 } },
                               "wp:section": { "qed": { "total": 1,
                                                        "valid": 1 },
                                               "wp:main": { "total": 1,
                                                            "valid": 1 } } },
-                    "job": { "job_post_OK": { "alt-ergo": { "total": 1,
-                                                            "valid": 1,
-                                                            "rank": 5 },
-                                              "wp:main": { "total": 1,
-                                                           "valid": 1,
-                                                           "rank": 5 } },
+                    "job": { "job_ensures_OK": { "alt-ergo": { "total": 1,
+                                                               "valid": 1,
+                                                               "rank": 5 },
+                                                 "wp:main": { "total": 1,
+                                                              "valid": 1,
+                                                              "rank": 5 } },
                              "wp:section": { "alt-ergo": { "total": 1,
                                                            "valid": 1,
                                                            "rank": 5 },
                                              "wp:main": { "total": 1,
                                                           "valid": 1,
                                                           "rank": 5 } } },
-                    "foreign": { "foreign_post_OK": { "qed": { "total": 1,
-                                                               "valid": 1 },
-                                                      "wp:main": { "total": 1,
-                                                                   "valid": 1 } },
+                    "foreign": { "foreign_ensures_OK": { "qed": { "total": 1,
+                                                                  "valid": 1 },
+                                                         "wp:main": { "total": 1,
+                                                                    "valid": 1 } },
                                  "wp:section": { "qed": { "total": 1,
                                                           "valid": 1 },
                                                  "wp:main": { "total": 1,
                                                               "valid": 1 } } },
-                    "extra": { "extra_post_KO": { "alt-ergo": { "total": 1,
-                                                                "unknown": 1 },
-                                                  "wp:main": { "total": 1,
-                                                               "unknown": 1 } },
+                    "extra": { "extra_ensures_KO": { "alt-ergo": { "total": 1,
+                                                                   "unknown": 1 },
+                                                     "wp:main": { "total": 1,
+                                                                  "unknown": 1 } },
                                "wp:section": { "alt-ergo": { "total": 1,
                                                              "unknown": 1 },
                                                "wp:main": { "total": 1,
diff --git a/src/plugins/wp/tests/wp_acsl/init_value.i b/src/plugins/wp/tests/wp_acsl/init_value.i
index 382ae866678afdd2183fd0ef54a7f9a2e88625e0..b9d9caeabadd4510e4a64607a265906f70f4274c 100644
--- a/src/plugins/wp/tests/wp_acsl/init_value.i
+++ b/src/plugins/wp/tests/wp_acsl/init_value.i
@@ -1,9 +1,9 @@
 /* run.config
-   OPT:
-   OPT: -main main_ko
+   OPT: -wp-init-const -wp-no-let
+   OPT: -main main_ko -wp-no-let
 */
 /* run.config_qualif
-   OPT: -wp -wp-par 1 -wp-prop="-qed_ko"
+   OPT: -wp-init-const -wp -wp-par 1 -wp-prop="-qed_ko"
    OPT: -main main_ko -wp-par 1 -wp-prop qed_ko -wp-steps 50
 */
 
@@ -11,25 +11,33 @@
 /* --- GOAL: partial and complete initialization of value                 --- */
 /* -------------------------------------------------------------------------- */
 
-struct S { int a; int b;}; 
+struct S { int a; int b;};
 
 struct S s = {2};
 
 int t[2] = {1}; 
+int t1[9+1] = {[5 ... 6]=2, [0 ... 3 ]=1  };
 
-struct St {int tab[10];};
+struct St {int tab[9+1];};
 struct St st = {{1,2,3,4}};
 
-struct Sc {int a; int b[3]; int c;}; 
+struct Sc {int a; int b[2+1]; int c;}; 
 
 struct Sc sc0 = {1,{2,3,4},5};
 struct Sc sc1 = {1,2,3,4,5};
-struct Sc sc2 = {1,{2,3},4}; 
+struct Sc sc2 = {1,{2,3},4};
 struct Sc sc3 = {1,2,3,4};
 
+struct Sc sq0 = {2,{2,2},2};
+struct Sc sq1 = {.b={2,2}};
+
 unsigned char tab[32];
 
-int u [];
+union U {
+  short t[4];
+  short a;
+  long long b;
+} u = {.a=-1 };
 
 /*@ requires qed_ok: Struct_Simple_a: s.a == 2 ;
     requires qed_ok: Struct_Simple_b: s.b == 0 ;
@@ -44,8 +52,15 @@ int u [];
     requires qed_ok: Sc_c_3 : sc3.c == 0;
     requires qed_ok: Tab_no_init : tab[5] == 0 ; 
     requires qed_ok: Tab_todo : \forall int i; 0 <= i <= 31 ==> tab[i] <= 255;
+    requires qed_ok: sq0.b[1]==2;
+    requires qed_ok: sq0.b[2]==0;
+    requires qed_ok: \forall integer i; 0 <= i <= 3 ==> t1[i] == 1;
+    requires qed_ok: todo: t1[4] == 0;
+    requires qed_ok: \forall integer i; 5 <  i <= 6 ==> t1[i] == 2;
+    requires qed_ok: \forall integer i; 6 <  i <= 9 ==> t1[i] == 0;
+    requires qed_ok: direct_init_union: u.a == -1;
  */
-void main (void){return;}
+void main (int a){return;};
 
 /*@ requires qed_ko: Sc_eq_ko : sc2 == sc3; 
     requires qed_ko: Sc_t : sc3.b[2] == 3 ;
@@ -53,6 +68,33 @@ void main (void){return;}
     requires qed_ko: Tab_no_init : tab[5] == 1 ; 
     requires qed_ko: With_Array_Struct_3 : st.tab[3] == 3 ; 
     requires qed_ko: Simple_Array_1 : t[1] == 1 ; 
+    requires qed_ko: T1_6: t1[6] == 0;
+    requires qed_ko: indirect_init_union_b: u.b == 0;
+    requires qed_ko: indirect_init_union_t: u.t[0] == 0;
  */
 void main_ko (void){return;}
 
+const int ta1[5] = { [2]=1,[4]=1 };
+/*@ ensures qed_ok: ta1[0]==ta1[1] && ta1[1]==ta1[3];
+  @ ensures qed_ko: ta1[4]==0;
+  @ ensures qed_ko: ta1[3]==1; */
+void fa1(void) {return ;}
+
+const int ta2[5] = { [2 ... 3]=1 };
+/*@ ensures qed_ok: ta2[0]==ta2[1] && ta2[1]==ta2[4];
+  @ ensures qed_ko: ta2[4]==1;
+  @ ensures qed_ko: ta2[1]==1; */
+void fa2(void) {return ;}
+
+const int ta3[5] = { [1]=1, [3]=1};
+/*@ ensures qed_ok: ta3[0]==ta3[2] && ta1[2]==ta1[4];
+  @ ensures qed_ko: ta3[0]==1;
+  @ ensures qed_ko: ta3[2]==1;
+  @ ensures qed_ko: ta2[4]==1; */
+void fa3(void) {return ;}
+
+const struct { int a, b, c; } ts1[4] = { [2].a=1, [2].b=1 };
+/*@ ensures qed_ok: ts1[0]==ts1[1] && ts1[1]==ts1[3] && ts1[2].a ==ts1[2].b;
+  @ ensures qed_ko: ts1[2].c==1;
+  @ ensures qed_ko: ts1[0].a==1;*/
+void fs1(void) {return ;}
diff --git a/src/plugins/wp/tests/wp_acsl/init_value.i.0.report.json b/src/plugins/wp/tests/wp_acsl/init_value.i.0.report.json
index 24349b32c01b0a4eff5f6e5927b4825c7cf3f059..577a3f779da8f885a59f3b5dc6353e0b41ac3db5 100644
--- a/src/plugins/wp/tests/wp_acsl/init_value.i.0.report.json
+++ b/src/plugins/wp/tests/wp_acsl/init_value.i.0.report.json
@@ -1,83 +1,153 @@
-{ "wp:global": { "alt-ergo": { "total": 3, "valid": 3, "rank": 8 },
-                 "qed": { "total": 10, "valid": 10 },
-                 "wp:main": { "total": 13, "valid": 13, "rank": 8 } },
-  "wp:functions": { "main": { "main_pre_qed_ok_Tab_todo": { "alt-ergo": 
-                                                              { "total": 1,
-                                                                "valid": 1,
-                                                                "rank": 2 },
-                                                            "wp:main": 
-                                                              { "total": 1,
-                                                                "valid": 1,
-                                                                "rank": 2 } },
-                              "main_pre_qed_ok_Tab_no_init": { "qed": 
-                                                                 { "total": 1,
-                                                                   "valid": 1 },
-                                                               "wp:main": 
-                                                                 { "total": 1,
-                                                                   "valid": 1 } },
-                              "main_pre_qed_ok_Sc_c_3": { "qed": { "total": 1,
-                                                                   "valid": 1 },
+{ "wp:global": { "alt-ergo": { "total": 7, "valid": 7, "rank": 29 },
+                 "qed": { "total": 17, "valid": 17 },
+                 "wp:main": { "total": 24, "valid": 24, "rank": 29 } },
+  "wp:functions": { "main": { "main_requires_qed_ok_direct_init_union": 
+                                { "qed": { "total": 1, "valid": 1 },
+                                  "wp:main": { "total": 1, "valid": 1 } },
+                              "main_requires_qed_ok_5": { "alt-ergo": 
+                                                            { "total": 1,
+                                                              "valid": 1,
+                                                              "rank": 2 },
                                                           "wp:main": 
                                                             { "total": 1,
-                                                              "valid": 1 } },
-                              "main_pre_qed_ok_Sc_c_2": { "qed": { "total": 1,
-                                                                   "valid": 1 },
+                                                              "valid": 1,
+                                                              "rank": 2 } },
+                              "main_requires_qed_ok_4": { "alt-ergo": 
+                                                            { "total": 1,
+                                                              "valid": 1,
+                                                              "rank": 2 },
                                                           "wp:main": 
                                                             { "total": 1,
-                                                              "valid": 1 } },
-                              "main_pre_qed_ok_Sc_t_2": { "qed": { "total": 1,
+                                                              "valid": 1,
+                                                              "rank": 2 } },
+                              "main_requires_qed_ok_todo": { "qed": { "total": 1,
+                                                                    "valid": 1 },
+                                                             "wp:main": 
+                                                               { "total": 1,
+                                                                 "valid": 1 } },
+                              "main_requires_qed_ok_3": { "alt-ergo": 
+                                                            { "total": 1,
+                                                              "valid": 1,
+                                                              "rank": 2 },
+                                                          "wp:main": 
+                                                            { "total": 1,
+                                                              "valid": 1,
+                                                              "rank": 2 } },
+                              "main_requires_qed_ok_2": { "qed": { "total": 1,
                                                                    "valid": 1 },
                                                           "wp:main": 
                                                             { "total": 1,
                                                               "valid": 1 } },
-                              "main_pre_qed_ok_Sc_t": { "qed": { "total": 1,
+                              "main_requires_qed_ok": { "qed": { "total": 1,
                                                                  "valid": 1 },
                                                         "wp:main": { "total": 1,
                                                                     "valid": 1 } },
-                              "main_pre_qed_ok_Sc_eq": { "alt-ergo": 
-                                                           { "total": 1,
-                                                             "valid": 1,
-                                                             "rank": 8 },
-                                                         "wp:main": { "total": 1,
-                                                                    "valid": 1,
-                                                                    "rank": 8 } },
-                              "main_pre_qed_ok_With_Array_Struct_3": 
-                                { "qed": { "total": 1, "valid": 1 },
-                                  "wp:main": { "total": 1, "valid": 1 } },
-                              "main_pre_qed_ok_With_Array_Struct_5": 
-                                { "qed": { "total": 1, "valid": 1 },
-                                  "wp:main": { "total": 1, "valid": 1 } },
-                              "main_pre_qed_ok_Simple_Array_1": { "alt-ergo": 
-                                                                    { "total": 1,
+                              "main_requires_qed_ok_Tab_todo": { "alt-ergo": 
+                                                                   { "total": 1,
                                                                     "valid": 1,
-                                                                    "rank": 3 },
-                                                                  "wp:main": 
-                                                                    { "total": 1,
+                                                                    "rank": 2 },
+                                                                 "wp:main": 
+                                                                   { "total": 1,
                                                                     "valid": 1,
-                                                                    "rank": 3 } },
-                              "main_pre_qed_ok_Simple_Array_0": { "qed": 
-                                                                    { "total": 1,
-                                                                    "valid": 1 },
-                                                                  "wp:main": 
-                                                                    { "total": 1,
-                                                                    "valid": 1 } },
-                              "main_pre_qed_ok_Struct_Simple_b": { "qed": 
+                                                                    "rank": 2 } },
+                              "main_requires_qed_ok_Tab_no_init": { "qed": 
                                                                     { "total": 1,
                                                                     "valid": 1 },
-                                                                   "wp:main": 
+                                                                    "wp:main": 
                                                                     { "total": 1,
                                                                     "valid": 1 } },
-                              "main_pre_qed_ok_Struct_Simple_a": { "qed": 
-                                                                    { "total": 1,
+                              "main_requires_qed_ok_Sc_c_3": { "qed": 
+                                                                 { "total": 1,
+                                                                   "valid": 1 },
+                                                               "wp:main": 
+                                                                 { "total": 1,
+                                                                   "valid": 1 } },
+                              "main_requires_qed_ok_Sc_c_2": { "qed": 
+                                                                 { "total": 1,
+                                                                   "valid": 1 },
+                                                               "wp:main": 
+                                                                 { "total": 1,
+                                                                   "valid": 1 } },
+                              "main_requires_qed_ok_Sc_t_2": { "qed": 
+                                                                 { "total": 1,
+                                                                   "valid": 1 },
+                                                               "wp:main": 
+                                                                 { "total": 1,
+                                                                   "valid": 1 } },
+                              "main_requires_qed_ok_Sc_t": { "qed": { "total": 1,
                                                                     "valid": 1 },
-                                                                   "wp:main": 
-                                                                    { "total": 1,
-                                                                    "valid": 1 } },
-                              "wp:section": { "alt-ergo": { "total": 3,
-                                                            "valid": 3,
+                                                             "wp:main": 
+                                                               { "total": 1,
+                                                                 "valid": 1 } },
+                              "main_requires_qed_ok_Sc_eq": { "alt-ergo": 
+                                                                { "total": 1,
+                                                                  "valid": 1,
+                                                                  "rank": 8 },
+                                                              "wp:main": 
+                                                                { "total": 1,
+                                                                  "valid": 1,
+                                                                  "rank": 8 } },
+                              "main_requires_qed_ok_With_Array_Struct_3": 
+                                { "qed": { "total": 1, "valid": 1 },
+                                  "wp:main": { "total": 1, "valid": 1 } },
+                              "main_requires_qed_ok_With_Array_Struct_5": 
+                                { "qed": { "total": 1, "valid": 1 },
+                                  "wp:main": { "total": 1, "valid": 1 } },
+                              "main_requires_qed_ok_Simple_Array_1": 
+                                { "alt-ergo": { "total": 1, "valid": 1,
+                                                "rank": 3 },
+                                  "wp:main": { "total": 1, "valid": 1,
+                                               "rank": 3 } },
+                              "main_requires_qed_ok_Simple_Array_0": 
+                                { "qed": { "total": 1, "valid": 1 },
+                                  "wp:main": { "total": 1, "valid": 1 } },
+                              "main_requires_qed_ok_Struct_Simple_b": 
+                                { "qed": { "total": 1, "valid": 1 },
+                                  "wp:main": { "total": 1, "valid": 1 } },
+                              "main_requires_qed_ok_Struct_Simple_a": 
+                                { "qed": { "total": 1, "valid": 1 },
+                                  "wp:main": { "total": 1, "valid": 1 } },
+                              "wp:section": { "alt-ergo": { "total": 6,
+                                                            "valid": 6,
                                                             "rank": 8 },
-                                              "qed": { "total": 10,
-                                                       "valid": 10 },
-                                              "wp:main": { "total": 13,
-                                                           "valid": 13,
-                                                           "rank": 8 } } } } }
+                                              "qed": { "total": 14,
+                                                       "valid": 14 },
+                                              "wp:main": { "total": 20,
+                                                           "valid": 20,
+                                                           "rank": 8 } } },
+                    "fa1": { "fa1_ensures_qed_ok": { "qed": { "total": 1,
+                                                              "valid": 1 },
+                                                     "wp:main": { "total": 1,
+                                                                  "valid": 1 } },
+                             "wp:section": { "qed": { "total": 1,
+                                                      "valid": 1 },
+                                             "wp:main": { "total": 1,
+                                                          "valid": 1 } } },
+                    "fa2": { "fa2_ensures_qed_ok": { "qed": { "total": 1,
+                                                              "valid": 1 },
+                                                     "wp:main": { "total": 1,
+                                                                  "valid": 1 } },
+                             "wp:section": { "qed": { "total": 1,
+                                                      "valid": 1 },
+                                             "wp:main": { "total": 1,
+                                                          "valid": 1 } } },
+                    "fa3": { "fa3_ensures_qed_ok": { "qed": { "total": 1,
+                                                              "valid": 1 },
+                                                     "wp:main": { "total": 1,
+                                                                  "valid": 1 } },
+                             "wp:section": { "qed": { "total": 1,
+                                                      "valid": 1 },
+                                             "wp:main": { "total": 1,
+                                                          "valid": 1 } } },
+                    "fs1": { "fs1_ensures_qed_ok": { "alt-ergo": { "total": 1,
+                                                                   "valid": 1,
+                                                                   "rank": 29 },
+                                                     "wp:main": { "total": 1,
+                                                                  "valid": 1,
+                                                                  "rank": 29 } },
+                             "wp:section": { "alt-ergo": { "total": 1,
+                                                           "valid": 1,
+                                                           "rank": 29 },
+                                             "wp:main": { "total": 1,
+                                                          "valid": 1,
+                                                          "rank": 29 } } } } }
diff --git a/src/plugins/wp/tests/wp_acsl/init_value.i.1.report.json b/src/plugins/wp/tests/wp_acsl/init_value.i.1.report.json
index 7c26ecf79edec8169bee2869e3b2fa07bb08e876..890d8170ecfaf478cb43e8608883a3bb550a2ed6 100644
--- a/src/plugins/wp/tests/wp_acsl/init_value.i.1.report.json
+++ b/src/plugins/wp/tests/wp_acsl/init_value.i.1.report.json
@@ -1,36 +1,94 @@
-{ "wp:global": { "alt-ergo": { "total": 6, "unknown": 6 },
-                 "wp:main": { "total": 6, "unknown": 6 } },
-  "wp:functions": { "main_ko": { "main_ko_pre_qed_ko_Simple_Array_1": 
+{ "wp:global": { "alt-ergo": { "total": 18, "unknown": 18 },
+                 "wp:main": { "total": 18, "unknown": 18 } },
+  "wp:functions": { "main_ko": { "main_ko_requires_qed_ko_indirect_init_union_t": 
                                    { "alt-ergo": { "total": 1, "unknown": 1 },
                                      "wp:main": { "total": 1, "unknown": 1 } },
-                                 "main_ko_pre_qed_ko_With_Array_Struct_3": 
+                                 "main_ko_requires_qed_ko_indirect_init_union_b": 
                                    { "alt-ergo": { "total": 1, "unknown": 1 },
                                      "wp:main": { "total": 1, "unknown": 1 } },
-                                 "main_ko_pre_qed_ko_Tab_no_init": { "alt-ergo": 
+                                 "main_ko_requires_qed_ko_T1_6": { "alt-ergo": 
                                                                     { "total": 1,
                                                                     "unknown": 1 },
-                                                                    "wp:main": 
+                                                                   "wp:main": 
                                                                     { "total": 1,
                                                                     "unknown": 1 } },
-                                 "main_ko_pre_qed_ko_Sc_c_2": { "alt-ergo": 
-                                                                  { "total": 1,
+                                 "main_ko_requires_qed_ko_Simple_Array_1": 
+                                   { "alt-ergo": { "total": 1, "unknown": 1 },
+                                     "wp:main": { "total": 1, "unknown": 1 } },
+                                 "main_ko_requires_qed_ko_With_Array_Struct_3": 
+                                   { "alt-ergo": { "total": 1, "unknown": 1 },
+                                     "wp:main": { "total": 1, "unknown": 1 } },
+                                 "main_ko_requires_qed_ko_Tab_no_init": 
+                                   { "alt-ergo": { "total": 1, "unknown": 1 },
+                                     "wp:main": { "total": 1, "unknown": 1 } },
+                                 "main_ko_requires_qed_ko_Sc_c_2": { "alt-ergo": 
+                                                                    { "total": 1,
                                                                     "unknown": 1 },
-                                                                "wp:main": 
-                                                                  { "total": 1,
+                                                                    "wp:main": 
+                                                                    { "total": 1,
                                                                     "unknown": 1 } },
-                                 "main_ko_pre_qed_ko_Sc_t": { "alt-ergo": 
-                                                                { "total": 1,
-                                                                  "unknown": 1 },
-                                                              "wp:main": 
-                                                                { "total": 1,
-                                                                  "unknown": 1 } },
-                                 "main_ko_pre_qed_ko_Sc_eq_ko": { "alt-ergo": 
+                                 "main_ko_requires_qed_ko_Sc_t": { "alt-ergo": 
                                                                     { "total": 1,
                                                                     "unknown": 1 },
-                                                                  "wp:main": 
+                                                                   "wp:main": 
                                                                     { "total": 1,
                                                                     "unknown": 1 } },
-                                 "wp:section": { "alt-ergo": { "total": 6,
-                                                               "unknown": 6 },
-                                                 "wp:main": { "total": 6,
-                                                              "unknown": 6 } } } } }
+                                 "main_ko_requires_qed_ko_Sc_eq_ko": 
+                                   { "alt-ergo": { "total": 1, "unknown": 1 },
+                                     "wp:main": { "total": 1, "unknown": 1 } },
+                                 "wp:section": { "alt-ergo": { "total": 9,
+                                                               "unknown": 9 },
+                                                 "wp:main": { "total": 9,
+                                                              "unknown": 9 } } },
+                    "fa1": { "fa1_ensures_qed_ko_2": { "alt-ergo": { "total": 1,
+                                                                    "unknown": 1 },
+                                                       "wp:main": { "total": 1,
+                                                                    "unknown": 1 } },
+                             "fa1_ensures_qed_ko": { "alt-ergo": { "total": 1,
+                                                                   "unknown": 1 },
+                                                     "wp:main": { "total": 1,
+                                                                  "unknown": 1 } },
+                             "wp:section": { "alt-ergo": { "total": 2,
+                                                           "unknown": 2 },
+                                             "wp:main": { "total": 2,
+                                                          "unknown": 2 } } },
+                    "fa2": { "fa2_ensures_qed_ko_2": { "alt-ergo": { "total": 1,
+                                                                    "unknown": 1 },
+                                                       "wp:main": { "total": 1,
+                                                                    "unknown": 1 } },
+                             "fa2_ensures_qed_ko": { "alt-ergo": { "total": 1,
+                                                                   "unknown": 1 },
+                                                     "wp:main": { "total": 1,
+                                                                  "unknown": 1 } },
+                             "wp:section": { "alt-ergo": { "total": 2,
+                                                           "unknown": 2 },
+                                             "wp:main": { "total": 2,
+                                                          "unknown": 2 } } },
+                    "fa3": { "fa3_ensures_qed_ko_3": { "alt-ergo": { "total": 1,
+                                                                    "unknown": 1 },
+                                                       "wp:main": { "total": 1,
+                                                                    "unknown": 1 } },
+                             "fa3_ensures_qed_ko_2": { "alt-ergo": { "total": 1,
+                                                                    "unknown": 1 },
+                                                       "wp:main": { "total": 1,
+                                                                    "unknown": 1 } },
+                             "fa3_ensures_qed_ko": { "alt-ergo": { "total": 1,
+                                                                   "unknown": 1 },
+                                                     "wp:main": { "total": 1,
+                                                                  "unknown": 1 } },
+                             "wp:section": { "alt-ergo": { "total": 3,
+                                                           "unknown": 3 },
+                                             "wp:main": { "total": 3,
+                                                          "unknown": 3 } } },
+                    "fs1": { "fs1_ensures_qed_ko_2": { "alt-ergo": { "total": 1,
+                                                                    "unknown": 1 },
+                                                       "wp:main": { "total": 1,
+                                                                    "unknown": 1 } },
+                             "fs1_ensures_qed_ko": { "alt-ergo": { "total": 1,
+                                                                   "unknown": 1 },
+                                                     "wp:main": { "total": 1,
+                                                                  "unknown": 1 } },
+                             "wp:section": { "alt-ergo": { "total": 2,
+                                                           "unknown": 2 },
+                                             "wp:main": { "total": 2,
+                                                          "unknown": 2 } } } } }
diff --git a/src/plugins/wp/tests/wp_acsl/init_value_mem.i.0.report.json b/src/plugins/wp/tests/wp_acsl/init_value_mem.i.0.report.json
index fa64194949c99b5e31929add92629ff42a7cf8bf..f632d90bac4a00dab996baa5f396d338ffffa3cc 100644
--- a/src/plugins/wp/tests/wp_acsl/init_value_mem.i.0.report.json
+++ b/src/plugins/wp/tests/wp_acsl/init_value_mem.i.0.report.json
@@ -1,20 +1,20 @@
-{ "wp:global": { "alt-ergo": { "total": 2, "valid": 2, "rank": 9 },
-                 "wp:main": { "total": 2, "valid": 2, "rank": 9 } },
-  "wp:functions": { "main": { "main_post_Q": { "alt-ergo": { "total": 1,
-                                                             "valid": 1,
-                                                             "rank": 9 },
-                                               "wp:main": { "total": 1,
-                                                            "valid": 1,
-                                                            "rank": 9 } },
-                              "main_post_P": { "alt-ergo": { "total": 1,
-                                                             "valid": 1,
-                                                             "rank": 9 },
-                                               "wp:main": { "total": 1,
-                                                            "valid": 1,
-                                                            "rank": 9 } },
+{ "wp:global": { "alt-ergo": { "total": 2, "valid": 2, "rank": 10 },
+                 "wp:main": { "total": 2, "valid": 2, "rank": 10 } },
+  "wp:functions": { "main": { "main_ensures_Q": { "alt-ergo": { "total": 1,
+                                                                "valid": 1,
+                                                                "rank": 10 },
+                                                  "wp:main": { "total": 1,
+                                                               "valid": 1,
+                                                               "rank": 10 } },
+                              "main_ensures_P": { "alt-ergo": { "total": 1,
+                                                                "valid": 1,
+                                                                "rank": 10 },
+                                                  "wp:main": { "total": 1,
+                                                               "valid": 1,
+                                                               "rank": 10 } },
                               "wp:section": { "alt-ergo": { "total": 2,
                                                             "valid": 2,
-                                                            "rank": 9 },
+                                                            "rank": 10 },
                                               "wp:main": { "total": 2,
                                                            "valid": 2,
-                                                           "rank": 9 } } } } }
+                                                           "rank": 10 } } } } }
diff --git a/src/plugins/wp/tests/wp_acsl/intbool.i.0.report.json b/src/plugins/wp/tests/wp_acsl/intbool.i.0.report.json
index c599a4ddfcf992126d7af0205c32897aab8216d9..4ed4a7c4e6305b0311d13850278f63d06912e2c8 100644
--- a/src/plugins/wp/tests/wp_acsl/intbool.i.0.report.json
+++ b/src/plugins/wp/tests/wp_acsl/intbool.i.0.report.json
@@ -1,8 +1,9 @@
 { "wp:global": { "qed": { "total": 1, "valid": 1 },
                  "wp:main": { "total": 1, "valid": 1 } },
-  "wp:functions": { "bug": { "bug_post": { "qed": { "total": 1, "valid": 1 },
-                                           "wp:main": { "total": 1,
-                                                        "valid": 1 } },
+  "wp:functions": { "bug": { "bug_ensures": { "qed": { "total": 1,
+                                                       "valid": 1 },
+                                              "wp:main": { "total": 1,
+                                                           "valid": 1 } },
                              "wp:section": { "qed": { "total": 1,
                                                       "valid": 1 },
                                              "wp:main": { "total": 1,
diff --git a/src/plugins/wp/tests/wp_acsl/logic.i.0.report.json b/src/plugins/wp/tests/wp_acsl/logic.i.0.report.json
index 0ca5753d2884ec797d09eebcde0005178ca5263a..badcee8deb06c806b1e1fba397198f03ad075183 100644
--- a/src/plugins/wp/tests/wp_acsl/logic.i.0.report.json
+++ b/src/plugins/wp/tests/wp_acsl/logic.i.0.report.json
@@ -1,104 +1,138 @@
 { "wp:global": { "alt-ergo": { "total": 18, "valid": 2, "unknown": 16,
-                               "rank": 15 },
+                               "rank": 16 },
                  "qed": { "total": 3, "valid": 3 },
                  "wp:main": { "total": 21, "valid": 5, "unknown": 16,
-                              "rank": 15 } },
-  "wp:functions": { "h": { "h_assign": { "qed": { "total": 2, "valid": 2 },
-                                         "wp:main": { "total": 2,
-                                                      "valid": 2 } },
-                           "h_post": { "alt-ergo": { "total": 1,
-                                                     "unknown": 1 },
-                                       "wp:main": { "total": 1,
-                                                    "unknown": 1 } },
+                              "rank": 16 } },
+  "wp:functions": { "h": { "h_assigns": { "qed": { "total": 2, "valid": 2 },
+                                          "wp:main": { "total": 2,
+                                                       "valid": 2 } },
+                           "h_ensures": { "alt-ergo": { "total": 1,
+                                                        "unknown": 1 },
+                                          "wp:main": { "total": 1,
+                                                       "unknown": 1 } },
                            "wp:section": { "alt-ergo": { "total": 1,
                                                          "unknown": 1 },
                                            "qed": { "total": 2, "valid": 2 },
                                            "wp:main": { "total": 3,
                                                         "valid": 2,
                                                         "unknown": 1 } } },
-                    "main": { "main_pre_qed_ok_18": { "alt-ergo": { "total": 1,
-                                                                    "unknown": 1 },
-                                                      "wp:main": { "total": 1,
-                                                                   "unknown": 1 } },
-                              "main_pre_qed_ok_17": { "alt-ergo": { "total": 1,
-                                                                    "unknown": 1 },
-                                                      "wp:main": { "total": 1,
-                                                                   "unknown": 1 } },
-                              "main_pre_qed_ok_16": { "alt-ergo": { "total": 1,
-                                                                    "unknown": 1 },
-                                                      "wp:main": { "total": 1,
-                                                                   "unknown": 1 } },
-                              "main_pre_qed_ok_15": { "alt-ergo": { "total": 1,
-                                                                    "unknown": 1 },
-                                                      "wp:main": { "total": 1,
-                                                                   "unknown": 1 } },
-                              "main_pre_qed_ok_14": { "alt-ergo": { "total": 1,
-                                                                    "unknown": 1 },
-                                                      "wp:main": { "total": 1,
-                                                                   "unknown": 1 } },
-                              "main_pre_qed_ok_13": { "alt-ergo": { "total": 1,
-                                                                    "unknown": 1 },
-                                                      "wp:main": { "total": 1,
-                                                                   "unknown": 1 } },
-                              "main_pre_qed_ok_12": { "alt-ergo": { "total": 1,
-                                                                    "unknown": 1 },
-                                                      "wp:main": { "total": 1,
-                                                                   "unknown": 1 } },
-                              "main_pre_qed_ok_11": { "alt-ergo": { "total": 1,
-                                                                    "unknown": 1 },
-                                                      "wp:main": { "total": 1,
-                                                                   "unknown": 1 } },
-                              "main_pre_qed_ok_10": { "alt-ergo": { "total": 1,
-                                                                    "unknown": 1 },
-                                                      "wp:main": { "total": 1,
-                                                                   "unknown": 1 } },
-                              "main_pre_qed_ok_9": { "alt-ergo": { "total": 1,
-                                                                   "unknown": 1 },
-                                                     "wp:main": { "total": 1,
-                                                                  "unknown": 1 } },
-                              "main_pre_qed_ok_8": { "alt-ergo": { "total": 1,
-                                                                   "unknown": 1 },
-                                                     "wp:main": { "total": 1,
-                                                                  "unknown": 1 } },
-                              "main_pre_qed_ok_7": { "alt-ergo": { "total": 1,
-                                                                   "unknown": 1 },
-                                                     "wp:main": { "total": 1,
-                                                                  "unknown": 1 } },
-                              "main_pre_qed_ok_6": { "alt-ergo": { "total": 1,
-                                                                   "unknown": 1 },
-                                                     "wp:main": { "total": 1,
-                                                                  "unknown": 1 } },
-                              "main_pre_qed_ok_5": { "alt-ergo": { "total": 1,
-                                                                   "unknown": 1 },
-                                                     "wp:main": { "total": 1,
-                                                                  "unknown": 1 } },
-                              "main_pre_qed_ok_4": { "alt-ergo": { "total": 1,
-                                                                   "unknown": 1 },
-                                                     "wp:main": { "total": 1,
-                                                                  "unknown": 1 } },
-                              "main_pre_qed_ok_3": { "alt-ergo": { "total": 1,
-                                                                   "valid": 1,
-                                                                   "rank": 15 },
-                                                     "wp:main": { "total": 1,
-                                                                  "valid": 1,
-                                                                  "rank": 15 } },
-                              "main_pre_qed_ok_2": { "alt-ergo": { "total": 1,
-                                                                   "valid": 1,
-                                                                   "rank": 15 },
-                                                     "wp:main": { "total": 1,
-                                                                  "valid": 1,
-                                                                  "rank": 15 } },
-                              "main_pre_qed_ok": { "qed": { "total": 1,
-                                                            "valid": 1 },
-                                                   "wp:main": { "total": 1,
-                                                                "valid": 1 } },
+                    "main": { "main_requires_qed_ok_18": { "alt-ergo": 
+                                                             { "total": 1,
+                                                               "unknown": 1 },
+                                                           "wp:main": 
+                                                             { "total": 1,
+                                                               "unknown": 1 } },
+                              "main_requires_qed_ok_17": { "alt-ergo": 
+                                                             { "total": 1,
+                                                               "unknown": 1 },
+                                                           "wp:main": 
+                                                             { "total": 1,
+                                                               "unknown": 1 } },
+                              "main_requires_qed_ok_16": { "alt-ergo": 
+                                                             { "total": 1,
+                                                               "unknown": 1 },
+                                                           "wp:main": 
+                                                             { "total": 1,
+                                                               "unknown": 1 } },
+                              "main_requires_qed_ok_15": { "alt-ergo": 
+                                                             { "total": 1,
+                                                               "unknown": 1 },
+                                                           "wp:main": 
+                                                             { "total": 1,
+                                                               "unknown": 1 } },
+                              "main_requires_qed_ok_14": { "alt-ergo": 
+                                                             { "total": 1,
+                                                               "unknown": 1 },
+                                                           "wp:main": 
+                                                             { "total": 1,
+                                                               "unknown": 1 } },
+                              "main_requires_qed_ok_13": { "alt-ergo": 
+                                                             { "total": 1,
+                                                               "unknown": 1 },
+                                                           "wp:main": 
+                                                             { "total": 1,
+                                                               "unknown": 1 } },
+                              "main_requires_qed_ok_12": { "alt-ergo": 
+                                                             { "total": 1,
+                                                               "unknown": 1 },
+                                                           "wp:main": 
+                                                             { "total": 1,
+                                                               "unknown": 1 } },
+                              "main_requires_qed_ok_11": { "alt-ergo": 
+                                                             { "total": 1,
+                                                               "unknown": 1 },
+                                                           "wp:main": 
+                                                             { "total": 1,
+                                                               "unknown": 1 } },
+                              "main_requires_qed_ok_10": { "alt-ergo": 
+                                                             { "total": 1,
+                                                               "unknown": 1 },
+                                                           "wp:main": 
+                                                             { "total": 1,
+                                                               "unknown": 1 } },
+                              "main_requires_qed_ok_9": { "alt-ergo": 
+                                                            { "total": 1,
+                                                              "unknown": 1 },
+                                                          "wp:main": 
+                                                            { "total": 1,
+                                                              "unknown": 1 } },
+                              "main_requires_qed_ok_8": { "alt-ergo": 
+                                                            { "total": 1,
+                                                              "unknown": 1 },
+                                                          "wp:main": 
+                                                            { "total": 1,
+                                                              "unknown": 1 } },
+                              "main_requires_qed_ok_7": { "alt-ergo": 
+                                                            { "total": 1,
+                                                              "unknown": 1 },
+                                                          "wp:main": 
+                                                            { "total": 1,
+                                                              "unknown": 1 } },
+                              "main_requires_qed_ok_6": { "alt-ergo": 
+                                                            { "total": 1,
+                                                              "unknown": 1 },
+                                                          "wp:main": 
+                                                            { "total": 1,
+                                                              "unknown": 1 } },
+                              "main_requires_qed_ok_5": { "alt-ergo": 
+                                                            { "total": 1,
+                                                              "unknown": 1 },
+                                                          "wp:main": 
+                                                            { "total": 1,
+                                                              "unknown": 1 } },
+                              "main_requires_qed_ok_4": { "alt-ergo": 
+                                                            { "total": 1,
+                                                              "unknown": 1 },
+                                                          "wp:main": 
+                                                            { "total": 1,
+                                                              "unknown": 1 } },
+                              "main_requires_qed_ok_3": { "alt-ergo": 
+                                                            { "total": 1,
+                                                              "valid": 1,
+                                                              "rank": 16 },
+                                                          "wp:main": 
+                                                            { "total": 1,
+                                                              "valid": 1,
+                                                              "rank": 16 } },
+                              "main_requires_qed_ok_2": { "alt-ergo": 
+                                                            { "total": 1,
+                                                              "valid": 1,
+                                                              "rank": 16 },
+                                                          "wp:main": 
+                                                            { "total": 1,
+                                                              "valid": 1,
+                                                              "rank": 16 } },
+                              "main_requires_qed_ok": { "qed": { "total": 1,
+                                                                 "valid": 1 },
+                                                        "wp:main": { "total": 1,
+                                                                    "valid": 1 } },
                               "wp:section": { "alt-ergo": { "total": 17,
                                                             "valid": 2,
                                                             "unknown": 15,
-                                                            "rank": 15 },
+                                                            "rank": 16 },
                                               "qed": { "total": 1,
                                                        "valid": 1 },
                                               "wp:main": { "total": 18,
                                                            "valid": 3,
                                                            "unknown": 15,
-                                                           "rank": 15 } } } } }
+                                                           "rank": 16 } } } } }
diff --git a/src/plugins/wp/tests/wp_acsl/looplabels.i.0.report.json b/src/plugins/wp/tests/wp_acsl/looplabels.i.0.report.json
index 8f3eb9da0a166c92a08a1298fa6d7848805ab18c..f0d59fc2862ebf81510504550ab40baa6a97d258 100644
--- a/src/plugins/wp/tests/wp_acsl/looplabels.i.0.report.json
+++ b/src/plugins/wp/tests/wp_acsl/looplabels.i.0.report.json
@@ -1,38 +1,39 @@
 { "wp:global": { "alt-ergo": { "total": 5, "valid": 5, "rank": 37 },
                  "qed": { "total": 3, "valid": 3 },
                  "wp:main": { "total": 8, "valid": 8, "rank": 37 } },
-  "wp:functions": { "copy": { "copy_loop_inv_2": { "alt-ergo": { "total": 2,
-                                                                 "valid": 2,
-                                                                 "rank": 37 },
-                                                   "wp:main": { "total": 2,
-                                                                "valid": 2,
-                                                                "rank": 37 } },
-                              "copy_loop_inv": { "alt-ergo": { "total": 1,
-                                                               "valid": 1,
-                                                               "rank": 5 },
-                                                 "qed": { "total": 1,
-                                                          "valid": 1 },
-                                                 "wp:main": { "total": 2,
-                                                              "valid": 2,
-                                                              "rank": 5 } },
-                              "copy_assign": { "qed": { "total": 1,
-                                                        "valid": 1 },
-                                               "wp:main": { "total": 1,
-                                                            "valid": 1 } },
-                              "copy_loop_assign": { "alt-ergo": { "total": 1,
-                                                                  "valid": 1,
-                                                                  "rank": 22 },
-                                                    "qed": { "total": 1,
-                                                             "valid": 1 },
-                                                    "wp:main": { "total": 2,
-                                                                 "valid": 2,
-                                                                 "rank": 22 } },
-                              "copy_post": { "alt-ergo": { "total": 1,
-                                                           "valid": 1,
-                                                           "rank": 5 },
-                                             "wp:main": { "total": 1,
-                                                          "valid": 1,
-                                                          "rank": 5 } },
+  "wp:functions": { "copy": { "copy_loop_invariant_2": { "alt-ergo": 
+                                                           { "total": 2,
+                                                             "valid": 2,
+                                                             "rank": 37 },
+                                                         "wp:main": { "total": 2,
+                                                                    "valid": 2,
+                                                                    "rank": 37 } },
+                              "copy_loop_invariant": { "alt-ergo": { "total": 1,
+                                                                    "valid": 1,
+                                                                    "rank": 5 },
+                                                       "qed": { "total": 1,
+                                                                "valid": 1 },
+                                                       "wp:main": { "total": 2,
+                                                                    "valid": 2,
+                                                                    "rank": 5 } },
+                              "copy_assigns": { "qed": { "total": 1,
+                                                         "valid": 1 },
+                                                "wp:main": { "total": 1,
+                                                             "valid": 1 } },
+                              "copy_loop_assigns": { "alt-ergo": { "total": 1,
+                                                                   "valid": 1,
+                                                                   "rank": 22 },
+                                                     "qed": { "total": 1,
+                                                              "valid": 1 },
+                                                     "wp:main": { "total": 2,
+                                                                  "valid": 2,
+                                                                  "rank": 22 } },
+                              "copy_ensures": { "alt-ergo": { "total": 1,
+                                                              "valid": 1,
+                                                              "rank": 4 },
+                                                "wp:main": { "total": 1,
+                                                             "valid": 1,
+                                                             "rank": 4 } },
                               "wp:section": { "alt-ergo": { "total": 5,
                                                             "valid": 5,
                                                             "rank": 37 },
diff --git a/src/plugins/wp/tests/wp_acsl/null.c.0.report.json b/src/plugins/wp/tests/wp_acsl/null.c.0.report.json
index 0a50deb53ababb68938d44c46fc84e8d7365844a..79fbcb44621bbe66323dc1c13c9b7b044015f84a 100644
--- a/src/plugins/wp/tests/wp_acsl/null.c.0.report.json
+++ b/src/plugins/wp/tests/wp_acsl/null.c.0.report.json
@@ -21,11 +21,12 @@
                                            "wp:main": { "total": 2,
                                                         "valid": 2,
                                                         "rank": 1 } } } },
-  "wp:functions": { "null_is_zero": { "null_is_zero_post": { "qed": { "total": 1,
+  "wp:functions": { "null_is_zero": { "null_is_zero_ensures": { "qed": 
+                                                                  { "total": 1,
                                                                     "valid": 1 },
-                                                             "wp:main": 
-                                                               { "total": 1,
-                                                                 "valid": 1 } },
+                                                                "wp:main": 
+                                                                  { "total": 1,
+                                                                    "valid": 1 } },
                                       "wp:section": { "qed": { "total": 1,
                                                                "valid": 1 },
                                                       "wp:main": { "total": 1,
diff --git a/src/plugins/wp/tests/wp_acsl/oracle/bitwise2.res.oracle b/src/plugins/wp/tests/wp_acsl/oracle/bitwise2.res.oracle
new file mode 100644
index 0000000000000000000000000000000000000000..93a098b82182b131c38a3fba3754d8b758c02d10
--- /dev/null
+++ b/src/plugins/wp/tests/wp_acsl/oracle/bitwise2.res.oracle
@@ -0,0 +1,45 @@
+# frama-c -wp [...]
+[kernel] Parsing tests/wp_acsl/bitwise2.i (no preprocessing)
+[wp] Running WP plugin...
+[wp] Loading driver 'share/wp.driver'
+[wp] Warning: Missing RTE guards
+------------------------------------------------------------
+  Function job1
+------------------------------------------------------------
+
+Goal Post-condition (file tests/wp_acsl/bitwise2.i, line 2) in 'job1':
+Prove: true.
+
+------------------------------------------------------------
+------------------------------------------------------------
+  Function job1bis
+------------------------------------------------------------
+
+Goal Post-condition (file tests/wp_acsl/bitwise2.i, line 7) in 'job1bis':
+Prove: true.
+
+------------------------------------------------------------
+------------------------------------------------------------
+  Function job2
+------------------------------------------------------------
+
+Goal Post-condition (file tests/wp_acsl/bitwise2.i, line 12) in 'job2':
+Prove: true.
+
+------------------------------------------------------------
+------------------------------------------------------------
+  Function job3
+------------------------------------------------------------
+
+Goal Post-condition (file tests/wp_acsl/bitwise2.i, line 17) in 'job3':
+Prove: true.
+
+------------------------------------------------------------
+------------------------------------------------------------
+  Function job4
+------------------------------------------------------------
+
+Goal Post-condition (file tests/wp_acsl/bitwise2.i, line 22) in 'job4':
+Prove: true.
+
+------------------------------------------------------------
diff --git a/src/plugins/wp/tests/wp_acsl/oracle/init_value.0.res.oracle b/src/plugins/wp/tests/wp_acsl/oracle/init_value.0.res.oracle
index ad4d9f1ea971d2c837da496bee9cee9a1fa814ba..bcd9a305a139c01b26fa11ccc56af7dbdfd3c080 100644
--- a/src/plugins/wp/tests/wp_acsl/oracle/init_value.0.res.oracle
+++ b/src/plugins/wp/tests/wp_acsl/oracle/init_value.0.res.oracle
@@ -1,47 +1,386 @@
-# frama-c -wp [...]
+# frama-c -wp -wp-no-let [...]
 [kernel] Parsing tests/wp_acsl/init_value.i (no preprocessing)
 [wp] Running WP plugin...
 [wp] Loading driver 'share/wp.driver'
 [wp] Warning: Missing RTE guards
+------------------------------------------------------------
+  Function fa1
+------------------------------------------------------------
+
+Goal Post-condition 'qed_ok' in 'fa1':
+Let x = ta1_0[4].
+Let x_1 = ta1_0[0].
+Let x_2 = ta1_0[1].
+Let x_3 = ta1_0[3].
+Assume {
+  Type: is_sint32(x_1) /\ is_sint32(x_2) /\ is_sint32(x_3) /\ is_sint32(x).
+  (* Initializer *)
+  Init: forall i : Z. ((0 <= i) -> ((i <= 1) -> (ta1_0[i] = 0))).
+  (* Initializer *)
+  Init: ta1_0[2] = 1.
+  (* Initializer *)
+  Init: x = 1.
+  (* Initializer *)
+  Init: forall i : Z. ((3 <= i) -> ((i <= 3) -> (ta1_0[i] = 0))).
+}
+Prove: (x_2 = x_1) /\ (x_3 = x_2).
+
+------------------------------------------------------------
+
+Goal Post-condition 'qed_ko' in 'fa1':
+Let x = ta1_0[4].
+Assume {
+  Type: is_sint32(ta1_0[0]) /\ is_sint32(ta1_0[1]) /\ is_sint32(ta1_0[3]) /\
+      is_sint32(x).
+  (* Initializer *)
+  Init: forall i : Z. ((0 <= i) -> ((i <= 1) -> (ta1_0[i] = 0))).
+  (* Initializer *)
+  Init: ta1_0[2] = 1.
+  (* Initializer *)
+  Init: x = 1.
+  (* Initializer *)
+  Init: forall i : Z. ((3 <= i) -> ((i <= 3) -> (ta1_0[i] = 0))).
+}
+Prove: x = 0.
+
+------------------------------------------------------------
+
+Goal Post-condition 'qed_ko' in 'fa1':
+Let x = ta1_0[4].
+Let x_1 = ta1_0[3].
+Assume {
+  Type: is_sint32(ta1_0[0]) /\ is_sint32(ta1_0[1]) /\ is_sint32(x_1) /\
+      is_sint32(x).
+  (* Initializer *)
+  Init: forall i : Z. ((0 <= i) -> ((i <= 1) -> (ta1_0[i] = 0))).
+  (* Initializer *)
+  Init: ta1_0[2] = 1.
+  (* Initializer *)
+  Init: x = 1.
+  (* Initializer *)
+  Init: forall i : Z. ((3 <= i) -> ((i <= 3) -> (ta1_0[i] = 0))).
+}
+Prove: x_1 = 1.
+
+------------------------------------------------------------
+------------------------------------------------------------
+  Function fa2
+------------------------------------------------------------
+
+Goal Post-condition 'qed_ok' in 'fa2':
+Let x = ta2_0[0].
+Let x_1 = ta2_0[1].
+Let x_2 = ta2_0[4].
+Assume {
+  Type: is_sint32(x) /\ is_sint32(x_1) /\ is_sint32(x_2).
+  (* Initializer *)
+  Init: forall i : Z. ((0 <= i) -> ((i <= 1) -> (ta2_0[i] = 0))).
+  (* Initializer *)
+  Init: forall i : Z. ((2 <= i) -> ((i <= 3) -> (ta2_0[i] = 1))).
+  (* Initializer *)
+  Init: forall i : Z. ((4 <= i) -> ((i <= 4) -> (ta2_0[i] = 0))).
+}
+Prove: (x_1 = x) /\ (x_2 = x_1).
+
+------------------------------------------------------------
+
+Goal Post-condition 'qed_ko' in 'fa2':
+Let x = ta2_0[4].
+Assume {
+  Type: is_sint32(ta2_0[0]) /\ is_sint32(ta2_0[1]) /\ is_sint32(x).
+  (* Initializer *)
+  Init: forall i : Z. ((0 <= i) -> ((i <= 1) -> (ta2_0[i] = 0))).
+  (* Initializer *)
+  Init: forall i : Z. ((2 <= i) -> ((i <= 3) -> (ta2_0[i] = 1))).
+  (* Initializer *)
+  Init: forall i : Z. ((4 <= i) -> ((i <= 4) -> (ta2_0[i] = 0))).
+}
+Prove: x = 1.
+
+------------------------------------------------------------
+
+Goal Post-condition 'qed_ko' in 'fa2':
+Let x = ta2_0[1].
+Assume {
+  Type: is_sint32(ta2_0[0]) /\ is_sint32(x) /\ is_sint32(ta2_0[4]).
+  (* Initializer *)
+  Init: forall i : Z. ((0 <= i) -> ((i <= 1) -> (ta2_0[i] = 0))).
+  (* Initializer *)
+  Init: forall i : Z. ((2 <= i) -> ((i <= 3) -> (ta2_0[i] = 1))).
+  (* Initializer *)
+  Init: forall i : Z. ((4 <= i) -> ((i <= 4) -> (ta2_0[i] = 0))).
+}
+Prove: x = 1.
+
+------------------------------------------------------------
+------------------------------------------------------------
+  Function fa3
+------------------------------------------------------------
+
+Goal Post-condition 'qed_ok' in 'fa3':
+Let x = ta1_0[4].
+Let x_1 = ta1_0[2].
+Let x_2 = ta3_0[0].
+Let x_3 = ta3_0[2].
+Assume {
+  Type: is_sint32(x_1) /\ is_sint32(x) /\ is_sint32(x_2) /\ is_sint32(x_3).
+  (* Initializer *)
+  Init: forall i : Z. ((i <= 0) -> ((0 <= i) -> (ta3_0[i] = 0))).
+  (* Initializer *)
+  Init: ta3_0[1] = 1.
+  (* Initializer *)
+  Init: ta3_0[3] = 1.
+  (* Initializer *)
+  Init: forall i : Z. ((2 <= i) -> ((i <= 2) -> (ta3_0[i] = 0))).
+  (* Initializer *)
+  Init: forall i : Z. ((4 <= i) -> ((i <= 4) -> (ta3_0[i] = 0))).
+  (* Initializer *)
+  Init: forall i : Z. ((0 <= i) -> ((i <= 1) -> (ta1_0[i] = 0))).
+  (* Initializer *)
+  Init: x_1 = 1.
+  (* Initializer *)
+  Init: x = 1.
+  (* Initializer *)
+  Init: forall i : Z. ((3 <= i) -> ((i <= 3) -> (ta1_0[i] = 0))).
+}
+Prove: (x = x_1) /\ (x_3 = x_2).
+
+------------------------------------------------------------
+
+Goal Post-condition 'qed_ko' in 'fa3':
+Let x = ta3_0[0].
+Assume {
+  Type: is_sint32(x) /\ is_sint32(ta3_0[2]).
+  (* Initializer *)
+  Init: forall i : Z. ((i <= 0) -> ((0 <= i) -> (ta3_0[i] = 0))).
+  (* Initializer *)
+  Init: ta3_0[1] = 1.
+  (* Initializer *)
+  Init: ta3_0[3] = 1.
+  (* Initializer *)
+  Init: forall i : Z. ((2 <= i) -> ((i <= 2) -> (ta3_0[i] = 0))).
+  (* Initializer *)
+  Init: forall i : Z. ((4 <= i) -> ((i <= 4) -> (ta3_0[i] = 0))).
+}
+Prove: x = 1.
+
+------------------------------------------------------------
+
+Goal Post-condition 'qed_ko' in 'fa3':
+Let x = ta3_0[2].
+Assume {
+  Type: is_sint32(ta3_0[0]) /\ is_sint32(x).
+  (* Initializer *)
+  Init: forall i : Z. ((i <= 0) -> ((0 <= i) -> (ta3_0[i] = 0))).
+  (* Initializer *)
+  Init: ta3_0[1] = 1.
+  (* Initializer *)
+  Init: ta3_0[3] = 1.
+  (* Initializer *)
+  Init: forall i : Z. ((2 <= i) -> ((i <= 2) -> (ta3_0[i] = 0))).
+  (* Initializer *)
+  Init: forall i : Z. ((4 <= i) -> ((i <= 4) -> (ta3_0[i] = 0))).
+}
+Prove: x = 1.
+
+------------------------------------------------------------
+
+Goal Post-condition 'qed_ko' in 'fa3':
+Let x = ta2_0[4].
+Assume {
+  Type: is_sint32(x).
+  (* Initializer *)
+  Init: forall i : Z. ((0 <= i) -> ((i <= 1) -> (ta2_0[i] = 0))).
+  (* Initializer *)
+  Init: forall i : Z. ((2 <= i) -> ((i <= 3) -> (ta2_0[i] = 1))).
+  (* Initializer *)
+  Init: forall i : Z. ((4 <= i) -> ((i <= 4) -> (ta2_0[i] = 0))).
+}
+Prove: x = 1.
+
+------------------------------------------------------------
+------------------------------------------------------------
+  Function fs1
+------------------------------------------------------------
+
+Goal Post-condition 'qed_ok' in 'fs1':
+Let a = ts1_0[2].
+Let x = a.F5_c.
+Let x_1 = a.F5_b.
+Let x_2 = a.F5_a.
+Let a_1 = ts1_0[0].
+Let a_2 = ts1_0[1].
+Let a_3 = ts1_0[3].
+Assume {
+  Type: IsS5(a_1) /\ IsS5(a_2) /\ IsS5(a_3) /\ is_sint32(a_1.F5_a) /\
+      is_sint32(x_2) /\ is_sint32(x_1) /\ is_sint32(x).
+  (* Initializer *)
+  Init: forall i : Z. let a_4 = ts1_0[i] in ((0 <= i) -> ((i <= 1) ->
+      (((a_4.F5_a) = 0) /\ ((a_4.F5_b) = 0) /\ ((a_4.F5_c) = 0)))).
+  (* Initializer *)
+  Init: x_2 = 1.
+  (* Initializer *)
+  Init: x_1 = 1.
+  (* Initializer *)
+  Init: x = 0.
+  (* Initializer *)
+  Init: forall i : Z. let a_4 = ts1_0[i] in ((3 <= i) -> ((i <= 3) ->
+      (((a_4.F5_a) = 0) /\ ((a_4.F5_b) = 0) /\ ((a_4.F5_c) = 0)))).
+}
+Prove: (x_1 = x_2) /\ EqS5(a_1, a_2) /\ EqS5(a_2, a_3).
+
+------------------------------------------------------------
+
+Goal Post-condition 'qed_ko' in 'fs1':
+Let a = ts1_0[2].
+Let x = a.F5_c.
+Let x_1 = a.F5_b.
+Let x_2 = a.F5_a.
+Let a_1 = ts1_0[0].
+Assume {
+  Type: IsS5(a_1) /\ IsS5(ts1_0[1]) /\ IsS5(ts1_0[3]) /\
+      is_sint32(a_1.F5_a) /\ is_sint32(x_2) /\ is_sint32(x_1) /\
+      is_sint32(x).
+  (* Initializer *)
+  Init: forall i : Z. let a_2 = ts1_0[i] in ((0 <= i) -> ((i <= 1) ->
+      (((a_2.F5_a) = 0) /\ ((a_2.F5_b) = 0) /\ ((a_2.F5_c) = 0)))).
+  (* Initializer *)
+  Init: x_2 = 1.
+  (* Initializer *)
+  Init: x_1 = 1.
+  (* Initializer *)
+  Init: x = 0.
+  (* Initializer *)
+  Init: forall i : Z. let a_2 = ts1_0[i] in ((3 <= i) -> ((i <= 3) ->
+      (((a_2.F5_a) = 0) /\ ((a_2.F5_b) = 0) /\ ((a_2.F5_c) = 0)))).
+}
+Prove: x = 1.
+
+------------------------------------------------------------
+
+Goal Post-condition 'qed_ko' in 'fs1':
+Let a = ts1_0[2].
+Let x = a.F5_c.
+Let x_1 = a.F5_b.
+Let x_2 = a.F5_a.
+Let a_1 = ts1_0[0].
+Let x_3 = a_1.F5_a.
+Assume {
+  Type: IsS5(a_1) /\ IsS5(ts1_0[1]) /\ IsS5(ts1_0[3]) /\ is_sint32(x_3) /\
+      is_sint32(x_2) /\ is_sint32(x_1) /\ is_sint32(x).
+  (* Initializer *)
+  Init: forall i : Z. let a_2 = ts1_0[i] in ((0 <= i) -> ((i <= 1) ->
+      (((a_2.F5_a) = 0) /\ ((a_2.F5_b) = 0) /\ ((a_2.F5_c) = 0)))).
+  (* Initializer *)
+  Init: x_2 = 1.
+  (* Initializer *)
+  Init: x_1 = 1.
+  (* Initializer *)
+  Init: x = 0.
+  (* Initializer *)
+  Init: forall i : Z. let a_2 = ts1_0[i] in ((3 <= i) -> ((i <= 3) ->
+      (((a_2.F5_a) = 0) /\ ((a_2.F5_b) = 0) /\ ((a_2.F5_c) = 0)))).
+}
+Prove: x_3 = 1.
+
+------------------------------------------------------------
 ------------------------------------------------------------
   Function main
 ------------------------------------------------------------
 
 Goal Pre-condition 'qed_ok,Struct_Simple_a' in 'main':
-Prove: true.
+Let x = s.F1_S_b.
+Let x_1 = s.F1_S_a.
+Assume {
+  Type: is_sint32(x_1) /\ is_sint32(x).
+  (* Initializer *)
+  Init: x_1 = 2.
+  (* Initializer *)
+  Init: x = 0.
+}
+Prove: x_1 = 2.
 
 ------------------------------------------------------------
 
 Goal Pre-condition 'qed_ok,Struct_Simple_b' in 'main':
-Prove: true.
+Let x = s.F1_S_b.
+Let x_1 = s.F1_S_a.
+Assume {
+  Type: is_sint32(x_1) /\ is_sint32(x).
+  (* Initializer *)
+  Init: x_1 = 2.
+  (* Initializer *)
+  Init: x = 0.
+}
+Prove: x = 0.
 
 ------------------------------------------------------------
 
 Goal Pre-condition 'qed_ok,Simple_Array_0' in 'main':
-Prove: true.
+Let x = t[0].
+Assume {
+  Type: is_sint32(x) /\ is_sint32(t[1]).
+  (* Initializer *)
+  Init: x = 1.
+  (* Initializer *)
+  Init: forall i : Z. ((0 < i) -> ((i <= 1) -> (t[i] = 0))).
+}
+Prove: x = 1.
 
 ------------------------------------------------------------
 
 Goal Pre-condition 'qed_ok,Simple_Array_1' in 'main':
-Let x = t[1].
+Let x = t[0].
+Let x_1 = t[1].
 Assume {
-  Type: is_sint32(x).
+  Type: is_sint32(x) /\ is_sint32(x_1).
   (* Initializer *)
-  Init: t[0] = 1.
+  Init: x = 1.
   (* Initializer *)
   Init: forall i : Z. ((0 < i) -> ((i <= 1) -> (t[i] = 0))).
 }
-Prove: x = 0.
+Prove: x_1 = 0.
 
 ------------------------------------------------------------
 
 Goal Pre-condition 'qed_ok,With_Array_Struct_5' in 'main':
-Prove: true.
+Let a = st_0.F2_St_tab.
+Let a_1 = a[3].
+Let a_2 = a[5].
+Assume {
+  Type: is_sint32(a_1) /\ is_sint32(a_2).
+  (* Initializer *)
+  Init: a[0] = 1.
+  (* Initializer *)
+  Init: a[1] = 2.
+  (* Initializer *)
+  Init: a[2] = 3.
+  (* Initializer *)
+  Init: a_1 = 4.
+  (* Initializer *)
+  Init: forall i : Z. ((4 <= i) -> ((i <= 9) -> (a[i] = 0))).
+}
+Prove: a_2 = 0.
 
 ------------------------------------------------------------
 
 Goal Pre-condition 'qed_ok,With_Array_Struct_3' in 'main':
-Prove: true.
+Let a = st_0.F2_St_tab.
+Let a_1 = a[3].
+Assume {
+  Type: is_sint32(a_1) /\ is_sint32(a[5]).
+  (* Initializer *)
+  Init: a[0] = 1.
+  (* Initializer *)
+  Init: a[1] = 2.
+  (* Initializer *)
+  Init: a[2] = 3.
+  (* Initializer *)
+  Init: a_1 = 4.
+  (* Initializer *)
+  Init: forall i : Z. ((4 <= i) -> ((i <= 9) -> (a[i] = 0))).
+}
+Prove: a_1 = 4.
 
 ------------------------------------------------------------
 
@@ -76,27 +415,96 @@ Prove: EqS3_Sc(sc1_0, sc0_0).
 ------------------------------------------------------------
 
 Goal Pre-condition 'qed_ok,Sc_t' in 'main':
-Prove: true.
+Let x = sc2_0.F3_Sc_c.
+Let a = sc2_0.F3_Sc_b.
+Let a_1 = a[2].
+Assume {
+  Type: is_sint32(x) /\ is_sint32(a_1).
+  (* Initializer *)
+  Init: (sc2_0.F3_Sc_a) = 1.
+  (* Initializer *)
+  Init: a[0] = 2.
+  (* Initializer *)
+  Init: a[1] = 3.
+  (* Initializer *)
+  Init: forall i : Z. ((2 <= i) -> ((i <= 2) -> (a[i] = 0))).
+  (* Initializer *)
+  Init: x = 4.
+}
+Prove: a_1 = 0.
 
 ------------------------------------------------------------
 
 Goal Pre-condition 'qed_ok,Sc_t' in 'main':
-Prove: true.
+Let x = sc3_0.F3_Sc_c.
+Let a = sc3_0.F3_Sc_b.
+Let a_1 = a[2].
+Assume {
+  Type: is_sint32(x) /\ is_sint32(a_1).
+  (* Initializer *)
+  Init: (sc3_0.F3_Sc_a) = 1.
+  (* Initializer *)
+  Init: a[0] = 2.
+  (* Initializer *)
+  Init: a[1] = 3.
+  (* Initializer *)
+  Init: a_1 = 4.
+  (* Initializer *)
+  Init: x = 0.
+}
+Prove: a_1 = 4.
 
 ------------------------------------------------------------
 
 Goal Pre-condition 'qed_ok,Sc_c_2' in 'main':
-Prove: true.
+Let x = sc2_0.F3_Sc_c.
+Let a = sc2_0.F3_Sc_b.
+Assume {
+  Type: is_sint32(x) /\ is_sint32(a[2]).
+  (* Initializer *)
+  Init: (sc2_0.F3_Sc_a) = 1.
+  (* Initializer *)
+  Init: a[0] = 2.
+  (* Initializer *)
+  Init: a[1] = 3.
+  (* Initializer *)
+  Init: forall i : Z. ((2 <= i) -> ((i <= 2) -> (a[i] = 0))).
+  (* Initializer *)
+  Init: x = 4.
+}
+Prove: x = 4.
 
 ------------------------------------------------------------
 
 Goal Pre-condition 'qed_ok,Sc_c_3' in 'main':
-Prove: true.
+Let x = sc3_0.F3_Sc_c.
+Let a = sc3_0.F3_Sc_b.
+Let a_1 = a[2].
+Assume {
+  Type: is_sint32(x) /\ is_sint32(a_1).
+  (* Initializer *)
+  Init: (sc3_0.F3_Sc_a) = 1.
+  (* Initializer *)
+  Init: a[0] = 2.
+  (* Initializer *)
+  Init: a[1] = 3.
+  (* Initializer *)
+  Init: a_1 = 4.
+  (* Initializer *)
+  Init: x = 0.
+}
+Prove: x = 0.
 
 ------------------------------------------------------------
 
 Goal Pre-condition 'qed_ok,Tab_no_init' in 'main':
-Prove: true.
+Let x = tab_0[5].
+Assume {
+  Type: is_uint8(x).
+  (* Initializer *)
+  Init: forall i : Z. ((0 <= i) -> ((i <= 31) -> (tab_0[i] = 0))).
+}
+Prove: x = 0.
 
 ------------------------------------------------------------
 
@@ -111,3 +519,117 @@ Assume {
 Prove: tab_0[i] <= 255.
 
 ------------------------------------------------------------
+
+Goal Pre-condition 'qed_ok' in 'main':
+Let a = sq0_0.F3_Sc_b.
+Let a_1 = a[1].
+Assume {
+  Type: is_sint32(a_1) /\ is_sint32(a[2]).
+  (* Initializer *)
+  Init: (sq0_0.F3_Sc_a) = 2.
+  (* Initializer *)
+  Init: forall i : Z. ((0 <= i) -> ((i <= 1) -> (a[i] = 2))).
+  (* Initializer *)
+  Init: forall i : Z. ((2 <= i) -> ((i <= 2) -> (a[i] = 0))).
+  (* Initializer *)
+  Init: (sq0_0.F3_Sc_c) = 2.
+}
+Prove: a_1 = 2.
+
+------------------------------------------------------------
+
+Goal Pre-condition 'qed_ok' in 'main':
+Let a = sq0_0.F3_Sc_b.
+Let a_1 = a[2].
+Assume {
+  Type: is_sint32(a[1]) /\ is_sint32(a_1).
+  (* Initializer *)
+  Init: (sq0_0.F3_Sc_a) = 2.
+  (* Initializer *)
+  Init: forall i : Z. ((0 <= i) -> ((i <= 1) -> (a[i] = 2))).
+  (* Initializer *)
+  Init: forall i : Z. ((2 <= i) -> ((i <= 2) -> (a[i] = 0))).
+  (* Initializer *)
+  Init: (sq0_0.F3_Sc_c) = 2.
+}
+Prove: a_1 = 0.
+
+------------------------------------------------------------
+
+Goal Pre-condition 'qed_ok' in 'main':
+Assume {
+  Type: is_sint32(t1_0[4]).
+  (* Goal *)
+  When: (0 <= i) /\ (i <= 3).
+  (* Initializer *)
+  Init: forall i_1 : Z. ((0 <= i_1) -> ((i_1 <= 3) -> (t1_0[i_1] = 1))).
+  (* Initializer *)
+  Init: forall i_1 : Z. ((5 <= i_1) -> ((i_1 <= 6) -> (t1_0[i_1] = 2))).
+  (* Initializer *)
+  Init: forall i_1 : Z. ((4 <= i_1) -> ((i_1 <= 4) -> (t1_0[i_1] = 0))).
+  (* Initializer *)
+  Init: forall i_1 : Z. ((7 <= i_1) -> ((i_1 <= 9) -> (t1_0[i_1] = 0))).
+}
+Prove: t1_0[i] = 1.
+
+------------------------------------------------------------
+
+Goal Pre-condition 'qed_ok,todo' in 'main':
+Let x = t1_0[4].
+Assume {
+  Type: is_sint32(x).
+  (* Initializer *)
+  Init: forall i : Z. ((0 <= i) -> ((i <= 3) -> (t1_0[i] = 1))).
+  (* Initializer *)
+  Init: forall i : Z. ((5 <= i) -> ((i <= 6) -> (t1_0[i] = 2))).
+  (* Initializer *)
+  Init: forall i : Z. ((4 <= i) -> ((i <= 4) -> (t1_0[i] = 0))).
+  (* Initializer *)
+  Init: forall i : Z. ((7 <= i) -> ((i <= 9) -> (t1_0[i] = 0))).
+}
+Prove: x = 0.
+
+------------------------------------------------------------
+
+Goal Pre-condition 'qed_ok' in 'main':
+Assume {
+  Type: is_sint32(t1_0[4]).
+  (* Goal *)
+  When: (6 <= i) /\ (i <= 6).
+  (* Initializer *)
+  Init: forall i_1 : Z. ((0 <= i_1) -> ((i_1 <= 3) -> (t1_0[i_1] = 1))).
+  (* Initializer *)
+  Init: forall i_1 : Z. ((5 <= i_1) -> ((i_1 <= 6) -> (t1_0[i_1] = 2))).
+  (* Initializer *)
+  Init: forall i_1 : Z. ((4 <= i_1) -> ((i_1 <= 4) -> (t1_0[i_1] = 0))).
+  (* Initializer *)
+  Init: forall i_1 : Z. ((7 <= i_1) -> ((i_1 <= 9) -> (t1_0[i_1] = 0))).
+}
+Prove: t1_0[i] = 2.
+
+------------------------------------------------------------
+
+Goal Pre-condition 'qed_ok' in 'main':
+Assume {
+  Type: is_sint32(t1_0[4]).
+  (* Goal *)
+  When: (7 <= i) /\ (i <= 9).
+  (* Initializer *)
+  Init: forall i_1 : Z. ((0 <= i_1) -> ((i_1 <= 3) -> (t1_0[i_1] = 1))).
+  (* Initializer *)
+  Init: forall i_1 : Z. ((5 <= i_1) -> ((i_1 <= 6) -> (t1_0[i_1] = 2))).
+  (* Initializer *)
+  Init: forall i_1 : Z. ((4 <= i_1) -> ((i_1 <= 4) -> (t1_0[i_1] = 0))).
+  (* Initializer *)
+  Init: forall i_1 : Z. ((7 <= i_1) -> ((i_1 <= 9) -> (t1_0[i_1] = 0))).
+}
+Prove: t1_0[i] = 0.
+
+------------------------------------------------------------
+
+Goal Pre-condition 'qed_ok,direct_init_union' in 'main':
+Let x = u.F4_U_a.
+Assume { Type: is_sint16(x). (* Initializer *) Init: x = (-1). }
+Prove: x = (-1).
+
+------------------------------------------------------------
diff --git a/src/plugins/wp/tests/wp_acsl/oracle/init_value.1.res.oracle b/src/plugins/wp/tests/wp_acsl/oracle/init_value.1.res.oracle
index a95fc1f3809f0317d6310d97e8de7e9b290253c0..125cf6eebc17d9a97091d3c08a58f882d44e2219 100644
--- a/src/plugins/wp/tests/wp_acsl/oracle/init_value.1.res.oracle
+++ b/src/plugins/wp/tests/wp_acsl/oracle/init_value.1.res.oracle
@@ -1,17 +1,155 @@
-# frama-c -wp [...]
+# frama-c -wp -wp-no-let [...]
 [kernel] Parsing tests/wp_acsl/init_value.i (no preprocessing)
 [wp] Running WP plugin...
 [wp] Loading driver 'share/wp.driver'
 [wp] Warning: Missing RTE guards
+------------------------------------------------------------
+  Function fa1
+------------------------------------------------------------
+
+Goal Post-condition 'qed_ok' in 'fa1':
+Let x = ta1_0[0].
+Let x_1 = ta1_0[1].
+Let x_2 = ta1_0[3].
+Assume {
+  Type: is_sint32(x) /\ is_sint32(x_1) /\ is_sint32(x_2) /\
+      is_sint32(ta1_0[4]).
+}
+Prove: (x_1 = x) /\ (x_2 = x_1).
+
+------------------------------------------------------------
+
+Goal Post-condition 'qed_ko' in 'fa1':
+Let x = ta1_0[4].
+Assume {
+  Type: is_sint32(ta1_0[0]) /\ is_sint32(ta1_0[1]) /\ is_sint32(ta1_0[3]) /\
+      is_sint32(x).
+}
+Prove: x = 0.
+
+------------------------------------------------------------
+
+Goal Post-condition 'qed_ko' in 'fa1':
+Let x = ta1_0[3].
+Assume {
+  Type: is_sint32(ta1_0[0]) /\ is_sint32(ta1_0[1]) /\ is_sint32(x) /\
+      is_sint32(ta1_0[4]).
+}
+Prove: x = 1.
+
+------------------------------------------------------------
+------------------------------------------------------------
+  Function fa2
+------------------------------------------------------------
+
+Goal Post-condition 'qed_ok' in 'fa2':
+Let x = ta2_0[0].
+Let x_1 = ta2_0[1].
+Let x_2 = ta2_0[4].
+Assume { Type: is_sint32(x) /\ is_sint32(x_1) /\ is_sint32(x_2). }
+Prove: (x_1 = x) /\ (x_2 = x_1).
+
+------------------------------------------------------------
+
+Goal Post-condition 'qed_ko' in 'fa2':
+Let x = ta2_0[4].
+Assume { Type: is_sint32(ta2_0[0]) /\ is_sint32(ta2_0[1]) /\ is_sint32(x). }
+Prove: x = 1.
+
+------------------------------------------------------------
+
+Goal Post-condition 'qed_ko' in 'fa2':
+Let x = ta2_0[1].
+Assume { Type: is_sint32(ta2_0[0]) /\ is_sint32(x) /\ is_sint32(ta2_0[4]). }
+Prove: x = 1.
+
+------------------------------------------------------------
+------------------------------------------------------------
+  Function fa3
+------------------------------------------------------------
+
+Goal Post-condition 'qed_ok' in 'fa3':
+Let x = ta1_0[2].
+Let x_1 = ta1_0[4].
+Let x_2 = ta3_0[0].
+Let x_3 = ta3_0[2].
+Assume {
+  Type: is_sint32(x) /\ is_sint32(x_1) /\ is_sint32(x_2) /\ is_sint32(x_3).
+}
+Prove: (x_1 = x) /\ (x_3 = x_2).
+
+------------------------------------------------------------
+
+Goal Post-condition 'qed_ko' in 'fa3':
+Let x = ta3_0[0]. Assume { Type: is_sint32(x) /\ is_sint32(ta3_0[2]). }
+Prove: x = 1.
+
+------------------------------------------------------------
+
+Goal Post-condition 'qed_ko' in 'fa3':
+Let x = ta3_0[2]. Assume { Type: is_sint32(ta3_0[0]) /\ is_sint32(x). }
+Prove: x = 1.
+
+------------------------------------------------------------
+
+Goal Post-condition 'qed_ko' in 'fa3':
+Let x = ta2_0[4]. Assume { Type: is_sint32(x). }
+Prove: x = 1.
+
+------------------------------------------------------------
+------------------------------------------------------------
+  Function fs1
+------------------------------------------------------------
+
+Goal Post-condition 'qed_ok' in 'fs1':
+Let a = ts1_0[0].
+Let a_1 = ts1_0[1].
+Let a_2 = ts1_0[3].
+Let a_3 = ts1_0[2].
+Let x = a_3.F5_a.
+Let x_1 = a_3.F5_b.
+Assume {
+  Type: IsS5(a) /\ IsS5(a_1) /\ IsS5(a_2) /\ is_sint32(a.F5_a) /\
+      is_sint32(x) /\ is_sint32(x_1) /\ is_sint32(a_3.F5_c).
+}
+Prove: (x_1 = x) /\ EqS5(a, a_1) /\ EqS5(a_1, a_2).
+
+------------------------------------------------------------
+
+Goal Post-condition 'qed_ko' in 'fs1':
+Let a = ts1_0[0].
+Let a_1 = ts1_0[2].
+Let x = a_1.F5_c.
+Assume {
+  Type: IsS5(a) /\ IsS5(ts1_0[1]) /\ IsS5(ts1_0[3]) /\ is_sint32(a.F5_a) /\
+      is_sint32(a_1.F5_a) /\ is_sint32(a_1.F5_b) /\ is_sint32(x).
+}
+Prove: x = 1.
+
+------------------------------------------------------------
+
+Goal Post-condition 'qed_ko' in 'fs1':
+Let a = ts1_0[0].
+Let x = a.F5_a.
+Let a_1 = ts1_0[2].
+Assume {
+  Type: IsS5(a) /\ IsS5(ts1_0[1]) /\ IsS5(ts1_0[3]) /\ is_sint32(x) /\
+      is_sint32(a_1.F5_a) /\ is_sint32(a_1.F5_b) /\ is_sint32(a_1.F5_c).
+}
+Prove: x = 1.
+
+------------------------------------------------------------
 ------------------------------------------------------------
   Function main_ko
 ------------------------------------------------------------
 
 Goal Pre-condition 'qed_ko,Sc_eq_ko' in 'main_ko':
+Let x = sc2_0.F3_Sc_c.
 Let a = sc2_0.F3_Sc_b.
 Let a_1 = sc3_0.F3_Sc_b.
+Let a_2 = a_1[2].
 Assume {
-  Type: IsS3_Sc(sc2_0) /\ IsS3_Sc(sc3_0).
+  Type: IsS3_Sc(sc2_0) /\ IsS3_Sc(sc3_0) /\ is_sint32(x) /\ is_sint32(a_2).
   (* Initializer *)
   Init: (sc3_0.F3_Sc_a) = 1.
   (* Initializer *)
@@ -19,7 +157,7 @@ Assume {
   (* Initializer *)
   Init: a_1[1] = 3.
   (* Initializer *)
-  Init: a_1[2] = 4.
+  Init: a_2 = 4.
   (* Initializer *)
   Init: (sc3_0.F3_Sc_c) = 0.
   (* Initializer *)
@@ -31,29 +169,80 @@ Assume {
   (* Initializer *)
   Init: forall i : Z. ((2 <= i) -> ((i <= 2) -> (a[i] = 0))).
   (* Initializer *)
-  Init: (sc2_0.F3_Sc_c) = 4.
+  Init: x = 4.
 }
 Prove: EqS3_Sc(sc2_0, sc3_0).
 
 ------------------------------------------------------------
 
 Goal Pre-condition 'qed_ko,Sc_t' in 'main_ko':
-Prove: false.
+Let a = sc3_0.F3_Sc_b.
+Let a_1 = a[2].
+Assume {
+  Type: IsS3_Sc(sc3_0) /\ is_sint32(a_1).
+  (* Initializer *)
+  Init: (sc3_0.F3_Sc_a) = 1.
+  (* Initializer *)
+  Init: a[0] = 2.
+  (* Initializer *)
+  Init: a[1] = 3.
+  (* Initializer *)
+  Init: a_1 = 4.
+  (* Initializer *)
+  Init: (sc3_0.F3_Sc_c) = 0.
+}
+Prove: a_1 = 3.
 
 ------------------------------------------------------------
 
 Goal Pre-condition 'qed_ko,Sc_c_2' in 'main_ko':
-Prove: false.
+Let x = sc2_0.F3_Sc_c.
+Let a = sc2_0.F3_Sc_b.
+Assume {
+  Type: IsS3_Sc(sc2_0) /\ is_sint32(x).
+  (* Initializer *)
+  Init: (sc2_0.F3_Sc_a) = 1.
+  (* Initializer *)
+  Init: a[0] = 2.
+  (* Initializer *)
+  Init: a[1] = 3.
+  (* Initializer *)
+  Init: forall i : Z. ((2 <= i) -> ((i <= 2) -> (a[i] = 0))).
+  (* Initializer *)
+  Init: x = 4.
+}
+Prove: x = 2.
 
 ------------------------------------------------------------
 
 Goal Pre-condition 'qed_ko,Tab_no_init' in 'main_ko':
-Prove: false.
+Let x = tab_0[5].
+Assume {
+  Type: is_uint8(x).
+  (* Initializer *)
+  Init: forall i : Z. ((0 <= i) -> ((i <= 31) -> (tab_0[i] = 0))).
+}
+Prove: x = 1.
 
 ------------------------------------------------------------
 
 Goal Pre-condition 'qed_ko,With_Array_Struct_3' in 'main_ko':
-Prove: false.
+Let a = st_0.F2_St_tab.
+Let a_1 = a[3].
+Assume {
+  Type: is_sint32(a_1).
+  (* Initializer *)
+  Init: a[0] = 1.
+  (* Initializer *)
+  Init: a[1] = 2.
+  (* Initializer *)
+  Init: a[2] = 3.
+  (* Initializer *)
+  Init: a_1 = 4.
+  (* Initializer *)
+  Init: forall i : Z. ((4 <= i) -> ((i <= 9) -> (a[i] = 0))).
+}
+Prove: a_1 = 3.
 
 ------------------------------------------------------------
 
@@ -69,3 +258,42 @@ Assume {
 Prove: x = 1.
 
 ------------------------------------------------------------
+
+Goal Pre-condition 'qed_ko,T1_6' in 'main_ko':
+Let x = t1_0[6].
+Assume {
+  Type: is_sint32(x).
+  (* Initializer *)
+  Init: forall i : Z. ((0 <= i) -> ((i <= 3) -> (t1_0[i] = 1))).
+  (* Initializer *)
+  Init: forall i : Z. ((5 <= i) -> ((i <= 6) -> (t1_0[i] = 2))).
+  (* Initializer *)
+  Init: forall i : Z. ((4 <= i) -> ((i <= 4) -> (t1_0[i] = 0))).
+  (* Initializer *)
+  Init: forall i : Z. ((7 <= i) -> ((i <= 9) -> (t1_0[i] = 0))).
+}
+Prove: x = 0.
+
+------------------------------------------------------------
+
+Goal Pre-condition 'qed_ko,indirect_init_union_b' in 'main_ko':
+Let x = u.F4_U_b.
+Assume {
+  Type: is_sint64(x) /\ is_sint16((u.F4_U_t)[0]).
+  (* Initializer *)
+  Init: (u.F4_U_a) = (-1).
+}
+Prove: x = 0.
+
+------------------------------------------------------------
+
+Goal Pre-condition 'qed_ko,indirect_init_union_t' in 'main_ko':
+Let a = (u.F4_U_t)[0].
+Assume {
+  Type: is_sint64(u.F4_U_b) /\ is_sint16(a).
+  (* Initializer *)
+  Init: (u.F4_U_a) = (-1).
+}
+Prove: a = 0.
+
+------------------------------------------------------------
diff --git a/src/plugins/wp/tests/wp_acsl/oracle_qualif/arith.0.res.oracle b/src/plugins/wp/tests/wp_acsl/oracle_qualif/arith.0.res.oracle
index 07d06584686e232c0f532a6753c680eb5cfb9c90..e9dcd2c5a7a2cb592854cd7ce39ab81f151403c8 100644
--- a/src/plugins/wp/tests/wp_acsl/oracle_qualif/arith.0.res.oracle
+++ b/src/plugins/wp/tests/wp_acsl/oracle_qualif/arith.0.res.oracle
@@ -25,7 +25,7 @@
 [wp] [Qed] Goal typed_lemma_ucL4_qed_ok : Valid
 [wp] [Qed] Goal typed_lemma_ucN1_qed_ok : Valid
 [wp] [Qed] Goal typed_lemma_ucN2_qed_ok : Valid
-[wp] [Qed] Goal typed_cast_sgn_usgn_post_qed_ok_nat : Valid
+[wp] [Qed] Goal typed_cast_sgn_usgn_ensures_qed_ok_nat : Valid
 [wp] [Alt-Ergo] Goal typed_uchar_range_assert_qed_ok_A1 : Valid
 [wp] [Alt-Ergo] Goal typed_uchar_range_assert_qed_ok_A2 : Valid
 [wp] Proved goals:   24 / 24
@@ -38,5 +38,5 @@ Lemma               20      1 (1..8)        21       100%
 -------------------------------------------------------------
 Functions           WP     Alt-Ergo        Total   Success
 cast_sgn_usgn        1     -                 1       100%
-uchar_range         -       2 (8..20)        2       100%
+uchar_range         -       2 (12..24)       2       100%
 -------------------------------------------------------------
diff --git a/src/plugins/wp/tests/wp_acsl/oracle_qualif/arith.1.res.oracle b/src/plugins/wp/tests/wp_acsl/oracle_qualif/arith.1.res.oracle
index a08d1132de31a1100db53a8cf6a5a067f2ff2ef5..473a012c3e21722c774d5dde8a1d77be84ef94ee 100644
--- a/src/plugins/wp/tests/wp_acsl/oracle_qualif/arith.1.res.oracle
+++ b/src/plugins/wp/tests/wp_acsl/oracle_qualif/arith.1.res.oracle
@@ -4,7 +4,7 @@
 [wp] Loading driver 'share/wp.driver'
 [wp] Warning: Missing RTE guards
 [wp] 1 goal scheduled
-[wp] [Alt-Ergo] Goal typed_cast_sgn_usgn_post_qed_ko_KO : Unknown
+[wp] [Alt-Ergo] Goal typed_cast_sgn_usgn_ensures_qed_ko_KO : Unknown
 [wp] Proved goals:    0 / 1
   Alt-Ergo:        0  (unknown: 1)
 [wp] Report 'tests/wp_acsl/arith.i.1.report.json'
diff --git a/src/plugins/wp/tests/wp_acsl/oracle_qualif/assign_array.res.oracle b/src/plugins/wp/tests/wp_acsl/oracle_qualif/assign_array.res.oracle
index 9f7b8911db6db6d8cd8add3e31df51ff7a2c7384..cb994356b5b0a1d0d6dfab1cf301f3069c5c05f7 100644
--- a/src/plugins/wp/tests/wp_acsl/oracle_qualif/assign_array.res.oracle
+++ b/src/plugins/wp/tests/wp_acsl/oracle_qualif/assign_array.res.oracle
@@ -4,10 +4,10 @@
 [wp] Loading driver 'share/wp.driver'
 [wp] Warning: Missing RTE guards
 [wp] 4 goals scheduled
-[wp] [Qed] Goal typed_jobA_assign_exit : Valid
-[wp] [Qed] Goal typed_jobA_assign_normal : Valid
-[wp] [Qed] Goal typed_jobG_assign_exit : Valid
-[wp] [Qed] Goal typed_jobG_assign_normal : Valid
+[wp] [Qed] Goal typed_jobA_assigns_exit : Valid
+[wp] [Qed] Goal typed_jobA_assigns_normal : Valid
+[wp] [Qed] Goal typed_jobG_assigns_exit : Valid
+[wp] [Qed] Goal typed_jobG_assigns_normal : Valid
 [wp] Proved goals:    4 / 4
   Qed:             4
 [wp] Report 'tests/wp_acsl/assign_array.i.0.report.json'
diff --git a/src/plugins/wp/tests/wp_acsl/oracle_qualif/assigns_path.res.oracle b/src/plugins/wp/tests/wp_acsl/oracle_qualif/assigns_path.res.oracle
index ee214135b6cbf6302dc3b6db7e95dc9f36064b97..898e9cdc2f924828edf032058bd9a72fc90f9ed8 100644
--- a/src/plugins/wp/tests/wp_acsl/oracle_qualif/assigns_path.res.oracle
+++ b/src/plugins/wp/tests/wp_acsl/oracle_qualif/assigns_path.res.oracle
@@ -4,22 +4,22 @@
 [wp] Loading driver 'share/wp.driver'
 [wp] Warning: Missing RTE guards
 [wp] 9 goals scheduled
-[wp] [Qed] Goal typed_job_post_N : Valid
-[wp] [Alt-Ergo] Goal typed_job_post_A : Valid
-[wp] [Alt-Ergo] Goal typed_job_loop_inv_preserved : Valid
-[wp] [Qed] Goal typed_job_loop_inv_established : Valid
-[wp] [Alt-Ergo] Goal typed_job_loop_inv_2_preserved : Valid
-[wp] [Qed] Goal typed_job_loop_inv_2_established : Valid
-[wp] [Qed] Goal typed_job_loop_assign : Valid
-[wp] [Qed] Goal typed_job_assign_part1 : Valid
-[wp] [Qed] Goal typed_job_assign_part2 : Valid
+[wp] [Qed] Goal typed_job_ensures_N : Valid
+[wp] [Alt-Ergo] Goal typed_job_ensures_A : Valid
+[wp] [Alt-Ergo] Goal typed_job_loop_invariant_preserved : Valid
+[wp] [Qed] Goal typed_job_loop_invariant_established : Valid
+[wp] [Alt-Ergo] Goal typed_job_loop_invariant_2_preserved : Valid
+[wp] [Qed] Goal typed_job_loop_invariant_2_established : Valid
+[wp] [Qed] Goal typed_job_loop_assigns : Valid
+[wp] [Qed] Goal typed_job_assigns_part1 : Valid
+[wp] [Qed] Goal typed_job_assigns_part2 : Valid
 [wp] Proved goals:    9 / 9
   Qed:             6 
   Alt-Ergo:        3
 [wp] Report 'tests/wp_acsl/assigns_path.i.0.report.json'
 -------------------------------------------------------------
 Functions           WP     Alt-Ergo        Total   Success
-job                  6      3 (16..28)       9       100%
+job                  6      3 (20..32)       9       100%
 -------------------------------------------------------------
 [wp] Warning: Memory model hypotheses for function 'job':
   /*@ behavior typed: requires \separated(&p,b+(..)); */
diff --git a/src/plugins/wp/tests/wp_acsl/oracle_qualif/assigns_range.0.res.oracle b/src/plugins/wp/tests/wp_acsl/oracle_qualif/assigns_range.0.res.oracle
index 5c7e54e44313cf946824b880f2542ab5a05ed509..c2e202de26b33c5638730e308d0680514e515639 100644
--- a/src/plugins/wp/tests/wp_acsl/oracle_qualif/assigns_range.0.res.oracle
+++ b/src/plugins/wp/tests/wp_acsl/oracle_qualif/assigns_range.0.res.oracle
@@ -4,31 +4,31 @@
 [wp] Loading driver 'share/wp.driver'
 [wp] Warning: Missing RTE guards
 [wp] 17 goals scheduled
-[wp] [Qed] Goal typed_call_assigns_all_assign_exit_part1 : Valid
-[wp] [Qed] Goal typed_call_assigns_all_assign_exit_part2 : Valid
-[wp] [Qed] Goal typed_call_assigns_all_assign_exit_part3 : Valid
-[wp] [Qed] Goal typed_call_assigns_all_assign_exit_part4 : Valid
-[wp] [Qed] Goal typed_call_assigns_all_assign_exit_part5 : Valid
-[wp] [Qed] Goal typed_call_assigns_all_assign_normal_part1 : Valid
-[wp] [Qed] Goal typed_call_assigns_all_assign_normal_part2 : Valid
-[wp] [Qed] Goal typed_call_assigns_all_assign_normal_part3 : Valid
-[wp] [Qed] Goal typed_call_assigns_all_assign_normal_part4 : Valid
-[wp] [Qed] Goal typed_call_assigns_all_assign_normal_part5 : Valid
-[wp] [Alt-Ergo] Goal typed_call_assigns_all_call_assigns_t1_an_element_pre : Valid
-[wp] [Qed] Goal typed_call_assigns_all_call_assigns_t2_bound_pre : Valid
-[wp] [Qed] Goal typed_call_assigns_all_call_assigns_t3_inf_bound_pre : Valid
-[wp] [Alt-Ergo] Goal typed_call_assigns_all_call_assigns_t4_sup_bound_pre : Valid
-[wp] [Alt-Ergo] Goal typed_call_assigns_t1_call_assigns_t1_an_element_pre : Valid
-[wp] [Alt-Ergo] Goal typed_call_assigns_t2_call_assigns_t2_bound_pre : Valid
-[wp] [Alt-Ergo] Goal typed_call_assigns_t4_call_assigns_t4_sup_bound_pre : Valid
+[wp] [Qed] Goal typed_call_assigns_all_assigns_exit_part1 : Valid
+[wp] [Qed] Goal typed_call_assigns_all_assigns_exit_part2 : Valid
+[wp] [Qed] Goal typed_call_assigns_all_assigns_exit_part3 : Valid
+[wp] [Qed] Goal typed_call_assigns_all_assigns_exit_part4 : Valid
+[wp] [Qed] Goal typed_call_assigns_all_assigns_exit_part5 : Valid
+[wp] [Qed] Goal typed_call_assigns_all_assigns_normal_part1 : Valid
+[wp] [Qed] Goal typed_call_assigns_all_assigns_normal_part2 : Valid
+[wp] [Qed] Goal typed_call_assigns_all_assigns_normal_part3 : Valid
+[wp] [Qed] Goal typed_call_assigns_all_assigns_normal_part4 : Valid
+[wp] [Qed] Goal typed_call_assigns_all_assigns_normal_part5 : Valid
+[wp] [Alt-Ergo] Goal typed_call_assigns_all_call_assigns_t1_an_element_requires : Valid
+[wp] [Qed] Goal typed_call_assigns_all_call_assigns_t2_bound_requires : Valid
+[wp] [Qed] Goal typed_call_assigns_all_call_assigns_t3_inf_bound_requires : Valid
+[wp] [Alt-Ergo] Goal typed_call_assigns_all_call_assigns_t4_sup_bound_requires : Valid
+[wp] [Alt-Ergo] Goal typed_call_assigns_t1_call_assigns_t1_an_element_requires : Valid
+[wp] [Alt-Ergo] Goal typed_call_assigns_t2_call_assigns_t2_bound_requires : Valid
+[wp] [Alt-Ergo] Goal typed_call_assigns_t4_call_assigns_t4_sup_bound_requires : Valid
 [wp] Proved goals:   17 / 17
   Qed:            12 
   Alt-Ergo:        5
 [wp] Report 'tests/wp_acsl/assigns_range.i.0.report.json'
 -------------------------------------------------------------
 Functions           WP     Alt-Ergo        Total   Success
-call_assigns_all    12      2 (4..16)       14       100%
-call_assigns_t1     -       1 (1..12)        1       100%
-call_assigns_t2     -       1 (1..12)        1       100%
+call_assigns_all    12      2 (8..20)       14       100%
+call_assigns_t1     -       1 (4..16)        1       100%
+call_assigns_t2     -       1 (4..16)        1       100%
 call_assigns_t4     -       1 (4..16)        1       100%
 -------------------------------------------------------------
diff --git a/src/plugins/wp/tests/wp_acsl/oracle_qualif/assigns_range.1.res.oracle b/src/plugins/wp/tests/wp_acsl/oracle_qualif/assigns_range.1.res.oracle
index 84e3f10f0efe53d104098b94a57cf534ff117f4f..73d00d5b60c654dd9afa4677e6010add74322230 100644
--- a/src/plugins/wp/tests/wp_acsl/oracle_qualif/assigns_range.1.res.oracle
+++ b/src/plugins/wp/tests/wp_acsl/oracle_qualif/assigns_range.1.res.oracle
@@ -4,12 +4,12 @@
 [wp] Loading driver 'share/wp.driver'
 [wp] Warning: Missing RTE guards
 [wp] 6 goals scheduled
-[wp] [Alt-Ergo] Goal typed_call_assigns_t1_assign_exit : Unknown
-[wp] [Alt-Ergo] Goal typed_call_assigns_t1_assign_normal : Unknown
-[wp] [Alt-Ergo] Goal typed_call_assigns_t2_assign_exit : Unknown
-[wp] [Alt-Ergo] Goal typed_call_assigns_t2_assign_normal : Unknown
-[wp] [Alt-Ergo] Goal typed_call_assigns_t4_assign_exit : Unknown
-[wp] [Alt-Ergo] Goal typed_call_assigns_t4_assign_normal : Unknown
+[wp] [Alt-Ergo] Goal typed_call_assigns_t1_assigns_exit : Unknown
+[wp] [Alt-Ergo] Goal typed_call_assigns_t1_assigns_normal : Unknown
+[wp] [Alt-Ergo] Goal typed_call_assigns_t2_assigns_exit : Unknown
+[wp] [Alt-Ergo] Goal typed_call_assigns_t2_assigns_normal : Unknown
+[wp] [Alt-Ergo] Goal typed_call_assigns_t4_assigns_exit : Unknown
+[wp] [Alt-Ergo] Goal typed_call_assigns_t4_assigns_normal : Unknown
 [wp] Proved goals:    0 / 6
   Alt-Ergo:        0  (unknown: 6)
 [wp] Report 'tests/wp_acsl/assigns_range.i.1.report.json'
diff --git a/src/plugins/wp/tests/wp_acsl/oracle_qualif/axioms.res.oracle b/src/plugins/wp/tests/wp_acsl/oracle_qualif/axioms.res.oracle
index 9f0c0ed6dfd4dc51ec6a27508ac7c19efc112a66..f5638f7fcd190c69e8182ab88bdc7c4b6dcff689 100644
--- a/src/plugins/wp/tests/wp_acsl/oracle_qualif/axioms.res.oracle
+++ b/src/plugins/wp/tests/wp_acsl/oracle_qualif/axioms.res.oracle
@@ -4,16 +4,16 @@
 [wp] Loading driver 'share/wp.driver'
 [wp] Warning: Missing RTE guards
 [wp] 10 goals scheduled
-[wp] [Alt-Ergo] Goal typed_f_post_P_todo : Unknown
-[wp] [Alt-Ergo] Goal typed_f_post_Q : Valid
-[wp] [Alt-Ergo] Goal typed_f_loop_inv_Index_preserved : Valid
-[wp] [Alt-Ergo] Goal typed_f_loop_inv_Index_established : Valid
-[wp] [Alt-Ergo] Goal typed_f_loop_inv_Positive_preserved : Valid
-[wp] [Qed] Goal typed_f_loop_inv_Positive_established : Valid
-[wp] [Qed] Goal typed_f_loop_assign_part1 : Valid
-[wp] [Qed] Goal typed_f_loop_assign_part2 : Valid
-[wp] [Alt-Ergo] Goal typed_f_loop_assign_part3 : Valid
-[wp] [Alt-Ergo] Goal typed_f_assign : Unknown
+[wp] [Alt-Ergo] Goal typed_f_ensures_P_todo : Unknown
+[wp] [Alt-Ergo] Goal typed_f_ensures_Q : Valid
+[wp] [Alt-Ergo] Goal typed_f_loop_invariant_Index_preserved : Valid
+[wp] [Alt-Ergo] Goal typed_f_loop_invariant_Index_established : Valid
+[wp] [Alt-Ergo] Goal typed_f_loop_invariant_Positive_preserved : Valid
+[wp] [Qed] Goal typed_f_loop_invariant_Positive_established : Valid
+[wp] [Qed] Goal typed_f_loop_assigns_part1 : Valid
+[wp] [Qed] Goal typed_f_loop_assigns_part2 : Valid
+[wp] [Alt-Ergo] Goal typed_f_loop_assigns_part3 : Valid
+[wp] [Alt-Ergo] Goal typed_f_assigns : Unknown
 [wp] Proved goals:    8 / 10
   Qed:             3 
   Alt-Ergo:        5  (unknown: 2)
diff --git a/src/plugins/wp/tests/wp_acsl/oracle_qualif/base_offset.res.oracle b/src/plugins/wp/tests/wp_acsl/oracle_qualif/base_offset.res.oracle
index 5cca1ab7358a312f7bab570a0cf48b14de209f7d..4db477821a2d5675f28755aca8f3efd79f3afa9b 100644
--- a/src/plugins/wp/tests/wp_acsl/oracle_qualif/base_offset.res.oracle
+++ b/src/plugins/wp/tests/wp_acsl/oracle_qualif/base_offset.res.oracle
@@ -4,9 +4,9 @@
 [wp] Loading driver 'share/wp.driver'
 [wp] Warning: Missing RTE guards
 [wp] 3 goals scheduled
-[wp] [Qed] Goal typed_f_post : Valid
-[wp] [Qed] Goal typed_f_post_2 : Valid
-[wp] [Alt-Ergo] Goal typed_f_post_3 : Valid
+[wp] [Qed] Goal typed_f_ensures : Valid
+[wp] [Qed] Goal typed_f_ensures_2 : Valid
+[wp] [Alt-Ergo] Goal typed_f_ensures_3 : Valid
 [wp] Proved goals:    3 / 3
   Qed:             2 
   Alt-Ergo:        1
diff --git a/src/plugins/wp/tests/wp_acsl/oracle_qualif/bitwise.res.oracle b/src/plugins/wp/tests/wp_acsl/oracle_qualif/bitwise.res.oracle
index 2fa1eca8458955a096b6d3c49920c29621e3a793..3e2273eac8354bdd6fb8fdb663d0c28f8e47bc6c 100644
--- a/src/plugins/wp/tests/wp_acsl/oracle_qualif/bitwise.res.oracle
+++ b/src/plugins/wp/tests/wp_acsl/oracle_qualif/bitwise.res.oracle
@@ -4,35 +4,35 @@
 [wp] Loading driver 'share/wp.driver'
 [wp] Warning: Missing RTE guards
 [wp] 29 goals scheduled
-[wp] [Qed] Goal typed_band_post : Valid
-[wp] [Qed] Goal typed_band_post_band0 : Valid
-[wp] [Qed] Goal typed_band_bit0_post_band1 : Valid
-[wp] [Qed] Goal typed_band_bit0_post_band2 : Valid
-[wp] [Qed] Goal typed_band_bit1_post_band3 : Valid
-[wp] [Qed] Goal typed_band_bit2_post_band4 : Valid
-[wp] [Qed] Goal typed_band_bit3_post_band5 : Valid
-[wp] [Qed] Goal typed_band_bit4_post_band6 : Valid
-[wp] [Alt-Ergo] Goal typed_band_bool_false_post : Unknown
-[wp] [Qed] Goal typed_band_bool_true_post : Valid
-[wp] [Qed] Goal typed_bnot_post : Valid
-[wp] [Qed] Goal typed_bor_post : Valid
-[wp] [Qed] Goal typed_bor_post_bor0 : Valid
-[wp] [Qed] Goal typed_bor_bit1_post_bor1 : Valid
-[wp] [Qed] Goal typed_bor_bit2_post_bor2 : Valid
-[wp] [Qed] Goal typed_bor_bit3_post_bor3 : Valid
-[wp] [Alt-Ergo] Goal typed_bor_bool_false_post : Unknown
-[wp] [Alt-Ergo] Goal typed_bor_bool_true_post : Valid
-[wp] [Qed] Goal typed_bxor_post : Valid
-[wp] [Qed] Goal typed_bxor_bit1_post : Valid
-[wp] [Qed] Goal typed_bxor_bit2_post : Valid
-[wp] [Alt-Ergo] Goal typed_bxor_bool_false_post : Unknown
-[wp] [Qed] Goal typed_bxor_bool_true_post : Valid
-[wp] [Qed] Goal typed_lshift_post : Valid
-[wp] [Qed] Goal typed_lshift_shift1_post_lsl1 : Valid
-[wp] [Qed] Goal typed_lshift_shift1_post_lsl2 : Valid
-[wp] [Qed] Goal typed_lshift_shift2_post_lsl3 : Valid
-[wp] [Qed] Goal typed_rshift_post : Valid
-[wp] [Qed] Goal typed_rshift_shift1_post_lsr1 : Valid
+[wp] [Qed] Goal typed_band_ensures : Valid
+[wp] [Qed] Goal typed_band_ensures_band0 : Valid
+[wp] [Qed] Goal typed_band_bit0_ensures_band1 : Valid
+[wp] [Qed] Goal typed_band_bit0_ensures_band2 : Valid
+[wp] [Qed] Goal typed_band_bit1_ensures_band3 : Valid
+[wp] [Qed] Goal typed_band_bit2_ensures_band4 : Valid
+[wp] [Qed] Goal typed_band_bit3_ensures_band5 : Valid
+[wp] [Qed] Goal typed_band_bit4_ensures_band6 : Valid
+[wp] [Alt-Ergo] Goal typed_band_bool_false_ensures : Unknown
+[wp] [Qed] Goal typed_band_bool_true_ensures : Valid
+[wp] [Qed] Goal typed_bnot_ensures : Valid
+[wp] [Qed] Goal typed_bor_ensures : Valid
+[wp] [Qed] Goal typed_bor_ensures_bor0 : Valid
+[wp] [Qed] Goal typed_bor_bit1_ensures_bor1 : Valid
+[wp] [Qed] Goal typed_bor_bit2_ensures_bor2 : Valid
+[wp] [Qed] Goal typed_bor_bit3_ensures_bor3 : Valid
+[wp] [Alt-Ergo] Goal typed_bor_bool_false_ensures : Unknown
+[wp] [Alt-Ergo] Goal typed_bor_bool_true_ensures : Valid
+[wp] [Qed] Goal typed_bxor_ensures : Valid
+[wp] [Qed] Goal typed_bxor_bit1_ensures : Valid
+[wp] [Qed] Goal typed_bxor_bit2_ensures : Valid
+[wp] [Alt-Ergo] Goal typed_bxor_bool_false_ensures : Unknown
+[wp] [Qed] Goal typed_bxor_bool_true_ensures : Valid
+[wp] [Qed] Goal typed_lshift_ensures : Valid
+[wp] [Qed] Goal typed_lshift_shift1_ensures_lsl1 : Valid
+[wp] [Qed] Goal typed_lshift_shift1_ensures_lsl2 : Valid
+[wp] [Qed] Goal typed_lshift_shift2_ensures_lsl3 : Valid
+[wp] [Qed] Goal typed_rshift_ensures : Valid
+[wp] [Qed] Goal typed_rshift_shift1_ensures_lsr1 : Valid
 [wp] Proved goals:   26 / 29
   Qed:            25 
   Alt-Ergo:        1  (unknown: 3)
diff --git a/src/plugins/wp/tests/wp_acsl/oracle_qualif/bitwise2.res.oracle b/src/plugins/wp/tests/wp_acsl/oracle_qualif/bitwise2.res.oracle
new file mode 100644
index 0000000000000000000000000000000000000000..9a78b68f273bf6996386d03a365069f903433e68
--- /dev/null
+++ b/src/plugins/wp/tests/wp_acsl/oracle_qualif/bitwise2.res.oracle
@@ -0,0 +1,22 @@
+# frama-c -wp -wp-timeout 90 -wp-steps 1500 [...]
+[kernel] Parsing tests/wp_acsl/bitwise2.i (no preprocessing)
+[wp] Running WP plugin...
+[wp] Loading driver 'share/wp.driver'
+[wp] Warning: Missing RTE guards
+[wp] 5 goals scheduled
+[wp] [Qed] Goal typed_job1_ensures : Valid
+[wp] [Qed] Goal typed_job1bis_ensures : Valid
+[wp] [Qed] Goal typed_job2_ensures : Valid
+[wp] [Qed] Goal typed_job3_ensures : Valid
+[wp] [Qed] Goal typed_job4_ensures : Valid
+[wp] Proved goals:    5 / 5
+  Qed:             5
+[wp] Report 'tests/wp_acsl/bitwise2.i.0.report.json'
+-------------------------------------------------------------
+Functions           WP     Alt-Ergo        Total   Success
+job1                 1     -                 1       100%
+job1bis              1     -                 1       100%
+job2                 1     -                 1       100%
+job3                 1     -                 1       100%
+job4                 1     -                 1       100%
+-------------------------------------------------------------
diff --git a/src/plugins/wp/tests/wp_acsl/oracle_qualif/block_length.res.oracle b/src/plugins/wp/tests/wp_acsl/oracle_qualif/block_length.res.oracle
index a602ae20ac0c4038302d93be1e5d770b7baca9bf..6033f7105e78cd4d628f8150f778cbaf3f2b1b0c 100644
--- a/src/plugins/wp/tests/wp_acsl/oracle_qualif/block_length.res.oracle
+++ b/src/plugins/wp/tests/wp_acsl/oracle_qualif/block_length.res.oracle
@@ -4,16 +4,16 @@
 [wp] Loading driver 'share/wp.driver'
 [wp] Warning: Missing RTE guards
 [wp] 10 goals scheduled
-[wp] [Qed] Goal typed_f_post_Pt : Valid
-[wp] [Qed] Goal typed_f_post_Psiz1 : Valid
-[wp] [Qed] Goal typed_f_post_Pmat1 : Valid
-[wp] [Qed] Goal typed_f_post_Psiz2 : Valid
-[wp] [Qed] Goal typed_f_post_Pmat2 : Valid
-[wp] [Qed] Goal typed_f_post_Ps : Valid
-[wp] [Qed] Goal typed_f_post_Pts : Valid
-[wp] [Qed] Goal typed_f_post_Pt1 : Valid
-[wp] [Qed] Goal typed_f_post_Pmat12 : Valid
-[wp] [Qed] Goal typed_f_post_Pts1 : Valid
+[wp] [Qed] Goal typed_f_ensures_Pt : Valid
+[wp] [Qed] Goal typed_f_ensures_Psiz1 : Valid
+[wp] [Qed] Goal typed_f_ensures_Pmat1 : Valid
+[wp] [Qed] Goal typed_f_ensures_Psiz2 : Valid
+[wp] [Qed] Goal typed_f_ensures_Pmat2 : Valid
+[wp] [Qed] Goal typed_f_ensures_Ps : Valid
+[wp] [Qed] Goal typed_f_ensures_Pts : Valid
+[wp] [Qed] Goal typed_f_ensures_Pt1 : Valid
+[wp] [Qed] Goal typed_f_ensures_Pmat12 : Valid
+[wp] [Qed] Goal typed_f_ensures_Pts1 : Valid
 [wp] Proved goals:   10 / 10
   Qed:            10
 [wp] Report 'tests/wp_acsl/block_length.i.0.report.json'
diff --git a/src/plugins/wp/tests/wp_acsl/oracle_qualif/cnf.res.oracle b/src/plugins/wp/tests/wp_acsl/oracle_qualif/cnf.res.oracle
index ca4bd42b039922e733543429316587d83a3560da..6ebd97b44fdd765b8aca8b5bbeca9eadb450e4ac 100644
--- a/src/plugins/wp/tests/wp_acsl/oracle_qualif/cnf.res.oracle
+++ b/src/plugins/wp/tests/wp_acsl/oracle_qualif/cnf.res.oracle
@@ -5,20 +5,20 @@
 [wp] Warning: Missing RTE guards
 [wp] 43 goals scheduled
 [wp:cnf] CNF=P_A /\ P_A1 /\ P_A2
-[wp] [Qed] Goal typed_f_post_a0 : Valid
+[wp] [Qed] Goal typed_f_ensures_a0 : Valid
 [wp:cnf] CNF=P_A \/ P_A1 \/ P_A2
-[wp] [Qed] Goal typed_f_post_a1 : Valid
+[wp] [Qed] Goal typed_f_ensures_a1 : Valid
 [wp:cnf] CNF=P_A2
-[wp] [Qed] Goal typed_f_post_a2 : Valid
+[wp] [Qed] Goal typed_f_ensures_a2 : Valid
 [wp:cnf] CNF=((not P_A1) \/ P_A2) /\ (P_A1 \/ (not P_A2))
-[wp] [Alt-Ergo] Goal typed_f_post_a3 : Valid
+[wp] [Alt-Ergo] Goal typed_f_ensures_a3 : Valid
 [wp:cnf] CNF=((not P_A) \/ P_A1) /\ (P_A \/ P_A2)
-[wp] [Alt-Ergo] Goal typed_f_post_a4 : Valid
+[wp] [Alt-Ergo] Goal typed_f_ensures_a4 : Valid
 [wp:cnf] 
   CNF=(P_A \/ P_B) /\ (P_A \/ P_B1) /\ (P_A \/ P_B2) /\ (P_A \/ P_C)
        /\ (P_A1 \/ P_B) /\ (P_A1 \/ P_B1) /\ (P_A1 \/ P_B2) /\ (P_A1 \/ P_C)
        /\ (P_A2 \/ P_B) /\ (P_A2 \/ P_B1) /\ (P_A2 \/ P_B2) /\ (P_A2 \/ P_C)
-[wp] [Alt-Ergo] Goal typed_f_post_a5 : Valid
+[wp] [Alt-Ergo] Goal typed_f_ensures_a5 : Valid
 [wp:cnf] 
   CNF=(P_A \/ P_A1 \/ P_A2 \/ P_C) /\ (P_A \/ P_A1 \/ P_A2 \/ P_B \/ P_C)
        /\ (P_A \/ P_A1 \/ P_A2 \/ P_B1 \/ P_C)
@@ -27,7 +27,7 @@
        /\ (P_A \/ P_A1 \/ P_A2 \/ P_B \/ P_B1 \/ P_C)
        /\ (P_A \/ P_A1 \/ P_A2 \/ P_B \/ P_B2 \/ P_C)
        /\ (P_A \/ P_A1 \/ P_A2 \/ P_B1 \/ P_B2 \/ P_C)
-[wp] [Alt-Ergo] Goal typed_f_post_a6 : Valid
+[wp] [Alt-Ergo] Goal typed_f_ensures_a6 : Valid
 [wp:cnf] 
   CNF=((not P_A) \/ (not P_A1) \/ P_A2 \/ P_C)
        /\ ((not P_A) \/ (not P_A1) \/ P_A2 \/ (not P_B) \/ P_C)
@@ -37,7 +37,7 @@
        /\ ((not P_A) \/ (not P_A1) \/ P_A2 \/ (not P_B) \/ (not P_B1) \/ P_C)
        /\ ((not P_A) \/ (not P_A1) \/ P_A2 \/ (not P_B) \/ P_B2 \/ P_C)
        /\ ((not P_A) \/ (not P_A1) \/ P_A2 \/ (not P_B1) \/ P_B2 \/ P_C)
-[wp] [Alt-Ergo] Goal typed_f_post_a7 : Valid
+[wp] [Alt-Ergo] Goal typed_f_ensures_a7 : Valid
 [wp:cnf] 
   CNF=((not P_A1) \/ P_A2 \/ P_C) /\ (P_A1 \/ (not P_A2) \/ P_C)
        /\ ((not P_A1) \/ P_A2 \/ (not P_B1) \/ P_B2)
@@ -60,7 +60,7 @@
        /\ (P_A1 \/ (not P_A2) \/ (not P_B1) \/ P_B2 \/ P_C)
        /\ (P_A1 \/ (not P_A2) \/ P_B1 \/ (not P_B2) \/ P_C)
        /\ (P_A1 \/ (not P_A2) \/ P_B1 \/ P_B2 \/ P_C)
-[wp] [Alt-Ergo] Goal typed_f_post_a8 : Valid
+[wp] [Alt-Ergo] Goal typed_f_ensures_a8 : Valid
 [wp:cnf] 
   CNF=((not P_A) \/ P_A1 \/ P_C) /\ (P_A \/ P_A2 \/ P_C)
        /\ ((not P_A) \/ P_A1 \/ (not P_B) \/ P_B1)
@@ -122,37 +122,37 @@
        /\ ((not P_A) \/ P_A1 \/ P_A2 \/ P_B \/ P_B1 \/ P_B2 \/ P_C)
        /\ (P_A \/ P_A1 \/ P_A2 \/ (not P_B) \/ P_B1 \/ P_B2 \/ P_C)
        /\ (P_A \/ P_A1 \/ P_A2 \/ P_B \/ P_B1 \/ P_B2 \/ P_C)
-[wp] [Alt-Ergo] Goal typed_f_post_a9 : Valid
+[wp] [Alt-Ergo] Goal typed_f_ensures_a9 : Valid
 [wp:cnf] CNF=P_B /\ P_B1 /\ P_B2 /\ P_C
-[wp] [Qed] Goal typed_f_post_b0 : Valid
+[wp] [Qed] Goal typed_f_ensures_b0 : Valid
 [wp:cnf] CNF=P_C /\ (P_B \/ P_B1 \/ P_B2)
-[wp] [Qed] Goal typed_f_post_b1 : Valid
+[wp] [Qed] Goal typed_f_ensures_b1 : Valid
 [wp:cnf] CNF=P_C /\ ((not P_B) \/ (not P_B1) \/ P_B2)
-[wp] [Alt-Ergo] Goal typed_f_post_b2 : Valid
+[wp] [Alt-Ergo] Goal typed_f_ensures_b2 : Valid
 [wp:cnf] CNF=P_C /\ ((not P_B1) \/ P_B2) /\ (P_B1 \/ (not P_B2))
-[wp] [Alt-Ergo] Goal typed_f_post_b3 : Valid
+[wp] [Alt-Ergo] Goal typed_f_ensures_b3 : Valid
 [wp:cnf] CNF=P_C /\ ((not P_B) \/ P_B1) /\ (P_B \/ P_B2)
-[wp] [Alt-Ergo] Goal typed_f_post_b4 : Valid
+[wp] [Alt-Ergo] Goal typed_f_ensures_b4 : Valid
 [wp:cnf] CNF=true
-[wp] [Qed] Goal typed_f_post_b5 : Valid
+[wp] [Qed] Goal typed_f_ensures_b5 : Valid
 [wp:cnf] CNF=P_B \/ P_B1 \/ P_B2 \/ P_C1
-[wp] [Qed] Goal typed_f_post_b6 : Valid
-[wp] [Qed] Goal typed_f_post_b7 : Valid
-[wp] [Qed] Goal typed_f_post_b8 : Valid
+[wp] [Qed] Goal typed_f_ensures_b6 : Valid
+[wp] [Qed] Goal typed_f_ensures_b7 : Valid
+[wp] [Qed] Goal typed_f_ensures_b8 : Valid
 [wp:cnf] CNF=true
-[wp] [Qed] Goal typed_f_post_b9 : Valid
+[wp] [Qed] Goal typed_f_ensures_b9 : Valid
 [wp:cnf] CNF=(P_B \/ P_C) /\ (P_B1 \/ P_C) /\ (P_B2 \/ P_C)
-[wp] [Alt-Ergo] Goal typed_f_post_c0 : Valid
+[wp] [Alt-Ergo] Goal typed_f_ensures_c0 : Valid
 [wp:cnf] CNF=P_B \/ P_B1 \/ P_B2 \/ P_C
-[wp] [Qed] Goal typed_f_post_c1 : Valid
+[wp] [Qed] Goal typed_f_ensures_c1 : Valid
 [wp:cnf] CNF=(not P_B) \/ (not P_B1) \/ P_B2 \/ P_C
-[wp] [Alt-Ergo] Goal typed_f_post_c2 : Valid
+[wp] [Alt-Ergo] Goal typed_f_ensures_c2 : Valid
 [wp:cnf] CNF=((not P_B1) \/ P_B2 \/ P_C) /\ (P_B1 \/ (not P_B2) \/ P_C)
-[wp] [Alt-Ergo] Goal typed_f_post_c3 : Valid
+[wp] [Alt-Ergo] Goal typed_f_ensures_c3 : Valid
 [wp:cnf] 
   CNF=((not P_B) \/ P_B1 \/ P_C) /\ (P_B \/ P_B2 \/ P_C)
        /\ ((not P_B) \/ P_B1 \/ P_B2 \/ P_C) /\ (P_B \/ P_B1 \/ P_B2 \/ P_C)
-[wp] [Alt-Ergo] Goal typed_f_post_c4 : Valid
+[wp] [Alt-Ergo] Goal typed_f_ensures_c4 : Valid
 [wp:cnf] 
   CNF=(P_B \/ (not P_C) \/ (not P_C1)) /\ (P_B \/ P_C \/ P_C1)
        /\ (P_B1 \/ (not P_C) \/ (not P_C1)) /\ (P_B1 \/ P_C \/ P_C1)
@@ -181,7 +181,7 @@
        /\ (P_B \/ (not P_B1) \/ (not P_B2) \/ P_C \/ P_C1)
        /\ (P_B \/ (not P_B1) \/ P_B2 \/ P_C \/ P_C1)
        /\ (P_B \/ P_B1 \/ (not P_B2) \/ P_C \/ P_C1)
-[wp] [Alt-Ergo] Goal typed_f_post_c5 : Valid
+[wp] [Alt-Ergo] Goal typed_f_ensures_c5 : Valid
 [wp:cnf] 
   CNF=((not P_B) \/ P_C1) /\ ((not P_B1) \/ P_C1) /\ ((not P_B2) \/ P_C1)
        /\ ((not P_B) \/ (not P_B1) \/ P_C1)
@@ -208,7 +208,7 @@
        /\ (P_B \/ P_B1 \/ (not P_B2) \/ (not P_C) \/ P_C1)
        /\ (P_B \/ P_B1 \/ P_B2 \/ (not P_C) \/ (not P_C1))
        /\ (P_B \/ P_B1 \/ P_B2 \/ P_C \/ P_C1)
-[wp] [Alt-Ergo] Goal typed_f_post_c6 : Valid
+[wp] [Alt-Ergo] Goal typed_f_ensures_c6 : Valid
 [wp:cnf] 
   CNF=((not P_B2) \/ P_C1) /\ (P_B \/ P_C1) /\ (P_B1 \/ P_C1)
        /\ ((not P_B) \/ (not P_B2) \/ P_C1) /\ ((not P_B) \/ P_B1 \/ P_C1)
@@ -234,72 +234,72 @@
        /\ ((not P_B) \/ (not P_B1) \/ P_B2 \/ P_C \/ P_C1)
        /\ ((not P_B) \/ P_B1 \/ P_B2 \/ (not P_C) \/ P_C1)
        /\ (P_B \/ (not P_B1) \/ P_B2 \/ (not P_C) \/ P_C1)
-[wp] [Alt-Ergo] Goal typed_f_post_c7 : Valid
+[wp] [Alt-Ergo] Goal typed_f_ensures_c7 : Valid
 [wp:cnf] Too big CNF/DNF
 [wp:cnf] 
   CNF=((P_C \/ (P_B2 <-> P_B1)) -> ((P_B2 <-> P_B1) <-> P_C1))
        /\ (((P_B2 <-> P_B1) <-> P_C1) -> (P_C \/ (P_B2 <-> P_B1)))
-[wp] [Alt-Ergo] Goal typed_f_post_c8 : Valid
+[wp] [Alt-Ergo] Goal typed_f_ensures_c8 : Valid
 [wp:cnf] Too big CNF/DNF
 [wp:cnf] 
   CNF=((P_C \/ ((P_B -> P_B1) /\ ((not P_B) -> P_B2)))
         -> ((P_B2 <-> P_B1) <-> P_C1))
        /\ (((P_B2 <-> P_B1) <-> P_C1)
            -> (P_C \/ ((P_B -> P_B1) /\ ((not P_B) -> P_B2))))
-[wp] [Alt-Ergo] Goal typed_f_post_c9 : Valid
+[wp] [Alt-Ergo] Goal typed_f_ensures_c9 : Valid
 [wp:cnf] 
   CNF=(P_B \/ (not P_C)) /\ (P_B1 \/ (not P_C)) /\ (P_B2 \/ (not P_C))
        /\ ((not P_B) \/ (not P_B1) \/ (not P_B2) \/ P_C)
-[wp] [Alt-Ergo] Goal typed_f_post_d0 : Valid
+[wp] [Alt-Ergo] Goal typed_f_ensures_d0 : Valid
 [wp:cnf] 
   CNF=((not P_B) \/ P_C) /\ ((not P_B1) \/ P_C) /\ ((not P_B2) \/ P_C)
        /\ (P_B \/ P_B1 \/ P_B2 \/ (not P_C))
-[wp] [Alt-Ergo] Goal typed_f_post_d1 : Valid
+[wp] [Alt-Ergo] Goal typed_f_ensures_d1 : Valid
 [wp:cnf] 
   CNF=((not P_B2) \/ P_C) /\ (P_B \/ P_C) /\ (P_B1 \/ P_C)
        /\ ((not P_B) \/ (not P_B1) \/ P_B2 \/ (not P_C))
-[wp] [Alt-Ergo] Goal typed_f_post_d2 : Valid
+[wp] [Alt-Ergo] Goal typed_f_ensures_d2 : Valid
 [wp:cnf] 
   CNF=((not P_B1) \/ (not P_B2) \/ P_C) /\ ((not P_B1) \/ P_B2 \/ (not P_C))
        /\ (P_B1 \/ (not P_B2) \/ (not P_C)) /\ (P_B1 \/ P_B2 \/ P_C)
-[wp] [Alt-Ergo] Goal typed_f_post_d3 : Valid
+[wp] [Alt-Ergo] Goal typed_f_ensures_d3 : Valid
 [wp:cnf] 
   CNF=((not P_B) \/ (not P_B1) \/ P_C) /\ ((not P_B) \/ P_B1 \/ (not P_C))
        /\ ((not P_B1) \/ (not P_B2) \/ P_C) /\ (P_B \/ (not P_B2) \/ P_C)
        /\ (P_B \/ P_B2 \/ (not P_C))
        /\ ((not P_B) \/ P_B1 \/ P_B2 \/ (not P_C))
        /\ (P_B \/ P_B1 \/ P_B2 \/ (not P_C))
-[wp] [Alt-Ergo] Goal typed_f_post_d4 : Valid
+[wp] [Alt-Ergo] Goal typed_f_ensures_d4 : Valid
 [wp:cnf] 
   CNF=((not P_B1) \/ P_B2) /\ (P_B \/ (not P_B1)) /\ (P_B \/ (not P_B2))
        /\ (P_B \/ (not P_C)) /\ (P_B1 \/ (not P_B2)) /\ (P_B1 \/ (not P_C))
        /\ (P_B2 \/ (not P_C))
-[wp] [Alt-Ergo] Goal typed_f_post_d5 : Valid
+[wp] [Alt-Ergo] Goal typed_f_ensures_d5 : Valid
 [wp:cnf] 
   CNF=((not P_B) \/ P_B1 \/ P_B2 \/ P_C) /\ (P_B \/ P_B1 \/ P_B2 \/ (not P_C))
-[wp] [Alt-Ergo] Goal typed_f_post_d6 : Valid
+[wp] [Alt-Ergo] Goal typed_f_ensures_d6 : Valid
 [wp:cnf] 
   CNF=((not P_B) \/ (not P_B1) \/ P_B2) /\ (P_B1 \/ P_B2 \/ P_C)
        /\ ((not P_B) \/ (not P_B1) \/ P_B2 \/ (not P_C))
        /\ (P_B \/ P_B1 \/ P_B2 \/ P_C)
-[wp] [Alt-Ergo] Goal typed_f_post_d7 : Valid
+[wp] [Alt-Ergo] Goal typed_f_ensures_d7 : Valid
 [wp:cnf] 
   CNF=((not P_B1) \/ P_B2) /\ (P_B1 \/ (not P_B2))
        /\ ((not P_B1) \/ P_B2 \/ (not P_C))
        /\ (P_B1 \/ (not P_B2) \/ (not P_C)) /\ (P_B1 \/ P_B2 \/ P_C)
-[wp] [Alt-Ergo] Goal typed_f_post_d8 : Valid
+[wp] [Alt-Ergo] Goal typed_f_ensures_d8 : Valid
 [wp:cnf] 
   CNF=((not P_B) \/ P_B1 \/ (not P_B2)) /\ ((not P_B) \/ P_B1 \/ (not P_C))
        /\ (P_B \/ (not P_B1) \/ P_B2) /\ (P_B \/ P_B2 \/ (not P_C))
        /\ ((not P_B) \/ P_B1 \/ P_B2 \/ (not P_C))
        /\ (P_B \/ P_B1 \/ P_B2 \/ (not P_C))
-[wp] [Alt-Ergo] Goal typed_f_post_d9 : Valid
+[wp] [Alt-Ergo] Goal typed_f_ensures_d9 : Valid
 [wp:cnf] CNF=P_A /\ ((not P_B) \/ P_C) /\ ((not P_A) \/ (not P_B) \/ P_C)
-[wp] [Alt-Ergo] Goal typed_f_post_e0 : Valid
+[wp] [Alt-Ergo] Goal typed_f_ensures_e0 : Valid
 [wp:cnf] CNF=P_B /\ ((not P_B) \/ P_C) /\ ((not P_A) \/ (not P_B) \/ P_C)
-[wp] [Alt-Ergo] Goal typed_f_post_e1 : Valid
+[wp] [Alt-Ergo] Goal typed_f_ensures_e1 : Valid
 [wp:cnf] CNF=P_C /\ ((not P_B) \/ P_C) /\ ((not P_A) \/ (not P_B) \/ P_C)
-[wp] [Alt-Ergo] Goal typed_f_post_e2 : Valid
+[wp] [Alt-Ergo] Goal typed_f_ensures_e2 : Valid
 [wp] Proved goals:   43 / 43
   Qed:            11 
   Alt-Ergo:       32
diff --git a/src/plugins/wp/tests/wp_acsl/oracle_qualif/div_mod.0.res.oracle b/src/plugins/wp/tests/wp_acsl/oracle_qualif/div_mod.0.res.oracle
index 2319800e301920f9b30018999c78d1c7d0f4554e..1e773b52273de86d9f36b4e825be5eaec60f0c93 100644
--- a/src/plugins/wp/tests/wp_acsl/oracle_qualif/div_mod.0.res.oracle
+++ b/src/plugins/wp/tests/wp_acsl/oracle_qualif/div_mod.0.res.oracle
@@ -4,33 +4,33 @@
 [wp] Loading driver 'share/wp.driver'
 [wp] Warning: Missing RTE guards
 [wp] 22 goals scheduled
-[wp] [Alt-Ergo] Goal typed_f_post_d0_div_pos_pos : Valid
-[wp] [Alt-Ergo] Goal typed_f_post_d1_div_neg_pos : Valid
-[wp] [Alt-Ergo] Goal typed_f_post_d2_div_pos_neg : Valid
-[wp] [Alt-Ergo] Goal typed_f_post_d3_div_neg_neg : Valid
-[wp] [Alt-Ergo] Goal typed_f_post_d4_div_x_1 : Valid
-[wp] [Alt-Ergo] Goal typed_f_post_d5_div_x_minus1 : Valid
-[wp] [Alt-Ergo] Goal typed_f_post_d6_div_0_x : Valid
-[wp] [Alt-Ergo] Goal typed_f_post_sd0_div_pos_pos : Valid
-[wp] [Alt-Ergo] Goal typed_f_post_sd1_div_neg_pos : Valid
-[wp] [Alt-Ergo] Goal typed_f_post_sd2_div_pos_neg : Valid
-[wp] [Alt-Ergo] Goal typed_f_post_sd3_div_neg_neg : Valid
-[wp] [Alt-Ergo] Goal typed_f_post_m0_mod_pos_pos : Valid
-[wp] [Alt-Ergo] Goal typed_f_post_m1_mod_neg_pos : Valid
-[wp] [Alt-Ergo] Goal typed_f_post_m2_mod_pos_neg : Valid
-[wp] [Alt-Ergo] Goal typed_f_post_m3_mod_neg_neg : Valid
-[wp] [Alt-Ergo] Goal typed_f_post_m4_mod_x_1 : Valid
-[wp] [Alt-Ergo] Goal typed_f_post_m5_mod_x_minus1 : Valid
-[wp] [Alt-Ergo] Goal typed_f_post_m6_mod_0_x : Valid
-[wp] [Alt-Ergo] Goal typed_f_post_sm0_mod_pos_pos : Valid
-[wp] [Alt-Ergo] Goal typed_f_post_sm1_mod_neg_pos : Valid
-[wp] [Alt-Ergo] Goal typed_f_post_sm2_mod_pos_neg : Valid
-[wp] [Alt-Ergo] Goal typed_f_post_sm3_mod_neg_neg : Valid
+[wp] [Alt-Ergo] Goal typed_f_ensures_d0_div_pos_pos : Valid
+[wp] [Alt-Ergo] Goal typed_f_ensures_d1_div_neg_pos : Valid
+[wp] [Alt-Ergo] Goal typed_f_ensures_d2_div_pos_neg : Valid
+[wp] [Alt-Ergo] Goal typed_f_ensures_d3_div_neg_neg : Valid
+[wp] [Alt-Ergo] Goal typed_f_ensures_d4_div_x_1 : Valid
+[wp] [Alt-Ergo] Goal typed_f_ensures_d5_div_x_minus1 : Valid
+[wp] [Alt-Ergo] Goal typed_f_ensures_d6_div_0_x : Valid
+[wp] [Alt-Ergo] Goal typed_f_ensures_sd0_div_pos_pos : Valid
+[wp] [Alt-Ergo] Goal typed_f_ensures_sd1_div_neg_pos : Valid
+[wp] [Alt-Ergo] Goal typed_f_ensures_sd2_div_pos_neg : Valid
+[wp] [Alt-Ergo] Goal typed_f_ensures_sd3_div_neg_neg : Valid
+[wp] [Alt-Ergo] Goal typed_f_ensures_m0_mod_pos_pos : Valid
+[wp] [Alt-Ergo] Goal typed_f_ensures_m1_mod_neg_pos : Valid
+[wp] [Alt-Ergo] Goal typed_f_ensures_m2_mod_pos_neg : Valid
+[wp] [Alt-Ergo] Goal typed_f_ensures_m3_mod_neg_neg : Valid
+[wp] [Alt-Ergo] Goal typed_f_ensures_m4_mod_x_1 : Valid
+[wp] [Alt-Ergo] Goal typed_f_ensures_m5_mod_x_minus1 : Valid
+[wp] [Alt-Ergo] Goal typed_f_ensures_m6_mod_0_x : Valid
+[wp] [Alt-Ergo] Goal typed_f_ensures_sm0_mod_pos_pos : Valid
+[wp] [Alt-Ergo] Goal typed_f_ensures_sm1_mod_neg_pos : Valid
+[wp] [Alt-Ergo] Goal typed_f_ensures_sm2_mod_pos_neg : Valid
+[wp] [Alt-Ergo] Goal typed_f_ensures_sm3_mod_neg_neg : Valid
 [wp] Proved goals:   22 / 22
   Qed:             0 
   Alt-Ergo:       22
 [wp] Report 'tests/wp_acsl/div_mod.i.0.report.json'
 -------------------------------------------------------------
 Functions           WP     Alt-Ergo        Total   Success
-f                   -      22 (4..16)       22       100%
+f                   -      22 (8..20)       22       100%
 -------------------------------------------------------------
diff --git a/src/plugins/wp/tests/wp_acsl/oracle_qualif/div_mod.1.res.oracle b/src/plugins/wp/tests/wp_acsl/oracle_qualif/div_mod.1.res.oracle
index 75e57bd9f16a32b1bb132837a6f25cb69f01a106..6e34345f147116099c1622515dd63fb4e3e7de30 100644
--- a/src/plugins/wp/tests/wp_acsl/oracle_qualif/div_mod.1.res.oracle
+++ b/src/plugins/wp/tests/wp_acsl/oracle_qualif/div_mod.1.res.oracle
@@ -4,28 +4,28 @@
 [wp] Loading driver 'share/wp.driver'
 [wp] Warning: Missing RTE guards
 [wp] 22 goals scheduled
-[wp] [alt-ergo] Goal typed_f_post_d0_div_pos_pos : Valid
-[wp] [alt-ergo] Goal typed_f_post_d1_div_neg_pos : Valid
-[wp] [alt-ergo] Goal typed_f_post_d2_div_pos_neg : Valid
-[wp] [alt-ergo] Goal typed_f_post_d3_div_neg_neg : Valid
-[wp] [alt-ergo] Goal typed_f_post_d4_div_x_1 : Valid
-[wp] [alt-ergo] Goal typed_f_post_d5_div_x_minus1 : Valid
-[wp] [alt-ergo] Goal typed_f_post_d6_div_0_x : Valid
-[wp] [alt-ergo] Goal typed_f_post_sd0_div_pos_pos : Valid
-[wp] [alt-ergo] Goal typed_f_post_sd1_div_neg_pos : Valid
-[wp] [alt-ergo] Goal typed_f_post_sd2_div_pos_neg : Valid
-[wp] [alt-ergo] Goal typed_f_post_sd3_div_neg_neg : Valid
-[wp] [alt-ergo] Goal typed_f_post_m0_mod_pos_pos : Valid
-[wp] [alt-ergo] Goal typed_f_post_m1_mod_neg_pos : Valid
-[wp] [alt-ergo] Goal typed_f_post_m2_mod_pos_neg : Valid
-[wp] [alt-ergo] Goal typed_f_post_m3_mod_neg_neg : Valid
-[wp] [alt-ergo] Goal typed_f_post_m4_mod_x_1 : Valid
-[wp] [alt-ergo] Goal typed_f_post_m5_mod_x_minus1 : Valid
-[wp] [alt-ergo] Goal typed_f_post_m6_mod_0_x : Valid
-[wp] [alt-ergo] Goal typed_f_post_sm0_mod_pos_pos : Valid
-[wp] [alt-ergo] Goal typed_f_post_sm1_mod_neg_pos : Valid
-[wp] [alt-ergo] Goal typed_f_post_sm2_mod_pos_neg : Valid
-[wp] [alt-ergo] Goal typed_f_post_sm3_mod_neg_neg : Valid
+[wp] [alt-ergo] Goal typed_f_ensures_d0_div_pos_pos : Valid
+[wp] [alt-ergo] Goal typed_f_ensures_d1_div_neg_pos : Valid
+[wp] [alt-ergo] Goal typed_f_ensures_d2_div_pos_neg : Valid
+[wp] [alt-ergo] Goal typed_f_ensures_d3_div_neg_neg : Valid
+[wp] [alt-ergo] Goal typed_f_ensures_d4_div_x_1 : Valid
+[wp] [alt-ergo] Goal typed_f_ensures_d5_div_x_minus1 : Valid
+[wp] [alt-ergo] Goal typed_f_ensures_d6_div_0_x : Valid
+[wp] [alt-ergo] Goal typed_f_ensures_sd0_div_pos_pos : Valid
+[wp] [alt-ergo] Goal typed_f_ensures_sd1_div_neg_pos : Valid
+[wp] [alt-ergo] Goal typed_f_ensures_sd2_div_pos_neg : Valid
+[wp] [alt-ergo] Goal typed_f_ensures_sd3_div_neg_neg : Valid
+[wp] [alt-ergo] Goal typed_f_ensures_m0_mod_pos_pos : Valid
+[wp] [alt-ergo] Goal typed_f_ensures_m1_mod_neg_pos : Valid
+[wp] [alt-ergo] Goal typed_f_ensures_m2_mod_pos_neg : Valid
+[wp] [alt-ergo] Goal typed_f_ensures_m3_mod_neg_neg : Valid
+[wp] [alt-ergo] Goal typed_f_ensures_m4_mod_x_1 : Valid
+[wp] [alt-ergo] Goal typed_f_ensures_m5_mod_x_minus1 : Valid
+[wp] [alt-ergo] Goal typed_f_ensures_m6_mod_0_x : Valid
+[wp] [alt-ergo] Goal typed_f_ensures_sm0_mod_pos_pos : Valid
+[wp] [alt-ergo] Goal typed_f_ensures_sm1_mod_neg_pos : Valid
+[wp] [alt-ergo] Goal typed_f_ensures_sm2_mod_pos_neg : Valid
+[wp] [alt-ergo] Goal typed_f_ensures_sm3_mod_neg_neg : Valid
 [wp] Proved goals:   22 / 22
   Qed:             0 
   alt-ergo:       22
diff --git a/src/plugins/wp/tests/wp_acsl/oracle_qualif/div_mod.2.res.oracle b/src/plugins/wp/tests/wp_acsl/oracle_qualif/div_mod.2.res.oracle
index 2136cd8449ea6524b1638468f4126ae482863824..dd6bba2a7058bbc80cd6555bf7a31ae028ce1e13 100644
--- a/src/plugins/wp/tests/wp_acsl/oracle_qualif/div_mod.2.res.oracle
+++ b/src/plugins/wp/tests/wp_acsl/oracle_qualif/div_mod.2.res.oracle
@@ -4,8 +4,8 @@
 [wp] Loading driver 'share/wp.driver'
 [wp] Warning: Missing RTE guards
 [wp] 2 goals scheduled
-[wp] [Alt-Ergo] Goal typed_f_post_d7_div_0_x_ko : Unknown
-[wp] [Alt-Ergo] Goal typed_f_post_m7_mod_0_x_ko : Unknown
+[wp] [Alt-Ergo] Goal typed_f_ensures_d7_div_0_x_ko : Unknown
+[wp] [Alt-Ergo] Goal typed_f_ensures_m7_mod_0_x_ko : Unknown
 [wp] Proved goals:    0 / 2
   Alt-Ergo:        0  (unknown: 2)
 [wp] Report 'tests/wp_acsl/div_mod.i.2.report.json'
diff --git a/src/plugins/wp/tests/wp_acsl/oracle_qualif/e_imply.res.oracle b/src/plugins/wp/tests/wp_acsl/oracle_qualif/e_imply.res.oracle
index 981bfaf3a377d967a9662d41f2348fc3e77c06f3..e7b1cca13f1c7f69fbf490a84061ed866318994f 100644
--- a/src/plugins/wp/tests/wp_acsl/oracle_qualif/e_imply.res.oracle
+++ b/src/plugins/wp/tests/wp_acsl/oracle_qualif/e_imply.res.oracle
@@ -5,48 +5,48 @@
 [wp] Warning: Missing RTE guards
 [wp] Computing [100 goals...]
 [wp] 119 goals scheduled
-[wp] [Alt-Ergo] Goal typed_f_post_p0 : Valid
-[wp] [Alt-Ergo] Goal typed_f_post_p1 : Valid
-[wp] [Alt-Ergo] Goal typed_f_post_p2 : Valid
-[wp] [Alt-Ergo] Goal typed_f_post_p3 : Valid
-[wp] [Qed] Goal typed_f_post_p4 : Valid
-[wp] [Alt-Ergo] Goal typed_f_post_p5 : Valid
-[wp] [Qed] Goal typed_f_post_p6 : Valid
-[wp] [Alt-Ergo] Goal typed_f_post_p7 : Valid
-[wp] [Alt-Ergo] Goal typed_f_post_p8 : Valid
-[wp] [Qed] Goal typed_f_post_p9 : Valid
-[wp] [Qed] Goal typed_f_post_i0 : Valid
-[wp] [Alt-Ergo] Goal typed_f_post_i1 : Valid
-[wp] [Alt-Ergo] Goal typed_f_post_i2 : Valid
-[wp] [Alt-Ergo] Goal typed_f_post_i3 : Valid
-[wp] [Qed] Goal typed_f_post_i4 : Valid
-[wp] [Qed] Goal typed_f_post_i5 : Valid
-[wp] [Alt-Ergo] Goal typed_f_post_i6 : Valid
-[wp] [Alt-Ergo] Goal typed_f_post_i7 : Valid
-[wp] [Alt-Ergo] Goal typed_f_post_i8 : Valid
-[wp] [Alt-Ergo] Goal typed_f_post_i9 : Valid
-[wp] [Alt-Ergo] Goal typed_f_post_a0 : Valid
-[wp] [Alt-Ergo] Goal typed_f_post_a1 : Valid
-[wp] [Alt-Ergo] Goal typed_f_post_a2 : Valid
-[wp] [Alt-Ergo] Goal typed_f_post_a3 : Valid
-[wp] [Alt-Ergo] Goal typed_f_post_a4 : Valid
-[wp] [Alt-Ergo] Goal typed_f_post_a5 : Valid
-[wp] [Alt-Ergo] Goal typed_f_post_a6 : Valid
-[wp] [Alt-Ergo] Goal typed_f_post_a7 : Valid
-[wp] [Alt-Ergo] Goal typed_f_post_a8 : Valid
-[wp] [Alt-Ergo] Goal typed_f_post_a9 : Valid
-[wp] [Alt-Ergo] Goal typed_f_post_o0 : Valid
-[wp] [Alt-Ergo] Goal typed_f_post_o1 : Valid
-[wp] [Alt-Ergo] Goal typed_f_post_o2 : Valid
-[wp] [Qed] Goal typed_f_post_o3 : Valid
-[wp] [Qed] Goal typed_f_post_o4 : Valid
-[wp] [Alt-Ergo] Goal typed_f_post_o5 : Valid
-[wp] [Alt-Ergo] Goal typed_f_post_o6 : Valid
-[wp] [Alt-Ergo] Goal typed_f_post_o7 : Valid
-[wp] [Alt-Ergo] Goal typed_f_post_o8 : Valid
-[wp] [Alt-Ergo] Goal typed_f_post_o9 : Valid
-[wp] [Alt-Ergo] Goal typed_f_post_f0 : Valid
-[wp] [Alt-Ergo] Goal typed_f_post_f1 : Valid
+[wp] [Alt-Ergo] Goal typed_f_ensures_p0 : Valid
+[wp] [Alt-Ergo] Goal typed_f_ensures_p1 : Valid
+[wp] [Alt-Ergo] Goal typed_f_ensures_p2 : Valid
+[wp] [Alt-Ergo] Goal typed_f_ensures_p3 : Valid
+[wp] [Qed] Goal typed_f_ensures_p4 : Valid
+[wp] [Alt-Ergo] Goal typed_f_ensures_p5 : Valid
+[wp] [Qed] Goal typed_f_ensures_p6 : Valid
+[wp] [Alt-Ergo] Goal typed_f_ensures_p7 : Valid
+[wp] [Alt-Ergo] Goal typed_f_ensures_p8 : Valid
+[wp] [Qed] Goal typed_f_ensures_p9 : Valid
+[wp] [Qed] Goal typed_f_ensures_i0 : Valid
+[wp] [Alt-Ergo] Goal typed_f_ensures_i1 : Valid
+[wp] [Alt-Ergo] Goal typed_f_ensures_i2 : Valid
+[wp] [Alt-Ergo] Goal typed_f_ensures_i3 : Valid
+[wp] [Qed] Goal typed_f_ensures_i4 : Valid
+[wp] [Qed] Goal typed_f_ensures_i5 : Valid
+[wp] [Alt-Ergo] Goal typed_f_ensures_i6 : Valid
+[wp] [Alt-Ergo] Goal typed_f_ensures_i7 : Valid
+[wp] [Alt-Ergo] Goal typed_f_ensures_i8 : Valid
+[wp] [Alt-Ergo] Goal typed_f_ensures_i9 : Valid
+[wp] [Alt-Ergo] Goal typed_f_ensures_a0 : Valid
+[wp] [Alt-Ergo] Goal typed_f_ensures_a1 : Valid
+[wp] [Alt-Ergo] Goal typed_f_ensures_a2 : Valid
+[wp] [Alt-Ergo] Goal typed_f_ensures_a3 : Valid
+[wp] [Alt-Ergo] Goal typed_f_ensures_a4 : Valid
+[wp] [Alt-Ergo] Goal typed_f_ensures_a5 : Valid
+[wp] [Alt-Ergo] Goal typed_f_ensures_a6 : Valid
+[wp] [Alt-Ergo] Goal typed_f_ensures_a7 : Valid
+[wp] [Alt-Ergo] Goal typed_f_ensures_a8 : Valid
+[wp] [Alt-Ergo] Goal typed_f_ensures_a9 : Valid
+[wp] [Alt-Ergo] Goal typed_f_ensures_o0 : Valid
+[wp] [Alt-Ergo] Goal typed_f_ensures_o1 : Valid
+[wp] [Alt-Ergo] Goal typed_f_ensures_o2 : Valid
+[wp] [Qed] Goal typed_f_ensures_o3 : Valid
+[wp] [Qed] Goal typed_f_ensures_o4 : Valid
+[wp] [Alt-Ergo] Goal typed_f_ensures_o5 : Valid
+[wp] [Alt-Ergo] Goal typed_f_ensures_o6 : Valid
+[wp] [Alt-Ergo] Goal typed_f_ensures_o7 : Valid
+[wp] [Alt-Ergo] Goal typed_f_ensures_o8 : Valid
+[wp] [Alt-Ergo] Goal typed_f_ensures_o9 : Valid
+[wp] [Alt-Ergo] Goal typed_f_ensures_f0 : Valid
+[wp] [Alt-Ergo] Goal typed_f_ensures_f1 : Valid
 [wp] Proved goals:  119 / 119
   Qed:             8 
   Alt-Ergo:      111
diff --git a/src/plugins/wp/tests/wp_acsl/oracle_qualif/equal.res.oracle b/src/plugins/wp/tests/wp_acsl/oracle_qualif/equal.res.oracle
index 023b79add824fb2e8a201c35c0ce6dbd6535c0cd..445532eb63d57b2cfa5489a3454ad2859ac54eed 100644
--- a/src/plugins/wp/tests/wp_acsl/oracle_qualif/equal.res.oracle
+++ b/src/plugins/wp/tests/wp_acsl/oracle_qualif/equal.res.oracle
@@ -4,12 +4,12 @@
 [wp] Loading driver 'share/wp.driver'
 [wp] Warning: Missing RTE guards
 [wp] 6 goals scheduled
-[wp] [Alt-Ergo] Goal typed_simple_array_post : Valid
-[wp] [Qed] Goal typed_simple_struct_post : Valid
-[wp] [Alt-Ergo] Goal typed_with_array_struct_post : Valid
-[wp] [Alt-Ergo] Goal typed_with_ptr_and_array_struct_post : Valid
-[wp] [Alt-Ergo] Goal typed_with_ptr_array_post : Valid
-[wp] [Alt-Ergo] Goal typed_with_ptr_struct_post : Valid
+[wp] [Alt-Ergo] Goal typed_simple_array_ensures : Valid
+[wp] [Qed] Goal typed_simple_struct_ensures : Valid
+[wp] [Alt-Ergo] Goal typed_with_array_struct_ensures : Valid
+[wp] [Alt-Ergo] Goal typed_with_ptr_and_array_struct_ensures : Valid
+[wp] [Alt-Ergo] Goal typed_with_ptr_array_ensures : Valid
+[wp] [Alt-Ergo] Goal typed_with_ptr_struct_ensures : Valid
 [wp] Proved goals:    6 / 6
   Qed:             1 
   Alt-Ergo:        5
@@ -18,8 +18,8 @@
 Functions           WP     Alt-Ergo        Total   Success
 simple_struct        1     -                 1       100%
 simple_array        -       1 (12..24)       1       100%
-with_array_struct   -       1 (8..20)        1       100%
-with_ptr_struct     -       1 (1..12)        1       100%
-with_ptr_array      -       1 (8..20)        1       100%
+with_array_struct   -       1 (12..24)       1       100%
+with_ptr_struct     -       1 (8..20)        1       100%
+with_ptr_array      -       1 (12..24)       1       100%
 with_ptr_and_array_struct  -     1 (24..36)   1      100%
 -------------------------------------------------------------
diff --git a/src/plugins/wp/tests/wp_acsl/oracle_qualif/funvar_inv.res.oracle b/src/plugins/wp/tests/wp_acsl/oracle_qualif/funvar_inv.res.oracle
index 01ff9f7bec5f551c82f6476a701ef8ac26af11f2..4710a979b9fec752a3813171ab64bef7cab9603a 100644
--- a/src/plugins/wp/tests/wp_acsl/oracle_qualif/funvar_inv.res.oracle
+++ b/src/plugins/wp/tests/wp_acsl/oracle_qualif/funvar_inv.res.oracle
@@ -4,9 +4,9 @@
 [wp] Loading driver 'share/wp.driver'
 [wp] Warning: Missing RTE guards
 [wp] 3 goals scheduled
-[wp] [Qed] Goal typed_ref_f_loop_assign : Valid
-[wp] [Qed] Goal typed_ref_f2_loop_assign : Valid
-[wp] [Qed] Goal typed_ref_g_loop_assign : Valid
+[wp] [Qed] Goal typed_ref_f_loop_assigns : Valid
+[wp] [Qed] Goal typed_ref_f2_loop_assigns : Valid
+[wp] [Qed] Goal typed_ref_g_loop_assigns : Valid
 [wp] Proved goals:    3 / 3
   Qed:             3
 [wp] Report 'tests/wp_acsl/funvar_inv.i.0.report.json'
diff --git a/src/plugins/wp/tests/wp_acsl/oracle_qualif/implicit_enum_cast.res.oracle b/src/plugins/wp/tests/wp_acsl/oracle_qualif/implicit_enum_cast.res.oracle
index 9ed0b0beac94694fe09623eef691536cc711ddc0..33a7efd8bc0ee2889c1b612813747638acc9c1ea 100644
--- a/src/plugins/wp/tests/wp_acsl/oracle_qualif/implicit_enum_cast.res.oracle
+++ b/src/plugins/wp/tests/wp_acsl/oracle_qualif/implicit_enum_cast.res.oracle
@@ -4,15 +4,15 @@
 [wp] Loading driver 'share/wp.driver'
 [wp] Warning: Missing RTE guards
 [wp] 9 goals scheduled
-[wp] [Qed] Goal typed_bar_post : Valid
-[wp] [Qed] Goal typed_bar_assign_exit_part1 : Valid
-[wp] [Qed] Goal typed_bar_assign_exit_part2 : Valid
-[wp] [Qed] Goal typed_bar_assign_exit_part3 : Valid
-[wp] [Qed] Goal typed_bar_assign_normal_part1 : Valid
-[wp] [Qed] Goal typed_bar_assign_normal_part2 : Valid
-[wp] [Qed] Goal typed_bar_assign_normal_part3 : Valid
-[wp] [Qed] Goal typed_bar_assign_normal_part4 : Valid
-[wp] [Qed] Goal typed_bar_assign_normal_part5 : Valid
+[wp] [Qed] Goal typed_bar_ensures : Valid
+[wp] [Qed] Goal typed_bar_assigns_exit_part1 : Valid
+[wp] [Qed] Goal typed_bar_assigns_exit_part2 : Valid
+[wp] [Qed] Goal typed_bar_assigns_exit_part3 : Valid
+[wp] [Qed] Goal typed_bar_assigns_normal_part1 : Valid
+[wp] [Qed] Goal typed_bar_assigns_normal_part2 : Valid
+[wp] [Qed] Goal typed_bar_assigns_normal_part3 : Valid
+[wp] [Qed] Goal typed_bar_assigns_normal_part4 : Valid
+[wp] [Qed] Goal typed_bar_assigns_normal_part5 : Valid
 [wp] Proved goals:    9 / 9
   Qed:             9
 [wp] Report 'tests/wp_acsl/implicit_enum_cast.i.0.report.json'
diff --git a/src/plugins/wp/tests/wp_acsl/oracle_qualif/init_label.res.oracle b/src/plugins/wp/tests/wp_acsl/oracle_qualif/init_label.res.oracle
index fe45ccb3d654892e61686211c0102f8c154f8e6a..c3f090839d60777287c9ef82e5ad5055ba596528 100644
--- a/src/plugins/wp/tests/wp_acsl/oracle_qualif/init_label.res.oracle
+++ b/src/plugins/wp/tests/wp_acsl/oracle_qualif/init_label.res.oracle
@@ -6,10 +6,10 @@
   No code nor implicit assigns clause for function main, generating default assigns from the prototype
 [wp] Warning: Missing RTE guards
 [wp] 4 goals scheduled
-[wp] [Alt-Ergo] Goal typed_extra_post_KO : Unknown
-[wp] [Qed] Goal typed_foreign_post_OK : Valid
-[wp] [Alt-Ergo] Goal typed_job_post_OK : Valid
-[wp] [Qed] Goal typed_main_pre_OK : Valid
+[wp] [Alt-Ergo] Goal typed_extra_ensures_KO : Unknown
+[wp] [Qed] Goal typed_foreign_ensures_OK : Valid
+[wp] [Alt-Ergo] Goal typed_job_ensures_OK : Valid
+[wp] [Qed] Goal typed_main_requires_OK : Valid
 [wp] Proved goals:    3 / 4
   Qed:             2 
   Alt-Ergo:        1  (unknown: 1)
diff --git a/src/plugins/wp/tests/wp_acsl/oracle_qualif/init_value.0.res.oracle b/src/plugins/wp/tests/wp_acsl/oracle_qualif/init_value.0.res.oracle
index 87c51d12edc17d9360bd1aef0ebd6ccc5fa192cd..0619f73d418710651fd29071598ac152e5d46f4e 100644
--- a/src/plugins/wp/tests/wp_acsl/oracle_qualif/init_value.0.res.oracle
+++ b/src/plugins/wp/tests/wp_acsl/oracle_qualif/init_value.0.res.oracle
@@ -3,25 +3,40 @@
 [wp] Running WP plugin...
 [wp] Loading driver 'share/wp.driver'
 [wp] Warning: Missing RTE guards
-[wp] 13 goals scheduled
-[wp] [Qed] Goal typed_main_pre_qed_ok_Struct_Simple_a : Valid
-[wp] [Qed] Goal typed_main_pre_qed_ok_Struct_Simple_b : Valid
-[wp] [Qed] Goal typed_main_pre_qed_ok_Simple_Array_0 : Valid
-[wp] [Alt-Ergo] Goal typed_main_pre_qed_ok_Simple_Array_1 : Valid
-[wp] [Qed] Goal typed_main_pre_qed_ok_With_Array_Struct_5 : Valid
-[wp] [Qed] Goal typed_main_pre_qed_ok_With_Array_Struct_3 : Valid
-[wp] [Alt-Ergo] Goal typed_main_pre_qed_ok_Sc_eq : Valid
-[wp] [Qed] Goal typed_main_pre_qed_ok_Sc_t : Valid
-[wp] [Qed] Goal typed_main_pre_qed_ok_Sc_t_2 : Valid
-[wp] [Qed] Goal typed_main_pre_qed_ok_Sc_c_2 : Valid
-[wp] [Qed] Goal typed_main_pre_qed_ok_Sc_c_3 : Valid
-[wp] [Qed] Goal typed_main_pre_qed_ok_Tab_no_init : Valid
-[wp] [Alt-Ergo] Goal typed_main_pre_qed_ok_Tab_todo : Valid
-[wp] Proved goals:   13 / 13
-  Qed:            10 
-  Alt-Ergo:        3
+[wp] 24 goals scheduled
+[wp] [Qed] Goal typed_fa1_ensures_qed_ok : Valid
+[wp] [Qed] Goal typed_fa2_ensures_qed_ok : Valid
+[wp] [Qed] Goal typed_fa3_ensures_qed_ok : Valid
+[wp] [Alt-Ergo] Goal typed_fs1_ensures_qed_ok : Valid
+[wp] [Qed] Goal typed_main_requires_qed_ok_Struct_Simple_a : Valid
+[wp] [Qed] Goal typed_main_requires_qed_ok_Struct_Simple_b : Valid
+[wp] [Qed] Goal typed_main_requires_qed_ok_Simple_Array_0 : Valid
+[wp] [Alt-Ergo] Goal typed_main_requires_qed_ok_Simple_Array_1 : Valid
+[wp] [Qed] Goal typed_main_requires_qed_ok_With_Array_Struct_5 : Valid
+[wp] [Qed] Goal typed_main_requires_qed_ok_With_Array_Struct_3 : Valid
+[wp] [Alt-Ergo] Goal typed_main_requires_qed_ok_Sc_eq : Valid
+[wp] [Qed] Goal typed_main_requires_qed_ok_Sc_t : Valid
+[wp] [Qed] Goal typed_main_requires_qed_ok_Sc_t_2 : Valid
+[wp] [Qed] Goal typed_main_requires_qed_ok_Sc_c_2 : Valid
+[wp] [Qed] Goal typed_main_requires_qed_ok_Sc_c_3 : Valid
+[wp] [Qed] Goal typed_main_requires_qed_ok_Tab_no_init : Valid
+[wp] [Alt-Ergo] Goal typed_main_requires_qed_ok_Tab_todo : Valid
+[wp] [Qed] Goal typed_main_requires_qed_ok : Valid
+[wp] [Qed] Goal typed_main_requires_qed_ok_2 : Valid
+[wp] [Alt-Ergo] Goal typed_main_requires_qed_ok_3 : Valid
+[wp] [Qed] Goal typed_main_requires_qed_ok_todo : Valid
+[wp] [Alt-Ergo] Goal typed_main_requires_qed_ok_4 : Valid
+[wp] [Alt-Ergo] Goal typed_main_requires_qed_ok_5 : Valid
+[wp] [Qed] Goal typed_main_requires_qed_ok_direct_init_union : Valid
+[wp] Proved goals:   24 / 24
+  Qed:            17 
+  Alt-Ergo:        7
 [wp] Report 'tests/wp_acsl/init_value.i.0.report.json'
 -------------------------------------------------------------
 Functions           WP     Alt-Ergo        Total   Success
-main                10      3 (28..40)      13       100%
+main                14      6 (28..40)      20       100%
+fa1                  1     -                 1       100%
+fa2                  1     -                 1       100%
+fa3                  1     -                 1       100%
+fs1                 -       1 (160..184)     1       100%
 -------------------------------------------------------------
diff --git a/src/plugins/wp/tests/wp_acsl/oracle_qualif/init_value.1.res.oracle b/src/plugins/wp/tests/wp_acsl/oracle_qualif/init_value.1.res.oracle
index 9ca602f4ad9efda7c9c0c3e9cfc48d54109d812f..6fd6542afa8361c5a6836072b77949b948416ead 100644
--- a/src/plugins/wp/tests/wp_acsl/oracle_qualif/init_value.1.res.oracle
+++ b/src/plugins/wp/tests/wp_acsl/oracle_qualif/init_value.1.res.oracle
@@ -3,17 +3,33 @@
 [wp] Running WP plugin...
 [wp] Loading driver 'share/wp.driver'
 [wp] Warning: Missing RTE guards
-[wp] 6 goals scheduled
-[wp] [Alt-Ergo] Goal typed_main_ko_pre_qed_ko_Sc_eq_ko : Unknown
-[wp] [Alt-Ergo] Goal typed_main_ko_pre_qed_ko_Sc_t : Unknown
-[wp] [Alt-Ergo] Goal typed_main_ko_pre_qed_ko_Sc_c_2 : Unknown
-[wp] [Alt-Ergo] Goal typed_main_ko_pre_qed_ko_Tab_no_init : Unknown
-[wp] [Alt-Ergo] Goal typed_main_ko_pre_qed_ko_With_Array_Struct_3 : Unknown
-[wp] [Alt-Ergo] Goal typed_main_ko_pre_qed_ko_Simple_Array_1 : Unknown
-[wp] Proved goals:    0 / 6
-  Alt-Ergo:        0  (unknown: 6)
+[wp] 18 goals scheduled
+[wp] [Alt-Ergo] Goal typed_fa1_ensures_qed_ko : Unknown
+[wp] [Alt-Ergo] Goal typed_fa1_ensures_qed_ko_2 : Unknown
+[wp] [Alt-Ergo] Goal typed_fa2_ensures_qed_ko : Unknown
+[wp] [Alt-Ergo] Goal typed_fa2_ensures_qed_ko_2 : Unknown
+[wp] [Alt-Ergo] Goal typed_fa3_ensures_qed_ko : Unknown
+[wp] [Alt-Ergo] Goal typed_fa3_ensures_qed_ko_2 : Unknown
+[wp] [Alt-Ergo] Goal typed_fa3_ensures_qed_ko_3 : Unknown
+[wp] [Alt-Ergo] Goal typed_fs1_ensures_qed_ko : Unknown
+[wp] [Alt-Ergo] Goal typed_fs1_ensures_qed_ko_2 : Unknown
+[wp] [Alt-Ergo] Goal typed_main_ko_requires_qed_ko_Sc_eq_ko : Unknown
+[wp] [Alt-Ergo] Goal typed_main_ko_requires_qed_ko_Sc_t : Unknown
+[wp] [Alt-Ergo] Goal typed_main_ko_requires_qed_ko_Sc_c_2 : Unknown
+[wp] [Alt-Ergo] Goal typed_main_ko_requires_qed_ko_Tab_no_init : Unknown
+[wp] [Alt-Ergo] Goal typed_main_ko_requires_qed_ko_With_Array_Struct_3 : Unknown
+[wp] [Alt-Ergo] Goal typed_main_ko_requires_qed_ko_Simple_Array_1 : Unknown
+[wp] [Alt-Ergo] Goal typed_main_ko_requires_qed_ko_T1_6 : Unknown
+[wp] [Alt-Ergo] Goal typed_main_ko_requires_qed_ko_indirect_init_union_b : Unknown
+[wp] [Alt-Ergo] Goal typed_main_ko_requires_qed_ko_indirect_init_union_t : Unknown
+[wp] Proved goals:    0 / 18
+  Alt-Ergo:        0  (unknown: 18)
 [wp] Report 'tests/wp_acsl/init_value.i.1.report.json'
 -------------------------------------------------------------
 Functions           WP     Alt-Ergo        Total   Success
-main_ko             -      -                 6       0.0%
+main_ko             -      -                 9       0.0%
+fa1                 -      -                 2       0.0%
+fa2                 -      -                 2       0.0%
+fa3                 -      -                 3       0.0%
+fs1                 -      -                 2       0.0%
 -------------------------------------------------------------
diff --git a/src/plugins/wp/tests/wp_acsl/oracle_qualif/init_value_mem.res.oracle b/src/plugins/wp/tests/wp_acsl/oracle_qualif/init_value_mem.res.oracle
index 06e2445b2a07f8686ecd2cb49302d6a94991f8db..aeadf11adb3ff7326101e7ced83584da67ca0ab7 100644
--- a/src/plugins/wp/tests/wp_acsl/oracle_qualif/init_value_mem.res.oracle
+++ b/src/plugins/wp/tests/wp_acsl/oracle_qualif/init_value_mem.res.oracle
@@ -4,13 +4,13 @@
 [wp] Loading driver 'share/wp.driver'
 [wp] Warning: Missing RTE guards
 [wp] 2 goals scheduled
-[wp] [Alt-Ergo] Goal typed_main_post_P : Valid
-[wp] [Alt-Ergo] Goal typed_main_post_Q : Valid
+[wp] [Alt-Ergo] Goal typed_main_ensures_P : Valid
+[wp] [Alt-Ergo] Goal typed_main_ensures_Q : Valid
 [wp] Proved goals:    2 / 2
   Qed:             0 
   Alt-Ergo:        2
 [wp] Report 'tests/wp_acsl/init_value_mem.i.0.report.json'
 -------------------------------------------------------------
 Functions           WP     Alt-Ergo        Total   Success
-main                -       2 (32..44)       2       100%
+main                -       2 (36..48)       2       100%
 -------------------------------------------------------------
diff --git a/src/plugins/wp/tests/wp_acsl/oracle_qualif/intbool.res.oracle b/src/plugins/wp/tests/wp_acsl/oracle_qualif/intbool.res.oracle
index 1863f3ab49f2bd301a30a76a427a88d3abceac74..aa952f482657fa24e4a8d422a41045c85f63defa 100644
--- a/src/plugins/wp/tests/wp_acsl/oracle_qualif/intbool.res.oracle
+++ b/src/plugins/wp/tests/wp_acsl/oracle_qualif/intbool.res.oracle
@@ -4,7 +4,7 @@
 [wp] Loading driver 'share/wp.driver'
 [wp] Warning: Missing RTE guards
 [wp] 1 goal scheduled
-[wp] [Qed] Goal typed_bug_post : Valid
+[wp] [Qed] Goal typed_bug_ensures : Valid
 [wp] Proved goals:    1 / 1
   Qed:             1
 [wp] Report 'tests/wp_acsl/intbool.i.0.report.json'
diff --git a/src/plugins/wp/tests/wp_acsl/oracle_qualif/logic.res.oracle b/src/plugins/wp/tests/wp_acsl/oracle_qualif/logic.res.oracle
index 9aa246a2736630707b73b86901adcaca0d4596bf..d22e02bbbd1cbe7cd09d5e8f0b635136c58655b7 100644
--- a/src/plugins/wp/tests/wp_acsl/oracle_qualif/logic.res.oracle
+++ b/src/plugins/wp/tests/wp_acsl/oracle_qualif/logic.res.oracle
@@ -41,27 +41,27 @@
 [wp] tests/wp_acsl/logic.i:62: Warning: 
   Logic cast to struct (Tint2) from (int [6]) not implemented yet
 [wp] 21 goals scheduled
-[wp] [Alt-Ergo] Goal typed_h_post : Unknown (Stronger)
-[wp] [Qed] Goal typed_h_assign_exit : Valid
-[wp] [Qed] Goal typed_h_assign_normal : Valid
-[wp] [Qed] Goal typed_main_pre_qed_ok : Valid
-[wp] [Alt-Ergo] Goal typed_main_pre_qed_ok_2 : Valid
-[wp] [Alt-Ergo] Goal typed_main_pre_qed_ok_3 : Valid
-[wp] [Alt-Ergo] Goal typed_main_pre_qed_ok_4 : Unknown (Stronger)
-[wp] [Alt-Ergo] Goal typed_main_pre_qed_ok_5 : Unknown (Stronger)
-[wp] [Alt-Ergo] Goal typed_main_pre_qed_ok_6 : Unknown (Stronger)
-[wp] [Alt-Ergo] Goal typed_main_pre_qed_ok_7 : Unknown (Stronger)
-[wp] [Alt-Ergo] Goal typed_main_pre_qed_ok_8 : Unknown (Stronger)
-[wp] [Alt-Ergo] Goal typed_main_pre_qed_ok_9 : Unknown (Stronger)
-[wp] [Alt-Ergo] Goal typed_main_pre_qed_ok_10 : Unknown (Stronger)
-[wp] [Alt-Ergo] Goal typed_main_pre_qed_ok_11 : Unknown (Stronger)
-[wp] [Alt-Ergo] Goal typed_main_pre_qed_ok_12 : Unknown (Stronger)
-[wp] [Alt-Ergo] Goal typed_main_pre_qed_ok_13 : Unknown (Stronger)
-[wp] [Alt-Ergo] Goal typed_main_pre_qed_ok_14 : Unknown (Stronger)
-[wp] [Alt-Ergo] Goal typed_main_pre_qed_ok_15 : Unknown (Stronger)
-[wp] [Alt-Ergo] Goal typed_main_pre_qed_ok_16 : Unknown (Stronger)
-[wp] [Alt-Ergo] Goal typed_main_pre_qed_ok_17 : Unknown (Stronger)
-[wp] [Alt-Ergo] Goal typed_main_pre_qed_ok_18 : Unknown (Stronger)
+[wp] [Alt-Ergo] Goal typed_h_ensures : Unknown (Stronger)
+[wp] [Qed] Goal typed_h_assigns_exit : Valid
+[wp] [Qed] Goal typed_h_assigns_normal : Valid
+[wp] [Qed] Goal typed_main_requires_qed_ok : Valid
+[wp] [Alt-Ergo] Goal typed_main_requires_qed_ok_2 : Valid
+[wp] [Alt-Ergo] Goal typed_main_requires_qed_ok_3 : Valid
+[wp] [Alt-Ergo] Goal typed_main_requires_qed_ok_4 : Unknown (Stronger)
+[wp] [Alt-Ergo] Goal typed_main_requires_qed_ok_5 : Unknown (Stronger)
+[wp] [Alt-Ergo] Goal typed_main_requires_qed_ok_6 : Unknown (Stronger)
+[wp] [Alt-Ergo] Goal typed_main_requires_qed_ok_7 : Unknown (Stronger)
+[wp] [Alt-Ergo] Goal typed_main_requires_qed_ok_8 : Unknown (Stronger)
+[wp] [Alt-Ergo] Goal typed_main_requires_qed_ok_9 : Unknown (Stronger)
+[wp] [Alt-Ergo] Goal typed_main_requires_qed_ok_10 : Unknown (Stronger)
+[wp] [Alt-Ergo] Goal typed_main_requires_qed_ok_11 : Unknown (Stronger)
+[wp] [Alt-Ergo] Goal typed_main_requires_qed_ok_12 : Unknown (Stronger)
+[wp] [Alt-Ergo] Goal typed_main_requires_qed_ok_13 : Unknown (Stronger)
+[wp] [Alt-Ergo] Goal typed_main_requires_qed_ok_14 : Unknown (Stronger)
+[wp] [Alt-Ergo] Goal typed_main_requires_qed_ok_15 : Unknown (Stronger)
+[wp] [Alt-Ergo] Goal typed_main_requires_qed_ok_16 : Unknown (Stronger)
+[wp] [Alt-Ergo] Goal typed_main_requires_qed_ok_17 : Unknown (Stronger)
+[wp] [Alt-Ergo] Goal typed_main_requires_qed_ok_18 : Unknown (Stronger)
 [wp] Proved goals:    5 / 21
   Qed:             3 
   Alt-Ergo:        2  (unknown: 16)
@@ -69,5 +69,5 @@
 -------------------------------------------------------------
 Functions           WP     Alt-Ergo        Total   Success
 h                    2     -                 3      66.7%
-main                 1      2 (56..68)      18      16.7%
+main                 1      2 (56..80)      18      16.7%
 -------------------------------------------------------------
diff --git a/src/plugins/wp/tests/wp_acsl/oracle_qualif/looplabels.res.oracle b/src/plugins/wp/tests/wp_acsl/oracle_qualif/looplabels.res.oracle
index 77cdf82dbbd7f0285c166b0471c02e50b21fc5fb..26c8030d9dac191617788700e6e1cdd7118eb509 100644
--- a/src/plugins/wp/tests/wp_acsl/oracle_qualif/looplabels.res.oracle
+++ b/src/plugins/wp/tests/wp_acsl/oracle_qualif/looplabels.res.oracle
@@ -4,14 +4,14 @@
 [wp] Loading driver 'share/wp.driver'
 [wp] Warning: Missing RTE guards
 [wp] 8 goals scheduled
-[wp] [Alt-Ergo] Goal typed_copy_post : Valid
-[wp] [Alt-Ergo] Goal typed_copy_loop_inv_preserved : Valid
-[wp] [Qed] Goal typed_copy_loop_inv_established : Valid
-[wp] [Alt-Ergo] Goal typed_copy_loop_inv_2_preserved : Valid
-[wp] [Alt-Ergo] Goal typed_copy_loop_inv_2_established : Valid
-[wp] [Qed] Goal typed_copy_loop_assign_part1 : Valid
-[wp] [Alt-Ergo] Goal typed_copy_loop_assign_part2 : Valid
-[wp] [Qed] Goal typed_copy_assign : Valid
+[wp] [Alt-Ergo] Goal typed_copy_ensures : Valid
+[wp] [Alt-Ergo] Goal typed_copy_loop_invariant_preserved : Valid
+[wp] [Qed] Goal typed_copy_loop_invariant_established : Valid
+[wp] [Alt-Ergo] Goal typed_copy_loop_invariant_2_preserved : Valid
+[wp] [Alt-Ergo] Goal typed_copy_loop_invariant_2_established : Valid
+[wp] [Qed] Goal typed_copy_loop_assigns_part1 : Valid
+[wp] [Alt-Ergo] Goal typed_copy_loop_assigns_part2 : Valid
+[wp] [Qed] Goal typed_copy_assigns : Valid
 [wp] Proved goals:    8 / 8
   Qed:             3 
   Alt-Ergo:        5
diff --git a/src/plugins/wp/tests/wp_acsl/oracle_qualif/null.res.oracle b/src/plugins/wp/tests/wp_acsl/oracle_qualif/null.res.oracle
index dacdfd4c992379bde9e6c0efe492641d11254806..1d6e4b7c5b2eb68d7ca0b4629b29969acf284380 100644
--- a/src/plugins/wp/tests/wp_acsl/oracle_qualif/null.res.oracle
+++ b/src/plugins/wp/tests/wp_acsl/oracle_qualif/null.res.oracle
@@ -6,7 +6,7 @@
 [wp] 3 goals scheduled
 [wp] [Alt-Ergo] Goal typed_lemma_valid_non_null : Valid
 [wp] [Alt-Ergo] Goal typed_lemma_valid_read_non_null : Valid
-[wp] [Qed] Goal typed_null_is_zero_post : Valid
+[wp] [Qed] Goal typed_null_is_zero_ensures : Valid
 [wp] Proved goals:    3 / 3
   Qed:             1 
   Alt-Ergo:        2
diff --git a/src/plugins/wp/tests/wp_acsl/oracle_qualif/pointer.0.res.oracle b/src/plugins/wp/tests/wp_acsl/oracle_qualif/pointer.0.res.oracle
index a567ce67a3445906ea27d5af544c925b5efe6cf2..7c36192fd7af34f0c6f8d194d94f4307d5195843 100644
--- a/src/plugins/wp/tests/wp_acsl/oracle_qualif/pointer.0.res.oracle
+++ b/src/plugins/wp/tests/wp_acsl/oracle_qualif/pointer.0.res.oracle
@@ -6,15 +6,15 @@
 [wp] tests/wp_acsl/pointer.i:50: Warning: Uncomparable locations p_0 and mem:t
 [wp] tests/wp_acsl/pointer.i:49: Warning: Uncomparable locations p_0 and mem:t
 [wp] 9 goals scheduled
-[wp] [Alt-Ergo] Goal typed_ref_absurd_post_qed_ko_Base_oracle_ko : Unknown
-[wp] [Alt-Ergo] Goal typed_ref_absurd_post_qed_ko_Comp_oracle_ko : Unknown
-[wp] [Qed] Goal typed_ref_array_post_Lt : Valid
-[wp] [Qed] Goal typed_ref_array_post_Le : Valid
-[wp] [Qed] Goal typed_ref_array_post_Eq : Valid
-[wp] [Alt-Ergo] Goal typed_ref_mixed_array_pointer_post_qed_ko_Le_oracle_ko : Unknown (Stronger)
-[wp] [Alt-Ergo] Goal typed_ref_mixed_array_pointer_post_qed_ko_Lt_oracle_ko : Unknown (Stronger)
-[wp] [Alt-Ergo] Goal typed_ref_pointer_post_qed_ko_Le_oracle_ko : Unknown
-[wp] [Alt-Ergo] Goal typed_ref_pointer_post_qed_ko_Eq_oracle_ko : Unknown
+[wp] [Alt-Ergo] Goal typed_ref_absurd_ensures_qed_ko_Base_oracle_ko : Unknown
+[wp] [Alt-Ergo] Goal typed_ref_absurd_ensures_qed_ko_Comp_oracle_ko : Unknown
+[wp] [Qed] Goal typed_ref_array_ensures_Lt : Valid
+[wp] [Qed] Goal typed_ref_array_ensures_Le : Valid
+[wp] [Qed] Goal typed_ref_array_ensures_Eq : Valid
+[wp] [Alt-Ergo] Goal typed_ref_mixed_array_pointer_ensures_qed_ko_Le_oracle_ko : Unknown (Stronger)
+[wp] [Alt-Ergo] Goal typed_ref_mixed_array_pointer_ensures_qed_ko_Lt_oracle_ko : Unknown (Stronger)
+[wp] [Alt-Ergo] Goal typed_ref_pointer_ensures_qed_ko_Le_oracle_ko : Unknown
+[wp] [Alt-Ergo] Goal typed_ref_pointer_ensures_qed_ko_Eq_oracle_ko : Unknown
 [wp] Proved goals:    3 / 9
   Qed:             3 
   Alt-Ergo:        0  (unknown: 6)
diff --git a/src/plugins/wp/tests/wp_acsl/oracle_qualif/pointer.1.res.oracle b/src/plugins/wp/tests/wp_acsl/oracle_qualif/pointer.1.res.oracle
index b17fbb3bd877ca7296c953e5d4a3c00e03d95781..ae8ae26c94ab00e62049da1bfbe6c2ba3b3b546b 100644
--- a/src/plugins/wp/tests/wp_acsl/oracle_qualif/pointer.1.res.oracle
+++ b/src/plugins/wp/tests/wp_acsl/oracle_qualif/pointer.1.res.oracle
@@ -6,15 +6,15 @@
 [wp] tests/wp_acsl/pointer.i:50: Warning: Uncomparable locations p_0 and mem:t
 [wp] tests/wp_acsl/pointer.i:49: Warning: Uncomparable locations p_0 and mem:t
 [wp] 9 goals scheduled
-[wp] [Alt-Ergo] Goal typed_absurd_post_qed_ko_Base_oracle_ko : Unknown
-[wp] [Alt-Ergo] Goal typed_absurd_post_qed_ko_Comp_oracle_ko : Unknown
-[wp] [Qed] Goal typed_array_post_Lt : Valid
-[wp] [Qed] Goal typed_array_post_Le : Valid
-[wp] [Qed] Goal typed_array_post_Eq : Valid
-[wp] [Alt-Ergo] Goal typed_mixed_array_pointer_post_qed_ko_Le_oracle_ko : Unknown (Stronger)
-[wp] [Alt-Ergo] Goal typed_mixed_array_pointer_post_qed_ko_Lt_oracle_ko : Unknown (Stronger)
-[wp] [Alt-Ergo] Goal typed_pointer_post_qed_ko_Le_oracle_ko : Unknown
-[wp] [Alt-Ergo] Goal typed_pointer_post_qed_ko_Eq_oracle_ko : Unknown
+[wp] [Alt-Ergo] Goal typed_absurd_ensures_qed_ko_Base_oracle_ko : Unknown
+[wp] [Alt-Ergo] Goal typed_absurd_ensures_qed_ko_Comp_oracle_ko : Unknown
+[wp] [Qed] Goal typed_array_ensures_Lt : Valid
+[wp] [Qed] Goal typed_array_ensures_Le : Valid
+[wp] [Qed] Goal typed_array_ensures_Eq : Valid
+[wp] [Alt-Ergo] Goal typed_mixed_array_pointer_ensures_qed_ko_Le_oracle_ko : Unknown (Stronger)
+[wp] [Alt-Ergo] Goal typed_mixed_array_pointer_ensures_qed_ko_Lt_oracle_ko : Unknown (Stronger)
+[wp] [Alt-Ergo] Goal typed_pointer_ensures_qed_ko_Le_oracle_ko : Unknown
+[wp] [Alt-Ergo] Goal typed_pointer_ensures_qed_ko_Eq_oracle_ko : Unknown
 [wp] Proved goals:    3 / 9
   Qed:             3 
   Alt-Ergo:        0  (unknown: 6)
diff --git a/src/plugins/wp/tests/wp_acsl/oracle_qualif/precedence.0.res.oracle b/src/plugins/wp/tests/wp_acsl/oracle_qualif/precedence.0.res.oracle
index cd608ff8c72d15f5af4d9b76bc195802dd5f93ae..6326d96688ad9b8c8e24017e0a793f78510c8d54 100644
--- a/src/plugins/wp/tests/wp_acsl/oracle_qualif/precedence.0.res.oracle
+++ b/src/plugins/wp/tests/wp_acsl/oracle_qualif/precedence.0.res.oracle
@@ -40,58 +40,58 @@
 [wp] Loading driver 'share/wp.driver'
 [wp] Warning: Missing RTE guards
 [wp] 52 goals scheduled
-[wp] [Qed] Goal typed_bitwise_post_r_precedence_and_xor : Valid
-[wp] [Qed] Goal typed_bitwise_post_l_precedence_and_xor : Valid
-[wp] [Qed] Goal typed_bitwise_post_r_precedence_xor_or : Valid
-[wp] [Qed] Goal typed_bitwise_post_l_precedence_xor_or : Valid
-[wp] [Qed] Goal typed_bitwise_post_r_precedence_or_implies : Valid
-[wp] [Qed] Goal typed_bitwise_post_l_precedence_or_implies : Valid
-[wp] [Qed] Goal typed_bitwise_post_ok_r_precedence_implies_or : Valid
-[wp] [Qed] Goal typed_bitwise_post_ok_since : Valid
-[wp] [Qed] Goal typed_bitwise_post_r_assoc_implies : Valid
-[wp] [Qed] Goal typed_bitwise_post_r_precedence_implies_equiv : Valid
-[wp] [Qed] Goal typed_bitwise_post_l_precedence_implies_equiv : Valid
-[wp] [Qed] Goal typed_comparison_post_chainable_lt_lt : Valid
-[wp] [Qed] Goal typed_comparison_post_chainable_le_le : Valid
-[wp] [Qed] Goal typed_comparison_post_chainable_gt_gt : Valid
-[wp] [Qed] Goal typed_comparison_post_chainable_ge_ge : Valid
-[wp] [Qed] Goal typed_comparison_post_chainable_eq_eq : Valid
-[wp] [Qed] Goal typed_comparison_post_r_precedence_eq_and : Valid
-[wp] [Qed] Goal typed_comparison_post_l_precedence_eq_and : Valid
-[wp] [Qed] Goal typed_comparison_post_r_precedence_neq_and : Valid
-[wp] [Qed] Goal typed_comparison_post_l_precedence_neq_and : Valid
-[wp] [Qed] Goal typed_predicate_post_r_precedence_and_xor : Valid
-[wp] [Qed] Goal typed_predicate_post_l_precedence_and_xor : Valid
-[wp] [Qed] Goal typed_predicate_post_r_precedence_xor_or : Valid
-[wp] [Qed] Goal typed_predicate_post_l_precedence_xor_or : Valid
-[wp] [Qed] Goal typed_predicate_post_r_precedence_or_implies : Valid
-[wp] [Qed] Goal typed_predicate_post_l_precedence_or_implies : Valid
-[wp] [Alt-Ergo] Goal typed_predicate_post_ok_r_precedence_implies_or : Valid
-[wp] [Qed] Goal typed_predicate_post_ok_since : Valid
-[wp] [Qed] Goal typed_predicate_post_r_assoc_implies : Valid
-[wp] [Qed] Goal typed_predicate_post_r_precedence_implies_equiv : Valid
-[wp] [Qed] Goal typed_predicate_post_l_precedence_implies_equiv : Valid
-[wp] [Qed] Goal typed_predicate_post_r_precedence_equiv_ite : Valid
-[wp] [Qed] Goal typed_predicate_post_m_precedence_equiv_ite : Valid
-[wp] [Qed] Goal typed_predicate_post_l_precedence_equiv_ite : Valid
-[wp] [Qed] Goal typed_predicate_post_r_assoc_ite : Valid
-[wp] [Qed] Goal typed_predicate_post_r_precedence_ite_forall : Valid
-[wp] [Qed] Goal typed_predicate_post_m_precedence_ite_forall : Valid
-[wp] [Qed] Goal typed_predicate_post_l_precedence_ite_forall : Valid
-[wp] [Qed] Goal typed_predicate_post_r_assoc_forall : Valid
-[wp] [Qed] Goal typed_predicate_post_r_precedence_ite_exists : Valid
-[wp] [Qed] Goal typed_predicate_post_m_precedence_ite_exists : Valid
-[wp] [Qed] Goal typed_predicate_post_l_precedence_ite_exists : Valid
-[wp] [Qed] Goal typed_predicate_post_r_assoc_exist : Valid
-[wp] [Qed] Goal typed_predicate_post_r_precedence_ite_let : Valid
-[wp] [Qed] Goal typed_predicate_post_m_precedence_ite_let : Valid
-[wp] [Qed] Goal typed_predicate_post_l_precedence_ite_let : Valid
-[wp] [Qed] Goal typed_predicate_post_r_assoc_let : Valid
-[wp] [Qed] Goal typed_predicate_post_scope_let : Valid
-[wp] [Qed] Goal typed_predicate_post_scope_let_2 : Valid
-[wp] [Qed] Goal typed_predicate_post_r_precedence_ite_naming : Valid
-[wp] [Qed] Goal typed_predicate_bitwise_post_r_precedence_equiv_Pand : Valid
-[wp] [Qed] Goal typed_predicate_bitwise_post_l_precedence_equiv_Pand : Valid
+[wp] [Qed] Goal typed_bitwise_ensures_r_precedence_and_xor : Valid
+[wp] [Qed] Goal typed_bitwise_ensures_l_precedence_and_xor : Valid
+[wp] [Qed] Goal typed_bitwise_ensures_r_precedence_xor_or : Valid
+[wp] [Qed] Goal typed_bitwise_ensures_l_precedence_xor_or : Valid
+[wp] [Qed] Goal typed_bitwise_ensures_r_precedence_or_implies : Valid
+[wp] [Qed] Goal typed_bitwise_ensures_l_precedence_or_implies : Valid
+[wp] [Qed] Goal typed_bitwise_ensures_ok_r_precedence_implies_or : Valid
+[wp] [Qed] Goal typed_bitwise_ensures_ok_since : Valid
+[wp] [Qed] Goal typed_bitwise_ensures_r_assoc_implies : Valid
+[wp] [Qed] Goal typed_bitwise_ensures_r_precedence_implies_equiv : Valid
+[wp] [Qed] Goal typed_bitwise_ensures_l_precedence_implies_equiv : Valid
+[wp] [Qed] Goal typed_comparison_ensures_chainable_lt_lt : Valid
+[wp] [Qed] Goal typed_comparison_ensures_chainable_le_le : Valid
+[wp] [Qed] Goal typed_comparison_ensures_chainable_gt_gt : Valid
+[wp] [Qed] Goal typed_comparison_ensures_chainable_ge_ge : Valid
+[wp] [Qed] Goal typed_comparison_ensures_chainable_eq_eq : Valid
+[wp] [Qed] Goal typed_comparison_ensures_r_precedence_eq_and : Valid
+[wp] [Qed] Goal typed_comparison_ensures_l_precedence_eq_and : Valid
+[wp] [Qed] Goal typed_comparison_ensures_r_precedence_neq_and : Valid
+[wp] [Qed] Goal typed_comparison_ensures_l_precedence_neq_and : Valid
+[wp] [Qed] Goal typed_predicate_ensures_r_precedence_and_xor : Valid
+[wp] [Qed] Goal typed_predicate_ensures_l_precedence_and_xor : Valid
+[wp] [Qed] Goal typed_predicate_ensures_r_precedence_xor_or : Valid
+[wp] [Qed] Goal typed_predicate_ensures_l_precedence_xor_or : Valid
+[wp] [Qed] Goal typed_predicate_ensures_r_precedence_or_implies : Valid
+[wp] [Qed] Goal typed_predicate_ensures_l_precedence_or_implies : Valid
+[wp] [Alt-Ergo] Goal typed_predicate_ensures_ok_r_precedence_implies_or : Valid
+[wp] [Qed] Goal typed_predicate_ensures_ok_since : Valid
+[wp] [Qed] Goal typed_predicate_ensures_r_assoc_implies : Valid
+[wp] [Qed] Goal typed_predicate_ensures_r_precedence_implies_equiv : Valid
+[wp] [Qed] Goal typed_predicate_ensures_l_precedence_implies_equiv : Valid
+[wp] [Qed] Goal typed_predicate_ensures_r_precedence_equiv_ite : Valid
+[wp] [Qed] Goal typed_predicate_ensures_m_precedence_equiv_ite : Valid
+[wp] [Qed] Goal typed_predicate_ensures_l_precedence_equiv_ite : Valid
+[wp] [Qed] Goal typed_predicate_ensures_r_assoc_ite : Valid
+[wp] [Qed] Goal typed_predicate_ensures_r_precedence_ite_forall : Valid
+[wp] [Qed] Goal typed_predicate_ensures_m_precedence_ite_forall : Valid
+[wp] [Qed] Goal typed_predicate_ensures_l_precedence_ite_forall : Valid
+[wp] [Qed] Goal typed_predicate_ensures_r_assoc_forall : Valid
+[wp] [Qed] Goal typed_predicate_ensures_r_precedence_ite_exists : Valid
+[wp] [Qed] Goal typed_predicate_ensures_m_precedence_ite_exists : Valid
+[wp] [Qed] Goal typed_predicate_ensures_l_precedence_ite_exists : Valid
+[wp] [Qed] Goal typed_predicate_ensures_r_assoc_exist : Valid
+[wp] [Qed] Goal typed_predicate_ensures_r_precedence_ite_let : Valid
+[wp] [Qed] Goal typed_predicate_ensures_m_precedence_ite_let : Valid
+[wp] [Qed] Goal typed_predicate_ensures_l_precedence_ite_let : Valid
+[wp] [Qed] Goal typed_predicate_ensures_r_assoc_let : Valid
+[wp] [Qed] Goal typed_predicate_ensures_scope_let : Valid
+[wp] [Qed] Goal typed_predicate_ensures_scope_let_2 : Valid
+[wp] [Qed] Goal typed_predicate_ensures_r_precedence_ite_naming : Valid
+[wp] [Qed] Goal typed_predicate_bitwise_ensures_r_precedence_equiv_Pand : Valid
+[wp] [Qed] Goal typed_predicate_bitwise_ensures_l_precedence_equiv_Pand : Valid
 [wp] Proved goals:   52 / 52
   Qed:            51 
   Alt-Ergo:        1
diff --git a/src/plugins/wp/tests/wp_acsl/oracle_qualif/precedence.1.res.oracle b/src/plugins/wp/tests/wp_acsl/oracle_qualif/precedence.1.res.oracle
index 13603360f9df78991446d692a107ee35c1cbf1c7..b5d9d479c01f387417e3f2800de0874cecf618f7 100644
--- a/src/plugins/wp/tests/wp_acsl/oracle_qualif/precedence.1.res.oracle
+++ b/src/plugins/wp/tests/wp_acsl/oracle_qualif/precedence.1.res.oracle
@@ -40,43 +40,43 @@
 [wp] Loading driver 'share/wp.driver'
 [wp] Warning: Missing RTE guards
 [wp] 37 goals scheduled
-[wp] [Alt-Ergo] Goal typed_bitwise_post_ko_l_precedence_xor_and : Unknown
-[wp] [Alt-Ergo] Goal typed_bitwise_post_ko_r_precedence_xor_and : Unknown
-[wp] [Alt-Ergo] Goal typed_bitwise_post_ko_l_precedence_or_xor : Unknown
-[wp] [Alt-Ergo] Goal typed_bitwise_post_ko_r_precedence_or_xor : Unknown
-[wp] [Alt-Ergo] Goal typed_bitwise_post_ko_l_precedence_implies_or : Unknown
-[wp] [Alt-Ergo] Goal typed_bitwise_post_ko_l_assoc_implies : Unknown
-[wp] [Alt-Ergo] Goal typed_bitwise_post_ko_r_precedence_equiv_implies : Unknown
-[wp] [Alt-Ergo] Goal typed_bitwise_post_ko_l_precedence_equiv_implies : Unknown
-[wp] [Alt-Ergo] Goal typed_comparison_post_ko_r_precedence_and_eq : Unknown
-[wp] [Alt-Ergo] Goal typed_comparison_post_ko_l_precedence_and_eq : Unknown
-[wp] [Alt-Ergo] Goal typed_comparison_post_ko_l_nonassoc_eq : Unknown
-[wp] [Alt-Ergo] Goal typed_comparison_post_ko_r_nonassoc_eq : Unknown
-[wp] [Alt-Ergo] Goal typed_comparison_post_ko_r_precedence_and_neq : Unknown
-[wp] [Alt-Ergo] Goal typed_comparison_post_ko_l_precedence_and_neq : Unknown
-[wp] [Alt-Ergo] Goal typed_predicate_post_ko_l_precedence_xor_and : Unknown
-[wp] [Alt-Ergo] Goal typed_predicate_post_ko_r_precedence_xor_and : Unknown
-[wp] [Alt-Ergo] Goal typed_predicate_post_ko_l_precedence_or_xor : Unknown
-[wp] [Alt-Ergo] Goal typed_predicate_post_ko_r_precedence_or_xor : Unknown
-[wp] [Alt-Ergo] Goal typed_predicate_post_ko_l_precedence_implies_or : Unknown
-[wp] [Alt-Ergo] Goal typed_predicate_post_ko_l_assoc_implies : Unknown
-[wp] [Alt-Ergo] Goal typed_predicate_post_ko_r_precedence_equiv_implies : Unknown
-[wp] [Alt-Ergo] Goal typed_predicate_post_ko_l_precedence_equiv_implies : Unknown
-[wp] [Alt-Ergo] Goal typed_predicate_post_ko_r_precedence_ite_equiv : Unknown
-[wp] [Alt-Ergo] Goal typed_predicate_post_ko_l_precedence_ite_equiv : Unknown
-[wp] [Alt-Ergo] Goal typed_predicate_post_ko_l_assoc_ite : Unknown
-[wp] [Alt-Ergo] Goal typed_predicate_post_ko_r_precedence_forall_ite : Unknown
-[wp] [Alt-Ergo] Goal typed_predicate_post_ko_m_precedence_forall_ite : Unknown
-[wp] [Alt-Ergo] Goal typed_predicate_post_ko_l_precedence_forall_ite : Unknown
-[wp] [Alt-Ergo] Goal typed_predicate_post_ko_r_assoc_forall : Unknown
-[wp] [Alt-Ergo] Goal typed_predicate_post_ko_r_precedence_exists_ite : Unknown
-[wp] [Alt-Ergo] Goal typed_predicate_post_ko_m_precedence_exists_ite : Unknown
-[wp] [Alt-Ergo] Goal typed_predicate_post_ko_l_precedence_exists_ite : Unknown
-[wp] [Alt-Ergo] Goal typed_predicate_post_ko_r_assoc_exist : Unknown
-[wp] [Alt-Ergo] Goal typed_predicate_post_ko_r_precedence_let_ite : Unknown
-[wp] [Alt-Ergo] Goal typed_predicate_post_ko_m_precedence_let_ite : Unknown
-[wp] [Alt-Ergo] Goal typed_predicate_post_ko_l_precedence_let_ite : Unknown
-[wp] [Alt-Ergo] Goal typed_predicate_post_ko_l_assoc_naming : Unknown
+[wp] [Alt-Ergo] Goal typed_bitwise_ensures_ko_l_precedence_xor_and : Unknown
+[wp] [Alt-Ergo] Goal typed_bitwise_ensures_ko_r_precedence_xor_and : Unknown
+[wp] [Alt-Ergo] Goal typed_bitwise_ensures_ko_l_precedence_or_xor : Unknown
+[wp] [Alt-Ergo] Goal typed_bitwise_ensures_ko_r_precedence_or_xor : Unknown
+[wp] [Alt-Ergo] Goal typed_bitwise_ensures_ko_l_precedence_implies_or : Unknown
+[wp] [Alt-Ergo] Goal typed_bitwise_ensures_ko_l_assoc_implies : Unknown
+[wp] [Alt-Ergo] Goal typed_bitwise_ensures_ko_r_precedence_equiv_implies : Unknown
+[wp] [Alt-Ergo] Goal typed_bitwise_ensures_ko_l_precedence_equiv_implies : Unknown
+[wp] [Alt-Ergo] Goal typed_comparison_ensures_ko_r_precedence_and_eq : Unknown
+[wp] [Alt-Ergo] Goal typed_comparison_ensures_ko_l_precedence_and_eq : Unknown
+[wp] [Alt-Ergo] Goal typed_comparison_ensures_ko_l_nonassoc_eq : Unknown
+[wp] [Alt-Ergo] Goal typed_comparison_ensures_ko_r_nonassoc_eq : Unknown
+[wp] [Alt-Ergo] Goal typed_comparison_ensures_ko_r_precedence_and_neq : Unknown
+[wp] [Alt-Ergo] Goal typed_comparison_ensures_ko_l_precedence_and_neq : Unknown
+[wp] [Alt-Ergo] Goal typed_predicate_ensures_ko_l_precedence_xor_and : Unknown
+[wp] [Alt-Ergo] Goal typed_predicate_ensures_ko_r_precedence_xor_and : Unknown
+[wp] [Alt-Ergo] Goal typed_predicate_ensures_ko_l_precedence_or_xor : Unknown
+[wp] [Alt-Ergo] Goal typed_predicate_ensures_ko_r_precedence_or_xor : Unknown
+[wp] [Alt-Ergo] Goal typed_predicate_ensures_ko_l_precedence_implies_or : Unknown
+[wp] [Alt-Ergo] Goal typed_predicate_ensures_ko_l_assoc_implies : Unknown
+[wp] [Alt-Ergo] Goal typed_predicate_ensures_ko_r_precedence_equiv_implies : Unknown
+[wp] [Alt-Ergo] Goal typed_predicate_ensures_ko_l_precedence_equiv_implies : Unknown
+[wp] [Alt-Ergo] Goal typed_predicate_ensures_ko_r_precedence_ite_equiv : Unknown
+[wp] [Alt-Ergo] Goal typed_predicate_ensures_ko_l_precedence_ite_equiv : Unknown
+[wp] [Alt-Ergo] Goal typed_predicate_ensures_ko_l_assoc_ite : Unknown
+[wp] [Alt-Ergo] Goal typed_predicate_ensures_ko_r_precedence_forall_ite : Unknown
+[wp] [Alt-Ergo] Goal typed_predicate_ensures_ko_m_precedence_forall_ite : Unknown
+[wp] [Alt-Ergo] Goal typed_predicate_ensures_ko_l_precedence_forall_ite : Unknown
+[wp] [Alt-Ergo] Goal typed_predicate_ensures_ko_r_assoc_forall : Unknown
+[wp] [Alt-Ergo] Goal typed_predicate_ensures_ko_r_precedence_exists_ite : Unknown
+[wp] [Alt-Ergo] Goal typed_predicate_ensures_ko_m_precedence_exists_ite : Unknown
+[wp] [Alt-Ergo] Goal typed_predicate_ensures_ko_l_precedence_exists_ite : Unknown
+[wp] [Alt-Ergo] Goal typed_predicate_ensures_ko_r_assoc_exist : Unknown
+[wp] [Alt-Ergo] Goal typed_predicate_ensures_ko_r_precedence_let_ite : Unknown
+[wp] [Alt-Ergo] Goal typed_predicate_ensures_ko_m_precedence_let_ite : Unknown
+[wp] [Alt-Ergo] Goal typed_predicate_ensures_ko_l_precedence_let_ite : Unknown
+[wp] [Alt-Ergo] Goal typed_predicate_ensures_ko_l_assoc_naming : Unknown
 [wp] Proved goals:    0 / 37
   Alt-Ergo:        0  (unknown: 37)
 [wp] Report 'tests/wp_acsl/precedence.i.1.report.json'
diff --git a/src/plugins/wp/tests/wp_acsl/oracle_qualif/range.res.oracle b/src/plugins/wp/tests/wp_acsl/oracle_qualif/range.res.oracle
index a3ac45cef648087747780c8102a707bcd3d35880..cf9b98a9f724f9762c4a7cfe28c19da16a5f7014 100644
--- a/src/plugins/wp/tests/wp_acsl/oracle_qualif/range.res.oracle
+++ b/src/plugins/wp/tests/wp_acsl/oracle_qualif/range.res.oracle
@@ -4,10 +4,10 @@
 [wp] Loading driver 'share/wp.driver'
 [wp] Warning: Missing RTE guards
 [wp] 4 goals scheduled
-[wp] [Qed] Goal typed_test_post_P1_ok : Valid
-[wp] [Qed] Goal typed_test_post_P2_ok : Valid
-[wp] [Qed] Goal typed_test_call_val_assigns_p_pre_HP_ok : Valid
-[wp] [Qed] Goal typed_test_call_val_assigns_q_pre_HQ_ok : Valid
+[wp] [Qed] Goal typed_test_ensures_P1_ok : Valid
+[wp] [Qed] Goal typed_test_ensures_P2_ok : Valid
+[wp] [Qed] Goal typed_test_call_val_assigns_p_requires_HP_ok : Valid
+[wp] [Qed] Goal typed_test_call_val_assigns_q_requires_HQ_ok : Valid
 [wp] Proved goals:    4 / 4
   Qed:             4
 [wp] Report 'tests/wp_acsl/range.i.0.report.json'
diff --git a/src/plugins/wp/tests/wp_acsl/oracle_qualif/reads.0.res.oracle b/src/plugins/wp/tests/wp_acsl/oracle_qualif/reads.0.res.oracle
index b9820c5fc668f07c45d573cc977ca87992aa673a..1134f87973041a8458dc62fa39859376138ef84f 100644
--- a/src/plugins/wp/tests/wp_acsl/oracle_qualif/reads.0.res.oracle
+++ b/src/plugins/wp/tests/wp_acsl/oracle_qualif/reads.0.res.oracle
@@ -4,21 +4,21 @@
 [wp] Loading driver 'share/wp.driver'
 [wp] Warning: Missing RTE guards
 [wp] 7 goals scheduled
-[wp] [Alt-Ergo] Goal typed_f_post_qed_ok : Valid
-[wp] [Alt-Ergo] Goal typed_g_post_qed_ok : Valid
-[wp] [Qed] Goal typed_modifies_x_post_qed_ok_F_OK : Valid
-[wp] [Alt-Ergo] Goal typed_modifies_x_post_qed_ok_W_OK_todo : Unknown
-[wp] [Qed] Goal typed_modifies_y_post_qed_ok_F_OK : Valid
-[wp] [Qed] Goal typed_modifies_y_post_qed_ok_G_OK : Valid
-[wp] [Alt-Ergo] Goal typed_modifies_y_post_qed_ok_W_OK_todo : Unknown
+[wp] [Alt-Ergo] Goal typed_f_ensures_qed_ok : Valid
+[wp] [Alt-Ergo] Goal typed_g_ensures_qed_ok : Valid
+[wp] [Qed] Goal typed_modifies_x_ensures_qed_ok_F_OK : Valid
+[wp] [Alt-Ergo] Goal typed_modifies_x_ensures_qed_ok_W_OK_todo : Unknown
+[wp] [Qed] Goal typed_modifies_y_ensures_qed_ok_F_OK : Valid
+[wp] [Qed] Goal typed_modifies_y_ensures_qed_ok_G_OK : Valid
+[wp] [Alt-Ergo] Goal typed_modifies_y_ensures_qed_ok_W_OK_todo : Unknown
 [wp] Proved goals:    5 / 7
   Qed:             3 
   Alt-Ergo:        2  (unknown: 2)
 [wp] Report 'tests/wp_acsl/reads.i.0.report.json'
 -------------------------------------------------------------
 Functions           WP     Alt-Ergo        Total   Success
-f                   -       1 (8..20)        1       100%
-g                   -       1 (16..28)       1       100%
+f                   -       1 (12..24)       1       100%
+g                   -       1 (20..32)       1       100%
 modifies_y           2     -                 3      66.7%
 modifies_x           1     -                 2      50.0%
 -------------------------------------------------------------
diff --git a/src/plugins/wp/tests/wp_acsl/oracle_qualif/reads.1.res.oracle b/src/plugins/wp/tests/wp_acsl/oracle_qualif/reads.1.res.oracle
index df2151ee5ac0385ea2ab9a5b8cb204730fed21b3..d35f0f34da7689d26651e64ae1adf2cb9de89f6d 100644
--- a/src/plugins/wp/tests/wp_acsl/oracle_qualif/reads.1.res.oracle
+++ b/src/plugins/wp/tests/wp_acsl/oracle_qualif/reads.1.res.oracle
@@ -4,9 +4,9 @@
 [wp] Loading driver 'share/wp.driver'
 [wp] Warning: Missing RTE guards
 [wp] 3 goals scheduled
-[wp] [Alt-Ergo] Goal typed_modifies_x_post_qed_ko_G_KO : Unknown
-[wp] [Alt-Ergo] Goal typed_modifies_x_post_qed_ko_H_KO : Unknown
-[wp] [Alt-Ergo] Goal typed_modifies_y_post_qed_ko_H_KO : Unknown
+[wp] [Alt-Ergo] Goal typed_modifies_x_ensures_qed_ko_G_KO : Unknown
+[wp] [Alt-Ergo] Goal typed_modifies_x_ensures_qed_ko_H_KO : Unknown
+[wp] [Alt-Ergo] Goal typed_modifies_y_ensures_qed_ko_H_KO : Unknown
 [wp] Proved goals:    0 / 3
   Alt-Ergo:        0  (unknown: 3)
 [wp] Report 'tests/wp_acsl/reads.i.1.report.json'
diff --git a/src/plugins/wp/tests/wp_acsl/oracle_qualif/record.0.res.oracle b/src/plugins/wp/tests/wp_acsl/oracle_qualif/record.0.res.oracle
index 78f64842093f63d9177b70abd9eb1bdb5515d13c..a2ea10ac9b80001466ddd948bed20efb069c0c0c 100644
--- a/src/plugins/wp/tests/wp_acsl/oracle_qualif/record.0.res.oracle
+++ b/src/plugins/wp/tests/wp_acsl/oracle_qualif/record.0.res.oracle
@@ -4,22 +4,22 @@
 [wp] Loading driver 'share/wp.driver'
 [wp] Warning: Missing RTE guards
 [wp] 11 goals scheduled
-[wp] [Alt-Ergo] Goal typed_f_post_M1_qed_ok : Valid
-[wp] [Qed] Goal typed_f_post_M2_qed_ok : Valid
-[wp] [Qed] Goal typed_f_post_M3_qed_ok : Valid
-[wp] [Qed] Goal typed_f_post_M4_qed_ok : Valid
-[wp] [Qed] Goal typed_f_post_M5_qed_ok : Valid
-[wp] [Qed] Goal typed_f_post_M6_qed_ok : Valid
-[wp] [Qed] Goal typed_f_post_P1_qed_ok : Valid
-[wp] [Alt-Ergo] Goal typed_f_post_P2_qed_ok : Valid
-[wp] [Qed] Goal typed_f_post_P3_qed_ok : Valid
-[wp] [Qed] Goal typed_f_post_P4_qed_ok : Valid
-[wp] [Qed] Goal typed_f_post_P5_qed_ok : Valid
+[wp] [Alt-Ergo] Goal typed_f_ensures_M1_qed_ok : Valid
+[wp] [Qed] Goal typed_f_ensures_M2_qed_ok : Valid
+[wp] [Qed] Goal typed_f_ensures_M3_qed_ok : Valid
+[wp] [Qed] Goal typed_f_ensures_M4_qed_ok : Valid
+[wp] [Qed] Goal typed_f_ensures_M5_qed_ok : Valid
+[wp] [Qed] Goal typed_f_ensures_M6_qed_ok : Valid
+[wp] [Qed] Goal typed_f_ensures_P1_qed_ok : Valid
+[wp] [Alt-Ergo] Goal typed_f_ensures_P2_qed_ok : Valid
+[wp] [Qed] Goal typed_f_ensures_P3_qed_ok : Valid
+[wp] [Qed] Goal typed_f_ensures_P4_qed_ok : Valid
+[wp] [Qed] Goal typed_f_ensures_P5_qed_ok : Valid
 [wp] Proved goals:   11 / 11
   Qed:             9 
   Alt-Ergo:        2
 [wp] Report 'tests/wp_acsl/record.i.0.report.json'
 -------------------------------------------------------------
 Functions           WP     Alt-Ergo        Total   Success
-f                    9      2 (8..20)       11       100%
+f                    9      2 (12..24)      11       100%
 -------------------------------------------------------------
diff --git a/src/plugins/wp/tests/wp_acsl/oracle_qualif/record.1.res.oracle b/src/plugins/wp/tests/wp_acsl/oracle_qualif/record.1.res.oracle
index 8a8174e1563a87d8dbe78fbefdc9098565e0bdb7..72d59398c6be91dad9e49ad0527e4fbe318b36ab 100644
--- a/src/plugins/wp/tests/wp_acsl/oracle_qualif/record.1.res.oracle
+++ b/src/plugins/wp/tests/wp_acsl/oracle_qualif/record.1.res.oracle
@@ -4,7 +4,7 @@
 [wp] Loading driver 'share/wp.driver'
 [wp] Warning: Missing RTE guards
 [wp] 1 goal scheduled
-[wp] [Alt-Ergo] Goal typed_f_post_KP5_qed_ko : Unknown
+[wp] [Alt-Ergo] Goal typed_f_ensures_KP5_qed_ko : Unknown
 [wp] Proved goals:    0 / 1
   Alt-Ergo:        0  (unknown: 1)
 [wp] Report 'tests/wp_acsl/record.i.1.report.json'
diff --git a/src/plugins/wp/tests/wp_acsl/oracle_qualif/simpl_is_type.res.oracle b/src/plugins/wp/tests/wp_acsl/oracle_qualif/simpl_is_type.res.oracle
index c7337043ba717ec108b1534c6fdf2e328e8eb160..715daac305cf3a7f9bd3862f3a5fbdf07cf4968f 100644
--- a/src/plugins/wp/tests/wp_acsl/oracle_qualif/simpl_is_type.res.oracle
+++ b/src/plugins/wp/tests/wp_acsl/oracle_qualif/simpl_is_type.res.oracle
@@ -4,21 +4,21 @@
 [wp] Loading driver 'share/wp.driver'
 [wp] Warning: Missing RTE guards
 [wp] 15 goals scheduled
-[wp] [Alt-Ergo] Goal typed_f_post : Valid
-[wp] [Alt-Ergo] Goal typed_f_loop_inv_preserved : Valid
-[wp] [Qed] Goal typed_f_loop_inv_established : Valid
-[wp] [Alt-Ergo] Goal typed_f_loop_inv_2_preserved : Valid
-[wp] [Qed] Goal typed_f_loop_inv_2_established : Valid
-[wp] [Alt-Ergo] Goal typed_f_loop_inv_3_preserved : Valid
-[wp] [Alt-Ergo] Goal typed_f_loop_inv_3_established : Valid
-[wp] [Qed] Goal typed_f_loop_assign_part1 : Valid
-[wp] [Alt-Ergo] Goal typed_f_loop_assign_part2 : Valid
-[wp] [Alt-Ergo] Goal typed_g_post : Valid
-[wp] [Alt-Ergo] Goal typed_g_loop_inv_preserved : Valid
-[wp] [Qed] Goal typed_g_loop_inv_established : Valid
-[wp] [Alt-Ergo] Goal typed_g_loop_inv_2_preserved : Valid
-[wp] [Qed] Goal typed_g_loop_inv_2_established : Valid
-[wp] [Qed] Goal typed_g_loop_assign : Valid
+[wp] [Alt-Ergo] Goal typed_f_ensures : Valid
+[wp] [Alt-Ergo] Goal typed_f_loop_invariant_preserved : Valid
+[wp] [Qed] Goal typed_f_loop_invariant_established : Valid
+[wp] [Alt-Ergo] Goal typed_f_loop_invariant_2_preserved : Valid
+[wp] [Qed] Goal typed_f_loop_invariant_2_established : Valid
+[wp] [Alt-Ergo] Goal typed_f_loop_invariant_3_preserved : Valid
+[wp] [Alt-Ergo] Goal typed_f_loop_invariant_3_established : Valid
+[wp] [Qed] Goal typed_f_loop_assigns_part1 : Valid
+[wp] [Alt-Ergo] Goal typed_f_loop_assigns_part2 : Valid
+[wp] [Alt-Ergo] Goal typed_g_ensures : Valid
+[wp] [Alt-Ergo] Goal typed_g_loop_invariant_preserved : Valid
+[wp] [Qed] Goal typed_g_loop_invariant_established : Valid
+[wp] [Alt-Ergo] Goal typed_g_loop_invariant_2_preserved : Valid
+[wp] [Qed] Goal typed_g_loop_invariant_2_established : Valid
+[wp] [Qed] Goal typed_g_loop_assigns : Valid
 [wp] Proved goals:   15 / 15
   Qed:             6 
   Alt-Ergo:        9
@@ -26,5 +26,5 @@
 -------------------------------------------------------------
 Functions           WP     Alt-Ergo        Total   Success
 f                    3      6 (88..112)      9       100%
-g                    3      3 (32..44)       6       100%
+g                    3      3 (36..48)       6       100%
 -------------------------------------------------------------
diff --git a/src/plugins/wp/tests/wp_acsl/oracle_qualif/struct_use_case.0.res.oracle b/src/plugins/wp/tests/wp_acsl/oracle_qualif/struct_use_case.0.res.oracle
index bc2da4692e74afd2351380a01b1d5d6773a82118..ef6763632888b42c9e772ebbe7129a1d918ce1b5 100644
--- a/src/plugins/wp/tests/wp_acsl/oracle_qualif/struct_use_case.0.res.oracle
+++ b/src/plugins/wp/tests/wp_acsl/oracle_qualif/struct_use_case.0.res.oracle
@@ -4,14 +4,14 @@
 [wp] Loading driver 'share/wp.driver'
 [wp] Warning: Missing RTE guards
 [wp] 2 goals scheduled
-[wp] [Alt-Ergo] Goal typed_caveat_f_post_ok : Valid
-[wp] [Qed] Goal typed_caveat_g_post_ok : Valid
+[wp] [Alt-Ergo] Goal typed_caveat_f_ensures_ok : Valid
+[wp] [Qed] Goal typed_caveat_g_ensures_ok : Valid
 [wp] Proved goals:    2 / 2
   Qed:             1 
   Alt-Ergo:        1
 [wp] Report 'tests/wp_acsl/struct_use_case.i.0.report.json'
 -------------------------------------------------------------
 Functions           WP     Alt-Ergo        Total   Success
-f                   -       1 (12..24)       1       100%
+f                   -       1 (16..28)       1       100%
 g                    1     -                 1       100%
 -------------------------------------------------------------
diff --git a/src/plugins/wp/tests/wp_acsl/oracle_qualif/struct_use_case.1.res.oracle b/src/plugins/wp/tests/wp_acsl/oracle_qualif/struct_use_case.1.res.oracle
index aa9dcc7c838b295eba14bdfefcf06087c73b0da0..c79e18f32beff0106a9501e7819fa5cd7491182e 100644
--- a/src/plugins/wp/tests/wp_acsl/oracle_qualif/struct_use_case.1.res.oracle
+++ b/src/plugins/wp/tests/wp_acsl/oracle_qualif/struct_use_case.1.res.oracle
@@ -4,8 +4,8 @@
 [wp] Loading driver 'share/wp.driver'
 [wp] Warning: Missing RTE guards
 [wp] 2 goals scheduled
-[wp] [Alt-Ergo] Goal typed_caveat_f_post_ko : Unknown
-[wp] [Alt-Ergo] Goal typed_caveat_g_post_ko : Unknown
+[wp] [Alt-Ergo] Goal typed_caveat_f_ensures_ko : Unknown
+[wp] [Alt-Ergo] Goal typed_caveat_g_ensures_ko : Unknown
 [wp] Proved goals:    0 / 2
   Alt-Ergo:        0  (unknown: 2)
 [wp] Report 'tests/wp_acsl/struct_use_case.i.1.report.json'
diff --git a/src/plugins/wp/tests/wp_acsl/oracle_qualif/type_guard.0.res.oracle b/src/plugins/wp/tests/wp_acsl/oracle_qualif/type_guard.0.res.oracle
index a6ea9f4aee35b72f24c5892b641b421f3e1ecb29..3ba6b703c8f482e68d1c1f9ea2710c9d22b62720 100644
--- a/src/plugins/wp/tests/wp_acsl/oracle_qualif/type_guard.0.res.oracle
+++ b/src/plugins/wp/tests/wp_acsl/oracle_qualif/type_guard.0.res.oracle
@@ -4,7 +4,7 @@
 [wp] Loading driver 'share/wp.driver'
 [wp] Warning: Missing RTE guards
 [wp] 1 goal scheduled
-[wp] [Alt-Ergo] Goal typed_f_post_qed_ok : Valid
+[wp] [Alt-Ergo] Goal typed_f_ensures_qed_ok : Valid
 [wp] Proved goals:    1 / 1
   Qed:             0 
   Alt-Ergo:        1
diff --git a/src/plugins/wp/tests/wp_acsl/oracle_qualif/type_guard.1.res.oracle b/src/plugins/wp/tests/wp_acsl/oracle_qualif/type_guard.1.res.oracle
index 8744936bcc14ad243102625fe6ae9731f71e5d77..4c0a4a82d065b3f536d0d7f827695ee0651a7645 100644
--- a/src/plugins/wp/tests/wp_acsl/oracle_qualif/type_guard.1.res.oracle
+++ b/src/plugins/wp/tests/wp_acsl/oracle_qualif/type_guard.1.res.oracle
@@ -4,7 +4,7 @@
 [wp] Loading driver 'share/wp.driver'
 [wp] Warning: Missing RTE guards
 [wp] 1 goal scheduled
-[wp] [Alt-Ergo] Goal typed_f_post_qed_ko : Unknown
+[wp] [Alt-Ergo] Goal typed_f_ensures_qed_ko : Unknown
 [wp] Proved goals:    0 / 1
   Alt-Ergo:        0  (unknown: 1)
 [wp] Report 'tests/wp_acsl/type_guard.i.1.report.json'
diff --git a/src/plugins/wp/tests/wp_acsl/oracle_qualif/unit_bit_test.res.oracle b/src/plugins/wp/tests/wp_acsl/oracle_qualif/unit_bit_test.res.oracle
index d7e86c63e7d8693f991c8fef5366b7b241c04641..ee02448280b4c73aa34876eb3a4874e1c0502ffe 100644
--- a/src/plugins/wp/tests/wp_acsl/oracle_qualif/unit_bit_test.res.oracle
+++ b/src/plugins/wp/tests/wp_acsl/oracle_qualif/unit_bit_test.res.oracle
@@ -4,10 +4,10 @@
 [wp] Loading driver 'share/wp.driver'
 [wp] Warning: Missing RTE guards
 [wp] 4 goals scheduled
-[wp] [Qed] Goal typed_rotate_left_post_bit_zero : Valid
-[wp] [Alt-Ergo] Goal typed_rotate_left_post_other_bits : Valid
-[wp] [Qed] Goal typed_sum_post_ok : Valid
-[wp] [Alt-Ergo] Goal typed_sum_post_ko : Unknown
+[wp] [Qed] Goal typed_rotate_left_ensures_bit_zero : Valid
+[wp] [Alt-Ergo] Goal typed_rotate_left_ensures_other_bits : Valid
+[wp] [Qed] Goal typed_sum_ensures_ok : Valid
+[wp] [Alt-Ergo] Goal typed_sum_ensures_ko : Unknown
 [wp] Proved goals:    3 / 4
   Qed:             2 
   Alt-Ergo:        1  (unknown: 1)
@@ -15,5 +15,5 @@
 -------------------------------------------------------------
 Functions           WP     Alt-Ergo        Total   Success
 sum                  1     -                 2      50.0%
-rotate_left          1      1 (44..56)       2       100%
+rotate_left          1      1 (48..60)       2       100%
 -------------------------------------------------------------
diff --git a/src/plugins/wp/tests/wp_acsl/oracle_qualif/user_def_type_guard.0.res.oracle b/src/plugins/wp/tests/wp_acsl/oracle_qualif/user_def_type_guard.0.res.oracle
index 1f5420c4053fa980ede1d4ea9050af8a1d59606f..e3c4552cbe9e0350037d723724eb26bf370a4e81 100644
--- a/src/plugins/wp/tests/wp_acsl/oracle_qualif/user_def_type_guard.0.res.oracle
+++ b/src/plugins/wp/tests/wp_acsl/oracle_qualif/user_def_type_guard.0.res.oracle
@@ -4,7 +4,7 @@
 [wp] Loading driver 'share/wp.driver'
 [wp] Warning: Missing RTE guards
 [wp] 1 goal scheduled
-[wp] [Alt-Ergo] Goal typed_f_post_qed_ok : Valid
+[wp] [Alt-Ergo] Goal typed_f_ensures_qed_ok : Valid
 [wp] Proved goals:    1 / 1
   Qed:             0 
   Alt-Ergo:        1
diff --git a/src/plugins/wp/tests/wp_acsl/oracle_qualif/user_def_type_guard.1.res.oracle b/src/plugins/wp/tests/wp_acsl/oracle_qualif/user_def_type_guard.1.res.oracle
index 4295e2a6211fcbc7d2b230b393e4f0bd2df74e2b..25a1b0cae037d1c7fb6fdbbfff453344fa380fc0 100644
--- a/src/plugins/wp/tests/wp_acsl/oracle_qualif/user_def_type_guard.1.res.oracle
+++ b/src/plugins/wp/tests/wp_acsl/oracle_qualif/user_def_type_guard.1.res.oracle
@@ -4,7 +4,7 @@
 [wp] Loading driver 'share/wp.driver'
 [wp] Warning: Missing RTE guards
 [wp] 1 goal scheduled
-[wp] [Alt-Ergo] Goal typed_f_post_qed_ko : Unknown
+[wp] [Alt-Ergo] Goal typed_f_ensures_qed_ko : Unknown
 [wp] Proved goals:    0 / 1
   Alt-Ergo:        0  (unknown: 1)
 [wp] Report 'tests/wp_acsl/user_def_type_guard.i.1.report.json'
diff --git a/src/plugins/wp/tests/wp_acsl/pointer.i.0.report.json b/src/plugins/wp/tests/wp_acsl/pointer.i.0.report.json
index 84a062bbe53b9f468efbf2d33bf8ffdf25666d69..24bc2e2f049ee646bdbf708aa854c519013da8e6 100644
--- a/src/plugins/wp/tests/wp_acsl/pointer.i.0.report.json
+++ b/src/plugins/wp/tests/wp_acsl/pointer.i.0.report.json
@@ -1,38 +1,38 @@
 { "wp:global": { "alt-ergo": { "total": 6, "unknown": 6 },
                  "qed": { "total": 3, "valid": 3 },
                  "wp:main": { "total": 9, "valid": 3, "unknown": 6 } },
-  "wp:functions": { "array": { "array_post_Eq": { "qed": { "total": 1,
-                                                           "valid": 1 },
-                                                  "wp:main": { "total": 1,
-                                                               "valid": 1 } },
-                               "array_post_Le": { "qed": { "total": 1,
-                                                           "valid": 1 },
-                                                  "wp:main": { "total": 1,
-                                                               "valid": 1 } },
-                               "array_post_Lt": { "qed": { "total": 1,
-                                                           "valid": 1 },
-                                                  "wp:main": { "total": 1,
-                                                               "valid": 1 } },
+  "wp:functions": { "array": { "array_ensures_Eq": { "qed": { "total": 1,
+                                                              "valid": 1 },
+                                                     "wp:main": { "total": 1,
+                                                                  "valid": 1 } },
+                               "array_ensures_Le": { "qed": { "total": 1,
+                                                              "valid": 1 },
+                                                     "wp:main": { "total": 1,
+                                                                  "valid": 1 } },
+                               "array_ensures_Lt": { "qed": { "total": 1,
+                                                              "valid": 1 },
+                                                     "wp:main": { "total": 1,
+                                                                  "valid": 1 } },
                                "wp:section": { "qed": { "total": 3,
                                                         "valid": 3 },
                                                "wp:main": { "total": 3,
                                                             "valid": 3 } } },
-                    "pointer": { "pointer_post_qed_ko_Eq_oracle_ko": 
+                    "pointer": { "pointer_ensures_qed_ko_Eq_oracle_ko": 
                                    { "alt-ergo": { "total": 1, "unknown": 1 },
                                      "wp:main": { "total": 1, "unknown": 1 } },
-                                 "pointer_post_qed_ko_Le_oracle_ko": 
+                                 "pointer_ensures_qed_ko_Le_oracle_ko": 
                                    { "alt-ergo": { "total": 1, "unknown": 1 },
                                      "wp:main": { "total": 1, "unknown": 1 } },
                                  "wp:section": { "alt-ergo": { "total": 2,
                                                                "unknown": 2 },
                                                  "wp:main": { "total": 2,
                                                               "unknown": 2 } } },
-                    "mixed_array_pointer": { "mixed_array_pointer_post_qed_ko_Lt_oracle_ko": 
+                    "mixed_array_pointer": { "mixed_array_pointer_ensures_qed_ko_Lt_oracle_ko": 
                                                { "alt-ergo": { "total": 1,
                                                                "unknown": 1 },
                                                  "wp:main": { "total": 1,
                                                               "unknown": 1 } },
-                                             "mixed_array_pointer_post_qed_ko_Le_oracle_ko": 
+                                             "mixed_array_pointer_ensures_qed_ko_Le_oracle_ko": 
                                                { "alt-ergo": { "total": 1,
                                                                "unknown": 1 },
                                                  "wp:main": { "total": 1,
@@ -43,10 +43,10 @@
                                                              "wp:main": 
                                                                { "total": 2,
                                                                  "unknown": 2 } } },
-                    "absurd": { "absurd_post_qed_ko_Comp_oracle_ko": 
+                    "absurd": { "absurd_ensures_qed_ko_Comp_oracle_ko": 
                                   { "alt-ergo": { "total": 1, "unknown": 1 },
                                     "wp:main": { "total": 1, "unknown": 1 } },
-                                "absurd_post_qed_ko_Base_oracle_ko": 
+                                "absurd_ensures_qed_ko_Base_oracle_ko": 
                                   { "alt-ergo": { "total": 1, "unknown": 1 },
                                     "wp:main": { "total": 1, "unknown": 1 } },
                                 "wp:section": { "alt-ergo": { "total": 2,
diff --git a/src/plugins/wp/tests/wp_acsl/pointer.i.1.report.json b/src/plugins/wp/tests/wp_acsl/pointer.i.1.report.json
index 84a062bbe53b9f468efbf2d33bf8ffdf25666d69..24bc2e2f049ee646bdbf708aa854c519013da8e6 100644
--- a/src/plugins/wp/tests/wp_acsl/pointer.i.1.report.json
+++ b/src/plugins/wp/tests/wp_acsl/pointer.i.1.report.json
@@ -1,38 +1,38 @@
 { "wp:global": { "alt-ergo": { "total": 6, "unknown": 6 },
                  "qed": { "total": 3, "valid": 3 },
                  "wp:main": { "total": 9, "valid": 3, "unknown": 6 } },
-  "wp:functions": { "array": { "array_post_Eq": { "qed": { "total": 1,
-                                                           "valid": 1 },
-                                                  "wp:main": { "total": 1,
-                                                               "valid": 1 } },
-                               "array_post_Le": { "qed": { "total": 1,
-                                                           "valid": 1 },
-                                                  "wp:main": { "total": 1,
-                                                               "valid": 1 } },
-                               "array_post_Lt": { "qed": { "total": 1,
-                                                           "valid": 1 },
-                                                  "wp:main": { "total": 1,
-                                                               "valid": 1 } },
+  "wp:functions": { "array": { "array_ensures_Eq": { "qed": { "total": 1,
+                                                              "valid": 1 },
+                                                     "wp:main": { "total": 1,
+                                                                  "valid": 1 } },
+                               "array_ensures_Le": { "qed": { "total": 1,
+                                                              "valid": 1 },
+                                                     "wp:main": { "total": 1,
+                                                                  "valid": 1 } },
+                               "array_ensures_Lt": { "qed": { "total": 1,
+                                                              "valid": 1 },
+                                                     "wp:main": { "total": 1,
+                                                                  "valid": 1 } },
                                "wp:section": { "qed": { "total": 3,
                                                         "valid": 3 },
                                                "wp:main": { "total": 3,
                                                             "valid": 3 } } },
-                    "pointer": { "pointer_post_qed_ko_Eq_oracle_ko": 
+                    "pointer": { "pointer_ensures_qed_ko_Eq_oracle_ko": 
                                    { "alt-ergo": { "total": 1, "unknown": 1 },
                                      "wp:main": { "total": 1, "unknown": 1 } },
-                                 "pointer_post_qed_ko_Le_oracle_ko": 
+                                 "pointer_ensures_qed_ko_Le_oracle_ko": 
                                    { "alt-ergo": { "total": 1, "unknown": 1 },
                                      "wp:main": { "total": 1, "unknown": 1 } },
                                  "wp:section": { "alt-ergo": { "total": 2,
                                                                "unknown": 2 },
                                                  "wp:main": { "total": 2,
                                                               "unknown": 2 } } },
-                    "mixed_array_pointer": { "mixed_array_pointer_post_qed_ko_Lt_oracle_ko": 
+                    "mixed_array_pointer": { "mixed_array_pointer_ensures_qed_ko_Lt_oracle_ko": 
                                                { "alt-ergo": { "total": 1,
                                                                "unknown": 1 },
                                                  "wp:main": { "total": 1,
                                                               "unknown": 1 } },
-                                             "mixed_array_pointer_post_qed_ko_Le_oracle_ko": 
+                                             "mixed_array_pointer_ensures_qed_ko_Le_oracle_ko": 
                                                { "alt-ergo": { "total": 1,
                                                                "unknown": 1 },
                                                  "wp:main": { "total": 1,
@@ -43,10 +43,10 @@
                                                              "wp:main": 
                                                                { "total": 2,
                                                                  "unknown": 2 } } },
-                    "absurd": { "absurd_post_qed_ko_Comp_oracle_ko": 
+                    "absurd": { "absurd_ensures_qed_ko_Comp_oracle_ko": 
                                   { "alt-ergo": { "total": 1, "unknown": 1 },
                                     "wp:main": { "total": 1, "unknown": 1 } },
-                                "absurd_post_qed_ko_Base_oracle_ko": 
+                                "absurd_ensures_qed_ko_Base_oracle_ko": 
                                   { "alt-ergo": { "total": 1, "unknown": 1 },
                                     "wp:main": { "total": 1, "unknown": 1 } },
                                 "wp:section": { "alt-ergo": { "total": 2,
diff --git a/src/plugins/wp/tests/wp_acsl/precedence.i.0.report.json b/src/plugins/wp/tests/wp_acsl/precedence.i.0.report.json
index e6f56a33ce42a5132d53ef846fd4e743a142c83e..db09e8ac05f0bb0ebc86fa1be39a1bd8f8333434 100644
--- a/src/plugins/wp/tests/wp_acsl/precedence.i.0.report.json
+++ b/src/plugins/wp/tests/wp_acsl/precedence.i.0.report.json
@@ -1,117 +1,111 @@
 { "wp:global": { "alt-ergo": { "total": 1, "valid": 1, "rank": 2 },
                  "qed": { "total": 51, "valid": 51 },
                  "wp:main": { "total": 52, "valid": 52, "rank": 2 } },
-  "wp:functions": { "predicate": { "predicate_post_r_precedence_ite_naming": 
+  "wp:functions": { "predicate": { "predicate_ensures_r_precedence_ite_naming": 
                                      { "qed": { "total": 1, "valid": 1 },
                                        "wp:main": { "total": 1, "valid": 1 } },
-                                   "predicate_post_scope_let_2": { "qed": 
+                                   "predicate_ensures_scope_let_2": { "qed": 
                                                                     { "total": 1,
                                                                     "valid": 1 },
-                                                                   "wp:main": 
+                                                                    "wp:main": 
                                                                     { "total": 1,
                                                                     "valid": 1 } },
-                                   "predicate_post_scope_let": { "qed": 
-                                                                   { "total": 1,
+                                   "predicate_ensures_scope_let": { "qed": 
+                                                                    { "total": 1,
                                                                     "valid": 1 },
-                                                                 "wp:main": 
-                                                                   { "total": 1,
+                                                                    "wp:main": 
+                                                                    { "total": 1,
                                                                     "valid": 1 } },
-                                   "predicate_post_r_assoc_let": { "qed": 
+                                   "predicate_ensures_r_assoc_let": { "qed": 
                                                                     { "total": 1,
                                                                     "valid": 1 },
-                                                                   "wp:main": 
+                                                                    "wp:main": 
                                                                     { "total": 1,
                                                                     "valid": 1 } },
-                                   "predicate_post_l_precedence_ite_let": 
+                                   "predicate_ensures_l_precedence_ite_let": 
                                      { "qed": { "total": 1, "valid": 1 },
                                        "wp:main": { "total": 1, "valid": 1 } },
-                                   "predicate_post_m_precedence_ite_let": 
+                                   "predicate_ensures_m_precedence_ite_let": 
                                      { "qed": { "total": 1, "valid": 1 },
                                        "wp:main": { "total": 1, "valid": 1 } },
-                                   "predicate_post_r_precedence_ite_let": 
+                                   "predicate_ensures_r_precedence_ite_let": 
                                      { "qed": { "total": 1, "valid": 1 },
                                        "wp:main": { "total": 1, "valid": 1 } },
-                                   "predicate_post_r_assoc_exist": { "qed": 
-                                                                    { "total": 1,
-                                                                    "valid": 1 },
-                                                                    "wp:main": 
-                                                                    { "total": 1,
-                                                                    "valid": 1 } },
-                                   "predicate_post_l_precedence_ite_exists": 
+                                   "predicate_ensures_r_assoc_exist": 
                                      { "qed": { "total": 1, "valid": 1 },
                                        "wp:main": { "total": 1, "valid": 1 } },
-                                   "predicate_post_m_precedence_ite_exists": 
+                                   "predicate_ensures_l_precedence_ite_exists": 
                                      { "qed": { "total": 1, "valid": 1 },
                                        "wp:main": { "total": 1, "valid": 1 } },
-                                   "predicate_post_r_precedence_ite_exists": 
+                                   "predicate_ensures_m_precedence_ite_exists": 
                                      { "qed": { "total": 1, "valid": 1 },
                                        "wp:main": { "total": 1, "valid": 1 } },
-                                   "predicate_post_r_assoc_forall": { "qed": 
-                                                                    { "total": 1,
-                                                                    "valid": 1 },
-                                                                    "wp:main": 
-                                                                    { "total": 1,
-                                                                    "valid": 1 } },
-                                   "predicate_post_l_precedence_ite_forall": 
+                                   "predicate_ensures_r_precedence_ite_exists": 
+                                     { "qed": { "total": 1, "valid": 1 },
+                                       "wp:main": { "total": 1, "valid": 1 } },
+                                   "predicate_ensures_r_assoc_forall": 
                                      { "qed": { "total": 1, "valid": 1 },
                                        "wp:main": { "total": 1, "valid": 1 } },
-                                   "predicate_post_m_precedence_ite_forall": 
+                                   "predicate_ensures_l_precedence_ite_forall": 
                                      { "qed": { "total": 1, "valid": 1 },
                                        "wp:main": { "total": 1, "valid": 1 } },
-                                   "predicate_post_r_precedence_ite_forall": 
+                                   "predicate_ensures_m_precedence_ite_forall": 
                                      { "qed": { "total": 1, "valid": 1 },
                                        "wp:main": { "total": 1, "valid": 1 } },
-                                   "predicate_post_r_assoc_ite": { "qed": 
+                                   "predicate_ensures_r_precedence_ite_forall": 
+                                     { "qed": { "total": 1, "valid": 1 },
+                                       "wp:main": { "total": 1, "valid": 1 } },
+                                   "predicate_ensures_r_assoc_ite": { "qed": 
                                                                     { "total": 1,
                                                                     "valid": 1 },
-                                                                   "wp:main": 
+                                                                    "wp:main": 
                                                                     { "total": 1,
                                                                     "valid": 1 } },
-                                   "predicate_post_l_precedence_equiv_ite": 
+                                   "predicate_ensures_l_precedence_equiv_ite": 
                                      { "qed": { "total": 1, "valid": 1 },
                                        "wp:main": { "total": 1, "valid": 1 } },
-                                   "predicate_post_m_precedence_equiv_ite": 
+                                   "predicate_ensures_m_precedence_equiv_ite": 
                                      { "qed": { "total": 1, "valid": 1 },
                                        "wp:main": { "total": 1, "valid": 1 } },
-                                   "predicate_post_r_precedence_equiv_ite": 
+                                   "predicate_ensures_r_precedence_equiv_ite": 
                                      { "qed": { "total": 1, "valid": 1 },
                                        "wp:main": { "total": 1, "valid": 1 } },
-                                   "predicate_post_l_precedence_implies_equiv": 
+                                   "predicate_ensures_l_precedence_implies_equiv": 
                                      { "qed": { "total": 1, "valid": 1 },
                                        "wp:main": { "total": 1, "valid": 1 } },
-                                   "predicate_post_r_precedence_implies_equiv": 
+                                   "predicate_ensures_r_precedence_implies_equiv": 
                                      { "qed": { "total": 1, "valid": 1 },
                                        "wp:main": { "total": 1, "valid": 1 } },
-                                   "predicate_post_r_assoc_implies": 
+                                   "predicate_ensures_r_assoc_implies": 
                                      { "qed": { "total": 1, "valid": 1 },
                                        "wp:main": { "total": 1, "valid": 1 } },
-                                   "predicate_post_ok_since": { "qed": 
-                                                                  { "total": 1,
+                                   "predicate_ensures_ok_since": { "qed": 
+                                                                    { "total": 1,
                                                                     "valid": 1 },
-                                                                "wp:main": 
-                                                                  { "total": 1,
+                                                                   "wp:main": 
+                                                                    { "total": 1,
                                                                     "valid": 1 } },
-                                   "predicate_post_ok_r_precedence_implies_or": 
+                                   "predicate_ensures_ok_r_precedence_implies_or": 
                                      { "alt-ergo": { "total": 1, "valid": 1,
                                                      "rank": 2 },
                                        "wp:main": { "total": 1, "valid": 1,
                                                     "rank": 2 } },
-                                   "predicate_post_l_precedence_or_implies": 
+                                   "predicate_ensures_l_precedence_or_implies": 
                                      { "qed": { "total": 1, "valid": 1 },
                                        "wp:main": { "total": 1, "valid": 1 } },
-                                   "predicate_post_r_precedence_or_implies": 
+                                   "predicate_ensures_r_precedence_or_implies": 
                                      { "qed": { "total": 1, "valid": 1 },
                                        "wp:main": { "total": 1, "valid": 1 } },
-                                   "predicate_post_l_precedence_xor_or": 
+                                   "predicate_ensures_l_precedence_xor_or": 
                                      { "qed": { "total": 1, "valid": 1 },
                                        "wp:main": { "total": 1, "valid": 1 } },
-                                   "predicate_post_r_precedence_xor_or": 
+                                   "predicate_ensures_r_precedence_xor_or": 
                                      { "qed": { "total": 1, "valid": 1 },
                                        "wp:main": { "total": 1, "valid": 1 } },
-                                   "predicate_post_l_precedence_and_xor": 
+                                   "predicate_ensures_l_precedence_and_xor": 
                                      { "qed": { "total": 1, "valid": 1 },
                                        "wp:main": { "total": 1, "valid": 1 } },
-                                   "predicate_post_r_precedence_and_xor": 
+                                   "predicate_ensures_r_precedence_and_xor": 
                                      { "qed": { "total": 1, "valid": 1 },
                                        "wp:main": { "total": 1, "valid": 1 } },
                                    "wp:section": { "alt-ergo": { "total": 1,
@@ -122,85 +116,86 @@
                                                    "wp:main": { "total": 30,
                                                                 "valid": 30,
                                                                 "rank": 2 } } },
-                    "comparison": { "comparison_post_l_precedence_neq_and": 
+                    "comparison": { "comparison_ensures_l_precedence_neq_and": 
                                       { "qed": { "total": 1, "valid": 1 },
                                         "wp:main": { "total": 1, "valid": 1 } },
-                                    "comparison_post_r_precedence_neq_and": 
+                                    "comparison_ensures_r_precedence_neq_and": 
                                       { "qed": { "total": 1, "valid": 1 },
                                         "wp:main": { "total": 1, "valid": 1 } },
-                                    "comparison_post_l_precedence_eq_and": 
+                                    "comparison_ensures_l_precedence_eq_and": 
                                       { "qed": { "total": 1, "valid": 1 },
                                         "wp:main": { "total": 1, "valid": 1 } },
-                                    "comparison_post_r_precedence_eq_and": 
+                                    "comparison_ensures_r_precedence_eq_and": 
                                       { "qed": { "total": 1, "valid": 1 },
                                         "wp:main": { "total": 1, "valid": 1 } },
-                                    "comparison_post_chainable_eq_eq": 
+                                    "comparison_ensures_chainable_eq_eq": 
                                       { "qed": { "total": 1, "valid": 1 },
                                         "wp:main": { "total": 1, "valid": 1 } },
-                                    "comparison_post_chainable_ge_ge": 
+                                    "comparison_ensures_chainable_ge_ge": 
                                       { "qed": { "total": 1, "valid": 1 },
                                         "wp:main": { "total": 1, "valid": 1 } },
-                                    "comparison_post_chainable_gt_gt": 
+                                    "comparison_ensures_chainable_gt_gt": 
                                       { "qed": { "total": 1, "valid": 1 },
                                         "wp:main": { "total": 1, "valid": 1 } },
-                                    "comparison_post_chainable_le_le": 
+                                    "comparison_ensures_chainable_le_le": 
                                       { "qed": { "total": 1, "valid": 1 },
                                         "wp:main": { "total": 1, "valid": 1 } },
-                                    "comparison_post_chainable_lt_lt": 
+                                    "comparison_ensures_chainable_lt_lt": 
                                       { "qed": { "total": 1, "valid": 1 },
                                         "wp:main": { "total": 1, "valid": 1 } },
                                     "wp:section": { "qed": { "total": 9,
                                                              "valid": 9 },
                                                     "wp:main": { "total": 9,
                                                                  "valid": 9 } } },
-                    "bitwise": { "bitwise_post_l_precedence_implies_equiv": 
+                    "bitwise": { "bitwise_ensures_l_precedence_implies_equiv": 
                                    { "qed": { "total": 1, "valid": 1 },
                                      "wp:main": { "total": 1, "valid": 1 } },
-                                 "bitwise_post_r_precedence_implies_equiv": 
+                                 "bitwise_ensures_r_precedence_implies_equiv": 
                                    { "qed": { "total": 1, "valid": 1 },
                                      "wp:main": { "total": 1, "valid": 1 } },
-                                 "bitwise_post_r_assoc_implies": { "qed": 
+                                 "bitwise_ensures_r_assoc_implies": { "qed": 
                                                                     { "total": 1,
                                                                     "valid": 1 },
-                                                                   "wp:main": 
+                                                                    "wp:main": 
                                                                     { "total": 1,
                                                                     "valid": 1 } },
-                                 "bitwise_post_ok_since": { "qed": { "total": 1,
-                                                                    "valid": 1 },
-                                                            "wp:main": 
-                                                              { "total": 1,
-                                                                "valid": 1 } },
-                                 "bitwise_post_ok_r_precedence_implies_or": 
+                                 "bitwise_ensures_ok_since": { "qed": 
+                                                                 { "total": 1,
+                                                                   "valid": 1 },
+                                                               "wp:main": 
+                                                                 { "total": 1,
+                                                                   "valid": 1 } },
+                                 "bitwise_ensures_ok_r_precedence_implies_or": 
                                    { "qed": { "total": 1, "valid": 1 },
                                      "wp:main": { "total": 1, "valid": 1 } },
-                                 "bitwise_post_l_precedence_or_implies": 
+                                 "bitwise_ensures_l_precedence_or_implies": 
                                    { "qed": { "total": 1, "valid": 1 },
                                      "wp:main": { "total": 1, "valid": 1 } },
-                                 "bitwise_post_r_precedence_or_implies": 
+                                 "bitwise_ensures_r_precedence_or_implies": 
                                    { "qed": { "total": 1, "valid": 1 },
                                      "wp:main": { "total": 1, "valid": 1 } },
-                                 "bitwise_post_l_precedence_xor_or": 
+                                 "bitwise_ensures_l_precedence_xor_or": 
                                    { "qed": { "total": 1, "valid": 1 },
                                      "wp:main": { "total": 1, "valid": 1 } },
-                                 "bitwise_post_r_precedence_xor_or": 
+                                 "bitwise_ensures_r_precedence_xor_or": 
                                    { "qed": { "total": 1, "valid": 1 },
                                      "wp:main": { "total": 1, "valid": 1 } },
-                                 "bitwise_post_l_precedence_and_xor": 
+                                 "bitwise_ensures_l_precedence_and_xor": 
                                    { "qed": { "total": 1, "valid": 1 },
                                      "wp:main": { "total": 1, "valid": 1 } },
-                                 "bitwise_post_r_precedence_and_xor": 
+                                 "bitwise_ensures_r_precedence_and_xor": 
                                    { "qed": { "total": 1, "valid": 1 },
                                      "wp:main": { "total": 1, "valid": 1 } },
                                  "wp:section": { "qed": { "total": 11,
                                                           "valid": 11 },
                                                  "wp:main": { "total": 11,
                                                               "valid": 11 } } },
-                    "predicate_bitwise": { "predicate_bitwise_post_l_precedence_equiv_Pand": 
+                    "predicate_bitwise": { "predicate_bitwise_ensures_l_precedence_equiv_Pand": 
                                              { "qed": { "total": 1,
                                                         "valid": 1 },
                                                "wp:main": { "total": 1,
                                                             "valid": 1 } },
-                                           "predicate_bitwise_post_r_precedence_equiv_Pand": 
+                                           "predicate_bitwise_ensures_r_precedence_equiv_Pand": 
                                              { "qed": { "total": 1,
                                                         "valid": 1 },
                                                "wp:main": { "total": 1,
diff --git a/src/plugins/wp/tests/wp_acsl/precedence.i.1.report.json b/src/plugins/wp/tests/wp_acsl/precedence.i.1.report.json
index f4ee809d7dcb9c42b674bb7cf680480c684e0e7f..47bc323909bc169c81bdfa3e75ab33a9d4e89e85 100644
--- a/src/plugins/wp/tests/wp_acsl/precedence.i.1.report.json
+++ b/src/plugins/wp/tests/wp_acsl/precedence.i.1.report.json
@@ -1,117 +1,116 @@
 { "wp:global": { "alt-ergo": { "total": 37, "unknown": 37 },
                  "wp:main": { "total": 37, "unknown": 37 } },
-  "wp:functions": { "predicate": { "predicate_post_ko_l_assoc_naming": 
+  "wp:functions": { "predicate": { "predicate_ensures_ko_l_assoc_naming": 
                                      { "alt-ergo": { "total": 1,
                                                      "unknown": 1 },
                                        "wp:main": { "total": 1,
                                                     "unknown": 1 } },
-                                   "predicate_post_ko_l_precedence_let_ite": 
+                                   "predicate_ensures_ko_l_precedence_let_ite": 
                                      { "alt-ergo": { "total": 1,
                                                      "unknown": 1 },
                                        "wp:main": { "total": 1,
                                                     "unknown": 1 } },
-                                   "predicate_post_ko_m_precedence_let_ite": 
+                                   "predicate_ensures_ko_m_precedence_let_ite": 
                                      { "alt-ergo": { "total": 1,
                                                      "unknown": 1 },
                                        "wp:main": { "total": 1,
                                                     "unknown": 1 } },
-                                   "predicate_post_ko_r_precedence_let_ite": 
+                                   "predicate_ensures_ko_r_precedence_let_ite": 
                                      { "alt-ergo": { "total": 1,
                                                      "unknown": 1 },
                                        "wp:main": { "total": 1,
                                                     "unknown": 1 } },
-                                   "predicate_post_ko_r_assoc_exist": 
+                                   "predicate_ensures_ko_r_assoc_exist": 
                                      { "alt-ergo": { "total": 1,
                                                      "unknown": 1 },
                                        "wp:main": { "total": 1,
                                                     "unknown": 1 } },
-                                   "predicate_post_ko_l_precedence_exists_ite": 
+                                   "predicate_ensures_ko_l_precedence_exists_ite": 
                                      { "alt-ergo": { "total": 1,
                                                      "unknown": 1 },
                                        "wp:main": { "total": 1,
                                                     "unknown": 1 } },
-                                   "predicate_post_ko_m_precedence_exists_ite": 
+                                   "predicate_ensures_ko_m_precedence_exists_ite": 
                                      { "alt-ergo": { "total": 1,
                                                      "unknown": 1 },
                                        "wp:main": { "total": 1,
                                                     "unknown": 1 } },
-                                   "predicate_post_ko_r_precedence_exists_ite": 
+                                   "predicate_ensures_ko_r_precedence_exists_ite": 
                                      { "alt-ergo": { "total": 1,
                                                      "unknown": 1 },
                                        "wp:main": { "total": 1,
                                                     "unknown": 1 } },
-                                   "predicate_post_ko_r_assoc_forall": 
+                                   "predicate_ensures_ko_r_assoc_forall": 
                                      { "alt-ergo": { "total": 1,
                                                      "unknown": 1 },
                                        "wp:main": { "total": 1,
                                                     "unknown": 1 } },
-                                   "predicate_post_ko_l_precedence_forall_ite": 
+                                   "predicate_ensures_ko_l_precedence_forall_ite": 
                                      { "alt-ergo": { "total": 1,
                                                      "unknown": 1 },
                                        "wp:main": { "total": 1,
                                                     "unknown": 1 } },
-                                   "predicate_post_ko_m_precedence_forall_ite": 
+                                   "predicate_ensures_ko_m_precedence_forall_ite": 
                                      { "alt-ergo": { "total": 1,
                                                      "unknown": 1 },
                                        "wp:main": { "total": 1,
                                                     "unknown": 1 } },
-                                   "predicate_post_ko_r_precedence_forall_ite": 
+                                   "predicate_ensures_ko_r_precedence_forall_ite": 
                                      { "alt-ergo": { "total": 1,
                                                      "unknown": 1 },
                                        "wp:main": { "total": 1,
                                                     "unknown": 1 } },
-                                   "predicate_post_ko_l_assoc_ite": { "alt-ergo": 
-                                                                    { "total": 1,
-                                                                    "unknown": 1 },
-                                                                    "wp:main": 
-                                                                    { "total": 1,
-                                                                    "unknown": 1 } },
-                                   "predicate_post_ko_l_precedence_ite_equiv": 
+                                   "predicate_ensures_ko_l_assoc_ite": 
                                      { "alt-ergo": { "total": 1,
                                                      "unknown": 1 },
                                        "wp:main": { "total": 1,
                                                     "unknown": 1 } },
-                                   "predicate_post_ko_r_precedence_ite_equiv": 
+                                   "predicate_ensures_ko_l_precedence_ite_equiv": 
                                      { "alt-ergo": { "total": 1,
                                                      "unknown": 1 },
                                        "wp:main": { "total": 1,
                                                     "unknown": 1 } },
-                                   "predicate_post_ko_l_precedence_equiv_implies": 
+                                   "predicate_ensures_ko_r_precedence_ite_equiv": 
                                      { "alt-ergo": { "total": 1,
                                                      "unknown": 1 },
                                        "wp:main": { "total": 1,
                                                     "unknown": 1 } },
-                                   "predicate_post_ko_r_precedence_equiv_implies": 
+                                   "predicate_ensures_ko_l_precedence_equiv_implies": 
                                      { "alt-ergo": { "total": 1,
                                                      "unknown": 1 },
                                        "wp:main": { "total": 1,
                                                     "unknown": 1 } },
-                                   "predicate_post_ko_l_assoc_implies": 
+                                   "predicate_ensures_ko_r_precedence_equiv_implies": 
                                      { "alt-ergo": { "total": 1,
                                                      "unknown": 1 },
                                        "wp:main": { "total": 1,
                                                     "unknown": 1 } },
-                                   "predicate_post_ko_l_precedence_implies_or": 
+                                   "predicate_ensures_ko_l_assoc_implies": 
                                      { "alt-ergo": { "total": 1,
                                                      "unknown": 1 },
                                        "wp:main": { "total": 1,
                                                     "unknown": 1 } },
-                                   "predicate_post_ko_r_precedence_or_xor": 
+                                   "predicate_ensures_ko_l_precedence_implies_or": 
                                      { "alt-ergo": { "total": 1,
                                                      "unknown": 1 },
                                        "wp:main": { "total": 1,
                                                     "unknown": 1 } },
-                                   "predicate_post_ko_l_precedence_or_xor": 
+                                   "predicate_ensures_ko_r_precedence_or_xor": 
                                      { "alt-ergo": { "total": 1,
                                                      "unknown": 1 },
                                        "wp:main": { "total": 1,
                                                     "unknown": 1 } },
-                                   "predicate_post_ko_r_precedence_xor_and": 
+                                   "predicate_ensures_ko_l_precedence_or_xor": 
                                      { "alt-ergo": { "total": 1,
                                                      "unknown": 1 },
                                        "wp:main": { "total": 1,
                                                     "unknown": 1 } },
-                                   "predicate_post_ko_l_precedence_xor_and": 
+                                   "predicate_ensures_ko_r_precedence_xor_and": 
+                                     { "alt-ergo": { "total": 1,
+                                                     "unknown": 1 },
+                                       "wp:main": { "total": 1,
+                                                    "unknown": 1 } },
+                                   "predicate_ensures_ko_l_precedence_xor_and": 
                                      { "alt-ergo": { "total": 1,
                                                      "unknown": 1 },
                                        "wp:main": { "total": 1,
@@ -120,32 +119,32 @@
                                                                  "unknown": 23 },
                                                    "wp:main": { "total": 23,
                                                                 "unknown": 23 } } },
-                    "comparison": { "comparison_post_ko_l_precedence_and_neq": 
+                    "comparison": { "comparison_ensures_ko_l_precedence_and_neq": 
                                       { "alt-ergo": { "total": 1,
                                                       "unknown": 1 },
                                         "wp:main": { "total": 1,
                                                      "unknown": 1 } },
-                                    "comparison_post_ko_r_precedence_and_neq": 
+                                    "comparison_ensures_ko_r_precedence_and_neq": 
                                       { "alt-ergo": { "total": 1,
                                                       "unknown": 1 },
                                         "wp:main": { "total": 1,
                                                      "unknown": 1 } },
-                                    "comparison_post_ko_r_nonassoc_eq": 
+                                    "comparison_ensures_ko_r_nonassoc_eq": 
                                       { "alt-ergo": { "total": 1,
                                                       "unknown": 1 },
                                         "wp:main": { "total": 1,
                                                      "unknown": 1 } },
-                                    "comparison_post_ko_l_nonassoc_eq": 
+                                    "comparison_ensures_ko_l_nonassoc_eq": 
                                       { "alt-ergo": { "total": 1,
                                                       "unknown": 1 },
                                         "wp:main": { "total": 1,
                                                      "unknown": 1 } },
-                                    "comparison_post_ko_l_precedence_and_eq": 
+                                    "comparison_ensures_ko_l_precedence_and_eq": 
                                       { "alt-ergo": { "total": 1,
                                                       "unknown": 1 },
                                         "wp:main": { "total": 1,
                                                      "unknown": 1 } },
-                                    "comparison_post_ko_r_precedence_and_eq": 
+                                    "comparison_ensures_ko_r_precedence_and_eq": 
                                       { "alt-ergo": { "total": 1,
                                                       "unknown": 1 },
                                         "wp:main": { "total": 1,
@@ -154,31 +153,28 @@
                                                                   "unknown": 6 },
                                                     "wp:main": { "total": 6,
                                                                  "unknown": 6 } } },
-                    "bitwise": { "bitwise_post_ko_l_precedence_equiv_implies": 
+                    "bitwise": { "bitwise_ensures_ko_l_precedence_equiv_implies": 
+                                   { "alt-ergo": { "total": 1, "unknown": 1 },
+                                     "wp:main": { "total": 1, "unknown": 1 } },
+                                 "bitwise_ensures_ko_r_precedence_equiv_implies": 
                                    { "alt-ergo": { "total": 1, "unknown": 1 },
                                      "wp:main": { "total": 1, "unknown": 1 } },
-                                 "bitwise_post_ko_r_precedence_equiv_implies": 
+                                 "bitwise_ensures_ko_l_assoc_implies": 
                                    { "alt-ergo": { "total": 1, "unknown": 1 },
                                      "wp:main": { "total": 1, "unknown": 1 } },
-                                 "bitwise_post_ko_l_assoc_implies": { "alt-ergo": 
-                                                                    { "total": 1,
-                                                                    "unknown": 1 },
-                                                                    "wp:main": 
-                                                                    { "total": 1,
-                                                                    "unknown": 1 } },
-                                 "bitwise_post_ko_l_precedence_implies_or": 
+                                 "bitwise_ensures_ko_l_precedence_implies_or": 
                                    { "alt-ergo": { "total": 1, "unknown": 1 },
                                      "wp:main": { "total": 1, "unknown": 1 } },
-                                 "bitwise_post_ko_r_precedence_or_xor": 
+                                 "bitwise_ensures_ko_r_precedence_or_xor": 
                                    { "alt-ergo": { "total": 1, "unknown": 1 },
                                      "wp:main": { "total": 1, "unknown": 1 } },
-                                 "bitwise_post_ko_l_precedence_or_xor": 
+                                 "bitwise_ensures_ko_l_precedence_or_xor": 
                                    { "alt-ergo": { "total": 1, "unknown": 1 },
                                      "wp:main": { "total": 1, "unknown": 1 } },
-                                 "bitwise_post_ko_r_precedence_xor_and": 
+                                 "bitwise_ensures_ko_r_precedence_xor_and": 
                                    { "alt-ergo": { "total": 1, "unknown": 1 },
                                      "wp:main": { "total": 1, "unknown": 1 } },
-                                 "bitwise_post_ko_l_precedence_xor_and": 
+                                 "bitwise_ensures_ko_l_precedence_xor_and": 
                                    { "alt-ergo": { "total": 1, "unknown": 1 },
                                      "wp:main": { "total": 1, "unknown": 1 } },
                                  "wp:section": { "alt-ergo": { "total": 8,
diff --git a/src/plugins/wp/tests/wp_acsl/range.i.0.report.json b/src/plugins/wp/tests/wp_acsl/range.i.0.report.json
index 8c826553edf4f3838808c7a0b7ba2b3bd8cab80c..d2f9a6999e9c03657fb5523f99bafc0a85eefb0f 100644
--- a/src/plugins/wp/tests/wp_acsl/range.i.0.report.json
+++ b/src/plugins/wp/tests/wp_acsl/range.i.0.report.json
@@ -1,19 +1,25 @@
 { "wp:global": { "qed": { "total": 4, "valid": 4 },
                  "wp:main": { "total": 4, "valid": 4 } },
-  "wp:functions": { "test": { "specialization_val_assigns_q_pre_HQ_ok_at_test_stmt_2": 
-                                { "qed": { "total": 1, "valid": 1 },
-                                  "wp:main": { "total": 1, "valid": 1 } },
-                              "specialization_val_assigns_p_pre_HP_ok_at_test_stmt_1": 
-                                { "qed": { "total": 1, "valid": 1 },
-                                  "wp:main": { "total": 1, "valid": 1 } },
-                              "test_post_P2_ok": { "qed": { "total": 1,
-                                                            "valid": 1 },
-                                                   "wp:main": { "total": 1,
-                                                                "valid": 1 } },
-                              "test_post_P1_ok": { "qed": { "total": 1,
-                                                            "valid": 1 },
-                                                   "wp:main": { "total": 1,
-                                                                "valid": 1 } },
+  "wp:functions": { "test": { "val_assigns_q_requires_HQ_ok": { "qed": 
+                                                                  { "total": 1,
+                                                                    "valid": 1 },
+                                                                "wp:main": 
+                                                                  { "total": 1,
+                                                                    "valid": 1 } },
+                              "val_assigns_p_requires_HP_ok": { "qed": 
+                                                                  { "total": 1,
+                                                                    "valid": 1 },
+                                                                "wp:main": 
+                                                                  { "total": 1,
+                                                                    "valid": 1 } },
+                              "test_ensures_P2_ok": { "qed": { "total": 1,
+                                                               "valid": 1 },
+                                                      "wp:main": { "total": 1,
+                                                                   "valid": 1 } },
+                              "test_ensures_P1_ok": { "qed": { "total": 1,
+                                                               "valid": 1 },
+                                                      "wp:main": { "total": 1,
+                                                                   "valid": 1 } },
                               "wp:section": { "qed": { "total": 4,
                                                        "valid": 4 },
                                               "wp:main": { "total": 4,
diff --git a/src/plugins/wp/tests/wp_acsl/reads.i.0.report.json b/src/plugins/wp/tests/wp_acsl/reads.i.0.report.json
index f94728bb3726fd7c91bb967d9ca076fe1d0d1559..1cf27c3b07a3485d1473914e6544469b28ba09ee 100644
--- a/src/plugins/wp/tests/wp_acsl/reads.i.0.report.json
+++ b/src/plugins/wp/tests/wp_acsl/reads.i.0.report.json
@@ -1,49 +1,43 @@
 { "wp:global": { "alt-ergo": { "total": 4, "valid": 2, "unknown": 2,
-                               "rank": 5 },
+                               "rank": 6 },
                  "qed": { "total": 3, "valid": 3 },
                  "wp:main": { "total": 7, "valid": 5, "unknown": 2,
-                              "rank": 5 } },
-  "wp:functions": { "f": { "f_post_qed_ok": { "alt-ergo": { "total": 1,
-                                                            "valid": 1,
-                                                            "rank": 3 },
-                                              "wp:main": { "total": 1,
-                                                           "valid": 1,
-                                                           "rank": 3 } },
+                              "rank": 6 } },
+  "wp:functions": { "f": { "f_ensures_qed_ok": { "alt-ergo": { "total": 1,
+                                                               "valid": 1,
+                                                               "rank": 4 },
+                                                 "wp:main": { "total": 1,
+                                                              "valid": 1,
+                                                              "rank": 4 } },
                            "wp:section": { "alt-ergo": { "total": 1,
                                                          "valid": 1,
-                                                         "rank": 3 },
+                                                         "rank": 4 },
                                            "wp:main": { "total": 1,
                                                         "valid": 1,
-                                                        "rank": 3 } } },
-                    "g": { "g_post_qed_ok": { "alt-ergo": { "total": 1,
-                                                            "valid": 1,
-                                                            "rank": 5 },
-                                              "wp:main": { "total": 1,
-                                                           "valid": 1,
-                                                           "rank": 5 } },
+                                                        "rank": 4 } } },
+                    "g": { "g_ensures_qed_ok": { "alt-ergo": { "total": 1,
+                                                               "valid": 1,
+                                                               "rank": 6 },
+                                                 "wp:main": { "total": 1,
+                                                              "valid": 1,
+                                                              "rank": 6 } },
                            "wp:section": { "alt-ergo": { "total": 1,
                                                          "valid": 1,
-                                                         "rank": 5 },
+                                                         "rank": 6 },
                                            "wp:main": { "total": 1,
                                                         "valid": 1,
-                                                        "rank": 5 } } },
-                    "modifies_y": { "modifies_y_post_qed_ok_W_OK_todo": 
+                                                        "rank": 6 } } },
+                    "modifies_y": { "modifies_y_ensures_qed_ok_W_OK_todo": 
                                       { "alt-ergo": { "total": 1,
                                                       "unknown": 1 },
                                         "wp:main": { "total": 1,
                                                      "unknown": 1 } },
-                                    "modifies_y_post_qed_ok_G_OK": { "qed": 
-                                                                    { "total": 1,
-                                                                    "valid": 1 },
-                                                                    "wp:main": 
-                                                                    { "total": 1,
-                                                                    "valid": 1 } },
-                                    "modifies_y_post_qed_ok_F_OK": { "qed": 
-                                                                    { "total": 1,
-                                                                    "valid": 1 },
-                                                                    "wp:main": 
-                                                                    { "total": 1,
-                                                                    "valid": 1 } },
+                                    "modifies_y_ensures_qed_ok_G_OK": 
+                                      { "qed": { "total": 1, "valid": 1 },
+                                        "wp:main": { "total": 1, "valid": 1 } },
+                                    "modifies_y_ensures_qed_ok_F_OK": 
+                                      { "qed": { "total": 1, "valid": 1 },
+                                        "wp:main": { "total": 1, "valid": 1 } },
                                     "wp:section": { "alt-ergo": { "total": 1,
                                                                   "unknown": 1 },
                                                     "qed": { "total": 2,
@@ -51,17 +45,14 @@
                                                     "wp:main": { "total": 3,
                                                                  "valid": 2,
                                                                  "unknown": 1 } } },
-                    "modifies_x": { "modifies_x_post_qed_ok_W_OK_todo": 
+                    "modifies_x": { "modifies_x_ensures_qed_ok_W_OK_todo": 
                                       { "alt-ergo": { "total": 1,
                                                       "unknown": 1 },
                                         "wp:main": { "total": 1,
                                                      "unknown": 1 } },
-                                    "modifies_x_post_qed_ok_F_OK": { "qed": 
-                                                                    { "total": 1,
-                                                                    "valid": 1 },
-                                                                    "wp:main": 
-                                                                    { "total": 1,
-                                                                    "valid": 1 } },
+                                    "modifies_x_ensures_qed_ok_F_OK": 
+                                      { "qed": { "total": 1, "valid": 1 },
+                                        "wp:main": { "total": 1, "valid": 1 } },
                                     "wp:section": { "alt-ergo": { "total": 1,
                                                                   "unknown": 1 },
                                                     "qed": { "total": 1,
diff --git a/src/plugins/wp/tests/wp_acsl/reads.i.1.report.json b/src/plugins/wp/tests/wp_acsl/reads.i.1.report.json
index f4ac0417345e052a2ad213c9e4446977997fd652..f145905f3f1bb235dd361b41335a53c980721505 100644
--- a/src/plugins/wp/tests/wp_acsl/reads.i.1.report.json
+++ b/src/plugins/wp/tests/wp_acsl/reads.i.1.report.json
@@ -1,27 +1,24 @@
 { "wp:global": { "alt-ergo": { "total": 3, "unknown": 3 },
                  "wp:main": { "total": 3, "unknown": 3 } },
-  "wp:functions": { "modifies_y": { "modifies_y_post_qed_ko_H_KO": { "alt-ergo": 
-                                                                    { "total": 1,
-                                                                    "unknown": 1 },
-                                                                    "wp:main": 
-                                                                    { "total": 1,
-                                                                    "unknown": 1 } },
+  "wp:functions": { "modifies_y": { "modifies_y_ensures_qed_ko_H_KO": 
+                                      { "alt-ergo": { "total": 1,
+                                                      "unknown": 1 },
+                                        "wp:main": { "total": 1,
+                                                     "unknown": 1 } },
                                     "wp:section": { "alt-ergo": { "total": 1,
                                                                   "unknown": 1 },
                                                     "wp:main": { "total": 1,
                                                                  "unknown": 1 } } },
-                    "modifies_x": { "modifies_x_post_qed_ko_H_KO": { "alt-ergo": 
-                                                                    { "total": 1,
-                                                                    "unknown": 1 },
-                                                                    "wp:main": 
-                                                                    { "total": 1,
-                                                                    "unknown": 1 } },
-                                    "modifies_x_post_qed_ko_G_KO": { "alt-ergo": 
-                                                                    { "total": 1,
-                                                                    "unknown": 1 },
-                                                                    "wp:main": 
-                                                                    { "total": 1,
-                                                                    "unknown": 1 } },
+                    "modifies_x": { "modifies_x_ensures_qed_ko_H_KO": 
+                                      { "alt-ergo": { "total": 1,
+                                                      "unknown": 1 },
+                                        "wp:main": { "total": 1,
+                                                     "unknown": 1 } },
+                                    "modifies_x_ensures_qed_ko_G_KO": 
+                                      { "alt-ergo": { "total": 1,
+                                                      "unknown": 1 },
+                                        "wp:main": { "total": 1,
+                                                     "unknown": 1 } },
                                     "wp:section": { "alt-ergo": { "total": 2,
                                                                   "unknown": 2 },
                                                     "wp:main": { "total": 2,
diff --git a/src/plugins/wp/tests/wp_acsl/record.i.0.report.json b/src/plugins/wp/tests/wp_acsl/record.i.0.report.json
index 9088827e1204b21214c522863bc94621babe2eda..9b9a9693c3054b91ddd8401b4698d45450a429da 100644
--- a/src/plugins/wp/tests/wp_acsl/record.i.0.report.json
+++ b/src/plugins/wp/tests/wp_acsl/record.i.0.report.json
@@ -1,58 +1,58 @@
-{ "wp:global": { "alt-ergo": { "total": 2, "valid": 2, "rank": 3 },
+{ "wp:global": { "alt-ergo": { "total": 2, "valid": 2, "rank": 4 },
                  "qed": { "total": 9, "valid": 9 },
-                 "wp:main": { "total": 11, "valid": 11, "rank": 3 } },
-  "wp:functions": { "f": { "f_post_P5_qed_ok": { "qed": { "total": 1,
-                                                          "valid": 1 },
-                                                 "wp:main": { "total": 1,
-                                                              "valid": 1 } },
-                           "f_post_P4_qed_ok": { "qed": { "total": 1,
-                                                          "valid": 1 },
-                                                 "wp:main": { "total": 1,
-                                                              "valid": 1 } },
-                           "f_post_P3_qed_ok": { "qed": { "total": 1,
-                                                          "valid": 1 },
-                                                 "wp:main": { "total": 1,
-                                                              "valid": 1 } },
-                           "f_post_P2_qed_ok": { "alt-ergo": { "total": 1,
-                                                               "valid": 1,
-                                                               "rank": 3 },
-                                                 "wp:main": { "total": 1,
-                                                              "valid": 1,
-                                                              "rank": 3 } },
-                           "f_post_P1_qed_ok": { "qed": { "total": 1,
-                                                          "valid": 1 },
-                                                 "wp:main": { "total": 1,
-                                                              "valid": 1 } },
-                           "f_post_M6_qed_ok": { "qed": { "total": 1,
-                                                          "valid": 1 },
-                                                 "wp:main": { "total": 1,
-                                                              "valid": 1 } },
-                           "f_post_M5_qed_ok": { "qed": { "total": 1,
-                                                          "valid": 1 },
-                                                 "wp:main": { "total": 1,
-                                                              "valid": 1 } },
-                           "f_post_M4_qed_ok": { "qed": { "total": 1,
-                                                          "valid": 1 },
-                                                 "wp:main": { "total": 1,
-                                                              "valid": 1 } },
-                           "f_post_M3_qed_ok": { "qed": { "total": 1,
-                                                          "valid": 1 },
-                                                 "wp:main": { "total": 1,
-                                                              "valid": 1 } },
-                           "f_post_M2_qed_ok": { "qed": { "total": 1,
-                                                          "valid": 1 },
-                                                 "wp:main": { "total": 1,
-                                                              "valid": 1 } },
-                           "f_post_M1_qed_ok": { "alt-ergo": { "total": 1,
-                                                               "valid": 1,
-                                                               "rank": 3 },
-                                                 "wp:main": { "total": 1,
-                                                              "valid": 1,
-                                                              "rank": 3 } },
+                 "wp:main": { "total": 11, "valid": 11, "rank": 4 } },
+  "wp:functions": { "f": { "f_ensures_P5_qed_ok": { "qed": { "total": 1,
+                                                             "valid": 1 },
+                                                    "wp:main": { "total": 1,
+                                                                 "valid": 1 } },
+                           "f_ensures_P4_qed_ok": { "qed": { "total": 1,
+                                                             "valid": 1 },
+                                                    "wp:main": { "total": 1,
+                                                                 "valid": 1 } },
+                           "f_ensures_P3_qed_ok": { "qed": { "total": 1,
+                                                             "valid": 1 },
+                                                    "wp:main": { "total": 1,
+                                                                 "valid": 1 } },
+                           "f_ensures_P2_qed_ok": { "alt-ergo": { "total": 1,
+                                                                  "valid": 1,
+                                                                  "rank": 4 },
+                                                    "wp:main": { "total": 1,
+                                                                 "valid": 1,
+                                                                 "rank": 4 } },
+                           "f_ensures_P1_qed_ok": { "qed": { "total": 1,
+                                                             "valid": 1 },
+                                                    "wp:main": { "total": 1,
+                                                                 "valid": 1 } },
+                           "f_ensures_M6_qed_ok": { "qed": { "total": 1,
+                                                             "valid": 1 },
+                                                    "wp:main": { "total": 1,
+                                                                 "valid": 1 } },
+                           "f_ensures_M5_qed_ok": { "qed": { "total": 1,
+                                                             "valid": 1 },
+                                                    "wp:main": { "total": 1,
+                                                                 "valid": 1 } },
+                           "f_ensures_M4_qed_ok": { "qed": { "total": 1,
+                                                             "valid": 1 },
+                                                    "wp:main": { "total": 1,
+                                                                 "valid": 1 } },
+                           "f_ensures_M3_qed_ok": { "qed": { "total": 1,
+                                                             "valid": 1 },
+                                                    "wp:main": { "total": 1,
+                                                                 "valid": 1 } },
+                           "f_ensures_M2_qed_ok": { "qed": { "total": 1,
+                                                             "valid": 1 },
+                                                    "wp:main": { "total": 1,
+                                                                 "valid": 1 } },
+                           "f_ensures_M1_qed_ok": { "alt-ergo": { "total": 1,
+                                                                  "valid": 1,
+                                                                  "rank": 3 },
+                                                    "wp:main": { "total": 1,
+                                                                 "valid": 1,
+                                                                 "rank": 3 } },
                            "wp:section": { "alt-ergo": { "total": 2,
                                                          "valid": 2,
-                                                         "rank": 3 },
+                                                         "rank": 4 },
                                            "qed": { "total": 9, "valid": 9 },
                                            "wp:main": { "total": 11,
                                                         "valid": 11,
-                                                        "rank": 3 } } } } }
+                                                        "rank": 4 } } } } }
diff --git a/src/plugins/wp/tests/wp_acsl/record.i.1.report.json b/src/plugins/wp/tests/wp_acsl/record.i.1.report.json
index cb6c705d66e39d531179b6c6e67dfc466d62534d..51e5dfebbb711da48275cf971ae5002909811134 100644
--- a/src/plugins/wp/tests/wp_acsl/record.i.1.report.json
+++ b/src/plugins/wp/tests/wp_acsl/record.i.1.report.json
@@ -1,9 +1,9 @@
 { "wp:global": { "alt-ergo": { "total": 1, "unknown": 1 },
                  "wp:main": { "total": 1, "unknown": 1 } },
-  "wp:functions": { "f": { "f_post_KP5_qed_ko": { "alt-ergo": { "total": 1,
-                                                                "unknown": 1 },
-                                                  "wp:main": { "total": 1,
-                                                               "unknown": 1 } },
+  "wp:functions": { "f": { "f_ensures_KP5_qed_ko": { "alt-ergo": { "total": 1,
+                                                                   "unknown": 1 },
+                                                     "wp:main": { "total": 1,
+                                                                  "unknown": 1 } },
                            "wp:section": { "alt-ergo": { "total": 1,
                                                          "unknown": 1 },
                                            "wp:main": { "total": 1,
diff --git a/src/plugins/wp/tests/wp_acsl/simpl_is_type.i.0.report.json b/src/plugins/wp/tests/wp_acsl/simpl_is_type.i.0.report.json
index d38e69542c69f1b4a84bb4639d1e59834a9094f5..d07adcf774b224f941c13beee90765584afdb8a1 100644
--- a/src/plugins/wp/tests/wp_acsl/simpl_is_type.i.0.report.json
+++ b/src/plugins/wp/tests/wp_acsl/simpl_is_type.i.0.report.json
@@ -1,39 +1,42 @@
 { "wp:global": { "alt-ergo": { "total": 9, "valid": 9, "rank": 20 },
                  "qed": { "total": 6, "valid": 6 },
                  "wp:main": { "total": 15, "valid": 15, "rank": 20 } },
-  "wp:functions": { "f": { "f_loop_inv_3": { "alt-ergo": { "total": 2,
-                                                           "valid": 2,
-                                                           "rank": 20 },
-                                             "wp:main": { "total": 2,
-                                                          "valid": 2,
-                                                          "rank": 20 } },
-                           "f_loop_inv_2": { "alt-ergo": { "total": 1,
-                                                           "valid": 1,
-                                                           "rank": 14 },
-                                             "qed": { "total": 1,
-                                                      "valid": 1 },
-                                             "wp:main": { "total": 2,
-                                                          "valid": 2,
-                                                          "rank": 14 } },
-                           "f_loop_inv": { "alt-ergo": { "total": 1,
-                                                         "valid": 1,
-                                                         "rank": 4 },
-                                           "qed": { "total": 1, "valid": 1 },
-                                           "wp:main": { "total": 2,
-                                                        "valid": 2,
-                                                        "rank": 4 } },
-                           "f_loop_assign": { "alt-ergo": { "total": 1,
-                                                            "valid": 1,
-                                                            "rank": 19 },
-                                              "qed": { "total": 1,
-                                                       "valid": 1 },
-                                              "wp:main": { "total": 2,
-                                                           "valid": 2,
-                                                           "rank": 19 } },
-                           "f_post": { "alt-ergo": { "total": 1, "valid": 1,
-                                                     "rank": 5 },
-                                       "wp:main": { "total": 1, "valid": 1,
-                                                    "rank": 5 } },
+  "wp:functions": { "f": { "f_loop_invariant_3": { "alt-ergo": { "total": 2,
+                                                                 "valid": 2,
+                                                                 "rank": 20 },
+                                                   "wp:main": { "total": 2,
+                                                                "valid": 2,
+                                                                "rank": 20 } },
+                           "f_loop_invariant_2": { "alt-ergo": { "total": 1,
+                                                                 "valid": 1,
+                                                                 "rank": 15 },
+                                                   "qed": { "total": 1,
+                                                            "valid": 1 },
+                                                   "wp:main": { "total": 2,
+                                                                "valid": 2,
+                                                                "rank": 15 } },
+                           "f_loop_invariant": { "alt-ergo": { "total": 1,
+                                                               "valid": 1,
+                                                               "rank": 4 },
+                                                 "qed": { "total": 1,
+                                                          "valid": 1 },
+                                                 "wp:main": { "total": 2,
+                                                              "valid": 2,
+                                                              "rank": 4 } },
+                           "f_loop_assigns": { "alt-ergo": { "total": 1,
+                                                             "valid": 1,
+                                                             "rank": 19 },
+                                               "qed": { "total": 1,
+                                                        "valid": 1 },
+                                               "wp:main": { "total": 2,
+                                                            "valid": 2,
+                                                            "rank": 19 } },
+                           "f_ensures": { "alt-ergo": { "total": 1,
+                                                        "valid": 1,
+                                                        "rank": 6 },
+                                          "wp:main": { "total": 1,
+                                                       "valid": 1,
+                                                       "rank": 6 } },
                            "wp:section": { "alt-ergo": { "total": 6,
                                                          "valid": 6,
                                                          "rank": 20 },
@@ -41,33 +44,36 @@
                                            "wp:main": { "total": 9,
                                                         "valid": 9,
                                                         "rank": 20 } } },
-                    "g": { "g_loop_inv_2": { "alt-ergo": { "total": 1,
-                                                           "valid": 1,
-                                                           "rank": 9 },
-                                             "qed": { "total": 1,
-                                                      "valid": 1 },
-                                             "wp:main": { "total": 2,
-                                                          "valid": 2,
-                                                          "rank": 9 } },
-                           "g_loop_inv": { "alt-ergo": { "total": 1,
-                                                         "valid": 1,
-                                                         "rank": 4 },
-                                           "qed": { "total": 1, "valid": 1 },
-                                           "wp:main": { "total": 2,
-                                                        "valid": 2,
-                                                        "rank": 4 } },
-                           "g_loop_assign": { "qed": { "total": 1,
-                                                       "valid": 1 },
-                                              "wp:main": { "total": 1,
-                                                           "valid": 1 } },
-                           "g_post": { "alt-ergo": { "total": 1, "valid": 1,
-                                                     "rank": 6 },
-                                       "wp:main": { "total": 1, "valid": 1,
-                                                    "rank": 6 } },
+                    "g": { "g_loop_invariant_2": { "alt-ergo": { "total": 1,
+                                                                 "valid": 1,
+                                                                 "rank": 9 },
+                                                   "qed": { "total": 1,
+                                                            "valid": 1 },
+                                                   "wp:main": { "total": 2,
+                                                                "valid": 2,
+                                                                "rank": 9 } },
+                           "g_loop_invariant": { "alt-ergo": { "total": 1,
+                                                               "valid": 1,
+                                                               "rank": 4 },
+                                                 "qed": { "total": 1,
+                                                          "valid": 1 },
+                                                 "wp:main": { "total": 2,
+                                                              "valid": 2,
+                                                              "rank": 4 } },
+                           "g_loop_assigns": { "qed": { "total": 1,
+                                                        "valid": 1 },
+                                               "wp:main": { "total": 1,
+                                                            "valid": 1 } },
+                           "g_ensures": { "alt-ergo": { "total": 1,
+                                                        "valid": 1,
+                                                        "rank": 7 },
+                                          "wp:main": { "total": 1,
+                                                       "valid": 1,
+                                                       "rank": 7 } },
                            "wp:section": { "alt-ergo": { "total": 3,
                                                          "valid": 3,
-                                                         "rank": 9 },
+                                                         "rank": 10 },
                                            "qed": { "total": 3, "valid": 3 },
                                            "wp:main": { "total": 6,
                                                         "valid": 6,
-                                                        "rank": 9 } } } } }
+                                                        "rank": 10 } } } } }
diff --git a/src/plugins/wp/tests/wp_acsl/struct_use_case.i.0.report.json b/src/plugins/wp/tests/wp_acsl/struct_use_case.i.0.report.json
index 9c63f9c8cb36650f0966a0ebfa79d7cb96b2383e..aaae37ff8f878420384af3259e3bfb78d22109dd 100644
--- a/src/plugins/wp/tests/wp_acsl/struct_use_case.i.0.report.json
+++ b/src/plugins/wp/tests/wp_acsl/struct_use_case.i.0.report.json
@@ -1,21 +1,22 @@
-{ "wp:global": { "alt-ergo": { "total": 1, "valid": 1, "rank": 4 },
+{ "wp:global": { "alt-ergo": { "total": 1, "valid": 1, "rank": 5 },
                  "qed": { "total": 1, "valid": 1 },
-                 "wp:main": { "total": 2, "valid": 2, "rank": 4 } },
-  "wp:functions": { "f": { "f_post_ok": { "alt-ergo": { "total": 1,
-                                                        "valid": 1,
-                                                        "rank": 4 },
-                                          "wp:main": { "total": 1,
-                                                       "valid": 1,
-                                                       "rank": 4 } },
+                 "wp:main": { "total": 2, "valid": 2, "rank": 5 } },
+  "wp:functions": { "f": { "f_ensures_ok": { "alt-ergo": { "total": 1,
+                                                           "valid": 1,
+                                                           "rank": 5 },
+                                             "wp:main": { "total": 1,
+                                                          "valid": 1,
+                                                          "rank": 5 } },
                            "wp:section": { "alt-ergo": { "total": 1,
                                                          "valid": 1,
-                                                         "rank": 4 },
+                                                         "rank": 5 },
                                            "wp:main": { "total": 1,
                                                         "valid": 1,
-                                                        "rank": 4 } } },
-                    "g": { "g_post_ok": { "qed": { "total": 1, "valid": 1 },
-                                          "wp:main": { "total": 1,
-                                                       "valid": 1 } },
+                                                        "rank": 5 } } },
+                    "g": { "g_ensures_ok": { "qed": { "total": 1,
+                                                      "valid": 1 },
+                                             "wp:main": { "total": 1,
+                                                          "valid": 1 } },
                            "wp:section": { "qed": { "total": 1, "valid": 1 },
                                            "wp:main": { "total": 1,
                                                         "valid": 1 } } } } }
diff --git a/src/plugins/wp/tests/wp_acsl/struct_use_case.i.1.report.json b/src/plugins/wp/tests/wp_acsl/struct_use_case.i.1.report.json
index 94840d490cdf280942961010b08c1ce7db56ac7b..6b4d6768aebd25c56a7bf0771169de61d601e9ff 100644
--- a/src/plugins/wp/tests/wp_acsl/struct_use_case.i.1.report.json
+++ b/src/plugins/wp/tests/wp_acsl/struct_use_case.i.1.report.json
@@ -1,17 +1,17 @@
 { "wp:global": { "alt-ergo": { "total": 2, "unknown": 2 },
                  "wp:main": { "total": 2, "unknown": 2 } },
-  "wp:functions": { "f": { "f_post_ko": { "alt-ergo": { "total": 1,
-                                                        "unknown": 1 },
-                                          "wp:main": { "total": 1,
-                                                       "unknown": 1 } },
+  "wp:functions": { "f": { "f_ensures_ko": { "alt-ergo": { "total": 1,
+                                                           "unknown": 1 },
+                                             "wp:main": { "total": 1,
+                                                          "unknown": 1 } },
                            "wp:section": { "alt-ergo": { "total": 1,
                                                          "unknown": 1 },
                                            "wp:main": { "total": 1,
                                                         "unknown": 1 } } },
-                    "g": { "g_post_ko": { "alt-ergo": { "total": 1,
-                                                        "unknown": 1 },
-                                          "wp:main": { "total": 1,
-                                                       "unknown": 1 } },
+                    "g": { "g_ensures_ko": { "alt-ergo": { "total": 1,
+                                                           "unknown": 1 },
+                                             "wp:main": { "total": 1,
+                                                          "unknown": 1 } },
                            "wp:section": { "alt-ergo": { "total": 1,
                                                          "unknown": 1 },
                                            "wp:main": { "total": 1,
diff --git a/src/plugins/wp/tests/wp_acsl/type_guard.i.0.report.json b/src/plugins/wp/tests/wp_acsl/type_guard.i.0.report.json
index fb064203528e5eee25162196cbba807898464150..0618799784165be7c5a9c17185f4d7324684eaef 100644
--- a/src/plugins/wp/tests/wp_acsl/type_guard.i.0.report.json
+++ b/src/plugins/wp/tests/wp_acsl/type_guard.i.0.report.json
@@ -1,11 +1,11 @@
 { "wp:global": { "alt-ergo": { "total": 1, "valid": 1, "rank": 4 },
                  "wp:main": { "total": 1, "valid": 1, "rank": 4 } },
-  "wp:functions": { "f": { "f_post_qed_ok": { "alt-ergo": { "total": 1,
-                                                            "valid": 1,
-                                                            "rank": 4 },
-                                              "wp:main": { "total": 1,
-                                                           "valid": 1,
-                                                           "rank": 4 } },
+  "wp:functions": { "f": { "f_ensures_qed_ok": { "alt-ergo": { "total": 1,
+                                                               "valid": 1,
+                                                               "rank": 4 },
+                                                 "wp:main": { "total": 1,
+                                                              "valid": 1,
+                                                              "rank": 4 } },
                            "wp:section": { "alt-ergo": { "total": 1,
                                                          "valid": 1,
                                                          "rank": 4 },
diff --git a/src/plugins/wp/tests/wp_acsl/type_guard.i.1.report.json b/src/plugins/wp/tests/wp_acsl/type_guard.i.1.report.json
index 4610ea6500e483923af7be7db0f4a28e975cc4b2..2bc163cf605feecdbd36d9f76487a13ff5787b88 100644
--- a/src/plugins/wp/tests/wp_acsl/type_guard.i.1.report.json
+++ b/src/plugins/wp/tests/wp_acsl/type_guard.i.1.report.json
@@ -1,9 +1,9 @@
 { "wp:global": { "alt-ergo": { "total": 1, "unknown": 1 },
                  "wp:main": { "total": 1, "unknown": 1 } },
-  "wp:functions": { "f": { "f_post_qed_ko": { "alt-ergo": { "total": 1,
-                                                            "unknown": 1 },
-                                              "wp:main": { "total": 1,
-                                                           "unknown": 1 } },
+  "wp:functions": { "f": { "f_ensures_qed_ko": { "alt-ergo": { "total": 1,
+                                                               "unknown": 1 },
+                                                 "wp:main": { "total": 1,
+                                                              "unknown": 1 } },
                            "wp:section": { "alt-ergo": { "total": 1,
                                                          "unknown": 1 },
                                            "wp:main": { "total": 1,
diff --git a/src/plugins/wp/tests/wp_acsl/unit_bit_test.c.0.report.json b/src/plugins/wp/tests/wp_acsl/unit_bit_test.c.0.report.json
index 4cfd17d42d781fa75239484b5f21aef5f83682e6..6c8cdc3f855be7fa51140fe38517e7171e44eb05 100644
--- a/src/plugins/wp/tests/wp_acsl/unit_bit_test.c.0.report.json
+++ b/src/plugins/wp/tests/wp_acsl/unit_bit_test.c.0.report.json
@@ -1,16 +1,16 @@
 { "wp:global": { "alt-ergo": { "total": 2, "valid": 1, "unknown": 1,
-                               "rank": 12 },
+                               "rank": 13 },
                  "qed": { "total": 2, "valid": 2 },
                  "wp:main": { "total": 4, "valid": 3, "unknown": 1,
-                              "rank": 12 } },
-  "wp:functions": { "sum": { "sum_post_ko": { "alt-ergo": { "total": 1,
-                                                            "unknown": 1 },
-                                              "wp:main": { "total": 1,
-                                                           "unknown": 1 } },
-                             "sum_post_ok": { "qed": { "total": 1,
-                                                       "valid": 1 },
-                                              "wp:main": { "total": 1,
-                                                           "valid": 1 } },
+                              "rank": 13 } },
+  "wp:functions": { "sum": { "sum_ensures_ko": { "alt-ergo": { "total": 1,
+                                                               "unknown": 1 },
+                                                 "wp:main": { "total": 1,
+                                                              "unknown": 1 } },
+                             "sum_ensures_ok": { "qed": { "total": 1,
+                                                          "valid": 1 },
+                                                 "wp:main": { "total": 1,
+                                                              "valid": 1 } },
                              "wp:section": { "alt-ergo": { "total": 1,
                                                            "unknown": 1 },
                                              "qed": { "total": 1,
@@ -18,25 +18,21 @@
                                              "wp:main": { "total": 2,
                                                           "valid": 1,
                                                           "unknown": 1 } } },
-                    "rotate_left": { "rotate_left_post_other_bits": { "alt-ergo": 
-                                                                    { "total": 1,
-                                                                    "valid": 1,
-                                                                    "rank": 12 },
-                                                                    "wp:main": 
-                                                                    { "total": 1,
-                                                                    "valid": 1,
-                                                                    "rank": 12 } },
-                                     "rotate_left_post_bit_zero": { "qed": 
-                                                                    { "total": 1,
-                                                                    "valid": 1 },
-                                                                    "wp:main": 
-                                                                    { "total": 1,
-                                                                    "valid": 1 } },
+                    "rotate_left": { "rotate_left_ensures_other_bits": 
+                                       { "alt-ergo": { "total": 1,
+                                                       "valid": 1,
+                                                       "rank": 13 },
+                                         "wp:main": { "total": 1, "valid": 1,
+                                                      "rank": 13 } },
+                                     "rotate_left_ensures_bit_zero": 
+                                       { "qed": { "total": 1, "valid": 1 },
+                                         "wp:main": { "total": 1,
+                                                      "valid": 1 } },
                                      "wp:section": { "alt-ergo": { "total": 1,
                                                                    "valid": 1,
-                                                                   "rank": 12 },
+                                                                   "rank": 13 },
                                                      "qed": { "total": 1,
                                                               "valid": 1 },
                                                      "wp:main": { "total": 2,
                                                                   "valid": 2,
-                                                                  "rank": 12 } } } } }
+                                                                  "rank": 13 } } } } }
diff --git a/src/plugins/wp/tests/wp_acsl/user_def_type_guard.i.0.report.json b/src/plugins/wp/tests/wp_acsl/user_def_type_guard.i.0.report.json
index fb064203528e5eee25162196cbba807898464150..0618799784165be7c5a9c17185f4d7324684eaef 100644
--- a/src/plugins/wp/tests/wp_acsl/user_def_type_guard.i.0.report.json
+++ b/src/plugins/wp/tests/wp_acsl/user_def_type_guard.i.0.report.json
@@ -1,11 +1,11 @@
 { "wp:global": { "alt-ergo": { "total": 1, "valid": 1, "rank": 4 },
                  "wp:main": { "total": 1, "valid": 1, "rank": 4 } },
-  "wp:functions": { "f": { "f_post_qed_ok": { "alt-ergo": { "total": 1,
-                                                            "valid": 1,
-                                                            "rank": 4 },
-                                              "wp:main": { "total": 1,
-                                                           "valid": 1,
-                                                           "rank": 4 } },
+  "wp:functions": { "f": { "f_ensures_qed_ok": { "alt-ergo": { "total": 1,
+                                                               "valid": 1,
+                                                               "rank": 4 },
+                                                 "wp:main": { "total": 1,
+                                                              "valid": 1,
+                                                              "rank": 4 } },
                            "wp:section": { "alt-ergo": { "total": 1,
                                                          "valid": 1,
                                                          "rank": 4 },
diff --git a/src/plugins/wp/tests/wp_acsl/user_def_type_guard.i.1.report.json b/src/plugins/wp/tests/wp_acsl/user_def_type_guard.i.1.report.json
index 4610ea6500e483923af7be7db0f4a28e975cc4b2..2bc163cf605feecdbd36d9f76487a13ff5787b88 100644
--- a/src/plugins/wp/tests/wp_acsl/user_def_type_guard.i.1.report.json
+++ b/src/plugins/wp/tests/wp_acsl/user_def_type_guard.i.1.report.json
@@ -1,9 +1,9 @@
 { "wp:global": { "alt-ergo": { "total": 1, "unknown": 1 },
                  "wp:main": { "total": 1, "unknown": 1 } },
-  "wp:functions": { "f": { "f_post_qed_ko": { "alt-ergo": { "total": 1,
-                                                            "unknown": 1 },
-                                              "wp:main": { "total": 1,
-                                                           "unknown": 1 } },
+  "wp:functions": { "f": { "f_ensures_qed_ko": { "alt-ergo": { "total": 1,
+                                                               "unknown": 1 },
+                                                 "wp:main": { "total": 1,
+                                                              "unknown": 1 } },
                            "wp:section": { "alt-ergo": { "total": 1,
                                                          "unknown": 1 },
                                            "wp:main": { "total": 1,
diff --git a/src/plugins/wp/tests/wp_bts/bts0708.i.0.report.json b/src/plugins/wp/tests/wp_bts/bts0708.i.0.report.json
index 27c215485f0ca0b5e26cf2faf090f5fe7d6203ed..9b21c57e6764f83c8106e8bdcba457980dd363e9 100644
--- a/src/plugins/wp/tests/wp_bts/bts0708.i.0.report.json
+++ b/src/plugins/wp/tests/wp_bts/bts0708.i.0.report.json
@@ -1,15 +1,17 @@
 { "wp:global": { "alt-ergo": { "total": 2, "valid": 2, "rank": 2 },
                  "wp:main": { "total": 2, "valid": 2, "rank": 2 } },
-  "wp:functions": { "f": { "f_post_B": { "alt-ergo": { "total": 1,
-                                                       "valid": 1,
-                                                       "rank": 2 },
-                                         "wp:main": { "total": 1, "valid": 1,
-                                                      "rank": 2 } },
-                           "f_post_A": { "alt-ergo": { "total": 1,
-                                                       "valid": 1,
-                                                       "rank": 2 },
-                                         "wp:main": { "total": 1, "valid": 1,
-                                                      "rank": 2 } },
+  "wp:functions": { "f": { "f_ensures_B": { "alt-ergo": { "total": 1,
+                                                          "valid": 1,
+                                                          "rank": 2 },
+                                            "wp:main": { "total": 1,
+                                                         "valid": 1,
+                                                         "rank": 2 } },
+                           "f_ensures_A": { "alt-ergo": { "total": 1,
+                                                          "valid": 1,
+                                                          "rank": 2 },
+                                            "wp:main": { "total": 1,
+                                                         "valid": 1,
+                                                         "rank": 2 } },
                            "wp:section": { "alt-ergo": { "total": 2,
                                                          "valid": 2,
                                                          "rank": 2 },
diff --git a/src/plugins/wp/tests/wp_bts/bts0843.i.0.report.json b/src/plugins/wp/tests/wp_bts/bts0843.i.0.report.json
index 98fac150243c88f138f6b09847411550ae262f18..f84577519767591971bbc20da35fe4f852aae130 100644
--- a/src/plugins/wp/tests/wp_bts/bts0843.i.0.report.json
+++ b/src/plugins/wp/tests/wp_bts/bts0843.i.0.report.json
@@ -1,24 +1,22 @@
 { "wp:global": { "alt-ergo": { "total": 2, "valid": 2, "rank": 3 },
                  "qed": { "total": 2, "valid": 2 },
                  "wp:main": { "total": 4, "valid": 4, "rank": 3 } },
-  "wp:functions": { "f3": { "f3_assign": { "qed": { "total": 1, "valid": 1 },
-                                           "wp:main": { "total": 1,
-                                                        "valid": 1 } },
+  "wp:functions": { "f3": { "f3_assigns": { "qed": { "total": 1, "valid": 1 },
+                                            "wp:main": { "total": 1,
+                                                         "valid": 1 } },
                             "wp:section": { "qed": { "total": 1, "valid": 1 },
                                             "wp:main": { "total": 1,
                                                          "valid": 1 } } },
-                    "g3": { "specialization_f3_pre_at_g3_stmt_4": { "qed": 
-                                                                    { "total": 1,
-                                                                    "valid": 1 },
-                                                                    "wp:main": 
-                                                                    { "total": 1,
-                                                                    "valid": 1 } },
-                            "g3_assign": { "alt-ergo": { "total": 2,
+                    "g3": { "f3_requires": { "qed": { "total": 1,
+                                                      "valid": 1 },
+                                             "wp:main": { "total": 1,
+                                                          "valid": 1 } },
+                            "g3_assigns": { "alt-ergo": { "total": 2,
+                                                          "valid": 2,
+                                                          "rank": 3 },
+                                            "wp:main": { "total": 2,
                                                          "valid": 2,
-                                                         "rank": 3 },
-                                           "wp:main": { "total": 2,
-                                                        "valid": 2,
-                                                        "rank": 3 } },
+                                                         "rank": 3 } },
                             "wp:section": { "alt-ergo": { "total": 2,
                                                           "valid": 2,
                                                           "rank": 3 },
diff --git a/src/plugins/wp/tests/wp_bts/bts788.i.0.report.json b/src/plugins/wp/tests/wp_bts/bts788.i.0.report.json
index 88377a5be5690138764ea88265c25891193ad7c0..b18ac612571ac4ffa33fa11a0c96b7265de6be08 100644
--- a/src/plugins/wp/tests/wp_bts/bts788.i.0.report.json
+++ b/src/plugins/wp/tests/wp_bts/bts788.i.0.report.json
@@ -1,22 +1,22 @@
 { "wp:global": { "alt-ergo": { "total": 2, "valid": 2, "rank": 3 },
                  "qed": { "total": 1, "valid": 1 },
                  "wp:main": { "total": 3, "valid": 3, "rank": 3 } },
-  "wp:functions": { "main": { "main_post_I2": { "alt-ergo": { "total": 1,
-                                                              "valid": 1,
-                                                              "rank": 3 },
-                                                "wp:main": { "total": 1,
-                                                             "valid": 1,
-                                                             "rank": 3 } },
-                              "main_post_I1": { "alt-ergo": { "total": 1,
-                                                              "valid": 1,
-                                                              "rank": 3 },
-                                                "wp:main": { "total": 1,
-                                                             "valid": 1,
-                                                             "rank": 3 } },
-                              "main_post_I0": { "qed": { "total": 1,
-                                                         "valid": 1 },
-                                                "wp:main": { "total": 1,
-                                                             "valid": 1 } },
+  "wp:functions": { "main": { "main_ensures_I2": { "alt-ergo": { "total": 1,
+                                                                 "valid": 1,
+                                                                 "rank": 3 },
+                                                   "wp:main": { "total": 1,
+                                                                "valid": 1,
+                                                                "rank": 3 } },
+                              "main_ensures_I1": { "alt-ergo": { "total": 1,
+                                                                 "valid": 1,
+                                                                 "rank": 3 },
+                                                   "wp:main": { "total": 1,
+                                                                "valid": 1,
+                                                                "rank": 3 } },
+                              "main_ensures_I0": { "qed": { "total": 1,
+                                                            "valid": 1 },
+                                                   "wp:main": { "total": 1,
+                                                                "valid": 1 } },
                               "wp:section": { "alt-ergo": { "total": 2,
                                                             "valid": 2,
                                                             "rank": 3 },
diff --git a/src/plugins/wp/tests/wp_bts/bts_1360.i.0.report.json b/src/plugins/wp/tests/wp_bts/bts_1360.i.0.report.json
index 6a79ffdefbfbe2beb018b7888d35cb07a7bf0f63..94487efbf272d7019456522624b242efb432604c 100644
--- a/src/plugins/wp/tests/wp_bts/bts_1360.i.0.report.json
+++ b/src/plugins/wp/tests/wp_bts/bts_1360.i.0.report.json
@@ -14,14 +14,16 @@
                                    "foo_wrong_assert_rte_mem_access": 
                                      { "qed": { "total": 1, "valid": 1 },
                                        "wp:main": { "total": 1, "valid": 1 } },
-                                   "foo_wrong_assign": { "qed": { "total": 1,
-                                                                  "valid": 1 },
-                                                         "wp:main": { "total": 1,
-                                                                    "valid": 1 } },
-                                   "foo_wrong_post": { "qed": { "total": 1,
-                                                                "valid": 1 },
-                                                       "wp:main": { "total": 1,
-                                                                    "valid": 1 } },
+                                   "foo_wrong_assigns": { "qed": { "total": 1,
+                                                                   "valid": 1 },
+                                                          "wp:main": 
+                                                            { "total": 1,
+                                                              "valid": 1 } },
+                                   "foo_wrong_ensures": { "qed": { "total": 1,
+                                                                   "valid": 1 },
+                                                          "wp:main": 
+                                                            { "total": 1,
+                                                              "valid": 1 } },
                                    "wp:section": { "alt-ergo": { "total": 1,
                                                                  "unknown": 1 },
                                                    "qed": { "total": 4,
@@ -43,16 +45,18 @@
                                                        "rank": 4 },
                                          "wp:main": { "total": 1, "valid": 1,
                                                       "rank": 4 } },
-                                     "foo_correct_assign": { "qed": { "total": 1,
-                                                                    "valid": 1 },
-                                                             "wp:main": 
-                                                               { "total": 1,
-                                                                 "valid": 1 } },
-                                     "foo_correct_post": { "qed": { "total": 1,
-                                                                    "valid": 1 },
-                                                           "wp:main": 
-                                                             { "total": 1,
-                                                               "valid": 1 } },
+                                     "foo_correct_assigns": { "qed": 
+                                                                { "total": 1,
+                                                                  "valid": 1 },
+                                                              "wp:main": 
+                                                                { "total": 1,
+                                                                  "valid": 1 } },
+                                     "foo_correct_ensures": { "qed": 
+                                                                { "total": 1,
+                                                                  "valid": 1 },
+                                                              "wp:main": 
+                                                                { "total": 1,
+                                                                  "valid": 1 } },
                                      "wp:section": { "alt-ergo": { "total": 1,
                                                                    "valid": 1,
                                                                    "rank": 4 },
diff --git a/src/plugins/wp/tests/wp_bts/bts_1462.i.0.report.json b/src/plugins/wp/tests/wp_bts/bts_1462.i.0.report.json
index b7594892d85855829ee677051fabf893258ee369..0719103e8bc1d5263f550516f702cf3c0b923272 100644
--- a/src/plugins/wp/tests/wp_bts/bts_1462.i.0.report.json
+++ b/src/plugins/wp/tests/wp_bts/bts_1462.i.0.report.json
@@ -8,21 +8,26 @@
                                                  "rank": 2 },
                                    "wp:main": { "total": 1, "valid": 1,
                                                 "rank": 2 } },
-                               "wrong_loop_inv_C": { "qed": { "total": 2,
-                                                              "valid": 2 },
-                                                     "wp:main": { "total": 2,
-                                                                  "valid": 2 } },
-                               "wrong_loop_inv_B": { "qed": { "total": 2,
-                                                              "valid": 2 },
-                                                     "wp:main": { "total": 2,
-                                                                  "valid": 2 } },
-                               "wrong_loop_inv_A_KO": { "alt-ergo": { "total": 1,
-                                                                    "unknown": 1 },
-                                                        "qed": { "total": 1,
-                                                                 "valid": 1 },
-                                                        "wp:main": { "total": 2,
-                                                                    "valid": 1,
-                                                                    "unknown": 1 } },
+                               "wrong_loop_invariant_C": { "qed": { "total": 2,
+                                                                    "valid": 2 },
+                                                           "wp:main": 
+                                                             { "total": 2,
+                                                               "valid": 2 } },
+                               "wrong_loop_invariant_B": { "qed": { "total": 2,
+                                                                    "valid": 2 },
+                                                           "wp:main": 
+                                                             { "total": 2,
+                                                               "valid": 2 } },
+                               "wrong_loop_invariant_A_KO": { "alt-ergo": 
+                                                                { "total": 1,
+                                                                  "unknown": 1 },
+                                                              "qed": 
+                                                                { "total": 1,
+                                                                  "valid": 1 },
+                                                              "wp:main": 
+                                                                { "total": 2,
+                                                                  "valid": 1,
+                                                                  "unknown": 1 } },
                                "wrong_assert_for_value": { "alt-ergo": 
                                                              { "total": 1,
                                                                "valid": 1,
@@ -31,10 +36,10 @@
                                                              { "total": 1,
                                                                "valid": 1,
                                                                "rank": 1 } },
-                               "wrong_loop_assign": { "qed": { "total": 1,
-                                                               "valid": 1 },
-                                                      "wp:main": { "total": 1,
-                                                                   "valid": 1 } },
+                               "wrong_loop_assigns": { "qed": { "total": 1,
+                                                                "valid": 1 },
+                                                       "wp:main": { "total": 1,
+                                                                    "valid": 1 } },
                                "wp:section": { "alt-ergo": { "total": 3,
                                                              "valid": 2,
                                                              "unknown": 1,
@@ -45,14 +50,14 @@
                                                             "valid": 8,
                                                             "unknown": 1,
                                                             "rank": 2 } } },
-                    "local": { "local_loop_inv": { "qed": { "total": 2,
-                                                            "valid": 2 },
-                                                   "wp:main": { "total": 2,
-                                                                "valid": 2 } },
-                               "local_loop_assign": { "qed": { "total": 2,
-                                                               "valid": 2 },
-                                                      "wp:main": { "total": 2,
-                                                                   "valid": 2 } },
+                    "local": { "local_loop_invariant": { "qed": { "total": 2,
+                                                                  "valid": 2 },
+                                                         "wp:main": { "total": 2,
+                                                                    "valid": 2 } },
+                               "local_loop_assigns": { "qed": { "total": 2,
+                                                                "valid": 2 },
+                                                       "wp:main": { "total": 2,
+                                                                    "valid": 2 } },
                                "wp:section": { "qed": { "total": 4,
                                                         "valid": 4 },
                                                "wp:main": { "total": 4,
diff --git a/src/plugins/wp/tests/wp_bts/bts_1586.i.0.report.json b/src/plugins/wp/tests/wp_bts/bts_1586.i.0.report.json
index 9b65d383251243503724bec1e5dbb1df40266956..c8f7254db678407b637fbbd5630ad7138b8d784f 100644
--- a/src/plugins/wp/tests/wp_bts/bts_1586.i.0.report.json
+++ b/src/plugins/wp/tests/wp_bts/bts_1586.i.0.report.json
@@ -1,7 +1,7 @@
 { "wp:global": { "alt-ergo": { "total": 2, "unknown": 2 },
                  "qed": { "total": 2, "valid": 2 },
                  "wp:main": { "total": 4, "valid": 2, "unknown": 2 } },
-  "wp:functions": { "compute_bizarre": { "compute_bizarre_Bizarre_post_TRANS": 
+  "wp:functions": { "compute_bizarre": { "compute_bizarre_Bizarre_ensures_TRANS": 
                                            { "qed": { "total": 1,
                                                       "valid": 1 },
                                              "wp:main": { "total": 1,
@@ -10,7 +10,7 @@
                                                                   "valid": 1 },
                                                          "wp:main": { "total": 1,
                                                                     "valid": 1 } } },
-                    "compute_normal": { "compute_normal_Normal_post_TRANS": 
+                    "compute_normal": { "compute_normal_Normal_ensures_TRANS": 
                                           { "qed": { "total": 1, "valid": 1 },
                                             "wp:main": { "total": 1,
                                                          "valid": 1 } },
diff --git a/src/plugins/wp/tests/wp_bts/bts_1588.i.0.report.json b/src/plugins/wp/tests/wp_bts/bts_1588.i.0.report.json
index 599915d2f1099c20e57378f12c8b7650869f021d..20f18a7e95a515ebdf59eef3ef5be2c0db1a115a 100644
--- a/src/plugins/wp/tests/wp_bts/bts_1588.i.0.report.json
+++ b/src/plugins/wp/tests/wp_bts/bts_1588.i.0.report.json
@@ -3,10 +3,10 @@
   "wp:functions": { "f": { "f_assert_a1": { "qed": { "total": 1, "valid": 1 },
                                             "wp:main": { "total": 1,
                                                          "valid": 1 } },
-                           "f_loop_inv_l1_2": { "qed": { "total": 2,
-                                                         "valid": 2 },
-                                                "wp:main": { "total": 2,
-                                                             "valid": 2 } },
+                           "f_loop_invariant_l1_2": { "qed": { "total": 2,
+                                                               "valid": 2 },
+                                                      "wp:main": { "total": 2,
+                                                                   "valid": 2 } },
                            "wp:section": { "qed": { "total": 3, "valid": 3 },
                                            "wp:main": { "total": 3,
                                                         "valid": 3 } } } } }
diff --git a/src/plugins/wp/tests/wp_bts/bts_1601.c.0.report.json b/src/plugins/wp/tests/wp_bts/bts_1601.c.0.report.json
index 43baa1f072a617efb65c27d8f4b662a8327e8b92..406e1c61d89ad35e2df5c92b839eec586460153d 100644
--- a/src/plugins/wp/tests/wp_bts/bts_1601.c.0.report.json
+++ b/src/plugins/wp/tests/wp_bts/bts_1601.c.0.report.json
@@ -1,6 +1,6 @@
-{ "wp:global": { "alt-ergo": { "total": 1, "valid": 1, "rank": 4 },
+{ "wp:global": { "alt-ergo": { "total": 1, "valid": 1, "rank": 5 },
                  "qed": { "total": 7, "valid": 7 },
-                 "wp:main": { "total": 8, "valid": 8, "rank": 4 } },
+                 "wp:main": { "total": 8, "valid": 8, "rank": 5 } },
   "wp:functions": { "foo": { "foo_assert_7": { "qed": { "total": 1,
                                                         "valid": 1 },
                                                "wp:main": { "total": 1,
@@ -27,19 +27,19 @@
                                                             "valid": 1 } },
                              "foo_assert": { "alt-ergo": { "total": 1,
                                                            "valid": 1,
-                                                           "rank": 4 },
+                                                           "rank": 5 },
                                              "wp:main": { "total": 1,
                                                           "valid": 1,
-                                                          "rank": 4 } },
-                             "foo_basic_post": { "qed": { "total": 1,
-                                                          "valid": 1 },
-                                                 "wp:main": { "total": 1,
-                                                              "valid": 1 } },
+                                                          "rank": 5 } },
+                             "foo_basic_ensures": { "qed": { "total": 1,
+                                                             "valid": 1 },
+                                                    "wp:main": { "total": 1,
+                                                                 "valid": 1 } },
                              "wp:section": { "alt-ergo": { "total": 1,
                                                            "valid": 1,
-                                                           "rank": 4 },
+                                                           "rank": 5 },
                                              "qed": { "total": 7,
                                                       "valid": 7 },
                                              "wp:main": { "total": 8,
                                                           "valid": 8,
-                                                          "rank": 4 } } } } }
+                                                          "rank": 5 } } } } }
diff --git a/src/plugins/wp/tests/wp_bts/bts_1828.i.0.report.json b/src/plugins/wp/tests/wp_bts/bts_1828.i.0.report.json
index db6b667f02bcfbfa38ed9f12bbd73782bdd9d252..2e19c0ff7adfbea3e83cdfe089a417b6f604525c 100644
--- a/src/plugins/wp/tests/wp_bts/bts_1828.i.0.report.json
+++ b/src/plugins/wp/tests/wp_bts/bts_1828.i.0.report.json
@@ -1,22 +1,22 @@
 { "wp:global": { "alt-ergo": { "total": 3, "valid": 1, "unknown": 2,
-                               "rank": 1 },
+                               "rank": 3 },
                  "qed": { "total": 3, "valid": 3 },
                  "wp:main": { "total": 6, "valid": 4, "unknown": 2,
-                              "rank": 1 } },
+                              "rank": 3 } },
   "wp:functions": { "local_frame": { "local_frame_assert_ok": { "alt-ergo": 
                                                                   { "total": 1,
                                                                     "valid": 1,
-                                                                    "rank": 1 },
+                                                                    "rank": 3 },
                                                                 "wp:main": 
                                                                   { "total": 1,
                                                                     "valid": 1,
-                                                                    "rank": 1 } },
+                                                                    "rank": 3 } },
                                      "wp:section": { "alt-ergo": { "total": 1,
                                                                    "valid": 1,
-                                                                   "rank": 1 },
+                                                                   "rank": 3 },
                                                      "wp:main": { "total": 1,
                                                                   "valid": 1,
-                                                                  "rank": 1 } } },
+                                                                  "rank": 3 } } },
                     "global_frame": { "global_frame_assert_ok_2": { "qed": 
                                                                     { "total": 1,
                                                                     "valid": 1 },
@@ -29,16 +29,16 @@
                                                                   "wp:main": 
                                                                     { "total": 1,
                                                                     "valid": 1 } },
-                                      "global_frame_post_zero_always": 
+                                      "global_frame_ensures_zero_always": 
                                         { "qed": { "total": 1, "valid": 1 },
                                           "wp:main": { "total": 1,
                                                        "valid": 1 } },
-                                      "global_frame_post_one_iff_ref": 
+                                      "global_frame_ensures_one_iff_ref": 
                                         { "alt-ergo": { "total": 1,
                                                         "unknown": 1 },
                                           "wp:main": { "total": 1,
                                                        "unknown": 1 } },
-                                      "global_frame_post_sep_iff_ref": 
+                                      "global_frame_ensures_sep_iff_ref": 
                                         { "alt-ergo": { "total": 1,
                                                         "unknown": 1 },
                                           "wp:main": { "total": 1,
diff --git a/src/plugins/wp/tests/wp_bts/bts_1828.i.1.report.json b/src/plugins/wp/tests/wp_bts/bts_1828.i.1.report.json
index 46519328dff46dbbeb462ab1b6bba198aa1735ef..4df401a00378c91fe19b8cc3c1b21d09785e0fdb 100644
--- a/src/plugins/wp/tests/wp_bts/bts_1828.i.1.report.json
+++ b/src/plugins/wp/tests/wp_bts/bts_1828.i.1.report.json
@@ -1,20 +1,20 @@
-{ "wp:global": { "alt-ergo": { "total": 1, "valid": 1, "rank": 1 },
+{ "wp:global": { "alt-ergo": { "total": 1, "valid": 1, "rank": 3 },
                  "qed": { "total": 5, "valid": 5 },
-                 "wp:main": { "total": 6, "valid": 6, "rank": 1 } },
+                 "wp:main": { "total": 6, "valid": 6, "rank": 3 } },
   "wp:functions": { "local_frame": { "local_frame_assert_ok": { "alt-ergo": 
                                                                   { "total": 1,
                                                                     "valid": 1,
-                                                                    "rank": 1 },
+                                                                    "rank": 3 },
                                                                 "wp:main": 
                                                                   { "total": 1,
                                                                     "valid": 1,
-                                                                    "rank": 1 } },
+                                                                    "rank": 3 } },
                                      "wp:section": { "alt-ergo": { "total": 1,
                                                                    "valid": 1,
-                                                                   "rank": 1 },
+                                                                   "rank": 3 },
                                                      "wp:main": { "total": 1,
                                                                   "valid": 1,
-                                                                  "rank": 1 } } },
+                                                                  "rank": 3 } } },
                     "global_frame": { "global_frame_assert_ok_2": { "qed": 
                                                                     { "total": 1,
                                                                     "valid": 1 },
@@ -27,15 +27,15 @@
                                                                   "wp:main": 
                                                                     { "total": 1,
                                                                     "valid": 1 } },
-                                      "global_frame_post_zero_always": 
+                                      "global_frame_ensures_zero_always": 
                                         { "qed": { "total": 1, "valid": 1 },
                                           "wp:main": { "total": 1,
                                                        "valid": 1 } },
-                                      "global_frame_post_one_iff_ref": 
+                                      "global_frame_ensures_one_iff_ref": 
                                         { "qed": { "total": 1, "valid": 1 },
                                           "wp:main": { "total": 1,
                                                        "valid": 1 } },
-                                      "global_frame_post_sep_iff_ref": 
+                                      "global_frame_ensures_sep_iff_ref": 
                                         { "qed": { "total": 1, "valid": 1 },
                                           "wp:main": { "total": 1,
                                                        "valid": 1 } },
diff --git a/src/plugins/wp/tests/wp_bts/bts_2079.i.0.report.json b/src/plugins/wp/tests/wp_bts/bts_2079.i.0.report.json
index 91b04794d8fc2b59c8aa87d6ffba87124a3faeec..8cfd69611e5ac5a6ed8fc5814df083844b6d6ce6 100644
--- a/src/plugins/wp/tests/wp_bts/bts_2079.i.0.report.json
+++ b/src/plugins/wp/tests/wp_bts/bts_2079.i.0.report.json
@@ -1,13 +1,13 @@
 { "wp:global": { "qed": { "total": 2, "valid": 2 },
                  "wp:main": { "total": 2, "valid": 2 } },
-  "wp:functions": { "main": { "main_post_Eval_Q": { "qed": { "total": 1,
-                                                             "valid": 1 },
-                                                    "wp:main": { "total": 1,
-                                                                 "valid": 1 } },
-                              "main_post_Eval_P": { "qed": { "total": 1,
-                                                             "valid": 1 },
-                                                    "wp:main": { "total": 1,
-                                                                 "valid": 1 } },
+  "wp:functions": { "main": { "main_ensures_Eval_Q": { "qed": { "total": 1,
+                                                                "valid": 1 },
+                                                       "wp:main": { "total": 1,
+                                                                    "valid": 1 } },
+                              "main_ensures_Eval_P": { "qed": { "total": 1,
+                                                                "valid": 1 },
+                                                       "wp:main": { "total": 1,
+                                                                    "valid": 1 } },
                               "wp:section": { "qed": { "total": 2,
                                                        "valid": 2 },
                                               "wp:main": { "total": 2,
diff --git a/src/plugins/wp/tests/wp_bts/bts_2159.i.0.report.json b/src/plugins/wp/tests/wp_bts/bts_2159.i.0.report.json
index 347952823a27fa01d362e7dd660290022854acda..ed70bf1a3deddc7b7e49837020eda032ac920b4c 100644
--- a/src/plugins/wp/tests/wp_bts/bts_2159.i.0.report.json
+++ b/src/plugins/wp/tests/wp_bts/bts_2159.i.0.report.json
@@ -1,11 +1,11 @@
 { "wp:global": { "alt-ergo": { "total": 1, "valid": 1, "rank": 15 },
                  "wp:main": { "total": 1, "valid": 1, "rank": 15 } },
-  "wp:functions": { "job": { "job_post": { "alt-ergo": { "total": 1,
-                                                         "valid": 1,
-                                                         "rank": 15 },
-                                           "wp:main": { "total": 1,
-                                                        "valid": 1,
-                                                        "rank": 15 } },
+  "wp:functions": { "job": { "job_ensures": { "alt-ergo": { "total": 1,
+                                                            "valid": 1,
+                                                            "rank": 15 },
+                                              "wp:main": { "total": 1,
+                                                           "valid": 1,
+                                                           "rank": 15 } },
                              "wp:section": { "alt-ergo": { "total": 1,
                                                            "valid": 1,
                                                            "rank": 15 },
diff --git a/src/plugins/wp/tests/wp_bts/ergo_typecheck.i.0.report.json b/src/plugins/wp/tests/wp_bts/ergo_typecheck.i.0.report.json
index 0f182e121aaa382e8853679df82b3daff9bc22aa..414c3cf94d8eb41a5b1a4767cdfbacd5c6e2fc60 100644
--- a/src/plugins/wp/tests/wp_bts/ergo_typecheck.i.0.report.json
+++ b/src/plugins/wp/tests/wp_bts/ergo_typecheck.i.0.report.json
@@ -1,36 +1,36 @@
 { "wp:global": { "qed": { "total": 8, "valid": 8 },
                  "wp:main": { "total": 8, "valid": 8 } },
-  "wp:functions": { "f": { "f_assign": { "qed": { "total": 1, "valid": 1 },
-                                         "wp:main": { "total": 1,
-                                                      "valid": 1 } },
-                           "f_post_var_unit4": { "qed": { "total": 1,
-                                                          "valid": 1 },
-                                                 "wp:main": { "total": 1,
-                                                              "valid": 1 } },
-                           "f_post_var_unit3": { "qed": { "total": 1,
-                                                          "valid": 1 },
-                                                 "wp:main": { "total": 1,
-                                                              "valid": 1 } },
-                           "f_post_var_unit2": { "qed": { "total": 1,
-                                                          "valid": 1 },
-                                                 "wp:main": { "total": 1,
-                                                              "valid": 1 } },
-                           "f_post_var_unit1": { "qed": { "total": 1,
-                                                          "valid": 1 },
-                                                 "wp:main": { "total": 1,
-                                                              "valid": 1 } },
-                           "f_post_var_unit0": { "qed": { "total": 1,
-                                                          "valid": 1 },
-                                                 "wp:main": { "total": 1,
-                                                              "valid": 1 } },
-                           "f_post_var_inline": { "qed": { "total": 1,
-                                                           "valid": 1 },
-                                                  "wp:main": { "total": 1,
-                                                               "valid": 1 } },
-                           "f_post_var_divded": { "qed": { "total": 1,
-                                                           "valid": 1 },
-                                                  "wp:main": { "total": 1,
-                                                               "valid": 1 } },
+  "wp:functions": { "f": { "f_assigns": { "qed": { "total": 1, "valid": 1 },
+                                          "wp:main": { "total": 1,
+                                                       "valid": 1 } },
+                           "f_ensures_var_unit4": { "qed": { "total": 1,
+                                                             "valid": 1 },
+                                                    "wp:main": { "total": 1,
+                                                                 "valid": 1 } },
+                           "f_ensures_var_unit3": { "qed": { "total": 1,
+                                                             "valid": 1 },
+                                                    "wp:main": { "total": 1,
+                                                                 "valid": 1 } },
+                           "f_ensures_var_unit2": { "qed": { "total": 1,
+                                                             "valid": 1 },
+                                                    "wp:main": { "total": 1,
+                                                                 "valid": 1 } },
+                           "f_ensures_var_unit1": { "qed": { "total": 1,
+                                                             "valid": 1 },
+                                                    "wp:main": { "total": 1,
+                                                                 "valid": 1 } },
+                           "f_ensures_var_unit0": { "qed": { "total": 1,
+                                                             "valid": 1 },
+                                                    "wp:main": { "total": 1,
+                                                                 "valid": 1 } },
+                           "f_ensures_var_inline": { "qed": { "total": 1,
+                                                              "valid": 1 },
+                                                     "wp:main": { "total": 1,
+                                                                  "valid": 1 } },
+                           "f_ensures_var_divded": { "qed": { "total": 1,
+                                                              "valid": 1 },
+                                                     "wp:main": { "total": 1,
+                                                                  "valid": 1 } },
                            "wp:section": { "qed": { "total": 8, "valid": 8 },
                                            "wp:main": { "total": 8,
                                                         "valid": 8 } } } } }
diff --git a/src/plugins/wp/tests/wp_bts/issue_198.i.0.report.json b/src/plugins/wp/tests/wp_bts/issue_198.i.0.report.json
index 0275e393424287f885ce511bcf1055b0939898ff..8add84a6b5d7f48c762f4162d0a1f437623fe410 100644
--- a/src/plugins/wp/tests/wp_bts/issue_198.i.0.report.json
+++ b/src/plugins/wp/tests/wp_bts/issue_198.i.0.report.json
@@ -1,14 +1,14 @@
-{ "wp:global": { "alt-ergo": { "total": 1, "valid": 1, "rank": 1 },
-                 "wp:main": { "total": 1, "valid": 1, "rank": 1 } },
+{ "wp:global": { "alt-ergo": { "total": 1, "valid": 1, "rank": 2 },
+                 "wp:main": { "total": 1, "valid": 1, "rank": 2 } },
   "wp:axiomatics": { "": { "lemma_broken": { "alt-ergo": { "total": 1,
                                                            "valid": 1,
-                                                           "rank": 1 },
+                                                           "rank": 2 },
                                              "wp:main": { "total": 1,
                                                           "valid": 1,
-                                                          "rank": 1 } },
+                                                          "rank": 2 } },
                            "wp:section": { "alt-ergo": { "total": 1,
                                                          "valid": 1,
-                                                         "rank": 1 },
+                                                         "rank": 2 },
                                            "wp:main": { "total": 1,
                                                         "valid": 1,
-                                                        "rank": 1 } } } } }
+                                                        "rank": 2 } } } } }
diff --git a/src/plugins/wp/tests/wp_bts/issue_453.i.0.report.json b/src/plugins/wp/tests/wp_bts/issue_453.i.0.report.json
index f2f5e9296957994d1c41554f1adc9c70f3f7fe25..6deccb7f511907d2da384a9fb2bb7691f959eb63 100644
--- a/src/plugins/wp/tests/wp_bts/issue_453.i.0.report.json
+++ b/src/plugins/wp/tests/wp_bts/issue_453.i.0.report.json
@@ -1,32 +1,30 @@
 { "wp:global": { "qed": { "total": 6, "valid": 6 },
                  "wp:main": { "total": 6, "valid": 6 } },
-  "wp:functions": { "f1": { "f1_stmt_assign": { "qed": { "total": 1,
-                                                         "valid": 1 },
-                                                "wp:main": { "total": 1,
-                                                             "valid": 1 } },
-                            "f1_loop_assign": { "qed": { "total": 1,
-                                                         "valid": 1 },
-                                                "wp:main": { "total": 1,
-                                                             "valid": 1 } },
-                            "f1_stmt_post_Sincr": { "qed": { "total": 1,
-                                                             "valid": 1 },
-                                                    "wp:main": { "total": 1,
-                                                                 "valid": 1 } },
+  "wp:functions": { "f1": { "f1_assigns": { "qed": { "total": 1, "valid": 1 },
+                                            "wp:main": { "total": 1,
+                                                         "valid": 1 } },
+                            "f1_loop_assigns": { "qed": { "total": 1,
+                                                          "valid": 1 },
+                                                 "wp:main": { "total": 1,
+                                                              "valid": 1 } },
+                            "f1_ensures_Sincr": { "qed": { "total": 1,
+                                                           "valid": 1 },
+                                                  "wp:main": { "total": 1,
+                                                               "valid": 1 } },
                             "wp:section": { "qed": { "total": 3, "valid": 3 },
                                             "wp:main": { "total": 3,
                                                          "valid": 3 } } },
-                    "f2": { "f2_stmt_assign": { "qed": { "total": 1,
-                                                         "valid": 1 },
-                                                "wp:main": { "total": 1,
-                                                             "valid": 1 } },
-                            "f2_loop_assign": { "qed": { "total": 1,
-                                                         "valid": 1 },
-                                                "wp:main": { "total": 1,
-                                                             "valid": 1 } },
-                            "f2_stmt_post_Sincr": { "qed": { "total": 1,
-                                                             "valid": 1 },
-                                                    "wp:main": { "total": 1,
-                                                                 "valid": 1 } },
+                    "f2": { "f2_assigns": { "qed": { "total": 1, "valid": 1 },
+                                            "wp:main": { "total": 1,
+                                                         "valid": 1 } },
+                            "f2_loop_assigns": { "qed": { "total": 1,
+                                                          "valid": 1 },
+                                                 "wp:main": { "total": 1,
+                                                              "valid": 1 } },
+                            "f2_ensures_Sincr": { "qed": { "total": 1,
+                                                           "valid": 1 },
+                                                  "wp:main": { "total": 1,
+                                                               "valid": 1 } },
                             "wp:section": { "qed": { "total": 3, "valid": 3 },
                                             "wp:main": { "total": 3,
                                                          "valid": 3 } } } } }
diff --git a/src/plugins/wp/tests/wp_bts/issue_494.i.0.report.json b/src/plugins/wp/tests/wp_bts/issue_494.i.0.report.json
index 0d7cba60afdf053abe9306b5535bbe1baaa860bd..d2c13e606a02ea298d5cecf7a69d686f94725326 100644
--- a/src/plugins/wp/tests/wp_bts/issue_494.i.0.report.json
+++ b/src/plugins/wp/tests/wp_bts/issue_494.i.0.report.json
@@ -2,10 +2,12 @@
                                "rank": 3 },
                  "wp:main": { "total": 3, "valid": 1, "unknown": 2,
                               "rank": 3 } },
-  "wp:functions": { "f": { "f_post": { "alt-ergo": { "total": 1, "valid": 1,
-                                                     "rank": 3 },
-                                       "wp:main": { "total": 1, "valid": 1,
-                                                    "rank": 3 } },
+  "wp:functions": { "f": { "f_ensures": { "alt-ergo": { "total": 1,
+                                                        "valid": 1,
+                                                        "rank": 3 },
+                                          "wp:main": { "total": 1,
+                                                       "valid": 1,
+                                                       "rank": 3 } },
                            "wp:section": { "alt-ergo": { "total": 1,
                                                          "valid": 1,
                                                          "rank": 3 },
diff --git a/src/plugins/wp/tests/wp_bts/issue_508.c.0.report.json b/src/plugins/wp/tests/wp_bts/issue_508.c.0.report.json
index f560b0badc636d31085540dc1622a41f5718bf87..4c75c284f8a45dc0d2ca538514549cbdc3238e7b 100644
--- a/src/plugins/wp/tests/wp_bts/issue_508.c.0.report.json
+++ b/src/plugins/wp/tests/wp_bts/issue_508.c.0.report.json
@@ -1,14 +1,14 @@
 { "wp:global": { "alt-ergo": { "total": 1, "valid": 1, "rank": 14 },
                  "qed": { "total": 2, "valid": 2 },
                  "wp:main": { "total": 3, "valid": 3, "rank": 14 } },
-  "wp:functions": { "add": { "add_assign": { "alt-ergo": { "total": 1,
-                                                           "valid": 1,
-                                                           "rank": 14 },
-                                             "qed": { "total": 2,
-                                                      "valid": 2 },
-                                             "wp:main": { "total": 3,
-                                                          "valid": 3,
-                                                          "rank": 14 } },
+  "wp:functions": { "add": { "add_assigns": { "alt-ergo": { "total": 1,
+                                                            "valid": 1,
+                                                            "rank": 14 },
+                                              "qed": { "total": 2,
+                                                       "valid": 2 },
+                                              "wp:main": { "total": 3,
+                                                           "valid": 3,
+                                                           "rank": 14 } },
                              "wp:section": { "alt-ergo": { "total": 1,
                                                            "valid": 1,
                                                            "rank": 14 },
diff --git a/src/plugins/wp/tests/wp_bts/nupw-bcl-bts1120.i.0.report.json b/src/plugins/wp/tests/wp_bts/nupw-bcl-bts1120.i.0.report.json
index d6bedb812b340702a1509a59c9e1f74bf26cdd3f..4c4cf67940252aa7f1e4b328dfa5f41b385fc87f 100644
--- a/src/plugins/wp/tests/wp_bts/nupw-bcl-bts1120.i.0.report.json
+++ b/src/plugins/wp/tests/wp_bts/nupw-bcl-bts1120.i.0.report.json
@@ -1,25 +1,25 @@
 { "wp:global": { "qed": { "total": 8, "valid": 8 },
                  "wp:main": { "total": 8, "valid": 8 } },
-  "wp:functions": { "g": { "g_assign": { "qed": { "total": 4, "valid": 4 },
-                                         "wp:main": { "total": 4,
-                                                      "valid": 4 } },
-                           "g_loop_assign": { "qed": { "total": 1,
-                                                       "valid": 1 },
-                                              "wp:main": { "total": 1,
-                                                           "valid": 1 } },
-                           "g_exit_ok": { "qed": { "total": 1, "valid": 1 },
-                                          "wp:main": { "total": 1,
-                                                       "valid": 1 } },
+  "wp:functions": { "g": { "g_assigns": { "qed": { "total": 4, "valid": 4 },
+                                          "wp:main": { "total": 4,
+                                                       "valid": 4 } },
+                           "g_loop_assigns": { "qed": { "total": 1,
+                                                        "valid": 1 },
+                                               "wp:main": { "total": 1,
+                                                            "valid": 1 } },
+                           "g_exits_ok": { "qed": { "total": 1, "valid": 1 },
+                                           "wp:main": { "total": 1,
+                                                        "valid": 1 } },
                            "wp:section": { "qed": { "total": 6, "valid": 6 },
                                            "wp:main": { "total": 6,
                                                         "valid": 6 } } },
-                    "unreachable_smt_with_contract": { "specialization_f_with_precond_pre_ok_at_unreachable_smt_with_contract_stmt_10": 
+                    "unreachable_smt_with_contract": { "f_with_precond_requires_ok": 
                                                          { "qed": { "total": 1,
                                                                     "valid": 1 },
                                                            "wp:main": 
                                                              { "total": 1,
                                                                "valid": 1 } },
-                                                       "unreachable_smt_with_contract_post_ok": 
+                                                       "unreachable_smt_with_contract_ensures_ok": 
                                                          { "qed": { "total": 1,
                                                                     "valid": 1 },
                                                            "wp:main": 
diff --git a/src/plugins/wp/tests/wp_bts/oracle/bts_2110.res.oracle b/src/plugins/wp/tests/wp_bts/oracle/bts_2110.res.oracle
index 2b5900b11b1f7a65384e20c101e23e19a203241d..9ca77b0609a0f99d2701bffd22be5ee5f20b4acf 100644
--- a/src/plugins/wp/tests/wp_bts/oracle/bts_2110.res.oracle
+++ b/src/plugins/wp/tests/wp_bts/oracle/bts_2110.res.oracle
@@ -5,13 +5,13 @@
 [wp] Warning: Missing RTE guards
 [wp] 2 goals scheduled
 ---------------------------------------------
---- File 'typed/myMain_stmt_assign.ergo' 
+--- File 'typed/myMain_assigns.ergo' 
 ---------------------------------------------
 (* ---------------------------------------------------------- *)
 (* --- Assigns 'KO' at call 'myRead' (file tests/wp_bts/bts_2110.i, line 36) --- *)
 (* ---------------------------------------------------------- *)
 
-goal myMain_stmt_assign:
+goal myMain_assigns:
   forall i : int.
   forall t : int farray.
   forall t_1 : (addr,int) farray.
@@ -82,13 +82,13 @@ predicate IsS2_A(S:S2_A) = is_sint32(S.F2_A_dummy)
 predicate EqS2_A(S:S2_A, S_1:S2_A) = (S_1.F2_A_dummy) = (S.F2_A_dummy)
 
 ---------------------------------------------
---- File 'typed/myMain_post_KO.ergo' 
+--- File 'typed/myMain_ensures_KO.ergo' 
 ---------------------------------------------
 (* ---------------------------------------------------------- *)
 (* --- Post-condition 'KO' in 'myMain'                    --- *)
 (* ---------------------------------------------------------- *)
 
-goal myMain_post_KO:
+goal myMain_ensures_KO:
   forall t_1,t : (addr,int) farray.
   forall a_1,a : addr.
   let a_2 = Load_S2_A(a_1, t_1) : S2_A in
diff --git a/src/plugins/wp/tests/wp_bts/oracle/nupw-bcl-bts1120.res.oracle b/src/plugins/wp/tests/wp_bts/oracle/nupw-bcl-bts1120.res.oracle
index b13aeff75c9ead8782c619e090f770f7136b2857..094d64fd5cc15c062e1c9bf26f9235d9517c3538 100644
--- a/src/plugins/wp/tests/wp_bts/oracle/nupw-bcl-bts1120.res.oracle
+++ b/src/plugins/wp/tests/wp_bts/oracle/nupw-bcl-bts1120.res.oracle
@@ -6,12 +6,12 @@
   [cfg] Forget exits clause of node <blkIn-stmt:26>
 [wp] tests/wp_bts/nupw-bcl-bts1120.i:54: Warning: 
   [cfg] Forget exits clause of node <blkIn-stmt:26>
-[wp] [CFG] Goal unreachable_smt_with_contract_stmt_assign : Valid (Unreachable)
-[wp] [CFG] Goal unreachable_smt_with_contract_stmt_exit_ok : Valid (Unreachable)
-[wp] [CFG] Goal unreachable_smt_with_contract_stmt_post_ok : Valid (Unreachable)
-[wp] [CFG] Goal unreachable_smt_with_contract_stmt_pre_ok : Valid (Unreachable)
+[wp] [CFG] Goal unreachable_smt_with_contract_assigns : Valid (Unreachable)
+[wp] [CFG] Goal unreachable_smt_with_contract_exits_ok : Valid (Unreachable)
+[wp] [CFG] Goal unreachable_smt_with_contract_ensures_ok : Valid (Unreachable)
+[wp] [CFG] Goal unreachable_smt_with_contract_requires_ok : Valid (Unreachable)
 [wp] [CFG] Goal unreachable_smt_with_contract_assert_ok : Valid (Unreachable)
-[wp] [CFG] Goal unreachable_smt_with_contract_call_f_with_precond_pre_ok : Valid (Unreachable)
+[wp] [CFG] Goal unreachable_smt_with_contract_call_f_with_precond_requires_ok : Valid (Unreachable)
 [wp] Warning: Missing RTE guards
 ------------------------------------------------------------
   Function cfg_domination_problem
diff --git a/src/plugins/wp/tests/wp_bts/oracle_qualif/bts0708.res.oracle b/src/plugins/wp/tests/wp_bts/oracle_qualif/bts0708.res.oracle
index c189064e79fbeb2b9833a83ddfde2be4c9997dc3..7c13800bcbd80cc30eb3e33e45c258442803897a 100644
--- a/src/plugins/wp/tests/wp_bts/oracle_qualif/bts0708.res.oracle
+++ b/src/plugins/wp/tests/wp_bts/oracle_qualif/bts0708.res.oracle
@@ -4,7 +4,7 @@
 [wp] Loading driver 'share/wp.driver'
 [wp] Warning: Missing RTE guards
 [wp] 1 goal scheduled
-[wp] [Alt-Ergo] Goal typed_f_post_A : Valid
+[wp] [Alt-Ergo] Goal typed_f_ensures_A : Valid
 [wp] Proved goals:    1 / 1
   Qed:             0 
   Alt-Ergo:        1
@@ -15,8 +15,8 @@ f                   -       1 (4..16)        1       100%
 -------------------------------------------------------------
 [wp] Running WP plugin...
 [wp] 2 goals scheduled
-[wp] [Alt-Ergo] Goal typed_f_post_A : Valid
-[wp] [Alt-Ergo] Goal typed_f_post_B : Valid
+[wp] [Alt-Ergo] Goal typed_f_ensures_A : Valid
+[wp] [Alt-Ergo] Goal typed_f_ensures_B : Valid
 [wp] Proved goals:    2 / 2
   Qed:             0 
   Alt-Ergo:        2
diff --git a/src/plugins/wp/tests/wp_bts/oracle_qualif/bts0843.res.oracle b/src/plugins/wp/tests/wp_bts/oracle_qualif/bts0843.res.oracle
index 9afec415109fccc41ffb7759ee0c7a09d4b1c559..a0f8a4094b891dde4708856b9d9314693778c2d0 100644
--- a/src/plugins/wp/tests/wp_bts/oracle_qualif/bts0843.res.oracle
+++ b/src/plugins/wp/tests/wp_bts/oracle_qualif/bts0843.res.oracle
@@ -4,10 +4,10 @@
 [wp] Loading driver 'share/wp.driver'
 [wp] Warning: Missing RTE guards
 [wp] 4 goals scheduled
-[wp] [Qed] Goal typed_f3_assign : Valid
-[wp] [Alt-Ergo] Goal typed_g3_assign_exit : Valid
-[wp] [Alt-Ergo] Goal typed_g3_assign_normal : Valid
-[wp] [Qed] Goal typed_g3_call_f3_pre : Valid
+[wp] [Qed] Goal typed_f3_assigns : Valid
+[wp] [Alt-Ergo] Goal typed_g3_assigns_exit : Valid
+[wp] [Alt-Ergo] Goal typed_g3_assigns_normal : Valid
+[wp] [Qed] Goal typed_g3_call_f3_requires : Valid
 [wp] Proved goals:    4 / 4
   Qed:             2 
   Alt-Ergo:        2
diff --git a/src/plugins/wp/tests/wp_bts/oracle_qualif/bts788.res.oracle b/src/plugins/wp/tests/wp_bts/oracle_qualif/bts788.res.oracle
index 494a0a1dc78a5b0ae770c8b252fcbd76acfff6d2..a85d715c3e10b2255d810a9265e8cc28f6b25a69 100644
--- a/src/plugins/wp/tests/wp_bts/oracle_qualif/bts788.res.oracle
+++ b/src/plugins/wp/tests/wp_bts/oracle_qualif/bts788.res.oracle
@@ -4,9 +4,9 @@
 [wp] Loading driver 'share/wp.driver'
 [wp] Warning: Missing RTE guards
 [wp] 3 goals scheduled
-[wp] [Qed] Goal typed_ref_main_post_I0 : Valid
-[wp] [Alt-Ergo] Goal typed_ref_main_post_I1 : Valid
-[wp] [Alt-Ergo] Goal typed_ref_main_post_I2 : Valid
+[wp] [Qed] Goal typed_ref_main_ensures_I0 : Valid
+[wp] [Alt-Ergo] Goal typed_ref_main_ensures_I1 : Valid
+[wp] [Alt-Ergo] Goal typed_ref_main_ensures_I2 : Valid
 [wp] Proved goals:    3 / 3
   Qed:             1 
   Alt-Ergo:        2
diff --git a/src/plugins/wp/tests/wp_bts/oracle_qualif/bts_1360.res.oracle b/src/plugins/wp/tests/wp_bts/oracle_qualif/bts_1360.res.oracle
index df7117a225383f6a525440c1c97ddeceae063236..286ecc0a8dee3fb7dba30c53a896e206bf001fc9 100644
--- a/src/plugins/wp/tests/wp_bts/oracle_qualif/bts_1360.res.oracle
+++ b/src/plugins/wp/tests/wp_bts/oracle_qualif/bts_1360.res.oracle
@@ -5,16 +5,16 @@
 [rte] annotating function foo_correct
 [rte] annotating function foo_wrong
 [wp] 10 goals scheduled
-[wp] [Qed] Goal typed_foo_correct_post : Valid
+[wp] [Qed] Goal typed_foo_correct_ensures : Valid
 [wp] [Alt-Ergo] Goal typed_foo_correct_assert_rte_mem_access : Valid
 [wp] [Qed] Goal typed_foo_correct_assert_rte_mem_access_2 : Valid
 [wp] [Qed] Goal typed_foo_correct_assert_rte_mem_access_3 : Valid
-[wp] [Qed] Goal typed_foo_correct_assign : Valid
-[wp] [Qed] Goal typed_foo_wrong_post : Valid
+[wp] [Qed] Goal typed_foo_correct_assigns : Valid
+[wp] [Qed] Goal typed_foo_wrong_ensures : Valid
 [wp] [Qed] Goal typed_foo_wrong_assert_rte_mem_access : Valid
 [wp] [Qed] Goal typed_foo_wrong_assert_rte_mem_access_2 : Valid
 [wp] [Alt-Ergo] Goal typed_foo_wrong_assert_rte_mem_access_3 : Unknown
-[wp] [Qed] Goal typed_foo_wrong_assign : Valid
+[wp] [Qed] Goal typed_foo_wrong_assigns : Valid
 [wp] Proved goals:    9 / 10
   Qed:             8 
   Alt-Ergo:        1  (unknown: 1)
diff --git a/src/plugins/wp/tests/wp_bts/oracle_qualif/bts_1462.res.oracle b/src/plugins/wp/tests/wp_bts/oracle_qualif/bts_1462.res.oracle
index e0d6ae4d84a66b2865261f2e280f083a463279b9..fcbb90261d3d8c3ab690bfc37fec3a81edc9ac22 100644
--- a/src/plugins/wp/tests/wp_bts/oracle_qualif/bts_1462.res.oracle
+++ b/src/plugins/wp/tests/wp_bts/oracle_qualif/bts_1462.res.oracle
@@ -4,19 +4,19 @@
 [wp] Loading driver 'share/wp.driver'
 [wp] Warning: Missing RTE guards
 [wp] 13 goals scheduled
-[wp] [Qed] Goal typed_local_loop_inv_preserved : Valid
-[wp] [Qed] Goal typed_local_loop_inv_established : Valid
-[wp] [Qed] Goal typed_local_loop_assign_part1 : Valid
-[wp] [Qed] Goal typed_local_loop_assign_part2 : Valid
+[wp] [Qed] Goal typed_local_loop_invariant_preserved : Valid
+[wp] [Qed] Goal typed_local_loop_invariant_established : Valid
+[wp] [Qed] Goal typed_local_loop_assigns_part1 : Valid
+[wp] [Qed] Goal typed_local_loop_assigns_part2 : Valid
 [wp] [Alt-Ergo] Goal typed_wrong_assert_for_value : Valid
-[wp] [Alt-Ergo] Goal typed_wrong_loop_inv_A_KO_preserved : Unknown
-[wp] [Qed] Goal typed_wrong_loop_inv_A_KO_established : Valid
-[wp] [Qed] Goal typed_wrong_loop_inv_B_preserved : Valid
-[wp] [Qed] Goal typed_wrong_loop_inv_B_established : Valid
-[wp] [Qed] Goal typed_wrong_loop_inv_C_preserved : Valid
-[wp] [Qed] Goal typed_wrong_loop_inv_C_established : Valid
+[wp] [Alt-Ergo] Goal typed_wrong_loop_invariant_A_KO_preserved : Unknown
+[wp] [Qed] Goal typed_wrong_loop_invariant_A_KO_established : Valid
+[wp] [Qed] Goal typed_wrong_loop_invariant_B_preserved : Valid
+[wp] [Qed] Goal typed_wrong_loop_invariant_B_established : Valid
+[wp] [Qed] Goal typed_wrong_loop_invariant_C_preserved : Valid
+[wp] [Qed] Goal typed_wrong_loop_invariant_C_established : Valid
 [wp] [Alt-Ergo] Goal typed_wrong_assert_consequence_of_false_invariant : Valid
-[wp] [Qed] Goal typed_wrong_loop_assign : Valid
+[wp] [Qed] Goal typed_wrong_loop_assigns : Valid
 [wp] Proved goals:   12 / 13
   Qed:            10 
   Alt-Ergo:        2  (unknown: 1)
diff --git a/src/plugins/wp/tests/wp_bts/oracle_qualif/bts_1586.res.oracle b/src/plugins/wp/tests/wp_bts/oracle_qualif/bts_1586.res.oracle
index c6dc535715192dd6d8dc57aa4755b27c88ab9854..2dd381f40d3f750773b19857a69fc1372df87e55 100644
--- a/src/plugins/wp/tests/wp_bts/oracle_qualif/bts_1586.res.oracle
+++ b/src/plugins/wp/tests/wp_bts/oracle_qualif/bts_1586.res.oracle
@@ -4,8 +4,8 @@
 [wp] Loading driver 'share/wp.driver'
 [wp] Warning: Missing RTE guards
 [wp] 4 goals scheduled
-[wp] [Qed] Goal typed_compute_bizarre_Bizarre_post_TRANS : Valid
-[wp] [Qed] Goal typed_compute_normal_Normal_post_TRANS : Valid
+[wp] [Qed] Goal typed_compute_bizarre_Bizarre_ensures_TRANS : Valid
+[wp] [Qed] Goal typed_compute_normal_Normal_ensures_TRANS : Valid
 [wp] [Alt-Ergo] Goal typed_main_bizarre_KO_assert_FALSE : Unknown
 [wp] [Alt-Ergo] Goal typed_main_normal_KO_assert_FALSE : Unknown
 [wp] Proved goals:    2 / 4
diff --git a/src/plugins/wp/tests/wp_bts/oracle_qualif/bts_1588.res.oracle b/src/plugins/wp/tests/wp_bts/oracle_qualif/bts_1588.res.oracle
index 21d7b22fe7f1119d4e75af13d3481dcbe3c01424..6a9e1f868ab48a70637f17c7d4da18ed230d449f 100644
--- a/src/plugins/wp/tests/wp_bts/oracle_qualif/bts_1588.res.oracle
+++ b/src/plugins/wp/tests/wp_bts/oracle_qualif/bts_1588.res.oracle
@@ -8,8 +8,8 @@
 [wp] tests/wp_bts/bts_1588.i:5: Warning: 
   Missing assigns clause (assigns 'everything' instead)
 [wp] 3 goals scheduled
-[wp] [Qed] Goal typed_f_loop_inv_l1_2_preserved : Valid
-[wp] [Qed] Goal typed_f_loop_inv_l1_2_established : Valid
+[wp] [Qed] Goal typed_f_loop_invariant_l1_2_preserved : Valid
+[wp] [Qed] Goal typed_f_loop_invariant_l1_2_established : Valid
 [wp] [Qed] Goal typed_f_assert_a1 : Valid
 [wp] Proved goals:    3 / 3
   Qed:             3
diff --git a/src/plugins/wp/tests/wp_bts/oracle_qualif/bts_1601.res.oracle b/src/plugins/wp/tests/wp_bts/oracle_qualif/bts_1601.res.oracle
index cbeaaa512abdc92f2b4dd7e7eeaf7142b02da934..8ab82c08dc1961b269d2d78d86397a7c496ce66f 100644
--- a/src/plugins/wp/tests/wp_bts/oracle_qualif/bts_1601.res.oracle
+++ b/src/plugins/wp/tests/wp_bts/oracle_qualif/bts_1601.res.oracle
@@ -11,12 +11,12 @@
 [wp] [Qed] Goal typed_foo_assert_5 : Valid
 [wp] [Qed] Goal typed_foo_assert_6 : Valid
 [wp] [Qed] Goal typed_foo_assert_7 : Valid
-[wp] [Qed] Goal typed_foo_basic_post : Valid
+[wp] [Qed] Goal typed_foo_basic_ensures : Valid
 [wp] Proved goals:    8 / 8
   Qed:             7 
   Alt-Ergo:        1
 [wp] Report 'tests/wp_bts/bts_1601.c.0.report.json'
 -------------------------------------------------------------
 Functions           WP     Alt-Ergo        Total   Success
-foo                  7      1 (12..24)       8       100%
+foo                  7      1 (16..28)       8       100%
 -------------------------------------------------------------
diff --git a/src/plugins/wp/tests/wp_bts/oracle_qualif/bts_1828.0.res.oracle b/src/plugins/wp/tests/wp_bts/oracle_qualif/bts_1828.0.res.oracle
index daac899dba8e1ebd61023923a86bb93f77d98a22..d9d788c7c7b07fb0911308c1b3170d9051a90d17 100644
--- a/src/plugins/wp/tests/wp_bts/oracle_qualif/bts_1828.0.res.oracle
+++ b/src/plugins/wp/tests/wp_bts/oracle_qualif/bts_1828.0.res.oracle
@@ -4,9 +4,9 @@
 [wp] Loading driver 'share/wp.driver'
 [wp] Warning: Missing RTE guards
 [wp] 6 goals scheduled
-[wp] [Alt-Ergo] Goal typed_global_frame_post_sep_iff_ref : Unknown
-[wp] [Alt-Ergo] Goal typed_global_frame_post_one_iff_ref : Unknown
-[wp] [Qed] Goal typed_global_frame_post_zero_always : Valid
+[wp] [Alt-Ergo] Goal typed_global_frame_ensures_sep_iff_ref : Unknown
+[wp] [Alt-Ergo] Goal typed_global_frame_ensures_one_iff_ref : Unknown
+[wp] [Qed] Goal typed_global_frame_ensures_zero_always : Valid
 [wp] [Qed] Goal typed_global_frame_assert_ok : Valid
 [wp] [Qed] Goal typed_global_frame_assert_ok_2 : Valid
 [wp] [Alt-Ergo] Goal typed_local_frame_assert_ok : Valid
@@ -16,7 +16,7 @@
 [wp] Report 'tests/wp_bts/bts_1828.i.0.report.json'
 -------------------------------------------------------------
 Functions           WP     Alt-Ergo        Total   Success
-local_frame         -       1 (1..12)        1       100%
+local_frame         -       1 (8..20)        1       100%
 global_frame         3     -                 5      60.0%
 -------------------------------------------------------------
 [wp] Warning: Memory model hypotheses for function 'global_frame':
diff --git a/src/plugins/wp/tests/wp_bts/oracle_qualif/bts_1828.1.res.oracle b/src/plugins/wp/tests/wp_bts/oracle_qualif/bts_1828.1.res.oracle
index 9bfc329b04f3bceac5f7cb718e76edf85fb4f0f3..c751f5eeda12d3bbc8a6df3537a65426a0f122a0 100644
--- a/src/plugins/wp/tests/wp_bts/oracle_qualif/bts_1828.1.res.oracle
+++ b/src/plugins/wp/tests/wp_bts/oracle_qualif/bts_1828.1.res.oracle
@@ -4,9 +4,9 @@
 [wp] Loading driver 'share/wp.driver'
 [wp] Warning: Missing RTE guards
 [wp] 6 goals scheduled
-[wp] [Qed] Goal typed_ref_global_frame_post_sep_iff_ref : Valid
-[wp] [Qed] Goal typed_ref_global_frame_post_one_iff_ref : Valid
-[wp] [Qed] Goal typed_ref_global_frame_post_zero_always : Valid
+[wp] [Qed] Goal typed_ref_global_frame_ensures_sep_iff_ref : Valid
+[wp] [Qed] Goal typed_ref_global_frame_ensures_one_iff_ref : Valid
+[wp] [Qed] Goal typed_ref_global_frame_ensures_zero_always : Valid
 [wp] [Qed] Goal typed_ref_global_frame_assert_ok : Valid
 [wp] [Qed] Goal typed_ref_global_frame_assert_ok_2 : Valid
 [wp] [Alt-Ergo] Goal typed_ref_local_frame_assert_ok : Valid
@@ -16,7 +16,7 @@
 [wp] Report 'tests/wp_bts/bts_1828.i.1.report.json'
 -------------------------------------------------------------
 Functions           WP     Alt-Ergo        Total   Success
-local_frame         -       1 (1..12)        1       100%
+local_frame         -       1 (8..20)        1       100%
 global_frame         5     -                 5       100%
 -------------------------------------------------------------
 [wp] Warning: Memory model hypotheses for function 'global_frame':
diff --git a/src/plugins/wp/tests/wp_bts/oracle_qualif/bts_2079.res.oracle b/src/plugins/wp/tests/wp_bts/oracle_qualif/bts_2079.res.oracle
index 3ba5702535af18f419b1d86a6f840deb6f64bae9..1677f2005a81d60cebb275c80788ae36d70017ed 100644
--- a/src/plugins/wp/tests/wp_bts/oracle_qualif/bts_2079.res.oracle
+++ b/src/plugins/wp/tests/wp_bts/oracle_qualif/bts_2079.res.oracle
@@ -4,8 +4,8 @@
 [wp] Loading driver 'share/wp.driver'
 [wp] Warning: Missing RTE guards
 [wp] 2 goals scheduled
-[wp] [Qed] Goal typed_main_post_Eval_P : Valid
-[wp] [Qed] Goal typed_main_post_Eval_Q : Valid
+[wp] [Qed] Goal typed_main_ensures_Eval_P : Valid
+[wp] [Qed] Goal typed_main_ensures_Eval_Q : Valid
 [wp] Proved goals:    2 / 2
   Qed:             2
 [wp] Report 'tests/wp_bts/bts_2079.i.0.report.json'
diff --git a/src/plugins/wp/tests/wp_bts/oracle_qualif/bts_2159.res.oracle b/src/plugins/wp/tests/wp_bts/oracle_qualif/bts_2159.res.oracle
index def33bf37ab2f28dc3fb8cc0bddbc7c8e5ba022a..5957c25a9913e5dc7ea2f26f7e16a3c8b80cb32d 100644
--- a/src/plugins/wp/tests/wp_bts/oracle_qualif/bts_2159.res.oracle
+++ b/src/plugins/wp/tests/wp_bts/oracle_qualif/bts_2159.res.oracle
@@ -4,7 +4,7 @@
 [wp] Loading driver 'share/wp.driver'
 [wp] Warning: Missing RTE guards
 [wp] 1 goal scheduled
-[wp] [Alt-Ergo] Goal typed_job_post : Valid
+[wp] [Alt-Ergo] Goal typed_job_ensures : Valid
 [wp] Proved goals:    1 / 1
   Qed:             0 
   Alt-Ergo:        1
diff --git a/src/plugins/wp/tests/wp_bts/oracle_qualif/ergo_typecheck.res.oracle b/src/plugins/wp/tests/wp_bts/oracle_qualif/ergo_typecheck.res.oracle
index 32b111fa7242d905d8a2a8cdd63379dc734744a5..adbf79dec6e616503039969d0cb93e2a77983207 100644
--- a/src/plugins/wp/tests/wp_bts/oracle_qualif/ergo_typecheck.res.oracle
+++ b/src/plugins/wp/tests/wp_bts/oracle_qualif/ergo_typecheck.res.oracle
@@ -4,14 +4,14 @@
 [wp] Loading driver 'share/wp.driver'
 [wp] Warning: Missing RTE guards
 [wp] 8 goals scheduled
-[wp] [Qed] Goal typed_f_post_var_divded : Valid
-[wp] [Qed] Goal typed_f_post_var_inline : Valid
-[wp] [Qed] Goal typed_f_post_var_unit0 : Valid
-[wp] [Qed] Goal typed_f_post_var_unit1 : Valid
-[wp] [Qed] Goal typed_f_post_var_unit2 : Valid
-[wp] [Qed] Goal typed_f_post_var_unit3 : Valid
-[wp] [Qed] Goal typed_f_post_var_unit4 : Valid
-[wp] [Qed] Goal typed_f_assign : Valid
+[wp] [Qed] Goal typed_f_ensures_var_divded : Valid
+[wp] [Qed] Goal typed_f_ensures_var_inline : Valid
+[wp] [Qed] Goal typed_f_ensures_var_unit0 : Valid
+[wp] [Qed] Goal typed_f_ensures_var_unit1 : Valid
+[wp] [Qed] Goal typed_f_ensures_var_unit2 : Valid
+[wp] [Qed] Goal typed_f_ensures_var_unit3 : Valid
+[wp] [Qed] Goal typed_f_ensures_var_unit4 : Valid
+[wp] [Qed] Goal typed_f_assigns : Valid
 [wp] Proved goals:    8 / 8
   Qed:             8
 [wp] Report 'tests/wp_bts/ergo_typecheck.i.0.report.json'
diff --git a/src/plugins/wp/tests/wp_bts/oracle_qualif/issue_198.res.oracle b/src/plugins/wp/tests/wp_bts/oracle_qualif/issue_198.res.oracle
index 0b7a9377868233e596dab18cd5b9f6fb1fa21559..e99621a4bbbab527db5d28c33f75b1b83ec2b54e 100644
--- a/src/plugins/wp/tests/wp_bts/oracle_qualif/issue_198.res.oracle
+++ b/src/plugins/wp/tests/wp_bts/oracle_qualif/issue_198.res.oracle
@@ -10,5 +10,5 @@
 [wp] Report 'tests/wp_bts/issue_198.i.0.report.json'
 -------------------------------------------------------------
 Axiomatics          WP     Alt-Ergo        Total   Success
-Lemma               -       1 (1..12)        1       100%
+Lemma               -       1 (4..16)        1       100%
 -------------------------------------------------------------
diff --git a/src/plugins/wp/tests/wp_bts/oracle_qualif/issue_453.res.oracle b/src/plugins/wp/tests/wp_bts/oracle_qualif/issue_453.res.oracle
index 9eebd963d56bcb00ccab07c4510bfb82d656a283..ac1e7341c077c06f0af0001fcadce668af855ad1 100644
--- a/src/plugins/wp/tests/wp_bts/oracle_qualif/issue_453.res.oracle
+++ b/src/plugins/wp/tests/wp_bts/oracle_qualif/issue_453.res.oracle
@@ -4,12 +4,12 @@
 [wp] Loading driver 'share/wp.driver'
 [wp] Warning: Missing RTE guards
 [wp] 6 goals scheduled
-[wp] [Qed] Goal typed_f1_loop_assign : Valid
-[wp] [Qed] Goal typed_f1_stmt_post_Sincr : Valid
-[wp] [Qed] Goal typed_f1_stmt_assign : Valid
-[wp] [Qed] Goal typed_f2_loop_assign : Valid
-[wp] [Qed] Goal typed_f2_stmt_post_Sincr : Valid
-[wp] [Qed] Goal typed_f2_stmt_assign : Valid
+[wp] [Qed] Goal typed_f1_loop_assigns : Valid
+[wp] [Qed] Goal typed_f1_ensures_Sincr : Valid
+[wp] [Qed] Goal typed_f1_assigns : Valid
+[wp] [Qed] Goal typed_f2_loop_assigns : Valid
+[wp] [Qed] Goal typed_f2_ensures_Sincr : Valid
+[wp] [Qed] Goal typed_f2_assigns : Valid
 [wp] Proved goals:    6 / 6
   Qed:             6
 [wp] Report 'tests/wp_bts/issue_453.i.0.report.json'
diff --git a/src/plugins/wp/tests/wp_bts/oracle_qualif/issue_494.res.oracle b/src/plugins/wp/tests/wp_bts/oracle_qualif/issue_494.res.oracle
index 8289108ae0e286572f4685dbe161f6edfaf59610..88a873c857cfc22dfeccbc23a480d184dae469b5 100644
--- a/src/plugins/wp/tests/wp_bts/oracle_qualif/issue_494.res.oracle
+++ b/src/plugins/wp/tests/wp_bts/oracle_qualif/issue_494.res.oracle
@@ -4,7 +4,7 @@
 [wp] Loading driver 'share/wp.driver'
 [wp] Warning: Missing RTE guards
 [wp] 3 goals scheduled
-[wp] [Alt-Ergo] Goal typed_f_post : Valid
+[wp] [Alt-Ergo] Goal typed_f_ensures : Valid
 [wp] [Alt-Ergo] Goal typed_job_ko_fixed_assert_Wrong : Unknown
 [wp] [Alt-Ergo] Goal typed_job_ko_success_assert_Wrong : Unknown
 [wp] Proved goals:    1 / 3
diff --git a/src/plugins/wp/tests/wp_bts/oracle_qualif/issue_508.res.oracle b/src/plugins/wp/tests/wp_bts/oracle_qualif/issue_508.res.oracle
index 45cd077d06209cf8c051250cd592ff5154d9d7cd..e91fa5af17342cd08086ab3298ca3811c62d36f5 100644
--- a/src/plugins/wp/tests/wp_bts/oracle_qualif/issue_508.res.oracle
+++ b/src/plugins/wp/tests/wp_bts/oracle_qualif/issue_508.res.oracle
@@ -4,9 +4,9 @@
 [wp] Loading driver 'share/wp.driver'
 [wp] Warning: Missing RTE guards
 [wp] 3 goals scheduled
-[wp] [Alt-Ergo] Goal typed_add_assign_part1 : Valid
-[wp] [Qed] Goal typed_add_assign_part2 : Valid
-[wp] [Qed] Goal typed_add_assign_part3 : Valid
+[wp] [Alt-Ergo] Goal typed_add_assigns_part1 : Valid
+[wp] [Qed] Goal typed_add_assigns_part2 : Valid
+[wp] [Qed] Goal typed_add_assigns_part3 : Valid
 [wp] Proved goals:    3 / 3
   Qed:             2 
   Alt-Ergo:        1
diff --git a/src/plugins/wp/tests/wp_bts/oracle_qualif/nupw-bcl-bts1120.res.oracle b/src/plugins/wp/tests/wp_bts/oracle_qualif/nupw-bcl-bts1120.res.oracle
index 5d5d798ea5d9b1883dab371915dc5181911db479..1588ce4deb13e41cba58c14064dd7b84d43979a9 100644
--- a/src/plugins/wp/tests/wp_bts/oracle_qualif/nupw-bcl-bts1120.res.oracle
+++ b/src/plugins/wp/tests/wp_bts/oracle_qualif/nupw-bcl-bts1120.res.oracle
@@ -2,22 +2,22 @@
 [kernel] Parsing tests/wp_bts/nupw-bcl-bts1120.i (no preprocessing)
 [wp] Running WP plugin...
 [wp] Loading driver 'share/wp.driver'
-[wp] [CFG] Goal unreachable_smt_with_contract_stmt_assign : Valid (Unreachable)
-[wp] [CFG] Goal unreachable_smt_with_contract_stmt_exit_ok : Valid (Unreachable)
-[wp] [CFG] Goal unreachable_smt_with_contract_stmt_post_ok : Valid (Unreachable)
-[wp] [CFG] Goal unreachable_smt_with_contract_stmt_pre_ok : Valid (Unreachable)
+[wp] [CFG] Goal unreachable_smt_with_contract_assigns : Valid (Unreachable)
+[wp] [CFG] Goal unreachable_smt_with_contract_exits_ok : Valid (Unreachable)
+[wp] [CFG] Goal unreachable_smt_with_contract_ensures_ok : Valid (Unreachable)
+[wp] [CFG] Goal unreachable_smt_with_contract_requires_ok : Valid (Unreachable)
 [wp] [CFG] Goal unreachable_smt_with_contract_assert_ok : Valid (Unreachable)
-[wp] [CFG] Goal unreachable_smt_with_contract_call_f_with_precond_pre_ok : Valid (Unreachable)
+[wp] [CFG] Goal unreachable_smt_with_contract_call_f_with_precond_requires_ok : Valid (Unreachable)
 [wp] Warning: Missing RTE guards
 [wp] 8 goals scheduled
-[wp] [Qed] Goal typed_g_exit_ok : Valid
-[wp] [Qed] Goal typed_g_loop_assign : Valid
-[wp] [Qed] Goal typed_g_assign_exit : Valid
-[wp] [Qed] Goal typed_g_assign_normal_part1 : Valid
-[wp] [Qed] Goal typed_g_assign_normal_part2 : Valid
-[wp] [Qed] Goal typed_g_assign_normal_part3 : Valid
-[wp] [Qed] Goal typed_unreachable_smt_with_contract_post_ok : Valid
-[wp] [Qed] Goal typed_unreachable_smt_with_contract_call_f_with_precond_pre_ok_2 : Valid
+[wp] [Qed] Goal typed_g_exits_ok : Valid
+[wp] [Qed] Goal typed_g_loop_assigns : Valid
+[wp] [Qed] Goal typed_g_assigns_exit : Valid
+[wp] [Qed] Goal typed_g_assigns_normal_part1 : Valid
+[wp] [Qed] Goal typed_g_assigns_normal_part2 : Valid
+[wp] [Qed] Goal typed_g_assigns_normal_part3 : Valid
+[wp] [Qed] Goal typed_unreachable_smt_with_contract_ensures_ok_2 : Valid
+[wp] [Qed] Goal typed_unreachable_smt_with_contract_call_f_with_precond_requires_ok : Valid
 [wp] Proved goals:    8 / 8
   Qed:             8
 [wp] Report 'tests/wp_bts/nupw-bcl-bts1120.i.0.report.json'
diff --git a/src/plugins/wp/tests/wp_gallery/binary-multiplication-without-overflow.c.0.report.json b/src/plugins/wp/tests/wp_gallery/binary-multiplication-without-overflow.c.0.report.json
index 6e041751ae90f16c4e4ac1a37c7c29d34b40f54a..e5cea006b893c57b97b6bce5b539a95158f1c2a9 100644
--- a/src/plugins/wp/tests/wp_gallery/binary-multiplication-without-overflow.c.0.report.json
+++ b/src/plugins/wp/tests/wp_gallery/binary-multiplication-without-overflow.c.0.report.json
@@ -1,6 +1,6 @@
-{ "wp:global": { "alt-ergo": { "total": 10, "valid": 10, "rank": 16 },
+{ "wp:global": { "alt-ergo": { "total": 10, "valid": 10, "rank": 17 },
                  "qed": { "total": 3, "valid": 3 },
-                 "wp:main": { "total": 13, "valid": 13, "rank": 16 } },
+                 "wp:main": { "total": 13, "valid": 13, "rank": 17 } },
   "wp:axiomatics": { "mult": { "lemma_sizeof_uint64_t_ok": { "qed": { "total": 1,
                                                                     "valid": 1 },
                                                              "wp:main": 
@@ -43,7 +43,7 @@
                                                   "wp:main": { "total": 1,
                                                                "valid": 1,
                                                                "rank": 5 } },
-                                              "BinaryMultiplication_loop_inv_inv2_ok_deductible": 
+                                              "BinaryMultiplication_loop_invariant_inv2_ok_deductible": 
                                                 { "alt-ergo": { "total": 2,
                                                                 "valid": 2,
                                                                 "rank": 10 },
@@ -57,19 +57,19 @@
                                                   "wp:main": { "total": 1,
                                                                "valid": 1,
                                                                "rank": 3 } },
-                                              "BinaryMultiplication_loop_term": 
+                                              "BinaryMultiplication_loop_variant": 
                                                 { "alt-ergo": { "total": 2,
                                                                 "valid": 2,
                                                                 "rank": 8 },
                                                   "wp:main": { "total": 2,
                                                                "valid": 2,
                                                                "rank": 8 } },
-                                              "BinaryMultiplication_loop_assign": 
+                                              "BinaryMultiplication_loop_assigns": 
                                                 { "qed": { "total": 1,
                                                            "valid": 1 },
                                                   "wp:main": { "total": 1,
                                                                "valid": 1 } },
-                                              "BinaryMultiplication_post_product": 
+                                              "BinaryMultiplication_ensures_product": 
                                                 { "alt-ergo": { "total": 1,
                                                                 "valid": 1,
                                                                 "rank": 16 },
@@ -79,11 +79,11 @@
                                               "wp:section": { "alt-ergo": 
                                                                 { "total": 10,
                                                                   "valid": 10,
-                                                                  "rank": 16 },
+                                                                  "rank": 17 },
                                                               "qed": 
                                                                 { "total": 1,
                                                                   "valid": 1 },
                                                               "wp:main": 
                                                                 { "total": 11,
                                                                   "valid": 11,
-                                                                  "rank": 16 } } } } }
+                                                                  "rank": 17 } } } } }
diff --git a/src/plugins/wp/tests/wp_gallery/binary-multiplication.c.0.report.json b/src/plugins/wp/tests/wp_gallery/binary-multiplication.c.0.report.json
index 5ea485d2a0af12d325a0cb524608845346664671..c033820912ee4cc581d52e26d70abe6b30d842df 100644
--- a/src/plugins/wp/tests/wp_gallery/binary-multiplication.c.0.report.json
+++ b/src/plugins/wp/tests/wp_gallery/binary-multiplication.c.0.report.json
@@ -52,19 +52,19 @@
                                                   "wp:main": { "total": 1,
                                                                "valid": 1,
                                                                "rank": 3 } },
-                                              "BinaryMultiplication_loop_term": 
+                                              "BinaryMultiplication_loop_variant": 
                                                 { "alt-ergo": { "total": 2,
                                                                 "valid": 2,
-                                                                "rank": 20 },
+                                                                "rank": 19 },
                                                   "wp:main": { "total": 2,
                                                                "valid": 2,
-                                                               "rank": 20 } },
-                                              "BinaryMultiplication_loop_assign": 
+                                                               "rank": 19 } },
+                                              "BinaryMultiplication_loop_assigns": 
                                                 { "qed": { "total": 1,
                                                            "valid": 1 },
                                                   "wp:main": { "total": 1,
                                                                "valid": 1 } },
-                                              "BinaryMultiplication_post_product": 
+                                              "BinaryMultiplication_ensures_product": 
                                                 { "alt-ergo": { "total": 1,
                                                                 "valid": 1,
                                                                 "rank": 34 },
diff --git a/src/plugins/wp/tests/wp_gallery/frama_c_exo1_solved.c.0.report.json b/src/plugins/wp/tests/wp_gallery/frama_c_exo1_solved.c.0.report.json
index 35328b8f662304169588f86edc22b36e39809b3c..0296ba8fb132318ca314eafccff82c1685359d9e 100644
--- a/src/plugins/wp/tests/wp_gallery/frama_c_exo1_solved.c.0.report.json
+++ b/src/plugins/wp/tests/wp_gallery/frama_c_exo1_solved.c.0.report.json
@@ -1,6 +1,6 @@
-{ "wp:global": { "alt-ergo": { "total": 9, "valid": 9, "rank": 31 },
+{ "wp:global": { "alt-ergo": { "total": 9, "valid": 9, "rank": 32 },
                  "qed": { "total": 6, "valid": 6 },
-                 "wp:main": { "total": 15, "valid": 15, "rank": 31 } },
+                 "wp:main": { "total": 15, "valid": 15, "rank": 32 } },
   "wp:functions": { "exo1": { "exo1_assert_rte_signed_overflow_3": { "alt-ergo": 
                                                                     { "total": 1,
                                                                     "valid": 1,
@@ -41,51 +41,52 @@
                                                                     { "total": 1,
                                                                     "valid": 1,
                                                                     "rank": 3 } },
-                              "exo1_loop_inv_2": { "alt-ergo": { "total": 1,
-                                                                 "valid": 1,
-                                                                 "rank": 31 },
-                                                   "qed": { "total": 1,
-                                                            "valid": 1 },
-                                                   "wp:main": { "total": 2,
-                                                                "valid": 2,
-                                                                "rank": 31 } },
-                              "exo1_loop_inv": { "alt-ergo": { "total": 1,
+                              "exo1_loop_invariant_2": { "alt-ergo": 
+                                                           { "total": 1,
+                                                             "valid": 1,
+                                                             "rank": 32 },
+                                                         "qed": { "total": 1,
+                                                                  "valid": 1 },
+                                                         "wp:main": { "total": 2,
+                                                                    "valid": 2,
+                                                                    "rank": 32 } },
+                              "exo1_loop_invariant": { "alt-ergo": { "total": 1,
+                                                                    "valid": 1,
+                                                                    "rank": 10 },
+                                                       "qed": { "total": 1,
+                                                                "valid": 1 },
+                                                       "wp:main": { "total": 2,
+                                                                    "valid": 2,
+                                                                    "rank": 10 } },
+                              "exo1_loop_variant": { "qed": { "total": 2,
+                                                              "valid": 2 },
+                                                     "wp:main": { "total": 2,
+                                                                  "valid": 2 } },
+                              "exo1_assigns": { "qed": { "total": 1,
+                                                         "valid": 1 },
+                                                "wp:main": { "total": 1,
+                                                             "valid": 1 } },
+                              "exo1_loop_assigns": { "qed": { "total": 1,
+                                                              "valid": 1 },
+                                                     "wp:main": { "total": 1,
+                                                                  "valid": 1 } },
+                              "exo1_ensures_2": { "alt-ergo": { "total": 1,
+                                                                "valid": 1,
+                                                                "rank": 8 },
+                                                  "wp:main": { "total": 1,
                                                                "valid": 1,
-                                                               "rank": 10 },
-                                                 "qed": { "total": 1,
-                                                          "valid": 1 },
-                                                 "wp:main": { "total": 2,
-                                                              "valid": 2,
-                                                              "rank": 10 } },
-                              "exo1_loop_term": { "qed": { "total": 2,
-                                                           "valid": 2 },
-                                                  "wp:main": { "total": 2,
-                                                               "valid": 2 } },
-                              "exo1_assign": { "qed": { "total": 1,
-                                                        "valid": 1 },
-                                               "wp:main": { "total": 1,
-                                                            "valid": 1 } },
-                              "exo1_loop_assign": { "qed": { "total": 1,
-                                                             "valid": 1 },
-                                                    "wp:main": { "total": 1,
-                                                                 "valid": 1 } },
-                              "exo1_post_2": { "alt-ergo": { "total": 1,
+                                                               "rank": 8 } },
+                              "exo1_ensures": { "alt-ergo": { "total": 1,
+                                                              "valid": 1,
+                                                              "rank": 5 },
+                                                "wp:main": { "total": 1,
                                                              "valid": 1,
-                                                             "rank": 7 },
-                                               "wp:main": { "total": 1,
-                                                            "valid": 1,
-                                                            "rank": 7 } },
-                              "exo1_post": { "alt-ergo": { "total": 1,
-                                                           "valid": 1,
-                                                           "rank": 4 },
-                                             "wp:main": { "total": 1,
-                                                          "valid": 1,
-                                                          "rank": 4 } },
+                                                             "rank": 5 } },
                               "wp:section": { "alt-ergo": { "total": 9,
                                                             "valid": 9,
-                                                            "rank": 31 },
+                                                            "rank": 32 },
                                               "qed": { "total": 6,
                                                        "valid": 6 },
                                               "wp:main": { "total": 15,
                                                            "valid": 15,
-                                                           "rank": 31 } } } } }
+                                                           "rank": 32 } } } } }
diff --git a/src/plugins/wp/tests/wp_gallery/frama_c_exo2_solved.c.0.report.json b/src/plugins/wp/tests/wp_gallery/frama_c_exo2_solved.c.0.report.json
index 7250532e2b57e0d0d2feadb78e0c413848eebc50..993bf347380d1f8f1b29ab1e163e76a2265c44b9 100644
--- a/src/plugins/wp/tests/wp_gallery/frama_c_exo2_solved.c.0.report.json
+++ b/src/plugins/wp/tests/wp_gallery/frama_c_exo2_solved.c.0.report.json
@@ -1,6 +1,6 @@
-{ "wp:global": { "alt-ergo": { "total": 14, "valid": 14, "rank": 37 },
+{ "wp:global": { "alt-ergo": { "total": 14, "valid": 14, "rank": 38 },
                  "qed": { "total": 9, "valid": 9 },
-                 "wp:main": { "total": 23, "valid": 23, "rank": 37 } },
+                 "wp:main": { "total": 23, "valid": 23, "rank": 38 } },
   "wp:functions": { "max_subarray": { "max_subarray_assert_rte_mem_access": 
                                         { "alt-ergo": { "total": 1,
                                                         "valid": 1,
@@ -8,116 +8,101 @@
                                           "wp:main": { "total": 1,
                                                        "valid": 1,
                                                        "rank": 26 } },
-                                      "max_subarray_loop_inv_8": { "alt-ergo": 
-                                                                    { "total": 2,
-                                                                    "valid": 2,
-                                                                    "rank": 37 },
-                                                                   "wp:main": 
-                                                                    { "total": 2,
-                                                                    "valid": 2,
-                                                                    "rank": 37 } },
-                                      "max_subarray_loop_inv_7": { "alt-ergo": 
-                                                                    { "total": 2,
-                                                                    "valid": 2,
-                                                                    "rank": 26 },
-                                                                   "wp:main": 
-                                                                    { "total": 2,
-                                                                    "valid": 2,
-                                                                    "rank": 26 } },
-                                      "max_subarray_loop_inv_6": { "alt-ergo": 
-                                                                    { "total": 2,
-                                                                    "valid": 2,
-                                                                    "rank": 13 },
-                                                                   "wp:main": 
-                                                                    { "total": 2,
-                                                                    "valid": 2,
-                                                                    "rank": 13 } },
-                                      "max_subarray_loop_inv_5": { "alt-ergo": 
-                                                                    { "total": 2,
-                                                                    "valid": 2,
-                                                                    "rank": 13 },
-                                                                   "wp:main": 
-                                                                    { "total": 2,
-                                                                    "valid": 2,
-                                                                    "rank": 13 } },
-                                      "max_subarray_loop_inv_4": { "qed": 
+                                      "max_subarray_loop_invariant_8": 
+                                        { "alt-ergo": { "total": 2,
+                                                        "valid": 2,
+                                                        "rank": 38 },
+                                          "wp:main": { "total": 2,
+                                                       "valid": 2,
+                                                       "rank": 38 } },
+                                      "max_subarray_loop_invariant_7": 
+                                        { "alt-ergo": { "total": 2,
+                                                        "valid": 2,
+                                                        "rank": 27 },
+                                          "wp:main": { "total": 2,
+                                                       "valid": 2,
+                                                       "rank": 27 } },
+                                      "max_subarray_loop_invariant_6": 
+                                        { "alt-ergo": { "total": 2,
+                                                        "valid": 2,
+                                                        "rank": 14 },
+                                          "wp:main": { "total": 2,
+                                                       "valid": 2,
+                                                       "rank": 14 } },
+                                      "max_subarray_loop_invariant_5": 
+                                        { "alt-ergo": { "total": 2,
+                                                        "valid": 2,
+                                                        "rank": 14 },
+                                          "wp:main": { "total": 2,
+                                                       "valid": 2,
+                                                       "rank": 14 } },
+                                      "max_subarray_loop_invariant_4": 
+                                        { "qed": { "total": 2, "valid": 2 },
+                                          "wp:main": { "total": 2,
+                                                       "valid": 2 } },
+                                      "max_subarray_loop_invariant_3": 
+                                        { "alt-ergo": { "total": 1,
+                                                        "valid": 1,
+                                                        "rank": 12 },
+                                          "qed": { "total": 1, "valid": 1 },
+                                          "wp:main": { "total": 2,
+                                                       "valid": 2,
+                                                       "rank": 12 } },
+                                      "max_subarray_loop_invariant_2": 
+                                        { "alt-ergo": { "total": 1,
+                                                        "valid": 1,
+                                                        "rank": 15 },
+                                          "qed": { "total": 1, "valid": 1 },
+                                          "wp:main": { "total": 2,
+                                                       "valid": 2,
+                                                       "rank": 15 } },
+                                      "max_subarray_loop_invariant": 
+                                        { "alt-ergo": { "total": 1,
+                                                        "valid": 1,
+                                                        "rank": 9 },
+                                          "qed": { "total": 1, "valid": 1 },
+                                          "wp:main": { "total": 2,
+                                                       "valid": 2,
+                                                       "rank": 9 } },
+                                      "max_subarray_loop_variant": { "qed": 
                                                                     { "total": 2,
                                                                     "valid": 2 },
-                                                                   "wp:main": 
+                                                                    "wp:main": 
                                                                     { "total": 2,
                                                                     "valid": 2 } },
-                                      "max_subarray_loop_inv_3": { "alt-ergo": 
-                                                                    { "total": 1,
-                                                                    "valid": 1,
-                                                                    "rank": 11 },
-                                                                   "qed": 
+                                      "max_subarray_assigns": { "qed": 
+                                                                  { "total": 1,
+                                                                    "valid": 1 },
+                                                                "wp:main": 
+                                                                  { "total": 1,
+                                                                    "valid": 1 } },
+                                      "max_subarray_loop_assigns": { "qed": 
                                                                     { "total": 1,
                                                                     "valid": 1 },
-                                                                   "wp:main": 
-                                                                    { "total": 2,
-                                                                    "valid": 2,
-                                                                    "rank": 11 } },
-                                      "max_subarray_loop_inv_2": { "alt-ergo": 
+                                                                    "wp:main": 
                                                                     { "total": 1,
-                                                                    "valid": 1,
-                                                                    "rank": 14 },
-                                                                   "qed": 
+                                                                    "valid": 1 } },
+                                      "max_subarray_ensures_2": { "alt-ergo": 
                                                                     { "total": 1,
-                                                                    "valid": 1 },
-                                                                   "wp:main": 
-                                                                    { "total": 2,
-                                                                    "valid": 2,
-                                                                    "rank": 14 } },
-                                      "max_subarray_loop_inv": { "alt-ergo": 
-                                                                   { "total": 1,
                                                                     "valid": 1,
-                                                                    "rank": 8 },
-                                                                 "qed": 
-                                                                   { "total": 1,
-                                                                    "valid": 1 },
-                                                                 "wp:main": 
-                                                                   { "total": 2,
-                                                                    "valid": 2,
-                                                                    "rank": 8 } },
-                                      "max_subarray_loop_term": { "qed": 
-                                                                    { "total": 2,
-                                                                    "valid": 2 },
+                                                                    "rank": 20 },
                                                                   "wp:main": 
-                                                                    { "total": 2,
-                                                                    "valid": 2 } },
-                                      "max_subarray_assign": { "qed": 
-                                                                 { "total": 1,
-                                                                   "valid": 1 },
-                                                               "wp:main": 
-                                                                 { "total": 1,
-                                                                   "valid": 1 } },
-                                      "max_subarray_loop_assign": { "qed": 
-                                                                    { "total": 1,
-                                                                    "valid": 1 },
-                                                                    "wp:main": 
                                                                     { "total": 1,
-                                                                    "valid": 1 } },
-                                      "max_subarray_post_2": { "alt-ergo": 
-                                                                 { "total": 1,
-                                                                   "valid": 1,
-                                                                   "rank": 20 },
-                                                               "wp:main": 
-                                                                 { "total": 1,
-                                                                   "valid": 1,
-                                                                   "rank": 20 } },
-                                      "max_subarray_post": { "alt-ergo": 
-                                                               { "total": 1,
-                                                                 "valid": 1,
-                                                                 "rank": 8 },
-                                                             "wp:main": 
-                                                               { "total": 1,
-                                                                 "valid": 1,
-                                                                 "rank": 8 } },
+                                                                    "valid": 1,
+                                                                    "rank": 20 } },
+                                      "max_subarray_ensures": { "alt-ergo": 
+                                                                  { "total": 1,
+                                                                    "valid": 1,
+                                                                    "rank": 9 },
+                                                                "wp:main": 
+                                                                  { "total": 1,
+                                                                    "valid": 1,
+                                                                    "rank": 9 } },
                                       "wp:section": { "alt-ergo": { "total": 14,
                                                                     "valid": 14,
-                                                                    "rank": 37 },
+                                                                    "rank": 38 },
                                                       "qed": { "total": 9,
                                                                "valid": 9 },
                                                       "wp:main": { "total": 23,
                                                                    "valid": 23,
-                                                                   "rank": 37 } } } } }
+                                                                   "rank": 38 } } } } }
diff --git a/src/plugins/wp/tests/wp_gallery/frama_c_exo3_solved.old.c.0.report.json b/src/plugins/wp/tests/wp_gallery/frama_c_exo3_solved.old.c.0.report.json
index a83c2c21e3ba443f38ae38fd4a100f39486dc8b0..b7940a83d5ccde38dfd58269ad683b0360911e29 100644
--- a/src/plugins/wp/tests/wp_gallery/frama_c_exo3_solved.old.c.0.report.json
+++ b/src/plugins/wp/tests/wp_gallery/frama_c_exo3_solved.old.c.0.report.json
@@ -83,11 +83,11 @@
                                         "equal_elements_assert_2": { "alt-ergo": 
                                                                     { "total": 1,
                                                                     "valid": 1,
-                                                                    "rank": 45 },
+                                                                    "rank": 46 },
                                                                     "wp:main": 
                                                                     { "total": 1,
                                                                     "valid": 1,
-                                                                    "rank": 45 } },
+                                                                    "rank": 46 } },
                                         "equal_elements_assert": { "alt-ergo": 
                                                                     { "total": 1,
                                                                     "valid": 1,
@@ -96,14 +96,14 @@
                                                                     { "total": 1,
                                                                     "valid": 1,
                                                                     "rank": 32 } },
-                                        "equal_elements_loop_inv_10": 
+                                        "equal_elements_loop_invariant_10": 
                                           { "alt-ergo": { "total": 2,
                                                           "valid": 2,
                                                           "rank": 51 },
                                             "wp:main": { "total": 2,
                                                          "valid": 2,
                                                          "rank": 51 } },
-                                        "equal_elements_loop_inv_9": 
+                                        "equal_elements_loop_invariant_9": 
                                           { "alt-ergo": { "total": 1,
                                                           "valid": 1,
                                                           "rank": 43 },
@@ -111,22 +111,22 @@
                                             "wp:main": { "total": 2,
                                                          "valid": 2,
                                                          "rank": 43 } },
-                                        "equal_elements_loop_inv_8": 
+                                        "equal_elements_loop_invariant_8": 
                                           { "alt-ergo": { "total": 2,
                                                           "valid": 2,
                                                           "rank": 38 },
                                             "wp:main": { "total": 2,
                                                          "valid": 2,
                                                          "rank": 38 } },
-                                        "equal_elements_loop_inv_7": 
+                                        "equal_elements_loop_invariant_7": 
                                           { "alt-ergo": { "total": 1,
                                                           "valid": 1,
-                                                          "rank": 21 },
+                                                          "rank": 22 },
                                             "qed": { "total": 1, "valid": 1 },
                                             "wp:main": { "total": 2,
                                                          "valid": 2,
-                                                         "rank": 21 } },
-                                        "equal_elements_loop_inv_6": 
+                                                         "rank": 22 } },
+                                        "equal_elements_loop_invariant_6": 
                                           { "alt-ergo": { "total": 1,
                                                           "valid": 1,
                                                           "rank": 50 },
@@ -134,7 +134,7 @@
                                             "wp:main": { "total": 2,
                                                          "valid": 2,
                                                          "rank": 50 } },
-                                        "equal_elements_loop_inv_5": 
+                                        "equal_elements_loop_invariant_5": 
                                           { "alt-ergo": { "total": 1,
                                                           "valid": 1,
                                                           "rank": 56 },
@@ -142,83 +142,78 @@
                                             "wp:main": { "total": 2,
                                                          "valid": 2,
                                                          "rank": 56 } },
-                                        "equal_elements_loop_inv_4": 
+                                        "equal_elements_loop_invariant_4": 
                                           { "qed": { "total": 2, "valid": 2 },
                                             "wp:main": { "total": 2,
                                                          "valid": 2 } },
-                                        "equal_elements_loop_inv_3": 
+                                        "equal_elements_loop_invariant_3": 
                                           { "alt-ergo": { "total": 1,
                                                           "valid": 1,
-                                                          "rank": 8 },
+                                                          "rank": 9 },
                                             "qed": { "total": 1, "valid": 1 },
                                             "wp:main": { "total": 2,
                                                          "valid": 2,
-                                                         "rank": 8 } },
-                                        "equal_elements_loop_inv_2": 
+                                                         "rank": 9 } },
+                                        "equal_elements_loop_invariant_2": 
                                           { "alt-ergo": { "total": 1,
                                                           "valid": 1,
-                                                          "rank": 18 },
+                                                          "rank": 19 },
                                             "qed": { "total": 1, "valid": 1 },
                                             "wp:main": { "total": 2,
                                                          "valid": 2,
-                                                         "rank": 18 } },
-                                        "equal_elements_loop_inv": { "alt-ergo": 
-                                                                    { "total": 1,
-                                                                    "valid": 1,
-                                                                    "rank": 4 },
-                                                                    "qed": 
-                                                                    { "total": 1,
-                                                                    "valid": 1 },
-                                                                    "wp:main": 
-                                                                    { "total": 2,
-                                                                    "valid": 2,
-                                                                    "rank": 4 } },
-                                        "equal_elements_loop_term_2": 
+                                                         "rank": 19 } },
+                                        "equal_elements_loop_invariant": 
+                                          { "alt-ergo": { "total": 1,
+                                                          "valid": 1,
+                                                          "rank": 5 },
+                                            "qed": { "total": 1, "valid": 1 },
+                                            "wp:main": { "total": 2,
+                                                         "valid": 2,
+                                                         "rank": 5 } },
+                                        "equal_elements_loop_variant_2": 
                                           { "qed": { "total": 2, "valid": 2 },
                                             "wp:main": { "total": 2,
                                                          "valid": 2 } },
-                                        "equal_elements_loop_term": { "qed": 
-                                                                    { "total": 2,
-                                                                    "valid": 2 },
-                                                                    "wp:main": 
-                                                                    { "total": 2,
-                                                                    "valid": 2 } },
-                                        "equal_elements_assign": { "qed": 
+                                        "equal_elements_loop_variant": 
+                                          { "qed": { "total": 2, "valid": 2 },
+                                            "wp:main": { "total": 2,
+                                                         "valid": 2 } },
+                                        "equal_elements_assigns": { "qed": 
                                                                     { "total": 3,
                                                                     "valid": 3 },
-                                                                   "wp:main": 
+                                                                    "wp:main": 
                                                                     { "total": 3,
                                                                     "valid": 3 } },
-                                        "equal_elements_loop_assign_2": 
+                                        "equal_elements_loop_assigns_2": 
                                           { "qed": { "total": 1, "valid": 1 },
                                             "wp:main": { "total": 1,
                                                          "valid": 1 } },
-                                        "equal_elements_loop_assign": 
+                                        "equal_elements_loop_assigns": 
                                           { "qed": { "total": 1, "valid": 1 },
                                             "wp:main": { "total": 1,
                                                          "valid": 1 } },
-                                        "equal_elements_post_3": { "alt-ergo": 
+                                        "equal_elements_ensures_3": { "alt-ergo": 
                                                                     { "total": 1,
                                                                     "valid": 1,
-                                                                    "rank": 23 },
-                                                                   "wp:main": 
+                                                                    "rank": 24 },
+                                                                    "wp:main": 
                                                                     { "total": 1,
                                                                     "valid": 1,
-                                                                    "rank": 23 } },
-                                        "equal_elements_post_2": { "alt-ergo": 
+                                                                    "rank": 24 } },
+                                        "equal_elements_ensures_2": { "alt-ergo": 
                                                                     { "total": 1,
                                                                     "valid": 1,
                                                                     "rank": 32 },
-                                                                   "wp:main": 
+                                                                    "wp:main": 
                                                                     { "total": 1,
                                                                     "valid": 1,
                                                                     "rank": 32 } },
-                                        "equal_elements_post": { "alt-ergo": 
-                                                                   { "total": 1,
+                                        "equal_elements_ensures": { "alt-ergo": 
+                                                                    { "total": 1,
                                                                     "valid": 1,
                                                                     "rank": 28 },
-                                                                 "wp:main": 
-                                                                   { "total": 1,
+                                                                    "wp:main": 
+                                                                    { "total": 1,
                                                                     "valid": 1,
                                                                     "rank": 28 } },
                                         "wp:section": { "alt-ergo": { "total": 21,
diff --git a/src/plugins/wp/tests/wp_gallery/frama_c_exo3_solved.old.v2.c.0.report.json b/src/plugins/wp/tests/wp_gallery/frama_c_exo3_solved.old.v2.c.0.report.json
index faf2646774a9fb497970774b004dab29bd512597..862d85527133d13b445534d58184c0857b573160 100644
--- a/src/plugins/wp/tests/wp_gallery/frama_c_exo3_solved.old.v2.c.0.report.json
+++ b/src/plugins/wp/tests/wp_gallery/frama_c_exo3_solved.old.v2.c.0.report.json
@@ -1,6 +1,6 @@
-{ "wp:global": { "alt-ergo": { "total": 23, "valid": 23, "rank": 38 },
+{ "wp:global": { "alt-ergo": { "total": 23, "valid": 23, "rank": 39 },
                  "qed": { "total": 28, "valid": 28 },
-                 "wp:main": { "total": 51, "valid": 51, "rank": 38 } },
+                 "wp:main": { "total": 51, "valid": 51, "rank": 39 } },
   "wp:functions": { "equal_elements": { "equal_elements_assert_rte_signed_overflow_2": 
                                           { "alt-ergo": { "total": 1,
                                                           "valid": 1,
@@ -80,35 +80,35 @@
                                           { "qed": { "total": 1, "valid": 1 },
                                             "wp:main": { "total": 1,
                                                          "valid": 1 } },
-                                        "equal_elements_loop_inv_v2_sound2": 
+                                        "equal_elements_loop_invariant_v2_sound2": 
                                           { "alt-ergo": { "total": 2,
                                                           "valid": 2,
-                                                          "rank": 36 },
+                                                          "rank": 37 },
                                             "wp:main": { "total": 2,
                                                          "valid": 2,
-                                                         "rank": 36 } },
-                                        "equal_elements_loop_inv_v1_sound2": 
+                                                         "rank": 37 } },
+                                        "equal_elements_loop_invariant_v1_sound2": 
                                           { "alt-ergo": { "total": 2,
                                                           "valid": 2,
-                                                          "rank": 20 },
+                                                          "rank": 22 },
                                             "wp:main": { "total": 2,
                                                          "valid": 2,
-                                                         "rank": 20 } },
-                                        "equal_elements_loop_inv_seen_sound2": 
+                                                         "rank": 22 } },
+                                        "equal_elements_loop_invariant_seen_sound2": 
                                           { "alt-ergo": { "total": 2,
                                                           "valid": 2,
                                                           "rank": 32 },
                                             "wp:main": { "total": 2,
                                                          "valid": 2,
                                                          "rank": 32 } },
-                                        "equal_elements_loop_inv_seen_sound1": 
+                                        "equal_elements_loop_invariant_seen_sound1": 
                                           { "alt-ergo": { "total": 2,
                                                           "valid": 2,
-                                                          "rank": 38 },
+                                                          "rank": 39 },
                                             "wp:main": { "total": 2,
                                                          "valid": 2,
-                                                         "rank": 38 } },
-                                        "equal_elements_loop_inv_v1_v2_diff": 
+                                                         "rank": 39 } },
+                                        "equal_elements_loop_invariant_v1_v2_diff": 
                                           { "alt-ergo": { "total": 1,
                                                           "valid": 1,
                                                           "rank": 15 },
@@ -116,7 +116,7 @@
                                             "wp:main": { "total": 2,
                                                          "valid": 2,
                                                          "rank": 15 } },
-                                        "equal_elements_loop_inv_v2_sound1": 
+                                        "equal_elements_loop_invariant_v2_sound1": 
                                           { "alt-ergo": { "total": 1,
                                                           "valid": 1,
                                                           "rank": 32 },
@@ -124,26 +124,26 @@
                                             "wp:main": { "total": 2,
                                                          "valid": 2,
                                                          "rank": 32 } },
-                                        "equal_elements_loop_inv_v1_sound1": 
+                                        "equal_elements_loop_invariant_v1_sound1": 
                                           { "alt-ergo": { "total": 1,
                                                           "valid": 1,
-                                                          "rank": 24 },
+                                                          "rank": 25 },
                                             "qed": { "total": 1, "valid": 1 },
                                             "wp:main": { "total": 2,
                                                          "valid": 2,
-                                                         "rank": 24 } },
-                                        "equal_elements_loop_inv_v1_first": 
+                                                         "rank": 25 } },
+                                        "equal_elements_loop_invariant_v1_first": 
                                           { "qed": { "total": 2, "valid": 2 },
                                             "wp:main": { "total": 2,
                                                          "valid": 2 } },
-                                        "equal_elements_loop_inv_bound": 
+                                        "equal_elements_loop_invariant_bound": 
                                           { "alt-ergo": { "total": 1,
                                                           "valid": 1,
-                                                          "rank": 10 },
+                                                          "rank": 11 },
                                             "qed": { "total": 1, "valid": 1 },
                                             "wp:main": { "total": 2,
                                                          "valid": 2,
-                                                         "rank": 10 } },
+                                                         "rank": 11 } },
                                         "equal_elements_assert_set_at_1": 
                                           { "alt-ergo": { "total": 1,
                                                           "valid": 1,
@@ -151,7 +151,7 @@
                                             "wp:main": { "total": 1,
                                                          "valid": 1,
                                                          "rank": 7 } },
-                                        "equal_elements_loop_inv_set_at_0": 
+                                        "equal_elements_loop_invariant_set_at_0": 
                                           { "alt-ergo": { "total": 1,
                                                           "valid": 1,
                                                           "rank": 10 },
@@ -159,67 +159,62 @@
                                             "wp:main": { "total": 2,
                                                          "valid": 2,
                                                          "rank": 10 } },
-                                        "equal_elements_loop_inv": { "alt-ergo": 
-                                                                    { "total": 1,
-                                                                    "valid": 1,
-                                                                    "rank": 7 },
-                                                                    "qed": 
-                                                                    { "total": 1,
-                                                                    "valid": 1 },
-                                                                    "wp:main": 
-                                                                    { "total": 2,
-                                                                    "valid": 2,
-                                                                    "rank": 7 } },
-                                        "equal_elements_loop_term_2": 
+                                        "equal_elements_loop_invariant": 
+                                          { "alt-ergo": { "total": 1,
+                                                          "valid": 1,
+                                                          "rank": 7 },
+                                            "qed": { "total": 1, "valid": 1 },
+                                            "wp:main": { "total": 2,
+                                                         "valid": 2,
+                                                         "rank": 7 } },
+                                        "equal_elements_loop_variant_2": 
                                           { "qed": { "total": 2, "valid": 2 },
                                             "wp:main": { "total": 2,
                                                          "valid": 2 } },
-                                        "equal_elements_loop_term": { "qed": 
-                                                                    { "total": 2,
-                                                                    "valid": 2 },
-                                                                    "wp:main": 
-                                                                    { "total": 2,
-                                                                    "valid": 2 } },
-                                        "equal_elements_assign": { "qed": 
+                                        "equal_elements_loop_variant": 
+                                          { "qed": { "total": 2, "valid": 2 },
+                                            "wp:main": { "total": 2,
+                                                         "valid": 2 } },
+                                        "equal_elements_assigns": { "qed": 
                                                                     { "total": 3,
                                                                     "valid": 3 },
-                                                                   "wp:main": 
+                                                                    "wp:main": 
                                                                     { "total": 3,
                                                                     "valid": 3 } },
-                                        "equal_elements_loop_assign_2": 
+                                        "equal_elements_loop_assigns_2": 
                                           { "qed": { "total": 1, "valid": 1 },
                                             "wp:main": { "total": 1,
                                                          "valid": 1 } },
-                                        "equal_elements_loop_assign": 
+                                        "equal_elements_loop_assigns": 
                                           { "qed": { "total": 1, "valid": 1 },
                                             "wp:main": { "total": 1,
                                                          "valid": 1 } },
-                                        "equal_elements_post_v1_v2_diff": 
+                                        "equal_elements_ensures_v1_v2_diff": 
                                           { "alt-ergo": { "total": 1,
                                                           "valid": 1,
-                                                          "rank": 11 },
+                                                          "rank": 12 },
                                             "wp:main": { "total": 1,
                                                          "valid": 1,
-                                                         "rank": 11 } },
-                                        "equal_elements_post_v2_good": 
+                                                         "rank": 12 } },
+                                        "equal_elements_ensures_v2_good": 
                                           { "alt-ergo": { "total": 1,
                                                           "valid": 1,
                                                           "rank": 25 },
                                             "wp:main": { "total": 1,
                                                          "valid": 1,
                                                          "rank": 25 } },
-                                        "equal_elements_post_v1_good": 
+                                        "equal_elements_ensures_v1_good": 
                                           { "alt-ergo": { "total": 1,
                                                           "valid": 1,
-                                                          "rank": 13 },
+                                                          "rank": 14 },
                                             "wp:main": { "total": 1,
                                                          "valid": 1,
-                                                         "rank": 13 } },
+                                                         "rank": 14 } },
                                         "wp:section": { "alt-ergo": { "total": 23,
                                                                     "valid": 23,
-                                                                    "rank": 38 },
+                                                                    "rank": 39 },
                                                         "qed": { "total": 28,
                                                                  "valid": 28 },
                                                         "wp:main": { "total": 51,
                                                                     "valid": 51,
-                                                                    "rank": 38 } } } } }
+                                                                    "rank": 39 } } } } }
diff --git a/src/plugins/wp/tests/wp_gallery/frama_c_exo3_solved.simplified.c.0.report.json b/src/plugins/wp/tests/wp_gallery/frama_c_exo3_solved.simplified.c.0.report.json
index 980ed8a65818b5a813533a5d28ba6546c4d7f9e1..3d5440b7b470cca3e5fdd813dcb47a16db43fa96 100644
--- a/src/plugins/wp/tests/wp_gallery/frama_c_exo3_solved.simplified.c.0.report.json
+++ b/src/plugins/wp/tests/wp_gallery/frama_c_exo3_solved.simplified.c.0.report.json
@@ -77,82 +77,88 @@
                                                                "wp:main": 
                                                                  { "total": 1,
                                                                    "valid": 1 } },
-                              "pair_loop_inv_6": { "alt-ergo": { "total": 2,
-                                                                 "valid": 2,
-                                                                 "rank": 17 },
-                                                   "wp:main": { "total": 2,
-                                                                "valid": 2,
-                                                                "rank": 17 } },
-                              "pair_loop_inv_5": { "alt-ergo": { "total": 1,
-                                                                 "valid": 1,
-                                                                 "rank": 16 },
-                                                   "qed": { "total": 1,
-                                                            "valid": 1 },
-                                                   "wp:main": { "total": 2,
-                                                                "valid": 2,
-                                                                "rank": 16 } },
-                              "pair_loop_inv_4": { "alt-ergo": { "total": 2,
-                                                                 "valid": 2,
-                                                                 "rank": 17 },
-                                                   "wp:main": { "total": 2,
-                                                                "valid": 2,
-                                                                "rank": 17 } },
-                              "pair_loop_inv_3": { "alt-ergo": { "total": 1,
-                                                                 "valid": 1,
-                                                                 "rank": 6 },
-                                                   "qed": { "total": 1,
-                                                            "valid": 1 },
-                                                   "wp:main": { "total": 2,
-                                                                "valid": 2,
-                                                                "rank": 6 } },
-                              "pair_loop_inv_2": { "alt-ergo": { "total": 1,
-                                                                 "valid": 1,
-                                                                 "rank": 5 },
-                                                   "qed": { "total": 1,
-                                                            "valid": 1 },
-                                                   "wp:main": { "total": 2,
-                                                                "valid": 2,
-                                                                "rank": 5 } },
-                              "pair_loop_inv": { "alt-ergo": { "total": 1,
-                                                               "valid": 1,
-                                                               "rank": 4 },
-                                                 "qed": { "total": 1,
-                                                          "valid": 1 },
-                                                 "wp:main": { "total": 2,
-                                                              "valid": 2,
-                                                              "rank": 4 } },
-                              "pair_loop_term_2": { "qed": { "total": 2,
-                                                             "valid": 2 },
-                                                    "wp:main": { "total": 2,
-                                                                 "valid": 2 } },
-                              "pair_loop_term": { "qed": { "total": 2,
-                                                           "valid": 2 },
-                                                  "wp:main": { "total": 2,
-                                                               "valid": 2 } },
-                              "pair_assign": { "qed": { "total": 4,
-                                                        "valid": 4 },
-                                               "wp:main": { "total": 4,
-                                                            "valid": 4 } },
-                              "pair_loop_assign_2": { "qed": { "total": 1,
-                                                               "valid": 1 },
-                                                      "wp:main": { "total": 1,
-                                                                   "valid": 1 } },
-                              "pair_loop_assign": { "qed": { "total": 1,
-                                                             "valid": 1 },
-                                                    "wp:main": { "total": 1,
-                                                                 "valid": 1 } },
-                              "pair_has_pair_post": { "alt-ergo": { "total": 1,
+                              "pair_loop_invariant_6": { "alt-ergo": 
+                                                           { "total": 2,
+                                                             "valid": 2,
+                                                             "rank": 17 },
+                                                         "wp:main": { "total": 2,
+                                                                    "valid": 2,
+                                                                    "rank": 17 } },
+                              "pair_loop_invariant_5": { "alt-ergo": 
+                                                           { "total": 1,
+                                                             "valid": 1,
+                                                             "rank": 17 },
+                                                         "qed": { "total": 1,
+                                                                  "valid": 1 },
+                                                         "wp:main": { "total": 2,
+                                                                    "valid": 2,
+                                                                    "rank": 17 } },
+                              "pair_loop_invariant_4": { "alt-ergo": 
+                                                           { "total": 2,
+                                                             "valid": 2,
+                                                             "rank": 17 },
+                                                         "wp:main": { "total": 2,
+                                                                    "valid": 2,
+                                                                    "rank": 17 } },
+                              "pair_loop_invariant_3": { "alt-ergo": 
+                                                           { "total": 1,
+                                                             "valid": 1,
+                                                             "rank": 6 },
+                                                         "qed": { "total": 1,
+                                                                  "valid": 1 },
+                                                         "wp:main": { "total": 2,
+                                                                    "valid": 2,
+                                                                    "rank": 6 } },
+                              "pair_loop_invariant_2": { "alt-ergo": 
+                                                           { "total": 1,
+                                                             "valid": 1,
+                                                             "rank": 5 },
+                                                         "qed": { "total": 1,
+                                                                  "valid": 1 },
+                                                         "wp:main": { "total": 2,
+                                                                    "valid": 2,
+                                                                    "rank": 5 } },
+                              "pair_loop_invariant": { "alt-ergo": { "total": 1,
                                                                     "valid": 1,
-                                                                    "rank": 22 },
-                                                      "wp:main": { "total": 1,
-                                                                   "valid": 1,
-                                                                   "rank": 22 } },
-                              "pair_no_pair_post": { "alt-ergo": { "total": 1,
-                                                                   "valid": 1,
-                                                                   "rank": 15 },
+                                                                    "rank": 4 },
+                                                       "qed": { "total": 1,
+                                                                "valid": 1 },
+                                                       "wp:main": { "total": 2,
+                                                                    "valid": 2,
+                                                                    "rank": 4 } },
+                              "pair_loop_variant_2": { "qed": { "total": 2,
+                                                                "valid": 2 },
+                                                       "wp:main": { "total": 2,
+                                                                    "valid": 2 } },
+                              "pair_loop_variant": { "qed": { "total": 2,
+                                                              "valid": 2 },
+                                                     "wp:main": { "total": 2,
+                                                                  "valid": 2 } },
+                              "pair_assigns": { "qed": { "total": 4,
+                                                         "valid": 4 },
+                                                "wp:main": { "total": 4,
+                                                             "valid": 4 } },
+                              "pair_loop_assigns_2": { "qed": { "total": 1,
+                                                                "valid": 1 },
+                                                       "wp:main": { "total": 1,
+                                                                    "valid": 1 } },
+                              "pair_loop_assigns": { "qed": { "total": 1,
+                                                              "valid": 1 },
                                                      "wp:main": { "total": 1,
-                                                                  "valid": 1,
-                                                                  "rank": 15 } },
+                                                                  "valid": 1 } },
+                              "pair_has_pair_ensures": { "alt-ergo": 
+                                                           { "total": 1,
+                                                             "valid": 1,
+                                                             "rank": 22 },
+                                                         "wp:main": { "total": 1,
+                                                                    "valid": 1,
+                                                                    "rank": 22 } },
+                              "pair_no_pair_ensures": { "alt-ergo": { "total": 1,
+                                                                    "valid": 1,
+                                                                    "rank": 16 },
+                                                        "wp:main": { "total": 1,
+                                                                    "valid": 1,
+                                                                    "rank": 16 } },
                               "wp:section": { "alt-ergo": { "total": 15,
                                                             "valid": 15,
                                                             "rank": 22 },
diff --git a/src/plugins/wp/tests/wp_gallery/frama_c_hashtbl_solved.c.0.report.json b/src/plugins/wp/tests/wp_gallery/frama_c_hashtbl_solved.c.0.report.json
index 0efdbfb59cd974c0adeee48a35a8aff5257e2987..d8f60814f9c19800a8cc2cdf8ff7f90a526ab71b 100644
--- a/src/plugins/wp/tests/wp_gallery/frama_c_hashtbl_solved.c.0.report.json
+++ b/src/plugins/wp/tests/wp_gallery/frama_c_hashtbl_solved.c.0.report.json
@@ -28,57 +28,61 @@
                                                      "rank": 23 },
                                        "wp:main": { "total": 1, "valid": 1,
                                                     "rank": 23 } },
-                                   "eq_string_loop_inv_2": { "alt-ergo": 
-                                                               { "total": 1,
-                                                                 "valid": 1,
-                                                                 "rank": 9 },
-                                                             "qed": { "total": 1,
+                                   "eq_string_loop_invariant_2": { "alt-ergo": 
+                                                                    { "total": 1,
+                                                                    "valid": 1,
+                                                                    "rank": 10 },
+                                                                   "qed": 
+                                                                    { "total": 1,
                                                                     "valid": 1 },
-                                                             "wp:main": 
-                                                               { "total": 2,
-                                                                 "valid": 2,
-                                                                 "rank": 9 } },
-                                   "eq_string_loop_inv": { "alt-ergo": 
-                                                             { "total": 1,
-                                                               "valid": 1,
-                                                               "rank": 5 },
-                                                           "qed": { "total": 1,
+                                                                   "wp:main": 
+                                                                    { "total": 2,
+                                                                    "valid": 2,
+                                                                    "rank": 10 } },
+                                   "eq_string_loop_invariant": { "alt-ergo": 
+                                                                   { "total": 1,
+                                                                    "valid": 1,
+                                                                    "rank": 6 },
+                                                                 "qed": 
+                                                                   { "total": 1,
                                                                     "valid": 1 },
-                                                           "wp:main": 
-                                                             { "total": 2,
-                                                               "valid": 2,
-                                                               "rank": 5 } },
-                                   "eq_string_loop_term": { "qed": { "total": 2,
-                                                                    "valid": 2 },
-                                                            "wp:main": 
-                                                              { "total": 2,
-                                                                "valid": 2 } },
-                                   "eq_string_assign": { "qed": { "total": 4,
-                                                                  "valid": 4 },
-                                                         "wp:main": { "total": 4,
-                                                                    "valid": 4 } },
-                                   "eq_string_loop_assign": { "qed": 
-                                                                { "total": 1,
-                                                                  "valid": 1 },
-                                                              "wp:main": 
-                                                                { "total": 1,
-                                                                  "valid": 1 } },
-                                   "eq_string_not_eq_post": { "alt-ergo": 
-                                                                { "total": 1,
-                                                                  "valid": 1,
-                                                                  "rank": 13 },
-                                                              "wp:main": 
-                                                                { "total": 1,
-                                                                  "valid": 1,
-                                                                  "rank": 13 } },
-                                   "eq_string_eq_post": { "alt-ergo": 
-                                                            { "total": 1,
-                                                              "valid": 1,
-                                                              "rank": 11 },
+                                                                 "wp:main": 
+                                                                   { "total": 2,
+                                                                    "valid": 2,
+                                                                    "rank": 6 } },
+                                   "eq_string_loop_variant": { "qed": 
+                                                                 { "total": 2,
+                                                                   "valid": 2 },
+                                                               "wp:main": 
+                                                                 { "total": 2,
+                                                                   "valid": 2 } },
+                                   "eq_string_assigns": { "qed": { "total": 4,
+                                                                   "valid": 4 },
                                                           "wp:main": 
-                                                            { "total": 1,
-                                                              "valid": 1,
-                                                              "rank": 11 } },
+                                                            { "total": 4,
+                                                              "valid": 4 } },
+                                   "eq_string_loop_assigns": { "qed": 
+                                                                 { "total": 1,
+                                                                   "valid": 1 },
+                                                               "wp:main": 
+                                                                 { "total": 1,
+                                                                   "valid": 1 } },
+                                   "eq_string_not_eq_ensures": { "alt-ergo": 
+                                                                   { "total": 1,
+                                                                    "valid": 1,
+                                                                    "rank": 13 },
+                                                                 "wp:main": 
+                                                                   { "total": 1,
+                                                                    "valid": 1,
+                                                                    "rank": 13 } },
+                                   "eq_string_eq_ensures": { "alt-ergo": 
+                                                               { "total": 1,
+                                                                 "valid": 1,
+                                                                 "rank": 12 },
+                                                             "wp:main": 
+                                                               { "total": 1,
+                                                                 "valid": 1,
+                                                                 "rank": 12 } },
                                    "wp:section": { "alt-ergo": { "total": 7,
                                                                  "valid": 7,
                                                                  "rank": 23 },
@@ -109,26 +113,26 @@
                                                                 { "total": 1,
                                                                   "valid": 1,
                                                                   "rank": 18 } },
-                              "hash_loop_inv": { "alt-ergo": { "total": 1,
-                                                               "valid": 1,
-                                                               "rank": 4 },
-                                                 "qed": { "total": 1,
-                                                          "valid": 1 },
-                                                 "wp:main": { "total": 2,
-                                                              "valid": 2,
-                                                              "rank": 4 } },
-                              "hash_loop_term": { "qed": { "total": 2,
-                                                           "valid": 2 },
-                                                  "wp:main": { "total": 2,
-                                                               "valid": 2 } },
-                              "hash_assign": { "qed": { "total": 2,
-                                                        "valid": 2 },
-                                               "wp:main": { "total": 2,
-                                                            "valid": 2 } },
-                              "hash_loop_assign": { "qed": { "total": 1,
-                                                             "valid": 1 },
-                                                    "wp:main": { "total": 1,
-                                                                 "valid": 1 } },
+                              "hash_loop_invariant": { "alt-ergo": { "total": 1,
+                                                                    "valid": 1,
+                                                                    "rank": 4 },
+                                                       "qed": { "total": 1,
+                                                                "valid": 1 },
+                                                       "wp:main": { "total": 2,
+                                                                    "valid": 2,
+                                                                    "rank": 4 } },
+                              "hash_loop_variant": { "qed": { "total": 2,
+                                                              "valid": 2 },
+                                                     "wp:main": { "total": 2,
+                                                                  "valid": 2 } },
+                              "hash_assigns": { "qed": { "total": 2,
+                                                         "valid": 2 },
+                                                "wp:main": { "total": 2,
+                                                             "valid": 2 } },
+                              "hash_loop_assigns": { "qed": { "total": 1,
+                                                              "valid": 1 },
+                                                     "wp:main": { "total": 1,
+                                                                  "valid": 1 } },
                               "wp:section": { "alt-ergo": { "total": 3,
                                                             "valid": 3,
                                                             "rank": 18 },
@@ -145,14 +149,14 @@
                                                                 { "total": 1,
                                                                   "valid": 1,
                                                                   "rank": 8 } },
-                              "size_assign": { "qed": { "total": 1,
-                                                        "valid": 1 },
-                                               "wp:main": { "total": 1,
-                                                            "valid": 1 } },
-                              "size_post": { "qed": { "total": 1,
-                                                      "valid": 1 },
-                                             "wp:main": { "total": 1,
-                                                          "valid": 1 } },
+                              "size_assigns": { "qed": { "total": 1,
+                                                         "valid": 1 },
+                                                "wp:main": { "total": 1,
+                                                             "valid": 1 } },
+                              "size_ensures": { "qed": { "total": 1,
+                                                         "valid": 1 },
+                                                "wp:main": { "total": 1,
+                                                             "valid": 1 } },
                               "wp:section": { "alt-ergo": { "total": 1,
                                                             "valid": 1,
                                                             "rank": 8 },
@@ -197,50 +201,51 @@
                                                                 { "total": 1,
                                                                   "valid": 1,
                                                                   "rank": 16 } },
-                              "init_loop_inv_2": { "alt-ergo": { "total": 1,
-                                                                 "valid": 1,
-                                                                 "rank": 8 },
-                                                   "qed": { "total": 1,
-                                                            "valid": 1 },
-                                                   "wp:main": { "total": 2,
-                                                                "valid": 2,
-                                                                "rank": 8 } },
-                              "init_loop_inv": { "alt-ergo": { "total": 1,
-                                                               "valid": 1,
-                                                               "rank": 4 },
-                                                 "qed": { "total": 1,
-                                                          "valid": 1 },
-                                                 "wp:main": { "total": 2,
-                                                              "valid": 2,
-                                                              "rank": 4 } },
-                              "init_loop_term": { "qed": { "total": 2,
-                                                           "valid": 2 },
-                                                  "wp:main": { "total": 2,
-                                                               "valid": 2 } },
-                              "init_assign": { "alt-ergo": { "total": 1,
+                              "init_loop_invariant_2": { "alt-ergo": 
+                                                           { "total": 1,
                                                              "valid": 1,
-                                                             "rank": 11 },
-                                               "qed": { "total": 2,
-                                                        "valid": 2 },
-                                               "wp:main": { "total": 3,
-                                                            "valid": 3,
-                                                            "rank": 11 } },
-                              "init_loop_assign": { "qed": { "total": 2,
-                                                             "valid": 2 },
-                                                    "wp:main": { "total": 2,
-                                                                 "valid": 2 } },
-                              "init_post_2": { "alt-ergo": { "total": 1,
+                                                             "rank": 9 },
+                                                         "qed": { "total": 1,
+                                                                  "valid": 1 },
+                                                         "wp:main": { "total": 2,
+                                                                    "valid": 2,
+                                                                    "rank": 9 } },
+                              "init_loop_invariant": { "alt-ergo": { "total": 1,
+                                                                    "valid": 1,
+                                                                    "rank": 4 },
+                                                       "qed": { "total": 1,
+                                                                "valid": 1 },
+                                                       "wp:main": { "total": 2,
+                                                                    "valid": 2,
+                                                                    "rank": 4 } },
+                              "init_loop_variant": { "qed": { "total": 2,
+                                                              "valid": 2 },
+                                                     "wp:main": { "total": 2,
+                                                                  "valid": 2 } },
+                              "init_assigns": { "alt-ergo": { "total": 1,
+                                                              "valid": 1,
+                                                              "rank": 12 },
+                                                "qed": { "total": 2,
+                                                         "valid": 2 },
+                                                "wp:main": { "total": 3,
+                                                             "valid": 3,
+                                                             "rank": 12 } },
+                              "init_loop_assigns": { "qed": { "total": 2,
+                                                              "valid": 2 },
+                                                     "wp:main": { "total": 2,
+                                                                  "valid": 2 } },
+                              "init_ensures_2": { "alt-ergo": { "total": 1,
+                                                                "valid": 1,
+                                                                "rank": 8 },
+                                                  "wp:main": { "total": 1,
+                                                               "valid": 1,
+                                                               "rank": 8 } },
+                              "init_ensures": { "alt-ergo": { "total": 1,
+                                                              "valid": 1,
+                                                              "rank": 18 },
+                                                "wp:main": { "total": 1,
                                                              "valid": 1,
-                                                             "rank": 7 },
-                                               "wp:main": { "total": 1,
-                                                            "valid": 1,
-                                                            "rank": 7 } },
-                              "init_post": { "alt-ergo": { "total": 1,
-                                                           "valid": 1,
-                                                           "rank": 18 },
-                                             "wp:main": { "total": 1,
-                                                          "valid": 1,
-                                                          "rank": 18 } },
+                                                             "rank": 18 } },
                               "wp:section": { "alt-ergo": { "total": 8,
                                                             "valid": 8,
                                                             "rank": 31 },
@@ -249,9 +254,10 @@
                                               "wp:main": { "total": 18,
                                                            "valid": 18,
                                                            "rank": 31 } } },
-                    "add": { "specialization_hash_pre_at_add_stmt_42": 
-                               { "qed": { "total": 1, "valid": 1 },
-                                 "wp:main": { "total": 1, "valid": 1 } },
+                    "add": { "hash_requires": { "qed": { "total": 1,
+                                                         "valid": 1 },
+                                                "wp:main": { "total": 1,
+                                                             "valid": 1 } },
                              "add_disjoint_full_nominal": { "alt-ergo": 
                                                               { "total": 1,
                                                                 "valid": 1,
@@ -376,66 +382,66 @@
                                                                { "total": 1,
                                                                  "valid": 1,
                                                                  "rank": 16 } },
-                             "add_nominal_assign": { "alt-ergo": { "total": 2,
-                                                                   "valid": 2,
-                                                                   "rank": 21 },
-                                                     "qed": { "total": 8,
-                                                              "valid": 8 },
-                                                     "wp:main": { "total": 10,
-                                                                  "valid": 10,
-                                                                  "rank": 21 } },
-                             "add_full_assign": { "alt-ergo": { "total": 3,
-                                                                "valid": 3,
-                                                                "rank": 19 },
-                                                  "qed": { "total": 7,
-                                                           "valid": 7 },
-                                                  "wp:main": { "total": 10,
-                                                               "valid": 10,
-                                                               "rank": 19 } },
-                             "add_assign": { "alt-ergo": { "total": 2,
-                                                           "valid": 2,
-                                                           "rank": 20 },
-                                             "qed": { "total": 8,
-                                                      "valid": 8 },
-                                             "wp:main": { "total": 10,
-                                                          "valid": 10,
-                                                          "rank": 20 } },
-                             "add_full_post": { "alt-ergo": { "total": 1,
-                                                              "valid": 1,
-                                                              "rank": 16 },
-                                                "wp:main": { "total": 1,
-                                                             "valid": 1,
-                                                             "rank": 16 } },
-                             "add_nominal_post_5": { "alt-ergo": { "total": 1,
-                                                                   "valid": 1,
-                                                                   "rank": 45 },
-                                                     "wp:main": { "total": 1,
-                                                                  "valid": 1,
-                                                                  "rank": 45 } },
-                             "add_nominal_post_4": { "alt-ergo": { "total": 1,
-                                                                   "valid": 1,
-                                                                   "rank": 23 },
-                                                     "wp:main": { "total": 1,
-                                                                  "valid": 1,
-                                                                  "rank": 23 } },
-                             "add_nominal_post_3": { "alt-ergo": { "total": 1,
-                                                                   "valid": 1,
-                                                                   "rank": 32 },
-                                                     "wp:main": { "total": 1,
-                                                                  "valid": 1,
-                                                                  "rank": 32 } },
-                             "add_nominal_post_2": { "alt-ergo": { "total": 1,
-                                                                   "valid": 1,
-                                                                   "rank": 35 },
-                                                     "wp:main": { "total": 1,
-                                                                  "valid": 1,
-                                                                  "rank": 35 } },
-                             "add_nominal_post": { "alt-ergo": { "total": 1,
+                             "add_nominal_assigns": { "alt-ergo": { "total": 2,
+                                                                    "valid": 2,
+                                                                    "rank": 21 },
+                                                      "qed": { "total": 8,
+                                                               "valid": 8 },
+                                                      "wp:main": { "total": 10,
+                                                                   "valid": 10,
+                                                                   "rank": 21 } },
+                             "add_full_assigns": { "alt-ergo": { "total": 3,
+                                                                 "valid": 3,
+                                                                 "rank": 19 },
+                                                   "qed": { "total": 7,
+                                                            "valid": 7 },
+                                                   "wp:main": { "total": 10,
+                                                                "valid": 10,
+                                                                "rank": 19 } },
+                             "add_assigns": { "alt-ergo": { "total": 2,
+                                                            "valid": 2,
+                                                            "rank": 21 },
+                                              "qed": { "total": 8,
+                                                       "valid": 8 },
+                                              "wp:main": { "total": 10,
+                                                           "valid": 10,
+                                                           "rank": 21 } },
+                             "add_full_ensures": { "alt-ergo": { "total": 1,
                                                                  "valid": 1,
                                                                  "rank": 16 },
                                                    "wp:main": { "total": 1,
                                                                 "valid": 1,
                                                                 "rank": 16 } },
+                             "add_nominal_ensures_5": { "alt-ergo": { "total": 1,
+                                                                    "valid": 1,
+                                                                    "rank": 45 },
+                                                        "wp:main": { "total": 1,
+                                                                    "valid": 1,
+                                                                    "rank": 45 } },
+                             "add_nominal_ensures_4": { "alt-ergo": { "total": 1,
+                                                                    "valid": 1,
+                                                                    "rank": 24 },
+                                                        "wp:main": { "total": 1,
+                                                                    "valid": 1,
+                                                                    "rank": 24 } },
+                             "add_nominal_ensures_3": { "alt-ergo": { "total": 1,
+                                                                    "valid": 1,
+                                                                    "rank": 33 },
+                                                        "wp:main": { "total": 1,
+                                                                    "valid": 1,
+                                                                    "rank": 33 } },
+                             "add_nominal_ensures_2": { "alt-ergo": { "total": 1,
+                                                                    "valid": 1,
+                                                                    "rank": 35 },
+                                                        "wp:main": { "total": 1,
+                                                                    "valid": 1,
+                                                                    "rank": 35 } },
+                             "add_nominal_ensures": { "alt-ergo": { "total": 1,
+                                                                    "valid": 1,
+                                                                    "rank": 16 },
+                                                      "wp:main": { "total": 1,
+                                                                   "valid": 1,
+                                                                   "rank": 16 } },
                              "wp:section": { "alt-ergo": { "total": 24,
                                                            "valid": 24,
                                                            "rank": 45 },
@@ -444,20 +450,24 @@
                                              "wp:main": { "total": 54,
                                                           "valid": 54,
                                                           "rank": 45 } } },
-                    "mem_binding": { "specialization_eq_string_pre_at_mem_binding_stmt_63_2": 
-                                       { "alt-ergo": { "total": 1,
-                                                       "valid": 1,
-                                                       "rank": 27 },
-                                         "wp:main": { "total": 1, "valid": 1,
-                                                      "rank": 27 } },
-                                     "specialization_eq_string_pre_at_mem_binding_stmt_63": 
-                                       { "qed": { "total": 1, "valid": 1 },
-                                         "wp:main": { "total": 1,
-                                                      "valid": 1 } },
-                                     "specialization_hash_pre_at_mem_binding_stmt_55": 
-                                       { "qed": { "total": 1, "valid": 1 },
-                                         "wp:main": { "total": 1,
-                                                      "valid": 1 } },
+                    "mem_binding": { "eq_string_requires_2": { "alt-ergo": 
+                                                                 { "total": 1,
+                                                                   "valid": 1,
+                                                                   "rank": 27 },
+                                                               "wp:main": 
+                                                                 { "total": 1,
+                                                                   "valid": 1,
+                                                                   "rank": 27 } },
+                                     "eq_string_requires": { "qed": { "total": 1,
+                                                                    "valid": 1 },
+                                                             "wp:main": 
+                                                               { "total": 1,
+                                                                 "valid": 1 } },
+                                     "hash_requires_2": { "qed": { "total": 1,
+                                                                   "valid": 1 },
+                                                          "wp:main": 
+                                                            { "total": 1,
+                                                              "valid": 1 } },
                                      "mem_binding_disjoint_not_found_found": 
                                        { "alt-ergo": { "total": 1,
                                                        "valid": 1,
@@ -467,9 +477,9 @@
                                      "mem_binding_complete_not_found_found": 
                                        { "alt-ergo": { "total": 1,
                                                        "valid": 1,
-                                                       "rank": 18 },
+                                                       "rank": 19 },
                                          "wp:main": { "total": 1, "valid": 1,
-                                                      "rank": 18 } },
+                                                      "rank": 19 } },
                                      "mem_binding_assert_rte_signed_overflow": 
                                        { "alt-ergo": { "total": 1,
                                                        "valid": 1,
@@ -540,56 +550,51 @@
                                                        "rank": 18 },
                                          "wp:main": { "total": 1, "valid": 1,
                                                       "rank": 18 } },
-                                     "mem_binding_loop_inv_2": { "alt-ergo": 
-                                                                   { "total": 1,
-                                                                    "valid": 1,
-                                                                    "rank": 30 },
-                                                                 "qed": 
-                                                                   { "total": 1,
-                                                                    "valid": 1 },
-                                                                 "wp:main": 
-                                                                   { "total": 2,
+                                     "mem_binding_loop_invariant_2": 
+                                       { "alt-ergo": { "total": 1,
+                                                       "valid": 1,
+                                                       "rank": 31 },
+                                         "qed": { "total": 1, "valid": 1 },
+                                         "wp:main": { "total": 2, "valid": 2,
+                                                      "rank": 31 } },
+                                     "mem_binding_loop_invariant": { "alt-ergo": 
+                                                                    { "total": 2,
                                                                     "valid": 2,
-                                                                    "rank": 30 } },
-                                     "mem_binding_loop_inv": { "alt-ergo": 
-                                                                 { "total": 2,
-                                                                   "valid": 2,
-                                                                   "rank": 16 },
-                                                               "wp:main": 
-                                                                 { "total": 2,
-                                                                   "valid": 2,
-                                                                   "rank": 16 } },
-                                     "mem_binding_loop_term": { "qed": 
-                                                                  { "total": 2,
+                                                                    "rank": 16 },
+                                                                    "wp:main": 
+                                                                    { "total": 2,
+                                                                    "valid": 2,
+                                                                    "rank": 16 } },
+                                     "mem_binding_loop_variant": { "qed": 
+                                                                    { "total": 2,
                                                                     "valid": 2 },
-                                                                "wp:main": 
-                                                                  { "total": 2,
+                                                                   "wp:main": 
+                                                                    { "total": 2,
                                                                     "valid": 2 } },
-                                     "mem_binding_assign": { "qed": { "total": 11,
-                                                                    "valid": 11 },
-                                                             "wp:main": 
-                                                               { "total": 11,
-                                                                 "valid": 11 } },
-                                     "mem_binding_loop_assign": { "qed": 
+                                     "mem_binding_assigns": { "qed": 
+                                                                { "total": 11,
+                                                                  "valid": 11 },
+                                                              "wp:main": 
+                                                                { "total": 11,
+                                                                  "valid": 11 } },
+                                     "mem_binding_loop_assigns": { "qed": 
                                                                     { "total": 2,
                                                                     "valid": 2 },
-                                                                  "wp:main": 
+                                                                   "wp:main": 
                                                                     { "total": 2,
                                                                     "valid": 2 } },
-                                     "mem_binding_not_found_post": { "alt-ergo": 
+                                     "mem_binding_not_found_ensures": 
+                                       { "alt-ergo": { "total": 1,
+                                                       "valid": 1,
+                                                       "rank": 33 },
+                                         "wp:main": { "total": 1, "valid": 1,
+                                                      "rank": 33 } },
+                                     "mem_binding_found_ensures": { "alt-ergo": 
                                                                     { "total": 1,
                                                                     "valid": 1,
-                                                                    "rank": 33 },
+                                                                    "rank": 25 },
                                                                     "wp:main": 
                                                                     { "total": 1,
-                                                                    "valid": 1,
-                                                                    "rank": 33 } },
-                                     "mem_binding_found_post": { "alt-ergo": 
-                                                                   { "total": 1,
-                                                                    "valid": 1,
-                                                                    "rank": 25 },
-                                                                 "wp:main": 
-                                                                   { "total": 1,
                                                                     "valid": 1,
                                                                     "rank": 25 } },
                                      "wp:section": { "alt-ergo": { "total": 15,
diff --git a/src/plugins/wp/tests/wp_gallery/loop-statement.c.0.report.json b/src/plugins/wp/tests/wp_gallery/loop-statement.c.0.report.json
index 9de36f06f2317a3e97249529bc9d9467c084fbcd..e5e6355b5298cca1ed29dedf64ed513b9657913a 100644
--- a/src/plugins/wp/tests/wp_gallery/loop-statement.c.0.report.json
+++ b/src/plugins/wp/tests/wp_gallery/loop-statement.c.0.report.json
@@ -13,47 +13,49 @@
                                                 "wp:main": { "total": 1,
                                                              "valid": 1,
                                                              "rank": 31 } } } },
-  "wp:functions": { "loop_statement": { "loop_statement_loop_inv_Iloop": 
+  "wp:functions": { "loop_statement": { "loop_statement_loop_invariant_Iloop": 
                                           { "alt-ergo": { "total": 2,
                                                           "valid": 2,
                                                           "rank": 16 },
                                             "wp:main": { "total": 2,
                                                          "valid": 2,
                                                          "rank": 16 } },
-                                        "loop_statement_assign": { "qed": 
+                                        "loop_statement_assigns_2": { "qed": 
                                                                     { "total": 4,
                                                                     "valid": 4 },
-                                                                   "wp:main": 
+                                                                    "wp:main": 
                                                                     { "total": 4,
                                                                     "valid": 4 } },
-                                        "loop_statement_stmt_assign": 
-                                          { "qed": { "total": 1, "valid": 1 },
-                                            "wp:main": { "total": 1,
-                                                         "valid": 1 } },
-                                        "loop_statement_loop_assign": 
+                                        "loop_statement_assigns": { "qed": 
+                                                                    { "total": 1,
+                                                                    "valid": 1 },
+                                                                    "wp:main": 
+                                                                    { "total": 1,
+                                                                    "valid": 1 } },
+                                        "loop_statement_loop_assigns": 
                                           { "qed": { "total": 2, "valid": 2 },
                                             "wp:main": { "total": 2,
                                                          "valid": 2 } },
-                                        "loop_statement_stmt_post_Sbody": 
+                                        "loop_statement_ensures_Sbody": 
                                           { "qed": { "total": 1, "valid": 1 },
                                             "wp:main": { "total": 1,
                                                          "valid": 1 } },
-                                        "loop_statement_stmt_pre_Scond": 
+                                        "loop_statement_requires_Scond": 
                                           { "qed": { "total": 1, "valid": 1 },
                                             "wp:main": { "total": 1,
                                                          "valid": 1 } },
-                                        "loop_statement_stmt_pre_Rinv": 
+                                        "loop_statement_requires_Rinv": 
                                           { "alt-ergo": { "total": 1,
                                                           "valid": 1,
                                                           "rank": 20 },
                                             "wp:main": { "total": 1,
                                                          "valid": 1,
                                                          "rank": 20 } },
-                                        "loop_statement_post_Sloop": 
+                                        "loop_statement_ensures_Sloop": 
                                           { "qed": { "total": 1, "valid": 1 },
                                             "wp:main": { "total": 1,
                                                          "valid": 1 } },
-                                        "loop_statement_post_Scond": 
+                                        "loop_statement_ensures_Scond": 
                                           { "qed": { "total": 1, "valid": 1 },
                                             "wp:main": { "total": 1,
                                                          "valid": 1 } },
diff --git a/src/plugins/wp/tests/wp_gallery/oracle/binary-multiplication-without-overflow.res.oracle b/src/plugins/wp/tests/wp_gallery/oracle/binary-multiplication-without-overflow.res.oracle
index a9c881e3400da1b7777942e5a5014b0d86060399..5b136a7658cd0354170f2f4419e8b46fc2ab56bf 100644
--- a/src/plugins/wp/tests/wp_gallery/oracle/binary-multiplication-without-overflow.res.oracle
+++ b/src/plugins/wp/tests/wp_gallery/oracle/binary-multiplication-without-overflow.res.oracle
@@ -7,16 +7,16 @@
 [wp] Goal typed_lemma_ax2_lack : not tried
 [wp] Goal typed_lemma_sizeof_uint32_t_ok : trivial
 [wp] Goal typed_lemma_sizeof_uint64_t_ok : trivial
-[wp] Goal typed_BinaryMultiplication_post_product : not tried
+[wp] Goal typed_BinaryMultiplication_ensures_product : not tried
 [wp] Goal typed_BinaryMultiplication_assert_a1_ok_deductible : not tried
-[wp] Goal typed_BinaryMultiplication_loop_inv_inv1_lack_preserved : not tried
-[wp] Goal typed_BinaryMultiplication_loop_inv_inv1_lack_established : not tried
-[wp] Goal typed_BinaryMultiplication_loop_inv_inv2_ok_deductible_preserved : not tried
-[wp] Goal typed_BinaryMultiplication_loop_inv_inv2_ok_deductible_established : not tried
+[wp] Goal typed_BinaryMultiplication_loop_invariant_inv1_lack_preserved : not tried
+[wp] Goal typed_BinaryMultiplication_loop_invariant_inv1_lack_established : not tried
+[wp] Goal typed_BinaryMultiplication_loop_invariant_inv2_ok_deductible_preserved : not tried
+[wp] Goal typed_BinaryMultiplication_loop_invariant_inv2_ok_deductible_established : not tried
 [wp] Goal typed_BinaryMultiplication_assert_rte_unsigned_overflow : not tried
 [wp] Goal typed_BinaryMultiplication_assert_rte_unsigned_overflow_2 : not tried
 [wp] Goal typed_BinaryMultiplication_assert_rte_unsigned_overflow_3 : not tried
 [wp] Goal typed_BinaryMultiplication_assert_rte_unsigned_overflow_4 : not tried
-[wp] Goal typed_BinaryMultiplication_loop_assign : trivial
-[wp] Goal typed_BinaryMultiplication_loop_term_decrease : not tried
-[wp] Goal typed_BinaryMultiplication_loop_term_positive : not tried
+[wp] Goal typed_BinaryMultiplication_loop_assigns : trivial
+[wp] Goal typed_BinaryMultiplication_loop_variant_decrease : not tried
+[wp] Goal typed_BinaryMultiplication_loop_variant_positive : not tried
diff --git a/src/plugins/wp/tests/wp_gallery/oracle/binary-multiplication.res.oracle b/src/plugins/wp/tests/wp_gallery/oracle/binary-multiplication.res.oracle
index 7fd3bb8ff05a49b5acc35acebb185ea38f58a533..d37e8c31f601efd5331dd29b2cd443a53cf41528 100644
--- a/src/plugins/wp/tests/wp_gallery/oracle/binary-multiplication.res.oracle
+++ b/src/plugins/wp/tests/wp_gallery/oracle/binary-multiplication.res.oracle
@@ -11,14 +11,14 @@
 [wp] Goal typed_lemma_ax6_ok : not tried
 [wp] Goal typed_lemma_sizeof_uint32_t_ok : trivial
 [wp] Goal typed_lemma_sizeof_uint64_t_ok : trivial
-[wp] Goal typed_BinaryMultiplication_post_product : not tried
+[wp] Goal typed_BinaryMultiplication_ensures_product : not tried
 [wp] Goal typed_BinaryMultiplication_assert_a1_ok_deductible : not tried
-[wp] Goal typed_BinaryMultiplication_loop_inv_inv1_lack_preserved : not tried
-[wp] Goal typed_BinaryMultiplication_loop_inv_inv1_lack_established : not tried
-[wp] Goal typed_BinaryMultiplication_loop_inv_inv2_lack_preserved : not tried
-[wp] Goal typed_BinaryMultiplication_loop_inv_inv2_lack_established : not tried
+[wp] Goal typed_BinaryMultiplication_loop_invariant_inv1_lack_preserved : not tried
+[wp] Goal typed_BinaryMultiplication_loop_invariant_inv1_lack_established : not tried
+[wp] Goal typed_BinaryMultiplication_loop_invariant_inv2_lack_preserved : not tried
+[wp] Goal typed_BinaryMultiplication_loop_invariant_inv2_lack_established : not tried
 [wp] Goal typed_BinaryMultiplication_assert_a2_ok : not tried
 [wp] Goal typed_BinaryMultiplication_assert_a3_ok : not tried
-[wp] Goal typed_BinaryMultiplication_loop_assign : trivial
-[wp] Goal typed_BinaryMultiplication_loop_term_decrease : not tried
-[wp] Goal typed_BinaryMultiplication_loop_term_positive : not tried
+[wp] Goal typed_BinaryMultiplication_loop_assigns : trivial
+[wp] Goal typed_BinaryMultiplication_loop_variant_decrease : not tried
+[wp] Goal typed_BinaryMultiplication_loop_variant_positive : not tried
diff --git a/src/plugins/wp/tests/wp_gallery/oracle/frama_c_exo1_solved.res.oracle b/src/plugins/wp/tests/wp_gallery/oracle/frama_c_exo1_solved.res.oracle
index 43de8f0e4f5d0ee51d194883c2fccd4b1de93318..388a5387f67843dbacafd4aad8d4615860dbde18 100644
--- a/src/plugins/wp/tests/wp_gallery/oracle/frama_c_exo1_solved.res.oracle
+++ b/src/plugins/wp/tests/wp_gallery/oracle/frama_c_exo1_solved.res.oracle
@@ -3,18 +3,18 @@
 [wp] Running WP plugin...
 [wp] Loading driver 'share/wp.driver'
 [rte] annotating function exo1
-[wp] Goal typed_exo1_post : not tried
-[wp] Goal typed_exo1_post_2 : not tried
+[wp] Goal typed_exo1_ensures : not tried
+[wp] Goal typed_exo1_ensures_2 : not tried
 [wp] Goal typed_exo1_assert_rte_signed_overflow : not tried
-[wp] Goal typed_exo1_loop_inv_preserved : not tried
-[wp] Goal typed_exo1_loop_inv_established : not tried
-[wp] Goal typed_exo1_loop_inv_2_preserved : not tried
-[wp] Goal typed_exo1_loop_inv_2_established : not tried
+[wp] Goal typed_exo1_loop_invariant_preserved : not tried
+[wp] Goal typed_exo1_loop_invariant_established : not tried
+[wp] Goal typed_exo1_loop_invariant_2_preserved : not tried
+[wp] Goal typed_exo1_loop_invariant_2_established : not tried
 [wp] Goal typed_exo1_assert_rte_mem_access : not tried
 [wp] Goal typed_exo1_assert_rte_mem_access_2 : not tried
 [wp] Goal typed_exo1_assert_rte_signed_overflow_2 : not tried
 [wp] Goal typed_exo1_assert_rte_signed_overflow_3 : not tried
-[wp] Goal typed_exo1_loop_assign : trivial
-[wp] Goal typed_exo1_assign : not tried
-[wp] Goal typed_exo1_loop_term_decrease : not tried
-[wp] Goal typed_exo1_loop_term_positive : not tried
+[wp] Goal typed_exo1_loop_assigns : trivial
+[wp] Goal typed_exo1_assigns : not tried
+[wp] Goal typed_exo1_loop_variant_decrease : not tried
+[wp] Goal typed_exo1_loop_variant_positive : not tried
diff --git a/src/plugins/wp/tests/wp_gallery/oracle/frama_c_exo2_solved.res.oracle b/src/plugins/wp/tests/wp_gallery/oracle/frama_c_exo2_solved.res.oracle
index eafea03cce000bed408fac65ef413143b057a335..01cfab82cf38c1afd040a1dda9d285e2ab0317ab 100644
--- a/src/plugins/wp/tests/wp_gallery/oracle/frama_c_exo2_solved.res.oracle
+++ b/src/plugins/wp/tests/wp_gallery/oracle/frama_c_exo2_solved.res.oracle
@@ -3,26 +3,26 @@
 [wp] Running WP plugin...
 [wp] Loading driver 'share/wp.driver'
 [rte] annotating function max_subarray
-[wp] Goal typed_max_subarray_post : not tried
-[wp] Goal typed_max_subarray_post_2 : not tried
-[wp] Goal typed_max_subarray_loop_inv_preserved : not tried
-[wp] Goal typed_max_subarray_loop_inv_established : not tried
-[wp] Goal typed_max_subarray_loop_inv_2_preserved : not tried
-[wp] Goal typed_max_subarray_loop_inv_2_established : not tried
-[wp] Goal typed_max_subarray_loop_inv_3_preserved : not tried
-[wp] Goal typed_max_subarray_loop_inv_3_established : not tried
-[wp] Goal typed_max_subarray_loop_inv_4_preserved : not tried
-[wp] Goal typed_max_subarray_loop_inv_4_established : not tried
-[wp] Goal typed_max_subarray_loop_inv_5_preserved : not tried
-[wp] Goal typed_max_subarray_loop_inv_5_established : not tried
-[wp] Goal typed_max_subarray_loop_inv_6_preserved : not tried
-[wp] Goal typed_max_subarray_loop_inv_6_established : not tried
-[wp] Goal typed_max_subarray_loop_inv_7_preserved : not tried
-[wp] Goal typed_max_subarray_loop_inv_7_established : not tried
-[wp] Goal typed_max_subarray_loop_inv_8_preserved : not tried
-[wp] Goal typed_max_subarray_loop_inv_8_established : not tried
+[wp] Goal typed_max_subarray_ensures : not tried
+[wp] Goal typed_max_subarray_ensures_2 : not tried
+[wp] Goal typed_max_subarray_loop_invariant_preserved : not tried
+[wp] Goal typed_max_subarray_loop_invariant_established : not tried
+[wp] Goal typed_max_subarray_loop_invariant_2_preserved : not tried
+[wp] Goal typed_max_subarray_loop_invariant_2_established : not tried
+[wp] Goal typed_max_subarray_loop_invariant_3_preserved : not tried
+[wp] Goal typed_max_subarray_loop_invariant_3_established : not tried
+[wp] Goal typed_max_subarray_loop_invariant_4_preserved : not tried
+[wp] Goal typed_max_subarray_loop_invariant_4_established : not tried
+[wp] Goal typed_max_subarray_loop_invariant_5_preserved : not tried
+[wp] Goal typed_max_subarray_loop_invariant_5_established : not tried
+[wp] Goal typed_max_subarray_loop_invariant_6_preserved : not tried
+[wp] Goal typed_max_subarray_loop_invariant_6_established : not tried
+[wp] Goal typed_max_subarray_loop_invariant_7_preserved : not tried
+[wp] Goal typed_max_subarray_loop_invariant_7_established : not tried
+[wp] Goal typed_max_subarray_loop_invariant_8_preserved : not tried
+[wp] Goal typed_max_subarray_loop_invariant_8_established : not tried
 [wp] Goal typed_max_subarray_assert_rte_mem_access : not tried
-[wp] Goal typed_max_subarray_loop_assign : trivial
-[wp] Goal typed_max_subarray_assign : not tried
-[wp] Goal typed_max_subarray_loop_term_decrease : not tried
-[wp] Goal typed_max_subarray_loop_term_positive : not tried
+[wp] Goal typed_max_subarray_loop_assigns : trivial
+[wp] Goal typed_max_subarray_assigns : not tried
+[wp] Goal typed_max_subarray_loop_variant_decrease : not tried
+[wp] Goal typed_max_subarray_loop_variant_positive : not tried
diff --git a/src/plugins/wp/tests/wp_gallery/oracle/frama_c_exo3_solved.old.res.oracle b/src/plugins/wp/tests/wp_gallery/oracle/frama_c_exo3_solved.old.res.oracle
index 6f7ae4b7e7cc5def01cb8ec771f88e5db660f898..d0d68abc9caadab4d4002d9a8bd206d5e529a233 100644
--- a/src/plugins/wp/tests/wp_gallery/oracle/frama_c_exo3_solved.old.res.oracle
+++ b/src/plugins/wp/tests/wp_gallery/oracle/frama_c_exo3_solved.old.res.oracle
@@ -3,34 +3,34 @@
 [wp] Running WP plugin...
 [wp] Loading driver 'share/wp.driver'
 [rte] annotating function equal_elements
-[wp] Goal typed_ref_equal_elements_post : not tried
-[wp] Goal typed_ref_equal_elements_post_2 : not tried
-[wp] Goal typed_ref_equal_elements_post_3 : not tried
+[wp] Goal typed_ref_equal_elements_ensures : not tried
+[wp] Goal typed_ref_equal_elements_ensures_2 : not tried
+[wp] Goal typed_ref_equal_elements_ensures_3 : not tried
 [wp] Goal typed_ref_equal_elements_assert_rte_mem_access : trivial
 [wp] Goal typed_ref_equal_elements_assert_rte_mem_access_2 : trivial
-[wp] Goal typed_ref_equal_elements_loop_inv_preserved : not tried
-[wp] Goal typed_ref_equal_elements_loop_inv_established : not tried
-[wp] Goal typed_ref_equal_elements_loop_inv_2_preserved : not tried
-[wp] Goal typed_ref_equal_elements_loop_inv_2_established : not tried
+[wp] Goal typed_ref_equal_elements_loop_invariant_preserved : not tried
+[wp] Goal typed_ref_equal_elements_loop_invariant_established : not tried
+[wp] Goal typed_ref_equal_elements_loop_invariant_2_preserved : not tried
+[wp] Goal typed_ref_equal_elements_loop_invariant_2_established : not tried
 [wp] Goal typed_ref_equal_elements_assert_rte_index_bound : not tried
 [wp] Goal typed_ref_equal_elements_assert_rte_index_bound_2 : not tried
 [wp] Goal typed_ref_equal_elements_assert_rte_signed_overflow : not tried
-[wp] Goal typed_ref_equal_elements_loop_inv_3_preserved : not tried
-[wp] Goal typed_ref_equal_elements_loop_inv_3_established : not tried
-[wp] Goal typed_ref_equal_elements_loop_inv_4_preserved : not tried
-[wp] Goal typed_ref_equal_elements_loop_inv_4_established : not tried
-[wp] Goal typed_ref_equal_elements_loop_inv_5_preserved : not tried
-[wp] Goal typed_ref_equal_elements_loop_inv_5_established : not tried
-[wp] Goal typed_ref_equal_elements_loop_inv_6_preserved : not tried
-[wp] Goal typed_ref_equal_elements_loop_inv_6_established : not tried
-[wp] Goal typed_ref_equal_elements_loop_inv_7_preserved : not tried
-[wp] Goal typed_ref_equal_elements_loop_inv_7_established : not tried
-[wp] Goal typed_ref_equal_elements_loop_inv_8_preserved : not tried
-[wp] Goal typed_ref_equal_elements_loop_inv_8_established : not tried
-[wp] Goal typed_ref_equal_elements_loop_inv_9_preserved : not tried
-[wp] Goal typed_ref_equal_elements_loop_inv_9_established : not tried
-[wp] Goal typed_ref_equal_elements_loop_inv_10_preserved : not tried
-[wp] Goal typed_ref_equal_elements_loop_inv_10_established : not tried
+[wp] Goal typed_ref_equal_elements_loop_invariant_3_preserved : not tried
+[wp] Goal typed_ref_equal_elements_loop_invariant_3_established : not tried
+[wp] Goal typed_ref_equal_elements_loop_invariant_4_preserved : not tried
+[wp] Goal typed_ref_equal_elements_loop_invariant_4_established : not tried
+[wp] Goal typed_ref_equal_elements_loop_invariant_5_preserved : not tried
+[wp] Goal typed_ref_equal_elements_loop_invariant_5_established : not tried
+[wp] Goal typed_ref_equal_elements_loop_invariant_6_preserved : not tried
+[wp] Goal typed_ref_equal_elements_loop_invariant_6_established : not tried
+[wp] Goal typed_ref_equal_elements_loop_invariant_7_preserved : not tried
+[wp] Goal typed_ref_equal_elements_loop_invariant_7_established : not tried
+[wp] Goal typed_ref_equal_elements_loop_invariant_8_preserved : not tried
+[wp] Goal typed_ref_equal_elements_loop_invariant_8_established : not tried
+[wp] Goal typed_ref_equal_elements_loop_invariant_9_preserved : not tried
+[wp] Goal typed_ref_equal_elements_loop_invariant_9_established : not tried
+[wp] Goal typed_ref_equal_elements_loop_invariant_10_preserved : not tried
+[wp] Goal typed_ref_equal_elements_loop_invariant_10_established : not tried
 [wp] Goal typed_ref_equal_elements_assert_rte_mem_access_3 : not tried
 [wp] Goal typed_ref_equal_elements_assert_rte_index_bound_3 : not tried
 [wp] Goal typed_ref_equal_elements_assert_rte_index_bound_4 : not tried
@@ -44,15 +44,15 @@
 [wp] Goal typed_ref_equal_elements_assert_rte_index_bound_6 : not tried
 [wp] Goal typed_ref_equal_elements_assert_2 : not tried
 [wp] Goal typed_ref_equal_elements_assert_rte_signed_overflow_2 : not tried
-[wp] Goal typed_ref_equal_elements_loop_assign : trivial
-[wp] Goal typed_ref_equal_elements_loop_assign_2 : trivial
-[wp] Goal typed_ref_equal_elements_assign_part1 : trivial
-[wp] Goal typed_ref_equal_elements_assign_part2 : not tried
-[wp] Goal typed_ref_equal_elements_assign_part3 : not tried
-[wp] Goal typed_ref_equal_elements_loop_term_decrease : not tried
-[wp] Goal typed_ref_equal_elements_loop_term_positive : not tried
-[wp] Goal typed_ref_equal_elements_loop_term_2_decrease : not tried
-[wp] Goal typed_ref_equal_elements_loop_term_2_positive : not tried
+[wp] Goal typed_ref_equal_elements_loop_assigns : trivial
+[wp] Goal typed_ref_equal_elements_loop_assigns_2 : trivial
+[wp] Goal typed_ref_equal_elements_assigns_part1 : trivial
+[wp] Goal typed_ref_equal_elements_assigns_part2 : not tried
+[wp] Goal typed_ref_equal_elements_assigns_part3 : not tried
+[wp] Goal typed_ref_equal_elements_loop_variant_decrease : not tried
+[wp] Goal typed_ref_equal_elements_loop_variant_positive : not tried
+[wp] Goal typed_ref_equal_elements_loop_variant_2_decrease : not tried
+[wp] Goal typed_ref_equal_elements_loop_variant_2_positive : not tried
 [wp] Warning: Memory model hypotheses for function 'equal_elements':
   /*@
      behavior typed_ref:
diff --git a/src/plugins/wp/tests/wp_gallery/oracle/frama_c_exo3_solved.old.v2.res.oracle b/src/plugins/wp/tests/wp_gallery/oracle/frama_c_exo3_solved.old.v2.res.oracle
index cb8edd308b62fcdf4334ea512d87749bc39e176f..8b40acb3f436b766feb9fef4bb8d7b960945d098 100644
--- a/src/plugins/wp/tests/wp_gallery/oracle/frama_c_exo3_solved.old.v2.res.oracle
+++ b/src/plugins/wp/tests/wp_gallery/oracle/frama_c_exo3_solved.old.v2.res.oracle
@@ -3,37 +3,37 @@
 [wp] Running WP plugin...
 [wp] Loading driver 'share/wp.driver'
 [rte] annotating function equal_elements
-[wp] Goal typed_ref_equal_elements_post_v1_good : not tried
-[wp] Goal typed_ref_equal_elements_post_v2_good : not tried
-[wp] Goal typed_ref_equal_elements_post_v1_v2_diff : not tried
+[wp] Goal typed_ref_equal_elements_ensures_v1_good : not tried
+[wp] Goal typed_ref_equal_elements_ensures_v2_good : not tried
+[wp] Goal typed_ref_equal_elements_ensures_v1_v2_diff : not tried
 [wp] Goal typed_ref_equal_elements_assert_rte_mem_access : trivial
 [wp] Goal typed_ref_equal_elements_assert_rte_mem_access_2 : trivial
-[wp] Goal typed_ref_equal_elements_loop_inv_preserved : not tried
-[wp] Goal typed_ref_equal_elements_loop_inv_established : not tried
-[wp] Goal typed_ref_equal_elements_loop_inv_set_at_0_preserved : not tried
-[wp] Goal typed_ref_equal_elements_loop_inv_set_at_0_established : not tried
+[wp] Goal typed_ref_equal_elements_loop_invariant_preserved : not tried
+[wp] Goal typed_ref_equal_elements_loop_invariant_established : not tried
+[wp] Goal typed_ref_equal_elements_loop_invariant_set_at_0_preserved : not tried
+[wp] Goal typed_ref_equal_elements_loop_invariant_set_at_0_established : not tried
 [wp] Goal typed_ref_equal_elements_assert_rte_index_bound : not tried
 [wp] Goal typed_ref_equal_elements_assert_rte_index_bound_2 : not tried
 [wp] Goal typed_ref_equal_elements_assert_set_at_1 : not tried
 [wp] Goal typed_ref_equal_elements_assert_rte_signed_overflow : not tried
-[wp] Goal typed_ref_equal_elements_loop_inv_bound_preserved : not tried
-[wp] Goal typed_ref_equal_elements_loop_inv_bound_established : not tried
-[wp] Goal typed_ref_equal_elements_loop_inv_seen_sound1_preserved : not tried
-[wp] Goal typed_ref_equal_elements_loop_inv_seen_sound1_established : not tried
-[wp] Goal typed_ref_equal_elements_loop_inv_seen_sound2_preserved : not tried
-[wp] Goal typed_ref_equal_elements_loop_inv_seen_sound2_established : not tried
-[wp] Goal typed_ref_equal_elements_loop_inv_v1_first_preserved : not tried
-[wp] Goal typed_ref_equal_elements_loop_inv_v1_first_established : not tried
-[wp] Goal typed_ref_equal_elements_loop_inv_v1_sound1_preserved : not tried
-[wp] Goal typed_ref_equal_elements_loop_inv_v1_sound1_established : not tried
-[wp] Goal typed_ref_equal_elements_loop_inv_v1_sound2_preserved : not tried
-[wp] Goal typed_ref_equal_elements_loop_inv_v1_sound2_established : not tried
-[wp] Goal typed_ref_equal_elements_loop_inv_v1_v2_diff_preserved : not tried
-[wp] Goal typed_ref_equal_elements_loop_inv_v1_v2_diff_established : not tried
-[wp] Goal typed_ref_equal_elements_loop_inv_v2_sound1_preserved : not tried
-[wp] Goal typed_ref_equal_elements_loop_inv_v2_sound1_established : not tried
-[wp] Goal typed_ref_equal_elements_loop_inv_v2_sound2_preserved : not tried
-[wp] Goal typed_ref_equal_elements_loop_inv_v2_sound2_established : not tried
+[wp] Goal typed_ref_equal_elements_loop_invariant_bound_preserved : not tried
+[wp] Goal typed_ref_equal_elements_loop_invariant_bound_established : not tried
+[wp] Goal typed_ref_equal_elements_loop_invariant_seen_sound1_preserved : not tried
+[wp] Goal typed_ref_equal_elements_loop_invariant_seen_sound1_established : not tried
+[wp] Goal typed_ref_equal_elements_loop_invariant_seen_sound2_preserved : not tried
+[wp] Goal typed_ref_equal_elements_loop_invariant_seen_sound2_established : not tried
+[wp] Goal typed_ref_equal_elements_loop_invariant_v1_first_preserved : not tried
+[wp] Goal typed_ref_equal_elements_loop_invariant_v1_first_established : not tried
+[wp] Goal typed_ref_equal_elements_loop_invariant_v1_sound1_preserved : not tried
+[wp] Goal typed_ref_equal_elements_loop_invariant_v1_sound1_established : not tried
+[wp] Goal typed_ref_equal_elements_loop_invariant_v1_sound2_preserved : not tried
+[wp] Goal typed_ref_equal_elements_loop_invariant_v1_sound2_established : not tried
+[wp] Goal typed_ref_equal_elements_loop_invariant_v1_v2_diff_preserved : not tried
+[wp] Goal typed_ref_equal_elements_loop_invariant_v1_v2_diff_established : not tried
+[wp] Goal typed_ref_equal_elements_loop_invariant_v2_sound1_preserved : not tried
+[wp] Goal typed_ref_equal_elements_loop_invariant_v2_sound1_established : not tried
+[wp] Goal typed_ref_equal_elements_loop_invariant_v2_sound2_preserved : not tried
+[wp] Goal typed_ref_equal_elements_loop_invariant_v2_sound2_established : not tried
 [wp] Goal typed_ref_equal_elements_assert_rte_mem_access_3 : not tried
 [wp] Goal typed_ref_equal_elements_assert_rte_index_bound_3 : not tried
 [wp] Goal typed_ref_equal_elements_assert_rte_index_bound_4 : not tried
@@ -45,15 +45,15 @@
 [wp] Goal typed_ref_equal_elements_assert_rte_index_bound_5 : not tried
 [wp] Goal typed_ref_equal_elements_assert_rte_index_bound_6 : not tried
 [wp] Goal typed_ref_equal_elements_assert_rte_signed_overflow_2 : not tried
-[wp] Goal typed_ref_equal_elements_loop_assign : trivial
-[wp] Goal typed_ref_equal_elements_loop_assign_2 : trivial
-[wp] Goal typed_ref_equal_elements_assign_part1 : trivial
-[wp] Goal typed_ref_equal_elements_assign_part2 : not tried
-[wp] Goal typed_ref_equal_elements_assign_part3 : not tried
-[wp] Goal typed_ref_equal_elements_loop_term_decrease : not tried
-[wp] Goal typed_ref_equal_elements_loop_term_positive : not tried
-[wp] Goal typed_ref_equal_elements_loop_term_2_decrease : not tried
-[wp] Goal typed_ref_equal_elements_loop_term_2_positive : not tried
+[wp] Goal typed_ref_equal_elements_loop_assigns : trivial
+[wp] Goal typed_ref_equal_elements_loop_assigns_2 : trivial
+[wp] Goal typed_ref_equal_elements_assigns_part1 : trivial
+[wp] Goal typed_ref_equal_elements_assigns_part2 : not tried
+[wp] Goal typed_ref_equal_elements_assigns_part3 : not tried
+[wp] Goal typed_ref_equal_elements_loop_variant_decrease : not tried
+[wp] Goal typed_ref_equal_elements_loop_variant_positive : not tried
+[wp] Goal typed_ref_equal_elements_loop_variant_2_decrease : not tried
+[wp] Goal typed_ref_equal_elements_loop_variant_2_positive : not tried
 [wp] Warning: Memory model hypotheses for function 'equal_elements':
   /*@
      behavior typed_ref:
diff --git a/src/plugins/wp/tests/wp_gallery/oracle/frama_c_exo3_solved.simplified.res.oracle b/src/plugins/wp/tests/wp_gallery/oracle/frama_c_exo3_solved.simplified.res.oracle
index c580a3411d9bb5e4717da9ec3f938b4b2c9798f0..d19091020e7771f01268a28a7d9a158e21d88c20 100644
--- a/src/plugins/wp/tests/wp_gallery/oracle/frama_c_exo3_solved.simplified.res.oracle
+++ b/src/plugins/wp/tests/wp_gallery/oracle/frama_c_exo3_solved.simplified.res.oracle
@@ -5,36 +5,36 @@
 [rte] annotating function pair
 [wp] Goal typed_pair_complete_has_pair_no_pair : trivial
 [wp] Goal typed_pair_disjoint_has_pair_no_pair : trivial
-[wp] Goal typed_pair_loop_inv_preserved : not tried
-[wp] Goal typed_pair_loop_inv_established : not tried
-[wp] Goal typed_pair_loop_inv_2_preserved : not tried
-[wp] Goal typed_pair_loop_inv_2_established : not tried
+[wp] Goal typed_pair_loop_invariant_preserved : not tried
+[wp] Goal typed_pair_loop_invariant_established : not tried
+[wp] Goal typed_pair_loop_invariant_2_preserved : not tried
+[wp] Goal typed_pair_loop_invariant_2_established : not tried
 [wp] Goal typed_pair_assert_rte_index_bound : not tried
 [wp] Goal typed_pair_assert_rte_index_bound_2 : not tried
 [wp] Goal typed_pair_assert_rte_signed_overflow : not tried
-[wp] Goal typed_pair_loop_inv_3_preserved : not tried
-[wp] Goal typed_pair_loop_inv_3_established : not tried
-[wp] Goal typed_pair_loop_inv_4_preserved : not tried
-[wp] Goal typed_pair_loop_inv_4_established : not tried
-[wp] Goal typed_pair_loop_inv_5_preserved : not tried
-[wp] Goal typed_pair_loop_inv_5_established : not tried
-[wp] Goal typed_pair_loop_inv_6_preserved : not tried
-[wp] Goal typed_pair_loop_inv_6_established : not tried
+[wp] Goal typed_pair_loop_invariant_3_preserved : not tried
+[wp] Goal typed_pair_loop_invariant_3_established : not tried
+[wp] Goal typed_pair_loop_invariant_4_preserved : not tried
+[wp] Goal typed_pair_loop_invariant_4_established : not tried
+[wp] Goal typed_pair_loop_invariant_5_preserved : not tried
+[wp] Goal typed_pair_loop_invariant_5_established : not tried
+[wp] Goal typed_pair_loop_invariant_6_preserved : not tried
+[wp] Goal typed_pair_loop_invariant_6_established : not tried
 [wp] Goal typed_pair_assert_rte_mem_access : not tried
 [wp] Goal typed_pair_assert_rte_index_bound_3 : not tried
 [wp] Goal typed_pair_assert_rte_index_bound_4 : not tried
 [wp] Goal typed_pair_assert_rte_index_bound_5 : not tried
 [wp] Goal typed_pair_assert_rte_index_bound_6 : not tried
 [wp] Goal typed_pair_assert_rte_signed_overflow_2 : not tried
-[wp] Goal typed_pair_loop_assign : trivial
-[wp] Goal typed_pair_loop_assign_2 : trivial
-[wp] Goal typed_pair_assign_part1 : not tried
-[wp] Goal typed_pair_assign_part2 : not tried
-[wp] Goal typed_pair_assign_part3 : not tried
-[wp] Goal typed_pair_assign_part4 : not tried
-[wp] Goal typed_pair_loop_term_decrease : not tried
-[wp] Goal typed_pair_loop_term_positive : not tried
-[wp] Goal typed_pair_loop_term_2_decrease : not tried
-[wp] Goal typed_pair_loop_term_2_positive : not tried
-[wp] Goal typed_pair_has_pair_post : not tried
-[wp] Goal typed_pair_no_pair_post : not tried
+[wp] Goal typed_pair_loop_assigns : trivial
+[wp] Goal typed_pair_loop_assigns_2 : trivial
+[wp] Goal typed_pair_assigns_part1 : not tried
+[wp] Goal typed_pair_assigns_part2 : not tried
+[wp] Goal typed_pair_assigns_part3 : not tried
+[wp] Goal typed_pair_assigns_part4 : not tried
+[wp] Goal typed_pair_loop_variant_decrease : not tried
+[wp] Goal typed_pair_loop_variant_positive : not tried
+[wp] Goal typed_pair_loop_variant_2_decrease : not tried
+[wp] Goal typed_pair_loop_variant_2_positive : not tried
+[wp] Goal typed_pair_has_pair_ensures : not tried
+[wp] Goal typed_pair_no_pair_ensures : not tried
diff --git a/src/plugins/wp/tests/wp_gallery/oracle/frama_c_hashtbl_solved.res.oracle b/src/plugins/wp/tests/wp_gallery/oracle/frama_c_hashtbl_solved.res.oracle
index 858d5fb5abcd6833d1bd5df3a470b6fd41b7b9b9..00a8df49e163c00104c97b7203e10f9e6f4accfa 100644
--- a/src/plugins/wp/tests/wp_gallery/oracle/frama_c_hashtbl_solved.res.oracle
+++ b/src/plugins/wp/tests/wp_gallery/oracle/frama_c_hashtbl_solved.res.oracle
@@ -26,96 +26,96 @@
 [wp] Goal typed_add_assert_rte_mem_access_6 : not tried
 [wp] Goal typed_add_assert_rte_mem_access_7 : not tried
 [wp] Goal typed_add_assert_rte_signed_overflow_2 : not tried
-[wp] Goal typed_add_assign_exit : trivial
-[wp] Goal typed_add_assign_normal_part1 : trivial
-[wp] Goal typed_add_assign_normal_part2 : not tried
-[wp] Goal typed_add_assign_normal_part3 : not tried
-[wp] Goal typed_add_assign_normal_part4 : not tried
-[wp] Goal typed_add_assign_normal_part5 : not tried
-[wp] Goal typed_add_assign_normal_part6 : not tried
-[wp] Goal typed_add_assign_normal_part7 : not tried
-[wp] Goal typed_add_assign_normal_part8 : not tried
-[wp] Goal typed_add_assign_normal_part9 : not tried
-[wp] Goal typed_add_call_hash_pre : not tried
-[wp] Goal typed_add_full_post : not tried
-[wp] Goal typed_add_full_assign_exit : trivial
-[wp] Goal typed_add_full_assign_normal_part1 : trivial
-[wp] Goal typed_add_full_assign_normal_part2 : not tried
-[wp] Goal typed_add_full_assign_normal_part3 : not tried
-[wp] Goal typed_add_full_assign_normal_part4 : not tried
-[wp] Goal typed_add_full_assign_normal_part5 : not tried
-[wp] Goal typed_add_full_assign_normal_part6 : not tried
-[wp] Goal typed_add_full_assign_normal_part7 : not tried
-[wp] Goal typed_add_full_assign_normal_part8 : not tried
-[wp] Goal typed_add_full_assign_normal_part9 : not tried
-[wp] Goal typed_add_nominal_post : not tried
-[wp] Goal typed_add_nominal_post_2 : not tried
-[wp] Goal typed_add_nominal_post_3 : not tried
-[wp] Goal typed_add_nominal_post_4 : not tried
-[wp] Goal typed_add_nominal_post_5 : not tried
-[wp] Goal typed_add_nominal_assign_exit : trivial
-[wp] Goal typed_add_nominal_assign_normal_part1 : trivial
-[wp] Goal typed_add_nominal_assign_normal_part2 : not tried
-[wp] Goal typed_add_nominal_assign_normal_part3 : not tried
-[wp] Goal typed_add_nominal_assign_normal_part4 : not tried
-[wp] Goal typed_add_nominal_assign_normal_part5 : not tried
-[wp] Goal typed_add_nominal_assign_normal_part6 : not tried
-[wp] Goal typed_add_nominal_assign_normal_part7 : not tried
-[wp] Goal typed_add_nominal_assign_normal_part8 : not tried
-[wp] Goal typed_add_nominal_assign_normal_part9 : not tried
+[wp] Goal typed_add_assigns_exit : trivial
+[wp] Goal typed_add_assigns_normal_part1 : trivial
+[wp] Goal typed_add_assigns_normal_part2 : not tried
+[wp] Goal typed_add_assigns_normal_part3 : not tried
+[wp] Goal typed_add_assigns_normal_part4 : not tried
+[wp] Goal typed_add_assigns_normal_part5 : not tried
+[wp] Goal typed_add_assigns_normal_part6 : not tried
+[wp] Goal typed_add_assigns_normal_part7 : not tried
+[wp] Goal typed_add_assigns_normal_part8 : not tried
+[wp] Goal typed_add_assigns_normal_part9 : not tried
+[wp] Goal typed_add_call_hash_requires : not tried
+[wp] Goal typed_add_full_ensures : not tried
+[wp] Goal typed_add_full_assigns_exit : trivial
+[wp] Goal typed_add_full_assigns_normal_part1 : trivial
+[wp] Goal typed_add_full_assigns_normal_part2 : not tried
+[wp] Goal typed_add_full_assigns_normal_part3 : not tried
+[wp] Goal typed_add_full_assigns_normal_part4 : not tried
+[wp] Goal typed_add_full_assigns_normal_part5 : not tried
+[wp] Goal typed_add_full_assigns_normal_part6 : not tried
+[wp] Goal typed_add_full_assigns_normal_part7 : not tried
+[wp] Goal typed_add_full_assigns_normal_part8 : not tried
+[wp] Goal typed_add_full_assigns_normal_part9 : not tried
+[wp] Goal typed_add_nominal_ensures : not tried
+[wp] Goal typed_add_nominal_ensures_2 : not tried
+[wp] Goal typed_add_nominal_ensures_3 : not tried
+[wp] Goal typed_add_nominal_ensures_4 : not tried
+[wp] Goal typed_add_nominal_ensures_5 : not tried
+[wp] Goal typed_add_nominal_assigns_exit : trivial
+[wp] Goal typed_add_nominal_assigns_normal_part1 : trivial
+[wp] Goal typed_add_nominal_assigns_normal_part2 : not tried
+[wp] Goal typed_add_nominal_assigns_normal_part3 : not tried
+[wp] Goal typed_add_nominal_assigns_normal_part4 : not tried
+[wp] Goal typed_add_nominal_assigns_normal_part5 : not tried
+[wp] Goal typed_add_nominal_assigns_normal_part6 : not tried
+[wp] Goal typed_add_nominal_assigns_normal_part7 : not tried
+[wp] Goal typed_add_nominal_assigns_normal_part8 : not tried
+[wp] Goal typed_add_nominal_assigns_normal_part9 : not tried
 [wp] Goal typed_eq_string_complete_not_eq_eq : trivial
 [wp] Goal typed_eq_string_disjoint_not_eq_eq : trivial
-[wp] Goal typed_eq_string_loop_inv_preserved : not tried
-[wp] Goal typed_eq_string_loop_inv_established : not tried
-[wp] Goal typed_eq_string_loop_inv_2_preserved : not tried
-[wp] Goal typed_eq_string_loop_inv_2_established : not tried
+[wp] Goal typed_eq_string_loop_invariant_preserved : not tried
+[wp] Goal typed_eq_string_loop_invariant_established : not tried
+[wp] Goal typed_eq_string_loop_invariant_2_preserved : not tried
+[wp] Goal typed_eq_string_loop_invariant_2_established : not tried
 [wp] Goal typed_eq_string_assert_rte_mem_access : not tried
 [wp] Goal typed_eq_string_assert_rte_mem_access_2 : not tried
 [wp] Goal typed_eq_string_assert_rte_signed_overflow : not tried
-[wp] Goal typed_eq_string_loop_assign : trivial
-[wp] Goal typed_eq_string_assign_part1 : not tried
-[wp] Goal typed_eq_string_assign_part2 : not tried
-[wp] Goal typed_eq_string_assign_part3 : not tried
-[wp] Goal typed_eq_string_assign_part4 : not tried
-[wp] Goal typed_eq_string_loop_term_decrease : not tried
-[wp] Goal typed_eq_string_loop_term_positive : not tried
-[wp] Goal typed_eq_string_eq_post : not tried
-[wp] Goal typed_eq_string_not_eq_post : not tried
-[wp] Goal typed_hash_post_left_unproved : not tried
-[wp] Goal typed_hash_loop_inv_preserved : not tried
-[wp] Goal typed_hash_loop_inv_established : not tried
+[wp] Goal typed_eq_string_loop_assigns : trivial
+[wp] Goal typed_eq_string_assigns_part1 : not tried
+[wp] Goal typed_eq_string_assigns_part2 : not tried
+[wp] Goal typed_eq_string_assigns_part3 : not tried
+[wp] Goal typed_eq_string_assigns_part4 : not tried
+[wp] Goal typed_eq_string_loop_variant_decrease : not tried
+[wp] Goal typed_eq_string_loop_variant_positive : not tried
+[wp] Goal typed_eq_string_eq_ensures : not tried
+[wp] Goal typed_eq_string_not_eq_ensures : not tried
+[wp] Goal typed_hash_ensures_left_unproved : not tried
+[wp] Goal typed_hash_loop_invariant_preserved : not tried
+[wp] Goal typed_hash_loop_invariant_established : not tried
 [wp] Goal typed_hash_assert_rte_mem_access : not tried
 [wp] Goal typed_hash_assert_rte_mem_access_2 : not tried
 [wp] Goal typed_hash_assert_rte_signed_overflow : not tried
-[wp] Goal typed_hash_loop_assign : trivial
-[wp] Goal typed_hash_assign_part1 : not tried
-[wp] Goal typed_hash_assign_part2 : not tried
-[wp] Goal typed_hash_loop_term_decrease : not tried
-[wp] Goal typed_hash_loop_term_positive : not tried
-[wp] Goal typed_init_post : not tried
-[wp] Goal typed_init_post_2 : not tried
+[wp] Goal typed_hash_loop_assigns : trivial
+[wp] Goal typed_hash_assigns_part1 : not tried
+[wp] Goal typed_hash_assigns_part2 : not tried
+[wp] Goal typed_hash_loop_variant_decrease : not tried
+[wp] Goal typed_hash_loop_variant_positive : not tried
+[wp] Goal typed_init_ensures : not tried
+[wp] Goal typed_init_ensures_2 : not tried
 [wp] Goal typed_init_assert_rte_mem_access : not tried
-[wp] Goal typed_init_loop_inv_preserved : not tried
-[wp] Goal typed_init_loop_inv_established : not tried
-[wp] Goal typed_init_loop_inv_2_preserved : not tried
-[wp] Goal typed_init_loop_inv_2_established : not tried
+[wp] Goal typed_init_loop_invariant_preserved : not tried
+[wp] Goal typed_init_loop_invariant_established : not tried
+[wp] Goal typed_init_loop_invariant_2_preserved : not tried
+[wp] Goal typed_init_loop_invariant_2_established : not tried
 [wp] Goal typed_init_assert_rte_index_bound : not tried
 [wp] Goal typed_init_assert_rte_index_bound_2 : not tried
 [wp] Goal typed_init_assert_rte_mem_access_2 : not tried
 [wp] Goal typed_init_assert_rte_signed_overflow : not tried
-[wp] Goal typed_init_loop_assign_part1 : trivial
-[wp] Goal typed_init_loop_assign_part2 : not tried
-[wp] Goal typed_init_assign_part1 : not tried
-[wp] Goal typed_init_assign_part2 : not tried
-[wp] Goal typed_init_assign_part3 : not tried
-[wp] Goal typed_init_loop_term_decrease : not tried
-[wp] Goal typed_init_loop_term_positive : not tried
+[wp] Goal typed_init_loop_assigns_part1 : trivial
+[wp] Goal typed_init_loop_assigns_part2 : not tried
+[wp] Goal typed_init_assigns_part1 : not tried
+[wp] Goal typed_init_assigns_part2 : not tried
+[wp] Goal typed_init_assigns_part3 : not tried
+[wp] Goal typed_init_loop_variant_decrease : not tried
+[wp] Goal typed_init_loop_variant_positive : not tried
 [wp] Goal typed_mem_binding_complete_not_found_found : not tried
 [wp] Goal typed_mem_binding_disjoint_not_found_found : not tried
-[wp] Goal typed_mem_binding_loop_inv_preserved : not tried
-[wp] Goal typed_mem_binding_loop_inv_established : not tried
-[wp] Goal typed_mem_binding_loop_inv_2_preserved : not tried
-[wp] Goal typed_mem_binding_loop_inv_2_established : not tried
+[wp] Goal typed_mem_binding_loop_invariant_preserved : not tried
+[wp] Goal typed_mem_binding_loop_invariant_established : not tried
+[wp] Goal typed_mem_binding_loop_invariant_2_preserved : not tried
+[wp] Goal typed_mem_binding_loop_invariant_2_established : not tried
 [wp] Goal typed_mem_binding_assert_rte_index_bound : not tried
 [wp] Goal typed_mem_binding_assert_rte_index_bound_2 : not tried
 [wp] Goal typed_mem_binding_assert_rte_mem_access : not tried
@@ -130,26 +130,26 @@
 [wp] Goal typed_mem_binding_assert_rte_index_bound_10 : not tried
 [wp] Goal typed_mem_binding_assert_rte_mem_access_3 : not tried
 [wp] Goal typed_mem_binding_assert_rte_signed_overflow : not tried
-[wp] Goal typed_mem_binding_loop_assign_part1 : trivial
-[wp] Goal typed_mem_binding_loop_assign_part2 : not tried
-[wp] Goal typed_mem_binding_assign_exit_part1 : trivial
-[wp] Goal typed_mem_binding_assign_exit_part2 : not tried
-[wp] Goal typed_mem_binding_assign_exit_part3 : not tried
-[wp] Goal typed_mem_binding_assign_exit_part4 : not tried
-[wp] Goal typed_mem_binding_assign_normal_part1 : trivial
-[wp] Goal typed_mem_binding_assign_normal_part2 : not tried
-[wp] Goal typed_mem_binding_assign_normal_part3 : not tried
-[wp] Goal typed_mem_binding_assign_normal_part4 : not tried
-[wp] Goal typed_mem_binding_assign_normal_part5 : not tried
-[wp] Goal typed_mem_binding_assign_normal_part6 : not tried
-[wp] Goal typed_mem_binding_assign_normal_part7 : not tried
-[wp] Goal typed_mem_binding_loop_term_decrease : not tried
-[wp] Goal typed_mem_binding_loop_term_positive : not tried
-[wp] Goal typed_mem_binding_call_hash_pre : not tried
-[wp] Goal typed_mem_binding_call_eq_string_pre : not tried
-[wp] Goal typed_mem_binding_call_eq_string_pre_2 : not tried
-[wp] Goal typed_mem_binding_found_post : not tried
-[wp] Goal typed_mem_binding_not_found_post : not tried
-[wp] Goal typed_size_post : not tried
+[wp] Goal typed_mem_binding_loop_assigns_part1 : trivial
+[wp] Goal typed_mem_binding_loop_assigns_part2 : not tried
+[wp] Goal typed_mem_binding_assigns_exit_part1 : trivial
+[wp] Goal typed_mem_binding_assigns_exit_part2 : not tried
+[wp] Goal typed_mem_binding_assigns_exit_part3 : not tried
+[wp] Goal typed_mem_binding_assigns_exit_part4 : not tried
+[wp] Goal typed_mem_binding_assigns_normal_part1 : trivial
+[wp] Goal typed_mem_binding_assigns_normal_part2 : not tried
+[wp] Goal typed_mem_binding_assigns_normal_part3 : not tried
+[wp] Goal typed_mem_binding_assigns_normal_part4 : not tried
+[wp] Goal typed_mem_binding_assigns_normal_part5 : not tried
+[wp] Goal typed_mem_binding_assigns_normal_part6 : not tried
+[wp] Goal typed_mem_binding_assigns_normal_part7 : not tried
+[wp] Goal typed_mem_binding_loop_variant_decrease : not tried
+[wp] Goal typed_mem_binding_loop_variant_positive : not tried
+[wp] Goal typed_mem_binding_call_hash_requires : not tried
+[wp] Goal typed_mem_binding_call_eq_string_requires : not tried
+[wp] Goal typed_mem_binding_call_eq_string_requires_2 : not tried
+[wp] Goal typed_mem_binding_found_ensures : not tried
+[wp] Goal typed_mem_binding_not_found_ensures : not tried
+[wp] Goal typed_size_ensures : not tried
 [wp] Goal typed_size_assert_rte_mem_access : not tried
-[wp] Goal typed_size_assign : not tried
+[wp] Goal typed_size_assigns : not tried
diff --git a/src/plugins/wp/tests/wp_gallery/oracle/loop-statement.res.oracle b/src/plugins/wp/tests/wp_gallery/oracle/loop-statement.res.oracle
index 5b5e59d368048c9ece0eede0c84e73dfe835037a..52b5a0ec02f3a5baff3c2969562156e94d7035b8 100644
--- a/src/plugins/wp/tests/wp_gallery/oracle/loop-statement.res.oracle
+++ b/src/plugins/wp/tests/wp_gallery/oracle/loop-statement.res.oracle
@@ -4,17 +4,17 @@
 [wp] Loading driver 'share/wp.driver'
 [wp] Warning: Missing RTE guards
 [wp] Goal typed_lemma_Lb : not tried
-[wp] Goal typed_loop_statement_post_Scond : not tried
-[wp] Goal typed_loop_statement_post_Sloop : not tried
-[wp] Goal typed_loop_statement_loop_inv_Iloop_preserved : not tried
-[wp] Goal typed_loop_statement_loop_inv_Iloop_established : not tried
-[wp] Goal typed_loop_statement_loop_assign_part1 : trivial
-[wp] Goal typed_loop_statement_loop_assign_part2 : not tried
-[wp] Goal typed_loop_statement_assign_exit_part1 : trivial
-[wp] Goal typed_loop_statement_assign_exit_part2 : not tried
-[wp] Goal typed_loop_statement_assign_normal_part1 : trivial
-[wp] Goal typed_loop_statement_assign_normal_part2 : not tried
-[wp] Goal typed_loop_statement_stmt_pre_Rinv : not tried
-[wp] Goal typed_loop_statement_stmt_pre_Scond : not tried
-[wp] Goal typed_loop_statement_stmt_post_Sbody : not tried
-[wp] Goal typed_loop_statement_stmt_assign : trivial
+[wp] Goal typed_loop_statement_ensures_Scond : not tried
+[wp] Goal typed_loop_statement_ensures_Sloop : not tried
+[wp] Goal typed_loop_statement_loop_invariant_Iloop_preserved : not tried
+[wp] Goal typed_loop_statement_loop_invariant_Iloop_established : not tried
+[wp] Goal typed_loop_statement_loop_assigns_part1 : trivial
+[wp] Goal typed_loop_statement_loop_assigns_part2 : not tried
+[wp] Goal typed_loop_statement_assigns_2_exit_part1 : trivial
+[wp] Goal typed_loop_statement_assigns_2_exit_part2 : not tried
+[wp] Goal typed_loop_statement_assigns_2_normal_part1 : trivial
+[wp] Goal typed_loop_statement_assigns_2_normal_part2 : not tried
+[wp] Goal typed_loop_statement_requires_Rinv : not tried
+[wp] Goal typed_loop_statement_requires_Scond : not tried
+[wp] Goal typed_loop_statement_ensures_Sbody : not tried
+[wp] Goal typed_loop_statement_assigns : trivial
diff --git a/src/plugins/wp/tests/wp_gallery/oracle_qualif/binary-multiplication-without-overflow.res.oracle b/src/plugins/wp/tests/wp_gallery/oracle_qualif/binary-multiplication-without-overflow.res.oracle
index 90daf4367f29931b21f53b977b681d9b4bf0fa37..9ff5c4e14638d08ecbd7961498b5e8d1016a00c4 100644
--- a/src/plugins/wp/tests/wp_gallery/oracle_qualif/binary-multiplication-without-overflow.res.oracle
+++ b/src/plugins/wp/tests/wp_gallery/oracle_qualif/binary-multiplication-without-overflow.res.oracle
@@ -6,13 +6,13 @@
 [wp] 9 goals scheduled
 [wp] [Qed] Goal typed_lemma_sizeof_uint32_t_ok : Valid
 [wp] [Qed] Goal typed_lemma_sizeof_uint64_t_ok : Valid
-[wp] [Alt-Ergo] Goal typed_BinaryMultiplication_post_product : Valid
+[wp] [Alt-Ergo] Goal typed_BinaryMultiplication_ensures_product : Valid
 [wp] [Alt-Ergo] Goal typed_BinaryMultiplication_assert_a1_ok_deductible : Valid
-[wp] [Alt-Ergo] Goal typed_BinaryMultiplication_loop_inv_inv2_ok_deductible_preserved : Valid
-[wp] [Alt-Ergo] Goal typed_BinaryMultiplication_loop_inv_inv2_ok_deductible_established : Valid
-[wp] [Qed] Goal typed_BinaryMultiplication_loop_assign : Valid
-[wp] [Alt-Ergo] Goal typed_BinaryMultiplication_loop_term_decrease : Valid
-[wp] [Alt-Ergo] Goal typed_BinaryMultiplication_loop_term_positive : Valid
+[wp] [Alt-Ergo] Goal typed_BinaryMultiplication_loop_invariant_inv2_ok_deductible_preserved : Valid
+[wp] [Alt-Ergo] Goal typed_BinaryMultiplication_loop_invariant_inv2_ok_deductible_established : Valid
+[wp] [Qed] Goal typed_BinaryMultiplication_loop_assigns : Valid
+[wp] [Alt-Ergo] Goal typed_BinaryMultiplication_loop_variant_decrease : Valid
+[wp] [Alt-Ergo] Goal typed_BinaryMultiplication_loop_variant_positive : Valid
 [wp] Proved goals:    9 / 9
   Qed:             3 
   Alt-Ergo:        6
@@ -22,24 +22,24 @@ Axiomatics          WP     Alt-Ergo        Total   Success
 Axiomatic mult       2     -                 2       100%
 -------------------------------------------------------------
 Functions           WP     Alt-Ergo        Total   Success
-BinaryMultiplication   1    6 (56..80)       7       100%
+BinaryMultiplication   1    6 (64..88)       7       100%
 -------------------------------------------------------------
 [wp] Running WP plugin...
 [rte] annotating function BinaryMultiplication
 [wp] 13 goals scheduled
 [wp] [Qed] Goal typed_lemma_sizeof_uint32_t_ok : Valid
 [wp] [Qed] Goal typed_lemma_sizeof_uint64_t_ok : Valid
-[wp] [Alt-Ergo] Goal typed_BinaryMultiplication_post_product : Valid
+[wp] [Alt-Ergo] Goal typed_BinaryMultiplication_ensures_product : Valid
 [wp] [Alt-Ergo] Goal typed_BinaryMultiplication_assert_a1_ok_deductible : Valid
-[wp] [Alt-Ergo] Goal typed_BinaryMultiplication_loop_inv_inv2_ok_deductible_preserved : Valid
-[wp] [Alt-Ergo] Goal typed_BinaryMultiplication_loop_inv_inv2_ok_deductible_established : Valid
+[wp] [Alt-Ergo] Goal typed_BinaryMultiplication_loop_invariant_inv2_ok_deductible_preserved : Valid
+[wp] [Alt-Ergo] Goal typed_BinaryMultiplication_loop_invariant_inv2_ok_deductible_established : Valid
 [wp] [Alt-Ergo] Goal typed_BinaryMultiplication_assert_rte_unsigned_overflow : Valid
 [wp] [Alt-Ergo] Goal typed_BinaryMultiplication_assert_rte_unsigned_overflow_2 : Valid
 [wp] [Alt-Ergo] Goal typed_BinaryMultiplication_assert_rte_unsigned_overflow_3 : Valid
 [wp] [Alt-Ergo] Goal typed_BinaryMultiplication_assert_rte_unsigned_overflow_4 : Valid
-[wp] [Qed] Goal typed_BinaryMultiplication_loop_assign : Valid
-[wp] [Alt-Ergo] Goal typed_BinaryMultiplication_loop_term_decrease : Valid
-[wp] [Alt-Ergo] Goal typed_BinaryMultiplication_loop_term_positive : Valid
+[wp] [Qed] Goal typed_BinaryMultiplication_loop_assigns : Valid
+[wp] [Alt-Ergo] Goal typed_BinaryMultiplication_loop_variant_decrease : Valid
+[wp] [Alt-Ergo] Goal typed_BinaryMultiplication_loop_variant_positive : Valid
 [wp] Proved goals:   10 / 13
   Qed:             0 
   Alt-Ergo:       10
@@ -49,5 +49,5 @@ Axiomatics          WP     Alt-Ergo        Total   Success
 Axiomatic mult       2     -                 2       100%
 -------------------------------------------------------------
 Functions           WP     Alt-Ergo        Total   Success
-BinaryMultiplication   1   10 (56..80)      11       100%
+BinaryMultiplication   1   10 (64..88)      11       100%
 -------------------------------------------------------------
diff --git a/src/plugins/wp/tests/wp_gallery/oracle_qualif/binary-multiplication.res.oracle b/src/plugins/wp/tests/wp_gallery/oracle_qualif/binary-multiplication.res.oracle
index eece2d7e9c0f602a2df9c25328eebbd3a0cd4b01..4ed3a30466c56941d1f80920b99c2a74bf8b43bd 100644
--- a/src/plugins/wp/tests/wp_gallery/oracle_qualif/binary-multiplication.res.oracle
+++ b/src/plugins/wp/tests/wp_gallery/oracle_qualif/binary-multiplication.res.oracle
@@ -8,13 +8,13 @@
 [wp] [Alt-Ergo] Goal typed_lemma_ax6_ok : Valid
 [wp] [Qed] Goal typed_lemma_sizeof_uint32_t_ok : Valid
 [wp] [Qed] Goal typed_lemma_sizeof_uint64_t_ok : Valid
-[wp] [Alt-Ergo] Goal typed_BinaryMultiplication_post_product : Valid
+[wp] [Alt-Ergo] Goal typed_BinaryMultiplication_ensures_product : Valid
 [wp] [Alt-Ergo] Goal typed_BinaryMultiplication_assert_a1_ok_deductible : Valid
 [wp] [Alt-Ergo] Goal typed_BinaryMultiplication_assert_a2_ok : Valid
 [wp] [Alt-Ergo] Goal typed_BinaryMultiplication_assert_a3_ok : Valid
-[wp] [Qed] Goal typed_BinaryMultiplication_loop_assign : Valid
-[wp] [Alt-Ergo] Goal typed_BinaryMultiplication_loop_term_decrease : Valid
-[wp] [Alt-Ergo] Goal typed_BinaryMultiplication_loop_term_positive : Valid
+[wp] [Qed] Goal typed_BinaryMultiplication_loop_assigns : Valid
+[wp] [Alt-Ergo] Goal typed_BinaryMultiplication_loop_variant_decrease : Valid
+[wp] [Alt-Ergo] Goal typed_BinaryMultiplication_loop_variant_positive : Valid
 [wp] Proved goals:   11 / 11
   Qed:             3 
   Alt-Ergo:        8
@@ -33,13 +33,13 @@ BinaryMultiplication   1    6 (208..256)     7       100%
 [wp] [Alt-Ergo] Goal typed_lemma_ax6_ok : Valid
 [wp] [Qed] Goal typed_lemma_sizeof_uint32_t_ok : Valid
 [wp] [Qed] Goal typed_lemma_sizeof_uint64_t_ok : Valid
-[wp] [Alt-Ergo] Goal typed_BinaryMultiplication_post_product : Valid
+[wp] [Alt-Ergo] Goal typed_BinaryMultiplication_ensures_product : Valid
 [wp] [Alt-Ergo] Goal typed_BinaryMultiplication_assert_a1_ok_deductible : Valid
 [wp] [Alt-Ergo] Goal typed_BinaryMultiplication_assert_a2_ok : Valid
 [wp] [Alt-Ergo] Goal typed_BinaryMultiplication_assert_a3_ok : Valid
-[wp] [Qed] Goal typed_BinaryMultiplication_loop_assign : Valid
-[wp] [Alt-Ergo] Goal typed_BinaryMultiplication_loop_term_decrease : Valid
-[wp] [Alt-Ergo] Goal typed_BinaryMultiplication_loop_term_positive : Valid
+[wp] [Qed] Goal typed_BinaryMultiplication_loop_assigns : Valid
+[wp] [Alt-Ergo] Goal typed_BinaryMultiplication_loop_variant_decrease : Valid
+[wp] [Alt-Ergo] Goal typed_BinaryMultiplication_loop_variant_positive : Valid
 [wp] Proved goals:    8 / 11
   Qed:             0 
   Alt-Ergo:        8
diff --git a/src/plugins/wp/tests/wp_gallery/oracle_qualif/frama_c_exo1_solved.res.oracle b/src/plugins/wp/tests/wp_gallery/oracle_qualif/frama_c_exo1_solved.res.oracle
index 18a6191913b029b426e431a9887fffd983c768cb..ce30257121484b2aec47784e9ff25785521a9566 100644
--- a/src/plugins/wp/tests/wp_gallery/oracle_qualif/frama_c_exo1_solved.res.oracle
+++ b/src/plugins/wp/tests/wp_gallery/oracle_qualif/frama_c_exo1_solved.res.oracle
@@ -4,47 +4,47 @@
 [wp] Loading driver 'share/wp.driver'
 [wp] Warning: Missing RTE guards
 [wp] 10 goals scheduled
-[wp] [Alt-Ergo] Goal typed_exo1_post : Valid
-[wp] [Alt-Ergo] Goal typed_exo1_post_2 : Valid
-[wp] [Alt-Ergo] Goal typed_exo1_loop_inv_preserved : Valid
-[wp] [Qed] Goal typed_exo1_loop_inv_established : Valid
-[wp] [Alt-Ergo] Goal typed_exo1_loop_inv_2_preserved : Valid
-[wp] [Qed] Goal typed_exo1_loop_inv_2_established : Valid
-[wp] [Qed] Goal typed_exo1_loop_assign : Valid
-[wp] [Qed] Goal typed_exo1_assign : Valid
-[wp] [Qed] Goal typed_exo1_loop_term_decrease : Valid
-[wp] [Qed] Goal typed_exo1_loop_term_positive : Valid
+[wp] [Alt-Ergo] Goal typed_exo1_ensures : Valid
+[wp] [Alt-Ergo] Goal typed_exo1_ensures_2 : Valid
+[wp] [Alt-Ergo] Goal typed_exo1_loop_invariant_preserved : Valid
+[wp] [Qed] Goal typed_exo1_loop_invariant_established : Valid
+[wp] [Alt-Ergo] Goal typed_exo1_loop_invariant_2_preserved : Valid
+[wp] [Qed] Goal typed_exo1_loop_invariant_2_established : Valid
+[wp] [Qed] Goal typed_exo1_loop_assigns : Valid
+[wp] [Qed] Goal typed_exo1_assigns : Valid
+[wp] [Qed] Goal typed_exo1_loop_variant_decrease : Valid
+[wp] [Qed] Goal typed_exo1_loop_variant_positive : Valid
 [wp] Proved goals:   10 / 10
   Qed:             6 
   Alt-Ergo:        4
 [wp] Report 'tests/wp_gallery/frama_c_exo1_solved.c.0.report.json'
 -------------------------------------------------------------
 Functions           WP     Alt-Ergo        Total   Success
-exo1                 6      4 (176..200)    10       100%
+exo1                 6      4 (176..224)    10       100%
 -------------------------------------------------------------
 [wp] Running WP plugin...
 [rte] annotating function exo1
 [wp] 15 goals scheduled
-[wp] [Alt-Ergo] Goal typed_exo1_post : Valid
-[wp] [Alt-Ergo] Goal typed_exo1_post_2 : Valid
+[wp] [Alt-Ergo] Goal typed_exo1_ensures : Valid
+[wp] [Alt-Ergo] Goal typed_exo1_ensures_2 : Valid
 [wp] [Alt-Ergo] Goal typed_exo1_assert_rte_signed_overflow : Valid
-[wp] [Alt-Ergo] Goal typed_exo1_loop_inv_preserved : Valid
-[wp] [Qed] Goal typed_exo1_loop_inv_established : Valid
-[wp] [Alt-Ergo] Goal typed_exo1_loop_inv_2_preserved : Valid
-[wp] [Qed] Goal typed_exo1_loop_inv_2_established : Valid
+[wp] [Alt-Ergo] Goal typed_exo1_loop_invariant_preserved : Valid
+[wp] [Qed] Goal typed_exo1_loop_invariant_established : Valid
+[wp] [Alt-Ergo] Goal typed_exo1_loop_invariant_2_preserved : Valid
+[wp] [Qed] Goal typed_exo1_loop_invariant_2_established : Valid
 [wp] [Alt-Ergo] Goal typed_exo1_assert_rte_mem_access : Valid
 [wp] [Alt-Ergo] Goal typed_exo1_assert_rte_mem_access_2 : Valid
 [wp] [Alt-Ergo] Goal typed_exo1_assert_rte_signed_overflow_2 : Valid
 [wp] [Alt-Ergo] Goal typed_exo1_assert_rte_signed_overflow_3 : Valid
-[wp] [Qed] Goal typed_exo1_loop_assign : Valid
-[wp] [Qed] Goal typed_exo1_assign : Valid
-[wp] [Qed] Goal typed_exo1_loop_term_decrease : Valid
-[wp] [Qed] Goal typed_exo1_loop_term_positive : Valid
+[wp] [Qed] Goal typed_exo1_loop_assigns : Valid
+[wp] [Qed] Goal typed_exo1_assigns : Valid
+[wp] [Qed] Goal typed_exo1_loop_variant_decrease : Valid
+[wp] [Qed] Goal typed_exo1_loop_variant_positive : Valid
 [wp] Proved goals:    9 / 15
   Qed:             0 
   Alt-Ergo:        9
 [wp] Report 'tests/wp_gallery/frama_c_exo1_solved.c.0.report.json'
 -------------------------------------------------------------
 Functions           WP     Alt-Ergo        Total   Success
-exo1                 6      9 (176..200)    15       100%
+exo1                 6      9 (176..224)    15       100%
 -------------------------------------------------------------
diff --git a/src/plugins/wp/tests/wp_gallery/oracle_qualif/frama_c_exo2_solved.res.oracle b/src/plugins/wp/tests/wp_gallery/oracle_qualif/frama_c_exo2_solved.res.oracle
index 41e2e2c8dbcf9809137d9471457e976477730fa3..f2115310be12c73ff806d20a362e3eeabfcb6637 100644
--- a/src/plugins/wp/tests/wp_gallery/oracle_qualif/frama_c_exo2_solved.res.oracle
+++ b/src/plugins/wp/tests/wp_gallery/oracle_qualif/frama_c_exo2_solved.res.oracle
@@ -4,67 +4,67 @@
 [wp] Loading driver 'share/wp.driver'
 [wp] Warning: Missing RTE guards
 [wp] 22 goals scheduled
-[wp] [Alt-Ergo] Goal typed_max_subarray_post : Valid
-[wp] [Alt-Ergo] Goal typed_max_subarray_post_2 : Valid
-[wp] [Alt-Ergo] Goal typed_max_subarray_loop_inv_preserved : Valid
-[wp] [Qed] Goal typed_max_subarray_loop_inv_established : Valid
-[wp] [Alt-Ergo] Goal typed_max_subarray_loop_inv_2_preserved : Valid
-[wp] [Qed] Goal typed_max_subarray_loop_inv_2_established : Valid
-[wp] [Alt-Ergo] Goal typed_max_subarray_loop_inv_3_preserved : Valid
-[wp] [Qed] Goal typed_max_subarray_loop_inv_3_established : Valid
-[wp] [Qed] Goal typed_max_subarray_loop_inv_4_preserved : Valid
-[wp] [Qed] Goal typed_max_subarray_loop_inv_4_established : Valid
-[wp] [Alt-Ergo] Goal typed_max_subarray_loop_inv_5_preserved : Valid
-[wp] [Alt-Ergo] Goal typed_max_subarray_loop_inv_5_established : Valid
-[wp] [Alt-Ergo] Goal typed_max_subarray_loop_inv_6_preserved : Valid
-[wp] [Alt-Ergo] Goal typed_max_subarray_loop_inv_6_established : Valid
-[wp] [Alt-Ergo] Goal typed_max_subarray_loop_inv_7_preserved : Valid
-[wp] [Alt-Ergo] Goal typed_max_subarray_loop_inv_7_established : Valid
-[wp] [Alt-Ergo] Goal typed_max_subarray_loop_inv_8_preserved : Valid
-[wp] [Alt-Ergo] Goal typed_max_subarray_loop_inv_8_established : Valid
-[wp] [Qed] Goal typed_max_subarray_loop_assign : Valid
-[wp] [Qed] Goal typed_max_subarray_assign : Valid
-[wp] [Qed] Goal typed_max_subarray_loop_term_decrease : Valid
-[wp] [Qed] Goal typed_max_subarray_loop_term_positive : Valid
+[wp] [Alt-Ergo] Goal typed_max_subarray_ensures : Valid
+[wp] [Alt-Ergo] Goal typed_max_subarray_ensures_2 : Valid
+[wp] [Alt-Ergo] Goal typed_max_subarray_loop_invariant_preserved : Valid
+[wp] [Qed] Goal typed_max_subarray_loop_invariant_established : Valid
+[wp] [Alt-Ergo] Goal typed_max_subarray_loop_invariant_2_preserved : Valid
+[wp] [Qed] Goal typed_max_subarray_loop_invariant_2_established : Valid
+[wp] [Alt-Ergo] Goal typed_max_subarray_loop_invariant_3_preserved : Valid
+[wp] [Qed] Goal typed_max_subarray_loop_invariant_3_established : Valid
+[wp] [Qed] Goal typed_max_subarray_loop_invariant_4_preserved : Valid
+[wp] [Qed] Goal typed_max_subarray_loop_invariant_4_established : Valid
+[wp] [Alt-Ergo] Goal typed_max_subarray_loop_invariant_5_preserved : Valid
+[wp] [Alt-Ergo] Goal typed_max_subarray_loop_invariant_5_established : Valid
+[wp] [Alt-Ergo] Goal typed_max_subarray_loop_invariant_6_preserved : Valid
+[wp] [Alt-Ergo] Goal typed_max_subarray_loop_invariant_6_established : Valid
+[wp] [Alt-Ergo] Goal typed_max_subarray_loop_invariant_7_preserved : Valid
+[wp] [Alt-Ergo] Goal typed_max_subarray_loop_invariant_7_established : Valid
+[wp] [Alt-Ergo] Goal typed_max_subarray_loop_invariant_8_preserved : Valid
+[wp] [Alt-Ergo] Goal typed_max_subarray_loop_invariant_8_established : Valid
+[wp] [Qed] Goal typed_max_subarray_loop_assigns : Valid
+[wp] [Qed] Goal typed_max_subarray_assigns : Valid
+[wp] [Qed] Goal typed_max_subarray_loop_variant_decrease : Valid
+[wp] [Qed] Goal typed_max_subarray_loop_variant_positive : Valid
 [wp] Proved goals:   22 / 22
   Qed:             9 
   Alt-Ergo:       13
 [wp] Report 'tests/wp_gallery/frama_c_exo2_solved.c.0.report.json'
 -------------------------------------------------------------
 Functions           WP     Alt-Ergo        Total   Success
-max_subarray         9     13 (256..304)    22       100%
+max_subarray         9     13 (272..320)    22       100%
 -------------------------------------------------------------
 [wp] Running WP plugin...
 [rte] annotating function max_subarray
 [wp] 23 goals scheduled
-[wp] [Alt-Ergo] Goal typed_max_subarray_post : Valid
-[wp] [Alt-Ergo] Goal typed_max_subarray_post_2 : Valid
-[wp] [Alt-Ergo] Goal typed_max_subarray_loop_inv_preserved : Valid
-[wp] [Qed] Goal typed_max_subarray_loop_inv_established : Valid
-[wp] [Alt-Ergo] Goal typed_max_subarray_loop_inv_2_preserved : Valid
-[wp] [Qed] Goal typed_max_subarray_loop_inv_2_established : Valid
-[wp] [Alt-Ergo] Goal typed_max_subarray_loop_inv_3_preserved : Valid
-[wp] [Qed] Goal typed_max_subarray_loop_inv_3_established : Valid
-[wp] [Qed] Goal typed_max_subarray_loop_inv_4_preserved : Valid
-[wp] [Qed] Goal typed_max_subarray_loop_inv_4_established : Valid
-[wp] [Alt-Ergo] Goal typed_max_subarray_loop_inv_5_preserved : Valid
-[wp] [Alt-Ergo] Goal typed_max_subarray_loop_inv_5_established : Valid
-[wp] [Alt-Ergo] Goal typed_max_subarray_loop_inv_6_preserved : Valid
-[wp] [Alt-Ergo] Goal typed_max_subarray_loop_inv_6_established : Valid
-[wp] [Alt-Ergo] Goal typed_max_subarray_loop_inv_7_preserved : Valid
-[wp] [Alt-Ergo] Goal typed_max_subarray_loop_inv_7_established : Valid
-[wp] [Alt-Ergo] Goal typed_max_subarray_loop_inv_8_preserved : Valid
-[wp] [Alt-Ergo] Goal typed_max_subarray_loop_inv_8_established : Valid
+[wp] [Alt-Ergo] Goal typed_max_subarray_ensures : Valid
+[wp] [Alt-Ergo] Goal typed_max_subarray_ensures_2 : Valid
+[wp] [Alt-Ergo] Goal typed_max_subarray_loop_invariant_preserved : Valid
+[wp] [Qed] Goal typed_max_subarray_loop_invariant_established : Valid
+[wp] [Alt-Ergo] Goal typed_max_subarray_loop_invariant_2_preserved : Valid
+[wp] [Qed] Goal typed_max_subarray_loop_invariant_2_established : Valid
+[wp] [Alt-Ergo] Goal typed_max_subarray_loop_invariant_3_preserved : Valid
+[wp] [Qed] Goal typed_max_subarray_loop_invariant_3_established : Valid
+[wp] [Qed] Goal typed_max_subarray_loop_invariant_4_preserved : Valid
+[wp] [Qed] Goal typed_max_subarray_loop_invariant_4_established : Valid
+[wp] [Alt-Ergo] Goal typed_max_subarray_loop_invariant_5_preserved : Valid
+[wp] [Alt-Ergo] Goal typed_max_subarray_loop_invariant_5_established : Valid
+[wp] [Alt-Ergo] Goal typed_max_subarray_loop_invariant_6_preserved : Valid
+[wp] [Alt-Ergo] Goal typed_max_subarray_loop_invariant_6_established : Valid
+[wp] [Alt-Ergo] Goal typed_max_subarray_loop_invariant_7_preserved : Valid
+[wp] [Alt-Ergo] Goal typed_max_subarray_loop_invariant_7_established : Valid
+[wp] [Alt-Ergo] Goal typed_max_subarray_loop_invariant_8_preserved : Valid
+[wp] [Alt-Ergo] Goal typed_max_subarray_loop_invariant_8_established : Valid
 [wp] [Alt-Ergo] Goal typed_max_subarray_assert_rte_mem_access : Valid
-[wp] [Qed] Goal typed_max_subarray_loop_assign : Valid
-[wp] [Qed] Goal typed_max_subarray_assign : Valid
-[wp] [Qed] Goal typed_max_subarray_loop_term_decrease : Valid
-[wp] [Qed] Goal typed_max_subarray_loop_term_positive : Valid
+[wp] [Qed] Goal typed_max_subarray_loop_assigns : Valid
+[wp] [Qed] Goal typed_max_subarray_assigns : Valid
+[wp] [Qed] Goal typed_max_subarray_loop_variant_decrease : Valid
+[wp] [Qed] Goal typed_max_subarray_loop_variant_positive : Valid
 [wp] Proved goals:   14 / 23
   Qed:             0 
   Alt-Ergo:       14
 [wp] Report 'tests/wp_gallery/frama_c_exo2_solved.c.0.report.json'
 -------------------------------------------------------------
 Functions           WP     Alt-Ergo        Total   Success
-max_subarray         9     14 (256..304)    23       100%
+max_subarray         9     14 (272..320)    23       100%
 -------------------------------------------------------------
diff --git a/src/plugins/wp/tests/wp_gallery/oracle_qualif/frama_c_exo3_solved.old.res.oracle b/src/plugins/wp/tests/wp_gallery/oracle_qualif/frama_c_exo3_solved.old.res.oracle
index 4f585ac10bd9c239defe67670e5d4bfebc4a8efa..1ff95155e5ec31109591b89fd9b36878a684d65c 100644
--- a/src/plugins/wp/tests/wp_gallery/oracle_qualif/frama_c_exo3_solved.old.res.oracle
+++ b/src/plugins/wp/tests/wp_gallery/oracle_qualif/frama_c_exo3_solved.old.res.oracle
@@ -4,40 +4,40 @@
 [wp] Loading driver 'share/wp.driver'
 [wp] Warning: Missing RTE guards
 [wp] 34 goals scheduled
-[wp] [Alt-Ergo] Goal typed_ref_equal_elements_post : Valid
-[wp] [Alt-Ergo] Goal typed_ref_equal_elements_post_2 : Valid
-[wp] [Alt-Ergo] Goal typed_ref_equal_elements_post_3 : Valid
-[wp] [Alt-Ergo] Goal typed_ref_equal_elements_loop_inv_preserved : Valid
-[wp] [Qed] Goal typed_ref_equal_elements_loop_inv_established : Valid
-[wp] [Alt-Ergo] Goal typed_ref_equal_elements_loop_inv_2_preserved : Valid
-[wp] [Qed] Goal typed_ref_equal_elements_loop_inv_2_established : Valid
-[wp] [Alt-Ergo] Goal typed_ref_equal_elements_loop_inv_3_preserved : Valid
-[wp] [Qed] Goal typed_ref_equal_elements_loop_inv_3_established : Valid
-[wp] [Qed] Goal typed_ref_equal_elements_loop_inv_4_preserved : Valid
-[wp] [Qed] Goal typed_ref_equal_elements_loop_inv_4_established : Valid
-[wp] [Alt-Ergo] Goal typed_ref_equal_elements_loop_inv_5_preserved : Valid
-[wp] [Qed] Goal typed_ref_equal_elements_loop_inv_5_established : Valid
-[wp] [Alt-Ergo] Goal typed_ref_equal_elements_loop_inv_6_preserved : Valid
-[wp] [Qed] Goal typed_ref_equal_elements_loop_inv_6_established : Valid
-[wp] [Alt-Ergo] Goal typed_ref_equal_elements_loop_inv_7_preserved : Valid
-[wp] [Qed] Goal typed_ref_equal_elements_loop_inv_7_established : Valid
-[wp] [Alt-Ergo] Goal typed_ref_equal_elements_loop_inv_8_preserved : Valid
-[wp] [Alt-Ergo] Goal typed_ref_equal_elements_loop_inv_8_established : Valid
-[wp] [Alt-Ergo] Goal typed_ref_equal_elements_loop_inv_9_preserved : Valid
-[wp] [Qed] Goal typed_ref_equal_elements_loop_inv_9_established : Valid
-[wp] [Alt-Ergo] Goal typed_ref_equal_elements_loop_inv_10_preserved : Valid
-[wp] [Alt-Ergo] Goal typed_ref_equal_elements_loop_inv_10_established : Valid
+[wp] [Alt-Ergo] Goal typed_ref_equal_elements_ensures : Valid
+[wp] [Alt-Ergo] Goal typed_ref_equal_elements_ensures_2 : Valid
+[wp] [Alt-Ergo] Goal typed_ref_equal_elements_ensures_3 : Valid
+[wp] [Alt-Ergo] Goal typed_ref_equal_elements_loop_invariant_preserved : Valid
+[wp] [Qed] Goal typed_ref_equal_elements_loop_invariant_established : Valid
+[wp] [Alt-Ergo] Goal typed_ref_equal_elements_loop_invariant_2_preserved : Valid
+[wp] [Qed] Goal typed_ref_equal_elements_loop_invariant_2_established : Valid
+[wp] [Alt-Ergo] Goal typed_ref_equal_elements_loop_invariant_3_preserved : Valid
+[wp] [Qed] Goal typed_ref_equal_elements_loop_invariant_3_established : Valid
+[wp] [Qed] Goal typed_ref_equal_elements_loop_invariant_4_preserved : Valid
+[wp] [Qed] Goal typed_ref_equal_elements_loop_invariant_4_established : Valid
+[wp] [Alt-Ergo] Goal typed_ref_equal_elements_loop_invariant_5_preserved : Valid
+[wp] [Qed] Goal typed_ref_equal_elements_loop_invariant_5_established : Valid
+[wp] [Alt-Ergo] Goal typed_ref_equal_elements_loop_invariant_6_preserved : Valid
+[wp] [Qed] Goal typed_ref_equal_elements_loop_invariant_6_established : Valid
+[wp] [Alt-Ergo] Goal typed_ref_equal_elements_loop_invariant_7_preserved : Valid
+[wp] [Qed] Goal typed_ref_equal_elements_loop_invariant_7_established : Valid
+[wp] [Alt-Ergo] Goal typed_ref_equal_elements_loop_invariant_8_preserved : Valid
+[wp] [Alt-Ergo] Goal typed_ref_equal_elements_loop_invariant_8_established : Valid
+[wp] [Alt-Ergo] Goal typed_ref_equal_elements_loop_invariant_9_preserved : Valid
+[wp] [Qed] Goal typed_ref_equal_elements_loop_invariant_9_established : Valid
+[wp] [Alt-Ergo] Goal typed_ref_equal_elements_loop_invariant_10_preserved : Valid
+[wp] [Alt-Ergo] Goal typed_ref_equal_elements_loop_invariant_10_established : Valid
 [wp] [Alt-Ergo] Goal typed_ref_equal_elements_assert : Valid
 [wp] [Alt-Ergo] Goal typed_ref_equal_elements_assert_2 : Valid
-[wp] [Qed] Goal typed_ref_equal_elements_loop_assign : Valid
-[wp] [Qed] Goal typed_ref_equal_elements_loop_assign_2 : Valid
-[wp] [Qed] Goal typed_ref_equal_elements_assign_part1 : Valid
-[wp] [Qed] Goal typed_ref_equal_elements_assign_part2 : Valid
-[wp] [Qed] Goal typed_ref_equal_elements_assign_part3 : Valid
-[wp] [Qed] Goal typed_ref_equal_elements_loop_term_decrease : Valid
-[wp] [Qed] Goal typed_ref_equal_elements_loop_term_positive : Valid
-[wp] [Qed] Goal typed_ref_equal_elements_loop_term_2_decrease : Valid
-[wp] [Qed] Goal typed_ref_equal_elements_loop_term_2_positive : Valid
+[wp] [Qed] Goal typed_ref_equal_elements_loop_assigns : Valid
+[wp] [Qed] Goal typed_ref_equal_elements_loop_assigns_2 : Valid
+[wp] [Qed] Goal typed_ref_equal_elements_assigns_part1 : Valid
+[wp] [Qed] Goal typed_ref_equal_elements_assigns_part2 : Valid
+[wp] [Qed] Goal typed_ref_equal_elements_assigns_part3 : Valid
+[wp] [Qed] Goal typed_ref_equal_elements_loop_variant_decrease : Valid
+[wp] [Qed] Goal typed_ref_equal_elements_loop_variant_positive : Valid
+[wp] [Qed] Goal typed_ref_equal_elements_loop_variant_2_decrease : Valid
+[wp] [Qed] Goal typed_ref_equal_elements_loop_variant_2_positive : Valid
 [wp] Proved goals:   34 / 34
   Qed:            18 
   Alt-Ergo:       16
@@ -57,34 +57,34 @@ equal_elements      18     16 (672..768)    34       100%
 [wp] Running WP plugin...
 [rte] annotating function equal_elements
 [wp] 50 goals scheduled
-[wp] [Alt-Ergo] Goal typed_ref_equal_elements_post : Valid
-[wp] [Alt-Ergo] Goal typed_ref_equal_elements_post_2 : Valid
-[wp] [Alt-Ergo] Goal typed_ref_equal_elements_post_3 : Valid
+[wp] [Alt-Ergo] Goal typed_ref_equal_elements_ensures : Valid
+[wp] [Alt-Ergo] Goal typed_ref_equal_elements_ensures_2 : Valid
+[wp] [Alt-Ergo] Goal typed_ref_equal_elements_ensures_3 : Valid
 [wp] [Qed] Goal typed_ref_equal_elements_assert_rte_mem_access : Valid
 [wp] [Qed] Goal typed_ref_equal_elements_assert_rte_mem_access_2 : Valid
-[wp] [Alt-Ergo] Goal typed_ref_equal_elements_loop_inv_preserved : Valid
-[wp] [Qed] Goal typed_ref_equal_elements_loop_inv_established : Valid
-[wp] [Alt-Ergo] Goal typed_ref_equal_elements_loop_inv_2_preserved : Valid
-[wp] [Qed] Goal typed_ref_equal_elements_loop_inv_2_established : Valid
+[wp] [Alt-Ergo] Goal typed_ref_equal_elements_loop_invariant_preserved : Valid
+[wp] [Qed] Goal typed_ref_equal_elements_loop_invariant_established : Valid
+[wp] [Alt-Ergo] Goal typed_ref_equal_elements_loop_invariant_2_preserved : Valid
+[wp] [Qed] Goal typed_ref_equal_elements_loop_invariant_2_established : Valid
 [wp] [Qed] Goal typed_ref_equal_elements_assert_rte_index_bound : Valid
 [wp] [Qed] Goal typed_ref_equal_elements_assert_rte_index_bound_2 : Valid
 [wp] [Alt-Ergo] Goal typed_ref_equal_elements_assert_rte_signed_overflow : Valid
-[wp] [Alt-Ergo] Goal typed_ref_equal_elements_loop_inv_3_preserved : Valid
-[wp] [Qed] Goal typed_ref_equal_elements_loop_inv_3_established : Valid
-[wp] [Qed] Goal typed_ref_equal_elements_loop_inv_4_preserved : Valid
-[wp] [Qed] Goal typed_ref_equal_elements_loop_inv_4_established : Valid
-[wp] [Alt-Ergo] Goal typed_ref_equal_elements_loop_inv_5_preserved : Valid
-[wp] [Qed] Goal typed_ref_equal_elements_loop_inv_5_established : Valid
-[wp] [Alt-Ergo] Goal typed_ref_equal_elements_loop_inv_6_preserved : Valid
-[wp] [Qed] Goal typed_ref_equal_elements_loop_inv_6_established : Valid
-[wp] [Alt-Ergo] Goal typed_ref_equal_elements_loop_inv_7_preserved : Valid
-[wp] [Qed] Goal typed_ref_equal_elements_loop_inv_7_established : Valid
-[wp] [Alt-Ergo] Goal typed_ref_equal_elements_loop_inv_8_preserved : Valid
-[wp] [Alt-Ergo] Goal typed_ref_equal_elements_loop_inv_8_established : Valid
-[wp] [Alt-Ergo] Goal typed_ref_equal_elements_loop_inv_9_preserved : Valid
-[wp] [Qed] Goal typed_ref_equal_elements_loop_inv_9_established : Valid
-[wp] [Alt-Ergo] Goal typed_ref_equal_elements_loop_inv_10_preserved : Valid
-[wp] [Alt-Ergo] Goal typed_ref_equal_elements_loop_inv_10_established : Valid
+[wp] [Alt-Ergo] Goal typed_ref_equal_elements_loop_invariant_3_preserved : Valid
+[wp] [Qed] Goal typed_ref_equal_elements_loop_invariant_3_established : Valid
+[wp] [Qed] Goal typed_ref_equal_elements_loop_invariant_4_preserved : Valid
+[wp] [Qed] Goal typed_ref_equal_elements_loop_invariant_4_established : Valid
+[wp] [Alt-Ergo] Goal typed_ref_equal_elements_loop_invariant_5_preserved : Valid
+[wp] [Qed] Goal typed_ref_equal_elements_loop_invariant_5_established : Valid
+[wp] [Alt-Ergo] Goal typed_ref_equal_elements_loop_invariant_6_preserved : Valid
+[wp] [Qed] Goal typed_ref_equal_elements_loop_invariant_6_established : Valid
+[wp] [Alt-Ergo] Goal typed_ref_equal_elements_loop_invariant_7_preserved : Valid
+[wp] [Qed] Goal typed_ref_equal_elements_loop_invariant_7_established : Valid
+[wp] [Alt-Ergo] Goal typed_ref_equal_elements_loop_invariant_8_preserved : Valid
+[wp] [Alt-Ergo] Goal typed_ref_equal_elements_loop_invariant_8_established : Valid
+[wp] [Alt-Ergo] Goal typed_ref_equal_elements_loop_invariant_9_preserved : Valid
+[wp] [Qed] Goal typed_ref_equal_elements_loop_invariant_9_established : Valid
+[wp] [Alt-Ergo] Goal typed_ref_equal_elements_loop_invariant_10_preserved : Valid
+[wp] [Alt-Ergo] Goal typed_ref_equal_elements_loop_invariant_10_established : Valid
 [wp] [Alt-Ergo] Goal typed_ref_equal_elements_assert_rte_mem_access_3 : Valid
 [wp] [Alt-Ergo] Goal typed_ref_equal_elements_assert_rte_index_bound_3 : Valid
 [wp] [Alt-Ergo] Goal typed_ref_equal_elements_assert_rte_index_bound_4 : Valid
@@ -98,15 +98,15 @@ equal_elements      18     16 (672..768)    34       100%
 [wp] [Qed] Goal typed_ref_equal_elements_assert_rte_index_bound_6 : Valid
 [wp] [Alt-Ergo] Goal typed_ref_equal_elements_assert_2 : Valid
 [wp] [Alt-Ergo] Goal typed_ref_equal_elements_assert_rte_signed_overflow_2 : Valid
-[wp] [Qed] Goal typed_ref_equal_elements_loop_assign : Valid
-[wp] [Qed] Goal typed_ref_equal_elements_loop_assign_2 : Valid
-[wp] [Qed] Goal typed_ref_equal_elements_assign_part1 : Valid
-[wp] [Qed] Goal typed_ref_equal_elements_assign_part2 : Valid
-[wp] [Qed] Goal typed_ref_equal_elements_assign_part3 : Valid
-[wp] [Qed] Goal typed_ref_equal_elements_loop_term_decrease : Valid
-[wp] [Qed] Goal typed_ref_equal_elements_loop_term_positive : Valid
-[wp] [Qed] Goal typed_ref_equal_elements_loop_term_2_decrease : Valid
-[wp] [Qed] Goal typed_ref_equal_elements_loop_term_2_positive : Valid
+[wp] [Qed] Goal typed_ref_equal_elements_loop_assigns : Valid
+[wp] [Qed] Goal typed_ref_equal_elements_loop_assigns_2 : Valid
+[wp] [Qed] Goal typed_ref_equal_elements_assigns_part1 : Valid
+[wp] [Qed] Goal typed_ref_equal_elements_assigns_part2 : Valid
+[wp] [Qed] Goal typed_ref_equal_elements_assigns_part3 : Valid
+[wp] [Qed] Goal typed_ref_equal_elements_loop_variant_decrease : Valid
+[wp] [Qed] Goal typed_ref_equal_elements_loop_variant_positive : Valid
+[wp] [Qed] Goal typed_ref_equal_elements_loop_variant_2_decrease : Valid
+[wp] [Qed] Goal typed_ref_equal_elements_loop_variant_2_positive : Valid
 [wp] Proved goals:   32 / 50
   Qed:            11 
   Alt-Ergo:       21
diff --git a/src/plugins/wp/tests/wp_gallery/oracle_qualif/frama_c_exo3_solved.old.v2.res.oracle b/src/plugins/wp/tests/wp_gallery/oracle_qualif/frama_c_exo3_solved.old.v2.res.oracle
index ae82b12cf62368d6acd8de25ce308e5079c54ebb..6de56a443e7b37ed645b49c6286cfd31314cc2ed 100644
--- a/src/plugins/wp/tests/wp_gallery/oracle_qualif/frama_c_exo3_solved.old.v2.res.oracle
+++ b/src/plugins/wp/tests/wp_gallery/oracle_qualif/frama_c_exo3_solved.old.v2.res.oracle
@@ -4,48 +4,48 @@
 [wp] Loading driver 'share/wp.driver'
 [wp] Warning: Missing RTE guards
 [wp] 35 goals scheduled
-[wp] [Alt-Ergo] Goal typed_ref_equal_elements_post_v1_good : Valid
-[wp] [Alt-Ergo] Goal typed_ref_equal_elements_post_v2_good : Valid
-[wp] [Alt-Ergo] Goal typed_ref_equal_elements_post_v1_v2_diff : Valid
-[wp] [Alt-Ergo] Goal typed_ref_equal_elements_loop_inv_preserved : Valid
-[wp] [Qed] Goal typed_ref_equal_elements_loop_inv_established : Valid
-[wp] [Alt-Ergo] Goal typed_ref_equal_elements_loop_inv_set_at_0_preserved : Valid
-[wp] [Qed] Goal typed_ref_equal_elements_loop_inv_set_at_0_established : Valid
+[wp] [Alt-Ergo] Goal typed_ref_equal_elements_ensures_v1_good : Valid
+[wp] [Alt-Ergo] Goal typed_ref_equal_elements_ensures_v2_good : Valid
+[wp] [Alt-Ergo] Goal typed_ref_equal_elements_ensures_v1_v2_diff : Valid
+[wp] [Alt-Ergo] Goal typed_ref_equal_elements_loop_invariant_preserved : Valid
+[wp] [Qed] Goal typed_ref_equal_elements_loop_invariant_established : Valid
+[wp] [Alt-Ergo] Goal typed_ref_equal_elements_loop_invariant_set_at_0_preserved : Valid
+[wp] [Qed] Goal typed_ref_equal_elements_loop_invariant_set_at_0_established : Valid
 [wp] [Alt-Ergo] Goal typed_ref_equal_elements_assert_set_at_1 : Valid
-[wp] [Alt-Ergo] Goal typed_ref_equal_elements_loop_inv_bound_preserved : Valid
-[wp] [Qed] Goal typed_ref_equal_elements_loop_inv_bound_established : Valid
-[wp] [Alt-Ergo] Goal typed_ref_equal_elements_loop_inv_seen_sound1_preserved : Valid
-[wp] [Alt-Ergo] Goal typed_ref_equal_elements_loop_inv_seen_sound1_established : Valid
-[wp] [Alt-Ergo] Goal typed_ref_equal_elements_loop_inv_seen_sound2_preserved : Valid
-[wp] [Alt-Ergo] Goal typed_ref_equal_elements_loop_inv_seen_sound2_established : Valid
-[wp] [Qed] Goal typed_ref_equal_elements_loop_inv_v1_first_preserved : Valid
-[wp] [Qed] Goal typed_ref_equal_elements_loop_inv_v1_first_established : Valid
-[wp] [Alt-Ergo] Goal typed_ref_equal_elements_loop_inv_v1_sound1_preserved : Valid
-[wp] [Qed] Goal typed_ref_equal_elements_loop_inv_v1_sound1_established : Valid
-[wp] [Alt-Ergo] Goal typed_ref_equal_elements_loop_inv_v1_sound2_preserved : Valid
-[wp] [Alt-Ergo] Goal typed_ref_equal_elements_loop_inv_v1_sound2_established : Valid
-[wp] [Alt-Ergo] Goal typed_ref_equal_elements_loop_inv_v1_v2_diff_preserved : Valid
-[wp] [Qed] Goal typed_ref_equal_elements_loop_inv_v1_v2_diff_established : Valid
-[wp] [Alt-Ergo] Goal typed_ref_equal_elements_loop_inv_v2_sound1_preserved : Valid
-[wp] [Qed] Goal typed_ref_equal_elements_loop_inv_v2_sound1_established : Valid
-[wp] [Alt-Ergo] Goal typed_ref_equal_elements_loop_inv_v2_sound2_preserved : Valid
-[wp] [Alt-Ergo] Goal typed_ref_equal_elements_loop_inv_v2_sound2_established : Valid
-[wp] [Qed] Goal typed_ref_equal_elements_loop_assign : Valid
-[wp] [Qed] Goal typed_ref_equal_elements_loop_assign_2 : Valid
-[wp] [Qed] Goal typed_ref_equal_elements_assign_part1 : Valid
-[wp] [Qed] Goal typed_ref_equal_elements_assign_part2 : Valid
-[wp] [Qed] Goal typed_ref_equal_elements_assign_part3 : Valid
-[wp] [Qed] Goal typed_ref_equal_elements_loop_term_decrease : Valid
-[wp] [Qed] Goal typed_ref_equal_elements_loop_term_positive : Valid
-[wp] [Qed] Goal typed_ref_equal_elements_loop_term_2_decrease : Valid
-[wp] [Qed] Goal typed_ref_equal_elements_loop_term_2_positive : Valid
+[wp] [Alt-Ergo] Goal typed_ref_equal_elements_loop_invariant_bound_preserved : Valid
+[wp] [Qed] Goal typed_ref_equal_elements_loop_invariant_bound_established : Valid
+[wp] [Alt-Ergo] Goal typed_ref_equal_elements_loop_invariant_seen_sound1_preserved : Valid
+[wp] [Alt-Ergo] Goal typed_ref_equal_elements_loop_invariant_seen_sound1_established : Valid
+[wp] [Alt-Ergo] Goal typed_ref_equal_elements_loop_invariant_seen_sound2_preserved : Valid
+[wp] [Alt-Ergo] Goal typed_ref_equal_elements_loop_invariant_seen_sound2_established : Valid
+[wp] [Qed] Goal typed_ref_equal_elements_loop_invariant_v1_first_preserved : Valid
+[wp] [Qed] Goal typed_ref_equal_elements_loop_invariant_v1_first_established : Valid
+[wp] [Alt-Ergo] Goal typed_ref_equal_elements_loop_invariant_v1_sound1_preserved : Valid
+[wp] [Qed] Goal typed_ref_equal_elements_loop_invariant_v1_sound1_established : Valid
+[wp] [Alt-Ergo] Goal typed_ref_equal_elements_loop_invariant_v1_sound2_preserved : Valid
+[wp] [Alt-Ergo] Goal typed_ref_equal_elements_loop_invariant_v1_sound2_established : Valid
+[wp] [Alt-Ergo] Goal typed_ref_equal_elements_loop_invariant_v1_v2_diff_preserved : Valid
+[wp] [Qed] Goal typed_ref_equal_elements_loop_invariant_v1_v2_diff_established : Valid
+[wp] [Alt-Ergo] Goal typed_ref_equal_elements_loop_invariant_v2_sound1_preserved : Valid
+[wp] [Qed] Goal typed_ref_equal_elements_loop_invariant_v2_sound1_established : Valid
+[wp] [Alt-Ergo] Goal typed_ref_equal_elements_loop_invariant_v2_sound2_preserved : Valid
+[wp] [Alt-Ergo] Goal typed_ref_equal_elements_loop_invariant_v2_sound2_established : Valid
+[wp] [Qed] Goal typed_ref_equal_elements_loop_assigns : Valid
+[wp] [Qed] Goal typed_ref_equal_elements_loop_assigns_2 : Valid
+[wp] [Qed] Goal typed_ref_equal_elements_assigns_part1 : Valid
+[wp] [Qed] Goal typed_ref_equal_elements_assigns_part2 : Valid
+[wp] [Qed] Goal typed_ref_equal_elements_assigns_part3 : Valid
+[wp] [Qed] Goal typed_ref_equal_elements_loop_variant_decrease : Valid
+[wp] [Qed] Goal typed_ref_equal_elements_loop_variant_positive : Valid
+[wp] [Qed] Goal typed_ref_equal_elements_loop_variant_2_decrease : Valid
+[wp] [Qed] Goal typed_ref_equal_elements_loop_variant_2_positive : Valid
 [wp] Proved goals:   35 / 35
   Qed:            17 
   Alt-Ergo:       18
 [wp] Report 'tests/wp_gallery/frama_c_exo3_solved.old.v2.c.0.report.json'
 -------------------------------------------------------------
 Functions           WP     Alt-Ergo        Total   Success
-equal_elements      17     18 (272..320)    35       100%
+equal_elements      17     18 (288..336)    35       100%
 -------------------------------------------------------------
 [wp] Warning: Memory model hypotheses for function 'equal_elements':
   /*@
@@ -58,37 +58,37 @@ equal_elements      17     18 (272..320)    35       100%
 [wp] Running WP plugin...
 [rte] annotating function equal_elements
 [wp] 51 goals scheduled
-[wp] [Alt-Ergo] Goal typed_ref_equal_elements_post_v1_good : Valid
-[wp] [Alt-Ergo] Goal typed_ref_equal_elements_post_v2_good : Valid
-[wp] [Alt-Ergo] Goal typed_ref_equal_elements_post_v1_v2_diff : Valid
+[wp] [Alt-Ergo] Goal typed_ref_equal_elements_ensures_v1_good : Valid
+[wp] [Alt-Ergo] Goal typed_ref_equal_elements_ensures_v2_good : Valid
+[wp] [Alt-Ergo] Goal typed_ref_equal_elements_ensures_v1_v2_diff : Valid
 [wp] [Qed] Goal typed_ref_equal_elements_assert_rte_mem_access : Valid
 [wp] [Qed] Goal typed_ref_equal_elements_assert_rte_mem_access_2 : Valid
-[wp] [Alt-Ergo] Goal typed_ref_equal_elements_loop_inv_preserved : Valid
-[wp] [Qed] Goal typed_ref_equal_elements_loop_inv_established : Valid
-[wp] [Alt-Ergo] Goal typed_ref_equal_elements_loop_inv_set_at_0_preserved : Valid
-[wp] [Qed] Goal typed_ref_equal_elements_loop_inv_set_at_0_established : Valid
+[wp] [Alt-Ergo] Goal typed_ref_equal_elements_loop_invariant_preserved : Valid
+[wp] [Qed] Goal typed_ref_equal_elements_loop_invariant_established : Valid
+[wp] [Alt-Ergo] Goal typed_ref_equal_elements_loop_invariant_set_at_0_preserved : Valid
+[wp] [Qed] Goal typed_ref_equal_elements_loop_invariant_set_at_0_established : Valid
 [wp] [Qed] Goal typed_ref_equal_elements_assert_rte_index_bound : Valid
 [wp] [Qed] Goal typed_ref_equal_elements_assert_rte_index_bound_2 : Valid
 [wp] [Alt-Ergo] Goal typed_ref_equal_elements_assert_set_at_1 : Valid
 [wp] [Alt-Ergo] Goal typed_ref_equal_elements_assert_rte_signed_overflow : Valid
-[wp] [Alt-Ergo] Goal typed_ref_equal_elements_loop_inv_bound_preserved : Valid
-[wp] [Qed] Goal typed_ref_equal_elements_loop_inv_bound_established : Valid
-[wp] [Alt-Ergo] Goal typed_ref_equal_elements_loop_inv_seen_sound1_preserved : Valid
-[wp] [Alt-Ergo] Goal typed_ref_equal_elements_loop_inv_seen_sound1_established : Valid
-[wp] [Alt-Ergo] Goal typed_ref_equal_elements_loop_inv_seen_sound2_preserved : Valid
-[wp] [Alt-Ergo] Goal typed_ref_equal_elements_loop_inv_seen_sound2_established : Valid
-[wp] [Qed] Goal typed_ref_equal_elements_loop_inv_v1_first_preserved : Valid
-[wp] [Qed] Goal typed_ref_equal_elements_loop_inv_v1_first_established : Valid
-[wp] [Alt-Ergo] Goal typed_ref_equal_elements_loop_inv_v1_sound1_preserved : Valid
-[wp] [Qed] Goal typed_ref_equal_elements_loop_inv_v1_sound1_established : Valid
-[wp] [Alt-Ergo] Goal typed_ref_equal_elements_loop_inv_v1_sound2_preserved : Valid
-[wp] [Alt-Ergo] Goal typed_ref_equal_elements_loop_inv_v1_sound2_established : Valid
-[wp] [Alt-Ergo] Goal typed_ref_equal_elements_loop_inv_v1_v2_diff_preserved : Valid
-[wp] [Qed] Goal typed_ref_equal_elements_loop_inv_v1_v2_diff_established : Valid
-[wp] [Alt-Ergo] Goal typed_ref_equal_elements_loop_inv_v2_sound1_preserved : Valid
-[wp] [Qed] Goal typed_ref_equal_elements_loop_inv_v2_sound1_established : Valid
-[wp] [Alt-Ergo] Goal typed_ref_equal_elements_loop_inv_v2_sound2_preserved : Valid
-[wp] [Alt-Ergo] Goal typed_ref_equal_elements_loop_inv_v2_sound2_established : Valid
+[wp] [Alt-Ergo] Goal typed_ref_equal_elements_loop_invariant_bound_preserved : Valid
+[wp] [Qed] Goal typed_ref_equal_elements_loop_invariant_bound_established : Valid
+[wp] [Alt-Ergo] Goal typed_ref_equal_elements_loop_invariant_seen_sound1_preserved : Valid
+[wp] [Alt-Ergo] Goal typed_ref_equal_elements_loop_invariant_seen_sound1_established : Valid
+[wp] [Alt-Ergo] Goal typed_ref_equal_elements_loop_invariant_seen_sound2_preserved : Valid
+[wp] [Alt-Ergo] Goal typed_ref_equal_elements_loop_invariant_seen_sound2_established : Valid
+[wp] [Qed] Goal typed_ref_equal_elements_loop_invariant_v1_first_preserved : Valid
+[wp] [Qed] Goal typed_ref_equal_elements_loop_invariant_v1_first_established : Valid
+[wp] [Alt-Ergo] Goal typed_ref_equal_elements_loop_invariant_v1_sound1_preserved : Valid
+[wp] [Qed] Goal typed_ref_equal_elements_loop_invariant_v1_sound1_established : Valid
+[wp] [Alt-Ergo] Goal typed_ref_equal_elements_loop_invariant_v1_sound2_preserved : Valid
+[wp] [Alt-Ergo] Goal typed_ref_equal_elements_loop_invariant_v1_sound2_established : Valid
+[wp] [Alt-Ergo] Goal typed_ref_equal_elements_loop_invariant_v1_v2_diff_preserved : Valid
+[wp] [Qed] Goal typed_ref_equal_elements_loop_invariant_v1_v2_diff_established : Valid
+[wp] [Alt-Ergo] Goal typed_ref_equal_elements_loop_invariant_v2_sound1_preserved : Valid
+[wp] [Qed] Goal typed_ref_equal_elements_loop_invariant_v2_sound1_established : Valid
+[wp] [Alt-Ergo] Goal typed_ref_equal_elements_loop_invariant_v2_sound2_preserved : Valid
+[wp] [Alt-Ergo] Goal typed_ref_equal_elements_loop_invariant_v2_sound2_established : Valid
 [wp] [Alt-Ergo] Goal typed_ref_equal_elements_assert_rte_mem_access_3 : Valid
 [wp] [Alt-Ergo] Goal typed_ref_equal_elements_assert_rte_index_bound_3 : Valid
 [wp] [Alt-Ergo] Goal typed_ref_equal_elements_assert_rte_index_bound_4 : Valid
@@ -100,22 +100,22 @@ equal_elements      17     18 (272..320)    35       100%
 [wp] [Qed] Goal typed_ref_equal_elements_assert_rte_index_bound_5 : Valid
 [wp] [Qed] Goal typed_ref_equal_elements_assert_rte_index_bound_6 : Valid
 [wp] [Alt-Ergo] Goal typed_ref_equal_elements_assert_rte_signed_overflow_2 : Valid
-[wp] [Qed] Goal typed_ref_equal_elements_loop_assign : Valid
-[wp] [Qed] Goal typed_ref_equal_elements_loop_assign_2 : Valid
-[wp] [Qed] Goal typed_ref_equal_elements_assign_part1 : Valid
-[wp] [Qed] Goal typed_ref_equal_elements_assign_part2 : Valid
-[wp] [Qed] Goal typed_ref_equal_elements_assign_part3 : Valid
-[wp] [Qed] Goal typed_ref_equal_elements_loop_term_decrease : Valid
-[wp] [Qed] Goal typed_ref_equal_elements_loop_term_positive : Valid
-[wp] [Qed] Goal typed_ref_equal_elements_loop_term_2_decrease : Valid
-[wp] [Qed] Goal typed_ref_equal_elements_loop_term_2_positive : Valid
+[wp] [Qed] Goal typed_ref_equal_elements_loop_assigns : Valid
+[wp] [Qed] Goal typed_ref_equal_elements_loop_assigns_2 : Valid
+[wp] [Qed] Goal typed_ref_equal_elements_assigns_part1 : Valid
+[wp] [Qed] Goal typed_ref_equal_elements_assigns_part2 : Valid
+[wp] [Qed] Goal typed_ref_equal_elements_assigns_part3 : Valid
+[wp] [Qed] Goal typed_ref_equal_elements_loop_variant_decrease : Valid
+[wp] [Qed] Goal typed_ref_equal_elements_loop_variant_positive : Valid
+[wp] [Qed] Goal typed_ref_equal_elements_loop_variant_2_decrease : Valid
+[wp] [Qed] Goal typed_ref_equal_elements_loop_variant_2_positive : Valid
 [wp] Proved goals:   34 / 51
   Qed:            11 
   Alt-Ergo:       23
 [wp] Report 'tests/wp_gallery/frama_c_exo3_solved.old.v2.c.0.report.json'
 -------------------------------------------------------------
 Functions           WP     Alt-Ergo        Total   Success
-equal_elements      28     23 (272..320)    51       100%
+equal_elements      28     23 (288..336)    51       100%
 -------------------------------------------------------------
 [wp] Warning: Memory model hypotheses for function 'equal_elements':
   /*@
diff --git a/src/plugins/wp/tests/wp_gallery/oracle_qualif/frama_c_exo3_solved.simplified.res.oracle b/src/plugins/wp/tests/wp_gallery/oracle_qualif/frama_c_exo3_solved.simplified.res.oracle
index eb2c20378e2742333db4d15f36ba2c14221399c3..8abf274c23d8b98c9a657d251645fee49e57786a 100644
--- a/src/plugins/wp/tests/wp_gallery/oracle_qualif/frama_c_exo3_solved.simplified.res.oracle
+++ b/src/plugins/wp/tests/wp_gallery/oracle_qualif/frama_c_exo3_solved.simplified.res.oracle
@@ -6,30 +6,30 @@
 [wp] 26 goals scheduled
 [wp] [Qed] Goal typed_pair_complete_has_pair_no_pair : Valid
 [wp] [Qed] Goal typed_pair_disjoint_has_pair_no_pair : Valid
-[wp] [Alt-Ergo] Goal typed_pair_loop_inv_preserved : Valid
-[wp] [Qed] Goal typed_pair_loop_inv_established : Valid
-[wp] [Alt-Ergo] Goal typed_pair_loop_inv_2_preserved : Valid
-[wp] [Qed] Goal typed_pair_loop_inv_2_established : Valid
-[wp] [Alt-Ergo] Goal typed_pair_loop_inv_3_preserved : Valid
-[wp] [Qed] Goal typed_pair_loop_inv_3_established : Valid
-[wp] [Alt-Ergo] Goal typed_pair_loop_inv_4_preserved : Valid
-[wp] [Alt-Ergo] Goal typed_pair_loop_inv_4_established : Valid
-[wp] [Alt-Ergo] Goal typed_pair_loop_inv_5_preserved : Valid
-[wp] [Qed] Goal typed_pair_loop_inv_5_established : Valid
-[wp] [Alt-Ergo] Goal typed_pair_loop_inv_6_preserved : Valid
-[wp] [Alt-Ergo] Goal typed_pair_loop_inv_6_established : Valid
-[wp] [Qed] Goal typed_pair_loop_assign : Valid
-[wp] [Qed] Goal typed_pair_loop_assign_2 : Valid
-[wp] [Qed] Goal typed_pair_assign_part1 : Valid
-[wp] [Qed] Goal typed_pair_assign_part2 : Valid
-[wp] [Qed] Goal typed_pair_assign_part3 : Valid
-[wp] [Qed] Goal typed_pair_assign_part4 : Valid
-[wp] [Qed] Goal typed_pair_loop_term_decrease : Valid
-[wp] [Qed] Goal typed_pair_loop_term_positive : Valid
-[wp] [Qed] Goal typed_pair_loop_term_2_decrease : Valid
-[wp] [Qed] Goal typed_pair_loop_term_2_positive : Valid
-[wp] [Alt-Ergo] Goal typed_pair_has_pair_post : Valid
-[wp] [Alt-Ergo] Goal typed_pair_no_pair_post : Valid
+[wp] [Alt-Ergo] Goal typed_pair_loop_invariant_preserved : Valid
+[wp] [Qed] Goal typed_pair_loop_invariant_established : Valid
+[wp] [Alt-Ergo] Goal typed_pair_loop_invariant_2_preserved : Valid
+[wp] [Qed] Goal typed_pair_loop_invariant_2_established : Valid
+[wp] [Alt-Ergo] Goal typed_pair_loop_invariant_3_preserved : Valid
+[wp] [Qed] Goal typed_pair_loop_invariant_3_established : Valid
+[wp] [Alt-Ergo] Goal typed_pair_loop_invariant_4_preserved : Valid
+[wp] [Alt-Ergo] Goal typed_pair_loop_invariant_4_established : Valid
+[wp] [Alt-Ergo] Goal typed_pair_loop_invariant_5_preserved : Valid
+[wp] [Qed] Goal typed_pair_loop_invariant_5_established : Valid
+[wp] [Alt-Ergo] Goal typed_pair_loop_invariant_6_preserved : Valid
+[wp] [Alt-Ergo] Goal typed_pair_loop_invariant_6_established : Valid
+[wp] [Qed] Goal typed_pair_loop_assigns : Valid
+[wp] [Qed] Goal typed_pair_loop_assigns_2 : Valid
+[wp] [Qed] Goal typed_pair_assigns_part1 : Valid
+[wp] [Qed] Goal typed_pair_assigns_part2 : Valid
+[wp] [Qed] Goal typed_pair_assigns_part3 : Valid
+[wp] [Qed] Goal typed_pair_assigns_part4 : Valid
+[wp] [Qed] Goal typed_pair_loop_variant_decrease : Valid
+[wp] [Qed] Goal typed_pair_loop_variant_positive : Valid
+[wp] [Qed] Goal typed_pair_loop_variant_2_decrease : Valid
+[wp] [Qed] Goal typed_pair_loop_variant_2_positive : Valid
+[wp] [Alt-Ergo] Goal typed_pair_has_pair_ensures : Valid
+[wp] [Alt-Ergo] Goal typed_pair_no_pair_ensures : Valid
 [wp] Proved goals:   26 / 26
   Qed:            16 
   Alt-Ergo:       10
@@ -43,39 +43,39 @@ pair                16     10 (104..128)    26       100%
 [wp] 35 goals scheduled
 [wp] [Qed] Goal typed_pair_complete_has_pair_no_pair : Valid
 [wp] [Qed] Goal typed_pair_disjoint_has_pair_no_pair : Valid
-[wp] [Alt-Ergo] Goal typed_pair_loop_inv_preserved : Valid
-[wp] [Qed] Goal typed_pair_loop_inv_established : Valid
-[wp] [Alt-Ergo] Goal typed_pair_loop_inv_2_preserved : Valid
-[wp] [Qed] Goal typed_pair_loop_inv_2_established : Valid
+[wp] [Alt-Ergo] Goal typed_pair_loop_invariant_preserved : Valid
+[wp] [Qed] Goal typed_pair_loop_invariant_established : Valid
+[wp] [Alt-Ergo] Goal typed_pair_loop_invariant_2_preserved : Valid
+[wp] [Qed] Goal typed_pair_loop_invariant_2_established : Valid
 [wp] [Qed] Goal typed_pair_assert_rte_index_bound : Valid
 [wp] [Qed] Goal typed_pair_assert_rte_index_bound_2 : Valid
 [wp] [Alt-Ergo] Goal typed_pair_assert_rte_signed_overflow : Valid
-[wp] [Alt-Ergo] Goal typed_pair_loop_inv_3_preserved : Valid
-[wp] [Qed] Goal typed_pair_loop_inv_3_established : Valid
-[wp] [Alt-Ergo] Goal typed_pair_loop_inv_4_preserved : Valid
-[wp] [Alt-Ergo] Goal typed_pair_loop_inv_4_established : Valid
-[wp] [Alt-Ergo] Goal typed_pair_loop_inv_5_preserved : Valid
-[wp] [Qed] Goal typed_pair_loop_inv_5_established : Valid
-[wp] [Alt-Ergo] Goal typed_pair_loop_inv_6_preserved : Valid
-[wp] [Alt-Ergo] Goal typed_pair_loop_inv_6_established : Valid
+[wp] [Alt-Ergo] Goal typed_pair_loop_invariant_3_preserved : Valid
+[wp] [Qed] Goal typed_pair_loop_invariant_3_established : Valid
+[wp] [Alt-Ergo] Goal typed_pair_loop_invariant_4_preserved : Valid
+[wp] [Alt-Ergo] Goal typed_pair_loop_invariant_4_established : Valid
+[wp] [Alt-Ergo] Goal typed_pair_loop_invariant_5_preserved : Valid
+[wp] [Qed] Goal typed_pair_loop_invariant_5_established : Valid
+[wp] [Alt-Ergo] Goal typed_pair_loop_invariant_6_preserved : Valid
+[wp] [Alt-Ergo] Goal typed_pair_loop_invariant_6_established : Valid
 [wp] [Alt-Ergo] Goal typed_pair_assert_rte_mem_access : Valid
 [wp] [Alt-Ergo] Goal typed_pair_assert_rte_index_bound_3 : Valid
 [wp] [Alt-Ergo] Goal typed_pair_assert_rte_index_bound_4 : Valid
 [wp] [Qed] Goal typed_pair_assert_rte_index_bound_5 : Valid
 [wp] [Qed] Goal typed_pair_assert_rte_index_bound_6 : Valid
 [wp] [Alt-Ergo] Goal typed_pair_assert_rte_signed_overflow_2 : Valid
-[wp] [Qed] Goal typed_pair_loop_assign : Valid
-[wp] [Qed] Goal typed_pair_loop_assign_2 : Valid
-[wp] [Qed] Goal typed_pair_assign_part1 : Valid
-[wp] [Qed] Goal typed_pair_assign_part2 : Valid
-[wp] [Qed] Goal typed_pair_assign_part3 : Valid
-[wp] [Qed] Goal typed_pair_assign_part4 : Valid
-[wp] [Qed] Goal typed_pair_loop_term_decrease : Valid
-[wp] [Qed] Goal typed_pair_loop_term_positive : Valid
-[wp] [Qed] Goal typed_pair_loop_term_2_decrease : Valid
-[wp] [Qed] Goal typed_pair_loop_term_2_positive : Valid
-[wp] [Alt-Ergo] Goal typed_pair_has_pair_post : Valid
-[wp] [Alt-Ergo] Goal typed_pair_no_pair_post : Valid
+[wp] [Qed] Goal typed_pair_loop_assigns : Valid
+[wp] [Qed] Goal typed_pair_loop_assigns_2 : Valid
+[wp] [Qed] Goal typed_pair_assigns_part1 : Valid
+[wp] [Qed] Goal typed_pair_assigns_part2 : Valid
+[wp] [Qed] Goal typed_pair_assigns_part3 : Valid
+[wp] [Qed] Goal typed_pair_assigns_part4 : Valid
+[wp] [Qed] Goal typed_pair_loop_variant_decrease : Valid
+[wp] [Qed] Goal typed_pair_loop_variant_positive : Valid
+[wp] [Qed] Goal typed_pair_loop_variant_2_decrease : Valid
+[wp] [Qed] Goal typed_pair_loop_variant_2_positive : Valid
+[wp] [Alt-Ergo] Goal typed_pair_has_pair_ensures : Valid
+[wp] [Alt-Ergo] Goal typed_pair_no_pair_ensures : Valid
 [wp] Proved goals:   19 / 35
   Qed:             4 
   Alt-Ergo:       15
diff --git a/src/plugins/wp/tests/wp_gallery/oracle_qualif/frama_c_hashtbl_solved.res.oracle b/src/plugins/wp/tests/wp_gallery/oracle_qualif/frama_c_hashtbl_solved.res.oracle
index 6fecd32f1cd6c95f9a64aa720bae5c699968fbd6..10e32d116c68418a93daaafd59a6a14c5a1030c4 100644
--- a/src/plugins/wp/tests/wp_gallery/oracle_qualif/frama_c_hashtbl_solved.res.oracle
+++ b/src/plugins/wp/tests/wp_gallery/oracle_qualif/frama_c_hashtbl_solved.res.oracle
@@ -7,106 +7,106 @@
 [wp] 102 goals scheduled
 [wp] [Alt-Ergo] Goal typed_add_complete_full_nominal : Valid
 [wp] [Alt-Ergo] Goal typed_add_disjoint_full_nominal : Valid
-[wp] [Qed] Goal typed_add_assign_exit : Valid
-[wp] [Qed] Goal typed_add_assign_normal_part1 : Valid
-[wp] [Qed] Goal typed_add_assign_normal_part2 : Valid
-[wp] [Qed] Goal typed_add_assign_normal_part3 : Valid
-[wp] [Qed] Goal typed_add_assign_normal_part4 : Valid
-[wp] [Qed] Goal typed_add_assign_normal_part5 : Valid
-[wp] [Alt-Ergo] Goal typed_add_assign_normal_part6 : Valid
-[wp] [Alt-Ergo] Goal typed_add_assign_normal_part7 : Valid
-[wp] [Qed] Goal typed_add_assign_normal_part8 : Valid
-[wp] [Qed] Goal typed_add_assign_normal_part9 : Valid
-[wp] [Qed] Goal typed_add_call_hash_pre : Valid
-[wp] [Alt-Ergo] Goal typed_add_full_post : Valid
-[wp] [Qed] Goal typed_add_full_assign_exit : Valid
-[wp] [Qed] Goal typed_add_full_assign_normal_part1 : Valid
-[wp] [Qed] Goal typed_add_full_assign_normal_part2 : Valid
-[wp] [Qed] Goal typed_add_full_assign_normal_part3 : Valid
-[wp] [Qed] Goal typed_add_full_assign_normal_part4 : Valid
-[wp] [Qed] Goal typed_add_full_assign_normal_part5 : Valid
-[wp] [Alt-Ergo] Goal typed_add_full_assign_normal_part6 : Valid
-[wp] [Alt-Ergo] Goal typed_add_full_assign_normal_part7 : Valid
-[wp] [Alt-Ergo] Goal typed_add_full_assign_normal_part8 : Valid
-[wp] [Qed] Goal typed_add_full_assign_normal_part9 : Valid
-[wp] [Alt-Ergo] Goal typed_add_nominal_post : Valid
-[wp] [Alt-Ergo] Goal typed_add_nominal_post_2 : Valid
-[wp] [Alt-Ergo] Goal typed_add_nominal_post_3 : Valid
-[wp] [Alt-Ergo] Goal typed_add_nominal_post_4 : Valid
-[wp] [Alt-Ergo] Goal typed_add_nominal_post_5 : Valid
-[wp] [Qed] Goal typed_add_nominal_assign_exit : Valid
-[wp] [Qed] Goal typed_add_nominal_assign_normal_part1 : Valid
-[wp] [Qed] Goal typed_add_nominal_assign_normal_part2 : Valid
-[wp] [Qed] Goal typed_add_nominal_assign_normal_part3 : Valid
-[wp] [Qed] Goal typed_add_nominal_assign_normal_part4 : Valid
-[wp] [Qed] Goal typed_add_nominal_assign_normal_part5 : Valid
-[wp] [Alt-Ergo] Goal typed_add_nominal_assign_normal_part6 : Valid
-[wp] [Alt-Ergo] Goal typed_add_nominal_assign_normal_part7 : Valid
-[wp] [Qed] Goal typed_add_nominal_assign_normal_part8 : Valid
-[wp] [Qed] Goal typed_add_nominal_assign_normal_part9 : Valid
+[wp] [Qed] Goal typed_add_assigns_exit : Valid
+[wp] [Qed] Goal typed_add_assigns_normal_part1 : Valid
+[wp] [Qed] Goal typed_add_assigns_normal_part2 : Valid
+[wp] [Qed] Goal typed_add_assigns_normal_part3 : Valid
+[wp] [Qed] Goal typed_add_assigns_normal_part4 : Valid
+[wp] [Qed] Goal typed_add_assigns_normal_part5 : Valid
+[wp] [Alt-Ergo] Goal typed_add_assigns_normal_part6 : Valid
+[wp] [Alt-Ergo] Goal typed_add_assigns_normal_part7 : Valid
+[wp] [Qed] Goal typed_add_assigns_normal_part8 : Valid
+[wp] [Qed] Goal typed_add_assigns_normal_part9 : Valid
+[wp] [Qed] Goal typed_add_call_hash_requires : Valid
+[wp] [Alt-Ergo] Goal typed_add_full_ensures : Valid
+[wp] [Qed] Goal typed_add_full_assigns_exit : Valid
+[wp] [Qed] Goal typed_add_full_assigns_normal_part1 : Valid
+[wp] [Qed] Goal typed_add_full_assigns_normal_part2 : Valid
+[wp] [Qed] Goal typed_add_full_assigns_normal_part3 : Valid
+[wp] [Qed] Goal typed_add_full_assigns_normal_part4 : Valid
+[wp] [Qed] Goal typed_add_full_assigns_normal_part5 : Valid
+[wp] [Alt-Ergo] Goal typed_add_full_assigns_normal_part6 : Valid
+[wp] [Alt-Ergo] Goal typed_add_full_assigns_normal_part7 : Valid
+[wp] [Alt-Ergo] Goal typed_add_full_assigns_normal_part8 : Valid
+[wp] [Qed] Goal typed_add_full_assigns_normal_part9 : Valid
+[wp] [Alt-Ergo] Goal typed_add_nominal_ensures : Valid
+[wp] [Alt-Ergo] Goal typed_add_nominal_ensures_2 : Valid
+[wp] [Alt-Ergo] Goal typed_add_nominal_ensures_3 : Valid
+[wp] [Alt-Ergo] Goal typed_add_nominal_ensures_4 : Valid
+[wp] [Alt-Ergo] Goal typed_add_nominal_ensures_5 : Valid
+[wp] [Qed] Goal typed_add_nominal_assigns_exit : Valid
+[wp] [Qed] Goal typed_add_nominal_assigns_normal_part1 : Valid
+[wp] [Qed] Goal typed_add_nominal_assigns_normal_part2 : Valid
+[wp] [Qed] Goal typed_add_nominal_assigns_normal_part3 : Valid
+[wp] [Qed] Goal typed_add_nominal_assigns_normal_part4 : Valid
+[wp] [Qed] Goal typed_add_nominal_assigns_normal_part5 : Valid
+[wp] [Alt-Ergo] Goal typed_add_nominal_assigns_normal_part6 : Valid
+[wp] [Alt-Ergo] Goal typed_add_nominal_assigns_normal_part7 : Valid
+[wp] [Qed] Goal typed_add_nominal_assigns_normal_part8 : Valid
+[wp] [Qed] Goal typed_add_nominal_assigns_normal_part9 : Valid
 [wp] [Qed] Goal typed_eq_string_complete_not_eq_eq : Valid
 [wp] [Qed] Goal typed_eq_string_disjoint_not_eq_eq : Valid
-[wp] [Alt-Ergo] Goal typed_eq_string_loop_inv_preserved : Valid
-[wp] [Qed] Goal typed_eq_string_loop_inv_established : Valid
-[wp] [Alt-Ergo] Goal typed_eq_string_loop_inv_2_preserved : Valid
-[wp] [Qed] Goal typed_eq_string_loop_inv_2_established : Valid
-[wp] [Qed] Goal typed_eq_string_loop_assign : Valid
-[wp] [Qed] Goal typed_eq_string_assign_part1 : Valid
-[wp] [Qed] Goal typed_eq_string_assign_part2 : Valid
-[wp] [Qed] Goal typed_eq_string_assign_part3 : Valid
-[wp] [Qed] Goal typed_eq_string_assign_part4 : Valid
-[wp] [Qed] Goal typed_eq_string_loop_term_decrease : Valid
-[wp] [Qed] Goal typed_eq_string_loop_term_positive : Valid
-[wp] [Alt-Ergo] Goal typed_eq_string_eq_post : Valid
-[wp] [Alt-Ergo] Goal typed_eq_string_not_eq_post : Valid
-[wp] [Alt-Ergo] Goal typed_hash_loop_inv_preserved : Valid
-[wp] [Qed] Goal typed_hash_loop_inv_established : Valid
-[wp] [Qed] Goal typed_hash_loop_assign : Valid
-[wp] [Qed] Goal typed_hash_assign_part1 : Valid
-[wp] [Qed] Goal typed_hash_assign_part2 : Valid
-[wp] [Qed] Goal typed_hash_loop_term_decrease : Valid
-[wp] [Qed] Goal typed_hash_loop_term_positive : Valid
-[wp] [Alt-Ergo] Goal typed_init_post : Valid
-[wp] [Alt-Ergo] Goal typed_init_post_2 : Valid
-[wp] [Alt-Ergo] Goal typed_init_loop_inv_preserved : Valid
-[wp] [Qed] Goal typed_init_loop_inv_established : Valid
-[wp] [Alt-Ergo] Goal typed_init_loop_inv_2_preserved : Valid
-[wp] [Qed] Goal typed_init_loop_inv_2_established : Valid
-[wp] [Qed] Goal typed_init_loop_assign_part1 : Valid
-[wp] [Qed] Goal typed_init_loop_assign_part2 : Valid
-[wp] [Qed] Goal typed_init_assign_part1 : Valid
-[wp] [Qed] Goal typed_init_assign_part2 : Valid
-[wp] [Alt-Ergo] Goal typed_init_assign_part3 : Valid
-[wp] [Qed] Goal typed_init_loop_term_decrease : Valid
-[wp] [Qed] Goal typed_init_loop_term_positive : Valid
+[wp] [Alt-Ergo] Goal typed_eq_string_loop_invariant_preserved : Valid
+[wp] [Qed] Goal typed_eq_string_loop_invariant_established : Valid
+[wp] [Alt-Ergo] Goal typed_eq_string_loop_invariant_2_preserved : Valid
+[wp] [Qed] Goal typed_eq_string_loop_invariant_2_established : Valid
+[wp] [Qed] Goal typed_eq_string_loop_assigns : Valid
+[wp] [Qed] Goal typed_eq_string_assigns_part1 : Valid
+[wp] [Qed] Goal typed_eq_string_assigns_part2 : Valid
+[wp] [Qed] Goal typed_eq_string_assigns_part3 : Valid
+[wp] [Qed] Goal typed_eq_string_assigns_part4 : Valid
+[wp] [Qed] Goal typed_eq_string_loop_variant_decrease : Valid
+[wp] [Qed] Goal typed_eq_string_loop_variant_positive : Valid
+[wp] [Alt-Ergo] Goal typed_eq_string_eq_ensures : Valid
+[wp] [Alt-Ergo] Goal typed_eq_string_not_eq_ensures : Valid
+[wp] [Alt-Ergo] Goal typed_hash_loop_invariant_preserved : Valid
+[wp] [Qed] Goal typed_hash_loop_invariant_established : Valid
+[wp] [Qed] Goal typed_hash_loop_assigns : Valid
+[wp] [Qed] Goal typed_hash_assigns_part1 : Valid
+[wp] [Qed] Goal typed_hash_assigns_part2 : Valid
+[wp] [Qed] Goal typed_hash_loop_variant_decrease : Valid
+[wp] [Qed] Goal typed_hash_loop_variant_positive : Valid
+[wp] [Alt-Ergo] Goal typed_init_ensures : Valid
+[wp] [Alt-Ergo] Goal typed_init_ensures_2 : Valid
+[wp] [Alt-Ergo] Goal typed_init_loop_invariant_preserved : Valid
+[wp] [Qed] Goal typed_init_loop_invariant_established : Valid
+[wp] [Alt-Ergo] Goal typed_init_loop_invariant_2_preserved : Valid
+[wp] [Qed] Goal typed_init_loop_invariant_2_established : Valid
+[wp] [Qed] Goal typed_init_loop_assigns_part1 : Valid
+[wp] [Qed] Goal typed_init_loop_assigns_part2 : Valid
+[wp] [Qed] Goal typed_init_assigns_part1 : Valid
+[wp] [Qed] Goal typed_init_assigns_part2 : Valid
+[wp] [Alt-Ergo] Goal typed_init_assigns_part3 : Valid
+[wp] [Qed] Goal typed_init_loop_variant_decrease : Valid
+[wp] [Qed] Goal typed_init_loop_variant_positive : Valid
 [wp] [Alt-Ergo] Goal typed_mem_binding_complete_not_found_found : Valid
 [wp] [Alt-Ergo] Goal typed_mem_binding_disjoint_not_found_found : Valid
-[wp] [Alt-Ergo] Goal typed_mem_binding_loop_inv_preserved : Valid
-[wp] [Alt-Ergo] Goal typed_mem_binding_loop_inv_established : Valid
-[wp] [Alt-Ergo] Goal typed_mem_binding_loop_inv_2_preserved : Valid
-[wp] [Qed] Goal typed_mem_binding_loop_inv_2_established : Valid
-[wp] [Qed] Goal typed_mem_binding_loop_assign_part1 : Valid
-[wp] [Qed] Goal typed_mem_binding_loop_assign_part2 : Valid
-[wp] [Qed] Goal typed_mem_binding_assign_exit_part1 : Valid
-[wp] [Qed] Goal typed_mem_binding_assign_exit_part2 : Valid
-[wp] [Qed] Goal typed_mem_binding_assign_exit_part3 : Valid
-[wp] [Qed] Goal typed_mem_binding_assign_exit_part4 : Valid
-[wp] [Qed] Goal typed_mem_binding_assign_normal_part1 : Valid
-[wp] [Qed] Goal typed_mem_binding_assign_normal_part2 : Valid
-[wp] [Qed] Goal typed_mem_binding_assign_normal_part3 : Valid
-[wp] [Qed] Goal typed_mem_binding_assign_normal_part4 : Valid
-[wp] [Qed] Goal typed_mem_binding_assign_normal_part5 : Valid
-[wp] [Qed] Goal typed_mem_binding_assign_normal_part6 : Valid
-[wp] [Qed] Goal typed_mem_binding_assign_normal_part7 : Valid
-[wp] [Qed] Goal typed_mem_binding_loop_term_decrease : Valid
-[wp] [Qed] Goal typed_mem_binding_loop_term_positive : Valid
-[wp] [Qed] Goal typed_mem_binding_call_hash_pre : Valid
-[wp] [Qed] Goal typed_mem_binding_call_eq_string_pre : Valid
-[wp] [Alt-Ergo] Goal typed_mem_binding_call_eq_string_pre_2 : Valid
-[wp] [Alt-Ergo] Goal typed_mem_binding_found_post : Valid
-[wp] [Alt-Ergo] Goal typed_mem_binding_not_found_post : Valid
-[wp] [Qed] Goal typed_size_post : Valid
-[wp] [Qed] Goal typed_size_assign : Valid
+[wp] [Alt-Ergo] Goal typed_mem_binding_loop_invariant_preserved : Valid
+[wp] [Alt-Ergo] Goal typed_mem_binding_loop_invariant_established : Valid
+[wp] [Alt-Ergo] Goal typed_mem_binding_loop_invariant_2_preserved : Valid
+[wp] [Qed] Goal typed_mem_binding_loop_invariant_2_established : Valid
+[wp] [Qed] Goal typed_mem_binding_loop_assigns_part1 : Valid
+[wp] [Qed] Goal typed_mem_binding_loop_assigns_part2 : Valid
+[wp] [Qed] Goal typed_mem_binding_assigns_exit_part1 : Valid
+[wp] [Qed] Goal typed_mem_binding_assigns_exit_part2 : Valid
+[wp] [Qed] Goal typed_mem_binding_assigns_exit_part3 : Valid
+[wp] [Qed] Goal typed_mem_binding_assigns_exit_part4 : Valid
+[wp] [Qed] Goal typed_mem_binding_assigns_normal_part1 : Valid
+[wp] [Qed] Goal typed_mem_binding_assigns_normal_part2 : Valid
+[wp] [Qed] Goal typed_mem_binding_assigns_normal_part3 : Valid
+[wp] [Qed] Goal typed_mem_binding_assigns_normal_part4 : Valid
+[wp] [Qed] Goal typed_mem_binding_assigns_normal_part5 : Valid
+[wp] [Qed] Goal typed_mem_binding_assigns_normal_part6 : Valid
+[wp] [Qed] Goal typed_mem_binding_assigns_normal_part7 : Valid
+[wp] [Qed] Goal typed_mem_binding_loop_variant_decrease : Valid
+[wp] [Qed] Goal typed_mem_binding_loop_variant_positive : Valid
+[wp] [Qed] Goal typed_mem_binding_call_hash_requires : Valid
+[wp] [Qed] Goal typed_mem_binding_call_eq_string_requires : Valid
+[wp] [Alt-Ergo] Goal typed_mem_binding_call_eq_string_requires_2 : Valid
+[wp] [Alt-Ergo] Goal typed_mem_binding_found_ensures : Valid
+[wp] [Alt-Ergo] Goal typed_mem_binding_not_found_ensures : Valid
+[wp] [Qed] Goal typed_size_ensures : Valid
+[wp] [Qed] Goal typed_size_assigns : Valid
 [wp] Proved goals:  102 / 102
   Qed:            69 
   Alt-Ergo:       33
@@ -145,95 +145,95 @@ mem_binding         18      8 (192..240)    26       100%
 [wp] [Alt-Ergo] Goal typed_add_assert_rte_mem_access_6 : Valid
 [wp] [Alt-Ergo] Goal typed_add_assert_rte_mem_access_7 : Valid
 [wp] [Alt-Ergo] Goal typed_add_assert_rte_signed_overflow_2 : Valid
-[wp] [Qed] Goal typed_add_assign_exit : Valid
-[wp] [Qed] Goal typed_add_assign_normal_part1 : Valid
-[wp] [Qed] Goal typed_add_assign_normal_part2 : Valid
-[wp] [Qed] Goal typed_add_assign_normal_part3 : Valid
-[wp] [Qed] Goal typed_add_assign_normal_part4 : Valid
-[wp] [Qed] Goal typed_add_assign_normal_part5 : Valid
-[wp] [Alt-Ergo] Goal typed_add_assign_normal_part6 : Valid
-[wp] [Alt-Ergo] Goal typed_add_assign_normal_part7 : Valid
-[wp] [Qed] Goal typed_add_assign_normal_part8 : Valid
-[wp] [Qed] Goal typed_add_assign_normal_part9 : Valid
-[wp] [Qed] Goal typed_add_call_hash_pre : Valid
-[wp] [Alt-Ergo] Goal typed_add_full_post : Valid
-[wp] [Qed] Goal typed_add_full_assign_exit : Valid
-[wp] [Qed] Goal typed_add_full_assign_normal_part1 : Valid
-[wp] [Qed] Goal typed_add_full_assign_normal_part2 : Valid
-[wp] [Qed] Goal typed_add_full_assign_normal_part3 : Valid
-[wp] [Qed] Goal typed_add_full_assign_normal_part4 : Valid
-[wp] [Qed] Goal typed_add_full_assign_normal_part5 : Valid
-[wp] [Alt-Ergo] Goal typed_add_full_assign_normal_part6 : Valid
-[wp] [Alt-Ergo] Goal typed_add_full_assign_normal_part7 : Valid
-[wp] [Alt-Ergo] Goal typed_add_full_assign_normal_part8 : Valid
-[wp] [Qed] Goal typed_add_full_assign_normal_part9 : Valid
-[wp] [Alt-Ergo] Goal typed_add_nominal_post : Valid
-[wp] [Alt-Ergo] Goal typed_add_nominal_post_2 : Valid
-[wp] [Alt-Ergo] Goal typed_add_nominal_post_3 : Valid
-[wp] [Alt-Ergo] Goal typed_add_nominal_post_4 : Valid
-[wp] [Alt-Ergo] Goal typed_add_nominal_post_5 : Valid
-[wp] [Qed] Goal typed_add_nominal_assign_exit : Valid
-[wp] [Qed] Goal typed_add_nominal_assign_normal_part1 : Valid
-[wp] [Qed] Goal typed_add_nominal_assign_normal_part2 : Valid
-[wp] [Qed] Goal typed_add_nominal_assign_normal_part3 : Valid
-[wp] [Qed] Goal typed_add_nominal_assign_normal_part4 : Valid
-[wp] [Qed] Goal typed_add_nominal_assign_normal_part5 : Valid
-[wp] [Alt-Ergo] Goal typed_add_nominal_assign_normal_part6 : Valid
-[wp] [Alt-Ergo] Goal typed_add_nominal_assign_normal_part7 : Valid
-[wp] [Qed] Goal typed_add_nominal_assign_normal_part8 : Valid
-[wp] [Qed] Goal typed_add_nominal_assign_normal_part9 : Valid
+[wp] [Qed] Goal typed_add_assigns_exit : Valid
+[wp] [Qed] Goal typed_add_assigns_normal_part1 : Valid
+[wp] [Qed] Goal typed_add_assigns_normal_part2 : Valid
+[wp] [Qed] Goal typed_add_assigns_normal_part3 : Valid
+[wp] [Qed] Goal typed_add_assigns_normal_part4 : Valid
+[wp] [Qed] Goal typed_add_assigns_normal_part5 : Valid
+[wp] [Alt-Ergo] Goal typed_add_assigns_normal_part6 : Valid
+[wp] [Alt-Ergo] Goal typed_add_assigns_normal_part7 : Valid
+[wp] [Qed] Goal typed_add_assigns_normal_part8 : Valid
+[wp] [Qed] Goal typed_add_assigns_normal_part9 : Valid
+[wp] [Qed] Goal typed_add_call_hash_requires : Valid
+[wp] [Alt-Ergo] Goal typed_add_full_ensures : Valid
+[wp] [Qed] Goal typed_add_full_assigns_exit : Valid
+[wp] [Qed] Goal typed_add_full_assigns_normal_part1 : Valid
+[wp] [Qed] Goal typed_add_full_assigns_normal_part2 : Valid
+[wp] [Qed] Goal typed_add_full_assigns_normal_part3 : Valid
+[wp] [Qed] Goal typed_add_full_assigns_normal_part4 : Valid
+[wp] [Qed] Goal typed_add_full_assigns_normal_part5 : Valid
+[wp] [Alt-Ergo] Goal typed_add_full_assigns_normal_part6 : Valid
+[wp] [Alt-Ergo] Goal typed_add_full_assigns_normal_part7 : Valid
+[wp] [Alt-Ergo] Goal typed_add_full_assigns_normal_part8 : Valid
+[wp] [Qed] Goal typed_add_full_assigns_normal_part9 : Valid
+[wp] [Alt-Ergo] Goal typed_add_nominal_ensures : Valid
+[wp] [Alt-Ergo] Goal typed_add_nominal_ensures_2 : Valid
+[wp] [Alt-Ergo] Goal typed_add_nominal_ensures_3 : Valid
+[wp] [Alt-Ergo] Goal typed_add_nominal_ensures_4 : Valid
+[wp] [Alt-Ergo] Goal typed_add_nominal_ensures_5 : Valid
+[wp] [Qed] Goal typed_add_nominal_assigns_exit : Valid
+[wp] [Qed] Goal typed_add_nominal_assigns_normal_part1 : Valid
+[wp] [Qed] Goal typed_add_nominal_assigns_normal_part2 : Valid
+[wp] [Qed] Goal typed_add_nominal_assigns_normal_part3 : Valid
+[wp] [Qed] Goal typed_add_nominal_assigns_normal_part4 : Valid
+[wp] [Qed] Goal typed_add_nominal_assigns_normal_part5 : Valid
+[wp] [Alt-Ergo] Goal typed_add_nominal_assigns_normal_part6 : Valid
+[wp] [Alt-Ergo] Goal typed_add_nominal_assigns_normal_part7 : Valid
+[wp] [Qed] Goal typed_add_nominal_assigns_normal_part8 : Valid
+[wp] [Qed] Goal typed_add_nominal_assigns_normal_part9 : Valid
 [wp] [Qed] Goal typed_eq_string_complete_not_eq_eq : Valid
 [wp] [Qed] Goal typed_eq_string_disjoint_not_eq_eq : Valid
-[wp] [Alt-Ergo] Goal typed_eq_string_loop_inv_preserved : Valid
-[wp] [Qed] Goal typed_eq_string_loop_inv_established : Valid
-[wp] [Alt-Ergo] Goal typed_eq_string_loop_inv_2_preserved : Valid
-[wp] [Qed] Goal typed_eq_string_loop_inv_2_established : Valid
+[wp] [Alt-Ergo] Goal typed_eq_string_loop_invariant_preserved : Valid
+[wp] [Qed] Goal typed_eq_string_loop_invariant_established : Valid
+[wp] [Alt-Ergo] Goal typed_eq_string_loop_invariant_2_preserved : Valid
+[wp] [Qed] Goal typed_eq_string_loop_invariant_2_established : Valid
 [wp] [Alt-Ergo] Goal typed_eq_string_assert_rte_mem_access : Valid
 [wp] [Alt-Ergo] Goal typed_eq_string_assert_rte_mem_access_2 : Valid
 [wp] [Alt-Ergo] Goal typed_eq_string_assert_rte_signed_overflow : Valid
-[wp] [Qed] Goal typed_eq_string_loop_assign : Valid
-[wp] [Qed] Goal typed_eq_string_assign_part1 : Valid
-[wp] [Qed] Goal typed_eq_string_assign_part2 : Valid
-[wp] [Qed] Goal typed_eq_string_assign_part3 : Valid
-[wp] [Qed] Goal typed_eq_string_assign_part4 : Valid
-[wp] [Qed] Goal typed_eq_string_loop_term_decrease : Valid
-[wp] [Qed] Goal typed_eq_string_loop_term_positive : Valid
-[wp] [Alt-Ergo] Goal typed_eq_string_eq_post : Valid
-[wp] [Alt-Ergo] Goal typed_eq_string_not_eq_post : Valid
-[wp] [Alt-Ergo] Goal typed_hash_loop_inv_preserved : Valid
-[wp] [Qed] Goal typed_hash_loop_inv_established : Valid
+[wp] [Qed] Goal typed_eq_string_loop_assigns : Valid
+[wp] [Qed] Goal typed_eq_string_assigns_part1 : Valid
+[wp] [Qed] Goal typed_eq_string_assigns_part2 : Valid
+[wp] [Qed] Goal typed_eq_string_assigns_part3 : Valid
+[wp] [Qed] Goal typed_eq_string_assigns_part4 : Valid
+[wp] [Qed] Goal typed_eq_string_loop_variant_decrease : Valid
+[wp] [Qed] Goal typed_eq_string_loop_variant_positive : Valid
+[wp] [Alt-Ergo] Goal typed_eq_string_eq_ensures : Valid
+[wp] [Alt-Ergo] Goal typed_eq_string_not_eq_ensures : Valid
+[wp] [Alt-Ergo] Goal typed_hash_loop_invariant_preserved : Valid
+[wp] [Qed] Goal typed_hash_loop_invariant_established : Valid
 [wp] [Alt-Ergo] Goal typed_hash_assert_rte_mem_access : Valid
 [wp] [Qed] Goal typed_hash_assert_rte_mem_access_2 : Valid
 [wp] [Alt-Ergo] Goal typed_hash_assert_rte_signed_overflow : Valid
-[wp] [Qed] Goal typed_hash_loop_assign : Valid
-[wp] [Qed] Goal typed_hash_assign_part1 : Valid
-[wp] [Qed] Goal typed_hash_assign_part2 : Valid
-[wp] [Qed] Goal typed_hash_loop_term_decrease : Valid
-[wp] [Qed] Goal typed_hash_loop_term_positive : Valid
-[wp] [Alt-Ergo] Goal typed_init_post : Valid
-[wp] [Alt-Ergo] Goal typed_init_post_2 : Valid
+[wp] [Qed] Goal typed_hash_loop_assigns : Valid
+[wp] [Qed] Goal typed_hash_assigns_part1 : Valid
+[wp] [Qed] Goal typed_hash_assigns_part2 : Valid
+[wp] [Qed] Goal typed_hash_loop_variant_decrease : Valid
+[wp] [Qed] Goal typed_hash_loop_variant_positive : Valid
+[wp] [Alt-Ergo] Goal typed_init_ensures : Valid
+[wp] [Alt-Ergo] Goal typed_init_ensures_2 : Valid
 [wp] [Alt-Ergo] Goal typed_init_assert_rte_mem_access : Valid
-[wp] [Alt-Ergo] Goal typed_init_loop_inv_preserved : Valid
-[wp] [Qed] Goal typed_init_loop_inv_established : Valid
-[wp] [Alt-Ergo] Goal typed_init_loop_inv_2_preserved : Valid
-[wp] [Qed] Goal typed_init_loop_inv_2_established : Valid
+[wp] [Alt-Ergo] Goal typed_init_loop_invariant_preserved : Valid
+[wp] [Qed] Goal typed_init_loop_invariant_established : Valid
+[wp] [Alt-Ergo] Goal typed_init_loop_invariant_2_preserved : Valid
+[wp] [Qed] Goal typed_init_loop_invariant_2_established : Valid
 [wp] [Qed] Goal typed_init_assert_rte_index_bound : Valid
 [wp] [Qed] Goal typed_init_assert_rte_index_bound_2 : Valid
 [wp] [Alt-Ergo] Goal typed_init_assert_rte_mem_access_2 : Valid
 [wp] [Alt-Ergo] Goal typed_init_assert_rte_signed_overflow : Valid
-[wp] [Qed] Goal typed_init_loop_assign_part1 : Valid
-[wp] [Qed] Goal typed_init_loop_assign_part2 : Valid
-[wp] [Qed] Goal typed_init_assign_part1 : Valid
-[wp] [Qed] Goal typed_init_assign_part2 : Valid
-[wp] [Alt-Ergo] Goal typed_init_assign_part3 : Valid
-[wp] [Qed] Goal typed_init_loop_term_decrease : Valid
-[wp] [Qed] Goal typed_init_loop_term_positive : Valid
+[wp] [Qed] Goal typed_init_loop_assigns_part1 : Valid
+[wp] [Qed] Goal typed_init_loop_assigns_part2 : Valid
+[wp] [Qed] Goal typed_init_assigns_part1 : Valid
+[wp] [Qed] Goal typed_init_assigns_part2 : Valid
+[wp] [Alt-Ergo] Goal typed_init_assigns_part3 : Valid
+[wp] [Qed] Goal typed_init_loop_variant_decrease : Valid
+[wp] [Qed] Goal typed_init_loop_variant_positive : Valid
 [wp] [Alt-Ergo] Goal typed_mem_binding_complete_not_found_found : Valid
 [wp] [Alt-Ergo] Goal typed_mem_binding_disjoint_not_found_found : Valid
-[wp] [Alt-Ergo] Goal typed_mem_binding_loop_inv_preserved : Valid
-[wp] [Alt-Ergo] Goal typed_mem_binding_loop_inv_established : Valid
-[wp] [Alt-Ergo] Goal typed_mem_binding_loop_inv_2_preserved : Valid
-[wp] [Qed] Goal typed_mem_binding_loop_inv_2_established : Valid
+[wp] [Alt-Ergo] Goal typed_mem_binding_loop_invariant_preserved : Valid
+[wp] [Alt-Ergo] Goal typed_mem_binding_loop_invariant_established : Valid
+[wp] [Alt-Ergo] Goal typed_mem_binding_loop_invariant_2_preserved : Valid
+[wp] [Qed] Goal typed_mem_binding_loop_invariant_2_established : Valid
 [wp] [Alt-Ergo] Goal typed_mem_binding_assert_rte_index_bound : Valid
 [wp] [Alt-Ergo] Goal typed_mem_binding_assert_rte_index_bound_2 : Valid
 [wp] [Alt-Ergo] Goal typed_mem_binding_assert_rte_mem_access : Valid
@@ -248,29 +248,29 @@ mem_binding         18      8 (192..240)    26       100%
 [wp] [Qed] Goal typed_mem_binding_assert_rte_index_bound_10 : Valid
 [wp] [Alt-Ergo] Goal typed_mem_binding_assert_rte_mem_access_3 : Valid
 [wp] [Alt-Ergo] Goal typed_mem_binding_assert_rte_signed_overflow : Valid
-[wp] [Qed] Goal typed_mem_binding_loop_assign_part1 : Valid
-[wp] [Qed] Goal typed_mem_binding_loop_assign_part2 : Valid
-[wp] [Qed] Goal typed_mem_binding_assign_exit_part1 : Valid
-[wp] [Qed] Goal typed_mem_binding_assign_exit_part2 : Valid
-[wp] [Qed] Goal typed_mem_binding_assign_exit_part3 : Valid
-[wp] [Qed] Goal typed_mem_binding_assign_exit_part4 : Valid
-[wp] [Qed] Goal typed_mem_binding_assign_normal_part1 : Valid
-[wp] [Qed] Goal typed_mem_binding_assign_normal_part2 : Valid
-[wp] [Qed] Goal typed_mem_binding_assign_normal_part3 : Valid
-[wp] [Qed] Goal typed_mem_binding_assign_normal_part4 : Valid
-[wp] [Qed] Goal typed_mem_binding_assign_normal_part5 : Valid
-[wp] [Qed] Goal typed_mem_binding_assign_normal_part6 : Valid
-[wp] [Qed] Goal typed_mem_binding_assign_normal_part7 : Valid
-[wp] [Qed] Goal typed_mem_binding_loop_term_decrease : Valid
-[wp] [Qed] Goal typed_mem_binding_loop_term_positive : Valid
-[wp] [Qed] Goal typed_mem_binding_call_hash_pre : Valid
-[wp] [Qed] Goal typed_mem_binding_call_eq_string_pre : Valid
-[wp] [Alt-Ergo] Goal typed_mem_binding_call_eq_string_pre_2 : Valid
-[wp] [Alt-Ergo] Goal typed_mem_binding_found_post : Valid
-[wp] [Alt-Ergo] Goal typed_mem_binding_not_found_post : Valid
-[wp] [Qed] Goal typed_size_post : Valid
+[wp] [Qed] Goal typed_mem_binding_loop_assigns_part1 : Valid
+[wp] [Qed] Goal typed_mem_binding_loop_assigns_part2 : Valid
+[wp] [Qed] Goal typed_mem_binding_assigns_exit_part1 : Valid
+[wp] [Qed] Goal typed_mem_binding_assigns_exit_part2 : Valid
+[wp] [Qed] Goal typed_mem_binding_assigns_exit_part3 : Valid
+[wp] [Qed] Goal typed_mem_binding_assigns_exit_part4 : Valid
+[wp] [Qed] Goal typed_mem_binding_assigns_normal_part1 : Valid
+[wp] [Qed] Goal typed_mem_binding_assigns_normal_part2 : Valid
+[wp] [Qed] Goal typed_mem_binding_assigns_normal_part3 : Valid
+[wp] [Qed] Goal typed_mem_binding_assigns_normal_part4 : Valid
+[wp] [Qed] Goal typed_mem_binding_assigns_normal_part5 : Valid
+[wp] [Qed] Goal typed_mem_binding_assigns_normal_part6 : Valid
+[wp] [Qed] Goal typed_mem_binding_assigns_normal_part7 : Valid
+[wp] [Qed] Goal typed_mem_binding_loop_variant_decrease : Valid
+[wp] [Qed] Goal typed_mem_binding_loop_variant_positive : Valid
+[wp] [Qed] Goal typed_mem_binding_call_hash_requires : Valid
+[wp] [Qed] Goal typed_mem_binding_call_eq_string_requires : Valid
+[wp] [Alt-Ergo] Goal typed_mem_binding_call_eq_string_requires_2 : Valid
+[wp] [Alt-Ergo] Goal typed_mem_binding_found_ensures : Valid
+[wp] [Alt-Ergo] Goal typed_mem_binding_not_found_ensures : Valid
+[wp] [Qed] Goal typed_size_ensures : Valid
 [wp] [Alt-Ergo] Goal typed_size_assert_rte_mem_access : Valid
-[wp] [Qed] Goal typed_size_assign : Valid
+[wp] [Qed] Goal typed_size_assigns : Valid
 [wp] Proved goals:   74 / 143
   Qed:            16 
   Alt-Ergo:       58
diff --git a/src/plugins/wp/tests/wp_gallery/oracle_qualif/loop-statement.res.oracle b/src/plugins/wp/tests/wp_gallery/oracle_qualif/loop-statement.res.oracle
index 3115cf8cb4745cf898196236e88078d64baeec3a..26816b946bcc170a939be8353db3629ba7f9c343 100644
--- a/src/plugins/wp/tests/wp_gallery/oracle_qualif/loop-statement.res.oracle
+++ b/src/plugins/wp/tests/wp_gallery/oracle_qualif/loop-statement.res.oracle
@@ -5,20 +5,20 @@
 [wp] Warning: Missing RTE guards
 [wp] 15 goals scheduled
 [wp] [Alt-Ergo] Goal typed_lemma_Lb : Valid
-[wp] [Qed] Goal typed_loop_statement_post_Scond : Valid
-[wp] [Qed] Goal typed_loop_statement_post_Sloop : Valid
-[wp] [Alt-Ergo] Goal typed_loop_statement_loop_inv_Iloop_preserved : Valid
-[wp] [Alt-Ergo] Goal typed_loop_statement_loop_inv_Iloop_established : Valid
-[wp] [Qed] Goal typed_loop_statement_loop_assign_part1 : Valid
-[wp] [Qed] Goal typed_loop_statement_loop_assign_part2 : Valid
-[wp] [Qed] Goal typed_loop_statement_assign_exit_part1 : Valid
-[wp] [Qed] Goal typed_loop_statement_assign_exit_part2 : Valid
-[wp] [Qed] Goal typed_loop_statement_assign_normal_part1 : Valid
-[wp] [Qed] Goal typed_loop_statement_assign_normal_part2 : Valid
-[wp] [Alt-Ergo] Goal typed_loop_statement_stmt_pre_Rinv : Valid
-[wp] [Qed] Goal typed_loop_statement_stmt_pre_Scond : Valid
-[wp] [Qed] Goal typed_loop_statement_stmt_post_Sbody : Valid
-[wp] [Qed] Goal typed_loop_statement_stmt_assign : Valid
+[wp] [Qed] Goal typed_loop_statement_ensures_Scond : Valid
+[wp] [Qed] Goal typed_loop_statement_ensures_Sloop : Valid
+[wp] [Alt-Ergo] Goal typed_loop_statement_loop_invariant_Iloop_preserved : Valid
+[wp] [Alt-Ergo] Goal typed_loop_statement_loop_invariant_Iloop_established : Valid
+[wp] [Qed] Goal typed_loop_statement_loop_assigns_part1 : Valid
+[wp] [Qed] Goal typed_loop_statement_loop_assigns_part2 : Valid
+[wp] [Qed] Goal typed_loop_statement_assigns_2_exit_part1 : Valid
+[wp] [Qed] Goal typed_loop_statement_assigns_2_exit_part2 : Valid
+[wp] [Qed] Goal typed_loop_statement_assigns_2_normal_part1 : Valid
+[wp] [Qed] Goal typed_loop_statement_assigns_2_normal_part2 : Valid
+[wp] [Alt-Ergo] Goal typed_loop_statement_requires_Rinv : Valid
+[wp] [Qed] Goal typed_loop_statement_requires_Scond : Valid
+[wp] [Qed] Goal typed_loop_statement_ensures_Sbody : Valid
+[wp] [Qed] Goal typed_loop_statement_assigns : Valid
 [wp] Proved goals:   15 / 15
   Qed:            11 
   Alt-Ergo:        4
diff --git a/src/plugins/wp/tests/wp_hoare/byref.i.0.report.json b/src/plugins/wp/tests/wp_hoare/byref.i.0.report.json
index a7a3f8fa494867151bce0d02eaf63fa6c56f223b..ca2beb3fcb1d5d4fafbf0a16c23afcebbdd94fb3 100644
--- a/src/plugins/wp/tests/wp_hoare/byref.i.0.report.json
+++ b/src/plugins/wp/tests/wp_hoare/byref.i.0.report.json
@@ -1,20 +1,22 @@
 { "wp:global": { "alt-ergo": { "total": 1, "unknown": 1 },
                  "qed": { "total": 11, "valid": 11 },
                  "wp:main": { "total": 12, "valid": 11, "unknown": 1 } },
-  "wp:functions": { "f": { "f_assign": { "qed": { "total": 1, "valid": 1 },
-                                         "wp:main": { "total": 1,
-                                                      "valid": 1 } },
-                           "f_post": { "qed": { "total": 1, "valid": 1 },
-                                       "wp:main": { "total": 1, "valid": 1 } },
+  "wp:functions": { "f": { "f_assigns": { "qed": { "total": 1, "valid": 1 },
+                                          "wp:main": { "total": 1,
+                                                       "valid": 1 } },
+                           "f_ensures": { "qed": { "total": 1, "valid": 1 },
+                                          "wp:main": { "total": 1,
+                                                       "valid": 1 } },
                            "wp:section": { "qed": { "total": 2, "valid": 2 },
                                            "wp:main": { "total": 2,
                                                         "valid": 2 } } },
-                    "wrong_without_ref": { "specialization_f_pre_at_wrong_without_ref_stmt_4": 
-                                             { "alt-ergo": { "total": 1,
-                                                             "unknown": 1 },
-                                               "wp:main": { "total": 1,
-                                                            "unknown": 1 } },
-                                           "wrong_without_ref_post": 
+                    "wrong_without_ref": { "f_requires": { "alt-ergo": 
+                                                             { "total": 1,
+                                                               "unknown": 1 },
+                                                           "wp:main": 
+                                                             { "total": 1,
+                                                               "unknown": 1 } },
+                                           "wrong_without_ref_ensures": 
                                              { "qed": { "total": 1,
                                                         "valid": 1 },
                                                "wp:main": { "total": 1,
@@ -28,46 +30,50 @@
                                                              { "total": 2,
                                                                "valid": 1,
                                                                "unknown": 1 } } },
-                    "pointer": { "specialization_f_pre_at_pointer_stmt_8": 
-                                   { "qed": { "total": 1, "valid": 1 },
-                                     "wp:main": { "total": 1, "valid": 1 } },
-                                 "pointer_post": { "qed": { "total": 1,
+                    "pointer": { "f_requires_2": { "qed": { "total": 1,
                                                             "valid": 1 },
                                                    "wp:main": { "total": 1,
                                                                 "valid": 1 } },
+                                 "pointer_ensures": { "qed": { "total": 1,
+                                                               "valid": 1 },
+                                                      "wp:main": { "total": 1,
+                                                                   "valid": 1 } },
                                  "wp:section": { "qed": { "total": 2,
                                                           "valid": 2 },
                                                  "wp:main": { "total": 2,
                                                               "valid": 2 } } },
-                    "local": { "specialization_f_pre_at_local_stmt_12": 
-                                 { "qed": { "total": 1, "valid": 1 },
-                                   "wp:main": { "total": 1, "valid": 1 } },
-                               "local_post": { "qed": { "total": 1,
-                                                        "valid": 1 },
-                                               "wp:main": { "total": 1,
-                                                            "valid": 1 } },
+                    "local": { "f_requires_3": { "qed": { "total": 1,
+                                                          "valid": 1 },
+                                                 "wp:main": { "total": 1,
+                                                              "valid": 1 } },
+                               "local_ensures": { "qed": { "total": 1,
+                                                           "valid": 1 },
+                                                  "wp:main": { "total": 1,
+                                                               "valid": 1 } },
                                "wp:section": { "qed": { "total": 2,
                                                         "valid": 2 },
                                                "wp:main": { "total": 2,
                                                             "valid": 2 } } },
-                    "formal": { "specialization_f_pre_at_formal_stmt_16": 
-                                  { "qed": { "total": 1, "valid": 1 },
-                                    "wp:main": { "total": 1, "valid": 1 } },
-                                "formal_post": { "qed": { "total": 1,
-                                                          "valid": 1 },
-                                                 "wp:main": { "total": 1,
-                                                              "valid": 1 } },
+                    "formal": { "f_requires_4": { "qed": { "total": 1,
+                                                           "valid": 1 },
+                                                  "wp:main": { "total": 1,
+                                                               "valid": 1 } },
+                                "formal_ensures": { "qed": { "total": 1,
+                                                             "valid": 1 },
+                                                    "wp:main": { "total": 1,
+                                                                 "valid": 1 } },
                                 "wp:section": { "qed": { "total": 2,
                                                          "valid": 2 },
                                                 "wp:main": { "total": 2,
                                                              "valid": 2 } } },
-                    "global": { "specialization_f_pre_at_global_stmt_20": 
-                                  { "qed": { "total": 1, "valid": 1 },
-                                    "wp:main": { "total": 1, "valid": 1 } },
-                                "global_post": { "qed": { "total": 1,
-                                                          "valid": 1 },
-                                                 "wp:main": { "total": 1,
-                                                              "valid": 1 } },
+                    "global": { "f_requires_5": { "qed": { "total": 1,
+                                                           "valid": 1 },
+                                                  "wp:main": { "total": 1,
+                                                               "valid": 1 } },
+                                "global_ensures": { "qed": { "total": 1,
+                                                             "valid": 1 },
+                                                    "wp:main": { "total": 1,
+                                                                 "valid": 1 } },
                                 "wp:section": { "qed": { "total": 2,
                                                          "valid": 2 },
                                                 "wp:main": { "total": 2,
diff --git a/src/plugins/wp/tests/wp_hoare/byref.i.1.report.json b/src/plugins/wp/tests/wp_hoare/byref.i.1.report.json
index 59457803d9be0263fd583785326743b516a5993f..dae2cb882d8a0824f51d63d5a0db103b114041b4 100644
--- a/src/plugins/wp/tests/wp_hoare/byref.i.1.report.json
+++ b/src/plugins/wp/tests/wp_hoare/byref.i.1.report.json
@@ -1,19 +1,20 @@
 { "wp:global": { "qed": { "total": 12, "valid": 12 },
                  "wp:main": { "total": 12, "valid": 12 } },
-  "wp:functions": { "f": { "f_assign": { "qed": { "total": 1, "valid": 1 },
-                                         "wp:main": { "total": 1,
-                                                      "valid": 1 } },
-                           "f_post": { "qed": { "total": 1, "valid": 1 },
-                                       "wp:main": { "total": 1, "valid": 1 } },
+  "wp:functions": { "f": { "f_assigns": { "qed": { "total": 1, "valid": 1 },
+                                          "wp:main": { "total": 1,
+                                                       "valid": 1 } },
+                           "f_ensures": { "qed": { "total": 1, "valid": 1 },
+                                          "wp:main": { "total": 1,
+                                                       "valid": 1 } },
                            "wp:section": { "qed": { "total": 2, "valid": 2 },
                                            "wp:main": { "total": 2,
                                                         "valid": 2 } } },
-                    "wrong_without_ref": { "specialization_f_pre_at_wrong_without_ref_stmt_4": 
-                                             { "qed": { "total": 1,
-                                                        "valid": 1 },
-                                               "wp:main": { "total": 1,
-                                                            "valid": 1 } },
-                                           "wrong_without_ref_post": 
+                    "wrong_without_ref": { "f_requires": { "qed": { "total": 1,
+                                                                    "valid": 1 },
+                                                           "wp:main": 
+                                                             { "total": 1,
+                                                               "valid": 1 } },
+                                           "wrong_without_ref_ensures": 
                                              { "qed": { "total": 1,
                                                         "valid": 1 },
                                                "wp:main": { "total": 1,
@@ -23,46 +24,50 @@
                                                            "wp:main": 
                                                              { "total": 2,
                                                                "valid": 2 } } },
-                    "pointer": { "specialization_f_pre_at_pointer_stmt_8": 
-                                   { "qed": { "total": 1, "valid": 1 },
-                                     "wp:main": { "total": 1, "valid": 1 } },
-                                 "pointer_post": { "qed": { "total": 1,
+                    "pointer": { "f_requires_2": { "qed": { "total": 1,
                                                             "valid": 1 },
                                                    "wp:main": { "total": 1,
                                                                 "valid": 1 } },
+                                 "pointer_ensures": { "qed": { "total": 1,
+                                                               "valid": 1 },
+                                                      "wp:main": { "total": 1,
+                                                                   "valid": 1 } },
                                  "wp:section": { "qed": { "total": 2,
                                                           "valid": 2 },
                                                  "wp:main": { "total": 2,
                                                               "valid": 2 } } },
-                    "local": { "specialization_f_pre_at_local_stmt_12": 
-                                 { "qed": { "total": 1, "valid": 1 },
-                                   "wp:main": { "total": 1, "valid": 1 } },
-                               "local_post": { "qed": { "total": 1,
-                                                        "valid": 1 },
-                                               "wp:main": { "total": 1,
-                                                            "valid": 1 } },
+                    "local": { "f_requires_3": { "qed": { "total": 1,
+                                                          "valid": 1 },
+                                                 "wp:main": { "total": 1,
+                                                              "valid": 1 } },
+                               "local_ensures": { "qed": { "total": 1,
+                                                           "valid": 1 },
+                                                  "wp:main": { "total": 1,
+                                                               "valid": 1 } },
                                "wp:section": { "qed": { "total": 2,
                                                         "valid": 2 },
                                                "wp:main": { "total": 2,
                                                             "valid": 2 } } },
-                    "formal": { "specialization_f_pre_at_formal_stmt_16": 
-                                  { "qed": { "total": 1, "valid": 1 },
-                                    "wp:main": { "total": 1, "valid": 1 } },
-                                "formal_post": { "qed": { "total": 1,
-                                                          "valid": 1 },
-                                                 "wp:main": { "total": 1,
-                                                              "valid": 1 } },
+                    "formal": { "f_requires_4": { "qed": { "total": 1,
+                                                           "valid": 1 },
+                                                  "wp:main": { "total": 1,
+                                                               "valid": 1 } },
+                                "formal_ensures": { "qed": { "total": 1,
+                                                             "valid": 1 },
+                                                    "wp:main": { "total": 1,
+                                                                 "valid": 1 } },
                                 "wp:section": { "qed": { "total": 2,
                                                          "valid": 2 },
                                                 "wp:main": { "total": 2,
                                                              "valid": 2 } } },
-                    "global": { "specialization_f_pre_at_global_stmt_20": 
-                                  { "qed": { "total": 1, "valid": 1 },
-                                    "wp:main": { "total": 1, "valid": 1 } },
-                                "global_post": { "qed": { "total": 1,
-                                                          "valid": 1 },
-                                                 "wp:main": { "total": 1,
-                                                              "valid": 1 } },
+                    "global": { "f_requires_5": { "qed": { "total": 1,
+                                                           "valid": 1 },
+                                                  "wp:main": { "total": 1,
+                                                               "valid": 1 } },
+                                "global_ensures": { "qed": { "total": 1,
+                                                             "valid": 1 },
+                                                    "wp:main": { "total": 1,
+                                                                 "valid": 1 } },
                                 "wp:section": { "qed": { "total": 2,
                                                          "valid": 2 },
                                                 "wp:main": { "total": 2,
diff --git a/src/plugins/wp/tests/wp_hoare/dispatch_var.i.0.report.json b/src/plugins/wp/tests/wp_hoare/dispatch_var.i.0.report.json
index 90636e9b45b12301d8f6b619fae7dbd2db95c8bc..9354117a174bb82e9a53c4982f073ec6553a896e 100644
--- a/src/plugins/wp/tests/wp_hoare/dispatch_var.i.0.report.json
+++ b/src/plugins/wp/tests/wp_hoare/dispatch_var.i.0.report.json
@@ -1,95 +1,94 @@
 { "wp:global": { "qed": { "total": 78, "valid": 78 },
                  "wp:main": { "total": 78, "valid": 78 } },
-  "wp:functions": { "call_ref_ctr": { "call_ref_ctr_assign": { "qed": 
-                                                                 { "total": 3,
-                                                                   "valid": 3 },
-                                                               "wp:main": 
-                                                                 { "total": 3,
-                                                                   "valid": 3 } },
-                                      "call_ref_ctr_post_Ref_r1": { "qed": 
-                                                                    { "total": 1,
-                                                                    "valid": 1 },
-                                                                    "wp:main": 
-                                                                    { "total": 1,
-                                                                    "valid": 1 } },
+  "wp:functions": { "call_ref_ctr": { "call_ref_ctr_assigns": { "qed": 
+                                                                  { "total": 3,
+                                                                    "valid": 3 },
+                                                                "wp:main": 
+                                                                  { "total": 3,
+                                                                    "valid": 3 } },
+                                      "call_ref_ctr_ensures_Ref_r1": 
+                                        { "qed": { "total": 1, "valid": 1 },
+                                          "wp:main": { "total": 1,
+                                                       "valid": 1 } },
                                       "wp:section": { "qed": { "total": 4,
                                                                "valid": 4 },
                                                       "wp:main": { "total": 4,
                                                                    "valid": 4 } } },
-                    "call_ref_ctr2": { "call_ref_ctr2_assign": { "qed": 
-                                                                   { "total": 7,
+                    "call_ref_ctr2": { "call_ref_ctr2_assigns": { "qed": 
+                                                                    { "total": 7,
                                                                     "valid": 7 },
-                                                                 "wp:main": 
-                                                                   { "total": 7,
+                                                                  "wp:main": 
+                                                                    { "total": 7,
                                                                     "valid": 7 } },
-                                       "call_ref_ctr2_post_Mem_n1": { "qed": 
-                                                                    { "total": 1,
-                                                                    "valid": 1 },
-                                                                    "wp:main": 
-                                                                    { "total": 1,
-                                                                    "valid": 1 } },
+                                       "call_ref_ctr2_ensures_Mem_n1": 
+                                         { "qed": { "total": 1, "valid": 1 },
+                                           "wp:main": { "total": 1,
+                                                        "valid": 1 } },
                                        "wp:section": { "qed": { "total": 8,
                                                                 "valid": 8 },
                                                        "wp:main": { "total": 8,
                                                                     "valid": 8 } } },
-                    "ref_bd": { "ref_bd_assign": { "qed": { "total": 1,
-                                                            "valid": 1 },
-                                                   "wp:main": { "total": 1,
-                                                                "valid": 1 } },
-                                "ref_bd_post": { "qed": { "total": 1,
-                                                          "valid": 1 },
-                                                 "wp:main": { "total": 1,
-                                                              "valid": 1 } },
+                    "ref_bd": { "ref_bd_assigns": { "qed": { "total": 1,
+                                                             "valid": 1 },
+                                                    "wp:main": { "total": 1,
+                                                                 "valid": 1 } },
+                                "ref_bd_ensures": { "qed": { "total": 1,
+                                                             "valid": 1 },
+                                                    "wp:main": { "total": 1,
+                                                                 "valid": 1 } },
                                 "wp:section": { "qed": { "total": 2,
                                                          "valid": 2 },
                                                 "wp:main": { "total": 2,
                                                              "valid": 2 } } },
-                    "call_ref_bd": { "call_ref_bd_assign": { "qed": { "total": 3,
-                                                                    "valid": 3 },
-                                                             "wp:main": 
-                                                               { "total": 3,
-                                                                 "valid": 3 } },
-                                     "call_ref_bd_post_Ref_r2": { "qed": 
+                    "call_ref_bd": { "call_ref_bd_assigns": { "qed": 
+                                                                { "total": 3,
+                                                                  "valid": 3 },
+                                                              "wp:main": 
+                                                                { "total": 3,
+                                                                  "valid": 3 } },
+                                     "call_ref_bd_ensures_Ref_r2": { "qed": 
                                                                     { "total": 1,
                                                                     "valid": 1 },
-                                                                  "wp:main": 
+                                                                    "wp:main": 
                                                                     { "total": 1,
                                                                     "valid": 1 } },
                                      "wp:section": { "qed": { "total": 4,
                                                               "valid": 4 },
                                                      "wp:main": { "total": 4,
                                                                   "valid": 4 } } },
-                    "call_ref_bd2": { "call_ref_bd2_assign": { "qed": 
-                                                                 { "total": 7,
-                                                                   "valid": 7 },
-                                                               "wp:main": 
-                                                                 { "total": 7,
-                                                                   "valid": 7 } },
-                                      "call_ref_bd2_post_Mem_n2": { "qed": 
-                                                                    { "total": 1,
-                                                                    "valid": 1 },
-                                                                    "wp:main": 
-                                                                    { "total": 1,
-                                                                    "valid": 1 } },
+                    "call_ref_bd2": { "call_ref_bd2_assigns": { "qed": 
+                                                                  { "total": 7,
+                                                                    "valid": 7 },
+                                                                "wp:main": 
+                                                                  { "total": 7,
+                                                                    "valid": 7 } },
+                                      "call_ref_bd2_ensures_Mem_n2": 
+                                        { "qed": { "total": 1, "valid": 1 },
+                                          "wp:main": { "total": 1,
+                                                       "valid": 1 } },
                                       "wp:section": { "qed": { "total": 8,
                                                                "valid": 8 },
                                                       "wp:main": { "total": 8,
                                                                    "valid": 8 } } },
-                    "call_ref_valid": { "specialization_ref_valid_pre_at_call_ref_valid_stmt_35": 
-                                          { "qed": { "total": 1, "valid": 1 },
-                                            "wp:main": { "total": 1,
-                                                         "valid": 1 } },
-                                        "specialization_ref_valid_pre_at_call_ref_valid_stmt_34": 
-                                          { "qed": { "total": 1, "valid": 1 },
-                                            "wp:main": { "total": 1,
-                                                         "valid": 1 } },
-                                        "call_ref_valid_assign": { "qed": 
+                    "call_ref_valid": { "ref_valid_requires_2": { "qed": 
+                                                                    { "total": 1,
+                                                                    "valid": 1 },
+                                                                  "wp:main": 
+                                                                    { "total": 1,
+                                                                    "valid": 1 } },
+                                        "ref_valid_requires": { "qed": 
+                                                                  { "total": 1,
+                                                                    "valid": 1 },
+                                                                "wp:main": 
+                                                                  { "total": 1,
+                                                                    "valid": 1 } },
+                                        "call_ref_valid_assigns": { "qed": 
                                                                     { "total": 8,
                                                                     "valid": 8 },
-                                                                   "wp:main": 
+                                                                    "wp:main": 
                                                                     { "total": 8,
                                                                     "valid": 8 } },
-                                        "call_ref_valid_post_R7_N4": 
+                                        "call_ref_valid_ensures_R7_N4": 
                                           { "qed": { "total": 1, "valid": 1 },
                                             "wp:main": { "total": 1,
                                                          "valid": 1 } },
@@ -97,25 +96,27 @@
                                                                  "valid": 11 },
                                                         "wp:main": { "total": 11,
                                                                     "valid": 11 } } },
-                    "no_ref_bd": { "no_ref_bd_assign": { "qed": { "total": 2,
-                                                                  "valid": 2 },
-                                                         "wp:main": { "total": 2,
-                                                                    "valid": 2 } },
-                                   "no_ref_bd_post": { "qed": { "total": 1,
-                                                                "valid": 1 },
-                                                       "wp:main": { "total": 1,
-                                                                    "valid": 1 } },
+                    "no_ref_bd": { "no_ref_bd_assigns": { "qed": { "total": 2,
+                                                                   "valid": 2 },
+                                                          "wp:main": 
+                                                            { "total": 2,
+                                                              "valid": 2 } },
+                                   "no_ref_bd_ensures": { "qed": { "total": 1,
+                                                                   "valid": 1 },
+                                                          "wp:main": 
+                                                            { "total": 1,
+                                                              "valid": 1 } },
                                    "wp:section": { "qed": { "total": 3,
                                                             "valid": 3 },
                                                    "wp:main": { "total": 3,
                                                                 "valid": 3 } } },
-                    "call_no_ref_bd": { "call_no_ref_bd_assign": { "qed": 
+                    "call_no_ref_bd": { "call_no_ref_bd_assigns": { "qed": 
                                                                     { "total": 8,
                                                                     "valid": 8 },
-                                                                   "wp:main": 
+                                                                    "wp:main": 
                                                                     { "total": 8,
                                                                     "valid": 8 } },
-                                        "call_no_ref_bd_post_Mem_n5_nr6": 
+                                        "call_no_ref_bd_ensures_Mem_n5_nr6": 
                                           { "qed": { "total": 1, "valid": 1 },
                                             "wp:main": { "total": 1,
                                                          "valid": 1 } },
@@ -123,23 +124,24 @@
                                                                  "valid": 9 },
                                                         "wp:main": { "total": 9,
                                                                     "valid": 9 } } },
-                    "call_ref_ctr_nr": { "specialization_ref_ctr_nr_pre_at_call_ref_ctr_nr_stmt_57": 
-                                           { "qed": { "total": 1,
-                                                      "valid": 1 },
-                                             "wp:main": { "total": 1,
-                                                          "valid": 1 } },
-                                         "call_ref_ctr_nr_assign": { "qed": 
+                    "call_ref_ctr_nr": { "ref_ctr_nr_requires": { "qed": 
+                                                                    { "total": 1,
+                                                                    "valid": 1 },
+                                                                  "wp:main": 
+                                                                    { "total": 1,
+                                                                    "valid": 1 } },
+                                         "call_ref_ctr_nr_assigns": { "qed": 
                                                                     { "total": 7,
                                                                     "valid": 7 },
                                                                     "wp:main": 
                                                                     { "total": 7,
                                                                     "valid": 7 } },
-                                         "call_ref_ctr_nr_post_R_R_R_2": 
+                                         "call_ref_ctr_nr_ensures_R_R_R_2": 
                                            { "qed": { "total": 1,
                                                       "valid": 1 },
                                              "wp:main": { "total": 1,
                                                           "valid": 1 } },
-                                         "call_ref_ctr_nr_post_R_R_R": 
+                                         "call_ref_ctr_nr_ensures_R_R_R": 
                                            { "qed": { "total": 1,
                                                       "valid": 1 },
                                              "wp:main": { "total": 1,
@@ -148,12 +150,12 @@
                                                                   "valid": 10 },
                                                          "wp:main": { "total": 10,
                                                                     "valid": 10 } } },
-                    "call_ref_ctr_nstars": { "call_ref_ctr_nstars_assign": 
+                    "call_ref_ctr_nstars": { "call_ref_ctr_nstars_assigns": 
                                                { "qed": { "total": 5,
                                                           "valid": 5 },
                                                  "wp:main": { "total": 5,
                                                               "valid": 5 } },
-                                             "call_ref_ctr_nstars_post": 
+                                             "call_ref_ctr_nstars_ensures": 
                                                { "qed": { "total": 1,
                                                           "valid": 1 },
                                                  "wp:main": { "total": 1,
@@ -163,35 +165,37 @@
                                                              "wp:main": 
                                                                { "total": 6,
                                                                  "valid": 6 } } },
-                    "call_two_ref": { "call_two_ref_assign": { "qed": 
-                                                                 { "total": 6,
-                                                                   "valid": 6 },
-                                                               "wp:main": 
-                                                                 { "total": 6,
-                                                                   "valid": 6 } },
-                                      "call_two_ref_post": { "qed": { "total": 1,
+                    "call_two_ref": { "call_two_ref_assigns": { "qed": 
+                                                                  { "total": 6,
+                                                                    "valid": 6 },
+                                                                "wp:main": 
+                                                                  { "total": 6,
+                                                                    "valid": 6 } },
+                                      "call_two_ref_ensures": { "qed": 
+                                                                  { "total": 1,
                                                                     "valid": 1 },
-                                                             "wp:main": 
-                                                               { "total": 1,
-                                                                 "valid": 1 } },
+                                                                "wp:main": 
+                                                                  { "total": 1,
+                                                                    "valid": 1 } },
                                       "wp:section": { "qed": { "total": 7,
                                                                "valid": 7 },
                                                       "wp:main": { "total": 7,
                                                                    "valid": 7 } } },
-                    "g": { "g_assign": { "qed": { "total": 3, "valid": 3 },
-                                         "wp:main": { "total": 3,
-                                                      "valid": 3 } },
-                           "g_post": { "qed": { "total": 1, "valid": 1 },
-                                       "wp:main": { "total": 1, "valid": 1 } },
+                    "g": { "g_assigns": { "qed": { "total": 3, "valid": 3 },
+                                          "wp:main": { "total": 3,
+                                                       "valid": 3 } },
+                           "g_ensures": { "qed": { "total": 1, "valid": 1 },
+                                          "wp:main": { "total": 1,
+                                                       "valid": 1 } },
                            "wp:section": { "qed": { "total": 4, "valid": 4 },
                                            "wp:main": { "total": 4,
                                                         "valid": 4 } } },
-                    "array_in_struct_param": { "array_in_struct_param_assign": 
+                    "array_in_struct_param": { "array_in_struct_param_assigns": 
                                                  { "qed": { "total": 1,
                                                             "valid": 1 },
                                                    "wp:main": { "total": 1,
                                                                 "valid": 1 } },
-                                               "array_in_struct_param_post_Pload2": 
+                                               "array_in_struct_param_ensures_Pload2": 
                                                  { "qed": { "total": 1,
                                                             "valid": 1 },
                                                    "wp:main": { "total": 1,
diff --git a/src/plugins/wp/tests/wp_hoare/dispatch_var2.i.0.report.json b/src/plugins/wp/tests/wp_hoare/dispatch_var2.i.0.report.json
index 3114d267431c447b8ade2a3b9670d8382ff923d7..94f2026a9e3162f83d877b905ec4a1bd61b39d0c 100644
--- a/src/plugins/wp/tests/wp_hoare/dispatch_var2.i.0.report.json
+++ b/src/plugins/wp/tests/wp_hoare/dispatch_var2.i.0.report.json
@@ -1,120 +1,133 @@
 { "wp:global": { "qed": { "total": 34, "valid": 34 },
                  "wp:main": { "total": 34, "valid": 34 } },
-  "wp:functions": { "reset": { "reset_assign": { "qed": { "total": 1,
-                                                          "valid": 1 },
-                                                 "wp:main": { "total": 1,
-                                                              "valid": 1 } },
-                               "reset_post": { "qed": { "total": 1,
-                                                        "valid": 1 },
-                                               "wp:main": { "total": 1,
-                                                            "valid": 1 } },
+  "wp:functions": { "reset": { "reset_assigns": { "qed": { "total": 1,
+                                                           "valid": 1 },
+                                                  "wp:main": { "total": 1,
+                                                               "valid": 1 } },
+                               "reset_ensures": { "qed": { "total": 1,
+                                                           "valid": 1 },
+                                                  "wp:main": { "total": 1,
+                                                               "valid": 1 } },
                                "wp:section": { "qed": { "total": 2,
                                                         "valid": 2 },
                                                "wp:main": { "total": 2,
                                                             "valid": 2 } } },
-                    "incr": { "incr_assign": { "qed": { "total": 1,
-                                                        "valid": 1 },
-                                               "wp:main": { "total": 1,
-                                                            "valid": 1 } },
-                              "incr_post": { "qed": { "total": 1,
-                                                      "valid": 1 },
-                                             "wp:main": { "total": 1,
-                                                          "valid": 1 } },
+                    "incr": { "incr_assigns": { "qed": { "total": 1,
+                                                         "valid": 1 },
+                                                "wp:main": { "total": 1,
+                                                             "valid": 1 } },
+                              "incr_ensures": { "qed": { "total": 1,
+                                                         "valid": 1 },
+                                                "wp:main": { "total": 1,
+                                                             "valid": 1 } },
                               "wp:section": { "qed": { "total": 2,
                                                        "valid": 2 },
                                               "wp:main": { "total": 2,
                                                            "valid": 2 } } },
-                    "load": { "load_assign": { "qed": { "total": 1,
-                                                        "valid": 1 },
-                                               "wp:main": { "total": 1,
-                                                            "valid": 1 } },
-                              "load_post": { "qed": { "total": 1,
-                                                      "valid": 1 },
-                                             "wp:main": { "total": 1,
-                                                          "valid": 1 } },
+                    "load": { "load_assigns": { "qed": { "total": 1,
+                                                         "valid": 1 },
+                                                "wp:main": { "total": 1,
+                                                             "valid": 1 } },
+                              "load_ensures": { "qed": { "total": 1,
+                                                         "valid": 1 },
+                                                "wp:main": { "total": 1,
+                                                             "valid": 1 } },
                               "wp:section": { "qed": { "total": 2,
                                                        "valid": 2 },
                                               "wp:main": { "total": 2,
                                                            "valid": 2 } } },
-                    "call_global": { "specialization_load_pre_at_call_global_stmt_11": 
-                                       { "qed": { "total": 1, "valid": 1 },
-                                         "wp:main": { "total": 1,
-                                                      "valid": 1 } },
-                                     "specialization_reset_pre_at_call_global_stmt_10": 
-                                       { "qed": { "total": 1, "valid": 1 },
-                                         "wp:main": { "total": 1,
-                                                      "valid": 1 } },
-                                     "call_global_assign": { "qed": { "total": 3,
-                                                                    "valid": 3 },
-                                                             "wp:main": 
-                                                               { "total": 3,
-                                                                 "valid": 3 } },
-                                     "call_global_post": { "qed": { "total": 1,
-                                                                    "valid": 1 },
-                                                           "wp:main": 
-                                                             { "total": 1,
-                                                               "valid": 1 } },
+                    "call_global": { "load_requires": { "qed": { "total": 1,
+                                                                 "valid": 1 },
+                                                        "wp:main": { "total": 1,
+                                                                    "valid": 1 } },
+                                     "reset_requires": { "qed": { "total": 1,
+                                                                  "valid": 1 },
+                                                         "wp:main": { "total": 1,
+                                                                    "valid": 1 } },
+                                     "call_global_assigns": { "qed": 
+                                                                { "total": 3,
+                                                                  "valid": 3 },
+                                                              "wp:main": 
+                                                                { "total": 3,
+                                                                  "valid": 3 } },
+                                     "call_global_ensures": { "qed": 
+                                                                { "total": 1,
+                                                                  "valid": 1 },
+                                                              "wp:main": 
+                                                                { "total": 1,
+                                                                  "valid": 1 } },
                                      "wp:section": { "qed": { "total": 6,
                                                               "valid": 6 },
                                                      "wp:main": { "total": 6,
                                                                   "valid": 6 } } },
-                    "call_param": { "specialization_load_pre_at_call_param_stmt_15": 
-                                      { "qed": { "total": 1, "valid": 1 },
-                                        "wp:main": { "total": 1, "valid": 1 } },
-                                    "specialization_reset_pre_at_call_param_stmt_14": 
-                                      { "qed": { "total": 1, "valid": 1 },
-                                        "wp:main": { "total": 1, "valid": 1 } },
-                                    "call_param_assign": { "qed": { "total": 5,
-                                                                    "valid": 5 },
-                                                           "wp:main": 
-                                                             { "total": 5,
-                                                               "valid": 5 } },
-                                    "call_param_post": { "qed": { "total": 1,
+                    "call_param": { "load_requires_2": { "qed": { "total": 1,
                                                                   "valid": 1 },
                                                          "wp:main": { "total": 1,
                                                                     "valid": 1 } },
+                                    "reset_requires_2": { "qed": { "total": 1,
+                                                                   "valid": 1 },
+                                                          "wp:main": 
+                                                            { "total": 1,
+                                                              "valid": 1 } },
+                                    "call_param_assigns": { "qed": { "total": 5,
+                                                                    "valid": 5 },
+                                                            "wp:main": 
+                                                              { "total": 5,
+                                                                "valid": 5 } },
+                                    "call_param_ensures": { "qed": { "total": 1,
+                                                                    "valid": 1 },
+                                                            "wp:main": 
+                                                              { "total": 1,
+                                                                "valid": 1 } },
                                     "wp:section": { "qed": { "total": 8,
                                                              "valid": 8 },
                                                     "wp:main": { "total": 8,
                                                                  "valid": 8 } } },
-                    "call_local": { "specialization_load_pre_at_call_local_stmt_19": 
-                                      { "qed": { "total": 1, "valid": 1 },
-                                        "wp:main": { "total": 1, "valid": 1 } },
-                                    "specialization_reset_pre_at_call_local_stmt_18": 
-                                      { "qed": { "total": 1, "valid": 1 },
-                                        "wp:main": { "total": 1, "valid": 1 } },
-                                    "call_local_assign": { "qed": { "total": 5,
-                                                                    "valid": 5 },
-                                                           "wp:main": 
-                                                             { "total": 5,
-                                                               "valid": 5 } },
-                                    "call_local_post": { "qed": { "total": 1,
+                    "call_local": { "load_requires_3": { "qed": { "total": 1,
                                                                   "valid": 1 },
                                                          "wp:main": { "total": 1,
                                                                     "valid": 1 } },
+                                    "reset_requires_3": { "qed": { "total": 1,
+                                                                   "valid": 1 },
+                                                          "wp:main": 
+                                                            { "total": 1,
+                                                              "valid": 1 } },
+                                    "call_local_assigns": { "qed": { "total": 5,
+                                                                    "valid": 5 },
+                                                            "wp:main": 
+                                                              { "total": 5,
+                                                                "valid": 5 } },
+                                    "call_local_ensures": { "qed": { "total": 1,
+                                                                    "valid": 1 },
+                                                            "wp:main": 
+                                                              { "total": 1,
+                                                                "valid": 1 } },
                                     "wp:section": { "qed": { "total": 8,
                                                              "valid": 8 },
                                                     "wp:main": { "total": 8,
                                                                  "valid": 8 } } },
-                    "call_param_ref": { "specialization_load_pre_at_call_param_ref_stmt_23": 
-                                          { "qed": { "total": 1, "valid": 1 },
-                                            "wp:main": { "total": 1,
-                                                         "valid": 1 } },
-                                        "specialization_reset_pre_at_call_param_ref_stmt_22": 
-                                          { "qed": { "total": 1, "valid": 1 },
-                                            "wp:main": { "total": 1,
-                                                         "valid": 1 } },
-                                        "call_param_ref_assign": { "qed": 
+                    "call_param_ref": { "load_requires_4": { "qed": { "total": 1,
+                                                                    "valid": 1 },
+                                                             "wp:main": 
+                                                               { "total": 1,
+                                                                 "valid": 1 } },
+                                        "reset_requires_4": { "qed": 
+                                                                { "total": 1,
+                                                                  "valid": 1 },
+                                                              "wp:main": 
+                                                                { "total": 1,
+                                                                  "valid": 1 } },
+                                        "call_param_ref_assigns": { "qed": 
                                                                     { "total": 3,
                                                                     "valid": 3 },
-                                                                   "wp:main": 
+                                                                    "wp:main": 
                                                                     { "total": 3,
                                                                     "valid": 3 } },
-                                        "call_param_ref_post": { "qed": 
-                                                                   { "total": 1,
+                                        "call_param_ref_ensures": { "qed": 
+                                                                    { "total": 1,
                                                                     "valid": 1 },
-                                                                 "wp:main": 
-                                                                   { "total": 1,
+                                                                    "wp:main": 
+                                                                    { "total": 1,
                                                                     "valid": 1 } },
                                         "wp:section": { "qed": { "total": 6,
                                                                  "valid": 6 },
diff --git a/src/plugins/wp/tests/wp_hoare/dispatch_var2.i.1.report.json b/src/plugins/wp/tests/wp_hoare/dispatch_var2.i.1.report.json
index 3114d267431c447b8ade2a3b9670d8382ff923d7..94f2026a9e3162f83d877b905ec4a1bd61b39d0c 100644
--- a/src/plugins/wp/tests/wp_hoare/dispatch_var2.i.1.report.json
+++ b/src/plugins/wp/tests/wp_hoare/dispatch_var2.i.1.report.json
@@ -1,120 +1,133 @@
 { "wp:global": { "qed": { "total": 34, "valid": 34 },
                  "wp:main": { "total": 34, "valid": 34 } },
-  "wp:functions": { "reset": { "reset_assign": { "qed": { "total": 1,
-                                                          "valid": 1 },
-                                                 "wp:main": { "total": 1,
-                                                              "valid": 1 } },
-                               "reset_post": { "qed": { "total": 1,
-                                                        "valid": 1 },
-                                               "wp:main": { "total": 1,
-                                                            "valid": 1 } },
+  "wp:functions": { "reset": { "reset_assigns": { "qed": { "total": 1,
+                                                           "valid": 1 },
+                                                  "wp:main": { "total": 1,
+                                                               "valid": 1 } },
+                               "reset_ensures": { "qed": { "total": 1,
+                                                           "valid": 1 },
+                                                  "wp:main": { "total": 1,
+                                                               "valid": 1 } },
                                "wp:section": { "qed": { "total": 2,
                                                         "valid": 2 },
                                                "wp:main": { "total": 2,
                                                             "valid": 2 } } },
-                    "incr": { "incr_assign": { "qed": { "total": 1,
-                                                        "valid": 1 },
-                                               "wp:main": { "total": 1,
-                                                            "valid": 1 } },
-                              "incr_post": { "qed": { "total": 1,
-                                                      "valid": 1 },
-                                             "wp:main": { "total": 1,
-                                                          "valid": 1 } },
+                    "incr": { "incr_assigns": { "qed": { "total": 1,
+                                                         "valid": 1 },
+                                                "wp:main": { "total": 1,
+                                                             "valid": 1 } },
+                              "incr_ensures": { "qed": { "total": 1,
+                                                         "valid": 1 },
+                                                "wp:main": { "total": 1,
+                                                             "valid": 1 } },
                               "wp:section": { "qed": { "total": 2,
                                                        "valid": 2 },
                                               "wp:main": { "total": 2,
                                                            "valid": 2 } } },
-                    "load": { "load_assign": { "qed": { "total": 1,
-                                                        "valid": 1 },
-                                               "wp:main": { "total": 1,
-                                                            "valid": 1 } },
-                              "load_post": { "qed": { "total": 1,
-                                                      "valid": 1 },
-                                             "wp:main": { "total": 1,
-                                                          "valid": 1 } },
+                    "load": { "load_assigns": { "qed": { "total": 1,
+                                                         "valid": 1 },
+                                                "wp:main": { "total": 1,
+                                                             "valid": 1 } },
+                              "load_ensures": { "qed": { "total": 1,
+                                                         "valid": 1 },
+                                                "wp:main": { "total": 1,
+                                                             "valid": 1 } },
                               "wp:section": { "qed": { "total": 2,
                                                        "valid": 2 },
                                               "wp:main": { "total": 2,
                                                            "valid": 2 } } },
-                    "call_global": { "specialization_load_pre_at_call_global_stmt_11": 
-                                       { "qed": { "total": 1, "valid": 1 },
-                                         "wp:main": { "total": 1,
-                                                      "valid": 1 } },
-                                     "specialization_reset_pre_at_call_global_stmt_10": 
-                                       { "qed": { "total": 1, "valid": 1 },
-                                         "wp:main": { "total": 1,
-                                                      "valid": 1 } },
-                                     "call_global_assign": { "qed": { "total": 3,
-                                                                    "valid": 3 },
-                                                             "wp:main": 
-                                                               { "total": 3,
-                                                                 "valid": 3 } },
-                                     "call_global_post": { "qed": { "total": 1,
-                                                                    "valid": 1 },
-                                                           "wp:main": 
-                                                             { "total": 1,
-                                                               "valid": 1 } },
+                    "call_global": { "load_requires": { "qed": { "total": 1,
+                                                                 "valid": 1 },
+                                                        "wp:main": { "total": 1,
+                                                                    "valid": 1 } },
+                                     "reset_requires": { "qed": { "total": 1,
+                                                                  "valid": 1 },
+                                                         "wp:main": { "total": 1,
+                                                                    "valid": 1 } },
+                                     "call_global_assigns": { "qed": 
+                                                                { "total": 3,
+                                                                  "valid": 3 },
+                                                              "wp:main": 
+                                                                { "total": 3,
+                                                                  "valid": 3 } },
+                                     "call_global_ensures": { "qed": 
+                                                                { "total": 1,
+                                                                  "valid": 1 },
+                                                              "wp:main": 
+                                                                { "total": 1,
+                                                                  "valid": 1 } },
                                      "wp:section": { "qed": { "total": 6,
                                                               "valid": 6 },
                                                      "wp:main": { "total": 6,
                                                                   "valid": 6 } } },
-                    "call_param": { "specialization_load_pre_at_call_param_stmt_15": 
-                                      { "qed": { "total": 1, "valid": 1 },
-                                        "wp:main": { "total": 1, "valid": 1 } },
-                                    "specialization_reset_pre_at_call_param_stmt_14": 
-                                      { "qed": { "total": 1, "valid": 1 },
-                                        "wp:main": { "total": 1, "valid": 1 } },
-                                    "call_param_assign": { "qed": { "total": 5,
-                                                                    "valid": 5 },
-                                                           "wp:main": 
-                                                             { "total": 5,
-                                                               "valid": 5 } },
-                                    "call_param_post": { "qed": { "total": 1,
+                    "call_param": { "load_requires_2": { "qed": { "total": 1,
                                                                   "valid": 1 },
                                                          "wp:main": { "total": 1,
                                                                     "valid": 1 } },
+                                    "reset_requires_2": { "qed": { "total": 1,
+                                                                   "valid": 1 },
+                                                          "wp:main": 
+                                                            { "total": 1,
+                                                              "valid": 1 } },
+                                    "call_param_assigns": { "qed": { "total": 5,
+                                                                    "valid": 5 },
+                                                            "wp:main": 
+                                                              { "total": 5,
+                                                                "valid": 5 } },
+                                    "call_param_ensures": { "qed": { "total": 1,
+                                                                    "valid": 1 },
+                                                            "wp:main": 
+                                                              { "total": 1,
+                                                                "valid": 1 } },
                                     "wp:section": { "qed": { "total": 8,
                                                              "valid": 8 },
                                                     "wp:main": { "total": 8,
                                                                  "valid": 8 } } },
-                    "call_local": { "specialization_load_pre_at_call_local_stmt_19": 
-                                      { "qed": { "total": 1, "valid": 1 },
-                                        "wp:main": { "total": 1, "valid": 1 } },
-                                    "specialization_reset_pre_at_call_local_stmt_18": 
-                                      { "qed": { "total": 1, "valid": 1 },
-                                        "wp:main": { "total": 1, "valid": 1 } },
-                                    "call_local_assign": { "qed": { "total": 5,
-                                                                    "valid": 5 },
-                                                           "wp:main": 
-                                                             { "total": 5,
-                                                               "valid": 5 } },
-                                    "call_local_post": { "qed": { "total": 1,
+                    "call_local": { "load_requires_3": { "qed": { "total": 1,
                                                                   "valid": 1 },
                                                          "wp:main": { "total": 1,
                                                                     "valid": 1 } },
+                                    "reset_requires_3": { "qed": { "total": 1,
+                                                                   "valid": 1 },
+                                                          "wp:main": 
+                                                            { "total": 1,
+                                                              "valid": 1 } },
+                                    "call_local_assigns": { "qed": { "total": 5,
+                                                                    "valid": 5 },
+                                                            "wp:main": 
+                                                              { "total": 5,
+                                                                "valid": 5 } },
+                                    "call_local_ensures": { "qed": { "total": 1,
+                                                                    "valid": 1 },
+                                                            "wp:main": 
+                                                              { "total": 1,
+                                                                "valid": 1 } },
                                     "wp:section": { "qed": { "total": 8,
                                                              "valid": 8 },
                                                     "wp:main": { "total": 8,
                                                                  "valid": 8 } } },
-                    "call_param_ref": { "specialization_load_pre_at_call_param_ref_stmt_23": 
-                                          { "qed": { "total": 1, "valid": 1 },
-                                            "wp:main": { "total": 1,
-                                                         "valid": 1 } },
-                                        "specialization_reset_pre_at_call_param_ref_stmt_22": 
-                                          { "qed": { "total": 1, "valid": 1 },
-                                            "wp:main": { "total": 1,
-                                                         "valid": 1 } },
-                                        "call_param_ref_assign": { "qed": 
+                    "call_param_ref": { "load_requires_4": { "qed": { "total": 1,
+                                                                    "valid": 1 },
+                                                             "wp:main": 
+                                                               { "total": 1,
+                                                                 "valid": 1 } },
+                                        "reset_requires_4": { "qed": 
+                                                                { "total": 1,
+                                                                  "valid": 1 },
+                                                              "wp:main": 
+                                                                { "total": 1,
+                                                                  "valid": 1 } },
+                                        "call_param_ref_assigns": { "qed": 
                                                                     { "total": 3,
                                                                     "valid": 3 },
-                                                                   "wp:main": 
+                                                                    "wp:main": 
                                                                     { "total": 3,
                                                                     "valid": 3 } },
-                                        "call_param_ref_post": { "qed": 
-                                                                   { "total": 1,
+                                        "call_param_ref_ensures": { "qed": 
+                                                                    { "total": 1,
                                                                     "valid": 1 },
-                                                                 "wp:main": 
-                                                                   { "total": 1,
+                                                                    "wp:main": 
+                                                                    { "total": 1,
                                                                     "valid": 1 } },
                                         "wp:section": { "qed": { "total": 6,
                                                                  "valid": 6 },
diff --git a/src/plugins/wp/tests/wp_hoare/isHoare.i.0.report.json b/src/plugins/wp/tests/wp_hoare/isHoare.i.0.report.json
index e871e1e248100ceb7b7c8494701ee38faf3f01a5..0455cf705ec214e88499f4c30723f07b92edb11a 100644
--- a/src/plugins/wp/tests/wp_hoare/isHoare.i.0.report.json
+++ b/src/plugins/wp/tests/wp_hoare/isHoare.i.0.report.json
@@ -1,6 +1,6 @@
 { "wp:global": { "qed": { "total": 1, "valid": 1 },
                  "wp:main": { "total": 1, "valid": 1 } },
-  "wp:functions": { "cmp_invalid_addr_as_int": { "cmp_invalid_addr_as_int_post_ok": 
+  "wp:functions": { "cmp_invalid_addr_as_int": { "cmp_invalid_addr_as_int_ensures_ok": 
                                                    { "qed": { "total": 1,
                                                               "valid": 1 },
                                                      "wp:main": { "total": 1,
diff --git a/src/plugins/wp/tests/wp_hoare/logicarr.i.0.report.json b/src/plugins/wp/tests/wp_hoare/logicarr.i.0.report.json
index d0320c3b7a513fffbbf48233832fa50de01c3f17..1b506f1c00b11fc3342a972f785d4472d9702fd8 100644
--- a/src/plugins/wp/tests/wp_hoare/logicarr.i.0.report.json
+++ b/src/plugins/wp/tests/wp_hoare/logicarr.i.0.report.json
@@ -1,23 +1,23 @@
 { "wp:global": { "alt-ergo": { "total": 3, "valid": 3, "rank": 17 },
                  "wp:main": { "total": 3, "valid": 3, "rank": 17 } },
-  "wp:functions": { "job": { "job_post_DUM": { "alt-ergo": { "total": 1,
-                                                             "valid": 1,
-                                                             "rank": 17 },
-                                               "wp:main": { "total": 1,
-                                                            "valid": 1,
-                                                            "rank": 17 } },
-                             "job_post_ARR": { "alt-ergo": { "total": 1,
-                                                             "valid": 1,
-                                                             "rank": 17 },
-                                               "wp:main": { "total": 1,
-                                                            "valid": 1,
-                                                            "rank": 17 } },
-                             "job_post_PTR": { "alt-ergo": { "total": 1,
-                                                             "valid": 1,
-                                                             "rank": 15 },
-                                               "wp:main": { "total": 1,
-                                                            "valid": 1,
-                                                            "rank": 15 } },
+  "wp:functions": { "job": { "job_ensures_DUM": { "alt-ergo": { "total": 1,
+                                                                "valid": 1,
+                                                                "rank": 17 },
+                                                  "wp:main": { "total": 1,
+                                                               "valid": 1,
+                                                               "rank": 17 } },
+                             "job_ensures_ARR": { "alt-ergo": { "total": 1,
+                                                                "valid": 1,
+                                                                "rank": 17 },
+                                                  "wp:main": { "total": 1,
+                                                               "valid": 1,
+                                                               "rank": 17 } },
+                             "job_ensures_PTR": { "alt-ergo": { "total": 1,
+                                                                "valid": 1,
+                                                                "rank": 16 },
+                                                  "wp:main": { "total": 1,
+                                                               "valid": 1,
+                                                               "rank": 16 } },
                              "wp:section": { "alt-ergo": { "total": 3,
                                                            "valid": 3,
                                                            "rank": 17 },
diff --git a/src/plugins/wp/tests/wp_hoare/logicref.i.0.report.json b/src/plugins/wp/tests/wp_hoare/logicref.i.0.report.json
index 4156f842cc6d45e448fab3db26b60c6ae073de6c..d145ce7d5dae7345d0301367c7b0ed318d11138e 100644
--- a/src/plugins/wp/tests/wp_hoare/logicref.i.0.report.json
+++ b/src/plugins/wp/tests/wp_hoare/logicref.i.0.report.json
@@ -1,36 +1,39 @@
-{ "wp:global": { "alt-ergo": { "total": 1, "valid": 1, "rank": 20 },
+{ "wp:global": { "alt-ergo": { "total": 1, "valid": 1, "rank": 21 },
                  "qed": { "total": 4, "valid": 4 },
-                 "wp:main": { "total": 5, "valid": 5, "rank": 20 } },
+                 "wp:main": { "total": 5, "valid": 5, "rank": 21 } },
   "wp:functions": { "fvrange_n": { "fvrange_n_assert": { "alt-ergo": 
                                                            { "total": 1,
                                                              "valid": 1,
-                                                             "rank": 20 },
+                                                             "rank": 21 },
                                                          "wp:main": { "total": 1,
                                                                     "valid": 1,
-                                                                    "rank": 20 } },
-                                   "fvrange_n_assign": { "qed": { "total": 1,
-                                                                  "valid": 1 },
-                                                         "wp:main": { "total": 1,
-                                                                    "valid": 1 } },
-                                   "fvrange_n_post": { "qed": { "total": 1,
-                                                                "valid": 1 },
-                                                       "wp:main": { "total": 1,
-                                                                    "valid": 1 } },
+                                                                    "rank": 21 } },
+                                   "fvrange_n_assigns": { "qed": { "total": 1,
+                                                                   "valid": 1 },
+                                                          "wp:main": 
+                                                            { "total": 1,
+                                                              "valid": 1 } },
+                                   "fvrange_n_ensures": { "qed": { "total": 1,
+                                                                   "valid": 1 },
+                                                          "wp:main": 
+                                                            { "total": 1,
+                                                              "valid": 1 } },
                                    "wp:section": { "alt-ergo": { "total": 1,
                                                                  "valid": 1,
-                                                                 "rank": 20 },
+                                                                 "rank": 21 },
                                                    "qed": { "total": 2,
                                                             "valid": 2 },
                                                    "wp:main": { "total": 3,
                                                                 "valid": 3,
-                                                                "rank": 20 } } },
-                    "gcd": { "gcd_assign": { "qed": { "total": 1,
-                                                      "valid": 1 },
-                                             "wp:main": { "total": 1,
-                                                          "valid": 1 } },
-                             "gcd_post": { "qed": { "total": 1, "valid": 1 },
-                                           "wp:main": { "total": 1,
-                                                        "valid": 1 } },
+                                                                "rank": 21 } } },
+                    "gcd": { "gcd_assigns": { "qed": { "total": 1,
+                                                       "valid": 1 },
+                                              "wp:main": { "total": 1,
+                                                           "valid": 1 } },
+                             "gcd_ensures": { "qed": { "total": 1,
+                                                       "valid": 1 },
+                                              "wp:main": { "total": 1,
+                                                           "valid": 1 } },
                              "wp:section": { "qed": { "total": 2,
                                                       "valid": 2 },
                                              "wp:main": { "total": 2,
diff --git a/src/plugins/wp/tests/wp_hoare/logicref_simple.i.0.report.json b/src/plugins/wp/tests/wp_hoare/logicref_simple.i.0.report.json
index b221a03eb88df353b473d8299230198a0e56f976..cf9352bbb5ffd0fb2e0b4746fb4fe2bd1154126b 100644
--- a/src/plugins/wp/tests/wp_hoare/logicref_simple.i.0.report.json
+++ b/src/plugins/wp/tests/wp_hoare/logicref_simple.i.0.report.json
@@ -1,16 +1,16 @@
-{ "wp:global": { "alt-ergo": { "total": 4, "valid": 4, "rank": 7 },
+{ "wp:global": { "alt-ergo": { "total": 4, "valid": 4, "rank": 8 },
                  "qed": { "total": 5, "valid": 5 },
-                 "wp:main": { "total": 9, "valid": 9, "rank": 7 } },
-  "wp:functions": { "fsimple": { "fsimple_assign": { "qed": { "total": 1,
-                                                              "valid": 1 },
-                                                     "wp:main": { "total": 1,
-                                                                  "valid": 1 } },
-                                 "fsimple_post": { "alt-ergo": { "total": 1,
-                                                                 "valid": 1,
-                                                                 "rank": 3 },
-                                                   "wp:main": { "total": 1,
-                                                                "valid": 1,
-                                                                "rank": 3 } },
+                 "wp:main": { "total": 9, "valid": 9, "rank": 8 } },
+  "wp:functions": { "fsimple": { "fsimple_assigns": { "qed": { "total": 1,
+                                                               "valid": 1 },
+                                                      "wp:main": { "total": 1,
+                                                                   "valid": 1 } },
+                                 "fsimple_ensures": { "alt-ergo": { "total": 1,
+                                                                    "valid": 1,
+                                                                    "rank": 3 },
+                                                      "wp:main": { "total": 1,
+                                                                   "valid": 1,
+                                                                   "rank": 3 } },
                                  "wp:section": { "alt-ergo": { "total": 1,
                                                                "valid": 1,
                                                                "rank": 3 },
@@ -19,46 +19,49 @@
                                                  "wp:main": { "total": 2,
                                                               "valid": 2,
                                                               "rank": 3 } } },
-                    "fsimple_array": { "fsimple_array_assign": { "qed": 
-                                                                   { "total": 1,
+                    "fsimple_array": { "fsimple_array_assigns": { "qed": 
+                                                                    { "total": 1,
                                                                     "valid": 1 },
-                                                                 "wp:main": 
-                                                                   { "total": 1,
+                                                                  "wp:main": 
+                                                                    { "total": 1,
                                                                     "valid": 1 } },
-                                       "fsimple_array_post": { "alt-ergo": 
-                                                                 { "total": 1,
-                                                                   "valid": 1,
-                                                                   "rank": 7 },
-                                                               "wp:main": 
-                                                                 { "total": 1,
-                                                                   "valid": 1,
-                                                                   "rank": 7 } },
+                                       "fsimple_array_ensures": { "alt-ergo": 
+                                                                    { "total": 1,
+                                                                    "valid": 1,
+                                                                    "rank": 8 },
+                                                                  "wp:main": 
+                                                                    { "total": 1,
+                                                                    "valid": 1,
+                                                                    "rank": 8 } },
                                        "wp:section": { "alt-ergo": { "total": 1,
                                                                     "valid": 1,
-                                                                    "rank": 7 },
+                                                                    "rank": 8 },
                                                        "qed": { "total": 1,
                                                                 "valid": 1 },
                                                        "wp:main": { "total": 2,
                                                                     "valid": 2,
-                                                                    "rank": 7 } } },
-                    "ftwo_star": { "ftwo_star_assign": { "qed": { "total": 1,
-                                                                  "valid": 1 },
-                                                         "wp:main": { "total": 1,
-                                                                    "valid": 1 } },
-                                   "ftwo_star_post": { "alt-ergo": { "total": 1,
-                                                                    "valid": 1,
-                                                                    "rank": 3 },
-                                                       "wp:main": { "total": 1,
-                                                                    "valid": 1,
-                                                                    "rank": 3 } },
+                                                                    "rank": 8 } } },
+                    "ftwo_star": { "ftwo_star_assigns": { "qed": { "total": 1,
+                                                                   "valid": 1 },
+                                                          "wp:main": 
+                                                            { "total": 1,
+                                                              "valid": 1 } },
+                                   "ftwo_star_ensures": { "alt-ergo": 
+                                                            { "total": 1,
+                                                              "valid": 1,
+                                                              "rank": 4 },
+                                                          "wp:main": 
+                                                            { "total": 1,
+                                                              "valid": 1,
+                                                              "rank": 4 } },
                                    "wp:section": { "alt-ergo": { "total": 1,
                                                                  "valid": 1,
-                                                                 "rank": 3 },
+                                                                 "rank": 4 },
                                                    "qed": { "total": 1,
                                                             "valid": 1 },
                                                    "wp:main": { "total": 2,
                                                                 "valid": 2,
-                                                                "rank": 3 } } },
+                                                                "rank": 4 } } },
                     "fvpositive": { "fvpositive_assert_OK": { "alt-ergo": 
                                                                 { "total": 1,
                                                                   "valid": 1,
@@ -67,15 +70,16 @@
                                                                 { "total": 1,
                                                                   "valid": 1,
                                                                   "rank": 2 } },
-                                    "fvpositive_assign": { "qed": { "total": 1,
+                                    "fvpositive_assigns": { "qed": { "total": 1,
                                                                     "valid": 1 },
-                                                           "wp:main": 
-                                                             { "total": 1,
-                                                               "valid": 1 } },
-                                    "fvpositive_post": { "qed": { "total": 1,
-                                                                  "valid": 1 },
-                                                         "wp:main": { "total": 1,
-                                                                    "valid": 1 } },
+                                                            "wp:main": 
+                                                              { "total": 1,
+                                                                "valid": 1 } },
+                                    "fvpositive_ensures": { "qed": { "total": 1,
+                                                                    "valid": 1 },
+                                                            "wp:main": 
+                                                              { "total": 1,
+                                                                "valid": 1 } },
                                     "wp:section": { "alt-ergo": { "total": 1,
                                                                   "valid": 1,
                                                                   "rank": 2 },
diff --git a/src/plugins/wp/tests/wp_hoare/oracle_qualif/byref.0.res.oracle b/src/plugins/wp/tests/wp_hoare/oracle_qualif/byref.0.res.oracle
index 7cd3266acecc64c7cca9ffe807c6fe06c3bca170..bfdcf78517ee881e901469d2e70c43bc0d3b37db 100644
--- a/src/plugins/wp/tests/wp_hoare/oracle_qualif/byref.0.res.oracle
+++ b/src/plugins/wp/tests/wp_hoare/oracle_qualif/byref.0.res.oracle
@@ -4,18 +4,18 @@
 [wp] Loading driver 'share/wp.driver'
 [wp] Warning: Missing RTE guards
 [wp] 12 goals scheduled
-[wp] [Qed] Goal typed_f_post : Valid
-[wp] [Qed] Goal typed_f_assign : Valid
-[wp] [Qed] Goal typed_formal_post : Valid
-[wp] [Qed] Goal typed_formal_call_f_pre : Valid
-[wp] [Qed] Goal typed_global_post : Valid
-[wp] [Qed] Goal typed_global_call_f_pre : Valid
-[wp] [Qed] Goal typed_local_post : Valid
-[wp] [Qed] Goal typed_local_call_f_pre : Valid
-[wp] [Qed] Goal typed_pointer_post : Valid
-[wp] [Qed] Goal typed_pointer_call_f_pre : Valid
-[wp] [Qed] Goal typed_wrong_without_ref_post : Valid
-[wp] [Alt-Ergo] Goal typed_wrong_without_ref_call_f_pre : Unknown
+[wp] [Qed] Goal typed_f_ensures : Valid
+[wp] [Qed] Goal typed_f_assigns : Valid
+[wp] [Qed] Goal typed_formal_ensures : Valid
+[wp] [Qed] Goal typed_formal_call_f_requires : Valid
+[wp] [Qed] Goal typed_global_ensures : Valid
+[wp] [Qed] Goal typed_global_call_f_requires : Valid
+[wp] [Qed] Goal typed_local_ensures : Valid
+[wp] [Qed] Goal typed_local_call_f_requires : Valid
+[wp] [Qed] Goal typed_pointer_ensures : Valid
+[wp] [Qed] Goal typed_pointer_call_f_requires : Valid
+[wp] [Qed] Goal typed_wrong_without_ref_ensures : Valid
+[wp] [Alt-Ergo] Goal typed_wrong_without_ref_call_f_requires : Unknown
 [wp] Proved goals:   11 / 12
   Qed:            11 
   Alt-Ergo:        0  (unknown: 1)
diff --git a/src/plugins/wp/tests/wp_hoare/oracle_qualif/byref.1.res.oracle b/src/plugins/wp/tests/wp_hoare/oracle_qualif/byref.1.res.oracle
index d324a299b64cf870ec61e6691c6ca8100df09f67..f6c7d899a1f37a9561682e1ec34d18b4ef2cbde9 100644
--- a/src/plugins/wp/tests/wp_hoare/oracle_qualif/byref.1.res.oracle
+++ b/src/plugins/wp/tests/wp_hoare/oracle_qualif/byref.1.res.oracle
@@ -4,18 +4,18 @@
 [wp] Loading driver 'share/wp.driver'
 [wp] Warning: Missing RTE guards
 [wp] 12 goals scheduled
-[wp] [Qed] Goal typed_ref_f_post : Valid
-[wp] [Qed] Goal typed_ref_f_assign : Valid
-[wp] [Qed] Goal typed_ref_formal_post : Valid
-[wp] [Qed] Goal typed_ref_formal_call_f_pre : Valid
-[wp] [Qed] Goal typed_ref_global_post : Valid
-[wp] [Qed] Goal typed_ref_global_call_f_pre : Valid
-[wp] [Qed] Goal typed_ref_local_post : Valid
-[wp] [Qed] Goal typed_ref_local_call_f_pre : Valid
-[wp] [Qed] Goal typed_ref_pointer_post : Valid
-[wp] [Qed] Goal typed_ref_pointer_call_f_pre : Valid
-[wp] [Qed] Goal typed_ref_wrong_without_ref_post : Valid
-[wp] [Qed] Goal typed_ref_wrong_without_ref_call_f_pre : Valid
+[wp] [Qed] Goal typed_ref_f_ensures : Valid
+[wp] [Qed] Goal typed_ref_f_assigns : Valid
+[wp] [Qed] Goal typed_ref_formal_ensures : Valid
+[wp] [Qed] Goal typed_ref_formal_call_f_requires : Valid
+[wp] [Qed] Goal typed_ref_global_ensures : Valid
+[wp] [Qed] Goal typed_ref_global_call_f_requires : Valid
+[wp] [Qed] Goal typed_ref_local_ensures : Valid
+[wp] [Qed] Goal typed_ref_local_call_f_requires : Valid
+[wp] [Qed] Goal typed_ref_pointer_ensures : Valid
+[wp] [Qed] Goal typed_ref_pointer_call_f_requires : Valid
+[wp] [Qed] Goal typed_ref_wrong_without_ref_ensures : Valid
+[wp] [Qed] Goal typed_ref_wrong_without_ref_call_f_requires : Valid
 [wp] Proved goals:   12 / 12
   Qed:            12
 [wp] Report 'tests/wp_hoare/byref.i.1.report.json'
diff --git a/src/plugins/wp/tests/wp_hoare/oracle_qualif/dispatch_var.res.oracle b/src/plugins/wp/tests/wp_hoare/oracle_qualif/dispatch_var.res.oracle
index 1e532b7bfe9437d223ff5d0716ee81b6ad65add2..9f3c90d052e8a448ea99c80edf454c9ae947581f 100644
--- a/src/plugins/wp/tests/wp_hoare/oracle_qualif/dispatch_var.res.oracle
+++ b/src/plugins/wp/tests/wp_hoare/oracle_qualif/dispatch_var.res.oracle
@@ -4,84 +4,84 @@
 [wp] Loading driver 'share/wp.driver'
 [wp] Warning: Missing RTE guards
 [wp] 78 goals scheduled
-[wp] [Qed] Goal typed_ref_array_in_struct_param_post_Pload2 : Valid
-[wp] [Qed] Goal typed_ref_array_in_struct_param_assign : Valid
-[wp] [Qed] Goal typed_ref_call_no_ref_bd_post_Mem_n5_nr6 : Valid
-[wp] [Qed] Goal typed_ref_call_no_ref_bd_assign_exit_part1 : Valid
-[wp] [Qed] Goal typed_ref_call_no_ref_bd_assign_exit_part2 : Valid
-[wp] [Qed] Goal typed_ref_call_no_ref_bd_assign_exit_part3 : Valid
-[wp] [Qed] Goal typed_ref_call_no_ref_bd_assign_normal_part1 : Valid
-[wp] [Qed] Goal typed_ref_call_no_ref_bd_assign_normal_part2 : Valid
-[wp] [Qed] Goal typed_ref_call_no_ref_bd_assign_normal_part3 : Valid
-[wp] [Qed] Goal typed_ref_call_no_ref_bd_assign_normal_part4 : Valid
-[wp] [Qed] Goal typed_ref_call_no_ref_bd_assign_normal_part5 : Valid
-[wp] [Qed] Goal typed_ref_call_ref_bd_post_Ref_r2 : Valid
-[wp] [Qed] Goal typed_ref_call_ref_bd_assign_exit : Valid
-[wp] [Qed] Goal typed_ref_call_ref_bd_assign_normal_part1 : Valid
-[wp] [Qed] Goal typed_ref_call_ref_bd_assign_normal_part2 : Valid
-[wp] [Qed] Goal typed_ref_call_ref_bd2_post_Mem_n2 : Valid
-[wp] [Qed] Goal typed_ref_call_ref_bd2_assign_exit_part1 : Valid
-[wp] [Qed] Goal typed_ref_call_ref_bd2_assign_exit_part2 : Valid
-[wp] [Qed] Goal typed_ref_call_ref_bd2_assign_normal_part1 : Valid
-[wp] [Qed] Goal typed_ref_call_ref_bd2_assign_normal_part2 : Valid
-[wp] [Qed] Goal typed_ref_call_ref_bd2_assign_normal_part3 : Valid
-[wp] [Qed] Goal typed_ref_call_ref_bd2_assign_normal_part4 : Valid
-[wp] [Qed] Goal typed_ref_call_ref_bd2_assign_normal_part5 : Valid
-[wp] [Qed] Goal typed_ref_call_ref_ctr_post_Ref_r1 : Valid
-[wp] [Qed] Goal typed_ref_call_ref_ctr_assign_exit : Valid
-[wp] [Qed] Goal typed_ref_call_ref_ctr_assign_normal_part1 : Valid
-[wp] [Qed] Goal typed_ref_call_ref_ctr_assign_normal_part2 : Valid
-[wp] [Qed] Goal typed_ref_call_ref_ctr2_post_Mem_n1 : Valid
-[wp] [Qed] Goal typed_ref_call_ref_ctr2_assign_exit_part1 : Valid
-[wp] [Qed] Goal typed_ref_call_ref_ctr2_assign_exit_part2 : Valid
-[wp] [Qed] Goal typed_ref_call_ref_ctr2_assign_normal_part1 : Valid
-[wp] [Qed] Goal typed_ref_call_ref_ctr2_assign_normal_part2 : Valid
-[wp] [Qed] Goal typed_ref_call_ref_ctr2_assign_normal_part3 : Valid
-[wp] [Qed] Goal typed_ref_call_ref_ctr2_assign_normal_part4 : Valid
-[wp] [Qed] Goal typed_ref_call_ref_ctr2_assign_normal_part5 : Valid
-[wp] [Qed] Goal typed_ref_call_ref_ctr_nr_post_R_R_R : Valid
-[wp] [Qed] Goal typed_ref_call_ref_ctr_nr_post_R_R_R_2 : Valid
-[wp] [Qed] Goal typed_ref_call_ref_ctr_nr_assign_exit_part1 : Valid
-[wp] [Qed] Goal typed_ref_call_ref_ctr_nr_assign_exit_part2 : Valid
-[wp] [Qed] Goal typed_ref_call_ref_ctr_nr_assign_exit_part3 : Valid
-[wp] [Qed] Goal typed_ref_call_ref_ctr_nr_assign_normal_part1 : Valid
-[wp] [Qed] Goal typed_ref_call_ref_ctr_nr_assign_normal_part2 : Valid
-[wp] [Qed] Goal typed_ref_call_ref_ctr_nr_assign_normal_part3 : Valid
-[wp] [Qed] Goal typed_ref_call_ref_ctr_nr_assign_normal_part4 : Valid
-[wp] [Qed] Goal typed_ref_call_ref_ctr_nr_call_ref_ctr_nr_pre : Valid
-[wp] [Qed] Goal typed_ref_call_ref_ctr_nstars_post : Valid
-[wp] [Qed] Goal typed_ref_call_ref_ctr_nstars_assign_exit_part1 : Valid
-[wp] [Qed] Goal typed_ref_call_ref_ctr_nstars_assign_exit_part2 : Valid
-[wp] [Qed] Goal typed_ref_call_ref_ctr_nstars_assign_normal_part1 : Valid
-[wp] [Qed] Goal typed_ref_call_ref_ctr_nstars_assign_normal_part2 : Valid
-[wp] [Qed] Goal typed_ref_call_ref_ctr_nstars_assign_normal_part3 : Valid
-[wp] [Qed] Goal typed_ref_call_ref_valid_post_R7_N4 : Valid
-[wp] [Qed] Goal typed_ref_call_ref_valid_assign_exit_part1 : Valid
-[wp] [Qed] Goal typed_ref_call_ref_valid_assign_exit_part2 : Valid
-[wp] [Qed] Goal typed_ref_call_ref_valid_assign_exit_part3 : Valid
-[wp] [Qed] Goal typed_ref_call_ref_valid_assign_normal_part1 : Valid
-[wp] [Qed] Goal typed_ref_call_ref_valid_assign_normal_part2 : Valid
-[wp] [Qed] Goal typed_ref_call_ref_valid_assign_normal_part3 : Valid
-[wp] [Qed] Goal typed_ref_call_ref_valid_assign_normal_part4 : Valid
-[wp] [Qed] Goal typed_ref_call_ref_valid_assign_normal_part5 : Valid
-[wp] [Qed] Goal typed_ref_call_ref_valid_call_ref_valid_pre : Valid
-[wp] [Qed] Goal typed_ref_call_ref_valid_call_ref_valid_pre_2 : Valid
-[wp] [Qed] Goal typed_ref_call_two_ref_post : Valid
-[wp] [Qed] Goal typed_ref_call_two_ref_assign_exit_part1 : Valid
-[wp] [Qed] Goal typed_ref_call_two_ref_assign_exit_part2 : Valid
-[wp] [Qed] Goal typed_ref_call_two_ref_assign_normal_part1 : Valid
-[wp] [Qed] Goal typed_ref_call_two_ref_assign_normal_part2 : Valid
-[wp] [Qed] Goal typed_ref_call_two_ref_assign_normal_part3 : Valid
-[wp] [Qed] Goal typed_ref_call_two_ref_assign_normal_part4 : Valid
-[wp] [Qed] Goal typed_ref_g_post : Valid
-[wp] [Qed] Goal typed_ref_g_assign_exit : Valid
-[wp] [Qed] Goal typed_ref_g_assign_normal_part1 : Valid
-[wp] [Qed] Goal typed_ref_g_assign_normal_part2 : Valid
-[wp] [Qed] Goal typed_ref_no_ref_bd_post : Valid
-[wp] [Qed] Goal typed_ref_no_ref_bd_assign_part1 : Valid
-[wp] [Qed] Goal typed_ref_no_ref_bd_assign_part2 : Valid
-[wp] [Qed] Goal typed_ref_ref_bd_post : Valid
-[wp] [Qed] Goal typed_ref_ref_bd_assign : Valid
+[wp] [Qed] Goal typed_ref_array_in_struct_param_ensures_Pload2 : Valid
+[wp] [Qed] Goal typed_ref_array_in_struct_param_assigns : Valid
+[wp] [Qed] Goal typed_ref_call_no_ref_bd_ensures_Mem_n5_nr6 : Valid
+[wp] [Qed] Goal typed_ref_call_no_ref_bd_assigns_exit_part1 : Valid
+[wp] [Qed] Goal typed_ref_call_no_ref_bd_assigns_exit_part2 : Valid
+[wp] [Qed] Goal typed_ref_call_no_ref_bd_assigns_exit_part3 : Valid
+[wp] [Qed] Goal typed_ref_call_no_ref_bd_assigns_normal_part1 : Valid
+[wp] [Qed] Goal typed_ref_call_no_ref_bd_assigns_normal_part2 : Valid
+[wp] [Qed] Goal typed_ref_call_no_ref_bd_assigns_normal_part3 : Valid
+[wp] [Qed] Goal typed_ref_call_no_ref_bd_assigns_normal_part4 : Valid
+[wp] [Qed] Goal typed_ref_call_no_ref_bd_assigns_normal_part5 : Valid
+[wp] [Qed] Goal typed_ref_call_ref_bd_ensures_Ref_r2 : Valid
+[wp] [Qed] Goal typed_ref_call_ref_bd_assigns_exit : Valid
+[wp] [Qed] Goal typed_ref_call_ref_bd_assigns_normal_part1 : Valid
+[wp] [Qed] Goal typed_ref_call_ref_bd_assigns_normal_part2 : Valid
+[wp] [Qed] Goal typed_ref_call_ref_bd2_ensures_Mem_n2 : Valid
+[wp] [Qed] Goal typed_ref_call_ref_bd2_assigns_exit_part1 : Valid
+[wp] [Qed] Goal typed_ref_call_ref_bd2_assigns_exit_part2 : Valid
+[wp] [Qed] Goal typed_ref_call_ref_bd2_assigns_normal_part1 : Valid
+[wp] [Qed] Goal typed_ref_call_ref_bd2_assigns_normal_part2 : Valid
+[wp] [Qed] Goal typed_ref_call_ref_bd2_assigns_normal_part3 : Valid
+[wp] [Qed] Goal typed_ref_call_ref_bd2_assigns_normal_part4 : Valid
+[wp] [Qed] Goal typed_ref_call_ref_bd2_assigns_normal_part5 : Valid
+[wp] [Qed] Goal typed_ref_call_ref_ctr_ensures_Ref_r1 : Valid
+[wp] [Qed] Goal typed_ref_call_ref_ctr_assigns_exit : Valid
+[wp] [Qed] Goal typed_ref_call_ref_ctr_assigns_normal_part1 : Valid
+[wp] [Qed] Goal typed_ref_call_ref_ctr_assigns_normal_part2 : Valid
+[wp] [Qed] Goal typed_ref_call_ref_ctr2_ensures_Mem_n1 : Valid
+[wp] [Qed] Goal typed_ref_call_ref_ctr2_assigns_exit_part1 : Valid
+[wp] [Qed] Goal typed_ref_call_ref_ctr2_assigns_exit_part2 : Valid
+[wp] [Qed] Goal typed_ref_call_ref_ctr2_assigns_normal_part1 : Valid
+[wp] [Qed] Goal typed_ref_call_ref_ctr2_assigns_normal_part2 : Valid
+[wp] [Qed] Goal typed_ref_call_ref_ctr2_assigns_normal_part3 : Valid
+[wp] [Qed] Goal typed_ref_call_ref_ctr2_assigns_normal_part4 : Valid
+[wp] [Qed] Goal typed_ref_call_ref_ctr2_assigns_normal_part5 : Valid
+[wp] [Qed] Goal typed_ref_call_ref_ctr_nr_ensures_R_R_R : Valid
+[wp] [Qed] Goal typed_ref_call_ref_ctr_nr_ensures_R_R_R_2 : Valid
+[wp] [Qed] Goal typed_ref_call_ref_ctr_nr_assigns_exit_part1 : Valid
+[wp] [Qed] Goal typed_ref_call_ref_ctr_nr_assigns_exit_part2 : Valid
+[wp] [Qed] Goal typed_ref_call_ref_ctr_nr_assigns_exit_part3 : Valid
+[wp] [Qed] Goal typed_ref_call_ref_ctr_nr_assigns_normal_part1 : Valid
+[wp] [Qed] Goal typed_ref_call_ref_ctr_nr_assigns_normal_part2 : Valid
+[wp] [Qed] Goal typed_ref_call_ref_ctr_nr_assigns_normal_part3 : Valid
+[wp] [Qed] Goal typed_ref_call_ref_ctr_nr_assigns_normal_part4 : Valid
+[wp] [Qed] Goal typed_ref_call_ref_ctr_nr_call_ref_ctr_nr_requires : Valid
+[wp] [Qed] Goal typed_ref_call_ref_ctr_nstars_ensures : Valid
+[wp] [Qed] Goal typed_ref_call_ref_ctr_nstars_assigns_exit_part1 : Valid
+[wp] [Qed] Goal typed_ref_call_ref_ctr_nstars_assigns_exit_part2 : Valid
+[wp] [Qed] Goal typed_ref_call_ref_ctr_nstars_assigns_normal_part1 : Valid
+[wp] [Qed] Goal typed_ref_call_ref_ctr_nstars_assigns_normal_part2 : Valid
+[wp] [Qed] Goal typed_ref_call_ref_ctr_nstars_assigns_normal_part3 : Valid
+[wp] [Qed] Goal typed_ref_call_ref_valid_ensures_R7_N4 : Valid
+[wp] [Qed] Goal typed_ref_call_ref_valid_assigns_exit_part1 : Valid
+[wp] [Qed] Goal typed_ref_call_ref_valid_assigns_exit_part2 : Valid
+[wp] [Qed] Goal typed_ref_call_ref_valid_assigns_exit_part3 : Valid
+[wp] [Qed] Goal typed_ref_call_ref_valid_assigns_normal_part1 : Valid
+[wp] [Qed] Goal typed_ref_call_ref_valid_assigns_normal_part2 : Valid
+[wp] [Qed] Goal typed_ref_call_ref_valid_assigns_normal_part3 : Valid
+[wp] [Qed] Goal typed_ref_call_ref_valid_assigns_normal_part4 : Valid
+[wp] [Qed] Goal typed_ref_call_ref_valid_assigns_normal_part5 : Valid
+[wp] [Qed] Goal typed_ref_call_ref_valid_call_ref_valid_requires : Valid
+[wp] [Qed] Goal typed_ref_call_ref_valid_call_ref_valid_requires : Valid
+[wp] [Qed] Goal typed_ref_call_two_ref_ensures : Valid
+[wp] [Qed] Goal typed_ref_call_two_ref_assigns_exit_part1 : Valid
+[wp] [Qed] Goal typed_ref_call_two_ref_assigns_exit_part2 : Valid
+[wp] [Qed] Goal typed_ref_call_two_ref_assigns_normal_part1 : Valid
+[wp] [Qed] Goal typed_ref_call_two_ref_assigns_normal_part2 : Valid
+[wp] [Qed] Goal typed_ref_call_two_ref_assigns_normal_part3 : Valid
+[wp] [Qed] Goal typed_ref_call_two_ref_assigns_normal_part4 : Valid
+[wp] [Qed] Goal typed_ref_g_ensures : Valid
+[wp] [Qed] Goal typed_ref_g_assigns_exit : Valid
+[wp] [Qed] Goal typed_ref_g_assigns_normal_part1 : Valid
+[wp] [Qed] Goal typed_ref_g_assigns_normal_part2 : Valid
+[wp] [Qed] Goal typed_ref_no_ref_bd_ensures : Valid
+[wp] [Qed] Goal typed_ref_no_ref_bd_assigns_part1 : Valid
+[wp] [Qed] Goal typed_ref_no_ref_bd_assigns_part2 : Valid
+[wp] [Qed] Goal typed_ref_ref_bd_ensures : Valid
+[wp] [Qed] Goal typed_ref_ref_bd_assigns : Valid
 [wp] Proved goals:   78 / 78
   Qed:            78
 [wp] Report 'tests/wp_hoare/dispatch_var.i.0.report.json'
diff --git a/src/plugins/wp/tests/wp_hoare/oracle_qualif/dispatch_var2.0.res.oracle b/src/plugins/wp/tests/wp_hoare/oracle_qualif/dispatch_var2.0.res.oracle
index f777eb27ac129e93f851517de4b9bb6bbbf5de7d..d0dfe75fac52c9efcdae60e06be6da8e14e485d0 100644
--- a/src/plugins/wp/tests/wp_hoare/oracle_qualif/dispatch_var2.0.res.oracle
+++ b/src/plugins/wp/tests/wp_hoare/oracle_qualif/dispatch_var2.0.res.oracle
@@ -4,40 +4,40 @@
 [wp] Loading driver 'share/wp.driver'
 [wp] Warning: Missing RTE guards
 [wp] 34 goals scheduled
-[wp] [Qed] Goal typed_ref_call_global_post : Valid
-[wp] [Qed] Goal typed_ref_call_global_assign_exit : Valid
-[wp] [Qed] Goal typed_ref_call_global_assign_normal_part1 : Valid
-[wp] [Qed] Goal typed_ref_call_global_assign_normal_part2 : Valid
-[wp] [Qed] Goal typed_ref_call_global_call_reset_pre : Valid
-[wp] [Qed] Goal typed_ref_call_global_call_load_pre : Valid
-[wp] [Qed] Goal typed_ref_call_local_post : Valid
-[wp] [Qed] Goal typed_ref_call_local_assign_exit_part1 : Valid
-[wp] [Qed] Goal typed_ref_call_local_assign_exit_part2 : Valid
-[wp] [Qed] Goal typed_ref_call_local_assign_normal_part1 : Valid
-[wp] [Qed] Goal typed_ref_call_local_assign_normal_part2 : Valid
-[wp] [Qed] Goal typed_ref_call_local_assign_normal_part3 : Valid
-[wp] [Qed] Goal typed_ref_call_local_call_reset_pre : Valid
-[wp] [Qed] Goal typed_ref_call_local_call_load_pre : Valid
-[wp] [Qed] Goal typed_ref_call_param_post : Valid
-[wp] [Qed] Goal typed_ref_call_param_assign_exit_part1 : Valid
-[wp] [Qed] Goal typed_ref_call_param_assign_exit_part2 : Valid
-[wp] [Qed] Goal typed_ref_call_param_assign_normal_part1 : Valid
-[wp] [Qed] Goal typed_ref_call_param_assign_normal_part2 : Valid
-[wp] [Qed] Goal typed_ref_call_param_assign_normal_part3 : Valid
-[wp] [Qed] Goal typed_ref_call_param_call_reset_pre : Valid
-[wp] [Qed] Goal typed_ref_call_param_call_load_pre : Valid
-[wp] [Qed] Goal typed_ref_call_param_ref_post : Valid
-[wp] [Qed] Goal typed_ref_call_param_ref_assign_exit : Valid
-[wp] [Qed] Goal typed_ref_call_param_ref_assign_normal_part1 : Valid
-[wp] [Qed] Goal typed_ref_call_param_ref_assign_normal_part2 : Valid
-[wp] [Qed] Goal typed_ref_call_param_ref_call_reset_pre : Valid
-[wp] [Qed] Goal typed_ref_call_param_ref_call_load_pre : Valid
-[wp] [Qed] Goal typed_ref_incr_post : Valid
-[wp] [Qed] Goal typed_ref_incr_assign : Valid
-[wp] [Qed] Goal typed_ref_load_post : Valid
-[wp] [Qed] Goal typed_ref_load_assign : Valid
-[wp] [Qed] Goal typed_ref_reset_post : Valid
-[wp] [Qed] Goal typed_ref_reset_assign : Valid
+[wp] [Qed] Goal typed_ref_call_global_ensures : Valid
+[wp] [Qed] Goal typed_ref_call_global_assigns_exit : Valid
+[wp] [Qed] Goal typed_ref_call_global_assigns_normal_part1 : Valid
+[wp] [Qed] Goal typed_ref_call_global_assigns_normal_part2 : Valid
+[wp] [Qed] Goal typed_ref_call_global_call_reset_requires : Valid
+[wp] [Qed] Goal typed_ref_call_global_call_load_requires : Valid
+[wp] [Qed] Goal typed_ref_call_local_ensures : Valid
+[wp] [Qed] Goal typed_ref_call_local_assigns_exit_part1 : Valid
+[wp] [Qed] Goal typed_ref_call_local_assigns_exit_part2 : Valid
+[wp] [Qed] Goal typed_ref_call_local_assigns_normal_part1 : Valid
+[wp] [Qed] Goal typed_ref_call_local_assigns_normal_part2 : Valid
+[wp] [Qed] Goal typed_ref_call_local_assigns_normal_part3 : Valid
+[wp] [Qed] Goal typed_ref_call_local_call_reset_requires : Valid
+[wp] [Qed] Goal typed_ref_call_local_call_load_requires : Valid
+[wp] [Qed] Goal typed_ref_call_param_ensures : Valid
+[wp] [Qed] Goal typed_ref_call_param_assigns_exit_part1 : Valid
+[wp] [Qed] Goal typed_ref_call_param_assigns_exit_part2 : Valid
+[wp] [Qed] Goal typed_ref_call_param_assigns_normal_part1 : Valid
+[wp] [Qed] Goal typed_ref_call_param_assigns_normal_part2 : Valid
+[wp] [Qed] Goal typed_ref_call_param_assigns_normal_part3 : Valid
+[wp] [Qed] Goal typed_ref_call_param_call_reset_requires : Valid
+[wp] [Qed] Goal typed_ref_call_param_call_load_requires : Valid
+[wp] [Qed] Goal typed_ref_call_param_ref_ensures : Valid
+[wp] [Qed] Goal typed_ref_call_param_ref_assigns_exit : Valid
+[wp] [Qed] Goal typed_ref_call_param_ref_assigns_normal_part1 : Valid
+[wp] [Qed] Goal typed_ref_call_param_ref_assigns_normal_part2 : Valid
+[wp] [Qed] Goal typed_ref_call_param_ref_call_reset_requires : Valid
+[wp] [Qed] Goal typed_ref_call_param_ref_call_load_requires : Valid
+[wp] [Qed] Goal typed_ref_incr_ensures : Valid
+[wp] [Qed] Goal typed_ref_incr_assigns : Valid
+[wp] [Qed] Goal typed_ref_load_ensures : Valid
+[wp] [Qed] Goal typed_ref_load_assigns : Valid
+[wp] [Qed] Goal typed_ref_reset_ensures : Valid
+[wp] [Qed] Goal typed_ref_reset_assigns : Valid
 [wp] Proved goals:   34 / 34
   Qed:            34
 [wp] Report 'tests/wp_hoare/dispatch_var2.i.0.report.json'
diff --git a/src/plugins/wp/tests/wp_hoare/oracle_qualif/dispatch_var2.1.res.oracle b/src/plugins/wp/tests/wp_hoare/oracle_qualif/dispatch_var2.1.res.oracle
index d388c3c99107c31cbfd7fec2c111e21e28d144ca..a161e9ffe1ac8e3a7b642b9b709488ac42de314d 100644
--- a/src/plugins/wp/tests/wp_hoare/oracle_qualif/dispatch_var2.1.res.oracle
+++ b/src/plugins/wp/tests/wp_hoare/oracle_qualif/dispatch_var2.1.res.oracle
@@ -4,40 +4,40 @@
 [wp] Loading driver 'share/wp.driver'
 [wp] Warning: Missing RTE guards
 [wp] 34 goals scheduled
-[wp] [Qed] Goal typed_ref_call_global_post : Valid
-[wp] [Qed] Goal typed_ref_call_global_assign_exit : Valid
-[wp] [Qed] Goal typed_ref_call_global_assign_normal_part1 : Valid
-[wp] [Qed] Goal typed_ref_call_global_assign_normal_part2 : Valid
-[wp] [Qed] Goal typed_ref_call_global_call_reset_pre : Valid
-[wp] [Qed] Goal typed_ref_call_global_call_load_pre : Valid
-[wp] [Qed] Goal typed_ref_call_local_post : Valid
-[wp] [Qed] Goal typed_ref_call_local_assign_exit_part1 : Valid
-[wp] [Qed] Goal typed_ref_call_local_assign_exit_part2 : Valid
-[wp] [Qed] Goal typed_ref_call_local_assign_normal_part1 : Valid
-[wp] [Qed] Goal typed_ref_call_local_assign_normal_part2 : Valid
-[wp] [Qed] Goal typed_ref_call_local_assign_normal_part3 : Valid
-[wp] [Qed] Goal typed_ref_call_local_call_reset_pre : Valid
-[wp] [Qed] Goal typed_ref_call_local_call_load_pre : Valid
-[wp] [Qed] Goal typed_ref_call_param_post : Valid
-[wp] [Qed] Goal typed_ref_call_param_assign_exit_part1 : Valid
-[wp] [Qed] Goal typed_ref_call_param_assign_exit_part2 : Valid
-[wp] [Qed] Goal typed_ref_call_param_assign_normal_part1 : Valid
-[wp] [Qed] Goal typed_ref_call_param_assign_normal_part2 : Valid
-[wp] [Qed] Goal typed_ref_call_param_assign_normal_part3 : Valid
-[wp] [Qed] Goal typed_ref_call_param_call_reset_pre : Valid
-[wp] [Qed] Goal typed_ref_call_param_call_load_pre : Valid
-[wp] [Qed] Goal typed_ref_call_param_ref_post : Valid
-[wp] [Qed] Goal typed_ref_call_param_ref_assign_exit : Valid
-[wp] [Qed] Goal typed_ref_call_param_ref_assign_normal_part1 : Valid
-[wp] [Qed] Goal typed_ref_call_param_ref_assign_normal_part2 : Valid
-[wp] [Qed] Goal typed_ref_call_param_ref_call_reset_pre : Valid
-[wp] [Qed] Goal typed_ref_call_param_ref_call_load_pre : Valid
-[wp] [Qed] Goal typed_ref_incr_post : Valid
-[wp] [Qed] Goal typed_ref_incr_assign : Valid
-[wp] [Qed] Goal typed_ref_load_post : Valid
-[wp] [Qed] Goal typed_ref_load_assign : Valid
-[wp] [Qed] Goal typed_ref_reset_post : Valid
-[wp] [Qed] Goal typed_ref_reset_assign : Valid
+[wp] [Qed] Goal typed_ref_call_global_ensures : Valid
+[wp] [Qed] Goal typed_ref_call_global_assigns_exit : Valid
+[wp] [Qed] Goal typed_ref_call_global_assigns_normal_part1 : Valid
+[wp] [Qed] Goal typed_ref_call_global_assigns_normal_part2 : Valid
+[wp] [Qed] Goal typed_ref_call_global_call_reset_requires : Valid
+[wp] [Qed] Goal typed_ref_call_global_call_load_requires : Valid
+[wp] [Qed] Goal typed_ref_call_local_ensures : Valid
+[wp] [Qed] Goal typed_ref_call_local_assigns_exit_part1 : Valid
+[wp] [Qed] Goal typed_ref_call_local_assigns_exit_part2 : Valid
+[wp] [Qed] Goal typed_ref_call_local_assigns_normal_part1 : Valid
+[wp] [Qed] Goal typed_ref_call_local_assigns_normal_part2 : Valid
+[wp] [Qed] Goal typed_ref_call_local_assigns_normal_part3 : Valid
+[wp] [Qed] Goal typed_ref_call_local_call_reset_requires : Valid
+[wp] [Qed] Goal typed_ref_call_local_call_load_requires : Valid
+[wp] [Qed] Goal typed_ref_call_param_ensures : Valid
+[wp] [Qed] Goal typed_ref_call_param_assigns_exit_part1 : Valid
+[wp] [Qed] Goal typed_ref_call_param_assigns_exit_part2 : Valid
+[wp] [Qed] Goal typed_ref_call_param_assigns_normal_part1 : Valid
+[wp] [Qed] Goal typed_ref_call_param_assigns_normal_part2 : Valid
+[wp] [Qed] Goal typed_ref_call_param_assigns_normal_part3 : Valid
+[wp] [Qed] Goal typed_ref_call_param_call_reset_requires : Valid
+[wp] [Qed] Goal typed_ref_call_param_call_load_requires : Valid
+[wp] [Qed] Goal typed_ref_call_param_ref_ensures : Valid
+[wp] [Qed] Goal typed_ref_call_param_ref_assigns_exit : Valid
+[wp] [Qed] Goal typed_ref_call_param_ref_assigns_normal_part1 : Valid
+[wp] [Qed] Goal typed_ref_call_param_ref_assigns_normal_part2 : Valid
+[wp] [Qed] Goal typed_ref_call_param_ref_call_reset_requires : Valid
+[wp] [Qed] Goal typed_ref_call_param_ref_call_load_requires : Valid
+[wp] [Qed] Goal typed_ref_incr_ensures : Valid
+[wp] [Qed] Goal typed_ref_incr_assigns : Valid
+[wp] [Qed] Goal typed_ref_load_ensures : Valid
+[wp] [Qed] Goal typed_ref_load_assigns : Valid
+[wp] [Qed] Goal typed_ref_reset_ensures : Valid
+[wp] [Qed] Goal typed_ref_reset_assigns : Valid
 [wp] Proved goals:   34 / 34
   Qed:            34
 [wp] Report 'tests/wp_hoare/dispatch_var2.i.1.report.json'
diff --git a/src/plugins/wp/tests/wp_hoare/oracle_qualif/isHoare.res.oracle b/src/plugins/wp/tests/wp_hoare/oracle_qualif/isHoare.res.oracle
index f4ee4d53421d203dc19631f8b4c574d829c5da19..9a06ba323da0f3b3a58310313fea680ea1ea3bcd 100644
--- a/src/plugins/wp/tests/wp_hoare/oracle_qualif/isHoare.res.oracle
+++ b/src/plugins/wp/tests/wp_hoare/oracle_qualif/isHoare.res.oracle
@@ -4,7 +4,7 @@
 [wp] Loading driver 'share/wp.driver'
 [wp] Warning: Missing RTE guards
 [wp] 1 goal scheduled
-[wp] [Qed] Goal typed_ref_cmp_invalid_addr_as_int_post_ok : Valid
+[wp] [Qed] Goal typed_ref_cmp_invalid_addr_as_int_ensures_ok : Valid
 [wp] Proved goals:    1 / 1
   Qed:             1
 [wp] Report 'tests/wp_hoare/isHoare.i.0.report.json'
diff --git a/src/plugins/wp/tests/wp_hoare/oracle_qualif/logicarr.res.oracle b/src/plugins/wp/tests/wp_hoare/oracle_qualif/logicarr.res.oracle
index 0e64daa2ac2a55d7310daf78bff3e2d73a5df040..47e4dd7697ad9feb12aac921891fdf9f55510036 100644
--- a/src/plugins/wp/tests/wp_hoare/oracle_qualif/logicarr.res.oracle
+++ b/src/plugins/wp/tests/wp_hoare/oracle_qualif/logicarr.res.oracle
@@ -4,9 +4,9 @@
 [wp] Loading driver 'share/wp.driver'
 [wp] Warning: Missing RTE guards
 [wp] 3 goals scheduled
-[wp] [Alt-Ergo] Goal typed_job_post_PTR : Valid
-[wp] [Alt-Ergo] Goal typed_job_post_ARR : Valid
-[wp] [Alt-Ergo] Goal typed_job_post_DUM : Valid
+[wp] [Alt-Ergo] Goal typed_job_ensures_PTR : Valid
+[wp] [Alt-Ergo] Goal typed_job_ensures_ARR : Valid
+[wp] [Alt-Ergo] Goal typed_job_ensures_DUM : Valid
 [wp] Proved goals:    3 / 3
   Qed:             0 
   Alt-Ergo:        3
diff --git a/src/plugins/wp/tests/wp_hoare/oracle_qualif/logicref.res.oracle b/src/plugins/wp/tests/wp_hoare/oracle_qualif/logicref.res.oracle
index 5f5fa6ead779b5faa9fa7f2b37a9fd75f2d61308..f2a287c6cab427d1267d03d387c447b8b77e2a90 100644
--- a/src/plugins/wp/tests/wp_hoare/oracle_qualif/logicref.res.oracle
+++ b/src/plugins/wp/tests/wp_hoare/oracle_qualif/logicref.res.oracle
@@ -4,17 +4,17 @@
 [wp] Loading driver 'share/wp.driver'
 [wp] Warning: Missing RTE guards
 [wp] 5 goals scheduled
-[wp] [Qed] Goal typed_ref_fvrange_n_post : Valid
+[wp] [Qed] Goal typed_ref_fvrange_n_ensures : Valid
 [wp] [Alt-Ergo] Goal typed_ref_fvrange_n_assert : Valid
-[wp] [Qed] Goal typed_ref_fvrange_n_assign : Valid
-[wp] [Qed] Goal typed_ref_gcd_post : Valid
-[wp] [Qed] Goal typed_ref_gcd_assign : Valid
+[wp] [Qed] Goal typed_ref_fvrange_n_assigns : Valid
+[wp] [Qed] Goal typed_ref_gcd_ensures : Valid
+[wp] [Qed] Goal typed_ref_gcd_assigns : Valid
 [wp] Proved goals:    5 / 5
   Qed:             4 
   Alt-Ergo:        1
 [wp] Report 'tests/wp_hoare/logicref.i.0.report.json'
 -------------------------------------------------------------
 Functions           WP     Alt-Ergo        Total   Success
-fvrange_n            2      1 (88..112)      3       100%
+fvrange_n            2      1 (96..120)      3       100%
 gcd                  2     -                 2       100%
 -------------------------------------------------------------
diff --git a/src/plugins/wp/tests/wp_hoare/oracle_qualif/logicref_simple.res.oracle b/src/plugins/wp/tests/wp_hoare/oracle_qualif/logicref_simple.res.oracle
index 8955595fa0c36e6103c862b053d39934e2ab00bc..8233499c143b401b5d27b82a69923b76ad01c976 100644
--- a/src/plugins/wp/tests/wp_hoare/oracle_qualif/logicref_simple.res.oracle
+++ b/src/plugins/wp/tests/wp_hoare/oracle_qualif/logicref_simple.res.oracle
@@ -4,15 +4,15 @@
 [wp] Loading driver 'share/wp.driver'
 [wp] Warning: Missing RTE guards
 [wp] 9 goals scheduled
-[wp] [Alt-Ergo] Goal typed_ref_fsimple_post : Valid
-[wp] [Qed] Goal typed_ref_fsimple_assign : Valid
-[wp] [Alt-Ergo] Goal typed_ref_fsimple_array_post : Valid
-[wp] [Qed] Goal typed_ref_fsimple_array_assign : Valid
-[wp] [Alt-Ergo] Goal typed_ref_ftwo_star_post : Valid
-[wp] [Qed] Goal typed_ref_ftwo_star_assign : Valid
-[wp] [Qed] Goal typed_ref_fvpositive_post : Valid
+[wp] [Alt-Ergo] Goal typed_ref_fsimple_ensures : Valid
+[wp] [Qed] Goal typed_ref_fsimple_assigns : Valid
+[wp] [Alt-Ergo] Goal typed_ref_fsimple_array_ensures : Valid
+[wp] [Qed] Goal typed_ref_fsimple_array_assigns : Valid
+[wp] [Alt-Ergo] Goal typed_ref_ftwo_star_ensures : Valid
+[wp] [Qed] Goal typed_ref_ftwo_star_assigns : Valid
+[wp] [Qed] Goal typed_ref_fvpositive_ensures : Valid
 [wp] [Alt-Ergo] Goal typed_ref_fvpositive_assert_OK : Valid
-[wp] [Qed] Goal typed_ref_fvpositive_assign : Valid
+[wp] [Qed] Goal typed_ref_fvpositive_assigns : Valid
 [wp] Proved goals:    9 / 9
   Qed:             5 
   Alt-Ergo:        4
@@ -20,7 +20,7 @@
 -------------------------------------------------------------
 Functions           WP     Alt-Ergo        Total   Success
 fsimple              1      1 (8..20)        2       100%
-fsimple_array        1      1 (24..36)       2       100%
-ftwo_star            1      1 (8..20)        2       100%
+fsimple_array        1      1 (28..40)       2       100%
+ftwo_star            1      1 (12..24)       2       100%
 fvpositive           2      1 (4..16)        3       100%
 -------------------------------------------------------------
diff --git a/src/plugins/wp/tests/wp_hoare/oracle_qualif/reference.res.oracle b/src/plugins/wp/tests/wp_hoare/oracle_qualif/reference.res.oracle
index d94ce8d9aa90fa1378fcb30e3345a47651344896..c33ec4bf50b7ab3be30245accec6b646e6b73cf1 100644
--- a/src/plugins/wp/tests/wp_hoare/oracle_qualif/reference.res.oracle
+++ b/src/plugins/wp/tests/wp_hoare/oracle_qualif/reference.res.oracle
@@ -4,29 +4,29 @@
 [wp] Loading driver 'share/wp.driver'
 [wp] Warning: Missing RTE guards
 [wp] 23 goals scheduled
-[wp] [Qed] Goal typed_ref_call_f2_post : Valid
-[wp] [Qed] Goal typed_ref_call_f2_assign_exit_part1 : Valid
-[wp] [Qed] Goal typed_ref_call_f2_assign_exit_part2 : Valid
-[wp] [Alt-Ergo] Goal typed_ref_call_f2_assign_exit_part3 : Unknown
-[wp] [Qed] Goal typed_ref_call_f2_assign_normal_part1 : Valid
-[wp] [Qed] Goal typed_ref_call_f2_assign_normal_part2 : Valid
-[wp] [Alt-Ergo] Goal typed_ref_call_f2_assign_normal_part3 : Unknown
-[wp] [Qed] Goal typed_ref_call_f2_assign_normal_part4 : Valid
-[wp] [Qed] Goal typed_ref_call_f2_call_f2_pre : Valid
-[wp] [Qed] Goal typed_ref_call_global_post : Valid
-[wp] [Qed] Goal typed_ref_call_global_assign_exit : Valid
-[wp] [Qed] Goal typed_ref_call_global_assign_normal_part1 : Valid
-[wp] [Qed] Goal typed_ref_call_global_assign_normal_part2 : Valid
-[wp] [Qed] Goal typed_ref_call_global_call_f_pre : Valid
-[wp] [Qed] Goal typed_ref_g_post : Valid
-[wp] [Qed] Goal typed_ref_g_assign_exit_part1 : Valid
-[wp] [Qed] Goal typed_ref_g_assign_exit_part2 : Valid
-[wp] [Qed] Goal typed_ref_g_assign_normal_part1 : Valid
-[wp] [Qed] Goal typed_ref_g_assign_normal_part2 : Valid
-[wp] [Qed] Goal typed_ref_g_assign_normal_part3 : Valid
-[wp] [Qed] Goal typed_ref_g_call_f_pre : Valid
-[wp] [Qed] Goal typed_ref_write_post : Valid
-[wp] [Qed] Goal typed_ref_write_assign : Valid
+[wp] [Qed] Goal typed_ref_call_f2_ensures : Valid
+[wp] [Qed] Goal typed_ref_call_f2_assigns_exit_part1 : Valid
+[wp] [Qed] Goal typed_ref_call_f2_assigns_exit_part2 : Valid
+[wp] [Alt-Ergo] Goal typed_ref_call_f2_assigns_exit_part3 : Unknown
+[wp] [Qed] Goal typed_ref_call_f2_assigns_normal_part1 : Valid
+[wp] [Qed] Goal typed_ref_call_f2_assigns_normal_part2 : Valid
+[wp] [Alt-Ergo] Goal typed_ref_call_f2_assigns_normal_part3 : Unknown
+[wp] [Qed] Goal typed_ref_call_f2_assigns_normal_part4 : Valid
+[wp] [Qed] Goal typed_ref_call_f2_call_f2_requires : Valid
+[wp] [Qed] Goal typed_ref_call_global_ensures : Valid
+[wp] [Qed] Goal typed_ref_call_global_assigns_exit : Valid
+[wp] [Qed] Goal typed_ref_call_global_assigns_normal_part1 : Valid
+[wp] [Qed] Goal typed_ref_call_global_assigns_normal_part2 : Valid
+[wp] [Qed] Goal typed_ref_call_global_call_f_requires : Valid
+[wp] [Qed] Goal typed_ref_g_ensures : Valid
+[wp] [Qed] Goal typed_ref_g_assigns_exit_part1 : Valid
+[wp] [Qed] Goal typed_ref_g_assigns_exit_part2 : Valid
+[wp] [Qed] Goal typed_ref_g_assigns_normal_part1 : Valid
+[wp] [Qed] Goal typed_ref_g_assigns_normal_part2 : Valid
+[wp] [Qed] Goal typed_ref_g_assigns_normal_part3 : Valid
+[wp] [Qed] Goal typed_ref_g_call_f_requires : Valid
+[wp] [Qed] Goal typed_ref_write_ensures : Valid
+[wp] [Qed] Goal typed_ref_write_assigns : Valid
 [wp] Proved goals:   21 / 23
   Qed:            21 
   Alt-Ergo:        0  (unknown: 2)
diff --git a/src/plugins/wp/tests/wp_hoare/oracle_qualif/reference_and_struct.res.oracle b/src/plugins/wp/tests/wp_hoare/oracle_qualif/reference_and_struct.res.oracle
index 3726ef5b31be6035baae6da3fcebe61045f937f9..67424143d7c240bb97b18c1e09e9776d83c403c7 100644
--- a/src/plugins/wp/tests/wp_hoare/oracle_qualif/reference_and_struct.res.oracle
+++ b/src/plugins/wp/tests/wp_hoare/oracle_qualif/reference_and_struct.res.oracle
@@ -4,38 +4,38 @@
 [wp] Loading driver 'share/wp.driver'
 [wp] Warning: Missing RTE guards
 [wp] 32 goals scheduled
-[wp] [Qed] Goal typed_ref_call_array_in_struct_param_post_Pload2 : Valid
-[wp] [Qed] Goal typed_ref_call_array_in_struct_param_post_Pload3 : Valid
-[wp] [Qed] Goal typed_ref_call_array_in_struct_param_assign_exit : Valid
-[wp] [Qed] Goal typed_ref_call_array_in_struct_param_assign_normal : Valid
-[wp] [Qed] Goal typed_ref_call_array_in_struct_param_call_load_5_pre : Valid
-[wp] [Alt-Ergo] Goal typed_ref_call_on_array_in_struct_global_post_Pload : Valid
-[wp] [Qed] Goal typed_ref_call_on_array_in_struct_global_assign_exit : Valid
-[wp] [Qed] Goal typed_ref_call_on_array_in_struct_global_assign_normal : Valid
-[wp] [Qed] Goal typed_ref_call_on_array_in_struct_global_call_load_5_pre : Valid
-[wp] [Qed] Goal typed_ref_call_reset_post : Valid
-[wp] [Qed] Goal typed_ref_call_reset_assign_exit : Valid
-[wp] [Qed] Goal typed_ref_call_reset_assign_normal_part1 : Valid
-[wp] [Qed] Goal typed_ref_call_reset_assign_normal_part2 : Valid
-[wp] [Qed] Goal typed_ref_call_reset_call_reset_pre : Valid
-[wp] [Alt-Ergo] Goal typed_ref_call_reset_1_5_post_Presset_mat : Valid
-[wp] [Qed] Goal typed_ref_call_reset_1_5_assign_exit : Valid
-[wp] [Qed] Goal typed_ref_call_reset_1_5_assign_normal : Valid
-[wp] [Qed] Goal typed_ref_call_reset_1_5_call_reset_1_5_pre : Valid
-[wp] [Alt-Ergo] Goal typed_ref_call_reset_5_post_Preset_5 : Valid
-[wp] [Qed] Goal typed_ref_call_reset_5_assign_exit : Valid
-[wp] [Qed] Goal typed_ref_call_reset_5_assign_normal : Valid
-[wp] [Qed] Goal typed_ref_call_reset_5_call_reset_5_pre : Valid
-[wp] [Alt-Ergo] Goal typed_ref_call_reset_5_dim2_post_Presset_mat : Valid
-[wp] [Qed] Goal typed_ref_call_reset_5_dim2_assign_exit : Valid
-[wp] [Qed] Goal typed_ref_call_reset_5_dim2_assign_normal : Valid
-[wp] [Qed] Goal typed_ref_call_reset_5_dim2_call_reset_5_pre : Valid
-[wp] [Alt-Ergo] Goal typed_ref_call_reset_5_tps_post_Preset_5_tps : Valid
-[wp] [Qed] Goal typed_ref_call_reset_5_tps_assign_exit : Valid
-[wp] [Qed] Goal typed_ref_call_reset_5_tps_assign_normal : Valid
-[wp] [Qed] Goal typed_ref_call_reset_5_tps_call_reset_5_pre : Valid
-[wp] [Qed] Goal typed_ref_reset_post : Valid
-[wp] [Qed] Goal typed_ref_reset_assign : Valid
+[wp] [Qed] Goal typed_ref_call_array_in_struct_param_ensures_Pload2 : Valid
+[wp] [Qed] Goal typed_ref_call_array_in_struct_param_ensures_Pload3 : Valid
+[wp] [Qed] Goal typed_ref_call_array_in_struct_param_assigns_exit : Valid
+[wp] [Qed] Goal typed_ref_call_array_in_struct_param_assigns_normal : Valid
+[wp] [Qed] Goal typed_ref_call_array_in_struct_param_call_load_5_requires : Valid
+[wp] [Alt-Ergo] Goal typed_ref_call_on_array_in_struct_global_ensures_Pload : Valid
+[wp] [Qed] Goal typed_ref_call_on_array_in_struct_global_assigns_exit : Valid
+[wp] [Qed] Goal typed_ref_call_on_array_in_struct_global_assigns_normal : Valid
+[wp] [Qed] Goal typed_ref_call_on_array_in_struct_global_call_load_5_requires : Valid
+[wp] [Qed] Goal typed_ref_call_reset_ensures : Valid
+[wp] [Qed] Goal typed_ref_call_reset_assigns_exit : Valid
+[wp] [Qed] Goal typed_ref_call_reset_assigns_normal_part1 : Valid
+[wp] [Qed] Goal typed_ref_call_reset_assigns_normal_part2 : Valid
+[wp] [Qed] Goal typed_ref_call_reset_call_reset_requires : Valid
+[wp] [Alt-Ergo] Goal typed_ref_call_reset_1_5_ensures_Presset_mat : Valid
+[wp] [Qed] Goal typed_ref_call_reset_1_5_assigns_exit : Valid
+[wp] [Qed] Goal typed_ref_call_reset_1_5_assigns_normal : Valid
+[wp] [Qed] Goal typed_ref_call_reset_1_5_call_reset_1_5_requires : Valid
+[wp] [Alt-Ergo] Goal typed_ref_call_reset_5_ensures_Preset_5 : Valid
+[wp] [Qed] Goal typed_ref_call_reset_5_assigns_exit : Valid
+[wp] [Qed] Goal typed_ref_call_reset_5_assigns_normal : Valid
+[wp] [Qed] Goal typed_ref_call_reset_5_call_reset_5_requires : Valid
+[wp] [Alt-Ergo] Goal typed_ref_call_reset_5_dim2_ensures_Presset_mat : Valid
+[wp] [Qed] Goal typed_ref_call_reset_5_dim2_assigns_exit : Valid
+[wp] [Qed] Goal typed_ref_call_reset_5_dim2_assigns_normal : Valid
+[wp] [Qed] Goal typed_ref_call_reset_5_dim2_call_reset_5_requires : Valid
+[wp] [Alt-Ergo] Goal typed_ref_call_reset_5_tps_ensures_Preset_5_tps : Valid
+[wp] [Qed] Goal typed_ref_call_reset_5_tps_assigns_exit : Valid
+[wp] [Qed] Goal typed_ref_call_reset_5_tps_assigns_normal : Valid
+[wp] [Qed] Goal typed_ref_call_reset_5_tps_call_reset_5_requires : Valid
+[wp] [Qed] Goal typed_ref_reset_ensures : Valid
+[wp] [Qed] Goal typed_ref_reset_assigns : Valid
 [wp] Proved goals:   32 / 32
   Qed:            27 
   Alt-Ergo:        5
diff --git a/src/plugins/wp/tests/wp_hoare/oracle_qualif/reference_array.res.oracle b/src/plugins/wp/tests/wp_hoare/oracle_qualif/reference_array.res.oracle
index 39470242b57424fd4870ac9069708ed7ee0c11f8..9b452f762f81e2e35b836d347646f75c95a9b113 100644
--- a/src/plugins/wp/tests/wp_hoare/oracle_qualif/reference_array.res.oracle
+++ b/src/plugins/wp/tests/wp_hoare/oracle_qualif/reference_array.res.oracle
@@ -4,42 +4,42 @@
 [wp] Loading driver 'share/wp.driver'
 [wp] Warning: Missing RTE guards
 [wp] 36 goals scheduled
-[wp] [Alt-Ergo] Goal typed_ref_add_1_5_post : Valid
-[wp] [Qed] Goal typed_ref_add_1_5_assign_exit : Valid
-[wp] [Qed] Goal typed_ref_add_1_5_assign_normal : Valid
-[wp] [Qed] Goal typed_ref_add_1_5_call_add_5_pre : Valid
-[wp] [Alt-Ergo] Goal typed_ref_calls_on_array_dim_1_post_Pload : Valid
-[wp] [Alt-Ergo] Goal typed_ref_calls_on_array_dim_1_post_Preset : Valid
-[wp] [Alt-Ergo] Goal typed_ref_calls_on_array_dim_1_post_Padd : Valid
-[wp] [Qed] Goal typed_ref_calls_on_array_dim_1_assign_exit : Valid
-[wp] [Qed] Goal typed_ref_calls_on_array_dim_1_assign_normal : Valid
-[wp] [Qed] Goal typed_ref_calls_on_array_dim_1_call_load_5_pre : Valid
-[wp] [Qed] Goal typed_ref_calls_on_array_dim_1_call_reset_5_pre : Valid
-[wp] [Qed] Goal typed_ref_calls_on_array_dim_1_call_add_5_pre : Valid
-[wp] [Alt-Ergo] Goal typed_ref_calls_on_array_dim_2_post_Pload : Valid
-[wp] [Alt-Ergo] Goal typed_ref_calls_on_array_dim_2_post_Preset : Valid
-[wp] [Alt-Ergo] Goal typed_ref_calls_on_array_dim_2_post_Padd : Valid
-[wp] [Qed] Goal typed_ref_calls_on_array_dim_2_assign_exit : Valid
-[wp] [Qed] Goal typed_ref_calls_on_array_dim_2_assign_normal : Valid
-[wp] [Qed] Goal typed_ref_calls_on_array_dim_2_call_load_1_5_pre : Valid
-[wp] [Qed] Goal typed_ref_calls_on_array_dim_2_call_reset_1_5_pre : Valid
-[wp] [Qed] Goal typed_ref_calls_on_array_dim_2_call_add_1_5_pre : Valid
-[wp] [Alt-Ergo] Goal typed_ref_calls_on_array_dim_2_to_1_post_Pload : Valid
-[wp] [Alt-Ergo] Goal typed_ref_calls_on_array_dim_2_to_1_post_Preset : Valid
-[wp] [Alt-Ergo] Goal typed_ref_calls_on_array_dim_2_to_1_post_Padd : Valid
-[wp] [Qed] Goal typed_ref_calls_on_array_dim_2_to_1_assign_exit : Valid
-[wp] [Qed] Goal typed_ref_calls_on_array_dim_2_to_1_assign_normal : Valid
-[wp] [Qed] Goal typed_ref_calls_on_array_dim_2_to_1_call_load_5_pre : Valid
-[wp] [Qed] Goal typed_ref_calls_on_array_dim_2_to_1_call_reset_5_pre : Valid
-[wp] [Qed] Goal typed_ref_calls_on_array_dim_2_to_1_call_add_5_pre : Valid
-[wp] [Alt-Ergo] Goal typed_ref_load_1_5_post : Valid
-[wp] [Qed] Goal typed_ref_load_1_5_assign_exit : Valid
-[wp] [Qed] Goal typed_ref_load_1_5_assign_normal : Valid
-[wp] [Qed] Goal typed_ref_load_1_5_call_load_5_pre : Valid
-[wp] [Alt-Ergo] Goal typed_ref_reset_1_5_post : Valid
-[wp] [Qed] Goal typed_ref_reset_1_5_assign_exit : Valid
-[wp] [Qed] Goal typed_ref_reset_1_5_assign_normal : Valid
-[wp] [Qed] Goal typed_ref_reset_1_5_call_reset_5_pre : Valid
+[wp] [Alt-Ergo] Goal typed_ref_add_1_5_ensures : Valid
+[wp] [Qed] Goal typed_ref_add_1_5_assigns_exit : Valid
+[wp] [Qed] Goal typed_ref_add_1_5_assigns_normal : Valid
+[wp] [Qed] Goal typed_ref_add_1_5_call_add_5_requires : Valid
+[wp] [Alt-Ergo] Goal typed_ref_calls_on_array_dim_1_ensures_Pload : Valid
+[wp] [Alt-Ergo] Goal typed_ref_calls_on_array_dim_1_ensures_Preset : Valid
+[wp] [Alt-Ergo] Goal typed_ref_calls_on_array_dim_1_ensures_Padd : Valid
+[wp] [Qed] Goal typed_ref_calls_on_array_dim_1_assigns_exit : Valid
+[wp] [Qed] Goal typed_ref_calls_on_array_dim_1_assigns_normal : Valid
+[wp] [Qed] Goal typed_ref_calls_on_array_dim_1_call_load_5_requires : Valid
+[wp] [Qed] Goal typed_ref_calls_on_array_dim_1_call_reset_5_requires : Valid
+[wp] [Qed] Goal typed_ref_calls_on_array_dim_1_call_add_5_requires : Valid
+[wp] [Alt-Ergo] Goal typed_ref_calls_on_array_dim_2_ensures_Pload : Valid
+[wp] [Alt-Ergo] Goal typed_ref_calls_on_array_dim_2_ensures_Preset : Valid
+[wp] [Alt-Ergo] Goal typed_ref_calls_on_array_dim_2_ensures_Padd : Valid
+[wp] [Qed] Goal typed_ref_calls_on_array_dim_2_assigns_exit : Valid
+[wp] [Qed] Goal typed_ref_calls_on_array_dim_2_assigns_normal : Valid
+[wp] [Qed] Goal typed_ref_calls_on_array_dim_2_call_load_1_5_requires : Valid
+[wp] [Qed] Goal typed_ref_calls_on_array_dim_2_call_reset_1_5_requires : Valid
+[wp] [Qed] Goal typed_ref_calls_on_array_dim_2_call_add_1_5_requires : Valid
+[wp] [Alt-Ergo] Goal typed_ref_calls_on_array_dim_2_to_1_ensures_Pload : Valid
+[wp] [Alt-Ergo] Goal typed_ref_calls_on_array_dim_2_to_1_ensures_Preset : Valid
+[wp] [Alt-Ergo] Goal typed_ref_calls_on_array_dim_2_to_1_ensures_Padd : Valid
+[wp] [Qed] Goal typed_ref_calls_on_array_dim_2_to_1_assigns_exit : Valid
+[wp] [Qed] Goal typed_ref_calls_on_array_dim_2_to_1_assigns_normal : Valid
+[wp] [Qed] Goal typed_ref_calls_on_array_dim_2_to_1_call_load_5_requires : Valid
+[wp] [Qed] Goal typed_ref_calls_on_array_dim_2_to_1_call_reset_5_requires : Valid
+[wp] [Qed] Goal typed_ref_calls_on_array_dim_2_to_1_call_add_5_requires : Valid
+[wp] [Alt-Ergo] Goal typed_ref_load_1_5_ensures : Valid
+[wp] [Qed] Goal typed_ref_load_1_5_assigns_exit : Valid
+[wp] [Qed] Goal typed_ref_load_1_5_assigns_normal : Valid
+[wp] [Qed] Goal typed_ref_load_1_5_call_load_5_requires : Valid
+[wp] [Alt-Ergo] Goal typed_ref_reset_1_5_ensures : Valid
+[wp] [Qed] Goal typed_ref_reset_1_5_assigns_exit : Valid
+[wp] [Qed] Goal typed_ref_reset_1_5_assigns_normal : Valid
+[wp] [Qed] Goal typed_ref_reset_1_5_call_reset_5_requires : Valid
 [wp] Proved goals:   36 / 36
   Qed:            24 
   Alt-Ergo:       12
diff --git a/src/plugins/wp/tests/wp_hoare/oracle_qualif/reference_array_simple.res.oracle b/src/plugins/wp/tests/wp_hoare/oracle_qualif/reference_array_simple.res.oracle
index 8c86a8bb1b80125182c189f52444839a002ba361..bcc5f4a414b76a056d92bef7d68d196490e655cc 100644
--- a/src/plugins/wp/tests/wp_hoare/oracle_qualif/reference_array_simple.res.oracle
+++ b/src/plugins/wp/tests/wp_hoare/oracle_qualif/reference_array_simple.res.oracle
@@ -4,9 +4,9 @@
 [wp] Loading driver 'share/wp.driver'
 [wp] Warning: Missing RTE guards
 [wp] 3 goals scheduled
-[wp] [Qed] Goal typed_ref_call_f1_post : Valid
-[wp] [Qed] Goal typed_ref_call_f2_post : Valid
-[wp] [Qed] Goal typed_ref_call_f3_post : Valid
+[wp] [Qed] Goal typed_ref_call_f1_ensures : Valid
+[wp] [Qed] Goal typed_ref_call_f2_ensures : Valid
+[wp] [Qed] Goal typed_ref_call_f3_ensures : Valid
 [wp] Proved goals:    3 / 3
   Qed:             3
 [wp] Report 'tests/wp_hoare/reference_array_simple.i.0.report.json'
diff --git a/src/plugins/wp/tests/wp_hoare/oracle_qualif/refguards.res.oracle b/src/plugins/wp/tests/wp_hoare/oracle_qualif/refguards.res.oracle
index 9de80150645392fb22ad29543132c435288683d7..07afbfc11d90ae4148f52336769ac7e05eea9240 100644
--- a/src/plugins/wp/tests/wp_hoare/oracle_qualif/refguards.res.oracle
+++ b/src/plugins/wp/tests/wp_hoare/oracle_qualif/refguards.res.oracle
@@ -4,15 +4,15 @@
 [wp] Loading driver 'share/wp.driver'
 [wp] Warning: Missing RTE guards
 [wp] 9 goals scheduled
-[wp] [Qed] Goal typed_ref_f_post : Valid
-[wp] [Alt-Ergo] Goal typed_ref_g_post : Valid
-[wp] [Qed] Goal typed_ref_h_post : Valid
-[wp] [Qed] Goal typed_ref_s_post : Valid
-[wp] [Qed] Goal typed_ref_s_post_2 : Valid
-[wp] [Qed] Goal typed_ref_s_post_3 : Valid
-[wp] [Qed] Goal typed_ref_s_post_4 : Valid
-[wp] [Qed] Goal typed_ref_s_post_5 : Valid
-[wp] [Alt-Ergo] Goal typed_ref_s_post_KO : Unknown
+[wp] [Qed] Goal typed_ref_f_ensures : Valid
+[wp] [Alt-Ergo] Goal typed_ref_g_ensures : Valid
+[wp] [Qed] Goal typed_ref_h_ensures : Valid
+[wp] [Qed] Goal typed_ref_s_ensures : Valid
+[wp] [Qed] Goal typed_ref_s_ensures_2 : Valid
+[wp] [Qed] Goal typed_ref_s_ensures_3 : Valid
+[wp] [Qed] Goal typed_ref_s_ensures_4 : Valid
+[wp] [Qed] Goal typed_ref_s_ensures_5 : Valid
+[wp] [Alt-Ergo] Goal typed_ref_s_ensures_KO : Unknown
 [wp] Proved goals:    8 / 9
   Qed:             7 
   Alt-Ergo:        1  (unknown: 1)
@@ -20,7 +20,7 @@
 -------------------------------------------------------------
 Functions           WP     Alt-Ergo        Total   Success
 f                    1     -                 1       100%
-g                   -       1 (8..20)        1       100%
+g                   -       1 (12..24)       1       100%
 h                    1     -                 1       100%
 s                    5     -                 6      83.3%
 -------------------------------------------------------------
diff --git a/src/plugins/wp/tests/wp_hoare/reference.i.0.report.json b/src/plugins/wp/tests/wp_hoare/reference.i.0.report.json
index 231def588235a60e73a1cce5db0a4fc4fedeb3c4..ed8e2217b49af5a7d61dfad0b45457b1af1b44de 100644
--- a/src/plugins/wp/tests/wp_hoare/reference.i.0.report.json
+++ b/src/plugins/wp/tests/wp_hoare/reference.i.0.report.json
@@ -1,34 +1,33 @@
 { "wp:global": { "alt-ergo": { "total": 2, "unknown": 2 },
                  "qed": { "total": 21, "valid": 21 },
                  "wp:main": { "total": 23, "valid": 21, "unknown": 2 } },
-  "wp:functions": { "g": { "specialization_f_pre_at_g_stmt_2": { "qed": 
-                                                                   { "total": 1,
-                                                                    "valid": 1 },
-                                                                 "wp:main": 
-                                                                   { "total": 1,
-                                                                    "valid": 1 } },
-                           "g_assign": { "qed": { "total": 5, "valid": 5 },
-                                         "wp:main": { "total": 5,
-                                                      "valid": 5 } },
-                           "g_post": { "qed": { "total": 1, "valid": 1 },
-                                       "wp:main": { "total": 1, "valid": 1 } },
+  "wp:functions": { "g": { "f_requires": { "qed": { "total": 1, "valid": 1 },
+                                           "wp:main": { "total": 1,
+                                                        "valid": 1 } },
+                           "g_assigns": { "qed": { "total": 5, "valid": 5 },
+                                          "wp:main": { "total": 5,
+                                                       "valid": 5 } },
+                           "g_ensures": { "qed": { "total": 1, "valid": 1 },
+                                          "wp:main": { "total": 1,
+                                                       "valid": 1 } },
                            "wp:section": { "qed": { "total": 7, "valid": 7 },
                                            "wp:main": { "total": 7,
                                                         "valid": 7 } } },
-                    "call_f2": { "specialization_f2_pre_at_call_f2_stmt_7": 
-                                   { "qed": { "total": 1, "valid": 1 },
-                                     "wp:main": { "total": 1, "valid": 1 } },
-                                 "call_f2_assign": { "alt-ergo": { "total": 2,
-                                                                   "unknown": 2 },
-                                                     "qed": { "total": 5,
-                                                              "valid": 5 },
-                                                     "wp:main": { "total": 7,
-                                                                  "valid": 5,
-                                                                  "unknown": 2 } },
-                                 "call_f2_post": { "qed": { "total": 1,
-                                                            "valid": 1 },
-                                                   "wp:main": { "total": 1,
-                                                                "valid": 1 } },
+                    "call_f2": { "f2_requires": { "qed": { "total": 1,
+                                                           "valid": 1 },
+                                                  "wp:main": { "total": 1,
+                                                               "valid": 1 } },
+                                 "call_f2_assigns": { "alt-ergo": { "total": 2,
+                                                                    "unknown": 2 },
+                                                      "qed": { "total": 5,
+                                                               "valid": 5 },
+                                                      "wp:main": { "total": 7,
+                                                                   "valid": 5,
+                                                                   "unknown": 2 } },
+                                 "call_f2_ensures": { "qed": { "total": 1,
+                                                               "valid": 1 },
+                                                      "wp:main": { "total": 1,
+                                                                   "valid": 1 } },
                                  "wp:section": { "alt-ergo": { "total": 2,
                                                                "unknown": 2 },
                                                  "qed": { "total": 7,
@@ -36,32 +35,34 @@
                                                  "wp:main": { "total": 9,
                                                               "valid": 7,
                                                               "unknown": 2 } } },
-                    "call_global": { "specialization_f_pre_at_call_global_stmt_10": 
-                                       { "qed": { "total": 1, "valid": 1 },
-                                         "wp:main": { "total": 1,
-                                                      "valid": 1 } },
-                                     "call_global_assign": { "qed": { "total": 3,
-                                                                    "valid": 3 },
-                                                             "wp:main": 
-                                                               { "total": 3,
-                                                                 "valid": 3 } },
-                                     "call_global_post": { "qed": { "total": 1,
-                                                                    "valid": 1 },
-                                                           "wp:main": 
-                                                             { "total": 1,
-                                                               "valid": 1 } },
+                    "call_global": { "f_requires_2": { "qed": { "total": 1,
+                                                                "valid": 1 },
+                                                       "wp:main": { "total": 1,
+                                                                    "valid": 1 } },
+                                     "call_global_assigns": { "qed": 
+                                                                { "total": 3,
+                                                                  "valid": 3 },
+                                                              "wp:main": 
+                                                                { "total": 3,
+                                                                  "valid": 3 } },
+                                     "call_global_ensures": { "qed": 
+                                                                { "total": 1,
+                                                                  "valid": 1 },
+                                                              "wp:main": 
+                                                                { "total": 1,
+                                                                  "valid": 1 } },
                                      "wp:section": { "qed": { "total": 5,
                                                               "valid": 5 },
                                                      "wp:main": { "total": 5,
                                                                   "valid": 5 } } },
-                    "write": { "write_assign": { "qed": { "total": 1,
-                                                          "valid": 1 },
-                                                 "wp:main": { "total": 1,
-                                                              "valid": 1 } },
-                               "write_post": { "qed": { "total": 1,
-                                                        "valid": 1 },
-                                               "wp:main": { "total": 1,
-                                                            "valid": 1 } },
+                    "write": { "write_assigns": { "qed": { "total": 1,
+                                                           "valid": 1 },
+                                                  "wp:main": { "total": 1,
+                                                               "valid": 1 } },
+                               "write_ensures": { "qed": { "total": 1,
+                                                           "valid": 1 },
+                                                  "wp:main": { "total": 1,
+                                                               "valid": 1 } },
                                "wp:section": { "qed": { "total": 2,
                                                         "valid": 2 },
                                                "wp:main": { "total": 2,
diff --git a/src/plugins/wp/tests/wp_hoare/reference_and_struct.i.0.report.json b/src/plugins/wp/tests/wp_hoare/reference_and_struct.i.0.report.json
index c0d973f42303dd00e7f376e03e406681ad1b2c3f..11e6e2f6c10926d5cc561994ff53fffd24d4730d 100644
--- a/src/plugins/wp/tests/wp_hoare/reference_and_struct.i.0.report.json
+++ b/src/plugins/wp/tests/wp_hoare/reference_and_struct.i.0.report.json
@@ -1,52 +1,54 @@
 { "wp:global": { "alt-ergo": { "total": 5, "valid": 5, "rank": 5 },
                  "qed": { "total": 27, "valid": 27 },
                  "wp:main": { "total": 32, "valid": 32, "rank": 5 } },
-  "wp:functions": { "reset": { "reset_assign": { "qed": { "total": 1,
-                                                          "valid": 1 },
-                                                 "wp:main": { "total": 1,
-                                                              "valid": 1 } },
-                               "reset_post": { "qed": { "total": 1,
-                                                        "valid": 1 },
-                                               "wp:main": { "total": 1,
-                                                            "valid": 1 } },
+  "wp:functions": { "reset": { "reset_assigns": { "qed": { "total": 1,
+                                                           "valid": 1 },
+                                                  "wp:main": { "total": 1,
+                                                               "valid": 1 } },
+                               "reset_ensures": { "qed": { "total": 1,
+                                                           "valid": 1 },
+                                                  "wp:main": { "total": 1,
+                                                               "valid": 1 } },
                                "wp:section": { "qed": { "total": 2,
                                                         "valid": 2 },
                                                "wp:main": { "total": 2,
                                                             "valid": 2 } } },
-                    "call_reset": { "specialization_reset_pre_at_call_reset_stmt_4": 
-                                      { "qed": { "total": 1, "valid": 1 },
-                                        "wp:main": { "total": 1, "valid": 1 } },
-                                    "call_reset_assign": { "qed": { "total": 3,
-                                                                    "valid": 3 },
-                                                           "wp:main": 
-                                                             { "total": 3,
-                                                               "valid": 3 } },
-                                    "call_reset_post": { "qed": { "total": 1,
-                                                                  "valid": 1 },
-                                                         "wp:main": { "total": 1,
+                    "call_reset": { "reset_requires": { "qed": { "total": 1,
+                                                                 "valid": 1 },
+                                                        "wp:main": { "total": 1,
                                                                     "valid": 1 } },
+                                    "call_reset_assigns": { "qed": { "total": 3,
+                                                                    "valid": 3 },
+                                                            "wp:main": 
+                                                              { "total": 3,
+                                                                "valid": 3 } },
+                                    "call_reset_ensures": { "qed": { "total": 1,
+                                                                    "valid": 1 },
+                                                            "wp:main": 
+                                                              { "total": 1,
+                                                                "valid": 1 } },
                                     "wp:section": { "qed": { "total": 5,
                                                              "valid": 5 },
                                                     "wp:main": { "total": 5,
                                                                  "valid": 5 } } },
-                    "call_reset_5": { "specialization_reset_5_pre_at_call_reset_5_stmt_8": 
-                                        { "qed": { "total": 1, "valid": 1 },
+                    "call_reset_5": { "reset_5_requires": { "qed": { "total": 1,
+                                                                    "valid": 1 },
+                                                            "wp:main": 
+                                                              { "total": 1,
+                                                                "valid": 1 } },
+                                      "call_reset_5_assigns": { "qed": 
+                                                                  { "total": 2,
+                                                                    "valid": 2 },
+                                                                "wp:main": 
+                                                                  { "total": 2,
+                                                                    "valid": 2 } },
+                                      "call_reset_5_ensures_Preset_5": 
+                                        { "alt-ergo": { "total": 1,
+                                                        "valid": 1,
+                                                        "rank": 1 },
                                           "wp:main": { "total": 1,
-                                                       "valid": 1 } },
-                                      "call_reset_5_assign": { "qed": 
-                                                                 { "total": 2,
-                                                                   "valid": 2 },
-                                                               "wp:main": 
-                                                                 { "total": 2,
-                                                                   "valid": 2 } },
-                                      "call_reset_5_post_Preset_5": { "alt-ergo": 
-                                                                    { "total": 1,
-                                                                    "valid": 1,
-                                                                    "rank": 1 },
-                                                                    "wp:main": 
-                                                                    { "total": 1,
-                                                                    "valid": 1,
-                                                                    "rank": 1 } },
+                                                       "valid": 1,
+                                                       "rank": 1 } },
                                       "wp:section": { "alt-ergo": { "total": 1,
                                                                     "valid": 1,
                                                                     "rank": 1 },
@@ -55,17 +57,18 @@
                                                       "wp:main": { "total": 4,
                                                                    "valid": 4,
                                                                    "rank": 1 } } },
-                    "call_reset_5_tps": { "specialization_reset_5_pre_at_call_reset_5_tps_stmt_11": 
-                                            { "qed": { "total": 1,
-                                                       "valid": 1 },
-                                              "wp:main": { "total": 1,
-                                                           "valid": 1 } },
-                                          "call_reset_5_tps_assign": 
+                    "call_reset_5_tps": { "reset_5_requires_2": { "qed": 
+                                                                    { "total": 1,
+                                                                    "valid": 1 },
+                                                                  "wp:main": 
+                                                                    { "total": 1,
+                                                                    "valid": 1 } },
+                                          "call_reset_5_tps_assigns": 
                                             { "qed": { "total": 2,
                                                        "valid": 2 },
                                               "wp:main": { "total": 2,
                                                            "valid": 2 } },
-                                          "call_reset_5_tps_post_Preset_5_tps": 
+                                          "call_reset_5_tps_ensures_Preset_5_tps": 
                                             { "alt-ergo": { "total": 1,
                                                             "valid": 1,
                                                             "rank": 5 },
@@ -82,17 +85,19 @@
                                                             { "total": 4,
                                                               "valid": 4,
                                                               "rank": 5 } } },
-                    "call_reset_1_5": { "specialization_reset_1_5_pre_at_call_reset_1_5_stmt_14": 
-                                          { "qed": { "total": 1, "valid": 1 },
-                                            "wp:main": { "total": 1,
-                                                         "valid": 1 } },
-                                        "call_reset_1_5_assign": { "qed": 
+                    "call_reset_1_5": { "reset_1_5_requires": { "qed": 
+                                                                  { "total": 1,
+                                                                    "valid": 1 },
+                                                                "wp:main": 
+                                                                  { "total": 1,
+                                                                    "valid": 1 } },
+                                        "call_reset_1_5_assigns": { "qed": 
                                                                     { "total": 2,
                                                                     "valid": 2 },
-                                                                   "wp:main": 
+                                                                    "wp:main": 
                                                                     { "total": 2,
                                                                     "valid": 2 } },
-                                        "call_reset_1_5_post_Presset_mat": 
+                                        "call_reset_1_5_ensures_Presset_mat": 
                                           { "alt-ergo": { "total": 1,
                                                           "valid": 1,
                                                           "rank": 1 },
@@ -107,17 +112,18 @@
                                                         "wp:main": { "total": 4,
                                                                     "valid": 4,
                                                                     "rank": 1 } } },
-                    "call_reset_5_dim2": { "specialization_reset_5_pre_at_call_reset_5_dim2_stmt_17": 
-                                             { "qed": { "total": 1,
-                                                        "valid": 1 },
-                                               "wp:main": { "total": 1,
-                                                            "valid": 1 } },
-                                           "call_reset_5_dim2_assign": 
+                    "call_reset_5_dim2": { "reset_5_requires_3": { "qed": 
+                                                                    { "total": 1,
+                                                                    "valid": 1 },
+                                                                   "wp:main": 
+                                                                    { "total": 1,
+                                                                    "valid": 1 } },
+                                           "call_reset_5_dim2_assigns": 
                                              { "qed": { "total": 2,
                                                         "valid": 2 },
                                                "wp:main": { "total": 2,
                                                             "valid": 2 } },
-                                           "call_reset_5_dim2_post_Presset_mat": 
+                                           "call_reset_5_dim2_ensures_Presset_mat": 
                                              { "alt-ergo": { "total": 1,
                                                              "valid": 1,
                                                              "rank": 1 },
@@ -134,19 +140,19 @@
                                                              { "total": 4,
                                                                "valid": 4,
                                                                "rank": 1 } } },
-                    "call_on_array_in_struct_global": { "specialization_load_5_pre_at_call_on_array_in_struct_global_stmt_20": 
+                    "call_on_array_in_struct_global": { "load_5_requires": 
                                                           { "qed": { "total": 1,
                                                                     "valid": 1 },
                                                             "wp:main": 
                                                               { "total": 1,
                                                                 "valid": 1 } },
-                                                        "call_on_array_in_struct_global_assign": 
+                                                        "call_on_array_in_struct_global_assigns": 
                                                           { "qed": { "total": 2,
                                                                     "valid": 2 },
                                                             "wp:main": 
                                                               { "total": 2,
                                                                 "valid": 2 } },
-                                                        "call_on_array_in_struct_global_post_Pload": 
+                                                        "call_on_array_in_struct_global_ensures_Pload": 
                                                           { "alt-ergo": 
                                                               { "total": 1,
                                                                 "valid": 1,
@@ -166,22 +172,22 @@
                                                               { "total": 4,
                                                                 "valid": 4,
                                                                 "rank": 2 } } },
-                    "call_array_in_struct_param": { "specialization_load_5_pre_at_call_array_in_struct_param_stmt_23": 
+                    "call_array_in_struct_param": { "load_5_requires_2": 
                                                       { "qed": { "total": 1,
                                                                  "valid": 1 },
                                                         "wp:main": { "total": 1,
                                                                     "valid": 1 } },
-                                                    "call_array_in_struct_param_assign": 
+                                                    "call_array_in_struct_param_assigns": 
                                                       { "qed": { "total": 2,
                                                                  "valid": 2 },
                                                         "wp:main": { "total": 2,
                                                                     "valid": 2 } },
-                                                    "call_array_in_struct_param_post_Pload3": 
+                                                    "call_array_in_struct_param_ensures_Pload3": 
                                                       { "qed": { "total": 1,
                                                                  "valid": 1 },
                                                         "wp:main": { "total": 1,
                                                                     "valid": 1 } },
-                                                    "call_array_in_struct_param_post_Pload2": 
+                                                    "call_array_in_struct_param_ensures_Pload2": 
                                                       { "qed": { "total": 1,
                                                                  "valid": 1 },
                                                         "wp:main": { "total": 1,
diff --git a/src/plugins/wp/tests/wp_hoare/reference_array.i.0.report.json b/src/plugins/wp/tests/wp_hoare/reference_array.i.0.report.json
index f08df5e1a234c84644e65d9e64b2b661987a969f..afc36a6dd83fa10a701a7381c560cb30d233ecdc 100644
--- a/src/plugins/wp/tests/wp_hoare/reference_array.i.0.report.json
+++ b/src/plugins/wp/tests/wp_hoare/reference_array.i.0.report.json
@@ -1,19 +1,23 @@
 { "wp:global": { "alt-ergo": { "total": 12, "valid": 12, "rank": 5 },
                  "qed": { "total": 24, "valid": 24 },
                  "wp:main": { "total": 36, "valid": 36, "rank": 5 } },
-  "wp:functions": { "reset_1_5": { "specialization_reset_5_pre_at_reset_1_5_stmt_1": 
-                                     { "qed": { "total": 1, "valid": 1 },
-                                       "wp:main": { "total": 1, "valid": 1 } },
-                                   "reset_1_5_assign": { "qed": { "total": 2,
-                                                                  "valid": 2 },
-                                                         "wp:main": { "total": 2,
-                                                                    "valid": 2 } },
-                                   "reset_1_5_post": { "alt-ergo": { "total": 1,
-                                                                    "valid": 1,
-                                                                    "rank": 5 },
-                                                       "wp:main": { "total": 1,
-                                                                    "valid": 1,
-                                                                    "rank": 5 } },
+  "wp:functions": { "reset_1_5": { "reset_5_requires": { "qed": { "total": 1,
+                                                                  "valid": 1 },
+                                                         "wp:main": { "total": 1,
+                                                                    "valid": 1 } },
+                                   "reset_1_5_assigns": { "qed": { "total": 2,
+                                                                   "valid": 2 },
+                                                          "wp:main": 
+                                                            { "total": 2,
+                                                              "valid": 2 } },
+                                   "reset_1_5_ensures": { "alt-ergo": 
+                                                            { "total": 1,
+                                                              "valid": 1,
+                                                              "rank": 5 },
+                                                          "wp:main": 
+                                                            { "total": 1,
+                                                              "valid": 1,
+                                                              "rank": 5 } },
                                    "wp:section": { "alt-ergo": { "total": 1,
                                                                  "valid": 1,
                                                                  "rank": 5 },
@@ -22,19 +26,20 @@
                                                    "wp:main": { "total": 4,
                                                                 "valid": 4,
                                                                 "rank": 5 } } },
-                    "load_1_5": { "specialization_load_5_pre_at_load_1_5_stmt_4": 
-                                    { "qed": { "total": 1, "valid": 1 },
-                                      "wp:main": { "total": 1, "valid": 1 } },
-                                  "load_1_5_assign": { "qed": { "total": 2,
-                                                                "valid": 2 },
-                                                       "wp:main": { "total": 2,
+                    "load_1_5": { "load_5_requires": { "qed": { "total": 1,
+                                                                "valid": 1 },
+                                                       "wp:main": { "total": 1,
+                                                                    "valid": 1 } },
+                                  "load_1_5_assigns": { "qed": { "total": 2,
+                                                                 "valid": 2 },
+                                                        "wp:main": { "total": 2,
                                                                     "valid": 2 } },
-                                  "load_1_5_post": { "alt-ergo": { "total": 1,
-                                                                   "valid": 1,
-                                                                   "rank": 4 },
-                                                     "wp:main": { "total": 1,
-                                                                  "valid": 1,
-                                                                  "rank": 4 } },
+                                  "load_1_5_ensures": { "alt-ergo": { "total": 1,
+                                                                    "valid": 1,
+                                                                    "rank": 4 },
+                                                        "wp:main": { "total": 1,
+                                                                    "valid": 1,
+                                                                    "rank": 4 } },
                                   "wp:section": { "alt-ergo": { "total": 1,
                                                                 "valid": 1,
                                                                 "rank": 4 },
@@ -43,19 +48,20 @@
                                                   "wp:main": { "total": 4,
                                                                "valid": 4,
                                                                "rank": 4 } } },
-                    "add_1_5": { "specialization_add_5_pre_at_add_1_5_stmt_7": 
-                                   { "qed": { "total": 1, "valid": 1 },
-                                     "wp:main": { "total": 1, "valid": 1 } },
-                                 "add_1_5_assign": { "qed": { "total": 2,
-                                                              "valid": 2 },
-                                                     "wp:main": { "total": 2,
-                                                                  "valid": 2 } },
-                                 "add_1_5_post": { "alt-ergo": { "total": 1,
-                                                                 "valid": 1,
-                                                                 "rank": 4 },
-                                                   "wp:main": { "total": 1,
-                                                                "valid": 1,
-                                                                "rank": 4 } },
+                    "add_1_5": { "add_5_requires": { "qed": { "total": 1,
+                                                              "valid": 1 },
+                                                     "wp:main": { "total": 1,
+                                                                  "valid": 1 } },
+                                 "add_1_5_assigns": { "qed": { "total": 2,
+                                                               "valid": 2 },
+                                                      "wp:main": { "total": 2,
+                                                                   "valid": 2 } },
+                                 "add_1_5_ensures": { "alt-ergo": { "total": 1,
+                                                                    "valid": 1,
+                                                                    "rank": 4 },
+                                                      "wp:main": { "total": 1,
+                                                                   "valid": 1,
+                                                                   "rank": 4 } },
                                  "wp:section": { "alt-ergo": { "total": 1,
                                                                "valid": 1,
                                                                "rank": 4 },
@@ -64,41 +70,44 @@
                                                  "wp:main": { "total": 4,
                                                               "valid": 4,
                                                               "rank": 4 } } },
-                    "calls_on_array_dim_1": { "specialization_add_5_pre_at_calls_on_array_dim_1_stmt_12": 
-                                                { "qed": { "total": 1,
-                                                           "valid": 1 },
-                                                  "wp:main": { "total": 1,
-                                                               "valid": 1 } },
-                                              "specialization_reset_5_pre_at_calls_on_array_dim_1_stmt_11": 
-                                                { "qed": { "total": 1,
-                                                           "valid": 1 },
-                                                  "wp:main": { "total": 1,
-                                                               "valid": 1 } },
-                                              "specialization_load_5_pre_at_calls_on_array_dim_1_stmt_10": 
-                                                { "qed": { "total": 1,
-                                                           "valid": 1 },
-                                                  "wp:main": { "total": 1,
-                                                               "valid": 1 } },
-                                              "calls_on_array_dim_1_assign": 
+                    "calls_on_array_dim_1": { "add_5_requires_2": { "qed": 
+                                                                    { "total": 1,
+                                                                    "valid": 1 },
+                                                                    "wp:main": 
+                                                                    { "total": 1,
+                                                                    "valid": 1 } },
+                                              "reset_5_requires_2": { "qed": 
+                                                                    { "total": 1,
+                                                                    "valid": 1 },
+                                                                    "wp:main": 
+                                                                    { "total": 1,
+                                                                    "valid": 1 } },
+                                              "load_5_requires_2": { "qed": 
+                                                                    { "total": 1,
+                                                                    "valid": 1 },
+                                                                    "wp:main": 
+                                                                    { "total": 1,
+                                                                    "valid": 1 } },
+                                              "calls_on_array_dim_1_assigns": 
                                                 { "qed": { "total": 2,
                                                            "valid": 2 },
                                                   "wp:main": { "total": 2,
                                                                "valid": 2 } },
-                                              "calls_on_array_dim_1_post_Padd": 
+                                              "calls_on_array_dim_1_ensures_Padd": 
                                                 { "alt-ergo": { "total": 1,
                                                                 "valid": 1,
                                                                 "rank": 3 },
                                                   "wp:main": { "total": 1,
                                                                "valid": 1,
                                                                "rank": 3 } },
-                                              "calls_on_array_dim_1_post_Preset": 
+                                              "calls_on_array_dim_1_ensures_Preset": 
                                                 { "alt-ergo": { "total": 1,
                                                                 "valid": 1,
                                                                 "rank": 1 },
                                                   "wp:main": { "total": 1,
                                                                "valid": 1,
                                                                "rank": 1 } },
-                                              "calls_on_array_dim_1_post_Pload": 
+                                              "calls_on_array_dim_1_ensures_Pload": 
                                                 { "alt-ergo": { "total": 1,
                                                                 "valid": 1,
                                                                 "rank": 1 },
@@ -116,41 +125,41 @@
                                                                 { "total": 8,
                                                                   "valid": 8,
                                                                   "rank": 3 } } },
-                    "calls_on_array_dim_2_to_1": { "specialization_add_5_pre_at_calls_on_array_dim_2_to_1_stmt_17": 
+                    "calls_on_array_dim_2_to_1": { "add_5_requires_3": 
                                                      { "qed": { "total": 1,
                                                                 "valid": 1 },
                                                        "wp:main": { "total": 1,
                                                                     "valid": 1 } },
-                                                   "specialization_reset_5_pre_at_calls_on_array_dim_2_to_1_stmt_16": 
+                                                   "reset_5_requires_3": 
                                                      { "qed": { "total": 1,
                                                                 "valid": 1 },
                                                        "wp:main": { "total": 1,
                                                                     "valid": 1 } },
-                                                   "specialization_load_5_pre_at_calls_on_array_dim_2_to_1_stmt_15": 
+                                                   "load_5_requires_3": 
                                                      { "qed": { "total": 1,
                                                                 "valid": 1 },
                                                        "wp:main": { "total": 1,
                                                                     "valid": 1 } },
-                                                   "calls_on_array_dim_2_to_1_assign": 
+                                                   "calls_on_array_dim_2_to_1_assigns": 
                                                      { "qed": { "total": 2,
                                                                 "valid": 2 },
                                                        "wp:main": { "total": 2,
                                                                     "valid": 2 } },
-                                                   "calls_on_array_dim_2_to_1_post_Padd": 
+                                                   "calls_on_array_dim_2_to_1_ensures_Padd": 
                                                      { "alt-ergo": { "total": 1,
                                                                     "valid": 1,
                                                                     "rank": 3 },
                                                        "wp:main": { "total": 1,
                                                                     "valid": 1,
                                                                     "rank": 3 } },
-                                                   "calls_on_array_dim_2_to_1_post_Preset": 
+                                                   "calls_on_array_dim_2_to_1_ensures_Preset": 
                                                      { "alt-ergo": { "total": 1,
                                                                     "valid": 1,
                                                                     "rank": 2 },
                                                        "wp:main": { "total": 1,
                                                                     "valid": 1,
                                                                     "rank": 2 } },
-                                                   "calls_on_array_dim_2_to_1_post_Pload": 
+                                                   "calls_on_array_dim_2_to_1_ensures_Pload": 
                                                      { "alt-ergo": { "total": 1,
                                                                     "valid": 1,
                                                                     "rank": 2 },
@@ -168,41 +177,44 @@
                                                                     { "total": 8,
                                                                     "valid": 8,
                                                                     "rank": 3 } } },
-                    "calls_on_array_dim_2": { "specialization_add_1_5_pre_at_calls_on_array_dim_2_stmt_22": 
-                                                { "qed": { "total": 1,
-                                                           "valid": 1 },
-                                                  "wp:main": { "total": 1,
-                                                               "valid": 1 } },
-                                              "specialization_reset_1_5_pre_at_calls_on_array_dim_2_stmt_21": 
-                                                { "qed": { "total": 1,
-                                                           "valid": 1 },
-                                                  "wp:main": { "total": 1,
-                                                               "valid": 1 } },
-                                              "specialization_load_1_5_pre_at_calls_on_array_dim_2_stmt_20": 
-                                                { "qed": { "total": 1,
-                                                           "valid": 1 },
-                                                  "wp:main": { "total": 1,
-                                                               "valid": 1 } },
-                                              "calls_on_array_dim_2_assign": 
+                    "calls_on_array_dim_2": { "add_1_5_requires": { "qed": 
+                                                                    { "total": 1,
+                                                                    "valid": 1 },
+                                                                    "wp:main": 
+                                                                    { "total": 1,
+                                                                    "valid": 1 } },
+                                              "reset_1_5_requires": { "qed": 
+                                                                    { "total": 1,
+                                                                    "valid": 1 },
+                                                                    "wp:main": 
+                                                                    { "total": 1,
+                                                                    "valid": 1 } },
+                                              "load_1_5_requires": { "qed": 
+                                                                    { "total": 1,
+                                                                    "valid": 1 },
+                                                                    "wp:main": 
+                                                                    { "total": 1,
+                                                                    "valid": 1 } },
+                                              "calls_on_array_dim_2_assigns": 
                                                 { "qed": { "total": 2,
                                                            "valid": 2 },
                                                   "wp:main": { "total": 2,
                                                                "valid": 2 } },
-                                              "calls_on_array_dim_2_post_Padd": 
+                                              "calls_on_array_dim_2_ensures_Padd": 
                                                 { "alt-ergo": { "total": 1,
                                                                 "valid": 1,
                                                                 "rank": 2 },
                                                   "wp:main": { "total": 1,
                                                                "valid": 1,
                                                                "rank": 2 } },
-                                              "calls_on_array_dim_2_post_Preset": 
+                                              "calls_on_array_dim_2_ensures_Preset": 
                                                 { "alt-ergo": { "total": 1,
                                                                 "valid": 1,
                                                                 "rank": 1 },
                                                   "wp:main": { "total": 1,
                                                                "valid": 1,
                                                                "rank": 1 } },
-                                              "calls_on_array_dim_2_post_Pload": 
+                                              "calls_on_array_dim_2_ensures_Pload": 
                                                 { "alt-ergo": { "total": 1,
                                                                 "valid": 1,
                                                                 "rank": 1 },
diff --git a/src/plugins/wp/tests/wp_hoare/reference_array_simple.i.0.report.json b/src/plugins/wp/tests/wp_hoare/reference_array_simple.i.0.report.json
index d0cb543fa661ca129665804fc149c1e6fa7028d8..141e4abc28d6c2dd4cb136fb06f3a734b4a33a0d 100644
--- a/src/plugins/wp/tests/wp_hoare/reference_array_simple.i.0.report.json
+++ b/src/plugins/wp/tests/wp_hoare/reference_array_simple.i.0.report.json
@@ -1,25 +1,25 @@
 { "wp:global": { "qed": { "total": 3, "valid": 3 },
                  "wp:main": { "total": 3, "valid": 3 } },
-  "wp:functions": { "call_f1": { "call_f1_post": { "qed": { "total": 1,
-                                                            "valid": 1 },
-                                                   "wp:main": { "total": 1,
-                                                                "valid": 1 } },
+  "wp:functions": { "call_f1": { "call_f1_ensures": { "qed": { "total": 1,
+                                                               "valid": 1 },
+                                                      "wp:main": { "total": 1,
+                                                                   "valid": 1 } },
                                  "wp:section": { "qed": { "total": 1,
                                                           "valid": 1 },
                                                  "wp:main": { "total": 1,
                                                               "valid": 1 } } },
-                    "call_f2": { "call_f2_post": { "qed": { "total": 1,
-                                                            "valid": 1 },
-                                                   "wp:main": { "total": 1,
-                                                                "valid": 1 } },
+                    "call_f2": { "call_f2_ensures": { "qed": { "total": 1,
+                                                               "valid": 1 },
+                                                      "wp:main": { "total": 1,
+                                                                   "valid": 1 } },
                                  "wp:section": { "qed": { "total": 1,
                                                           "valid": 1 },
                                                  "wp:main": { "total": 1,
                                                               "valid": 1 } } },
-                    "call_f3": { "call_f3_post": { "qed": { "total": 1,
-                                                            "valid": 1 },
-                                                   "wp:main": { "total": 1,
-                                                                "valid": 1 } },
+                    "call_f3": { "call_f3_ensures": { "qed": { "total": 1,
+                                                               "valid": 1 },
+                                                      "wp:main": { "total": 1,
+                                                                   "valid": 1 } },
                                  "wp:section": { "qed": { "total": 1,
                                                           "valid": 1 },
                                                  "wp:main": { "total": 1,
diff --git a/src/plugins/wp/tests/wp_hoare/refguards.i.0.report.json b/src/plugins/wp/tests/wp_hoare/refguards.i.0.report.json
index 88f4779426b0fa72d0eea82493ed95404b7457fd..02d281f75bfcfef691acc66dd7f28ed4b95baee6 100644
--- a/src/plugins/wp/tests/wp_hoare/refguards.i.0.report.json
+++ b/src/plugins/wp/tests/wp_hoare/refguards.i.0.report.json
@@ -1,46 +1,51 @@
 { "wp:global": { "alt-ergo": { "total": 2, "valid": 1, "unknown": 1,
-                               "rank": 3 },
+                               "rank": 4 },
                  "qed": { "total": 7, "valid": 7 },
                  "wp:main": { "total": 9, "valid": 8, "unknown": 1,
-                              "rank": 3 } },
-  "wp:functions": { "f": { "f_post": { "qed": { "total": 1, "valid": 1 },
-                                       "wp:main": { "total": 1, "valid": 1 } },
+                              "rank": 4 } },
+  "wp:functions": { "f": { "f_ensures": { "qed": { "total": 1, "valid": 1 },
+                                          "wp:main": { "total": 1,
+                                                       "valid": 1 } },
                            "wp:section": { "qed": { "total": 1, "valid": 1 },
                                            "wp:main": { "total": 1,
                                                         "valid": 1 } } },
-                    "g": { "g_post": { "alt-ergo": { "total": 1, "valid": 1,
-                                                     "rank": 3 },
-                                       "wp:main": { "total": 1, "valid": 1,
-                                                    "rank": 3 } },
+                    "g": { "g_ensures": { "alt-ergo": { "total": 1,
+                                                        "valid": 1,
+                                                        "rank": 4 },
+                                          "wp:main": { "total": 1,
+                                                       "valid": 1,
+                                                       "rank": 4 } },
                            "wp:section": { "alt-ergo": { "total": 1,
                                                          "valid": 1,
-                                                         "rank": 3 },
+                                                         "rank": 4 },
                                            "wp:main": { "total": 1,
                                                         "valid": 1,
-                                                        "rank": 3 } } },
-                    "h": { "h_post": { "qed": { "total": 1, "valid": 1 },
-                                       "wp:main": { "total": 1, "valid": 1 } },
+                                                        "rank": 4 } } },
+                    "h": { "h_ensures": { "qed": { "total": 1, "valid": 1 },
+                                          "wp:main": { "total": 1,
+                                                       "valid": 1 } },
                            "wp:section": { "qed": { "total": 1, "valid": 1 },
                                            "wp:main": { "total": 1,
                                                         "valid": 1 } } },
-                    "s": { "s_post_KO": { "alt-ergo": { "total": 1,
-                                                        "unknown": 1 },
+                    "s": { "s_ensures_KO": { "alt-ergo": { "total": 1,
+                                                           "unknown": 1 },
+                                             "wp:main": { "total": 1,
+                                                          "unknown": 1 } },
+                           "s_ensures_5": { "qed": { "total": 1, "valid": 1 },
+                                            "wp:main": { "total": 1,
+                                                         "valid": 1 } },
+                           "s_ensures_4": { "qed": { "total": 1, "valid": 1 },
+                                            "wp:main": { "total": 1,
+                                                         "valid": 1 } },
+                           "s_ensures_3": { "qed": { "total": 1, "valid": 1 },
+                                            "wp:main": { "total": 1,
+                                                         "valid": 1 } },
+                           "s_ensures_2": { "qed": { "total": 1, "valid": 1 },
+                                            "wp:main": { "total": 1,
+                                                         "valid": 1 } },
+                           "s_ensures": { "qed": { "total": 1, "valid": 1 },
                                           "wp:main": { "total": 1,
-                                                       "unknown": 1 } },
-                           "s_post_5": { "qed": { "total": 1, "valid": 1 },
-                                         "wp:main": { "total": 1,
-                                                      "valid": 1 } },
-                           "s_post_4": { "qed": { "total": 1, "valid": 1 },
-                                         "wp:main": { "total": 1,
-                                                      "valid": 1 } },
-                           "s_post_3": { "qed": { "total": 1, "valid": 1 },
-                                         "wp:main": { "total": 1,
-                                                      "valid": 1 } },
-                           "s_post_2": { "qed": { "total": 1, "valid": 1 },
-                                         "wp:main": { "total": 1,
-                                                      "valid": 1 } },
-                           "s_post": { "qed": { "total": 1, "valid": 1 },
-                                       "wp:main": { "total": 1, "valid": 1 } },
+                                                       "valid": 1 } },
                            "wp:section": { "alt-ergo": { "total": 1,
                                                          "unknown": 1 },
                                            "qed": { "total": 5, "valid": 5 },
diff --git a/src/plugins/wp/tests/wp_manual/manual.i.0.report.json b/src/plugins/wp/tests/wp_manual/manual.i.0.report.json
index 62c79a858389498c09fa6c359bb4ade661400b99..56d70788f4a0e66431a39e3c53a69b41dfa3637e 100644
--- a/src/plugins/wp/tests/wp_manual/manual.i.0.report.json
+++ b/src/plugins/wp/tests/wp_manual/manual.i.0.report.json
@@ -1,21 +1,21 @@
-{ "wp:global": { "alt-ergo": { "total": 1, "valid": 1, "rank": 3 },
+{ "wp:global": { "alt-ergo": { "total": 1, "valid": 1, "rank": 4 },
                  "qed": { "total": 1, "valid": 1 },
-                 "wp:main": { "total": 2, "valid": 2, "rank": 3 } },
-  "wp:functions": { "swap": { "swap_post_B": { "qed": { "total": 1,
-                                                        "valid": 1 },
-                                               "wp:main": { "total": 1,
-                                                            "valid": 1 } },
-                              "swap_post_A": { "alt-ergo": { "total": 1,
-                                                             "valid": 1,
-                                                             "rank": 3 },
-                                               "wp:main": { "total": 1,
-                                                            "valid": 1,
-                                                            "rank": 3 } },
+                 "wp:main": { "total": 2, "valid": 2, "rank": 4 } },
+  "wp:functions": { "swap": { "swap_ensures_B": { "qed": { "total": 1,
+                                                           "valid": 1 },
+                                                  "wp:main": { "total": 1,
+                                                               "valid": 1 } },
+                              "swap_ensures_A": { "alt-ergo": { "total": 1,
+                                                                "valid": 1,
+                                                                "rank": 4 },
+                                                  "wp:main": { "total": 1,
+                                                               "valid": 1,
+                                                               "rank": 4 } },
                               "wp:section": { "alt-ergo": { "total": 1,
                                                             "valid": 1,
-                                                            "rank": 3 },
+                                                            "rank": 4 },
                                               "qed": { "total": 1,
                                                        "valid": 1 },
                                               "wp:main": { "total": 2,
                                                            "valid": 2,
-                                                           "rank": 3 } } } } }
+                                                           "rank": 4 } } } } }
diff --git a/src/plugins/wp/tests/wp_manual/manual.i.1.report.json b/src/plugins/wp/tests/wp_manual/manual.i.1.report.json
index efbb2d39bc1807b27fa1d09c7e0b1499dd5c8579..46e1782afb0298f8138bb4284be77678fd69093c 100644
--- a/src/plugins/wp/tests/wp_manual/manual.i.1.report.json
+++ b/src/plugins/wp/tests/wp_manual/manual.i.1.report.json
@@ -29,20 +29,20 @@
                                                                 { "total": 1,
                                                                   "valid": 1,
                                                                   "rank": 4 } },
-                              "swap_assign": { "qed": { "total": 2,
-                                                        "valid": 2 },
-                                               "wp:main": { "total": 2,
-                                                            "valid": 2 } },
-                              "swap_post_B": { "qed": { "total": 1,
-                                                        "valid": 1 },
-                                               "wp:main": { "total": 1,
-                                                            "valid": 1 } },
-                              "swap_post_A": { "alt-ergo": { "total": 1,
-                                                             "valid": 1,
-                                                             "rank": 5 },
-                                               "wp:main": { "total": 1,
-                                                            "valid": 1,
-                                                            "rank": 5 } },
+                              "swap_assigns": { "qed": { "total": 2,
+                                                         "valid": 2 },
+                                                "wp:main": { "total": 2,
+                                                             "valid": 2 } },
+                              "swap_ensures_B": { "qed": { "total": 1,
+                                                           "valid": 1 },
+                                                  "wp:main": { "total": 1,
+                                                               "valid": 1 } },
+                              "swap_ensures_A": { "alt-ergo": { "total": 1,
+                                                                "valid": 1,
+                                                                "rank": 5 },
+                                                  "wp:main": { "total": 1,
+                                                               "valid": 1,
+                                                               "rank": 5 } },
                               "wp:section": { "alt-ergo": { "total": 3,
                                                             "valid": 3,
                                                             "rank": 5 },
diff --git a/src/plugins/wp/tests/wp_manual/manual.i.2.report.json b/src/plugins/wp/tests/wp_manual/manual.i.2.report.json
index efbb2d39bc1807b27fa1d09c7e0b1499dd5c8579..46e1782afb0298f8138bb4284be77678fd69093c 100644
--- a/src/plugins/wp/tests/wp_manual/manual.i.2.report.json
+++ b/src/plugins/wp/tests/wp_manual/manual.i.2.report.json
@@ -29,20 +29,20 @@
                                                                 { "total": 1,
                                                                   "valid": 1,
                                                                   "rank": 4 } },
-                              "swap_assign": { "qed": { "total": 2,
-                                                        "valid": 2 },
-                                               "wp:main": { "total": 2,
-                                                            "valid": 2 } },
-                              "swap_post_B": { "qed": { "total": 1,
-                                                        "valid": 1 },
-                                               "wp:main": { "total": 1,
-                                                            "valid": 1 } },
-                              "swap_post_A": { "alt-ergo": { "total": 1,
-                                                             "valid": 1,
-                                                             "rank": 5 },
-                                               "wp:main": { "total": 1,
-                                                            "valid": 1,
-                                                            "rank": 5 } },
+                              "swap_assigns": { "qed": { "total": 2,
+                                                         "valid": 2 },
+                                                "wp:main": { "total": 2,
+                                                             "valid": 2 } },
+                              "swap_ensures_B": { "qed": { "total": 1,
+                                                           "valid": 1 },
+                                                  "wp:main": { "total": 1,
+                                                               "valid": 1 } },
+                              "swap_ensures_A": { "alt-ergo": { "total": 1,
+                                                                "valid": 1,
+                                                                "rank": 5 },
+                                                  "wp:main": { "total": 1,
+                                                               "valid": 1,
+                                                               "rank": 5 } },
                               "wp:section": { "alt-ergo": { "total": 3,
                                                             "valid": 3,
                                                             "rank": 5 },
diff --git a/src/plugins/wp/tests/wp_manual/oracle_qualif/manual.0.res.oracle b/src/plugins/wp/tests/wp_manual/oracle_qualif/manual.0.res.oracle
index 544488b6ffeabfb22b20a9f6edf1ee77a916fe5e..86b06c6e37c50d57f64e004b89391ceee3552108 100644
--- a/src/plugins/wp/tests/wp_manual/oracle_qualif/manual.0.res.oracle
+++ b/src/plugins/wp/tests/wp_manual/oracle_qualif/manual.0.res.oracle
@@ -6,13 +6,13 @@
 [wp] Loading driver 'share/wp.driver'
 [wp] Warning: Missing RTE guards
 [wp] 2 goals scheduled
-[wp] [Alt-Ergo] Goal typed_swap_post_A : Valid
-[wp] [Qed] Goal typed_swap_post_B : Valid
+[wp] [Alt-Ergo] Goal typed_swap_ensures_A : Valid
+[wp] [Qed] Goal typed_swap_ensures_B : Valid
 [wp] Proved goals:    2 / 2
   Qed:             1 
   Alt-Ergo:        1
 [wp] Report 'tests/wp_manual/manual.i.0.report.json'
 -------------------------------------------------------------
 Functions           WP     Alt-Ergo        Total   Success
-swap                 1      1 (8..20)        2       100%
+swap                 1      1 (12..24)       2       100%
 -------------------------------------------------------------
diff --git a/src/plugins/wp/tests/wp_manual/oracle_qualif/manual.1.res.oracle b/src/plugins/wp/tests/wp_manual/oracle_qualif/manual.1.res.oracle
index ce53f53550afbe73654e48a60ffee65575721761..7380ed072cd7b881d8ce63f92d4a61f2d6980a1d 100644
--- a/src/plugins/wp/tests/wp_manual/oracle_qualif/manual.1.res.oracle
+++ b/src/plugins/wp/tests/wp_manual/oracle_qualif/manual.1.res.oracle
@@ -6,14 +6,14 @@
 [wp] Loading driver 'share/wp.driver'
 [rte] annotating function swap
 [wp] 8 goals scheduled
-[wp] [Alt-Ergo] Goal typed_swap_post_A : Valid
-[wp] [Qed] Goal typed_swap_post_B : Valid
+[wp] [Alt-Ergo] Goal typed_swap_ensures_A : Valid
+[wp] [Qed] Goal typed_swap_ensures_B : Valid
 [wp] [Alt-Ergo] Goal typed_swap_assert_rte_mem_access : Valid
 [wp] [Qed] Goal typed_swap_assert_rte_mem_access_2 : Valid
 [wp] [Alt-Ergo] Goal typed_swap_assert_rte_mem_access_3 : Valid
 [wp] [Qed] Goal typed_swap_assert_rte_mem_access_4 : Valid
-[wp] [Qed] Goal typed_swap_assign_part1 : Valid
-[wp] [Qed] Goal typed_swap_assign_part2 : Valid
+[wp] [Qed] Goal typed_swap_assigns_part1 : Valid
+[wp] [Qed] Goal typed_swap_assigns_part2 : Valid
 [wp] Proved goals:    8 / 8
   Qed:             5 
   Alt-Ergo:        3
diff --git a/src/plugins/wp/tests/wp_plugin/abs.i.0.report.json b/src/plugins/wp/tests/wp_plugin/abs.i.0.report.json
index d49378e2cfe226f518e0b7ab11465a8d7c7b9ef6..a80a2d1beca3dd9464d3a58c09fde1529bcb255b 100644
--- a/src/plugins/wp/tests/wp_plugin/abs.i.0.report.json
+++ b/src/plugins/wp/tests/wp_plugin/abs.i.0.report.json
@@ -1,11 +1,11 @@
 { "wp:global": { "alt-ergo": { "total": 1, "valid": 1, "rank": 2 },
                  "wp:main": { "total": 1, "valid": 1, "rank": 2 } },
-  "wp:functions": { "abs": { "abs_post": { "alt-ergo": { "total": 1,
-                                                         "valid": 1,
-                                                         "rank": 2 },
-                                           "wp:main": { "total": 1,
-                                                        "valid": 1,
-                                                        "rank": 2 } },
+  "wp:functions": { "abs": { "abs_ensures": { "alt-ergo": { "total": 1,
+                                                            "valid": 1,
+                                                            "rank": 2 },
+                                              "wp:main": { "total": 1,
+                                                           "valid": 1,
+                                                           "rank": 2 } },
                              "wp:section": { "alt-ergo": { "total": 1,
                                                            "valid": 1,
                                                            "rank": 2 },
diff --git a/src/plugins/wp/tests/wp_plugin/abs.i.1.report.json b/src/plugins/wp/tests/wp_plugin/abs.i.1.report.json
index 27343d990c515b76cc77f026eb2a7de2885e4c86..615d8ae63ebf4d3fccadd739c10ae1950a5e07e3 100644
--- a/src/plugins/wp/tests/wp_plugin/abs.i.1.report.json
+++ b/src/plugins/wp/tests/wp_plugin/abs.i.1.report.json
@@ -1,8 +1,9 @@
 { "wp:global": { "coq": { "total": 1, "valid": 1 },
                  "wp:main": { "total": 1, "valid": 1 } },
-  "wp:functions": { "abs": { "abs_post": { "coq": { "total": 1, "valid": 1 },
-                                           "wp:main": { "total": 1,
-                                                        "valid": 1 } },
+  "wp:functions": { "abs": { "abs_ensures": { "coq": { "total": 1,
+                                                       "valid": 1 },
+                                              "wp:main": { "total": 1,
+                                                           "valid": 1 } },
                              "wp:section": { "coq": { "total": 1,
                                                       "valid": 1 },
                                              "wp:main": { "total": 1,
diff --git a/src/plugins/wp/tests/wp_plugin/abs.i.2.report.json b/src/plugins/wp/tests/wp_plugin/abs.i.2.report.json
index fed0840ce12d0b93fe41b8992c82069801a6d03e..5944569879bbc4a26e7e36baafcebf4d3ad9fd30 100644
--- a/src/plugins/wp/tests/wp_plugin/abs.i.2.report.json
+++ b/src/plugins/wp/tests/wp_plugin/abs.i.2.report.json
@@ -1,9 +1,9 @@
 { "wp:global": { "why3:alt-ergo": { "total": 1, "valid": 1 },
                  "wp:main": { "total": 1, "valid": 1 } },
-  "wp:functions": { "abs": { "abs_post": { "why3:alt-ergo": { "total": 1,
-                                                              "valid": 1 },
-                                           "wp:main": { "total": 1,
-                                                        "valid": 1 } },
+  "wp:functions": { "abs": { "abs_ensures": { "why3:alt-ergo": { "total": 1,
+                                                                 "valid": 1 },
+                                              "wp:main": { "total": 1,
+                                                           "valid": 1 } },
                              "wp:section": { "why3:alt-ergo": { "total": 1,
                                                                 "valid": 1 },
                                              "wp:main": { "total": 1,
diff --git a/src/plugins/wp/tests/wp_plugin/abs.script b/src/plugins/wp/tests/wp_plugin/abs.script
index d00a1a3f2935dad4ea4579e27314b7dc2ab20ed6..9cd057bc899e0c3eb3e7285df7c5edf7f9e736f5 100644
--- a/src/plugins/wp/tests/wp_plugin/abs.script
+++ b/src/plugins/wp/tests/wp_plugin/abs.script
@@ -1,6 +1,6 @@
 (* Generated by Frama-C WP *)
 
-Goal typed_abs_abs_post.
+Goal typed_abs_abs_ensures.
 Hint abs,default,property.
 Proof.
   intro n. intros. subst.
diff --git a/src/plugins/wp/tests/wp_plugin/asm.i.0.report.json b/src/plugins/wp/tests/wp_plugin/asm.i.0.report.json
index b9104446f42b30ae70b732be612bf00fc2e61fd1..f12a169da4eebf3f8cc384e0249786c3c213bd82 100644
--- a/src/plugins/wp/tests/wp_plugin/asm.i.0.report.json
+++ b/src/plugins/wp/tests/wp_plugin/asm.i.0.report.json
@@ -9,10 +9,10 @@
                                                            "valid": 1 },
                                                   "wp:main": { "total": 1,
                                                                "valid": 1 } },
-                              "main_stmt_assign": { "alt-ergo": { "total": 1,
-                                                                  "unknown": 1 },
-                                                    "wp:main": { "total": 1,
-                                                                 "unknown": 1 } },
+                              "main_assigns": { "alt-ergo": { "total": 1,
+                                                              "unknown": 1 },
+                                                "wp:main": { "total": 1,
+                                                             "unknown": 1 } },
                               "wp:section": { "alt-ergo": { "total": 2,
                                                             "unknown": 2 },
                                               "qed": { "total": 1,
diff --git a/src/plugins/wp/tests/wp_plugin/bool.i.0.report.json b/src/plugins/wp/tests/wp_plugin/bool.i.0.report.json
index 54525d65b41036b914ebf2d11d08d60d63f7adcd..ed33644f6dfc6d57962bddc5fa958e5a0d8773b3 100644
--- a/src/plugins/wp/tests/wp_plugin/bool.i.0.report.json
+++ b/src/plugins/wp/tests/wp_plugin/bool.i.0.report.json
@@ -3,28 +3,28 @@
                  "qed": { "total": 2, "valid": 2 },
                  "wp:main": { "total": 7, "valid": 3, "unknown": 4,
                               "rank": 2 } },
-  "wp:functions": { "job": { "job_post": { "alt-ergo": { "total": 1,
-                                                         "unknown": 1 },
-                                           "wp:main": { "total": 1,
-                                                        "unknown": 1 } },
+  "wp:functions": { "job": { "job_ensures": { "alt-ergo": { "total": 1,
+                                                            "unknown": 1 },
+                                              "wp:main": { "total": 1,
+                                                           "unknown": 1 } },
                              "wp:section": { "alt-ergo": { "total": 1,
                                                            "unknown": 1 },
                                              "wp:main": { "total": 1,
                                                           "unknown": 1 } } },
-                    "bor_bool": { "bor_bool_false_post": { "alt-ergo": 
-                                                             { "total": 1,
-                                                               "unknown": 1 },
-                                                           "wp:main": 
-                                                             { "total": 1,
-                                                               "unknown": 1 } },
-                                  "bor_bool_true_post": { "alt-ergo": 
-                                                            { "total": 1,
-                                                              "valid": 1,
-                                                              "rank": 2 },
-                                                          "wp:main": 
-                                                            { "total": 1,
-                                                              "valid": 1,
-                                                              "rank": 2 } },
+                    "bor_bool": { "bor_bool_false_ensures": { "alt-ergo": 
+                                                                { "total": 1,
+                                                                  "unknown": 1 },
+                                                              "wp:main": 
+                                                                { "total": 1,
+                                                                  "unknown": 1 } },
+                                  "bor_bool_true_ensures": { "alt-ergo": 
+                                                               { "total": 1,
+                                                                 "valid": 1,
+                                                                 "rank": 2 },
+                                                             "wp:main": 
+                                                               { "total": 1,
+                                                                 "valid": 1,
+                                                                 "rank": 2 } },
                                   "wp:section": { "alt-ergo": { "total": 2,
                                                                 "valid": 1,
                                                                 "unknown": 1,
@@ -33,17 +33,18 @@
                                                                "valid": 1,
                                                                "unknown": 1,
                                                                "rank": 2 } } },
-                    "band_bool": { "band_bool_false_post": { "alt-ergo": 
-                                                               { "total": 1,
-                                                                 "unknown": 1 },
-                                                             "wp:main": 
-                                                               { "total": 1,
-                                                                 "unknown": 1 } },
-                                   "band_bool_true_post": { "qed": { "total": 1,
-                                                                    "valid": 1 },
-                                                            "wp:main": 
-                                                              { "total": 1,
-                                                                "valid": 1 } },
+                    "band_bool": { "band_bool_false_ensures": { "alt-ergo": 
+                                                                  { "total": 1,
+                                                                    "unknown": 1 },
+                                                                "wp:main": 
+                                                                  { "total": 1,
+                                                                    "unknown": 1 } },
+                                   "band_bool_true_ensures": { "qed": 
+                                                                 { "total": 1,
+                                                                   "valid": 1 },
+                                                               "wp:main": 
+                                                                 { "total": 1,
+                                                                   "valid": 1 } },
                                    "wp:section": { "alt-ergo": { "total": 1,
                                                                  "unknown": 1 },
                                                    "qed": { "total": 1,
@@ -51,17 +52,18 @@
                                                    "wp:main": { "total": 2,
                                                                 "valid": 1,
                                                                 "unknown": 1 } } },
-                    "bxor_bool": { "bxor_bool_false_post": { "alt-ergo": 
-                                                               { "total": 1,
-                                                                 "unknown": 1 },
-                                                             "wp:main": 
-                                                               { "total": 1,
-                                                                 "unknown": 1 } },
-                                   "bxor_bool_true_post": { "qed": { "total": 1,
-                                                                    "valid": 1 },
-                                                            "wp:main": 
-                                                              { "total": 1,
-                                                                "valid": 1 } },
+                    "bxor_bool": { "bxor_bool_false_ensures": { "alt-ergo": 
+                                                                  { "total": 1,
+                                                                    "unknown": 1 },
+                                                                "wp:main": 
+                                                                  { "total": 1,
+                                                                    "unknown": 1 } },
+                                   "bxor_bool_true_ensures": { "qed": 
+                                                                 { "total": 1,
+                                                                   "valid": 1 },
+                                                               "wp:main": 
+                                                                 { "total": 1,
+                                                                   "valid": 1 } },
                                    "wp:section": { "alt-ergo": { "total": 1,
                                                                  "unknown": 1 },
                                                    "qed": { "total": 1,
diff --git a/src/plugins/wp/tests/wp_plugin/bool.i.1.report.json b/src/plugins/wp/tests/wp_plugin/bool.i.1.report.json
index be8efece9311f9f62736287e7eefb1046b6b18e4..0b7598a6d212be3766522e4f696fa917f304c3ce 100644
--- a/src/plugins/wp/tests/wp_plugin/bool.i.1.report.json
+++ b/src/plugins/wp/tests/wp_plugin/bool.i.1.report.json
@@ -1,53 +1,54 @@
 { "wp:global": { "alt-ergo": { "total": 5, "valid": 5, "rank": 6 },
                  "qed": { "total": 2, "valid": 2 },
                  "wp:main": { "total": 7, "valid": 7, "rank": 6 } },
-  "wp:functions": { "job": { "job_post": { "alt-ergo": { "total": 1,
-                                                         "valid": 1,
-                                                         "rank": 4 },
-                                           "wp:main": { "total": 1,
-                                                        "valid": 1,
-                                                        "rank": 4 } },
+  "wp:functions": { "job": { "job_ensures": { "alt-ergo": { "total": 1,
+                                                            "valid": 1,
+                                                            "rank": 4 },
+                                              "wp:main": { "total": 1,
+                                                           "valid": 1,
+                                                           "rank": 4 } },
                              "wp:section": { "alt-ergo": { "total": 1,
                                                            "valid": 1,
                                                            "rank": 4 },
                                              "wp:main": { "total": 1,
                                                           "valid": 1,
                                                           "rank": 4 } } },
-                    "bor_bool": { "bor_bool_false_post": { "alt-ergo": 
-                                                             { "total": 1,
-                                                               "valid": 1,
-                                                               "rank": 2 },
-                                                           "wp:main": 
-                                                             { "total": 1,
-                                                               "valid": 1,
-                                                               "rank": 2 } },
-                                  "bor_bool_true_post": { "alt-ergo": 
-                                                            { "total": 1,
-                                                              "valid": 1,
-                                                              "rank": 2 },
-                                                          "wp:main": 
-                                                            { "total": 1,
-                                                              "valid": 1,
-                                                              "rank": 2 } },
-                                  "wp:section": { "alt-ergo": { "total": 2,
-                                                                "valid": 2,
-                                                                "rank": 2 },
-                                                  "wp:main": { "total": 2,
-                                                               "valid": 2,
-                                                               "rank": 2 } } },
-                    "band_bool": { "band_bool_false_post": { "alt-ergo": 
+                    "bor_bool": { "bor_bool_false_ensures": { "alt-ergo": 
+                                                                { "total": 1,
+                                                                  "valid": 1,
+                                                                  "rank": 4 },
+                                                              "wp:main": 
+                                                                { "total": 1,
+                                                                  "valid": 1,
+                                                                  "rank": 4 } },
+                                  "bor_bool_true_ensures": { "alt-ergo": 
                                                                { "total": 1,
                                                                  "valid": 1,
-                                                                 "rank": 6 },
+                                                                 "rank": 2 },
                                                              "wp:main": 
                                                                { "total": 1,
                                                                  "valid": 1,
-                                                                 "rank": 6 } },
-                                   "band_bool_true_post": { "qed": { "total": 1,
-                                                                    "valid": 1 },
-                                                            "wp:main": 
-                                                              { "total": 1,
-                                                                "valid": 1 } },
+                                                                 "rank": 2 } },
+                                  "wp:section": { "alt-ergo": { "total": 2,
+                                                                "valid": 2,
+                                                                "rank": 4 },
+                                                  "wp:main": { "total": 2,
+                                                               "valid": 2,
+                                                               "rank": 4 } } },
+                    "band_bool": { "band_bool_false_ensures": { "alt-ergo": 
+                                                                  { "total": 1,
+                                                                    "valid": 1,
+                                                                    "rank": 6 },
+                                                                "wp:main": 
+                                                                  { "total": 1,
+                                                                    "valid": 1,
+                                                                    "rank": 6 } },
+                                   "band_bool_true_ensures": { "qed": 
+                                                                 { "total": 1,
+                                                                   "valid": 1 },
+                                                               "wp:main": 
+                                                                 { "total": 1,
+                                                                   "valid": 1 } },
                                    "wp:section": { "alt-ergo": { "total": 1,
                                                                  "valid": 1,
                                                                  "rank": 6 },
@@ -56,24 +57,25 @@
                                                    "wp:main": { "total": 2,
                                                                 "valid": 2,
                                                                 "rank": 6 } } },
-                    "bxor_bool": { "bxor_bool_false_post": { "alt-ergo": 
-                                                               { "total": 1,
-                                                                 "valid": 1,
-                                                                 "rank": 2 },
-                                                             "wp:main": 
-                                                               { "total": 1,
-                                                                 "valid": 1,
-                                                                 "rank": 2 } },
-                                   "bxor_bool_true_post": { "qed": { "total": 1,
-                                                                    "valid": 1 },
-                                                            "wp:main": 
-                                                              { "total": 1,
-                                                                "valid": 1 } },
+                    "bxor_bool": { "bxor_bool_false_ensures": { "alt-ergo": 
+                                                                  { "total": 1,
+                                                                    "valid": 1,
+                                                                    "rank": 3 },
+                                                                "wp:main": 
+                                                                  { "total": 1,
+                                                                    "valid": 1,
+                                                                    "rank": 3 } },
+                                   "bxor_bool_true_ensures": { "qed": 
+                                                                 { "total": 1,
+                                                                   "valid": 1 },
+                                                               "wp:main": 
+                                                                 { "total": 1,
+                                                                   "valid": 1 } },
                                    "wp:section": { "alt-ergo": { "total": 1,
                                                                  "valid": 1,
-                                                                 "rank": 2 },
+                                                                 "rank": 3 },
                                                    "qed": { "total": 1,
                                                             "valid": 1 },
                                                    "wp:main": { "total": 2,
                                                                 "valid": 2,
-                                                                "rank": 2 } } } } }
+                                                                "rank": 3 } } } } }
diff --git a/src/plugins/wp/tests/wp_plugin/copy.i.0.report.json b/src/plugins/wp/tests/wp_plugin/copy.i.0.report.json
index a0aeba66b5723e0d660ec68c6b67280a7e2800b8..d943dafe4f35ffaeeadcdf96fcc9080f4d7132dd 100644
--- a/src/plugins/wp/tests/wp_plugin/copy.i.0.report.json
+++ b/src/plugins/wp/tests/wp_plugin/copy.i.0.report.json
@@ -1,57 +1,61 @@
-{ "wp:global": { "alt-ergo": { "total": 6, "valid": 6, "rank": 38 },
+{ "wp:global": { "alt-ergo": { "total": 6, "valid": 6, "rank": 39 },
                  "qed": { "total": 4, "valid": 4 },
-                 "wp:main": { "total": 10, "valid": 10, "rank": 38 } },
+                 "wp:main": { "total": 10, "valid": 10, "rank": 39 } },
   "wp:functions": { "copy": { "copy_assert_B": { "alt-ergo": { "total": 1,
                                                                "valid": 1,
-                                                               "rank": 38 },
+                                                               "rank": 39 },
                                                  "wp:main": { "total": 1,
                                                               "valid": 1,
-                                                              "rank": 38 } },
+                                                              "rank": 39 } },
                               "copy_assert_A": { "alt-ergo": { "total": 1,
                                                                "valid": 1,
-                                                               "rank": 31 },
+                                                               "rank": 32 },
                                                  "wp:main": { "total": 1,
                                                               "valid": 1,
-                                                              "rank": 31 } },
-                              "copy_loop_inv_Copy": { "alt-ergo": { "total": 1,
-                                                                    "valid": 1,
-                                                                    "rank": 7 },
-                                                      "qed": { "total": 1,
-                                                               "valid": 1 },
-                                                      "wp:main": { "total": 2,
-                                                                   "valid": 2,
-                                                                   "rank": 7 } },
-                              "copy_loop_inv_Range": { "alt-ergo": { "total": 1,
-                                                                    "valid": 1,
-                                                                    "rank": 5 },
-                                                       "qed": { "total": 1,
-                                                                "valid": 1 },
-                                                       "wp:main": { "total": 2,
-                                                                    "valid": 2,
-                                                                    "rank": 5 } },
-                              "copy_assign": { "qed": { "total": 1,
-                                                        "valid": 1 },
-                                               "wp:main": { "total": 1,
-                                                            "valid": 1 } },
-                              "copy_loop_assign": { "alt-ergo": { "total": 1,
-                                                                  "valid": 1,
-                                                                  "rank": 22 },
-                                                    "qed": { "total": 1,
-                                                             "valid": 1 },
-                                                    "wp:main": { "total": 2,
+                                                              "rank": 32 } },
+                              "copy_loop_invariant_Copy": { "alt-ergo": 
+                                                              { "total": 1,
+                                                                "valid": 1,
+                                                                "rank": 8 },
+                                                            "qed": { "total": 1,
+                                                                    "valid": 1 },
+                                                            "wp:main": 
+                                                              { "total": 2,
+                                                                "valid": 2,
+                                                                "rank": 8 } },
+                              "copy_loop_invariant_Range": { "alt-ergo": 
+                                                               { "total": 1,
+                                                                 "valid": 1,
+                                                                 "rank": 5 },
+                                                             "qed": { "total": 1,
+                                                                    "valid": 1 },
+                                                             "wp:main": 
+                                                               { "total": 2,
                                                                  "valid": 2,
-                                                                 "rank": 22 } },
-                              "copy_post": { "alt-ergo": { "total": 1,
-                                                           "valid": 1,
-                                                           "rank": 5 },
-                                             "wp:main": { "total": 1,
-                                                          "valid": 1,
-                                                          "rank": 5 } },
+                                                                 "rank": 5 } },
+                              "copy_assigns": { "qed": { "total": 1,
+                                                         "valid": 1 },
+                                                "wp:main": { "total": 1,
+                                                             "valid": 1 } },
+                              "copy_loop_assigns": { "alt-ergo": { "total": 1,
+                                                                   "valid": 1,
+                                                                   "rank": 22 },
+                                                     "qed": { "total": 1,
+                                                              "valid": 1 },
+                                                     "wp:main": { "total": 2,
+                                                                  "valid": 2,
+                                                                  "rank": 22 } },
+                              "copy_ensures": { "alt-ergo": { "total": 1,
+                                                              "valid": 1,
+                                                              "rank": 6 },
+                                                "wp:main": { "total": 1,
+                                                             "valid": 1,
+                                                             "rank": 6 } },
                               "wp:section": { "alt-ergo": { "total": 6,
                                                             "valid": 6,
-                                                            "rank": 38 },
+                                                            "rank": 39 },
                                               "qed": { "total": 4,
                                                        "valid": 4 },
                                               "wp:main": { "total": 10,
                                                            "valid": 10,
-                                                           "rank": 38 } } } } }
+                                                           "rank": 39 } } } } }
diff --git a/src/plugins/wp/tests/wp_plugin/dynamic.i.0.report.json b/src/plugins/wp/tests/wp_plugin/dynamic.i.0.report.json
index 5bc84b3ea34cd84e44029eedc2e50d44af10ee4d..4fe7283df198bbb5837161eee37f648eecdb48e6 100644
--- a/src/plugins/wp/tests/wp_plugin/dynamic.i.0.report.json
+++ b/src/plugins/wp/tests/wp_plugin/dynamic.i.0.report.json
@@ -1,22 +1,22 @@
 { "wp:global": { "alt-ergo": { "total": 3, "valid": 3, "rank": 14 },
                  "qed": { "total": 10, "valid": 10 },
                  "wp:main": { "total": 13, "valid": 13, "rank": 14 } },
-  "wp:functions": { "call": { "specialization_f1_pre_at_call_stmt_3": 
-                                { "alt-ergo": { "total": 1, "valid": 1,
-                                                "rank": 14 },
-                                  "wp:main": { "total": 1, "valid": 1,
-                                               "rank": 14 } },
-                              "call_stmt_calls_f1_f2": { "alt-ergo": 
-                                                           { "total": 1,
+  "wp:functions": { "call": { "f1_requires": { "alt-ergo": { "total": 1,
                                                              "valid": 1,
-                                                             "rank": 6 },
-                                                         "wp:main": { "total": 1,
+                                                             "rank": 14 },
+                                               "wp:main": { "total": 1,
+                                                            "valid": 1,
+                                                            "rank": 14 } },
+                              "call_calls_f1_f2_s3": { "alt-ergo": { "total": 1,
+                                                                    "valid": 1,
+                                                                    "rank": 6 },
+                                                       "wp:main": { "total": 1,
                                                                     "valid": 1,
                                                                     "rank": 6 } },
-                              "call_post": { "qed": { "total": 2,
-                                                      "valid": 2 },
-                                             "wp:main": { "total": 2,
-                                                          "valid": 2 } },
+                              "call_ensures": { "qed": { "total": 2,
+                                                         "valid": 2 },
+                                                "wp:main": { "total": 2,
+                                                             "valid": 2 } },
                               "wp:section": { "alt-ergo": { "total": 2,
                                                             "valid": 2,
                                                             "rank": 14 },
@@ -25,46 +25,52 @@
                                               "wp:main": { "total": 4,
                                                            "valid": 4,
                                                            "rank": 14 } } },
-                    "guarded_call": { "guarded_call_stmt_calls_g": { "qed": 
+                    "guarded_call": { "guarded_call_calls_g_s9": { "qed": 
                                                                     { "total": 1,
                                                                     "valid": 1 },
-                                                                    "wp:main": 
+                                                                   "wp:main": 
                                                                     { "total": 1,
                                                                     "valid": 1 } },
-                                      "guarded_call_post_2": { "qed": 
-                                                                 { "total": 2,
-                                                                   "valid": 2 },
-                                                               "wp:main": 
-                                                                 { "total": 2,
-                                                                   "valid": 2 } },
-                                      "guarded_call_post": { "alt-ergo": 
-                                                               { "total": 1,
-                                                                 "valid": 1,
-                                                                 "rank": 3 },
-                                                             "qed": { "total": 1,
+                                      "guarded_call_ensures_2": { "qed": 
+                                                                    { "total": 2,
+                                                                    "valid": 2 },
+                                                                  "wp:main": 
+                                                                    { "total": 2,
+                                                                    "valid": 2 } },
+                                      "guarded_call_ensures": { "alt-ergo": 
+                                                                  { "total": 1,
+                                                                    "valid": 1,
+                                                                    "rank": 4 },
+                                                                "qed": 
+                                                                  { "total": 1,
                                                                     "valid": 1 },
-                                                             "wp:main": 
-                                                               { "total": 2,
-                                                                 "valid": 2,
-                                                                 "rank": 3 } },
+                                                                "wp:main": 
+                                                                  { "total": 2,
+                                                                    "valid": 2,
+                                                                    "rank": 4 } },
                                       "wp:section": { "alt-ergo": { "total": 1,
                                                                     "valid": 1,
-                                                                    "rank": 3 },
+                                                                    "rank": 4 },
                                                       "qed": { "total": 4,
                                                                "valid": 4 },
                                                       "wp:main": { "total": 5,
                                                                    "valid": 5,
-                                                                   "rank": 3 } } },
-                    "no_call": { "specialization_unreachable_g_pre_at_no_call_stmt_17": 
-                                   { "qed": { "total": 1, "valid": 1 },
-                                     "wp:main": { "total": 1, "valid": 1 } },
-                                 "no_call_stmt_calls_unreachable_g": 
-                                   { "qed": { "total": 1, "valid": 1 },
-                                     "wp:main": { "total": 1, "valid": 1 } },
-                                 "no_call_post": { "qed": { "total": 2,
-                                                            "valid": 2 },
-                                                   "wp:main": { "total": 2,
-                                                                "valid": 2 } },
+                                                                   "rank": 4 } } },
+                    "no_call": { "unreachable_g_requires": { "qed": { "total": 1,
+                                                                    "valid": 1 },
+                                                             "wp:main": 
+                                                               { "total": 1,
+                                                                 "valid": 1 } },
+                                 "no_call_calls_unreachable_g_s17": { "qed": 
+                                                                    { "total": 1,
+                                                                    "valid": 1 },
+                                                                    "wp:main": 
+                                                                    { "total": 1,
+                                                                    "valid": 1 } },
+                                 "no_call_ensures": { "qed": { "total": 2,
+                                                               "valid": 2 },
+                                                      "wp:main": { "total": 2,
+                                                                   "valid": 2 } },
                                  "wp:section": { "qed": { "total": 4,
                                                           "valid": 4 },
                                                  "wp:main": { "total": 4,
diff --git a/src/plugins/wp/tests/wp_plugin/flash.c.0.report.json b/src/plugins/wp/tests/wp_plugin/flash.c.0.report.json
index b60ab62c9d51f86f09e60623621ef1114d85e3af..b56ae23d547912581057352e2f5d14d84957b77e 100644
--- a/src/plugins/wp/tests/wp_plugin/flash.c.0.report.json
+++ b/src/plugins/wp/tests/wp_plugin/flash.c.0.report.json
@@ -1,30 +1,33 @@
 { "wp:global": { "alt-ergo": { "total": 5, "unknown": 5 },
                  "qed": { "total": 1, "valid": 1 },
                  "wp:main": { "total": 6, "valid": 1, "unknown": 5 } },
-  "wp:functions": { "job": { "job_post_WriteValues": { "alt-ergo": { "total": 1,
+  "wp:functions": { "job": { "job_ensures_WriteValues": { "alt-ergo": 
+                                                            { "total": 1,
+                                                              "unknown": 1 },
+                                                          "wp:main": 
+                                                            { "total": 1,
+                                                              "unknown": 1 } },
+                             "job_ensures_ReadValues": { "alt-ergo": 
+                                                           { "total": 1,
+                                                             "unknown": 1 },
+                                                         "wp:main": { "total": 1,
+                                                                    "unknown": 1 } },
+                             "job_ensures_B_writes": { "alt-ergo": { "total": 1,
                                                                     "unknown": 1 },
                                                        "wp:main": { "total": 1,
                                                                     "unknown": 1 } },
-                             "job_post_ReadValues": { "alt-ergo": { "total": 1,
+                             "job_ensures_B_reads": { "alt-ergo": { "total": 1,
+                                                                    "unknown": 1 },
+                                                      "wp:main": { "total": 1,
+                                                                   "unknown": 1 } },
+                             "job_ensures_A_reads": { "alt-ergo": { "total": 1,
                                                                     "unknown": 1 },
                                                       "wp:main": { "total": 1,
                                                                    "unknown": 1 } },
-                             "job_post_B_writes": { "alt-ergo": { "total": 1,
-                                                                  "unknown": 1 },
-                                                    "wp:main": { "total": 1,
-                                                                 "unknown": 1 } },
-                             "job_post_B_reads": { "alt-ergo": { "total": 1,
-                                                                 "unknown": 1 },
-                                                   "wp:main": { "total": 1,
-                                                                "unknown": 1 } },
-                             "job_post_A_reads": { "alt-ergo": { "total": 1,
-                                                                 "unknown": 1 },
-                                                   "wp:main": { "total": 1,
-                                                                "unknown": 1 } },
-                             "job_post_Events": { "qed": { "total": 1,
-                                                           "valid": 1 },
-                                                  "wp:main": { "total": 1,
-                                                               "valid": 1 } },
+                             "job_ensures_Events": { "qed": { "total": 1,
+                                                              "valid": 1 },
+                                                     "wp:main": { "total": 1,
+                                                                  "valid": 1 } },
                              "wp:section": { "alt-ergo": { "total": 5,
                                                            "unknown": 5 },
                                              "qed": { "total": 1,
diff --git a/src/plugins/wp/tests/wp_plugin/flash.c.1.report.json b/src/plugins/wp/tests/wp_plugin/flash.c.1.report.json
index 12b5c0544d98610b133b1a24790be69584814694..63cb5905a73bef4a1486cafaa1d5b2366af44f2d 100644
--- a/src/plugins/wp/tests/wp_plugin/flash.c.1.report.json
+++ b/src/plugins/wp/tests/wp_plugin/flash.c.1.report.json
@@ -1,40 +1,43 @@
 { "wp:global": { "alt-ergo": { "total": 5, "valid": 5, "rank": 20 },
                  "qed": { "total": 1, "valid": 1 },
                  "wp:main": { "total": 6, "valid": 6, "rank": 20 } },
-  "wp:functions": { "job": { "job_post_WriteValues": { "alt-ergo": { "total": 1,
+  "wp:functions": { "job": { "job_ensures_WriteValues": { "alt-ergo": 
+                                                            { "total": 1,
+                                                              "valid": 1,
+                                                              "rank": 20 },
+                                                          "wp:main": 
+                                                            { "total": 1,
+                                                              "valid": 1,
+                                                              "rank": 20 } },
+                             "job_ensures_ReadValues": { "alt-ergo": 
+                                                           { "total": 1,
+                                                             "valid": 1,
+                                                             "rank": 20 },
+                                                         "wp:main": { "total": 1,
                                                                     "valid": 1,
-                                                                    "rank": 19 },
+                                                                    "rank": 20 } },
+                             "job_ensures_B_writes": { "alt-ergo": { "total": 1,
+                                                                    "valid": 1,
+                                                                    "rank": 13 },
                                                        "wp:main": { "total": 1,
                                                                     "valid": 1,
-                                                                    "rank": 19 } },
-                             "job_post_ReadValues": { "alt-ergo": { "total": 1,
+                                                                    "rank": 13 } },
+                             "job_ensures_B_reads": { "alt-ergo": { "total": 1,
                                                                     "valid": 1,
-                                                                    "rank": 20 },
+                                                                    "rank": 19 },
+                                                      "wp:main": { "total": 1,
+                                                                   "valid": 1,
+                                                                   "rank": 19 } },
+                             "job_ensures_A_reads": { "alt-ergo": { "total": 1,
+                                                                    "valid": 1,
+                                                                    "rank": 19 },
                                                       "wp:main": { "total": 1,
                                                                    "valid": 1,
-                                                                   "rank": 20 } },
-                             "job_post_B_writes": { "alt-ergo": { "total": 1,
-                                                                  "valid": 1,
-                                                                  "rank": 12 },
-                                                    "wp:main": { "total": 1,
-                                                                 "valid": 1,
-                                                                 "rank": 12 } },
-                             "job_post_B_reads": { "alt-ergo": { "total": 1,
-                                                                 "valid": 1,
-                                                                 "rank": 19 },
-                                                   "wp:main": { "total": 1,
-                                                                "valid": 1,
-                                                                "rank": 19 } },
-                             "job_post_A_reads": { "alt-ergo": { "total": 1,
-                                                                 "valid": 1,
-                                                                 "rank": 19 },
-                                                   "wp:main": { "total": 1,
-                                                                "valid": 1,
-                                                                "rank": 19 } },
-                             "job_post_Events": { "qed": { "total": 1,
-                                                           "valid": 1 },
-                                                  "wp:main": { "total": 1,
-                                                               "valid": 1 } },
+                                                                   "rank": 19 } },
+                             "job_ensures_Events": { "qed": { "total": 1,
+                                                              "valid": 1 },
+                                                     "wp:main": { "total": 1,
+                                                                  "valid": 1 } },
                              "wp:section": { "alt-ergo": { "total": 5,
                                                            "valid": 5,
                                                            "rank": 20 },
diff --git a/src/plugins/wp/tests/wp_plugin/flash.c.2.report.json b/src/plugins/wp/tests/wp_plugin/flash.c.2.report.json
index e2d2199289ff6b8531bc832c72433cbda0dca578..cd22f13467b2d496800380d03037041750402e62 100644
--- a/src/plugins/wp/tests/wp_plugin/flash.c.2.report.json
+++ b/src/plugins/wp/tests/wp_plugin/flash.c.2.report.json
@@ -1,29 +1,30 @@
 { "wp:global": { "qed": { "total": 6, "valid": 6 },
                  "wp:main": { "total": 6, "valid": 6 } },
-  "wp:functions": { "job": { "job_post_WriteValues": { "qed": { "total": 1,
+  "wp:functions": { "job": { "job_ensures_WriteValues": { "qed": { "total": 1,
+                                                                   "valid": 1 },
+                                                          "wp:main": 
+                                                            { "total": 1,
+                                                              "valid": 1 } },
+                             "job_ensures_ReadValues": { "qed": { "total": 1,
+                                                                  "valid": 1 },
+                                                         "wp:main": { "total": 1,
+                                                                    "valid": 1 } },
+                             "job_ensures_B_writes": { "qed": { "total": 1,
                                                                 "valid": 1 },
                                                        "wp:main": { "total": 1,
                                                                     "valid": 1 } },
-                             "job_post_ReadValues": { "qed": { "total": 1,
+                             "job_ensures_B_reads": { "qed": { "total": 1,
+                                                               "valid": 1 },
+                                                      "wp:main": { "total": 1,
+                                                                   "valid": 1 } },
+                             "job_ensures_A_reads": { "qed": { "total": 1,
                                                                "valid": 1 },
                                                       "wp:main": { "total": 1,
                                                                    "valid": 1 } },
-                             "job_post_B_writes": { "qed": { "total": 1,
-                                                             "valid": 1 },
-                                                    "wp:main": { "total": 1,
-                                                                 "valid": 1 } },
-                             "job_post_B_reads": { "qed": { "total": 1,
-                                                            "valid": 1 },
-                                                   "wp:main": { "total": 1,
-                                                                "valid": 1 } },
-                             "job_post_A_reads": { "qed": { "total": 1,
-                                                            "valid": 1 },
-                                                   "wp:main": { "total": 1,
-                                                                "valid": 1 } },
-                             "job_post_Events": { "qed": { "total": 1,
-                                                           "valid": 1 },
-                                                  "wp:main": { "total": 1,
-                                                               "valid": 1 } },
+                             "job_ensures_Events": { "qed": { "total": 1,
+                                                              "valid": 1 },
+                                                     "wp:main": { "total": 1,
+                                                                  "valid": 1 } },
                              "wp:section": { "qed": { "total": 6,
                                                       "valid": 6 },
                                              "wp:main": { "total": 6,
diff --git a/src/plugins/wp/tests/wp_plugin/flash.mlw b/src/plugins/wp/tests/wp_plugin/flash.mlw
new file mode 100644
index 0000000000000000000000000000000000000000..0034ada0257c4ad689e61ecf2792b81f81681ff4
--- /dev/null
+++ b/src/plugins/wp/tests/wp_plugin/flash.mlw
@@ -0,0 +1,3 @@
+logic const : 'b -> ('a,'b) farray
+axiom const_access : forall k:'a,v:'b. const(v)[k] = v
+
diff --git a/src/plugins/wp/tests/wp_plugin/float_format.i.0.report.json b/src/plugins/wp/tests/wp_plugin/float_format.i.0.report.json
index 065d8730e68d2af1d1e0781bf374aeb17f134f0c..2a3ca74e5152ebcd6c9370afa410a213cb6b99b8 100644
--- a/src/plugins/wp/tests/wp_plugin/float_format.i.0.report.json
+++ b/src/plugins/wp/tests/wp_plugin/float_format.i.0.report.json
@@ -1,9 +1,9 @@
 { "wp:global": { "coq": { "total": 1, "unknown": 1 },
                  "wp:main": { "total": 1, "unknown": 1 } },
-  "wp:functions": { "output": { "output_post_KO": { "coq": { "total": 1,
-                                                             "unknown": 1 },
-                                                    "wp:main": { "total": 1,
-                                                                 "unknown": 1 } },
+  "wp:functions": { "output": { "output_ensures_KO": { "coq": { "total": 1,
+                                                                "unknown": 1 },
+                                                       "wp:main": { "total": 1,
+                                                                    "unknown": 1 } },
                                 "wp:section": { "coq": { "total": 1,
                                                          "unknown": 1 },
                                                 "wp:main": { "total": 1,
diff --git a/src/plugins/wp/tests/wp_plugin/float_format.i.1.report.json b/src/plugins/wp/tests/wp_plugin/float_format.i.1.report.json
index 10a449c5b8758c535d754b3b46df0f92aba67c74..1f1c00faadb72419707c193d451c8560cc4d49c8 100644
--- a/src/plugins/wp/tests/wp_plugin/float_format.i.1.report.json
+++ b/src/plugins/wp/tests/wp_plugin/float_format.i.1.report.json
@@ -1,9 +1,9 @@
 { "wp:global": { "alt-ergo": { "total": 1, "unknown": 1 },
                  "wp:main": { "total": 1, "unknown": 1 } },
-  "wp:functions": { "output": { "output_post_KO": { "alt-ergo": { "total": 1,
-                                                                  "unknown": 1 },
-                                                    "wp:main": { "total": 1,
-                                                                 "unknown": 1 } },
+  "wp:functions": { "output": { "output_ensures_KO": { "alt-ergo": { "total": 1,
+                                                                    "unknown": 1 },
+                                                       "wp:main": { "total": 1,
+                                                                    "unknown": 1 } },
                                 "wp:section": { "alt-ergo": { "total": 1,
                                                               "unknown": 1 },
                                                 "wp:main": { "total": 1,
diff --git a/src/plugins/wp/tests/wp_plugin/float_format.i.2.report.json b/src/plugins/wp/tests/wp_plugin/float_format.i.2.report.json
index b2ba13fe0e9545624c766a053030583f6bfa22ee..80aed7d64259207bf03ec54f0bef74316858c086 100644
--- a/src/plugins/wp/tests/wp_plugin/float_format.i.2.report.json
+++ b/src/plugins/wp/tests/wp_plugin/float_format.i.2.report.json
@@ -1,10 +1,10 @@
 { "wp:global": { "why3:alt-ergo": { "total": 1, "unknown": 1 },
                  "wp:main": { "total": 1, "unknown": 1 } },
-  "wp:functions": { "output": { "output_post_KO": { "why3:alt-ergo": 
-                                                      { "total": 1,
-                                                        "unknown": 1 },
-                                                    "wp:main": { "total": 1,
-                                                                 "unknown": 1 } },
+  "wp:functions": { "output": { "output_ensures_KO": { "why3:alt-ergo": 
+                                                         { "total": 1,
+                                                           "unknown": 1 },
+                                                       "wp:main": { "total": 1,
+                                                                    "unknown": 1 } },
                                 "wp:section": { "why3:alt-ergo": { "total": 1,
                                                                    "unknown": 1 },
                                                 "wp:main": { "total": 1,
diff --git a/src/plugins/wp/tests/wp_plugin/float_model.i b/src/plugins/wp/tests/wp_plugin/float_model.i
new file mode 100644
index 0000000000000000000000000000000000000000..bef36ee872e1caeed67ad71211630cd9239c7e28
--- /dev/null
+++ b/src/plugins/wp/tests/wp_plugin/float_model.i
@@ -0,0 +1,32 @@
+/* run.config
+   OPT: -wp-model +real
+   OPT: -wp-model +float
+*/
+
+/* run.config_qualif
+   DONTRUN:
+*/
+
+//@ predicate P(real x);
+
+float FD,FF ;
+double DD,DF ;
+
+/*@
+  ensures ACSL_R: P( 2.1 );
+  ensures ACSL_F: P( 2.1f );
+  ensures ACSL_FR: P( (float) 2.1 );
+  ensures ACSL_DR: P( (double) 2.1 );
+  ensures ACSL_DF: P( (double) 2.1f );
+  ensures C_FD: P( FD );
+  ensures C_FF: P( FF );
+  ensures C_DD: P( DD );
+  ensures C_DF: P( DF );
+ */
+void job(void)
+{
+  FD = 2.1 ;
+  FF = 2.1f ;
+  DD = 2.1 ;
+  DF = 2.1f ;
+}
diff --git a/src/plugins/wp/tests/wp_plugin/float_real.i b/src/plugins/wp/tests/wp_plugin/float_real.i
new file mode 100644
index 0000000000000000000000000000000000000000..b2c011c359d13eb9e026361415888ced6235affd
--- /dev/null
+++ b/src/plugins/wp/tests/wp_plugin/float_real.i
@@ -0,0 +1,23 @@
+/* run.config
+   OPT: -wp-model +real
+   OPT: -wp-model +float
+*/
+
+/* run.config_qualif
+   OPT: -wp-model +real
+   OPT: -wp-model +float
+*/
+
+// OK with +real, KO with +float
+
+/*@
+  ensures \result <==> (\abs(x-y) < 1e-5) ;
+*/
+static int dequal(double const x, double const y)
+{
+  double tmp = x-y ;
+  if ( tmp < 1e-5 && tmp > -1e-5 )
+    return 1;
+  else
+    return 0;
+}
diff --git a/src/plugins/wp/tests/wp_plugin/float_real.i.0.report.json b/src/plugins/wp/tests/wp_plugin/float_real.i.0.report.json
new file mode 100644
index 0000000000000000000000000000000000000000..78c912e04623b9511f9b989807c956e0e777b0ba
--- /dev/null
+++ b/src/plugins/wp/tests/wp_plugin/float_real.i.0.report.json
@@ -0,0 +1,14 @@
+{ "wp:global": { "alt-ergo": { "total": 1, "valid": 1, "rank": 4 },
+                 "wp:main": { "total": 1, "valid": 1, "rank": 4 } },
+  "wp:functions": { "dequal": { "dequal_ensures": { "alt-ergo": { "total": 1,
+                                                                  "valid": 1,
+                                                                  "rank": 4 },
+                                                    "wp:main": { "total": 1,
+                                                                 "valid": 1,
+                                                                 "rank": 4 } },
+                                "wp:section": { "alt-ergo": { "total": 1,
+                                                              "valid": 1,
+                                                              "rank": 4 },
+                                                "wp:main": { "total": 1,
+                                                             "valid": 1,
+                                                             "rank": 4 } } } } }
diff --git a/src/plugins/wp/tests/wp_plugin/float_real.i.1.report.json b/src/plugins/wp/tests/wp_plugin/float_real.i.1.report.json
new file mode 100644
index 0000000000000000000000000000000000000000..1cdc9d2ba20526f33e1d312a775df2f16f49b7a0
--- /dev/null
+++ b/src/plugins/wp/tests/wp_plugin/float_real.i.1.report.json
@@ -0,0 +1,10 @@
+{ "wp:global": { "alt-ergo": { "total": 1, "unknown": 1 },
+                 "wp:main": { "total": 1, "unknown": 1 } },
+  "wp:functions": { "dequal": { "dequal_ensures": { "alt-ergo": { "total": 1,
+                                                                  "unknown": 1 },
+                                                    "wp:main": { "total": 1,
+                                                                 "unknown": 1 } },
+                                "wp:section": { "alt-ergo": { "total": 1,
+                                                              "unknown": 1 },
+                                                "wp:main": { "total": 1,
+                                                             "unknown": 1 } } } } }
diff --git a/src/plugins/wp/tests/wp_plugin/frame.i.0.report.json b/src/plugins/wp/tests/wp_plugin/frame.i.0.report.json
index 239c2603e123e4b4fd49da9a364de1b66a3878a3..993d6f800871b136aa491a8594e86226bb0f56c8 100644
--- a/src/plugins/wp/tests/wp_plugin/frame.i.0.report.json
+++ b/src/plugins/wp/tests/wp_plugin/frame.i.0.report.json
@@ -1,14 +1,14 @@
 { "wp:global": { "alt-ergo": { "total": 4, "unknown": 4 },
                  "qed": { "total": 2, "valid": 2 },
                  "wp:main": { "total": 6, "valid": 2, "unknown": 4 } },
-  "wp:functions": { "local": { "local_post_KO": { "alt-ergo": { "total": 1,
-                                                                "unknown": 1 },
-                                                  "wp:main": { "total": 1,
-                                                               "unknown": 1 } },
-                               "local_post_FRAMED": { "qed": { "total": 1,
-                                                               "valid": 1 },
-                                                      "wp:main": { "total": 1,
-                                                                   "valid": 1 } },
+  "wp:functions": { "local": { "local_ensures_KO": { "alt-ergo": { "total": 1,
+                                                                   "unknown": 1 },
+                                                     "wp:main": { "total": 1,
+                                                                  "unknown": 1 } },
+                               "local_ensures_FRAMED": { "qed": { "total": 1,
+                                                                  "valid": 1 },
+                                                         "wp:main": { "total": 1,
+                                                                    "valid": 1 } },
                                "wp:section": { "alt-ergo": { "total": 1,
                                                              "unknown": 1 },
                                                "qed": { "total": 1,
@@ -16,10 +16,10 @@
                                                "wp:main": { "total": 2,
                                                             "valid": 1,
                                                             "unknown": 1 } } },
-                    "global": { "global_post_KO": { "alt-ergo": { "total": 1,
-                                                                  "unknown": 1 },
-                                                    "wp:main": { "total": 1,
-                                                                 "unknown": 1 } },
+                    "global": { "global_ensures_KO": { "alt-ergo": { "total": 1,
+                                                                    "unknown": 1 },
+                                                       "wp:main": { "total": 1,
+                                                                    "unknown": 1 } },
                                 "wp:section": { "alt-ergo": { "total": 1,
                                                               "unknown": 1 },
                                                 "wp:main": { "total": 1,
@@ -30,10 +30,12 @@
                                                               "wp:main": 
                                                                 { "total": 1,
                                                                   "valid": 1 } },
-                                  "localref_post_KO": { "alt-ergo": { "total": 1,
-                                                                    "unknown": 1 },
-                                                        "wp:main": { "total": 1,
-                                                                    "unknown": 1 } },
+                                  "localref_ensures_KO": { "alt-ergo": 
+                                                             { "total": 1,
+                                                               "unknown": 1 },
+                                                           "wp:main": 
+                                                             { "total": 1,
+                                                               "unknown": 1 } },
                                   "wp:section": { "alt-ergo": { "total": 1,
                                                                 "unknown": 1 },
                                                   "qed": { "total": 1,
@@ -41,10 +43,10 @@
                                                   "wp:main": { "total": 2,
                                                                "valid": 1,
                                                                "unknown": 1 } } },
-                    "alias": { "alias_post_KO": { "alt-ergo": { "total": 1,
-                                                                "unknown": 1 },
-                                                  "wp:main": { "total": 1,
-                                                               "unknown": 1 } },
+                    "alias": { "alias_ensures_KO": { "alt-ergo": { "total": 1,
+                                                                   "unknown": 1 },
+                                                     "wp:main": { "total": 1,
+                                                                  "unknown": 1 } },
                                "wp:section": { "alt-ergo": { "total": 1,
                                                              "unknown": 1 },
                                                "wp:main": { "total": 1,
diff --git a/src/plugins/wp/tests/wp_plugin/init_const.i.0.report.json b/src/plugins/wp/tests/wp_plugin/init_const.i.0.report.json
index 5bb2bdf0416fc76cc2710c45263160a27998ad0c..8a6814a1eb58c0ae9410d4affc0ba34ad072deb3 100644
--- a/src/plugins/wp/tests/wp_plugin/init_const.i.0.report.json
+++ b/src/plugins/wp/tests/wp_plugin/init_const.i.0.report.json
@@ -1,31 +1,33 @@
 { "wp:global": { "alt-ergo": { "total": 2, "unknown": 2 },
                  "qed": { "total": 2, "valid": 2 },
                  "wp:main": { "total": 4, "valid": 2, "unknown": 2 } },
-  "wp:functions": { "fA": { "fA_post_KO": { "alt-ergo": { "total": 1,
-                                                          "unknown": 1 },
-                                            "wp:main": { "total": 1,
-                                                         "unknown": 1 } },
+  "wp:functions": { "fA": { "fA_ensures_KO": { "alt-ergo": { "total": 1,
+                                                             "unknown": 1 },
+                                               "wp:main": { "total": 1,
+                                                            "unknown": 1 } },
                             "wp:section": { "alt-ergo": { "total": 1,
                                                           "unknown": 1 },
                                             "wp:main": { "total": 1,
                                                          "unknown": 1 } } },
-                    "fB": { "fB_post_OK": { "qed": { "total": 1, "valid": 1 },
-                                            "wp:main": { "total": 1,
-                                                         "valid": 1 } },
+                    "fB": { "fB_ensures_OK": { "qed": { "total": 1,
+                                                        "valid": 1 },
+                                               "wp:main": { "total": 1,
+                                                            "valid": 1 } },
                             "wp:section": { "qed": { "total": 1, "valid": 1 },
                                             "wp:main": { "total": 1,
                                                          "valid": 1 } } },
-                    "fC": { "fC_post_KO": { "alt-ergo": { "total": 1,
-                                                          "unknown": 1 },
-                                            "wp:main": { "total": 1,
-                                                         "unknown": 1 } },
+                    "fC": { "fC_ensures_KO": { "alt-ergo": { "total": 1,
+                                                             "unknown": 1 },
+                                               "wp:main": { "total": 1,
+                                                            "unknown": 1 } },
                             "wp:section": { "alt-ergo": { "total": 1,
                                                           "unknown": 1 },
                                             "wp:main": { "total": 1,
                                                          "unknown": 1 } } },
-                    "fD": { "fD_post_OK": { "qed": { "total": 1, "valid": 1 },
-                                            "wp:main": { "total": 1,
-                                                         "valid": 1 } },
+                    "fD": { "fD_ensures_OK": { "qed": { "total": 1,
+                                                        "valid": 1 },
+                                               "wp:main": { "total": 1,
+                                                            "valid": 1 } },
                             "wp:section": { "qed": { "total": 1, "valid": 1 },
                                             "wp:main": { "total": 1,
                                                          "valid": 1 } } } } }
diff --git a/src/plugins/wp/tests/wp_plugin/init_const_guard.i.0.report.json b/src/plugins/wp/tests/wp_plugin/init_const_guard.i.0.report.json
index 36168d14b6d3bf1314aff9a747f654c2ed3e4c51..1af70a2c767b4cb06af11aa877eb5e353fadb726 100644
--- a/src/plugins/wp/tests/wp_plugin/init_const_guard.i.0.report.json
+++ b/src/plugins/wp/tests/wp_plugin/init_const_guard.i.0.report.json
@@ -1,26 +1,26 @@
 { "wp:global": { "alt-ergo": { "total": 3, "valid": 2, "unknown": 1,
-                               "rank": 5 },
+                               "rank": 6 },
                  "qed": { "total": 4, "valid": 4 },
                  "wp:main": { "total": 7, "valid": 6, "unknown": 1,
-                              "rank": 5 } },
-  "wp:functions": { "f": { "f_post_Q_NotWrite": { "qed": { "total": 1,
-                                                           "valid": 1 },
-                                                  "wp:main": { "total": 1,
-                                                               "valid": 1 } },
-                           "f_post_Q_ReadOnly": { "qed": { "total": 1,
-                                                           "valid": 1 },
-                                                  "wp:main": { "total": 1,
-                                                               "valid": 1 } },
-                           "f_post_Pointed_Valid": { "alt-ergo": { "total": 1,
-                                                                   "valid": 1,
-                                                                   "rank": 5 },
+                              "rank": 6 } },
+  "wp:functions": { "f": { "f_ensures_Q_NotWrite": { "qed": { "total": 1,
+                                                              "valid": 1 },
                                                      "wp:main": { "total": 1,
-                                                                  "valid": 1,
-                                                                  "rank": 5 } },
-                           "f_post_Const": { "qed": { "total": 1,
-                                                      "valid": 1 },
-                                             "wp:main": { "total": 1,
-                                                          "valid": 1 } },
+                                                                  "valid": 1 } },
+                           "f_ensures_Q_ReadOnly": { "qed": { "total": 1,
+                                                              "valid": 1 },
+                                                     "wp:main": { "total": 1,
+                                                                  "valid": 1 } },
+                           "f_ensures_Pointed_Valid": { "alt-ergo": { "total": 1,
+                                                                    "valid": 1,
+                                                                    "rank": 5 },
+                                                        "wp:main": { "total": 1,
+                                                                    "valid": 1,
+                                                                    "rank": 5 } },
+                           "f_ensures_Const": { "qed": { "total": 1,
+                                                         "valid": 1 },
+                                                "wp:main": { "total": 1,
+                                                             "valid": 1 } },
                            "wp:section": { "alt-ergo": { "total": 1,
                                                          "valid": 1,
                                                          "rank": 5 },
@@ -36,20 +36,20 @@
                                                                  "unknown": 1 } },
                            "g_assert_Read": { "alt-ergo": { "total": 1,
                                                             "valid": 1,
-                                                            "rank": 5 },
+                                                            "rank": 6 },
                                               "wp:main": { "total": 1,
                                                            "valid": 1,
-                                                           "rank": 5 } },
-                           "g_post_P_not_Const": { "qed": { "total": 1,
-                                                            "valid": 1 },
-                                                   "wp:main": { "total": 1,
-                                                                "valid": 1 } },
+                                                           "rank": 6 } },
+                           "g_ensures_P_not_Const": { "qed": { "total": 1,
+                                                               "valid": 1 },
+                                                      "wp:main": { "total": 1,
+                                                                   "valid": 1 } },
                            "wp:section": { "alt-ergo": { "total": 2,
                                                          "valid": 1,
                                                          "unknown": 1,
-                                                         "rank": 5 },
+                                                         "rank": 6 },
                                            "qed": { "total": 1, "valid": 1 },
                                            "wp:main": { "total": 3,
                                                         "valid": 2,
                                                         "unknown": 1,
-                                                        "rank": 5 } } } } }
+                                                        "rank": 6 } } } } }
diff --git a/src/plugins/wp/tests/wp_plugin/init_extern.i.0.report.json b/src/plugins/wp/tests/wp_plugin/init_extern.i.0.report.json
index e1653744eccdb1f9c049ad5611f36bf5e6b5ea7b..f4ea47634b8ba4c26ee71bbea25b3e575dcf5ede 100644
--- a/src/plugins/wp/tests/wp_plugin/init_extern.i.0.report.json
+++ b/src/plugins/wp/tests/wp_plugin/init_extern.i.0.report.json
@@ -1,17 +1,18 @@
 { "wp:global": { "alt-ergo": { "total": 2, "unknown": 2 },
                  "qed": { "total": 1, "valid": 1 },
                  "wp:main": { "total": 3, "valid": 1, "unknown": 2 } },
-  "wp:functions": { "f": { "f_post_KO_2": { "alt-ergo": { "total": 1,
-                                                          "unknown": 1 },
-                                            "wp:main": { "total": 1,
-                                                         "unknown": 1 } },
-                           "f_post_KO": { "alt-ergo": { "total": 1,
-                                                        "unknown": 1 },
-                                          "wp:main": { "total": 1,
-                                                       "unknown": 1 } },
-                           "f_post_OK": { "qed": { "total": 1, "valid": 1 },
-                                          "wp:main": { "total": 1,
-                                                       "valid": 1 } },
+  "wp:functions": { "f": { "f_ensures_KO_2": { "alt-ergo": { "total": 1,
+                                                             "unknown": 1 },
+                                               "wp:main": { "total": 1,
+                                                            "unknown": 1 } },
+                           "f_ensures_KO": { "alt-ergo": { "total": 1,
+                                                           "unknown": 1 },
+                                             "wp:main": { "total": 1,
+                                                          "unknown": 1 } },
+                           "f_ensures_OK": { "qed": { "total": 1,
+                                                      "valid": 1 },
+                                             "wp:main": { "total": 1,
+                                                          "valid": 1 } },
                            "wp:section": { "alt-ergo": { "total": 2,
                                                          "unknown": 2 },
                                            "qed": { "total": 1, "valid": 1 },
diff --git a/src/plugins/wp/tests/wp_plugin/initarr.i.0.report.json b/src/plugins/wp/tests/wp_plugin/initarr.i.0.report.json
index de547fd6b4cf5a3df3246978cd16e306af11b9d1..a8c942a4d5cdfc7760f313a9bf0607cad5f558e5 100644
--- a/src/plugins/wp/tests/wp_plugin/initarr.i.0.report.json
+++ b/src/plugins/wp/tests/wp_plugin/initarr.i.0.report.json
@@ -1,20 +1,20 @@
-{ "wp:global": { "alt-ergo": { "total": 2, "valid": 2, "rank": 10 },
-                 "wp:main": { "total": 2, "valid": 2, "rank": 10 } },
-  "wp:functions": { "job": { "job_post_ALT": { "alt-ergo": { "total": 1,
-                                                             "valid": 1,
-                                                             "rank": 7 },
-                                               "wp:main": { "total": 1,
-                                                            "valid": 1,
-                                                            "rank": 7 } },
-                             "job_post_SEP": { "alt-ergo": { "total": 1,
-                                                             "valid": 1,
-                                                             "rank": 10 },
-                                               "wp:main": { "total": 1,
-                                                            "valid": 1,
-                                                            "rank": 10 } },
+{ "wp:global": { "alt-ergo": { "total": 2, "valid": 2, "rank": 11 },
+                 "wp:main": { "total": 2, "valid": 2, "rank": 11 } },
+  "wp:functions": { "job": { "job_ensures_ALT": { "alt-ergo": { "total": 1,
+                                                                "valid": 1,
+                                                                "rank": 8 },
+                                                  "wp:main": { "total": 1,
+                                                               "valid": 1,
+                                                               "rank": 8 } },
+                             "job_ensures_SEP": { "alt-ergo": { "total": 1,
+                                                                "valid": 1,
+                                                                "rank": 11 },
+                                                  "wp:main": { "total": 1,
+                                                               "valid": 1,
+                                                               "rank": 11 } },
                              "wp:section": { "alt-ergo": { "total": 2,
                                                            "valid": 2,
-                                                           "rank": 10 },
+                                                           "rank": 11 },
                                              "wp:main": { "total": 2,
                                                           "valid": 2,
-                                                          "rank": 10 } } } } }
+                                                          "rank": 11 } } } } }
diff --git a/src/plugins/wp/tests/wp_plugin/injector.c.0.report.json b/src/plugins/wp/tests/wp_plugin/injector.c.0.report.json
index 46f939a9b6a76b4e0fa73148789b118d834f3e4b..99b5f8d49875fb80633b93b63962ee3e3c29daab 100644
--- a/src/plugins/wp/tests/wp_plugin/injector.c.0.report.json
+++ b/src/plugins/wp/tests/wp_plugin/injector.c.0.report.json
@@ -1,61 +1,66 @@
 { "wp:global": { "qed": { "total": 13, "valid": 13 },
                  "wp:main": { "total": 13, "valid": 13 } },
-  "wp:functions": { "f": { "specialization_g_pre_at_f_stmt_6": { "qed": 
-                                                                   { "total": 1,
+  "wp:functions": { "f": { "g_requires_2": { "qed": { "total": 1,
+                                                      "valid": 1 },
+                                             "wp:main": { "total": 1,
+                                                          "valid": 1 } },
+                           "g_requires": { "qed": { "total": 1, "valid": 1 },
+                                           "wp:main": { "total": 1,
+                                                        "valid": 1 } },
+                           "f_SUCCESS_ensures_qed_ok_4": { "qed": { "total": 1,
                                                                     "valid": 1 },
-                                                                 "wp:main": 
-                                                                   { "total": 1,
-                                                                    "valid": 1 } },
-                           "specialization_g_pre_at_f_stmt_1": { "qed": 
-                                                                   { "total": 1,
+                                                           "wp:main": 
+                                                             { "total": 1,
+                                                               "valid": 1 } },
+                           "f_SUCCESS_ensures_qed_ok_3": { "qed": { "total": 1,
                                                                     "valid": 1 },
-                                                                 "wp:main": 
-                                                                   { "total": 1,
-                                                                    "valid": 1 } },
-                           "f_SUCCESS_post_qed_ok_4": { "qed": { "total": 1,
-                                                                 "valid": 1 },
-                                                        "wp:main": { "total": 1,
-                                                                    "valid": 1 } },
-                           "f_SUCCESS_post_qed_ok_3": { "qed": { "total": 1,
-                                                                 "valid": 1 },
-                                                        "wp:main": { "total": 1,
-                                                                    "valid": 1 } },
-                           "f_SUCCESS_post_qed_ok_2": { "qed": { "total": 1,
-                                                                 "valid": 1 },
-                                                        "wp:main": { "total": 1,
-                                                                    "valid": 1 } },
-                           "f_SUCCESS_post_qed_ok": { "qed": { "total": 1,
-                                                               "valid": 1 },
-                                                      "wp:main": { "total": 1,
-                                                                   "valid": 1 } },
-                           "f_SND_FAIL_post_qed_ok_4": { "qed": { "total": 1,
-                                                                  "valid": 1 },
-                                                         "wp:main": { "total": 1,
-                                                                    "valid": 1 } },
-                           "f_SND_FAIL_post_qed_ok_3": { "qed": { "total": 1,
-                                                                  "valid": 1 },
-                                                         "wp:main": { "total": 1,
-                                                                    "valid": 1 } },
-                           "f_SND_FAIL_post_qed_ok_2": { "qed": { "total": 1,
-                                                                  "valid": 1 },
-                                                         "wp:main": { "total": 1,
-                                                                    "valid": 1 } },
-                           "f_SND_FAIL_post_qed_ok": { "qed": { "total": 1,
-                                                                "valid": 1 },
-                                                       "wp:main": { "total": 1,
-                                                                    "valid": 1 } },
-                           "f_FST_FAIL_post_qed_ok_3": { "qed": { "total": 1,
-                                                                  "valid": 1 },
-                                                         "wp:main": { "total": 1,
-                                                                    "valid": 1 } },
-                           "f_FST_FAIL_post_qed_ok_2": { "qed": { "total": 1,
+                                                           "wp:main": 
+                                                             { "total": 1,
+                                                               "valid": 1 } },
+                           "f_SUCCESS_ensures_qed_ok_2": { "qed": { "total": 1,
+                                                                    "valid": 1 },
+                                                           "wp:main": 
+                                                             { "total": 1,
+                                                               "valid": 1 } },
+                           "f_SUCCESS_ensures_qed_ok": { "qed": { "total": 1,
                                                                   "valid": 1 },
                                                          "wp:main": { "total": 1,
                                                                     "valid": 1 } },
-                           "f_FST_FAIL_post_qed_ok": { "qed": { "total": 1,
-                                                                "valid": 1 },
-                                                       "wp:main": { "total": 1,
-                                                                    "valid": 1 } },
+                           "f_SND_FAIL_ensures_qed_ok_4": { "qed": { "total": 1,
+                                                                    "valid": 1 },
+                                                            "wp:main": 
+                                                              { "total": 1,
+                                                                "valid": 1 } },
+                           "f_SND_FAIL_ensures_qed_ok_3": { "qed": { "total": 1,
+                                                                    "valid": 1 },
+                                                            "wp:main": 
+                                                              { "total": 1,
+                                                                "valid": 1 } },
+                           "f_SND_FAIL_ensures_qed_ok_2": { "qed": { "total": 1,
+                                                                    "valid": 1 },
+                                                            "wp:main": 
+                                                              { "total": 1,
+                                                                "valid": 1 } },
+                           "f_SND_FAIL_ensures_qed_ok": { "qed": { "total": 1,
+                                                                   "valid": 1 },
+                                                          "wp:main": 
+                                                            { "total": 1,
+                                                              "valid": 1 } },
+                           "f_FST_FAIL_ensures_qed_ok_3": { "qed": { "total": 1,
+                                                                    "valid": 1 },
+                                                            "wp:main": 
+                                                              { "total": 1,
+                                                                "valid": 1 } },
+                           "f_FST_FAIL_ensures_qed_ok_2": { "qed": { "total": 1,
+                                                                    "valid": 1 },
+                                                            "wp:main": 
+                                                              { "total": 1,
+                                                                "valid": 1 } },
+                           "f_FST_FAIL_ensures_qed_ok": { "qed": { "total": 1,
+                                                                   "valid": 1 },
+                                                          "wp:main": 
+                                                            { "total": 1,
+                                                              "valid": 1 } },
                            "wp:section": { "qed": { "total": 13,
                                                     "valid": 13 },
                                            "wp:main": { "total": 13,
diff --git a/src/plugins/wp/tests/wp_plugin/injector.c.1.report.json b/src/plugins/wp/tests/wp_plugin/injector.c.1.report.json
index 14d1b1583505defd7ca97fdec940d474c88df079..11e14caec9175fbcf551491b247fd494e7a06f69 100644
--- a/src/plugins/wp/tests/wp_plugin/injector.c.1.report.json
+++ b/src/plugins/wp/tests/wp_plugin/injector.c.1.report.json
@@ -1,21 +1,21 @@
 { "wp:global": { "alt-ergo": { "total": 4, "unknown": 4 },
                  "wp:main": { "total": 4, "unknown": 4 } },
-  "wp:functions": { "f": { "f_ko_1_post_qed_ko_3": { "alt-ergo": { "total": 1,
-                                                                   "unknown": 1 },
-                                                     "wp:main": { "total": 1,
-                                                                  "unknown": 1 } },
-                           "f_ko_1_post_qed_ko_2": { "alt-ergo": { "total": 1,
-                                                                   "unknown": 1 },
-                                                     "wp:main": { "total": 1,
-                                                                  "unknown": 1 } },
-                           "f_ko_1_post_qed_ko": { "alt-ergo": { "total": 1,
-                                                                 "unknown": 1 },
-                                                   "wp:main": { "total": 1,
-                                                                "unknown": 1 } },
-                           "f_ko_post_qed_ko": { "alt-ergo": { "total": 1,
-                                                               "unknown": 1 },
-                                                 "wp:main": { "total": 1,
-                                                              "unknown": 1 } },
+  "wp:functions": { "f": { "f_ko_1_ensures_qed_ko_3": { "alt-ergo": { "total": 1,
+                                                                    "unknown": 1 },
+                                                        "wp:main": { "total": 1,
+                                                                    "unknown": 1 } },
+                           "f_ko_1_ensures_qed_ko_2": { "alt-ergo": { "total": 1,
+                                                                    "unknown": 1 },
+                                                        "wp:main": { "total": 1,
+                                                                    "unknown": 1 } },
+                           "f_ko_1_ensures_qed_ko": { "alt-ergo": { "total": 1,
+                                                                    "unknown": 1 },
+                                                      "wp:main": { "total": 1,
+                                                                   "unknown": 1 } },
+                           "f_ko_ensures_qed_ko": { "alt-ergo": { "total": 1,
+                                                                  "unknown": 1 },
+                                                    "wp:main": { "total": 1,
+                                                                 "unknown": 1 } },
                            "wp:section": { "alt-ergo": { "total": 4,
                                                          "unknown": 4 },
                                            "wp:main": { "total": 4,
diff --git a/src/plugins/wp/tests/wp_plugin/loop.i.0.report.json b/src/plugins/wp/tests/wp_plugin/loop.i.0.report.json
index 6efb013fc8c1784279234cd4dd7f896577a77ab8..90c05cb3581e0b536eaae2101da836538cada344 100644
--- a/src/plugins/wp/tests/wp_plugin/loop.i.0.report.json
+++ b/src/plugins/wp/tests/wp_plugin/loop.i.0.report.json
@@ -3,40 +3,43 @@
                  "qed": { "total": 3, "valid": 3 },
                  "wp:main": { "total": 9, "valid": 8, "unknown": 1,
                               "rank": 22 } },
-  "wp:functions": { "init": { "init_loop_inv_qed_ok_2": { "alt-ergo": 
-                                                            { "total": 1,
-                                                              "valid": 1,
-                                                              "rank": 8 },
-                                                          "qed": { "total": 1,
-                                                                   "valid": 1 },
-                                                          "wp:main": 
-                                                            { "total": 2,
-                                                              "valid": 2,
-                                                              "rank": 8 } },
-                              "init_loop_inv_qed_ok": { "alt-ergo": { "total": 2,
+  "wp:functions": { "init": { "init_loop_invariant_qed_ok_2": { "alt-ergo": 
+                                                                  { "total": 1,
+                                                                    "valid": 1,
+                                                                    "rank": 9 },
+                                                                "qed": 
+                                                                  { "total": 1,
+                                                                    "valid": 1 },
+                                                                "wp:main": 
+                                                                  { "total": 2,
                                                                     "valid": 2,
-                                                                    "rank": 5 },
-                                                        "wp:main": { "total": 2,
-                                                                    "valid": 2,
-                                                                    "rank": 5 } },
-                              "init_assign": { "alt-ergo": { "total": 1,
-                                                             "unknown": 1 },
-                                               "wp:main": { "total": 1,
-                                                            "unknown": 1 } },
-                              "init_loop_assign": { "alt-ergo": { "total": 1,
-                                                                  "valid": 1,
-                                                                  "rank": 22 },
-                                                    "qed": { "total": 2,
-                                                             "valid": 2 },
-                                                    "wp:main": { "total": 3,
-                                                                 "valid": 3,
-                                                                 "rank": 22 } },
-                              "init_post_qed_ok": { "alt-ergo": { "total": 1,
-                                                                  "valid": 1,
-                                                                  "rank": 7 },
-                                                    "wp:main": { "total": 1,
-                                                                 "valid": 1,
-                                                                 "rank": 7 } },
+                                                                    "rank": 9 } },
+                              "init_loop_invariant_qed_ok": { "alt-ergo": 
+                                                                { "total": 2,
+                                                                  "valid": 2,
+                                                                  "rank": 5 },
+                                                              "wp:main": 
+                                                                { "total": 2,
+                                                                  "valid": 2,
+                                                                  "rank": 5 } },
+                              "init_assigns": { "alt-ergo": { "total": 1,
+                                                              "unknown": 1 },
+                                                "wp:main": { "total": 1,
+                                                             "unknown": 1 } },
+                              "init_loop_assigns": { "alt-ergo": { "total": 1,
+                                                                   "valid": 1,
+                                                                   "rank": 22 },
+                                                     "qed": { "total": 2,
+                                                              "valid": 2 },
+                                                     "wp:main": { "total": 3,
+                                                                  "valid": 3,
+                                                                  "rank": 22 } },
+                              "init_ensures_qed_ok": { "alt-ergo": { "total": 1,
+                                                                    "valid": 1,
+                                                                    "rank": 8 },
+                                                       "wp:main": { "total": 1,
+                                                                    "valid": 1,
+                                                                    "rank": 8 } },
                               "wp:section": { "alt-ergo": { "total": 6,
                                                             "valid": 5,
                                                             "unknown": 1,
diff --git a/src/plugins/wp/tests/wp_plugin/loopcurrent.i.0.report.json b/src/plugins/wp/tests/wp_plugin/loopcurrent.i.0.report.json
index b40be97730851728a5b6fcdaa218e34354e2ea47..a4b1808ed9992cba37a7296ea0dc3c6e31d556e3 100644
--- a/src/plugins/wp/tests/wp_plugin/loopcurrent.i.0.report.json
+++ b/src/plugins/wp/tests/wp_plugin/loopcurrent.i.0.report.json
@@ -1,12 +1,13 @@
 { "wp:global": { "qed": { "total": 4, "valid": 4 },
                  "wp:main": { "total": 4, "valid": 4 } },
-  "wp:functions": { "f": { "f_loop_inv_2": { "qed": { "total": 2,
-                                                      "valid": 2 },
-                                             "wp:main": { "total": 2,
-                                                          "valid": 2 } },
-                           "f_loop_inv": { "qed": { "total": 2, "valid": 2 },
-                                           "wp:main": { "total": 2,
-                                                        "valid": 2 } },
+  "wp:functions": { "f": { "f_loop_invariant_2": { "qed": { "total": 2,
+                                                            "valid": 2 },
+                                                   "wp:main": { "total": 2,
+                                                                "valid": 2 } },
+                           "f_loop_invariant": { "qed": { "total": 2,
+                                                          "valid": 2 },
+                                                 "wp:main": { "total": 2,
+                                                              "valid": 2 } },
                            "wp:section": { "qed": { "total": 4, "valid": 4 },
                                            "wp:main": { "total": 4,
                                                         "valid": 4 } } } } }
diff --git a/src/plugins/wp/tests/wp_plugin/loopentry.i.0.report.json b/src/plugins/wp/tests/wp_plugin/loopentry.i.0.report.json
index b40be97730851728a5b6fcdaa218e34354e2ea47..a4b1808ed9992cba37a7296ea0dc3c6e31d556e3 100644
--- a/src/plugins/wp/tests/wp_plugin/loopentry.i.0.report.json
+++ b/src/plugins/wp/tests/wp_plugin/loopentry.i.0.report.json
@@ -1,12 +1,13 @@
 { "wp:global": { "qed": { "total": 4, "valid": 4 },
                  "wp:main": { "total": 4, "valid": 4 } },
-  "wp:functions": { "f": { "f_loop_inv_2": { "qed": { "total": 2,
-                                                      "valid": 2 },
-                                             "wp:main": { "total": 2,
-                                                          "valid": 2 } },
-                           "f_loop_inv": { "qed": { "total": 2, "valid": 2 },
-                                           "wp:main": { "total": 2,
-                                                        "valid": 2 } },
+  "wp:functions": { "f": { "f_loop_invariant_2": { "qed": { "total": 2,
+                                                            "valid": 2 },
+                                                   "wp:main": { "total": 2,
+                                                                "valid": 2 } },
+                           "f_loop_invariant": { "qed": { "total": 2,
+                                                          "valid": 2 },
+                                                 "wp:main": { "total": 2,
+                                                              "valid": 2 } },
                            "wp:section": { "qed": { "total": 4, "valid": 4 },
                                            "wp:main": { "total": 4,
                                                         "valid": 4 } } } } }
diff --git a/src/plugins/wp/tests/wp_plugin/mask.i.0.report.json b/src/plugins/wp/tests/wp_plugin/mask.i.0.report.json
index c26b682a42f6d29b0f7a90feb45381e43f5542ed..b6fbb01b2b7c160c1fa6a3c1e53cb7c5cbb51084 100644
--- a/src/plugins/wp/tests/wp_plugin/mask.i.0.report.json
+++ b/src/plugins/wp/tests/wp_plugin/mask.i.0.report.json
@@ -1,13 +1,13 @@
 { "wp:global": { "qed": { "total": 2, "valid": 2 },
                  "wp:main": { "total": 2, "valid": 2 } },
-  "wp:functions": { "compute": { "compute_post_B": { "qed": { "total": 1,
-                                                              "valid": 1 },
-                                                     "wp:main": { "total": 1,
-                                                                  "valid": 1 } },
-                                 "compute_post_A": { "qed": { "total": 1,
-                                                              "valid": 1 },
-                                                     "wp:main": { "total": 1,
-                                                                  "valid": 1 } },
+  "wp:functions": { "compute": { "compute_ensures_B": { "qed": { "total": 1,
+                                                                 "valid": 1 },
+                                                        "wp:main": { "total": 1,
+                                                                    "valid": 1 } },
+                                 "compute_ensures_A": { "qed": { "total": 1,
+                                                                 "valid": 1 },
+                                                        "wp:main": { "total": 1,
+                                                                    "valid": 1 } },
                                  "wp:section": { "qed": { "total": 2,
                                                           "valid": 2 },
                                                  "wp:main": { "total": 2,
diff --git a/src/plugins/wp/tests/wp_plugin/oracle/float_model.0.res.oracle b/src/plugins/wp/tests/wp_plugin/oracle/float_model.0.res.oracle
new file mode 100644
index 0000000000000000000000000000000000000000..a711e372d35c558c31793e43e593b585c74d4731
--- /dev/null
+++ b/src/plugins/wp/tests/wp_plugin/oracle/float_model.0.res.oracle
@@ -0,0 +1,58 @@
+# frama-c -wp -wp-model 'Typed (Real)' [...]
+[kernel] Parsing tests/wp_plugin/float_model.i (no preprocessing)
+[kernel] tests/wp_plugin/float_model.i:10: Warning: 
+  parsing obsolete ACSL construct 'logic declaration'. 'an axiomatic block' should be used instead.
+[kernel:parser:decimal-float] tests/wp_plugin/float_model.i:28: Warning: 
+  Floating-point constant 2.1 is not represented exactly. Will use 0x1.0cccccccccccdp1.
+  (warn-once: no further messages from category 'parser:decimal-float' will be emitted)
+[wp] Running WP plugin...
+[wp] Loading driver 'share/wp.driver'
+[wp] Warning: Missing RTE guards
+------------------------------------------------------------
+  Function job
+------------------------------------------------------------
+
+Goal Post-condition 'ACSL_R' in 'job':
+Prove: P_P((21.0/10)).
+
+------------------------------------------------------------
+
+Goal Post-condition 'ACSL_F' in 'job':
+Prove: P_P((21.0/10)).
+
+------------------------------------------------------------
+
+Goal Post-condition 'ACSL_FR' in 'job':
+Prove: P_P((21.0/10)).
+
+------------------------------------------------------------
+
+Goal Post-condition 'ACSL_DR' in 'job':
+Prove: P_P((21.0/10)).
+
+------------------------------------------------------------
+
+Goal Post-condition 'ACSL_DF' in 'job':
+Prove: P_P((21.0/10)).
+
+------------------------------------------------------------
+
+Goal Post-condition 'C_FD' in 'job':
+Prove: P_P((21.0/10)).
+
+------------------------------------------------------------
+
+Goal Post-condition 'C_FF' in 'job':
+Prove: P_P((21.0/10)).
+
+------------------------------------------------------------
+
+Goal Post-condition 'C_DD' in 'job':
+Prove: P_P((21.0/10)).
+
+------------------------------------------------------------
+
+Goal Post-condition 'C_DF' in 'job':
+Prove: P_P((21.0/10)).
+
+------------------------------------------------------------
diff --git a/src/plugins/wp/tests/wp_plugin/oracle/float_model.1.res.oracle b/src/plugins/wp/tests/wp_plugin/oracle/float_model.1.res.oracle
new file mode 100644
index 0000000000000000000000000000000000000000..55eefc41f89dc07ca8ef43882bed889ce252e363
--- /dev/null
+++ b/src/plugins/wp/tests/wp_plugin/oracle/float_model.1.res.oracle
@@ -0,0 +1,58 @@
+# frama-c -wp -wp-model 'Typed' [...]
+[kernel] Parsing tests/wp_plugin/float_model.i (no preprocessing)
+[kernel] tests/wp_plugin/float_model.i:10: Warning: 
+  parsing obsolete ACSL construct 'logic declaration'. 'an axiomatic block' should be used instead.
+[kernel:parser:decimal-float] tests/wp_plugin/float_model.i:28: Warning: 
+  Floating-point constant 2.1 is not represented exactly. Will use 0x1.0cccccccccccdp1.
+  (warn-once: no further messages from category 'parser:decimal-float' will be emitted)
+[wp] Running WP plugin...
+[wp] Loading driver 'share/wp.driver'
+[wp] Warning: Missing RTE guards
+------------------------------------------------------------
+  Function job
+------------------------------------------------------------
+
+Goal Post-condition 'ACSL_R' in 'job':
+Prove: P_P((21.0/10)).
+
+------------------------------------------------------------
+
+Goal Post-condition 'ACSL_F' in 'job':
+Prove: P_P((4404019.0/2097152)).
+
+------------------------------------------------------------
+
+Goal Post-condition 'ACSL_FR' in 'job':
+Prove: P_P((4404019.0/2097152)).
+
+------------------------------------------------------------
+
+Goal Post-condition 'ACSL_DR' in 'job':
+Prove: P_P((4728779608739021.0/2251799813685248)).
+
+------------------------------------------------------------
+
+Goal Post-condition 'ACSL_DF' in 'job':
+Prove: P_P((4404019.0/2097152)).
+
+------------------------------------------------------------
+
+Goal Post-condition 'C_FD' in 'job':
+Prove: P_P((4404019.0/2097152)).
+
+------------------------------------------------------------
+
+Goal Post-condition 'C_FF' in 'job':
+Prove: P_P((4404019.0/2097152)).
+
+------------------------------------------------------------
+
+Goal Post-condition 'C_DD' in 'job':
+Prove: P_P((4728779608739021.0/2251799813685248)).
+
+------------------------------------------------------------
+
+Goal Post-condition 'C_DF' in 'job':
+Prove: P_P((4404019.0/2097152)).
+
+------------------------------------------------------------
diff --git a/src/plugins/wp/tests/wp_plugin/oracle/float_real.0.res.oracle b/src/plugins/wp/tests/wp_plugin/oracle/float_real.0.res.oracle
new file mode 100644
index 0000000000000000000000000000000000000000..7e9d87ee00d3dd9b55bebc69d8dca822bcc85c19
--- /dev/null
+++ b/src/plugins/wp/tests/wp_plugin/oracle/float_real.0.res.oracle
@@ -0,0 +1,26 @@
+# frama-c -wp -wp-model 'Typed (Real)' [...]
+[kernel] Parsing tests/wp_plugin/float_real.i (no preprocessing)
+[kernel:parser:decimal-float] tests/wp_plugin/float_real.i:19: Warning: 
+  Floating-point constant 1e-5 is not represented exactly. Will use 0x1.4f8b588e368f1p-17.
+  (warn-once: no further messages from category 'parser:decimal-float' will be emitted)
+[wp] Running WP plugin...
+[wp] Loading driver 'share/wp.driver'
+[wp] Warning: Missing RTE guards
+------------------------------------------------------------
+  Function dequal
+------------------------------------------------------------
+
+Goal Post-condition (file tests/wp_plugin/float_real.i, line 14) in 'dequal':
+Assume {
+  Type: is_sint32(dequal_0).
+  If x < ((1.0/100000) + y)
+  Then {
+    If y < ((1.0/100000) + x)
+    Then { (* Return *) Have: dequal_0 = 1. }
+    Else { (* Return *) Have: dequal_0 = 0. }
+  }
+  Else { (* Return *) Have: dequal_0 = 0. }
+}
+Prove: (abs_real(x - y) < (1.0/100000)) <-> (dequal_0 != 0).
+
+------------------------------------------------------------
diff --git a/src/plugins/wp/tests/wp_plugin/oracle/float_real.1.res.oracle b/src/plugins/wp/tests/wp_plugin/oracle/float_real.1.res.oracle
new file mode 100644
index 0000000000000000000000000000000000000000..bd279cccc874f2274d8dfb05d4b76eb7d82e8dac
--- /dev/null
+++ b/src/plugins/wp/tests/wp_plugin/oracle/float_real.1.res.oracle
@@ -0,0 +1,28 @@
+# frama-c -wp -wp-model 'Typed' [...]
+[kernel] Parsing tests/wp_plugin/float_real.i (no preprocessing)
+[kernel:parser:decimal-float] tests/wp_plugin/float_real.i:19: Warning: 
+  Floating-point constant 1e-5 is not represented exactly. Will use 0x1.4f8b588e368f1p-17.
+  (warn-once: no further messages from category 'parser:decimal-float' will be emitted)
+[wp] Running WP plugin...
+[wp] Loading driver 'share/wp.driver'
+[wp] Warning: Missing RTE guards
+------------------------------------------------------------
+  Function dequal
+------------------------------------------------------------
+
+Goal Post-condition (file tests/wp_plugin/float_real.i, line 14) in 'dequal':
+Assume {
+  Type: is_sint32(dequal_0).
+  If lt_f64(add_f64(x, neg_f64(y)),
+       to_f64((5902958103587057.0/590295810358705651712)))
+  Then {
+    If lt_f64(to_f64((-5902958103587057.0/590295810358705651712)),
+         add_f64(x, neg_f64(y)))
+    Then { (* Return *) Have: dequal_0 = 1. }
+    Else { (* Return *) Have: dequal_0 = 0. }
+  }
+  Else { (* Return *) Have: dequal_0 = 0. }
+}
+Prove: (abs_real(of_f64(x) - of_f64(y)) < (1.0/100000)) <-> (dequal_0 != 0).
+
+------------------------------------------------------------
diff --git a/src/plugins/wp/tests/wp_plugin/oracle/model.res.oracle b/src/plugins/wp/tests/wp_plugin/oracle/model.res.oracle
index e4895b6ff2085b7d10103a85a0dbccf3fdc42cbc..020f948d3ecbda05e4fd61ae4029351442ec5c5f 100644
--- a/src/plugins/wp/tests/wp_plugin/oracle/model.res.oracle
+++ b/src/plugins/wp/tests/wp_plugin/oracle/model.res.oracle
@@ -7,13 +7,13 @@
 [wp] Warning: Missing RTE guards
 [wp] 1 goal scheduled
 ---------------------------------------------
---- File 'typed/f_post.ergo' 
+--- File 'typed/f_ensures.ergo' 
 ---------------------------------------------
 (* ---------------------------------------------------------- *)
 (* --- Post-condition (file tests/wp_plugin/model.i, line 13) in 'f' --- *)
 (* ---------------------------------------------------------- *)
 
-goal f_post:
+goal f_ensures:
   forall i : int.
   forall t : (addr,int) farray.
   forall a : addr.
@@ -59,13 +59,13 @@ Prove: P_P(x).
 [wp] Running WP plugin...
 [wp] 2 goals scheduled
 ---------------------------------------------
---- File 'typed_ref/f_post.ergo' 
+--- File 'typed_ref/f_ensures.ergo' 
 ---------------------------------------------
 (* ---------------------------------------------------------- *)
 (* --- Post-condition (file tests/wp_plugin/model.i, line 13) in 'f' --- *)
 (* ---------------------------------------------------------- *)
 
-goal f_post:
+goal f_ensures:
   forall i : int.
   forall t : (addr,int) farray.
   forall a : addr.
@@ -94,13 +94,13 @@ function shift_sint32(p:addr, k:int) : addr = shift(p, k)
 logic P_P : int -> prop
 
 ---------------------------------------------
---- File 'typed/f_post.ergo' 
+--- File 'typed/f_ensures.ergo' 
 ---------------------------------------------
 (* ---------------------------------------------------------- *)
 (* --- Post-condition (file tests/wp_plugin/model.i, line 13) in 'f' --- *)
 (* ---------------------------------------------------------- *)
 
-goal f_post:
+goal f_ensures:
   forall i : int.
   forall t : (addr,int) farray.
   forall a : addr.
diff --git a/src/plugins/wp/tests/wp_plugin/oracle/rte.0.res.oracle b/src/plugins/wp/tests/wp_plugin/oracle/rte.0.res.oracle
index 62e3a1148bd59a3258e2d20b4fbc23e2892bfb13..00dfe9f2904865a995c497204fcbe1dee0d229d1 100644
--- a/src/plugins/wp/tests/wp_plugin/oracle/rte.0.res.oracle
+++ b/src/plugins/wp/tests/wp_plugin/oracle/rte.0.res.oracle
@@ -18,14 +18,14 @@
   Option -wp-bool-range incompatiable with RTE (ignored)
 [wp] tests/wp_plugin/rte.i:34: Warning: 
   Option -wp-bool-range incompatiable with RTE (ignored)
-[wp] Goal typed_job_post : not tried
+[wp] Goal typed_job_ensures : not tried
 [wp] Goal typed_job_assert_rte_mem_access : not tried
 [wp] Goal typed_job_assert_rte_mem_access_2 : not tried
 [wp] Goal typed_job_assert_rte_signed_overflow : not tried
 [wp] Goal typed_job_assert_rte_signed_overflow_2 : not tried
 [wp] Goal typed_job_assert_rte_mem_access_3 : not tried
-[wp] Goal typed_job2_post : not tried
-[wp] Goal typed_job3_post : not tried
+[wp] Goal typed_job2_ensures : not tried
+[wp] Goal typed_job3_ensures : not tried
 [wp] Goal typed_job3_assert_rte_bool_value : not tried
 /* Generated by Frama-C */
 /*@ axiomatic Obs {
diff --git a/src/plugins/wp/tests/wp_plugin/oracle/rte.1.res.oracle b/src/plugins/wp/tests/wp_plugin/oracle/rte.1.res.oracle
index 374febf67ef7f9ac074f99bc77cc5b7c6752ce58..6468854c8f02b824a96b9c98a8e5475e265b11d2 100644
--- a/src/plugins/wp/tests/wp_plugin/oracle/rte.1.res.oracle
+++ b/src/plugins/wp/tests/wp_plugin/oracle/rte.1.res.oracle
@@ -11,12 +11,12 @@
 [wp:rte] function job3: generate rte for memory access
 [wp:rte] function job3: generate rte for division by zero
 [rte] annotating function job3
-[wp] Goal typed_job_post : not tried
+[wp] Goal typed_job_ensures : not tried
 [wp] Goal typed_job_assert_rte_mem_access : not tried
 [wp] Goal typed_job_assert_rte_mem_access_2 : not tried
 [wp] Goal typed_job_assert_rte_mem_access_3 : not tried
-[wp] Goal typed_job2_post : not tried
-[wp] Goal typed_job3_post : not tried
+[wp] Goal typed_job2_ensures : not tried
+[wp] Goal typed_job3_ensures : not tried
 [wp] Goal typed_job3_assert_rte_bool_value : not tried
 /* Generated by Frama-C */
 /*@ axiomatic Obs {
diff --git a/src/plugins/wp/tests/wp_plugin/oracle/rte.2.res.oracle b/src/plugins/wp/tests/wp_plugin/oracle/rte.2.res.oracle
index 200d47c9730cbfcf6a813961a0d4c00ad29ae977..435bd15de2dd4548bf68167a5c121096acbf0443 100644
--- a/src/plugins/wp/tests/wp_plugin/oracle/rte.2.res.oracle
+++ b/src/plugins/wp/tests/wp_plugin/oracle/rte.2.res.oracle
@@ -17,16 +17,16 @@
 [wp:rte] function job3: generate rte for signed overflow
 [wp:rte] function job3: generate rte for unsigned overflow
 [rte] annotating function job3
-[wp] Goal typed_job_post : not tried
+[wp] Goal typed_job_ensures : not tried
 [wp] Goal typed_job_assert_rte_mem_access : not tried
 [wp] Goal typed_job_assert_rte_mem_access_2 : not tried
 [wp] Goal typed_job_assert_rte_signed_overflow : not tried
 [wp] Goal typed_job_assert_rte_signed_overflow_2 : not tried
 [wp] Goal typed_job_assert_rte_mem_access_3 : not tried
-[wp] Goal typed_job2_post : not tried
+[wp] Goal typed_job2_ensures : not tried
 [wp] Goal typed_job2_assert_rte_unsigned_overflow : not tried
 [wp] Goal typed_job2_assert_rte_unsigned_overflow_2 : not tried
-[wp] Goal typed_job3_post : not tried
+[wp] Goal typed_job3_ensures : not tried
 [wp] Goal typed_job3_assert_rte_bool_value : not tried
 /* Generated by Frama-C */
 /*@ axiomatic Obs {
diff --git a/src/plugins/wp/tests/wp_plugin/oracle/rte.3.res.oracle b/src/plugins/wp/tests/wp_plugin/oracle/rte.3.res.oracle
index 96369633975b7b27cd790672bb88d1710a4a81e2..0f7bf5b438530ec71343d9ad13f7699f140ff179 100644
--- a/src/plugins/wp/tests/wp_plugin/oracle/rte.3.res.oracle
+++ b/src/plugins/wp/tests/wp_plugin/oracle/rte.3.res.oracle
@@ -17,14 +17,14 @@
 [wp:rte] function job3: generate rte for division by zero
 [wp:rte] function job3: generate rte for signed overflow
 [rte] annotating function job3
-[wp] Goal typed_nat_job_post : not tried
+[wp] Goal typed_nat_job_ensures : not tried
 [wp] Goal typed_nat_job_assert_rte_mem_access : not tried
 [wp] Goal typed_nat_job_assert_rte_mem_access_2 : not tried
 [wp] Goal typed_nat_job_assert_rte_signed_overflow : not tried
 [wp] Goal typed_nat_job_assert_rte_signed_overflow_2 : not tried
 [wp] Goal typed_nat_job_assert_rte_mem_access_3 : not tried
-[wp] Goal typed_nat_job2_post : not tried
-[wp] Goal typed_nat_job3_post : not tried
+[wp] Goal typed_nat_job2_ensures : not tried
+[wp] Goal typed_nat_job3_ensures : not tried
 [wp] Goal typed_nat_job3_assert_rte_bool_value : not tried
 /* Generated by Frama-C */
 /*@ axiomatic Obs {
diff --git a/src/plugins/wp/tests/wp_plugin/oracle/rte.4.res.oracle b/src/plugins/wp/tests/wp_plugin/oracle/rte.4.res.oracle
index c02378921b3db46b641883a0f71d05aede70e598..f2b78e1cab7eadf8dd166e940fe39f17721e4a3c 100644
--- a/src/plugins/wp/tests/wp_plugin/oracle/rte.4.res.oracle
+++ b/src/plugins/wp/tests/wp_plugin/oracle/rte.4.res.oracle
@@ -19,16 +19,16 @@
 [wp:rte] function job3: generate rte for signed overflow
 [wp:rte] function job3: generate rte for unsigned overflow
 [rte] annotating function job3
-[wp] Goal typed_nat_job_post : not tried
+[wp] Goal typed_nat_job_ensures : not tried
 [wp] Goal typed_nat_job_assert_rte_mem_access : not tried
 [wp] Goal typed_nat_job_assert_rte_mem_access_2 : not tried
 [wp] Goal typed_nat_job_assert_rte_signed_overflow : not tried
 [wp] Goal typed_nat_job_assert_rte_signed_overflow_2 : not tried
 [wp] Goal typed_nat_job_assert_rte_mem_access_3 : not tried
-[wp] Goal typed_nat_job2_post : not tried
+[wp] Goal typed_nat_job2_ensures : not tried
 [wp] Goal typed_nat_job2_assert_rte_unsigned_overflow : not tried
 [wp] Goal typed_nat_job2_assert_rte_unsigned_overflow_2 : not tried
-[wp] Goal typed_nat_job3_post : not tried
+[wp] Goal typed_nat_job3_ensures : not tried
 [wp] Goal typed_nat_job3_assert_rte_bool_value : not tried
 /* Generated by Frama-C */
 /*@ axiomatic Obs {
diff --git a/src/plugins/wp/tests/wp_plugin/oracle/rte.5.res.oracle b/src/plugins/wp/tests/wp_plugin/oracle/rte.5.res.oracle
index cf241996746da52a0c09d24fc474eebb95833238..f171879c60095d87502ac5e2b4cfaf1d27783e91 100644
--- a/src/plugins/wp/tests/wp_plugin/oracle/rte.5.res.oracle
+++ b/src/plugins/wp/tests/wp_plugin/oracle/rte.5.res.oracle
@@ -12,6 +12,6 @@
 [wp:rte] function job3: missing rte for memory access
 [wp:rte] function job3: missing rte for division by zero
 [wp:rte] function job3: missing rte for signed overflow
-[wp] Goal typed_nat_job_post : not tried
-[wp] Goal typed_nat_job2_post : not tried
-[wp] Goal typed_nat_job3_post : not tried
+[wp] Goal typed_nat_job_ensures : not tried
+[wp] Goal typed_nat_job2_ensures : not tried
+[wp] Goal typed_nat_job3_ensures : not tried
diff --git a/src/plugins/wp/tests/wp_plugin/oracle/rte.6.res.oracle b/src/plugins/wp/tests/wp_plugin/oracle/rte.6.res.oracle
index 0bd8710d2eebd5cc2fd12ceb51ecd5d461707d88..892f3d6443df55894205cbbb0aefde7cd301ec57 100644
--- a/src/plugins/wp/tests/wp_plugin/oracle/rte.6.res.oracle
+++ b/src/plugins/wp/tests/wp_plugin/oracle/rte.6.res.oracle
@@ -16,9 +16,9 @@
 [wp:rte] function job3: generate rte for signed overflow
 [rte] annotating function job3
 [wp] Warning: Missing RTE guards
-[wp] Goal typed_nat_job_post : not tried
+[wp] Goal typed_nat_job_ensures : not tried
 [wp] Goal typed_nat_job_assert_rte_signed_overflow : not tried
 [wp] Goal typed_nat_job_assert_rte_signed_overflow_2 : not tried
-[wp] Goal typed_nat_job2_post : not tried
-[wp] Goal typed_nat_job3_post : not tried
+[wp] Goal typed_nat_job2_ensures : not tried
+[wp] Goal typed_nat_job3_ensures : not tried
 [wp] Goal typed_nat_job3_assert_rte_bool_value : not tried
diff --git a/src/plugins/wp/tests/wp_plugin/oracle/stmt.res.oracle b/src/plugins/wp/tests/wp_plugin/oracle/stmt.res.oracle
index 26fb0eb1308e23b0df7b48901f24934b2563c490..9b3f58137ab19c66fa595e002fc86b4c5e998843 100644
--- a/src/plugins/wp/tests/wp_plugin/oracle/stmt.res.oracle
+++ b/src/plugins/wp/tests/wp_plugin/oracle/stmt.res.oracle
@@ -2,15 +2,15 @@
 [kernel] Parsing tests/wp_plugin/stmt.c (with preprocessing)
 [wp] Running WP plugin...
 [wp] Loading driver 'share/wp.driver'
-[wp] [CFG] Goal f_stmt_exit : Valid (Unreachable)
-[wp] [CFG] Goal g_stmt_exit : Valid (Unreachable)
-[wp] [CFG] Goal g_stmt_assign : Valid (Unreachable)
-[wp] [CFG] Goal g_stmt_post : Valid (Unreachable)
-[wp] [CFG] Goal g_stmt_exit : Valid (Unreachable)
-[wp] [CFG] Goal h_stmt_exit : Valid (Unreachable)
-[wp] [CFG] Goal h_stmt_assign : Valid (Unreachable)
-[wp] [CFG] Goal h_stmt_post : Valid (Unreachable)
-[wp] [CFG] Goal h_stmt_exit : Valid (Unreachable)
+[wp] [CFG] Goal f_exits : Valid (Unreachable)
+[wp] [CFG] Goal g_exits : Valid (Unreachable)
+[wp] [CFG] Goal g_assigns : Valid (Unreachable)
+[wp] [CFG] Goal g_ensures : Valid (Unreachable)
+[wp] [CFG] Goal g_exits : Valid (Unreachable)
+[wp] [CFG] Goal h_exits : Valid (Unreachable)
+[wp] [CFG] Goal h_assigns : Valid (Unreachable)
+[wp] [CFG] Goal h_ensures : Valid (Unreachable)
+[wp] [CFG] Goal h_exits : Valid (Unreachable)
 [wp] Warning: Missing RTE guards
 ------------------------------------------------------------
   Function f
diff --git a/src/plugins/wp/tests/wp_plugin/oracle/unfold_assigns.0.res.oracle b/src/plugins/wp/tests/wp_plugin/oracle/unfold_assigns.0.res.oracle
index 4d7fcca6dd0af490ee9c9e908e7e1ccda32129a1..562b4a5e1cf94fc4de3fe2fbc20a460ffff3e85b 100644
--- a/src/plugins/wp/tests/wp_plugin/oracle/unfold_assigns.0.res.oracle
+++ b/src/plugins/wp/tests/wp_plugin/oracle/unfold_assigns.0.res.oracle
@@ -75,3 +75,73 @@ Call Effect at line 30
 Prove: true.
 
 ------------------------------------------------------------
+------------------------------------------------------------
+  Function USE_ASSIGN_UNFOLD_KO
+------------------------------------------------------------
+
+Goal Post-condition (file tests/wp_plugin/unfold_assigns.i, line 48) in 'USE_ASSIGN_UNFOLD_KO':
+Let a = Load_S1_S(q, Mint_0).
+Let a_1 = Load_S1_S(q, havoc(Mint_undef_0, Mint_0, p, 2)).
+Assume {
+  Type: IsS1_S(a) /\ IsS1_S(a_1).
+  (* Goal *)
+  When: separated(p, 2, q, 2).
+  (* Heap *)
+  Have: (region(p.base) <= 0) /\ (region(q.base) <= 0) /\ linked(Malloc_0).
+}
+Prove: EqS1_S(a_1, a).
+
+------------------------------------------------------------
+
+Goal Assigns (file tests/wp_plugin/unfold_assigns.i, line 49) in 'USE_ASSIGN_UNFOLD_KO':
+Call Effect at line 53
+Assume {
+  (* Goal *)
+  When: !invalid(Malloc_0, p, 2).
+  (* Heap *)
+  Have: (region(p.base) <= 0) /\ (region(q.base) <= 0) /\ linked(Malloc_0).
+}
+Prove: false.
+
+------------------------------------------------------------
+
+Goal Assigns (file tests/wp_plugin/unfold_assigns.i, line 49) in 'USE_ASSIGN_UNFOLD_KO':
+Call Effect at line 53
+Assume {
+  (* Goal *)
+  When: !invalid(Malloc_0, p, 2).
+  (* Heap *)
+  Have: (region(p.base) <= 0) /\ (region(q.base) <= 0) /\ linked(Malloc_0).
+}
+Prove: false.
+
+------------------------------------------------------------
+------------------------------------------------------------
+  Function USE_ASSIGN_UNFOLD_OK
+------------------------------------------------------------
+
+Goal Post-condition (file tests/wp_plugin/unfold_assigns.i, line 39) in 'USE_ASSIGN_UNFOLD_OK':
+Let a = Load_S1_S(q, Mint_0).
+Let a_1 = Load_S1_S(q, havoc(Mint_undef_0, Mint_0, p, 2)).
+Assume {
+  Type: IsS1_S(a) /\ IsS1_S(a_1).
+  (* Goal *)
+  When: separated(p, 2, q, 2).
+  (* Heap *)
+  Have: (region(p.base) <= 0) /\ (region(q.base) <= 0) /\ linked(Malloc_0).
+}
+Prove: EqS1_S(a_1, a).
+
+------------------------------------------------------------
+
+Goal Assigns (file tests/wp_plugin/unfold_assigns.i, line 40) in 'USE_ASSIGN_UNFOLD_OK':
+Call Effect at line 44
+Prove: true.
+
+------------------------------------------------------------
+
+Goal Assigns (file tests/wp_plugin/unfold_assigns.i, line 40) in 'USE_ASSIGN_UNFOLD_OK':
+Call Effect at line 44
+Prove: true.
+
+------------------------------------------------------------
diff --git a/src/plugins/wp/tests/wp_plugin/oracle/unfold_assigns.1.res.oracle b/src/plugins/wp/tests/wp_plugin/oracle/unfold_assigns.1.res.oracle
index f4621effcb5bb8ca8d375a4465554ec20f05bb1c..b4b3786d454804de4c7b204358f23839982a9fd0 100644
--- a/src/plugins/wp/tests/wp_plugin/oracle/unfold_assigns.1.res.oracle
+++ b/src/plugins/wp/tests/wp_plugin/oracle/unfold_assigns.1.res.oracle
@@ -63,3 +63,61 @@ Call Effect at line 30
 Prove: true.
 
 ------------------------------------------------------------
+------------------------------------------------------------
+  Function USE_ASSIGN_UNFOLD_KO
+------------------------------------------------------------
+
+Goal Post-condition (file tests/wp_plugin/unfold_assigns.i, line 48) in 'USE_ASSIGN_UNFOLD_KO':
+Let a = Load_S1_S(q, Mint_0).
+Let a_1 = Load_S1_S(q, havoc(Mint_undef_0, Mint_0, p, 2)).
+Assume {
+  Type: IsS1_S(a) /\ IsS1_S(a_1).
+  (* Goal *)
+  When: separated(p, 2, q, 2).
+  (* Heap *)
+  Have: (region(p.base) <= 0) /\ (region(q.base) <= 0) /\ linked(Malloc_0).
+}
+Prove: EqS1_S(a_1, a).
+
+------------------------------------------------------------
+
+Goal Assigns (file tests/wp_plugin/unfold_assigns.i, line 49) in 'USE_ASSIGN_UNFOLD_KO':
+Call Effect at line 53
+Prove: true.
+
+------------------------------------------------------------
+
+Goal Assigns (file tests/wp_plugin/unfold_assigns.i, line 49) in 'USE_ASSIGN_UNFOLD_KO':
+Call Effect at line 53
+Prove: true.
+
+------------------------------------------------------------
+------------------------------------------------------------
+  Function USE_ASSIGN_UNFOLD_OK
+------------------------------------------------------------
+
+Goal Post-condition (file tests/wp_plugin/unfold_assigns.i, line 39) in 'USE_ASSIGN_UNFOLD_OK':
+Let a = Load_S1_S(q, Mint_0).
+Let a_1 = Load_S1_S(q, havoc(Mint_undef_0, Mint_0, p, 2)).
+Assume {
+  Type: IsS1_S(a) /\ IsS1_S(a_1).
+  (* Goal *)
+  When: separated(p, 2, q, 2).
+  (* Heap *)
+  Have: (region(p.base) <= 0) /\ (region(q.base) <= 0) /\ linked(Malloc_0).
+}
+Prove: EqS1_S(a_1, a).
+
+------------------------------------------------------------
+
+Goal Assigns (file tests/wp_plugin/unfold_assigns.i, line 40) in 'USE_ASSIGN_UNFOLD_OK':
+Call Effect at line 44
+Prove: true.
+
+------------------------------------------------------------
+
+Goal Assigns (file tests/wp_plugin/unfold_assigns.i, line 40) in 'USE_ASSIGN_UNFOLD_OK':
+Call Effect at line 44
+Prove: true.
+
+------------------------------------------------------------
diff --git a/src/plugins/wp/tests/wp_plugin/oracle/unroll.res.oracle b/src/plugins/wp/tests/wp_plugin/oracle/unroll.res.oracle
index 8d5a5a6770c0b497d5a7918fbe3d00673793a296..77e0cc1a55cb4eb7c18dd43d751316168bfc3385 100644
--- a/src/plugins/wp/tests/wp_plugin/oracle/unroll.res.oracle
+++ b/src/plugins/wp/tests/wp_plugin/oracle/unroll.res.oracle
@@ -6,7 +6,7 @@
 [wp] tests/wp_plugin/unroll.i:20: Warning: 
   Missing assigns clause (assigns 'everything' instead)
 [wp] 1 goal scheduled
-[wp] [Tactical] Goal typed_unrolled_loop_post_zero : Valid
+[wp] [Tactical] Goal typed_unrolled_loop_ensures_zero : Valid
 [wp] Proved goals:    1 / 1
   Qed:             0 
   Script:          1
diff --git a/src/plugins/wp/tests/wp_plugin/oracle/unsigned.err.oracle b/src/plugins/wp/tests/wp_plugin/oracle/unsigned.err.oracle
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/src/plugins/wp/tests/wp_plugin/oracle/unsigned.res.oracle b/src/plugins/wp/tests/wp_plugin/oracle/unsigned.res.oracle
new file mode 100644
index 0000000000000000000000000000000000000000..e7238623044f48af8abeae9895e9a68e455001b3
--- /dev/null
+++ b/src/plugins/wp/tests/wp_plugin/oracle/unsigned.res.oracle
@@ -0,0 +1,18 @@
+# frama-c -wp [...]
+[kernel] Parsing tests/wp_plugin/unsigned.i (no preprocessing)
+[wp] Running WP plugin...
+[wp] Loading driver 'share/wp.driver'
+[wp] 1 goal scheduled
+[wp] [Tactical] Goal typed_lemma_U32 : Valid
+[wp] Proved goals:    1 / 1
+     Qed:             0 
+     Script:          1
+------------------------------------------------------------
+  Global
+------------------------------------------------------------
+
+Lemma U32:
+Prove: (is_uint32 x_0) -> ((land 4294967295 x_0)=x_0)
+Prover Tactical returns Valid
+
+------------------------------------------------------------
diff --git a/src/plugins/wp/tests/wp_plugin/oracle_qualif/abs.0.res.oracle b/src/plugins/wp/tests/wp_plugin/oracle_qualif/abs.0.res.oracle
index 73c826cc4aaee140fd1f5d17f2b9fb6a130f2af1..1e817d3077d7487693e557b8bf7f1a0eef442725 100644
--- a/src/plugins/wp/tests/wp_plugin/oracle_qualif/abs.0.res.oracle
+++ b/src/plugins/wp/tests/wp_plugin/oracle_qualif/abs.0.res.oracle
@@ -4,7 +4,7 @@
 [wp] Loading driver 'share/wp.driver'
 [wp] Warning: Missing RTE guards
 [wp] 1 goal scheduled
-[wp] [Alt-Ergo] Goal typed_abs_abs_post : Valid
+[wp] [Alt-Ergo] Goal typed_abs_abs_ensures : Valid
 [wp] Proved goals:    1 / 1
   Qed:             0 
   Alt-Ergo:        1
diff --git a/src/plugins/wp/tests/wp_plugin/oracle_qualif/abs.1.res.oracle b/src/plugins/wp/tests/wp_plugin/oracle_qualif/abs.1.res.oracle
index 550fd580113eb35c870f99aa7b587150385abc78..da2e3b662c963251c7f6ac368a2714607b8ec0e6 100644
--- a/src/plugins/wp/tests/wp_plugin/oracle_qualif/abs.1.res.oracle
+++ b/src/plugins/wp/tests/wp_plugin/oracle_qualif/abs.1.res.oracle
@@ -4,8 +4,8 @@
 [wp] Loading driver 'share/wp.driver'
 [wp] Warning: Missing RTE guards
 [wp] 1 goal scheduled
-[wp] [Coq] Goal typed_abs_abs_post : Saved script
-[wp] [Coq] Goal typed_abs_abs_post : Valid
+[wp] [Coq] Goal typed_abs_abs_ensures : Saved script
+[wp] [Coq] Goal typed_abs_abs_ensures : Valid
 [wp] Proved goals:    1 / 1
   Qed:             0 
   Coq:             1
diff --git a/src/plugins/wp/tests/wp_plugin/oracle_qualif/abs.2.res.oracle b/src/plugins/wp/tests/wp_plugin/oracle_qualif/abs.2.res.oracle
index 6e07f21393a348fdad690c8d460a82006f7a38a2..45650ee45adf5e7a651050fc1fe87b9707e005a0 100644
--- a/src/plugins/wp/tests/wp_plugin/oracle_qualif/abs.2.res.oracle
+++ b/src/plugins/wp/tests/wp_plugin/oracle_qualif/abs.2.res.oracle
@@ -4,7 +4,7 @@
 [wp] Loading driver 'share/wp.driver'
 [wp] Warning: Missing RTE guards
 [wp] 1 goal scheduled
-[wp] [alt-ergo] Goal typed_abs_abs_post : Valid
+[wp] [alt-ergo] Goal typed_abs_abs_ensures : Valid
 [wp] Proved goals:    1 / 1
   Qed:             0 
   alt-ergo:        1
diff --git a/src/plugins/wp/tests/wp_plugin/oracle_qualif/asm.res.oracle b/src/plugins/wp/tests/wp_plugin/oracle_qualif/asm.res.oracle
index b59e4faa7521d1ba61dd5a788b4f4ad052ba83c7..07c476c9ce818006974d6ddf657ad7642b753f66 100644
--- a/src/plugins/wp/tests/wp_plugin/oracle_qualif/asm.res.oracle
+++ b/src/plugins/wp/tests/wp_plugin/oracle_qualif/asm.res.oracle
@@ -6,7 +6,7 @@
 [wp] 3 goals scheduled
 [wp] [Qed] Goal typed_main_assert_OK : Valid
 [wp] [Alt-Ergo] Goal typed_main_assert_KO : Unknown
-[wp] [Alt-Ergo] Goal typed_main_stmt_assign : Unknown
+[wp] [Alt-Ergo] Goal typed_main_assigns : Unknown
 [wp] Proved goals:    1 / 3
   Qed:             1 
   Alt-Ergo:        0  (unknown: 2)
diff --git a/src/plugins/wp/tests/wp_plugin/oracle_qualif/bool.0.res.oracle b/src/plugins/wp/tests/wp_plugin/oracle_qualif/bool.0.res.oracle
index b2cf1f74ad09c98dcbaf3dd2fde40af3a49d9b03..606944d6c95ef7f41701f7baf4198e97d50990d0 100644
--- a/src/plugins/wp/tests/wp_plugin/oracle_qualif/bool.0.res.oracle
+++ b/src/plugins/wp/tests/wp_plugin/oracle_qualif/bool.0.res.oracle
@@ -4,13 +4,13 @@
 [wp] Loading driver 'share/wp.driver'
 [wp] Warning: Missing RTE guards
 [wp] 7 goals scheduled
-[wp] [Alt-Ergo] Goal typed_band_bool_false_post : Unknown
-[wp] [Qed] Goal typed_band_bool_true_post : Valid
-[wp] [Alt-Ergo] Goal typed_bor_bool_false_post : Unknown
-[wp] [Alt-Ergo] Goal typed_bor_bool_true_post : Valid
-[wp] [Alt-Ergo] Goal typed_bxor_bool_false_post : Unknown
-[wp] [Qed] Goal typed_bxor_bool_true_post : Valid
-[wp] [Alt-Ergo] Goal typed_job_post : Unknown
+[wp] [Alt-Ergo] Goal typed_band_bool_false_ensures : Unknown
+[wp] [Qed] Goal typed_band_bool_true_ensures : Valid
+[wp] [Alt-Ergo] Goal typed_bor_bool_false_ensures : Unknown
+[wp] [Alt-Ergo] Goal typed_bor_bool_true_ensures : Valid
+[wp] [Alt-Ergo] Goal typed_bxor_bool_false_ensures : Unknown
+[wp] [Qed] Goal typed_bxor_bool_true_ensures : Valid
+[wp] [Alt-Ergo] Goal typed_job_ensures : Unknown
 [wp] Proved goals:    3 / 7
   Qed:             2 
   Alt-Ergo:        1  (unknown: 4)
diff --git a/src/plugins/wp/tests/wp_plugin/oracle_qualif/bool.1.res.oracle b/src/plugins/wp/tests/wp_plugin/oracle_qualif/bool.1.res.oracle
index a6b16bfedbd049b2da448bce1fa5c59a00d89009..6bcbed6d8bc5e7a4504e35264367d7194cb802e2 100644
--- a/src/plugins/wp/tests/wp_plugin/oracle_qualif/bool.1.res.oracle
+++ b/src/plugins/wp/tests/wp_plugin/oracle_qualif/bool.1.res.oracle
@@ -4,13 +4,13 @@
 [wp] Loading driver 'share/wp.driver'
 [wp] Warning: Missing RTE guards
 [wp] 7 goals scheduled
-[wp] [Alt-Ergo] Goal typed_band_bool_false_post : Valid
-[wp] [Qed] Goal typed_band_bool_true_post : Valid
-[wp] [Alt-Ergo] Goal typed_bor_bool_false_post : Valid
-[wp] [Alt-Ergo] Goal typed_bor_bool_true_post : Valid
-[wp] [Alt-Ergo] Goal typed_bxor_bool_false_post : Valid
-[wp] [Qed] Goal typed_bxor_bool_true_post : Valid
-[wp] [Alt-Ergo] Goal typed_job_post : Valid
+[wp] [Alt-Ergo] Goal typed_band_bool_false_ensures : Valid
+[wp] [Qed] Goal typed_band_bool_true_ensures : Valid
+[wp] [Alt-Ergo] Goal typed_bor_bool_false_ensures : Valid
+[wp] [Alt-Ergo] Goal typed_bor_bool_true_ensures : Valid
+[wp] [Alt-Ergo] Goal typed_bxor_bool_false_ensures : Valid
+[wp] [Qed] Goal typed_bxor_bool_true_ensures : Valid
+[wp] [Alt-Ergo] Goal typed_job_ensures : Valid
 [wp] Proved goals:    7 / 7
   Qed:             2 
   Alt-Ergo:        5
@@ -18,7 +18,7 @@
 -------------------------------------------------------------
 Functions           WP     Alt-Ergo        Total   Success
 job                 -       1 (12..24)       1       100%
-bor_bool            -       2 (4..16)        2       100%
+bor_bool            -       2 (12..24)       2       100%
 band_bool            1      1 (20..32)       2       100%
-bxor_bool            1      1 (4..16)        2       100%
+bxor_bool            1      1 (8..20)        2       100%
 -------------------------------------------------------------
diff --git a/src/plugins/wp/tests/wp_plugin/oracle_qualif/copy.res.oracle b/src/plugins/wp/tests/wp_plugin/oracle_qualif/copy.res.oracle
index 1da7721953e4da02dcf419d942580116477d2c09..7f5deafd0c144b5123461d94624167bcb8bf78b4 100644
--- a/src/plugins/wp/tests/wp_plugin/oracle_qualif/copy.res.oracle
+++ b/src/plugins/wp/tests/wp_plugin/oracle_qualif/copy.res.oracle
@@ -4,21 +4,21 @@
 [wp] Loading driver 'share/wp.driver'
 [wp] Warning: Missing RTE guards
 [wp] 10 goals scheduled
-[wp] [Alt-Ergo] Goal typed_copy_post : Valid
-[wp] [Alt-Ergo] Goal typed_copy_loop_inv_Copy_preserved : Valid
-[wp] [Qed] Goal typed_copy_loop_inv_Copy_established : Valid
-[wp] [Alt-Ergo] Goal typed_copy_loop_inv_Range_preserved : Valid
-[wp] [Qed] Goal typed_copy_loop_inv_Range_established : Valid
+[wp] [Alt-Ergo] Goal typed_copy_ensures : Valid
+[wp] [Alt-Ergo] Goal typed_copy_loop_invariant_Copy_preserved : Valid
+[wp] [Qed] Goal typed_copy_loop_invariant_Copy_established : Valid
+[wp] [Alt-Ergo] Goal typed_copy_loop_invariant_Range_preserved : Valid
+[wp] [Qed] Goal typed_copy_loop_invariant_Range_established : Valid
 [wp] [Alt-Ergo] Goal typed_copy_assert_A : Valid
 [wp] [Alt-Ergo] Goal typed_copy_assert_B : Valid
-[wp] [Qed] Goal typed_copy_loop_assign_part1 : Valid
-[wp] [Alt-Ergo] Goal typed_copy_loop_assign_part2 : Valid
-[wp] [Qed] Goal typed_copy_assign : Valid
+[wp] [Qed] Goal typed_copy_loop_assigns_part1 : Valid
+[wp] [Alt-Ergo] Goal typed_copy_loop_assigns_part2 : Valid
+[wp] [Qed] Goal typed_copy_assigns : Valid
 [wp] Proved goals:   10 / 10
   Qed:             4 
   Alt-Ergo:        6
 [wp] Report 'tests/wp_plugin/copy.i.0.report.json'
 -------------------------------------------------------------
 Functions           WP     Alt-Ergo        Total   Success
-copy                 4      6 (272..320)    10       100%
+copy                 4      6 (288..336)    10       100%
 -------------------------------------------------------------
diff --git a/src/plugins/wp/tests/wp_plugin/oracle_qualif/dynamic.res.oracle b/src/plugins/wp/tests/wp_plugin/oracle_qualif/dynamic.res.oracle
index 56ccd9a1c6bde78f47a6ac79c3e07806204b9979..15f401314ed824e3543507ac6c947915f700648a 100644
--- a/src/plugins/wp/tests/wp_plugin/oracle_qualif/dynamic.res.oracle
+++ b/src/plugins/wp/tests/wp_plugin/oracle_qualif/dynamic.res.oracle
@@ -6,19 +6,19 @@
 [wp] Loading driver 'share/wp.driver'
 [wp] Warning: Missing RTE guards
 [wp] 13 goals scheduled
-[wp] [Alt-Ergo] Goal typed_call_stmt_calls_f1_f2 : Valid
-[wp] [Qed] Goal typed_call_post_part1 : Valid
-[wp] [Qed] Goal typed_call_post_part2 : Valid
-[wp] [Alt-Ergo] Goal typed_call_call_f1_pre : Valid
-[wp] [Qed] Goal typed_guarded_call_stmt_calls_g : Valid
-[wp] [Alt-Ergo] Goal typed_guarded_call_post_part1 : Valid
-[wp] [Qed] Goal typed_guarded_call_post_part2 : Valid
-[wp] [Qed] Goal typed_guarded_call_post_2_part1 : Valid
-[wp] [Qed] Goal typed_guarded_call_post_2_part2 : Valid
-[wp] [Qed] Goal typed_no_call_stmt_calls_unreachable_g : Valid
-[wp] [Qed] Goal typed_no_call_post_part1 : Valid
-[wp] [Qed] Goal typed_no_call_post_part2 : Valid
-[wp] [Qed] Goal typed_no_call_call_unreachable_g_pre : Valid
+[wp] [Alt-Ergo] Goal typed_call_calls_f1_f2_s3 : Valid
+[wp] [Qed] Goal typed_call_ensures_part1 : Valid
+[wp] [Qed] Goal typed_call_ensures_part2 : Valid
+[wp] [Alt-Ergo] Goal typed_call_call_f1_requires : Valid
+[wp] [Qed] Goal typed_guarded_call_calls_g_s9 : Valid
+[wp] [Alt-Ergo] Goal typed_guarded_call_ensures_part1 : Valid
+[wp] [Qed] Goal typed_guarded_call_ensures_part2 : Valid
+[wp] [Qed] Goal typed_guarded_call_ensures_2_part1 : Valid
+[wp] [Qed] Goal typed_guarded_call_ensures_2_part2 : Valid
+[wp] [Qed] Goal typed_no_call_calls_unreachable_g_s17 : Valid
+[wp] [Qed] Goal typed_no_call_ensures_part1 : Valid
+[wp] [Qed] Goal typed_no_call_ensures_part2 : Valid
+[wp] [Qed] Goal typed_no_call_call_unreachable_g_requires : Valid
 [wp] Proved goals:   13 / 13
   Qed:            10 
   Alt-Ergo:        3
@@ -26,7 +26,7 @@
 -------------------------------------------------------------
 Functions           WP     Alt-Ergo        Total   Success
 call                 2      2 (52..64)       4       100%
-guarded_call         4      1 (8..20)        5       100%
+guarded_call         4      1 (12..24)       5       100%
 no_call              4     -                 4       100%
 -------------------------------------------------------------
 [wp] Warning: Memory model hypotheses for function 'guarded_call':
diff --git a/src/plugins/wp/tests/wp_plugin/oracle_qualif/f.dot b/src/plugins/wp/tests/wp_plugin/oracle_qualif/f.dot
index 839228da72b6c217e33f6e9d92482736bbb08ed3..9b4f1de3952bd66b028d1df4dd8ce7f4c147085a 100644
--- a/src/plugins/wp/tests/wp_plugin/oracle_qualif/f.dot
+++ b/src/plugins/wp/tests/wp_plugin/oracle_qualif/f.dot
@@ -2,9 +2,9 @@ digraph f {
   rankdir = TB ;
   node [ style = filled, shape = box ] ;
   N000 [ color = red, shape = circle, label = "*" ] ;
-  N074 [ color=red , label="Prove f_post" ] ;
+  N074 [ color=red , label="Prove f_ensures" ] ;
   N074 -> N000 [ style=dotted ] ;
-  N075 [ color=red , label="Prove f_post_2" ] ;
+  N075 [ color=red , label="Prove f_ensures_2" ] ;
   N075 -> N074 [ style=dotted ] ;
   N076 [ label="" , shape=circle ] ;
  N076 -> N075 ;
@@ -54,9 +54,9 @@ digraph f {
  N097 -> N096 ;
   N098 [ label="Label wp:sid8 (Stmt s8)" ] ;
  N098 -> N097 ;
-  N099 [ color=green , label="Assume f_stmt_post" ] ;
+  N099 [ color=green , label="Assume f_ensures_3" ] ;
  N099 -> N098 ;
-  N100 [ color=orange , label="Havoc f_stmt_assign:
+  N100 [ color=orange , label="Havoc f_assigns:
 assigns __retres;" ] ;
  N100 -> N099 ;
   N101 [ color=lightblue , label="B-in { }" ] ;
diff --git a/src/plugins/wp/tests/wp_plugin/oracle_qualif/f_default_for_stmt_2.dot b/src/plugins/wp/tests/wp_plugin/oracle_qualif/f_default_for_stmt_2.dot
index 614347c28971929363dd0c265f44c4e874f00fc4..e5347d619f1af81ecddd15d1235eea49dbb1e2b1 100644
--- a/src/plugins/wp/tests/wp_plugin/oracle_qualif/f_default_for_stmt_2.dot
+++ b/src/plugins/wp/tests/wp_plugin/oracle_qualif/f_default_for_stmt_2.dot
@@ -42,13 +42,13 @@ digraph f {
  N132 -> N131 ;
   N133 [ label="Label wp:sid8 (Stmt s8)" ] ;
  N133 -> N132 ;
-  N134 [ color=green , label="Assume f_stmt_post" ] ;
+  N134 [ color=green , label="Assume f_ensures_3" ] ;
  N134 -> N133 ;
-  N135 [ color=red , label="Assigns f_stmt_assign" ] ;
+  N135 [ color=red , label="Assigns f_assigns" ] ;
   N136 [ label="" , shape=circle ] ;
  N136 -> N135 ;
  N136 -> N134 ;
-  N137 [ color=red , label="Prove f_stmt_post" ] ;
+  N137 [ color=red , label="Prove f_ensures_3" ] ;
   N137 -> N136 [ style=dotted ] ;
   N138 [ label="" , shape=circle ] ;
  N138 -> N137 ;
diff --git a/src/plugins/wp/tests/wp_plugin/oracle_qualif/flash.0.res.oracle b/src/plugins/wp/tests/wp_plugin/oracle_qualif/flash.0.res.oracle
index 463183dead7dac70e70770e6da7273668891eb4c..94e4b5d38162d1674edec315e1a9a287d5455566 100644
--- a/src/plugins/wp/tests/wp_plugin/oracle_qualif/flash.0.res.oracle
+++ b/src/plugins/wp/tests/wp_plugin/oracle_qualif/flash.0.res.oracle
@@ -4,12 +4,12 @@
 [wp] Loading driver 'share/wp.driver'
 [wp] Warning: Missing RTE guards
 [wp] 6 goals scheduled
-[wp] [Qed] Goal typed_job_post_Events : Valid
-[wp] [Alt-Ergo] Goal typed_job_post_A_reads : Unknown
-[wp] [Alt-Ergo] Goal typed_job_post_B_reads : Unknown
-[wp] [Alt-Ergo] Goal typed_job_post_B_writes : Unknown
-[wp] [Alt-Ergo] Goal typed_job_post_ReadValues : Unknown
-[wp] [Alt-Ergo] Goal typed_job_post_WriteValues : Unknown
+[wp] [Qed] Goal typed_job_ensures_Events : Valid
+[wp] [Alt-Ergo] Goal typed_job_ensures_A_reads : Unknown
+[wp] [Alt-Ergo] Goal typed_job_ensures_B_reads : Unknown
+[wp] [Alt-Ergo] Goal typed_job_ensures_B_writes : Unknown
+[wp] [Alt-Ergo] Goal typed_job_ensures_ReadValues : Unknown
+[wp] [Alt-Ergo] Goal typed_job_ensures_WriteValues : Unknown
 [wp] Proved goals:    1 / 6
   Qed:             1 
   Alt-Ergo:        0  (unknown: 5)
diff --git a/src/plugins/wp/tests/wp_plugin/oracle_qualif/flash.1.res.oracle b/src/plugins/wp/tests/wp_plugin/oracle_qualif/flash.1.res.oracle
index 195117fbb5e473dab77f363f433995edace86afc..0526455b58b5dc46bc8f17946d407ab15427b10b 100644
--- a/src/plugins/wp/tests/wp_plugin/oracle_qualif/flash.1.res.oracle
+++ b/src/plugins/wp/tests/wp_plugin/oracle_qualif/flash.1.res.oracle
@@ -6,12 +6,12 @@
   Redefinition of logic INDEX_init
 [wp] Warning: Missing RTE guards
 [wp] 6 goals scheduled
-[wp] [Qed] Goal typed_flash_flash-ergo_job_post_Events : Valid
-[wp] [Alt-Ergo] Goal typed_flash_flash-ergo_job_post_A_reads : Valid
-[wp] [Alt-Ergo] Goal typed_flash_flash-ergo_job_post_B_reads : Valid
-[wp] [Alt-Ergo] Goal typed_flash_flash-ergo_job_post_B_writes : Valid
-[wp] [Alt-Ergo] Goal typed_flash_flash-ergo_job_post_ReadValues : Valid
-[wp] [Alt-Ergo] Goal typed_flash_flash-ergo_job_post_WriteValues : Valid
+[wp] [Qed] Goal typed_flash_flash-ergo_job_ensures_Events : Valid
+[wp] [Alt-Ergo] Goal typed_flash_flash-ergo_job_ensures_A_reads : Valid
+[wp] [Alt-Ergo] Goal typed_flash_flash-ergo_job_ensures_B_reads : Valid
+[wp] [Alt-Ergo] Goal typed_flash_flash-ergo_job_ensures_B_writes : Valid
+[wp] [Alt-Ergo] Goal typed_flash_flash-ergo_job_ensures_ReadValues : Valid
+[wp] [Alt-Ergo] Goal typed_flash_flash-ergo_job_ensures_WriteValues : Valid
 [wp] Proved goals:    6 / 6
   Qed:             1 
   Alt-Ergo:        5
diff --git a/src/plugins/wp/tests/wp_plugin/oracle_qualif/flash.2.res.oracle b/src/plugins/wp/tests/wp_plugin/oracle_qualif/flash.2.res.oracle
index 9ebb3f526971847ed12410241e8a78634c96e214..93ab36295ede189b5f83413707fe2f79f5e44939 100644
--- a/src/plugins/wp/tests/wp_plugin/oracle_qualif/flash.2.res.oracle
+++ b/src/plugins/wp/tests/wp_plugin/oracle_qualif/flash.2.res.oracle
@@ -4,12 +4,12 @@
 [wp] Loading driver 'share/wp.driver'
 [wp] Warning: Missing RTE guards
 [wp] 6 goals scheduled
-[wp] [Qed] Goal typed_flash_job_post_Events : Valid
-[wp] [Qed] Goal typed_flash_job_post_A_reads : Valid
-[wp] [Qed] Goal typed_flash_job_post_B_reads : Valid
-[wp] [Qed] Goal typed_flash_job_post_B_writes : Valid
-[wp] [Qed] Goal typed_flash_job_post_ReadValues : Valid
-[wp] [Qed] Goal typed_flash_job_post_WriteValues : Valid
+[wp] [Qed] Goal typed_flash_job_ensures_Events : Valid
+[wp] [Qed] Goal typed_flash_job_ensures_A_reads : Valid
+[wp] [Qed] Goal typed_flash_job_ensures_B_reads : Valid
+[wp] [Qed] Goal typed_flash_job_ensures_B_writes : Valid
+[wp] [Qed] Goal typed_flash_job_ensures_ReadValues : Valid
+[wp] [Qed] Goal typed_flash_job_ensures_WriteValues : Valid
 [wp] Proved goals:    6 / 6
   Qed:             6
 [wp] Report 'tests/wp_plugin/flash.c.2.report.json'
diff --git a/src/plugins/wp/tests/wp_plugin/oracle_qualif/float_format.0.res.oracle b/src/plugins/wp/tests/wp_plugin/oracle_qualif/float_format.0.res.oracle
index 7d048ababa304bb178ea39ab34550c7cab67870e..b7b96a6671885c7a7520af8435f44eae9e3e2e4a 100644
--- a/src/plugins/wp/tests/wp_plugin/oracle_qualif/float_format.0.res.oracle
+++ b/src/plugins/wp/tests/wp_plugin/oracle_qualif/float_format.0.res.oracle
@@ -7,8 +7,8 @@
 [wp] Loading driver 'share/wp.driver'
 [wp] Warning: Missing RTE guards
 [wp] 1 goal scheduled
-[wp] [Coq] Goal typed_output_post_KO : Default tactic
-[wp] [Coq] Goal typed_output_post_KO : Unknown
+[wp] [Coq] Goal typed_output_ensures_KO : Default tactic
+[wp] [Coq] Goal typed_output_ensures_KO : Unknown
 [wp] Proved goals:    0 / 1
   Coq:             0  (unknown: 1)
 [wp] Report 'tests/wp_plugin/float_format.i.0.report.json'
diff --git a/src/plugins/wp/tests/wp_plugin/oracle_qualif/float_format.1.res.oracle b/src/plugins/wp/tests/wp_plugin/oracle_qualif/float_format.1.res.oracle
index 51150b389c4802c954416c1f7b1e6e8a25c3a578..97b86f838a739b903ae5c37ab8f562360e1d342d 100644
--- a/src/plugins/wp/tests/wp_plugin/oracle_qualif/float_format.1.res.oracle
+++ b/src/plugins/wp/tests/wp_plugin/oracle_qualif/float_format.1.res.oracle
@@ -7,7 +7,7 @@
 [wp] Loading driver 'share/wp.driver'
 [wp] Warning: Missing RTE guards
 [wp] 1 goal scheduled
-[wp] [Alt-Ergo] Goal typed_output_post_KO : Step limit
+[wp] [Alt-Ergo] Goal typed_output_ensures_KO : Step limit
 [wp] Proved goals:    0 / 1
   Alt-Ergo:        0  (interrupted: 1)
 [wp] Report 'tests/wp_plugin/float_format.i.1.report.json'
diff --git a/src/plugins/wp/tests/wp_plugin/oracle_qualif/float_format.2.res.oracle b/src/plugins/wp/tests/wp_plugin/oracle_qualif/float_format.2.res.oracle
index fd1797d19c215be15bc8976cbeb6a2e1ca89bbbc..d5a6e2d19b65c96884d80ee6a92158063f4b2a35 100644
--- a/src/plugins/wp/tests/wp_plugin/oracle_qualif/float_format.2.res.oracle
+++ b/src/plugins/wp/tests/wp_plugin/oracle_qualif/float_format.2.res.oracle
@@ -7,7 +7,7 @@
 [wp] Loading driver 'share/wp.driver'
 [wp] Warning: Missing RTE guards
 [wp] 1 goal scheduled
-[wp] [alt-ergo] Goal typed_output_post_KO : Unknown
+[wp] [alt-ergo] Goal typed_output_ensures_KO : Unknown
 [wp] Proved goals:    0 / 1
   alt-ergo:        0  (unknown: 1)
 [wp] Report 'tests/wp_plugin/float_format.i.2.report.json'
diff --git a/src/plugins/wp/tests/wp_plugin/oracle_qualif/float_real.0.res.oracle b/src/plugins/wp/tests/wp_plugin/oracle_qualif/float_real.0.res.oracle
new file mode 100644
index 0000000000000000000000000000000000000000..374012968858e66f768f7d9849c4718d417c7403
--- /dev/null
+++ b/src/plugins/wp/tests/wp_plugin/oracle_qualif/float_real.0.res.oracle
@@ -0,0 +1,18 @@
+# frama-c -wp -wp-model 'Typed (Real)' -wp-timeout 90 -wp-steps 1500 [...]
+[kernel] Parsing tests/wp_plugin/float_real.i (no preprocessing)
+[kernel:parser:decimal-float] tests/wp_plugin/float_real.i:19: Warning: 
+  Floating-point constant 1e-5 is not represented exactly. Will use 0x1.4f8b588e368f1p-17.
+  (warn-once: no further messages from category 'parser:decimal-float' will be emitted)
+[wp] Running WP plugin...
+[wp] Loading driver 'share/wp.driver'
+[wp] Warning: Missing RTE guards
+[wp] 1 goal scheduled
+[wp] [Alt-Ergo] Goal typed_real_dequal_ensures : Valid
+[wp] Proved goals:    1 / 1
+  Qed:             0 
+  Alt-Ergo:        1
+[wp] Report 'tests/wp_plugin/float_real.i.0.report.json'
+-------------------------------------------------------------
+Functions           WP     Alt-Ergo        Total   Success
+dequal              -       1 (12..24)       1       100%
+-------------------------------------------------------------
diff --git a/src/plugins/wp/tests/wp_plugin/oracle_qualif/float_real.1.res.oracle b/src/plugins/wp/tests/wp_plugin/oracle_qualif/float_real.1.res.oracle
new file mode 100644
index 0000000000000000000000000000000000000000..9d641a24aef9385bf3e0db628e475248c80f9187
--- /dev/null
+++ b/src/plugins/wp/tests/wp_plugin/oracle_qualif/float_real.1.res.oracle
@@ -0,0 +1,17 @@
+# frama-c -wp -wp-model 'Typed' -wp-timeout 90 -wp-steps 1500 [...]
+[kernel] Parsing tests/wp_plugin/float_real.i (no preprocessing)
+[kernel:parser:decimal-float] tests/wp_plugin/float_real.i:19: Warning: 
+  Floating-point constant 1e-5 is not represented exactly. Will use 0x1.4f8b588e368f1p-17.
+  (warn-once: no further messages from category 'parser:decimal-float' will be emitted)
+[wp] Running WP plugin...
+[wp] Loading driver 'share/wp.driver'
+[wp] Warning: Missing RTE guards
+[wp] 1 goal scheduled
+[wp] [Alt-Ergo] Goal typed_dequal_ensures : Unknown
+[wp] Proved goals:    0 / 1
+  Alt-Ergo:        0  (unknown: 1)
+[wp] Report 'tests/wp_plugin/float_real.i.1.report.json'
+-------------------------------------------------------------
+Functions           WP     Alt-Ergo        Total   Success
+dequal              -      -                 1       0.0%
+-------------------------------------------------------------
diff --git a/src/plugins/wp/tests/wp_plugin/oracle_qualif/frame.res.oracle b/src/plugins/wp/tests/wp_plugin/oracle_qualif/frame.res.oracle
index b8b11e348c6abdb2091e66cd7e7245c797c257bc..1ada5c75caf4987e62c791656845dd4e79966209 100644
--- a/src/plugins/wp/tests/wp_plugin/oracle_qualif/frame.res.oracle
+++ b/src/plugins/wp/tests/wp_plugin/oracle_qualif/frame.res.oracle
@@ -4,11 +4,11 @@
 [wp] Loading driver 'share/wp.driver'
 [wp] Warning: Missing RTE guards
 [wp] 6 goals scheduled
-[wp] [Alt-Ergo] Goal typed_alias_post_KO : Unknown
-[wp] [Alt-Ergo] Goal typed_global_post_KO : Unknown
-[wp] [Qed] Goal typed_local_post_FRAMED : Valid
-[wp] [Alt-Ergo] Goal typed_local_post_KO : Unknown
-[wp] [Alt-Ergo] Goal typed_localref_post_KO : Unknown
+[wp] [Alt-Ergo] Goal typed_alias_ensures_KO : Unknown
+[wp] [Alt-Ergo] Goal typed_global_ensures_KO : Unknown
+[wp] [Qed] Goal typed_local_ensures_FRAMED : Valid
+[wp] [Alt-Ergo] Goal typed_local_ensures_KO : Unknown
+[wp] [Alt-Ergo] Goal typed_localref_ensures_KO : Unknown
 [wp] [Qed] Goal typed_localref_assert_FRAMED : Valid
 [wp] Proved goals:    2 / 6
   Qed:             2 
diff --git a/src/plugins/wp/tests/wp_plugin/oracle_qualif/g.dot b/src/plugins/wp/tests/wp_plugin/oracle_qualif/g.dot
index 02cc6ec3138039fb4911139704e924eeeecbff2c..5cdbeab832713294f78f544c2edaf44cee84135c 100644
--- a/src/plugins/wp/tests/wp_plugin/oracle_qualif/g.dot
+++ b/src/plugins/wp/tests/wp_plugin/oracle_qualif/g.dot
@@ -2,7 +2,7 @@ digraph g {
   rankdir = TB ;
   node [ style = filled, shape = box ] ;
   N000 [ color = red, shape = circle, label = "*" ] ;
-  N049 [ color=red , label="Prove g_post" ] ;
+  N049 [ color=red , label="Prove g_ensures_2" ] ;
   N049 -> N000 [ style=dotted ] ;
   N050 [ color=lightblue , label="F-out { a b }" ] ;
  N050 -> N049 ;
diff --git a/src/plugins/wp/tests/wp_plugin/oracle_qualif/init_const.res.oracle b/src/plugins/wp/tests/wp_plugin/oracle_qualif/init_const.res.oracle
index f22d561a37d82210a1d5463a115a000c4bbf4d0e..55dfd7a78b60b76a1adbec7ce6a6e88586a8ebc7 100644
--- a/src/plugins/wp/tests/wp_plugin/oracle_qualif/init_const.res.oracle
+++ b/src/plugins/wp/tests/wp_plugin/oracle_qualif/init_const.res.oracle
@@ -4,10 +4,10 @@
 [wp] Loading driver 'share/wp.driver'
 [wp] Warning: Missing RTE guards
 [wp] 4 goals scheduled
-[wp] [Alt-Ergo] Goal typed_fA_post_KO : Unknown
-[wp] [Qed] Goal typed_fB_post_OK : Valid
-[wp] [Alt-Ergo] Goal typed_fC_post_KO : Unknown
-[wp] [Qed] Goal typed_fD_post_OK : Valid
+[wp] [Alt-Ergo] Goal typed_fA_ensures_KO : Unknown
+[wp] [Qed] Goal typed_fB_ensures_OK : Valid
+[wp] [Alt-Ergo] Goal typed_fC_ensures_KO : Unknown
+[wp] [Qed] Goal typed_fD_ensures_OK : Valid
 [wp] Proved goals:    2 / 4
   Qed:             2 
   Alt-Ergo:        0  (unknown: 2)
diff --git a/src/plugins/wp/tests/wp_plugin/oracle_qualif/init_const_guard.res.oracle b/src/plugins/wp/tests/wp_plugin/oracle_qualif/init_const_guard.res.oracle
index 6e9a97a491f9e5f6d8cc98cd2408b959e8b85c15..37a5407fe0cc5eb006eb192b74540eb830370947 100644
--- a/src/plugins/wp/tests/wp_plugin/oracle_qualif/init_const_guard.res.oracle
+++ b/src/plugins/wp/tests/wp_plugin/oracle_qualif/init_const_guard.res.oracle
@@ -4,11 +4,11 @@
 [wp] Loading driver 'share/wp.driver'
 [wp] Warning: Missing RTE guards
 [wp] 7 goals scheduled
-[wp] [Qed] Goal typed_f_post_Const : Valid
-[wp] [Alt-Ergo] Goal typed_f_post_Pointed_Valid : Valid
-[wp] [Qed] Goal typed_f_post_Q_ReadOnly : Valid
-[wp] [Qed] Goal typed_f_post_Q_NotWrite : Valid
-[wp] [Qed] Goal typed_g_post_P_not_Const : Valid
+[wp] [Qed] Goal typed_f_ensures_Const : Valid
+[wp] [Alt-Ergo] Goal typed_f_ensures_Pointed_Valid : Valid
+[wp] [Qed] Goal typed_f_ensures_Q_ReadOnly : Valid
+[wp] [Qed] Goal typed_f_ensures_Q_NotWrite : Valid
+[wp] [Qed] Goal typed_g_ensures_P_not_Const : Valid
 [wp] [Alt-Ergo] Goal typed_g_assert_Read : Valid
 [wp] [Alt-Ergo] Goal typed_g_assert_Guard_against_Const : Unknown
 [wp] Proved goals:    6 / 7
@@ -18,5 +18,5 @@
 -------------------------------------------------------------
 Functions           WP     Alt-Ergo        Total   Success
 f                    3      1 (16..28)       4       100%
-g                    1      1 (16..28)       3      66.7%
+g                    1      1 (20..32)       3      66.7%
 -------------------------------------------------------------
diff --git a/src/plugins/wp/tests/wp_plugin/oracle_qualif/init_extern.res.oracle b/src/plugins/wp/tests/wp_plugin/oracle_qualif/init_extern.res.oracle
index 276d436a9d02dda81164774b0d4a1108e7408e2d..56d58accfc3dde00676746ecc7c2bf6879d04976 100644
--- a/src/plugins/wp/tests/wp_plugin/oracle_qualif/init_extern.res.oracle
+++ b/src/plugins/wp/tests/wp_plugin/oracle_qualif/init_extern.res.oracle
@@ -5,9 +5,9 @@
 [wp] Loading driver 'share/wp.driver'
 [wp] Warning: Missing RTE guards
 [wp] 3 goals scheduled
-[wp] [Qed] Goal typed_f_post_OK : Valid
-[wp] [Alt-Ergo] Goal typed_f_post_KO : Unknown
-[wp] [Alt-Ergo] Goal typed_f_post_KO_2 : Unknown
+[wp] [Qed] Goal typed_f_ensures_OK : Valid
+[wp] [Alt-Ergo] Goal typed_f_ensures_KO : Unknown
+[wp] [Alt-Ergo] Goal typed_f_ensures_KO_2 : Unknown
 [wp] Proved goals:    1 / 3
   Qed:             1 
   Alt-Ergo:        0  (unknown: 2)
diff --git a/src/plugins/wp/tests/wp_plugin/oracle_qualif/initarr.res.oracle b/src/plugins/wp/tests/wp_plugin/oracle_qualif/initarr.res.oracle
index 0c04cc403b389a1d243d0bb7fa85a52581300dde..fdaf378128c2a1d26a9c3c4bcef66b3f95b3f653 100644
--- a/src/plugins/wp/tests/wp_plugin/oracle_qualif/initarr.res.oracle
+++ b/src/plugins/wp/tests/wp_plugin/oracle_qualif/initarr.res.oracle
@@ -4,13 +4,13 @@
 [wp] Loading driver 'share/wp.driver'
 [wp] Warning: Missing RTE guards
 [wp] 2 goals scheduled
-[wp] [Alt-Ergo] Goal typed_job_post_SEP : Valid
-[wp] [Alt-Ergo] Goal typed_job_post_ALT : Valid
+[wp] [Alt-Ergo] Goal typed_job_ensures_SEP : Valid
+[wp] [Alt-Ergo] Goal typed_job_ensures_ALT : Valid
 [wp] Proved goals:    2 / 2
   Qed:             0 
   Alt-Ergo:        2
 [wp] Report 'tests/wp_plugin/initarr.i.0.report.json'
 -------------------------------------------------------------
 Functions           WP     Alt-Ergo        Total   Success
-job                 -       2 (36..48)       2       100%
+job                 -       2 (40..52)       2       100%
 -------------------------------------------------------------
diff --git a/src/plugins/wp/tests/wp_plugin/oracle_qualif/injector.0.res.oracle b/src/plugins/wp/tests/wp_plugin/oracle_qualif/injector.0.res.oracle
index b8f21b1a87b71d00a07c970692909bb9ff61cf18..7cbec9994f85d3b9a87ec5b66316298e3c4402b9 100644
--- a/src/plugins/wp/tests/wp_plugin/oracle_qualif/injector.0.res.oracle
+++ b/src/plugins/wp/tests/wp_plugin/oracle_qualif/injector.0.res.oracle
@@ -4,19 +4,19 @@
 [wp] Loading driver 'share/wp.driver'
 [wp] Warning: Missing RTE guards
 [wp] 13 goals scheduled
-[wp] [Qed] Goal typed_f_call_g_pre : Valid
-[wp] [Qed] Goal typed_f_call_g_pre_2 : Valid
-[wp] [Qed] Goal typed_f_FST_FAIL_post_qed_ok : Valid
-[wp] [Qed] Goal typed_f_FST_FAIL_post_qed_ok_2 : Valid
-[wp] [Qed] Goal typed_f_FST_FAIL_post_qed_ok_3 : Valid
-[wp] [Qed] Goal typed_f_SND_FAIL_post_qed_ok : Valid
-[wp] [Qed] Goal typed_f_SND_FAIL_post_qed_ok_2 : Valid
-[wp] [Qed] Goal typed_f_SND_FAIL_post_qed_ok_3 : Valid
-[wp] [Qed] Goal typed_f_SND_FAIL_post_qed_ok_4 : Valid
-[wp] [Qed] Goal typed_f_SUCCESS_post_qed_ok : Valid
-[wp] [Qed] Goal typed_f_SUCCESS_post_qed_ok_2 : Valid
-[wp] [Qed] Goal typed_f_SUCCESS_post_qed_ok_3 : Valid
-[wp] [Qed] Goal typed_f_SUCCESS_post_qed_ok_4 : Valid
+[wp] [Qed] Goal typed_f_call_g_requires : Valid
+[wp] [Qed] Goal typed_f_call_g_requires : Valid
+[wp] [Qed] Goal typed_f_FST_FAIL_ensures_qed_ok : Valid
+[wp] [Qed] Goal typed_f_FST_FAIL_ensures_qed_ok_2 : Valid
+[wp] [Qed] Goal typed_f_FST_FAIL_ensures_qed_ok_3 : Valid
+[wp] [Qed] Goal typed_f_SND_FAIL_ensures_qed_ok : Valid
+[wp] [Qed] Goal typed_f_SND_FAIL_ensures_qed_ok_2 : Valid
+[wp] [Qed] Goal typed_f_SND_FAIL_ensures_qed_ok_3 : Valid
+[wp] [Qed] Goal typed_f_SND_FAIL_ensures_qed_ok_4 : Valid
+[wp] [Qed] Goal typed_f_SUCCESS_ensures_qed_ok : Valid
+[wp] [Qed] Goal typed_f_SUCCESS_ensures_qed_ok_2 : Valid
+[wp] [Qed] Goal typed_f_SUCCESS_ensures_qed_ok_3 : Valid
+[wp] [Qed] Goal typed_f_SUCCESS_ensures_qed_ok_4 : Valid
 [wp] Proved goals:   13 / 13
   Qed:            13
 [wp] Report 'tests/wp_plugin/injector.c.0.report.json'
diff --git a/src/plugins/wp/tests/wp_plugin/oracle_qualif/injector.1.res.oracle b/src/plugins/wp/tests/wp_plugin/oracle_qualif/injector.1.res.oracle
index 14b022f52b2429ebff0d3e7bf1695169ebed68ed..4862a74bd900b08f9b57715585fe92acc38bc5de 100644
--- a/src/plugins/wp/tests/wp_plugin/oracle_qualif/injector.1.res.oracle
+++ b/src/plugins/wp/tests/wp_plugin/oracle_qualif/injector.1.res.oracle
@@ -4,10 +4,10 @@
 [wp] Loading driver 'share/wp.driver'
 [wp] Warning: Missing RTE guards
 [wp] 4 goals scheduled
-[wp] [Alt-Ergo] Goal typed_f_ko_post_qed_ko : Unknown
-[wp] [Alt-Ergo] Goal typed_f_ko_1_post_qed_ko : Unknown
-[wp] [Alt-Ergo] Goal typed_f_ko_1_post_qed_ko_2 : Unknown
-[wp] [Alt-Ergo] Goal typed_f_ko_1_post_qed_ko_3 : Unknown
+[wp] [Alt-Ergo] Goal typed_f_ko_ensures_qed_ko : Unknown
+[wp] [Alt-Ergo] Goal typed_f_ko_1_ensures_qed_ko : Unknown
+[wp] [Alt-Ergo] Goal typed_f_ko_1_ensures_qed_ko_2 : Unknown
+[wp] [Alt-Ergo] Goal typed_f_ko_1_ensures_qed_ko_3 : Unknown
 [wp] Proved goals:    0 / 4
   Alt-Ergo:        0  (unknown: 4)
 [wp] Report 'tests/wp_plugin/injector.c.1.report.json'
diff --git a/src/plugins/wp/tests/wp_plugin/oracle_qualif/loop.res.oracle b/src/plugins/wp/tests/wp_plugin/oracle_qualif/loop.res.oracle
index 9825fad01fb3143eb07b83ae3de24a4e3bd491cf..31fb187436c43ad82a36d338ba9a42aa110a0aaf 100644
--- a/src/plugins/wp/tests/wp_plugin/oracle_qualif/loop.res.oracle
+++ b/src/plugins/wp/tests/wp_plugin/oracle_qualif/loop.res.oracle
@@ -4,15 +4,15 @@
 [wp] Loading driver 'share/wp.driver'
 [wp] Warning: Missing RTE guards
 [wp] 9 goals scheduled
-[wp] [Alt-Ergo] Goal typed_init_post_qed_ok : Valid
-[wp] [Alt-Ergo] Goal typed_init_loop_inv_qed_ok_preserved : Valid
-[wp] [Alt-Ergo] Goal typed_init_loop_inv_qed_ok_established : Valid
-[wp] [Alt-Ergo] Goal typed_init_loop_inv_qed_ok_2_preserved : Valid
-[wp] [Qed] Goal typed_init_loop_inv_qed_ok_2_established : Valid
-[wp] [Qed] Goal typed_init_loop_assign_part1 : Valid
-[wp] [Qed] Goal typed_init_loop_assign_part2 : Valid
-[wp] [Alt-Ergo] Goal typed_init_loop_assign_part3 : Valid
-[wp] [Alt-Ergo] Goal typed_init_assign : Unknown
+[wp] [Alt-Ergo] Goal typed_init_ensures_qed_ok : Valid
+[wp] [Alt-Ergo] Goal typed_init_loop_invariant_qed_ok_preserved : Valid
+[wp] [Alt-Ergo] Goal typed_init_loop_invariant_qed_ok_established : Valid
+[wp] [Alt-Ergo] Goal typed_init_loop_invariant_qed_ok_2_preserved : Valid
+[wp] [Qed] Goal typed_init_loop_invariant_qed_ok_2_established : Valid
+[wp] [Qed] Goal typed_init_loop_assigns_part1 : Valid
+[wp] [Qed] Goal typed_init_loop_assigns_part2 : Valid
+[wp] [Alt-Ergo] Goal typed_init_loop_assigns_part3 : Valid
+[wp] [Alt-Ergo] Goal typed_init_assigns : Unknown
 [wp] Proved goals:    8 / 9
   Qed:             3 
   Alt-Ergo:        5  (unknown: 1)
diff --git a/src/plugins/wp/tests/wp_plugin/oracle_qualif/loopcurrent.res.oracle b/src/plugins/wp/tests/wp_plugin/oracle_qualif/loopcurrent.res.oracle
index c175e6344679409963f39207e3f6c4f1524125dc..0eb100dcd2f23c19775b47cc46664a0e8c4d85d8 100644
--- a/src/plugins/wp/tests/wp_plugin/oracle_qualif/loopcurrent.res.oracle
+++ b/src/plugins/wp/tests/wp_plugin/oracle_qualif/loopcurrent.res.oracle
@@ -6,10 +6,10 @@
 [wp] tests/wp_plugin/loopcurrent.i:12: Warning: 
   Missing assigns clause (assigns 'everything' instead)
 [wp] 4 goals scheduled
-[wp] [Qed] Goal typed_f_loop_inv_preserved : Valid
-[wp] [Qed] Goal typed_f_loop_inv_established : Valid
-[wp] [Qed] Goal typed_f_loop_inv_2_preserved : Valid
-[wp] [Qed] Goal typed_f_loop_inv_2_established : Valid
+[wp] [Qed] Goal typed_f_loop_invariant_preserved : Valid
+[wp] [Qed] Goal typed_f_loop_invariant_established : Valid
+[wp] [Qed] Goal typed_f_loop_invariant_2_preserved : Valid
+[wp] [Qed] Goal typed_f_loop_invariant_2_established : Valid
 [wp] Proved goals:    4 / 4
   Qed:             4
 [wp] Report 'tests/wp_plugin/loopcurrent.i.0.report.json'
diff --git a/src/plugins/wp/tests/wp_plugin/oracle_qualif/loopentry.res.oracle b/src/plugins/wp/tests/wp_plugin/oracle_qualif/loopentry.res.oracle
index 0706b9a7b8fa3c192b50d938b6f2ec94db53dd35..42b8084aefbaca04e2ef438c16c01e6c3bbc72c4 100644
--- a/src/plugins/wp/tests/wp_plugin/oracle_qualif/loopentry.res.oracle
+++ b/src/plugins/wp/tests/wp_plugin/oracle_qualif/loopentry.res.oracle
@@ -6,10 +6,10 @@
 [wp] tests/wp_plugin/loopentry.i:12: Warning: 
   Missing assigns clause (assigns 'everything' instead)
 [wp] 4 goals scheduled
-[wp] [Qed] Goal typed_f_loop_inv_preserved : Valid
-[wp] [Qed] Goal typed_f_loop_inv_established : Valid
-[wp] [Qed] Goal typed_f_loop_inv_2_preserved : Valid
-[wp] [Qed] Goal typed_f_loop_inv_2_established : Valid
+[wp] [Qed] Goal typed_f_loop_invariant_preserved : Valid
+[wp] [Qed] Goal typed_f_loop_invariant_established : Valid
+[wp] [Qed] Goal typed_f_loop_invariant_2_preserved : Valid
+[wp] [Qed] Goal typed_f_loop_invariant_2_established : Valid
 [wp] Proved goals:    4 / 4
   Qed:             4
 [wp] Report 'tests/wp_plugin/loopentry.i.0.report.json'
diff --git a/src/plugins/wp/tests/wp_plugin/oracle_qualif/mask.res.oracle b/src/plugins/wp/tests/wp_plugin/oracle_qualif/mask.res.oracle
index 46ec9a2dfacb0335cd853da1942b9f00bec683fb..e0af8eb53799fbef86d2bfdd619a92a101474602 100644
--- a/src/plugins/wp/tests/wp_plugin/oracle_qualif/mask.res.oracle
+++ b/src/plugins/wp/tests/wp_plugin/oracle_qualif/mask.res.oracle
@@ -4,8 +4,8 @@
 [wp] Loading driver 'share/wp.driver'
 [wp] Warning: Missing RTE guards
 [wp] 2 goals scheduled
-[wp] [Qed] Goal typed_compute_post_A : Valid
-[wp] [Qed] Goal typed_compute_post_B : Valid
+[wp] [Qed] Goal typed_compute_ensures_A : Valid
+[wp] [Qed] Goal typed_compute_ensures_B : Valid
 [wp] Proved goals:    2 / 2
   Qed:             2
 [wp] Report 'tests/wp_plugin/mask.i.0.report.json'
diff --git a/src/plugins/wp/tests/wp_plugin/oracle_qualif/math.0.res.oracle b/src/plugins/wp/tests/wp_plugin/oracle_qualif/math.0.res.oracle
index fa8da06b1ecdcf410d98f33faa173d5292af677b..dcc82cab512cdb04e5906b915ee3a10e5f6ff968 100644
--- a/src/plugins/wp/tests/wp_plugin/oracle_qualif/math.0.res.oracle
+++ b/src/plugins/wp/tests/wp_plugin/oracle_qualif/math.0.res.oracle
@@ -23,17 +23,17 @@
 [wp] [Alt-Ergo] Goal typed_lemma_sqrt_mono : Valid
 [wp] [Alt-Ergo] Goal typed_lemma_sqrt_pos : Valid
 [wp] [Alt-Ergo] Goal typed_lemma_tanh_opp : Valid
-[wp] [Alt-Ergo] Goal typed_ok_post_sin_asin : Valid
-[wp] [Alt-Ergo] Goal typed_ok_post_sin_asin_in_range : Valid
-[wp] [Alt-Ergo] Goal typed_ok_post_cos_acos : Valid
-[wp] [Alt-Ergo] Goal typed_ok_post_cos_acos_in_range : Valid
-[wp] [Qed] Goal typed_ok_post_tan_atan : Valid
-[wp] [Alt-Ergo] Goal typed_ok_post_log_pow : Valid
-[wp] [Qed] Goal typed_ok_post_log_exp : Valid
-[wp] [Alt-Ergo] Goal typed_ok_post_exp_log : Valid
-[wp] [Alt-Ergo] Goal typed_ok_post_min_plus_distrib : Valid
-[wp] [Alt-Ergo] Goal typed_ok_post_sqrt_pos : Valid
-[wp] [Alt-Ergo] Goal typed_ok_post_sqrt_pos0 : Valid
+[wp] [Alt-Ergo] Goal typed_ok_ensures_sin_asin : Valid
+[wp] [Alt-Ergo] Goal typed_ok_ensures_sin_asin_in_range : Valid
+[wp] [Alt-Ergo] Goal typed_ok_ensures_cos_acos : Valid
+[wp] [Alt-Ergo] Goal typed_ok_ensures_cos_acos_in_range : Valid
+[wp] [Qed] Goal typed_ok_ensures_tan_atan : Valid
+[wp] [Alt-Ergo] Goal typed_ok_ensures_log_pow : Valid
+[wp] [Qed] Goal typed_ok_ensures_log_exp : Valid
+[wp] [Alt-Ergo] Goal typed_ok_ensures_exp_log : Valid
+[wp] [Alt-Ergo] Goal typed_ok_ensures_min_plus_distrib : Valid
+[wp] [Alt-Ergo] Goal typed_ok_ensures_sqrt_pos : Valid
+[wp] [Alt-Ergo] Goal typed_ok_ensures_sqrt_pos0 : Valid
 [wp] Proved goals:   30 / 30
   Qed:             5 
   Alt-Ergo:       25
diff --git a/src/plugins/wp/tests/wp_plugin/oracle_qualif/math.1.res.oracle b/src/plugins/wp/tests/wp_plugin/oracle_qualif/math.1.res.oracle
index fc1ca3b86f37c771d6d3e2e679052ed22a31eab4..bf2477d381d6f7b5ff8ba62a2a2c42c38ecb3b38 100644
--- a/src/plugins/wp/tests/wp_plugin/oracle_qualif/math.1.res.oracle
+++ b/src/plugins/wp/tests/wp_plugin/oracle_qualif/math.1.res.oracle
@@ -23,17 +23,17 @@
 [wp] [alt-ergo] Goal typed_lemma_sqrt_mono : Valid
 [wp] [alt-ergo] Goal typed_lemma_sqrt_pos : Valid
 [wp] [alt-ergo] Goal typed_lemma_tanh_opp : Valid
-[wp] [alt-ergo] Goal typed_ok_post_sin_asin : Valid
-[wp] [alt-ergo] Goal typed_ok_post_sin_asin_in_range : Valid
-[wp] [alt-ergo] Goal typed_ok_post_cos_acos : Valid
-[wp] [alt-ergo] Goal typed_ok_post_cos_acos_in_range : Valid
-[wp] [Qed] Goal typed_ok_post_tan_atan : Valid
-[wp] [alt-ergo] Goal typed_ok_post_log_pow : Valid
-[wp] [Qed] Goal typed_ok_post_log_exp : Valid
-[wp] [alt-ergo] Goal typed_ok_post_exp_log : Valid
-[wp] [alt-ergo] Goal typed_ok_post_min_plus_distrib : Valid
-[wp] [alt-ergo] Goal typed_ok_post_sqrt_pos : Valid
-[wp] [alt-ergo] Goal typed_ok_post_sqrt_pos0 : Valid
+[wp] [alt-ergo] Goal typed_ok_ensures_sin_asin : Valid
+[wp] [alt-ergo] Goal typed_ok_ensures_sin_asin_in_range : Valid
+[wp] [alt-ergo] Goal typed_ok_ensures_cos_acos : Valid
+[wp] [alt-ergo] Goal typed_ok_ensures_cos_acos_in_range : Valid
+[wp] [Qed] Goal typed_ok_ensures_tan_atan : Valid
+[wp] [alt-ergo] Goal typed_ok_ensures_log_pow : Valid
+[wp] [Qed] Goal typed_ok_ensures_log_exp : Valid
+[wp] [alt-ergo] Goal typed_ok_ensures_exp_log : Valid
+[wp] [alt-ergo] Goal typed_ok_ensures_min_plus_distrib : Valid
+[wp] [alt-ergo] Goal typed_ok_ensures_sqrt_pos : Valid
+[wp] [alt-ergo] Goal typed_ok_ensures_sqrt_pos0 : Valid
 [wp] Proved goals:   30 / 30
   Qed:             5 
   alt-ergo:       25
diff --git a/src/plugins/wp/tests/wp_plugin/oracle_qualif/math.2.res.oracle b/src/plugins/wp/tests/wp_plugin/oracle_qualif/math.2.res.oracle
index 748344d32e340ec15a96c327367db443de5e02d2..820740cac730923d31743afa06ad43224d7120d5 100644
--- a/src/plugins/wp/tests/wp_plugin/oracle_qualif/math.2.res.oracle
+++ b/src/plugins/wp/tests/wp_plugin/oracle_qualif/math.2.res.oracle
@@ -4,15 +4,15 @@
 [wp] Loading driver 'share/wp.driver'
 [wp] Warning: Missing RTE guards
 [wp] 9 goals scheduled
-[wp] [Alt-Ergo] Goal typed_ko_post_ko_sin_asin : Step limit
-[wp] [Alt-Ergo] Goal typed_ko_post_ko_cos_acos : Step limit
-[wp] [Alt-Ergo] Goal typed_ko_post_ko_asin_sin : Step limit
-[wp] [Alt-Ergo] Goal typed_ko_post_ko_acos_cos : Step limit
-[wp] [Alt-Ergo] Goal typed_ko_post_ko_atan_tan : Step limit
-[wp] [Alt-Ergo] Goal typed_ko_post_ko_log_pow : Step limit
-[wp] [Alt-Ergo] Goal typed_ko_post_ko_exp_log : Step limit
-[wp] [Alt-Ergo] Goal typed_ko_post_ko_exp_log_add_mul : Step limit
-[wp] [Alt-Ergo] Goal typed_ko_post_ko_sqrt_pos : Step limit
+[wp] [Alt-Ergo] Goal typed_ko_ensures_ko_sin_asin : Step limit
+[wp] [Alt-Ergo] Goal typed_ko_ensures_ko_cos_acos : Step limit
+[wp] [Alt-Ergo] Goal typed_ko_ensures_ko_asin_sin : Step limit
+[wp] [Alt-Ergo] Goal typed_ko_ensures_ko_acos_cos : Step limit
+[wp] [Alt-Ergo] Goal typed_ko_ensures_ko_atan_tan : Step limit
+[wp] [Alt-Ergo] Goal typed_ko_ensures_ko_log_pow : Step limit
+[wp] [Alt-Ergo] Goal typed_ko_ensures_ko_exp_log : Step limit
+[wp] [Alt-Ergo] Goal typed_ko_ensures_ko_exp_log_add_mul : Step limit
+[wp] [Alt-Ergo] Goal typed_ko_ensures_ko_sqrt_pos : Step limit
 [wp] Proved goals:    0 / 9
   Alt-Ergo:        0  (interrupted: 9)
 -------------------------------------------------------------
diff --git a/src/plugins/wp/tests/wp_plugin/oracle_qualif/math.3.res.oracle b/src/plugins/wp/tests/wp_plugin/oracle_qualif/math.3.res.oracle
index 7360397142c48447aadc1d683210e910fed62baa..bb249beaf01e222a7b5c8e2a99309eb00701e68f 100644
--- a/src/plugins/wp/tests/wp_plugin/oracle_qualif/math.3.res.oracle
+++ b/src/plugins/wp/tests/wp_plugin/oracle_qualif/math.3.res.oracle
@@ -4,15 +4,15 @@
 [wp] Loading driver 'share/wp.driver'
 [wp] Warning: Missing RTE guards
 [wp] 9 goals scheduled
-[wp] [alt-ergo] Goal typed_ko_post_ko_sin_asin : Timeout
-[wp] [alt-ergo] Goal typed_ko_post_ko_cos_acos : Timeout
-[wp] [alt-ergo] Goal typed_ko_post_ko_asin_sin : Timeout
-[wp] [alt-ergo] Goal typed_ko_post_ko_acos_cos : Timeout
-[wp] [alt-ergo] Goal typed_ko_post_ko_atan_tan : Timeout
-[wp] [alt-ergo] Goal typed_ko_post_ko_log_pow : Timeout
-[wp] [alt-ergo] Goal typed_ko_post_ko_exp_log : Timeout
-[wp] [alt-ergo] Goal typed_ko_post_ko_exp_log_add_mul : Timeout
-[wp] [alt-ergo] Goal typed_ko_post_ko_sqrt_pos : Timeout
+[wp] [alt-ergo] Goal typed_ko_ensures_ko_sin_asin : Timeout
+[wp] [alt-ergo] Goal typed_ko_ensures_ko_cos_acos : Timeout
+[wp] [alt-ergo] Goal typed_ko_ensures_ko_asin_sin : Timeout
+[wp] [alt-ergo] Goal typed_ko_ensures_ko_acos_cos : Timeout
+[wp] [alt-ergo] Goal typed_ko_ensures_ko_atan_tan : Timeout
+[wp] [alt-ergo] Goal typed_ko_ensures_ko_log_pow : Timeout
+[wp] [alt-ergo] Goal typed_ko_ensures_ko_exp_log : Timeout
+[wp] [alt-ergo] Goal typed_ko_ensures_ko_exp_log_add_mul : Timeout
+[wp] [alt-ergo] Goal typed_ko_ensures_ko_sqrt_pos : Timeout
 [wp] Proved goals:    0 / 9
   alt-ergo:        0  (interrupted: 9)
 ----------------------------------------------------------
diff --git a/src/plugins/wp/tests/wp_plugin/oracle_qualif/model.res.oracle b/src/plugins/wp/tests/wp_plugin/oracle_qualif/model.res.oracle
index d1c12a1b3404429d3368dd441260c2283dd3fb4c..208ec05840fd62dfe9f543bf720c8318cf83b06b 100644
--- a/src/plugins/wp/tests/wp_plugin/oracle_qualif/model.res.oracle
+++ b/src/plugins/wp/tests/wp_plugin/oracle_qualif/model.res.oracle
@@ -7,13 +7,13 @@
 [wp] Warning: Missing RTE guards
 [wp] 1 goal scheduled
 ---------------------------------------------
---- File 'typed/f_post.ergo' 
+--- File 'typed/f_ensures.ergo' 
 ---------------------------------------------
 (* ---------------------------------------------------------- *)
 (* --- Post-condition (file tests/wp_plugin/model.i, line 13) in 'f' --- *)
 (* ---------------------------------------------------------- *)
 
-goal f_post:
+goal f_ensures:
   forall i : int.
   forall t : (addr,int) farray.
   forall a : addr.
@@ -41,19 +41,19 @@ function shift_sint32(p:addr, k:int) : addr = shift(p, k)
 
 logic P_P : int -> prop
 
-[wp] [Alt-Ergo] Goal typed_f_post : Typechecked
+[wp] [Alt-Ergo] Goal typed_f_ensures : Typechecked
 [wp] Proved goals:    0 / 1
   Alt-Ergo:        0  (unknown: 1)
 [wp] Running WP plugin...
 [wp] 2 goals scheduled
 ---------------------------------------------
---- File 'typed/f_post.ergo' 
+--- File 'typed/f_ensures.ergo' 
 ---------------------------------------------
 (* ---------------------------------------------------------- *)
 (* --- Post-condition (file tests/wp_plugin/model.i, line 13) in 'f' --- *)
 (* ---------------------------------------------------------- *)
 
-goal f_post:
+goal f_ensures:
   forall i : int.
   forall t : (addr,int) farray.
   forall a : addr.
@@ -63,15 +63,15 @@ goal f_post:
   is_sint32(x) ->
   P_P(x)
 
-[wp] [Alt-Ergo] Goal typed_f_post : Typechecked
+[wp] [Alt-Ergo] Goal typed_f_ensures : Typechecked
 ---------------------------------------------
---- File 'typed_ref/f_post.ergo' 
+--- File 'typed_ref/f_ensures.ergo' 
 ---------------------------------------------
 (* ---------------------------------------------------------- *)
 (* --- Post-condition (file tests/wp_plugin/model.i, line 13) in 'f' --- *)
 (* ---------------------------------------------------------- *)
 
-goal f_post:
+goal f_ensures:
   forall i : int.
   forall t : (addr,int) farray.
   forall a : addr.
@@ -99,6 +99,6 @@ function shift_sint32(p:addr, k:int) : addr = shift(p, k)
 
 logic P_P : int -> prop
 
-[wp] [Alt-Ergo] Goal typed_ref_f_post : Typechecked
+[wp] [Alt-Ergo] Goal typed_ref_f_ensures : Typechecked
 [wp] Proved goals:    0 / 2
   Alt-Ergo:        0  (unknown: 2)
diff --git a/src/plugins/wp/tests/wp_plugin/oracle_qualif/overarray.res.oracle b/src/plugins/wp/tests/wp_plugin/oracle_qualif/overarray.res.oracle
index 5ac8f29ffc882856883ba31378066d3eda026010..4e444f5c792756e54ecde7d9d12f951091879771 100644
--- a/src/plugins/wp/tests/wp_plugin/oracle_qualif/overarray.res.oracle
+++ b/src/plugins/wp/tests/wp_plugin/oracle_qualif/overarray.res.oracle
@@ -4,18 +4,18 @@
 [wp] Loading driver 'share/wp.driver'
 [wp] Warning: Missing RTE guards
 [wp] 12 goals scheduled
-[wp] [Qed] Goal typed_f1_ok_assign_exit : Valid
-[wp] [Qed] Goal typed_f1_ok_assign_normal : Valid
-[wp] [Qed] Goal typed_f2_ok_assign_exit : Valid
-[wp] [Qed] Goal typed_f2_ok_assign_normal : Valid
-[wp] [Qed] Goal typed_f3_ok_assign_exit : Valid
-[wp] [Qed] Goal typed_f3_ok_assign_normal : Valid
-[wp] [Qed] Goal typed_f4_ok_assign_exit : Valid
-[wp] [Qed] Goal typed_f4_ok_assign_normal : Valid
-[wp] [Alt-Ergo] Goal typed_f5_ko_assign_exit : Unknown
-[wp] [Alt-Ergo] Goal typed_f5_ko_assign_normal : Unknown
-[wp] [Alt-Ergo] Goal typed_f6_ko_assign_exit : Unknown
-[wp] [Alt-Ergo] Goal typed_f6_ko_assign_normal : Unknown
+[wp] [Qed] Goal typed_f1_ok_assigns_exit : Valid
+[wp] [Qed] Goal typed_f1_ok_assigns_normal : Valid
+[wp] [Qed] Goal typed_f2_ok_assigns_exit : Valid
+[wp] [Qed] Goal typed_f2_ok_assigns_normal : Valid
+[wp] [Qed] Goal typed_f3_ok_assigns_exit : Valid
+[wp] [Qed] Goal typed_f3_ok_assigns_normal : Valid
+[wp] [Qed] Goal typed_f4_ok_assigns_exit : Valid
+[wp] [Qed] Goal typed_f4_ok_assigns_normal : Valid
+[wp] [Alt-Ergo] Goal typed_f5_ko_assigns_exit : Unknown
+[wp] [Alt-Ergo] Goal typed_f5_ko_assigns_normal : Unknown
+[wp] [Alt-Ergo] Goal typed_f6_ko_assigns_exit : Unknown
+[wp] [Alt-Ergo] Goal typed_f6_ko_assigns_normal : Unknown
 [wp] Proved goals:    8 / 12
   Qed:             8 
   Alt-Ergo:        0  (unknown: 4)
diff --git a/src/plugins/wp/tests/wp_plugin/oracle_qualif/overassign.res.oracle b/src/plugins/wp/tests/wp_plugin/oracle_qualif/overassign.res.oracle
index a01baabf0813e1f0c2dcefe4370c1842e12c329b..16f6ce465df500059dfbd2359c7787d47e02d660 100644
--- a/src/plugins/wp/tests/wp_plugin/oracle_qualif/overassign.res.oracle
+++ b/src/plugins/wp/tests/wp_plugin/oracle_qualif/overassign.res.oracle
@@ -4,18 +4,18 @@
 [wp] Loading driver 'share/wp.driver'
 [wp] Warning: Missing RTE guards
 [wp] 12 goals scheduled
-[wp] [Qed] Goal typed_f1_ok_assign_exit : Valid
-[wp] [Qed] Goal typed_f1_ok_assign_normal : Valid
-[wp] [Qed] Goal typed_f2_ok_assign_exit : Valid
-[wp] [Qed] Goal typed_f2_ok_assign_normal : Valid
-[wp] [Alt-Ergo] Goal typed_f3_ok_assign_exit : Valid
-[wp] [Alt-Ergo] Goal typed_f3_ok_assign_normal : Valid
-[wp] [Alt-Ergo] Goal typed_f4_ok_assign_exit : Valid
-[wp] [Alt-Ergo] Goal typed_f4_ok_assign_normal : Valid
-[wp] [Alt-Ergo] Goal typed_f5_ko_assign_exit : Unknown
-[wp] [Alt-Ergo] Goal typed_f5_ko_assign_normal : Unknown
-[wp] [Alt-Ergo] Goal typed_f6_ko_assign_exit : Unknown
-[wp] [Alt-Ergo] Goal typed_f6_ko_assign_normal : Unknown
+[wp] [Qed] Goal typed_f1_ok_assigns_exit : Valid
+[wp] [Qed] Goal typed_f1_ok_assigns_normal : Valid
+[wp] [Qed] Goal typed_f2_ok_assigns_exit : Valid
+[wp] [Qed] Goal typed_f2_ok_assigns_normal : Valid
+[wp] [Alt-Ergo] Goal typed_f3_ok_assigns_exit : Valid
+[wp] [Alt-Ergo] Goal typed_f3_ok_assigns_normal : Valid
+[wp] [Alt-Ergo] Goal typed_f4_ok_assigns_exit : Valid
+[wp] [Alt-Ergo] Goal typed_f4_ok_assigns_normal : Valid
+[wp] [Alt-Ergo] Goal typed_f5_ko_assigns_exit : Unknown
+[wp] [Alt-Ergo] Goal typed_f5_ko_assigns_normal : Unknown
+[wp] [Alt-Ergo] Goal typed_f6_ko_assigns_exit : Unknown
+[wp] [Alt-Ergo] Goal typed_f6_ko_assigns_normal : Unknown
 [wp] Proved goals:    8 / 12
   Qed:             4 
   Alt-Ergo:        4  (unknown: 4)
@@ -25,7 +25,7 @@ Functions           WP     Alt-Ergo        Total   Success
 f1_ok                2     -                 2       100%
 f2_ok                2     -                 2       100%
 f3_ok               -       2 (20..32)       2       100%
-f4_ok               -       2 (12..24)       2       100%
+f4_ok               -       2 (16..28)       2       100%
 f5_ko               -      -                 2       0.0%
 f6_ko               -      -                 2       0.0%
 -------------------------------------------------------------
diff --git a/src/plugins/wp/tests/wp_plugin/oracle_qualif/prenex.res.oracle b/src/plugins/wp/tests/wp_plugin/oracle_qualif/prenex.res.oracle
index cee0e2ca5745d1c2933ac736f07e86195491a124..f5023a17dc26e36ee3e34f50e5fbb11f897a7313 100644
--- a/src/plugins/wp/tests/wp_plugin/oracle_qualif/prenex.res.oracle
+++ b/src/plugins/wp/tests/wp_plugin/oracle_qualif/prenex.res.oracle
@@ -4,23 +4,23 @@
 [wp] Loading driver 'share/wp.driver'
 [wp] Warning: Missing RTE guards
 [wp] 12 goals scheduled
-[wp] [Alt-Ergo] Goal typed_diag_post : Valid
-[wp] [Alt-Ergo] Goal typed_diag_loop_inv_I_preserved : Valid
-[wp] [Qed] Goal typed_diag_loop_inv_I_established : Valid
-[wp] [Alt-Ergo] Goal typed_diag_loop_inv_PI_preserved : Valid
-[wp] [Qed] Goal typed_diag_loop_inv_PI_established : Valid
-[wp] [Alt-Ergo] Goal typed_diag_loop_inv_J_preserved : Valid
-[wp] [Qed] Goal typed_diag_loop_inv_J_established : Valid
-[wp] [Alt-Ergo] Goal typed_diag_loop_inv_PJ_preserved : Valid
-[wp] [Qed] Goal typed_diag_loop_inv_PJ_established : Valid
-[wp] [Qed] Goal typed_diag_loop_assign_part1 : Valid
-[wp] [Qed] Goal typed_diag_loop_assign_part2 : Valid
-[wp] [Qed] Goal typed_diag_loop_assign_2 : Valid
+[wp] [Alt-Ergo] Goal typed_diag_ensures : Valid
+[wp] [Alt-Ergo] Goal typed_diag_loop_invariant_I_preserved : Valid
+[wp] [Qed] Goal typed_diag_loop_invariant_I_established : Valid
+[wp] [Alt-Ergo] Goal typed_diag_loop_invariant_PI_preserved : Valid
+[wp] [Qed] Goal typed_diag_loop_invariant_PI_established : Valid
+[wp] [Alt-Ergo] Goal typed_diag_loop_invariant_J_preserved : Valid
+[wp] [Qed] Goal typed_diag_loop_invariant_J_established : Valid
+[wp] [Alt-Ergo] Goal typed_diag_loop_invariant_PJ_preserved : Valid
+[wp] [Qed] Goal typed_diag_loop_invariant_PJ_established : Valid
+[wp] [Qed] Goal typed_diag_loop_assigns_part1 : Valid
+[wp] [Qed] Goal typed_diag_loop_assigns_part2 : Valid
+[wp] [Qed] Goal typed_diag_loop_assigns_2 : Valid
 [wp] Proved goals:   12 / 12
   Qed:             7 
   Alt-Ergo:        5
 [wp] Report 'tests/wp_plugin/prenex.i.0.report.json'
 -------------------------------------------------------------
 Functions           WP     Alt-Ergo        Total   Success
-diag                 7      5 (56..80)      12       100%
+diag                 7      5 (64..88)      12       100%
 -------------------------------------------------------------
diff --git a/src/plugins/wp/tests/wp_plugin/oracle_qualif/repeat.res.oracle b/src/plugins/wp/tests/wp_plugin/oracle_qualif/repeat.res.oracle
index 80fdaff1401fc1bc02144b2af5ef226d41bb87a0..c1c8354536c7f9ab00785d857bc8efc610538785 100644
--- a/src/plugins/wp/tests/wp_plugin/oracle_qualif/repeat.res.oracle
+++ b/src/plugins/wp/tests/wp_plugin/oracle_qualif/repeat.res.oracle
@@ -6,53 +6,53 @@
 [wp] tests/wp_plugin/repeat.c:47: Warning: 
   Missing assigns clause (assigns 'everything' instead)
 [wp] 47 goals scheduled
-[wp] [Qed] Goal typed_induction_post : Valid
-[wp] [Alt-Ergo] Goal typed_induction_loop_inv_preserved : Valid
-[wp] [Qed] Goal typed_induction_loop_inv_established : Valid
-[wp] [Alt-Ergo] Goal typed_induction_loop_inv_2_preserved : Valid
-[wp] [Qed] Goal typed_induction_loop_inv_2_established : Valid
-[wp] [Qed] Goal typed_induction_loop_assign : Valid
-[wp] [Qed] Goal typed_induction_assign_exit_part1 : Valid
-[wp] [Qed] Goal typed_induction_assign_exit_part2 : Valid
-[wp] [Qed] Goal typed_induction_assign_normal : Valid
-[wp] [Qed] Goal typed_master_post : Valid
-[wp] [Qed] Goal typed_master_assign_exit : Valid
-[wp] [Qed] Goal typed_master_assign_normal : Valid
-[wp] [Alt-Ergo] Goal typed_shifted_post : Valid
-[wp] [Alt-Ergo] Goal typed_shifted_loop_inv_preserved : Valid
-[wp] [Qed] Goal typed_shifted_loop_inv_established : Valid
-[wp] [Alt-Ergo] Goal typed_shifted_loop_inv_2_preserved : Valid
-[wp] [Qed] Goal typed_shifted_loop_inv_2_established : Valid
-[wp] [Qed] Goal typed_shifted_loop_assign : Valid
-[wp] [Qed] Goal typed_shifted_assign_exit_part1 : Valid
-[wp] [Qed] Goal typed_shifted_assign_exit_part2 : Valid
-[wp] [Qed] Goal typed_shifted_assign_normal_part1 : Valid
-[wp] [Qed] Goal typed_shifted_assign_normal_part2 : Valid
-[wp] [Qed] Goal typed_unroll_post : Valid
-[wp] [Qed] Goal typed_unroll_loop_inv_preserved : Valid
-[wp] [Qed] Goal typed_unroll_loop_inv_established : Valid
-[wp] [Qed] Goal typed_unroll_assign_exit_part01 : Valid
-[wp] [Qed] Goal typed_unroll_assign_exit_part02 : Valid
-[wp] [Qed] Goal typed_unroll_assign_exit_part03 : Valid
-[wp] [Qed] Goal typed_unroll_assign_exit_part04 : Valid
-[wp] [Qed] Goal typed_unroll_assign_exit_part05 : Valid
-[wp] [Qed] Goal typed_unroll_assign_exit_part06 : Valid
-[wp] [Qed] Goal typed_unroll_assign_exit_part07 : Valid
-[wp] [Qed] Goal typed_unroll_assign_exit_part08 : Valid
-[wp] [Qed] Goal typed_unroll_assign_exit_part09 : Valid
-[wp] [Qed] Goal typed_unroll_assign_exit_part10 : Valid
-[wp] [Qed] Goal typed_unroll_assign_exit_part11 : Valid
-[wp] [Qed] Goal typed_unroll_assign_normal_part01 : Valid
-[wp] [Qed] Goal typed_unroll_assign_normal_part02 : Valid
-[wp] [Qed] Goal typed_unroll_assign_normal_part03 : Valid
-[wp] [Qed] Goal typed_unroll_assign_normal_part04 : Valid
-[wp] [Qed] Goal typed_unroll_assign_normal_part05 : Valid
-[wp] [Qed] Goal typed_unroll_assign_normal_part06 : Valid
-[wp] [Qed] Goal typed_unroll_assign_normal_part07 : Valid
-[wp] [Qed] Goal typed_unroll_assign_normal_part08 : Valid
-[wp] [Qed] Goal typed_unroll_assign_normal_part09 : Valid
-[wp] [Qed] Goal typed_unroll_assign_normal_part10 : Valid
-[wp] [Qed] Goal typed_unroll_assign_normal_part11 : Valid
+[wp] [Qed] Goal typed_induction_ensures : Valid
+[wp] [Alt-Ergo] Goal typed_induction_loop_invariant_preserved : Valid
+[wp] [Qed] Goal typed_induction_loop_invariant_established : Valid
+[wp] [Alt-Ergo] Goal typed_induction_loop_invariant_2_preserved : Valid
+[wp] [Qed] Goal typed_induction_loop_invariant_2_established : Valid
+[wp] [Qed] Goal typed_induction_loop_assigns : Valid
+[wp] [Qed] Goal typed_induction_assigns_exit_part1 : Valid
+[wp] [Qed] Goal typed_induction_assigns_exit_part2 : Valid
+[wp] [Qed] Goal typed_induction_assigns_normal : Valid
+[wp] [Qed] Goal typed_master_ensures : Valid
+[wp] [Qed] Goal typed_master_assigns_exit : Valid
+[wp] [Qed] Goal typed_master_assigns_normal : Valid
+[wp] [Alt-Ergo] Goal typed_shifted_ensures : Valid
+[wp] [Alt-Ergo] Goal typed_shifted_loop_invariant_preserved : Valid
+[wp] [Qed] Goal typed_shifted_loop_invariant_established : Valid
+[wp] [Alt-Ergo] Goal typed_shifted_loop_invariant_2_preserved : Valid
+[wp] [Qed] Goal typed_shifted_loop_invariant_2_established : Valid
+[wp] [Qed] Goal typed_shifted_loop_assigns : Valid
+[wp] [Qed] Goal typed_shifted_assigns_exit_part1 : Valid
+[wp] [Qed] Goal typed_shifted_assigns_exit_part2 : Valid
+[wp] [Qed] Goal typed_shifted_assigns_normal_part1 : Valid
+[wp] [Qed] Goal typed_shifted_assigns_normal_part2 : Valid
+[wp] [Qed] Goal typed_unroll_ensures : Valid
+[wp] [Qed] Goal typed_unroll_loop_invariant_preserved : Valid
+[wp] [Qed] Goal typed_unroll_loop_invariant_established : Valid
+[wp] [Qed] Goal typed_unroll_assigns_exit_part01 : Valid
+[wp] [Qed] Goal typed_unroll_assigns_exit_part02 : Valid
+[wp] [Qed] Goal typed_unroll_assigns_exit_part03 : Valid
+[wp] [Qed] Goal typed_unroll_assigns_exit_part04 : Valid
+[wp] [Qed] Goal typed_unroll_assigns_exit_part05 : Valid
+[wp] [Qed] Goal typed_unroll_assigns_exit_part06 : Valid
+[wp] [Qed] Goal typed_unroll_assigns_exit_part07 : Valid
+[wp] [Qed] Goal typed_unroll_assigns_exit_part08 : Valid
+[wp] [Qed] Goal typed_unroll_assigns_exit_part09 : Valid
+[wp] [Qed] Goal typed_unroll_assigns_exit_part10 : Valid
+[wp] [Qed] Goal typed_unroll_assigns_exit_part11 : Valid
+[wp] [Qed] Goal typed_unroll_assigns_normal_part01 : Valid
+[wp] [Qed] Goal typed_unroll_assigns_normal_part02 : Valid
+[wp] [Qed] Goal typed_unroll_assigns_normal_part03 : Valid
+[wp] [Qed] Goal typed_unroll_assigns_normal_part04 : Valid
+[wp] [Qed] Goal typed_unroll_assigns_normal_part05 : Valid
+[wp] [Qed] Goal typed_unroll_assigns_normal_part06 : Valid
+[wp] [Qed] Goal typed_unroll_assigns_normal_part07 : Valid
+[wp] [Qed] Goal typed_unroll_assigns_normal_part08 : Valid
+[wp] [Qed] Goal typed_unroll_assigns_normal_part09 : Valid
+[wp] [Qed] Goal typed_unroll_assigns_normal_part10 : Valid
+[wp] [Qed] Goal typed_unroll_assigns_normal_part11 : Valid
 [wp] Proved goals:   47 / 47
   Qed:            42 
   Alt-Ergo:        5
diff --git a/src/plugins/wp/tests/wp_plugin/oracle_qualif/sequence.0.res.oracle b/src/plugins/wp/tests/wp_plugin/oracle_qualif/sequence.0.res.oracle
index 8173a1d3abea309a752faaabd8be4693cfe0359f..5a6a837e1f40fb311ab80e1027efac39f016df83 100644
--- a/src/plugins/wp/tests/wp_plugin/oracle_qualif/sequence.0.res.oracle
+++ b/src/plugins/wp/tests/wp_plugin/oracle_qualif/sequence.0.res.oracle
@@ -4,52 +4,52 @@
 [wp] Loading driver 'share/wp.driver'
 [wp] Warning: Missing RTE guards
 [wp] 39 goals scheduled
-[wp] [Qed] Goal typed_caveat_loops_post_ok_first : Valid
-[wp] [Alt-Ergo] Goal typed_caveat_loops_post_ok_last : Valid
-[wp] [Alt-Ergo] Goal typed_caveat_loops_loop_inv_ok_id_max_preserved : Valid
-[wp] [Qed] Goal typed_caveat_loops_loop_inv_ok_id_max_established : Valid
-[wp] [Alt-Ergo] Goal typed_caveat_loops_loop_inv_ok_id_min_preserved : Valid
-[wp] [Qed] Goal typed_caveat_loops_loop_inv_ok_id_min_established : Valid
-[wp] [Alt-Ergo] Goal typed_caveat_loops_loop_inv_ok_inv_preserved : Valid
-[wp] [Qed] Goal typed_caveat_loops_loop_inv_ok_inv_established : Valid
-[wp] [Qed] Goal typed_caveat_loops_loop_assign : Valid
-[wp] [Qed] Goal typed_caveat_loops_assign_exit_part1 : Valid
-[wp] [Qed] Goal typed_caveat_loops_assign_exit_part2 : Valid
-[wp] [Qed] Goal typed_caveat_loops_assign_exit_part3 : Valid
-[wp] [Qed] Goal typed_caveat_loops_assign_normal_part1 : Valid
-[wp] [Qed] Goal typed_caveat_loops_assign_normal_part2 : Valid
-[wp] [Qed] Goal typed_caveat_loops_assign_normal_part3 : Valid
-[wp] [Alt-Ergo] Goal typed_caveat_loops_g_called_post_ok_u1 : Valid
-[wp] [Qed] Goal typed_caveat_loops_g_called_post_ok_u2 : Valid
-[wp] [Alt-Ergo] Goal typed_caveat_loops_g_not_called_post_ok_v1 : Valid
-[wp] [Alt-Ergo] Goal typed_caveat_loops_g_not_called_post_ok_v2 : Valid
-[wp] [Qed] Goal typed_caveat_no_calls_post_ok_m1 : Valid
-[wp] [Alt-Ergo] Goal typed_caveat_no_calls_post_ok_m2 : Valid
-[wp] [Qed] Goal typed_caveat_no_calls_post_ok_bug_why3_n1 : Valid
-[wp] [Alt-Ergo] Goal typed_caveat_no_calls_post_ok_n2 : Valid
-[wp] [Alt-Ergo] Goal typed_caveat_no_calls_post_ok_n3 : Valid
-[wp] [Alt-Ergo] Goal typed_caveat_no_calls_post_ok_bug_why3_n5 : Valid
-[wp] [Qed] Goal typed_caveat_no_calls_post_ok_bug_why3_n6 : Valid
-[wp] [Alt-Ergo] Goal typed_caveat_no_calls_post_ok_bug_why3_n5_ok : Valid
-[wp] [Qed] Goal typed_caveat_no_calls_post_ok_bug_why3_n6_ok : Valid
-[wp] [Qed] Goal typed_caveat_no_calls_assign : Valid
-[wp] [Qed] Goal typed_caveat_sequence_assign_exit : Valid
-[wp] [Qed] Goal typed_caveat_sequence_assign_normal : Valid
-[wp] [Qed] Goal typed_caveat_sequence_g_called_post_ok_o1 : Valid
-[wp] [Qed] Goal typed_caveat_sequence_g_called_post_ok_p1 : Valid
-[wp] [Qed] Goal typed_caveat_sequence_g_called_post_ok_p2 : Valid
-[wp] [Alt-Ergo] Goal typed_caveat_sequence_g_called_post_ok_p3 : Valid
-[wp] [Qed] Goal typed_caveat_sequence_g_not_called_post_ok_o2 : Valid
-[wp] [Qed] Goal typed_caveat_sequence_g_not_called_post_ok_q1 : Valid
-[wp] [Qed] Goal typed_caveat_sequence_g_not_called_post_ok_q2 : Valid
-[wp] [Alt-Ergo] Goal typed_caveat_sequence_g_not_called_post_ok_q3 : Valid
+[wp] [Qed] Goal typed_caveat_loops_ensures_ok_first : Valid
+[wp] [Alt-Ergo] Goal typed_caveat_loops_ensures_ok_last : Valid
+[wp] [Alt-Ergo] Goal typed_caveat_loops_loop_invariant_ok_id_max_preserved : Valid
+[wp] [Qed] Goal typed_caveat_loops_loop_invariant_ok_id_max_established : Valid
+[wp] [Alt-Ergo] Goal typed_caveat_loops_loop_invariant_ok_id_min_preserved : Valid
+[wp] [Qed] Goal typed_caveat_loops_loop_invariant_ok_id_min_established : Valid
+[wp] [Alt-Ergo] Goal typed_caveat_loops_loop_invariant_ok_inv_preserved : Valid
+[wp] [Qed] Goal typed_caveat_loops_loop_invariant_ok_inv_established : Valid
+[wp] [Qed] Goal typed_caveat_loops_loop_assigns : Valid
+[wp] [Qed] Goal typed_caveat_loops_assigns_exit_part1 : Valid
+[wp] [Qed] Goal typed_caveat_loops_assigns_exit_part2 : Valid
+[wp] [Qed] Goal typed_caveat_loops_assigns_exit_part3 : Valid
+[wp] [Qed] Goal typed_caveat_loops_assigns_normal_part1 : Valid
+[wp] [Qed] Goal typed_caveat_loops_assigns_normal_part2 : Valid
+[wp] [Qed] Goal typed_caveat_loops_assigns_normal_part3 : Valid
+[wp] [Alt-Ergo] Goal typed_caveat_loops_g_called_ensures_ok_u1 : Valid
+[wp] [Qed] Goal typed_caveat_loops_g_called_ensures_ok_u2 : Valid
+[wp] [Alt-Ergo] Goal typed_caveat_loops_g_not_called_ensures_ok_v1 : Valid
+[wp] [Alt-Ergo] Goal typed_caveat_loops_g_not_called_ensures_ok_v2 : Valid
+[wp] [Qed] Goal typed_caveat_no_calls_ensures_ok_m1 : Valid
+[wp] [Alt-Ergo] Goal typed_caveat_no_calls_ensures_ok_m2 : Valid
+[wp] [Qed] Goal typed_caveat_no_calls_ensures_ok_bug_why3_n1 : Valid
+[wp] [Alt-Ergo] Goal typed_caveat_no_calls_ensures_ok_n2 : Valid
+[wp] [Alt-Ergo] Goal typed_caveat_no_calls_ensures_ok_n3 : Valid
+[wp] [Alt-Ergo] Goal typed_caveat_no_calls_ensures_ok_bug_why3_n5 : Valid
+[wp] [Qed] Goal typed_caveat_no_calls_ensures_ok_bug_why3_n6 : Valid
+[wp] [Alt-Ergo] Goal typed_caveat_no_calls_ensures_ok_bug_why3_n5_ok : Valid
+[wp] [Qed] Goal typed_caveat_no_calls_ensures_ok_bug_why3_n6_ok : Valid
+[wp] [Qed] Goal typed_caveat_no_calls_assigns : Valid
+[wp] [Qed] Goal typed_caveat_sequence_assigns_exit : Valid
+[wp] [Qed] Goal typed_caveat_sequence_assigns_normal : Valid
+[wp] [Qed] Goal typed_caveat_sequence_g_called_ensures_ok_o1 : Valid
+[wp] [Qed] Goal typed_caveat_sequence_g_called_ensures_ok_p1 : Valid
+[wp] [Qed] Goal typed_caveat_sequence_g_called_ensures_ok_p2 : Valid
+[wp] [Alt-Ergo] Goal typed_caveat_sequence_g_called_ensures_ok_p3 : Valid
+[wp] [Qed] Goal typed_caveat_sequence_g_not_called_ensures_ok_o2 : Valid
+[wp] [Qed] Goal typed_caveat_sequence_g_not_called_ensures_ok_q1 : Valid
+[wp] [Qed] Goal typed_caveat_sequence_g_not_called_ensures_ok_q2 : Valid
+[wp] [Alt-Ergo] Goal typed_caveat_sequence_g_not_called_ensures_ok_q3 : Valid
 [wp] Proved goals:   39 / 39
   Qed:            25 
   Alt-Ergo:       14
 [wp] Report 'tests/wp_plugin/sequence.i.0.report.json'
 -------------------------------------------------------------
 Functions           WP     Alt-Ergo        Total   Success
-no_calls             5      5 (4..16)       10       100%
+no_calls             5      5 (8..20)       10       100%
 sequence             8      2 (12..24)      10       100%
 loops               12      7 (48..60)      19       100%
 -------------------------------------------------------------
diff --git a/src/plugins/wp/tests/wp_plugin/oracle_qualif/sequence.1.res.oracle b/src/plugins/wp/tests/wp_plugin/oracle_qualif/sequence.1.res.oracle
index 0a59b8081a5e1b3848998d71fab69d5b3df74101..1c817abc79dab4752323fb0bbc7f40d711070d22 100644
--- a/src/plugins/wp/tests/wp_plugin/oracle_qualif/sequence.1.res.oracle
+++ b/src/plugins/wp/tests/wp_plugin/oracle_qualif/sequence.1.res.oracle
@@ -4,40 +4,40 @@
 [wp] Loading driver 'share/wp.driver'
 [wp] Warning: Missing RTE guards
 [wp] 34 goals scheduled
-[wp] [Qed] Goal typed_caveat_loops_post_ok_first : Valid
-[wp] [alt-ergo] Goal typed_caveat_loops_post_ok_last : Valid
-[wp] [alt-ergo] Goal typed_caveat_loops_loop_inv_ok_id_max_preserved : Valid
-[wp] [Qed] Goal typed_caveat_loops_loop_inv_ok_id_max_established : Valid
-[wp] [alt-ergo] Goal typed_caveat_loops_loop_inv_ok_id_min_preserved : Valid
-[wp] [Qed] Goal typed_caveat_loops_loop_inv_ok_id_min_established : Valid
-[wp] [alt-ergo] Goal typed_caveat_loops_loop_inv_ok_inv_preserved : Valid
-[wp] [Qed] Goal typed_caveat_loops_loop_inv_ok_inv_established : Valid
-[wp] [Qed] Goal typed_caveat_loops_loop_assign : Valid
-[wp] [Qed] Goal typed_caveat_loops_assign_exit_part1 : Valid
-[wp] [Qed] Goal typed_caveat_loops_assign_exit_part2 : Valid
-[wp] [Qed] Goal typed_caveat_loops_assign_exit_part3 : Valid
-[wp] [Qed] Goal typed_caveat_loops_assign_normal_part1 : Valid
-[wp] [Qed] Goal typed_caveat_loops_assign_normal_part2 : Valid
-[wp] [Qed] Goal typed_caveat_loops_assign_normal_part3 : Valid
-[wp] [alt-ergo] Goal typed_caveat_loops_g_called_post_ok_u1 : Valid
-[wp] [Qed] Goal typed_caveat_loops_g_called_post_ok_u2 : Valid
-[wp] [alt-ergo] Goal typed_caveat_loops_g_not_called_post_ok_v1 : Valid
-[wp] [alt-ergo] Goal typed_caveat_loops_g_not_called_post_ok_v2 : Valid
-[wp] [Qed] Goal typed_caveat_no_calls_post_ok_m1 : Valid
-[wp] [alt-ergo] Goal typed_caveat_no_calls_post_ok_m2 : Valid
-[wp] [alt-ergo] Goal typed_caveat_no_calls_post_ok_n2 : Valid
-[wp] [alt-ergo] Goal typed_caveat_no_calls_post_ok_n3 : Valid
-[wp] [Qed] Goal typed_caveat_no_calls_assign : Valid
-[wp] [Qed] Goal typed_caveat_sequence_assign_exit : Valid
-[wp] [Qed] Goal typed_caveat_sequence_assign_normal : Valid
-[wp] [Qed] Goal typed_caveat_sequence_g_called_post_ok_o1 : Valid
-[wp] [Qed] Goal typed_caveat_sequence_g_called_post_ok_p1 : Valid
-[wp] [Qed] Goal typed_caveat_sequence_g_called_post_ok_p2 : Valid
-[wp] [alt-ergo] Goal typed_caveat_sequence_g_called_post_ok_p3 : Valid
-[wp] [Qed] Goal typed_caveat_sequence_g_not_called_post_ok_o2 : Valid
-[wp] [Qed] Goal typed_caveat_sequence_g_not_called_post_ok_q1 : Valid
-[wp] [Qed] Goal typed_caveat_sequence_g_not_called_post_ok_q2 : Valid
-[wp] [alt-ergo] Goal typed_caveat_sequence_g_not_called_post_ok_q3 : Valid
+[wp] [Qed] Goal typed_caveat_loops_ensures_ok_first : Valid
+[wp] [alt-ergo] Goal typed_caveat_loops_ensures_ok_last : Valid
+[wp] [alt-ergo] Goal typed_caveat_loops_loop_invariant_ok_id_max_preserved : Valid
+[wp] [Qed] Goal typed_caveat_loops_loop_invariant_ok_id_max_established : Valid
+[wp] [alt-ergo] Goal typed_caveat_loops_loop_invariant_ok_id_min_preserved : Valid
+[wp] [Qed] Goal typed_caveat_loops_loop_invariant_ok_id_min_established : Valid
+[wp] [alt-ergo] Goal typed_caveat_loops_loop_invariant_ok_inv_preserved : Valid
+[wp] [Qed] Goal typed_caveat_loops_loop_invariant_ok_inv_established : Valid
+[wp] [Qed] Goal typed_caveat_loops_loop_assigns : Valid
+[wp] [Qed] Goal typed_caveat_loops_assigns_exit_part1 : Valid
+[wp] [Qed] Goal typed_caveat_loops_assigns_exit_part2 : Valid
+[wp] [Qed] Goal typed_caveat_loops_assigns_exit_part3 : Valid
+[wp] [Qed] Goal typed_caveat_loops_assigns_normal_part1 : Valid
+[wp] [Qed] Goal typed_caveat_loops_assigns_normal_part2 : Valid
+[wp] [Qed] Goal typed_caveat_loops_assigns_normal_part3 : Valid
+[wp] [alt-ergo] Goal typed_caveat_loops_g_called_ensures_ok_u1 : Valid
+[wp] [Qed] Goal typed_caveat_loops_g_called_ensures_ok_u2 : Valid
+[wp] [alt-ergo] Goal typed_caveat_loops_g_not_called_ensures_ok_v1 : Valid
+[wp] [alt-ergo] Goal typed_caveat_loops_g_not_called_ensures_ok_v2 : Valid
+[wp] [Qed] Goal typed_caveat_no_calls_ensures_ok_m1 : Valid
+[wp] [alt-ergo] Goal typed_caveat_no_calls_ensures_ok_m2 : Valid
+[wp] [alt-ergo] Goal typed_caveat_no_calls_ensures_ok_n2 : Valid
+[wp] [alt-ergo] Goal typed_caveat_no_calls_ensures_ok_n3 : Valid
+[wp] [Qed] Goal typed_caveat_no_calls_assigns : Valid
+[wp] [Qed] Goal typed_caveat_sequence_assigns_exit : Valid
+[wp] [Qed] Goal typed_caveat_sequence_assigns_normal : Valid
+[wp] [Qed] Goal typed_caveat_sequence_g_called_ensures_ok_o1 : Valid
+[wp] [Qed] Goal typed_caveat_sequence_g_called_ensures_ok_p1 : Valid
+[wp] [Qed] Goal typed_caveat_sequence_g_called_ensures_ok_p2 : Valid
+[wp] [alt-ergo] Goal typed_caveat_sequence_g_called_ensures_ok_p3 : Valid
+[wp] [Qed] Goal typed_caveat_sequence_g_not_called_ensures_ok_o2 : Valid
+[wp] [Qed] Goal typed_caveat_sequence_g_not_called_ensures_ok_q1 : Valid
+[wp] [Qed] Goal typed_caveat_sequence_g_not_called_ensures_ok_q2 : Valid
+[wp] [alt-ergo] Goal typed_caveat_sequence_g_not_called_ensures_ok_q3 : Valid
 [wp] Proved goals:   34 / 34
   Qed:            22 
   alt-ergo:       12
diff --git a/src/plugins/wp/tests/wp_plugin/oracle_qualif/stmt.log b/src/plugins/wp/tests/wp_plugin/oracle_qualif/stmt.log
index c5ef6b5c8fd1ca8556fed9433f41937c0a6ff440..a4c5684758293a710da3057a4b6d1a219bcc4541 100644
--- a/src/plugins/wp/tests/wp_plugin/oracle_qualif/stmt.log
+++ b/src/plugins/wp/tests/wp_plugin/oracle_qualif/stmt.log
@@ -1,14 +1,14 @@
 [kernel] Parsing tests/wp_plugin/stmt.c (with preprocessing)
 [wp] Running WP plugin...
-[wp] [CFG] Goal f_stmt_exit : Valid (Unreachable)
-[wp] [CFG] Goal g_stmt_exit : Valid (Unreachable)
-[wp] [CFG] Goal g_stmt_assign : Valid (Unreachable)
-[wp] [CFG] Goal g_stmt_post : Valid (Unreachable)
-[wp] [CFG] Goal g_stmt_exit : Valid (Unreachable)
-[wp] [CFG] Goal h_stmt_exit : Valid (Unreachable)
-[wp] [CFG] Goal h_stmt_assign : Valid (Unreachable)
-[wp] [CFG] Goal h_stmt_post : Valid (Unreachable)
-[wp] [CFG] Goal h_stmt_exit : Valid (Unreachable)
+[wp] [CFG] Goal f_exits : Valid (Unreachable)
+[wp] [CFG] Goal g_exits : Valid (Unreachable)
+[wp] [CFG] Goal g_assigns : Valid (Unreachable)
+[wp] [CFG] Goal g_ensures : Valid (Unreachable)
+[wp] [CFG] Goal g_exits : Valid (Unreachable)
+[wp] [CFG] Goal h_exits : Valid (Unreachable)
+[wp] [CFG] Goal h_assigns : Valid (Unreachable)
+[wp] [CFG] Goal h_ensures : Valid (Unreachable)
+[wp] [CFG] Goal h_exits : Valid (Unreachable)
 [wp] CFG h -> h
 [wp] CFG h -> h_NEG_stmt_15
 [wp] CFG h -> h_POS_stmt_15
diff --git a/src/plugins/wp/tests/wp_plugin/oracle_qualif/stmt.res.oracle b/src/plugins/wp/tests/wp_plugin/oracle_qualif/stmt.res.oracle
index 97b554ede989e2f597a21c145e87e9fa58989697..b891bec1a72b0dcb219f3c43738bfe781322f85a 100644
--- a/src/plugins/wp/tests/wp_plugin/oracle_qualif/stmt.res.oracle
+++ b/src/plugins/wp/tests/wp_plugin/oracle_qualif/stmt.res.oracle
@@ -2,25 +2,25 @@
 [kernel] Parsing tests/wp_plugin/stmt.c (with preprocessing)
 [wp] Running WP plugin...
 [wp] Loading driver 'share/wp.driver'
-[wp] [CFG] Goal f_stmt_exit : Valid (Unreachable)
-[wp] [CFG] Goal g_stmt_exit : Valid (Unreachable)
-[wp] [CFG] Goal g_stmt_assign : Valid (Unreachable)
-[wp] [CFG] Goal g_stmt_post : Valid (Unreachable)
-[wp] [CFG] Goal g_stmt_exit : Valid (Unreachable)
-[wp] [CFG] Goal h_stmt_exit : Valid (Unreachable)
-[wp] [CFG] Goal h_stmt_assign : Valid (Unreachable)
-[wp] [CFG] Goal h_stmt_post : Valid (Unreachable)
-[wp] [CFG] Goal h_stmt_exit : Valid (Unreachable)
+[wp] [CFG] Goal f_exits : Valid (Unreachable)
+[wp] [CFG] Goal g_exits : Valid (Unreachable)
+[wp] [CFG] Goal g_assigns : Valid (Unreachable)
+[wp] [CFG] Goal g_ensures : Valid (Unreachable)
+[wp] [CFG] Goal g_exits : Valid (Unreachable)
+[wp] [CFG] Goal h_exits : Valid (Unreachable)
+[wp] [CFG] Goal h_assigns : Valid (Unreachable)
+[wp] [CFG] Goal h_ensures : Valid (Unreachable)
+[wp] [CFG] Goal h_exits : Valid (Unreachable)
 [wp] Warning: Missing RTE guards
 [wp] 10 goals scheduled
-[wp] [Qed] Goal typed_f_post : Valid
-[wp] [Qed] Goal typed_f_post_2 : Valid
+[wp] [Qed] Goal typed_f_ensures_2 : Valid
+[wp] [Qed] Goal typed_f_ensures_3 : Valid
 [wp] [Qed] Goal typed_f_assert : Valid
-[wp] [Qed] Goal typed_f_stmt_post : Valid
-[wp] [Qed] Goal typed_f_stmt_assign : Valid
-[wp] [Qed] Goal typed_g_post : Valid
+[wp] [Qed] Goal typed_f_ensures : Valid
+[wp] [Qed] Goal typed_f_assigns : Valid
+[wp] [Qed] Goal typed_g_ensures_2 : Valid
 [wp] [Qed] Goal typed_g_assert : Valid
-[wp] [Qed] Goal typed_h_post : Valid
+[wp] [Qed] Goal typed_h_ensures_2 : Valid
 [wp] [Qed] Goal typed_h_assert : Valid
 [wp] [Qed] Goal typed_h_assert_2 : Valid
 [wp] Proved goals:   10 / 10
diff --git a/src/plugins/wp/tests/wp_plugin/oracle_qualif/string_c.res.oracle b/src/plugins/wp/tests/wp_plugin/oracle_qualif/string_c.res.oracle
index d4b8d167e8841ec4fef132c958997151a3903665..cd836f893d9450075f4900dc7dde4b8def2dc3b2 100644
--- a/src/plugins/wp/tests/wp_plugin/oracle_qualif/string_c.res.oracle
+++ b/src/plugins/wp/tests/wp_plugin/oracle_qualif/string_c.res.oracle
@@ -4,50 +4,50 @@
 [wp] Loading driver 'share/wp.driver'
 [wp] Warning: Missing RTE guards
 [wp] 44 goals scheduled
-[wp] [Alt-Ergo] Goal typed_memcpy_post_copied_contents : Valid
-[wp] [Qed] Goal typed_memcpy_post_result_ptr : Valid
-[wp] [Alt-Ergo] Goal typed_memcpy_loop_inv_no_eva_preserved : Valid
-[wp] [Alt-Ergo] Goal typed_memcpy_loop_inv_no_eva_established : Valid
-[wp] [Alt-Ergo] Goal typed_memcpy_loop_inv_no_eva_2_preserved : Valid
-[wp] [Qed] Goal typed_memcpy_loop_inv_no_eva_2_established : Valid
-[wp] [Qed] Goal typed_memcpy_loop_assign_part1 : Valid
-[wp] [Qed] Goal typed_memcpy_loop_assign_part2 : Valid
-[wp] [Alt-Ergo] Goal typed_memcpy_loop_assign_part3 : Valid
-[wp] [Qed] Goal typed_memcpy_assign : Valid
-[wp] [Alt-Ergo] Goal typed_memcpy_loop_term_decrease : Valid
-[wp] [Qed] Goal typed_memcpy_loop_term_positive : Valid
-[wp] [Alt-Ergo] Goal typed_memmove_post_copied_contents : Valid
-[wp] [Qed] Goal typed_memmove_post_result_ptr : Valid
-[wp] [Alt-Ergo] Goal typed_memmove_loop_inv_no_eva_preserved : Valid
-[wp] [Alt-Ergo] Goal typed_memmove_loop_inv_no_eva_established : Valid
-[wp] [Alt-Ergo] Goal typed_memmove_loop_inv_no_eva_2_preserved : Valid
-[wp] [Qed] Goal typed_memmove_loop_inv_no_eva_2_established : Valid
-[wp] [Alt-Ergo] Goal typed_memmove_loop_inv_no_eva_3_preserved : Valid
-[wp] [Qed] Goal typed_memmove_loop_inv_no_eva_3_established : Valid
-[wp] [Alt-Ergo] Goal typed_memmove_loop_inv_no_eva_4_preserved : Valid
-[wp] [Alt-Ergo] Goal typed_memmove_loop_inv_no_eva_4_established : Valid
-[wp] [Alt-Ergo] Goal typed_memmove_loop_inv_no_eva_5_preserved : Valid
-[wp] [Alt-Ergo] Goal typed_memmove_loop_inv_no_eva_5_established : Valid
-[wp] [Alt-Ergo] Goal typed_memmove_loop_inv_no_eva_6_preserved : Valid
-[wp] [Qed] Goal typed_memmove_loop_inv_no_eva_6_established : Valid
-[wp] [Qed] Goal typed_memmove_loop_assign_part1 : Valid
-[wp] [Qed] Goal typed_memmove_loop_assign_part2 : Valid
-[wp] [Alt-Ergo] Goal typed_memmove_loop_assign_part3 : Valid
-[wp] [Qed] Goal typed_memmove_loop_assign_2_part1 : Valid
-[wp] [Qed] Goal typed_memmove_loop_assign_2_part2 : Valid
-[wp] [Alt-Ergo] Goal typed_memmove_loop_assign_2_part3 : Valid
-[wp] [Qed] Goal typed_memmove_assign_exit : Valid
-[wp] [Qed] Goal typed_memmove_assign_normal_part1 : Valid
-[wp] [Qed] Goal typed_memmove_assign_normal_part2 : Valid
-[wp] [Qed] Goal typed_memmove_assign_normal_part3 : Valid
-[wp] [Qed] Goal typed_memmove_assign_normal_part4 : Valid
-[wp] [Qed] Goal typed_memmove_assign_normal_part5 : Valid
-[wp] [Alt-Ergo] Goal typed_memmove_assign_normal_part6 : Valid
-[wp] [Qed] Goal typed_memmove_assign_normal_part7 : Valid
-[wp] [Alt-Ergo] Goal typed_memmove_loop_term_decrease : Valid
-[wp] [Qed] Goal typed_memmove_loop_term_positive : Valid
-[wp] [Alt-Ergo] Goal typed_memmove_loop_term_2_decrease : Valid
-[wp] [Qed] Goal typed_memmove_loop_term_2_positive : Valid
+[wp] [Alt-Ergo] Goal typed_memcpy_ensures_copied_contents : Valid
+[wp] [Qed] Goal typed_memcpy_ensures_result_ptr : Valid
+[wp] [Alt-Ergo] Goal typed_memcpy_loop_invariant_no_eva_preserved : Valid
+[wp] [Alt-Ergo] Goal typed_memcpy_loop_invariant_no_eva_established : Valid
+[wp] [Alt-Ergo] Goal typed_memcpy_loop_invariant_no_eva_2_preserved : Valid
+[wp] [Qed] Goal typed_memcpy_loop_invariant_no_eva_2_established : Valid
+[wp] [Qed] Goal typed_memcpy_loop_assigns_part1 : Valid
+[wp] [Qed] Goal typed_memcpy_loop_assigns_part2 : Valid
+[wp] [Alt-Ergo] Goal typed_memcpy_loop_assigns_part3 : Valid
+[wp] [Qed] Goal typed_memcpy_assigns : Valid
+[wp] [Alt-Ergo] Goal typed_memcpy_loop_variant_decrease : Valid
+[wp] [Qed] Goal typed_memcpy_loop_variant_positive : Valid
+[wp] [Alt-Ergo] Goal typed_memmove_ensures_copied_contents : Valid
+[wp] [Qed] Goal typed_memmove_ensures_result_ptr : Valid
+[wp] [Alt-Ergo] Goal typed_memmove_loop_invariant_no_eva_preserved : Valid
+[wp] [Alt-Ergo] Goal typed_memmove_loop_invariant_no_eva_established : Valid
+[wp] [Alt-Ergo] Goal typed_memmove_loop_invariant_no_eva_2_preserved : Valid
+[wp] [Qed] Goal typed_memmove_loop_invariant_no_eva_2_established : Valid
+[wp] [Alt-Ergo] Goal typed_memmove_loop_invariant_no_eva_3_preserved : Valid
+[wp] [Qed] Goal typed_memmove_loop_invariant_no_eva_3_established : Valid
+[wp] [Alt-Ergo] Goal typed_memmove_loop_invariant_no_eva_4_preserved : Valid
+[wp] [Alt-Ergo] Goal typed_memmove_loop_invariant_no_eva_4_established : Valid
+[wp] [Alt-Ergo] Goal typed_memmove_loop_invariant_no_eva_5_preserved : Valid
+[wp] [Alt-Ergo] Goal typed_memmove_loop_invariant_no_eva_5_established : Valid
+[wp] [Alt-Ergo] Goal typed_memmove_loop_invariant_no_eva_6_preserved : Valid
+[wp] [Qed] Goal typed_memmove_loop_invariant_no_eva_6_established : Valid
+[wp] [Qed] Goal typed_memmove_loop_assigns_part1 : Valid
+[wp] [Qed] Goal typed_memmove_loop_assigns_part2 : Valid
+[wp] [Alt-Ergo] Goal typed_memmove_loop_assigns_part3 : Valid
+[wp] [Qed] Goal typed_memmove_loop_assigns_2_part1 : Valid
+[wp] [Qed] Goal typed_memmove_loop_assigns_2_part2 : Valid
+[wp] [Alt-Ergo] Goal typed_memmove_loop_assigns_2_part3 : Valid
+[wp] [Qed] Goal typed_memmove_assigns_exit : Valid
+[wp] [Qed] Goal typed_memmove_assigns_normal_part1 : Valid
+[wp] [Qed] Goal typed_memmove_assigns_normal_part2 : Valid
+[wp] [Qed] Goal typed_memmove_assigns_normal_part3 : Valid
+[wp] [Qed] Goal typed_memmove_assigns_normal_part4 : Valid
+[wp] [Qed] Goal typed_memmove_assigns_normal_part5 : Valid
+[wp] [Alt-Ergo] Goal typed_memmove_assigns_normal_part6 : Valid
+[wp] [Qed] Goal typed_memmove_assigns_normal_part7 : Valid
+[wp] [Alt-Ergo] Goal typed_memmove_loop_variant_decrease : Valid
+[wp] [Qed] Goal typed_memmove_loop_variant_positive : Valid
+[wp] [Alt-Ergo] Goal typed_memmove_loop_variant_2_decrease : Valid
+[wp] [Qed] Goal typed_memmove_loop_variant_2_positive : Valid
 [wp] Proved goals:   44 / 44
   Qed:            23 
   Alt-Ergo:       21
diff --git a/src/plugins/wp/tests/wp_plugin/oracle_qualif/struct.res.oracle b/src/plugins/wp/tests/wp_plugin/oracle_qualif/struct.res.oracle
index ececd4dbdc753c429893457c4d853ea936e9aac4..5d5925a673ed1be9f1420df468cdb4b363b26237 100644
--- a/src/plugins/wp/tests/wp_plugin/oracle_qualif/struct.res.oracle
+++ b/src/plugins/wp/tests/wp_plugin/oracle_qualif/struct.res.oracle
@@ -4,24 +4,24 @@
 [wp] Loading driver 'share/wp.driver'
 [wp] Warning: Missing RTE guards
 [wp] 18 goals scheduled
-[wp] [Qed] Goal typed_f_post_qed_ok_E0 : Valid
-[wp] [Qed] Goal typed_f_post_qed_ok_E1 : Valid
-[wp] [Qed] Goal typed_f_post_qed_ok_E2 : Valid
-[wp] [Qed] Goal typed_f_post_qed_ok_E3 : Valid
-[wp] [Qed] Goal typed_f_post_qed_ok_E4 : Valid
-[wp] [Qed] Goal typed_f_post_qed_ok_E5 : Valid
-[wp] [Qed] Goal typed_f_post_qed_ok_E6 : Valid
-[wp] [Qed] Goal typed_f_post_qed_ok_E7 : Valid
-[wp] [Qed] Goal typed_f_post_qed_ok_E8 : Valid
-[wp] [Qed] Goal typed_f_post_qed_ok_E9 : Valid
-[wp] [Qed] Goal typed_f_post_qed_ok_E10 : Valid
-[wp] [Qed] Goal typed_f_post_qed_ok_E11 : Valid
-[wp] [Qed] Goal typed_g_post_qed_ok_P3 : Valid
-[wp] [Qed] Goal typed_g_post_qed_ok_P4 : Valid
-[wp] [Qed] Goal typed_g_post_qed_ok_P5 : Valid
-[wp] [Qed] Goal typed_g_assign : Valid
-[wp] [Qed] Goal typed_id_post_qed_ok_P1 : Valid
-[wp] [Qed] Goal typed_id_post_qed_ok_P2 : Valid
+[wp] [Qed] Goal typed_f_ensures_qed_ok_E0 : Valid
+[wp] [Qed] Goal typed_f_ensures_qed_ok_E1 : Valid
+[wp] [Qed] Goal typed_f_ensures_qed_ok_E2 : Valid
+[wp] [Qed] Goal typed_f_ensures_qed_ok_E3 : Valid
+[wp] [Qed] Goal typed_f_ensures_qed_ok_E4 : Valid
+[wp] [Qed] Goal typed_f_ensures_qed_ok_E5 : Valid
+[wp] [Qed] Goal typed_f_ensures_qed_ok_E6 : Valid
+[wp] [Qed] Goal typed_f_ensures_qed_ok_E7 : Valid
+[wp] [Qed] Goal typed_f_ensures_qed_ok_E8 : Valid
+[wp] [Qed] Goal typed_f_ensures_qed_ok_E9 : Valid
+[wp] [Qed] Goal typed_f_ensures_qed_ok_E10 : Valid
+[wp] [Qed] Goal typed_f_ensures_qed_ok_E11 : Valid
+[wp] [Qed] Goal typed_g_ensures_qed_ok_P3 : Valid
+[wp] [Qed] Goal typed_g_ensures_qed_ok_P4 : Valid
+[wp] [Qed] Goal typed_g_ensures_qed_ok_P5 : Valid
+[wp] [Qed] Goal typed_g_assigns : Valid
+[wp] [Qed] Goal typed_id_ensures_qed_ok_P1 : Valid
+[wp] [Qed] Goal typed_id_ensures_qed_ok_P2 : Valid
 [wp] Proved goals:   18 / 18
   Qed:            18
 [wp] Report 'tests/wp_plugin/struct.i.0.report.json'
diff --git a/src/plugins/wp/tests/wp_plugin/oracle_qualif/struct_hack.res.oracle b/src/plugins/wp/tests/wp_plugin/oracle_qualif/struct_hack.res.oracle
index 1a60c2772c855913d23492e0e5633641795f1335..14cfd26a07272ceb668fc4d14781895b05cbb320 100644
--- a/src/plugins/wp/tests/wp_plugin/oracle_qualif/struct_hack.res.oracle
+++ b/src/plugins/wp/tests/wp_plugin/oracle_qualif/struct_hack.res.oracle
@@ -10,22 +10,22 @@
 [wp] tests/wp_plugin/struct_hack.i:53: Warning: 
   Missing assigns clause (assigns 'everything' instead)
 [wp] 10 goals scheduled
-[wp] [Alt-Ergo] Goal typed_f0_loop_inv_qed_ok_preserved : Valid
-[wp] [Qed] Goal typed_f0_loop_inv_qed_ok_established : Valid
+[wp] [Alt-Ergo] Goal typed_f0_loop_invariant_qed_ok_preserved : Valid
+[wp] [Qed] Goal typed_f0_loop_invariant_qed_ok_established : Valid
 [wp] [Alt-Ergo] Goal typed_f0_assert_qed_ok : Valid
-[wp] [Qed] Goal typed_f0_loop_term_decrease : Valid
-[wp] [Qed] Goal typed_f0_loop_term_positive : Valid
-[wp] [Alt-Ergo] Goal typed_f1_loop_inv_qed_ok_preserved : Valid
-[wp] [Qed] Goal typed_f1_loop_inv_qed_ok_established : Valid
+[wp] [Qed] Goal typed_f0_loop_variant_decrease : Valid
+[wp] [Qed] Goal typed_f0_loop_variant_positive : Valid
+[wp] [Alt-Ergo] Goal typed_f1_loop_invariant_qed_ok_preserved : Valid
+[wp] [Qed] Goal typed_f1_loop_invariant_qed_ok_established : Valid
 [wp] [Alt-Ergo] Goal typed_f1_assert_qed_ok : Valid
-[wp] [Qed] Goal typed_f1_loop_term_decrease : Valid
-[wp] [Qed] Goal typed_f1_loop_term_positive : Valid
+[wp] [Qed] Goal typed_f1_loop_variant_decrease : Valid
+[wp] [Qed] Goal typed_f1_loop_variant_positive : Valid
 [wp] Proved goals:   10 / 10
   Qed:             6 
   Alt-Ergo:        4
 [wp] Report 'tests/wp_plugin/struct_hack.i.0.report.json'
 -------------------------------------------------------------
 Functions           WP     Alt-Ergo        Total   Success
-f0                   3      2 (20..32)       5       100%
+f0                   3      2 (24..36)       5       100%
 f1                   3      2 (16..28)       5       100%
 -------------------------------------------------------------
diff --git a/src/plugins/wp/tests/wp_plugin/oracle_qualif/subset.res.oracle b/src/plugins/wp/tests/wp_plugin/oracle_qualif/subset.res.oracle
index e8606daa876ec7efc765b12bf8edaf2b63de535d..bf2ffa73ad31c0478dd9788517833a3f646b4659 100644
--- a/src/plugins/wp/tests/wp_plugin/oracle_qualif/subset.res.oracle
+++ b/src/plugins/wp/tests/wp_plugin/oracle_qualif/subset.res.oracle
@@ -4,12 +4,12 @@
 [wp] Loading driver 'share/wp.driver'
 [wp] Warning: Missing RTE guards
 [wp] 1 goal scheduled
-[wp] [Alt-Ergo] Goal typed_mem_post : Valid
+[wp] [Alt-Ergo] Goal typed_mem_ensures : Valid
 [wp] Proved goals:    1 / 1
   Qed:             0 
   Alt-Ergo:        1
 [wp] Report 'tests/wp_plugin/subset.i.0.report.json'
 -------------------------------------------------------------
 Functions           WP     Alt-Ergo        Total   Success
-mem                 -       1 (112..136)     1       100%
+mem                 -       1 (128..152)     1       100%
 -------------------------------------------------------------
diff --git a/src/plugins/wp/tests/wp_plugin/oracle_qualif/trig.res.oracle b/src/plugins/wp/tests/wp_plugin/oracle_qualif/trig.res.oracle
index d4b8f0fc30206a4473541a5e4226c233bf971427..13c1a6e92193642c657b9833e30ce9351c426c54 100644
--- a/src/plugins/wp/tests/wp_plugin/oracle_qualif/trig.res.oracle
+++ b/src/plugins/wp/tests/wp_plugin/oracle_qualif/trig.res.oracle
@@ -7,12 +7,12 @@
 [wp] [Alt-Ergo] Goal typed_foo_assert_qed_ok_S : Valid
 [wp] [Alt-Ergo] Goal typed_foo_assert_qed_ok_A : Valid
 [wp] [Alt-Ergo] Goal typed_foo_assert_qed_ok_B : Unknown
-[wp] [Qed] Goal typed_foo_call_fconcat_pre_qed_ok : Valid
+[wp] [Qed] Goal typed_foo_call_fconcat_requires_qed_ok : Valid
 [wp] Proved goals:    3 / 4
   Qed:             1 
   Alt-Ergo:        2  (unknown: 1)
 [wp] Report 'tests/wp_plugin/trig.i.0.report.json'
 -------------------------------------------------------------
 Functions           WP     Alt-Ergo        Total   Success
-foo                  1      2 (44..56)       4      75.0%
+foo                  1      2 (48..60)       4      75.0%
 -------------------------------------------------------------
diff --git a/src/plugins/wp/tests/wp_plugin/oracle_qualif/unsafe-arrays.res.oracle b/src/plugins/wp/tests/wp_plugin/oracle_qualif/unsafe-arrays.res.oracle
index d093141e585916c6b6ac1f1753c36549cfd159c5..6ce8eaf3651a1fb1b04a513c56de8fd3e36fe498 100644
--- a/src/plugins/wp/tests/wp_plugin/oracle_qualif/unsafe-arrays.res.oracle
+++ b/src/plugins/wp/tests/wp_plugin/oracle_qualif/unsafe-arrays.res.oracle
@@ -4,9 +4,9 @@
 [wp] Loading driver 'share/wp.driver'
 [wp] Warning: Missing RTE guards
 [wp] 3 goals scheduled
-[wp] [Qed] Goal typed_f_post_ARRAYS : Valid
-[wp] [Qed] Goal typed_f_post_STRUCT : Valid
-[wp] [Alt-Ergo] Goal typed_f_post_INDIRP : Valid
+[wp] [Qed] Goal typed_f_ensures_ARRAYS : Valid
+[wp] [Qed] Goal typed_f_ensures_STRUCT : Valid
+[wp] [Alt-Ergo] Goal typed_f_ensures_INDIRP : Valid
 [wp] Proved goals:    3 / 3
   Qed:             2 
   Alt-Ergo:        1
diff --git a/src/plugins/wp/tests/wp_plugin/oracle_qualif/unsupported_init.res.oracle b/src/plugins/wp/tests/wp_plugin/oracle_qualif/unsupported_init.res.oracle
index 512b6a9775dca1032030781db5f07faba19e53ce..5cb5f531ab2cff415b146d2960bb24cd8a29737e 100644
--- a/src/plugins/wp/tests/wp_plugin/oracle_qualif/unsupported_init.res.oracle
+++ b/src/plugins/wp/tests/wp_plugin/oracle_qualif/unsupported_init.res.oracle
@@ -8,7 +8,7 @@
   (r1: \initialized(Y + (0 .. 99)))
 [wp] 2 goals scheduled
 [wp] [Qed] Goal typed_f_assert_a1 : Valid
-[wp] [Alt-Ergo] Goal typed_f_call_cp_pre_r1 : Unknown (Degenerated)
+[wp] [Alt-Ergo] Goal typed_f_call_cp_requires_r1 : Unknown (Degenerated)
 [wp] Proved goals:    1 / 2
   Qed:             1 
   Alt-Ergo:        0  (unknown: 1)
diff --git a/src/plugins/wp/tests/wp_plugin/overarray.i.0.report.json b/src/plugins/wp/tests/wp_plugin/overarray.i.0.report.json
index 720746c5196416ef4898a24124ec3ac9d1e21bc7..dbda73ffeddfd55206f94a3f1e8d23e4b278c486 100644
--- a/src/plugins/wp/tests/wp_plugin/overarray.i.0.report.json
+++ b/src/plugins/wp/tests/wp_plugin/overarray.i.0.report.json
@@ -1,50 +1,50 @@
 { "wp:global": { "alt-ergo": { "total": 4, "unknown": 4 },
                  "qed": { "total": 8, "valid": 8 },
                  "wp:main": { "total": 12, "valid": 8, "unknown": 4 } },
-  "wp:functions": { "f1_ok": { "f1_ok_assign": { "qed": { "total": 2,
-                                                          "valid": 2 },
-                                                 "wp:main": { "total": 2,
-                                                              "valid": 2 } },
+  "wp:functions": { "f1_ok": { "f1_ok_assigns": { "qed": { "total": 2,
+                                                           "valid": 2 },
+                                                  "wp:main": { "total": 2,
+                                                               "valid": 2 } },
                                "wp:section": { "qed": { "total": 2,
                                                         "valid": 2 },
                                                "wp:main": { "total": 2,
                                                             "valid": 2 } } },
-                    "f2_ok": { "f2_ok_assign": { "qed": { "total": 2,
-                                                          "valid": 2 },
-                                                 "wp:main": { "total": 2,
-                                                              "valid": 2 } },
+                    "f2_ok": { "f2_ok_assigns": { "qed": { "total": 2,
+                                                           "valid": 2 },
+                                                  "wp:main": { "total": 2,
+                                                               "valid": 2 } },
                                "wp:section": { "qed": { "total": 2,
                                                         "valid": 2 },
                                                "wp:main": { "total": 2,
                                                             "valid": 2 } } },
-                    "f3_ok": { "f3_ok_assign": { "qed": { "total": 2,
-                                                          "valid": 2 },
-                                                 "wp:main": { "total": 2,
-                                                              "valid": 2 } },
+                    "f3_ok": { "f3_ok_assigns": { "qed": { "total": 2,
+                                                           "valid": 2 },
+                                                  "wp:main": { "total": 2,
+                                                               "valid": 2 } },
                                "wp:section": { "qed": { "total": 2,
                                                         "valid": 2 },
                                                "wp:main": { "total": 2,
                                                             "valid": 2 } } },
-                    "f4_ok": { "f4_ok_assign": { "qed": { "total": 2,
-                                                          "valid": 2 },
-                                                 "wp:main": { "total": 2,
-                                                              "valid": 2 } },
+                    "f4_ok": { "f4_ok_assigns": { "qed": { "total": 2,
+                                                           "valid": 2 },
+                                                  "wp:main": { "total": 2,
+                                                               "valid": 2 } },
                                "wp:section": { "qed": { "total": 2,
                                                         "valid": 2 },
                                                "wp:main": { "total": 2,
                                                             "valid": 2 } } },
-                    "f5_ko": { "f5_ko_assign": { "alt-ergo": { "total": 2,
-                                                               "unknown": 2 },
-                                                 "wp:main": { "total": 2,
-                                                              "unknown": 2 } },
+                    "f5_ko": { "f5_ko_assigns": { "alt-ergo": { "total": 2,
+                                                                "unknown": 2 },
+                                                  "wp:main": { "total": 2,
+                                                               "unknown": 2 } },
                                "wp:section": { "alt-ergo": { "total": 2,
                                                              "unknown": 2 },
                                                "wp:main": { "total": 2,
                                                             "unknown": 2 } } },
-                    "f6_ko": { "f6_ko_assign": { "alt-ergo": { "total": 2,
-                                                               "unknown": 2 },
-                                                 "wp:main": { "total": 2,
-                                                              "unknown": 2 } },
+                    "f6_ko": { "f6_ko_assigns": { "alt-ergo": { "total": 2,
+                                                                "unknown": 2 },
+                                                  "wp:main": { "total": 2,
+                                                               "unknown": 2 } },
                                "wp:section": { "alt-ergo": { "total": 2,
                                                              "unknown": 2 },
                                                "wp:main": { "total": 2,
diff --git a/src/plugins/wp/tests/wp_plugin/overassign.i.0.report.json b/src/plugins/wp/tests/wp_plugin/overassign.i.0.report.json
index 80848c1eee23b93d767419b34800a6444c9f6ff4..71511e374d5cd66fb7c663cd5ed201c7ef5af01b 100644
--- a/src/plugins/wp/tests/wp_plugin/overassign.i.0.report.json
+++ b/src/plugins/wp/tests/wp_plugin/overassign.i.0.report.json
@@ -3,58 +3,58 @@
                  "qed": { "total": 4, "valid": 4 },
                  "wp:main": { "total": 12, "valid": 8, "unknown": 4,
                               "rank": 6 } },
-  "wp:functions": { "f1_ok": { "f1_ok_assign": { "qed": { "total": 2,
-                                                          "valid": 2 },
-                                                 "wp:main": { "total": 2,
-                                                              "valid": 2 } },
+  "wp:functions": { "f1_ok": { "f1_ok_assigns": { "qed": { "total": 2,
+                                                           "valid": 2 },
+                                                  "wp:main": { "total": 2,
+                                                               "valid": 2 } },
                                "wp:section": { "qed": { "total": 2,
                                                         "valid": 2 },
                                                "wp:main": { "total": 2,
                                                             "valid": 2 } } },
-                    "f2_ok": { "f2_ok_assign": { "qed": { "total": 2,
-                                                          "valid": 2 },
-                                                 "wp:main": { "total": 2,
-                                                              "valid": 2 } },
+                    "f2_ok": { "f2_ok_assigns": { "qed": { "total": 2,
+                                                           "valid": 2 },
+                                                  "wp:main": { "total": 2,
+                                                               "valid": 2 } },
                                "wp:section": { "qed": { "total": 2,
                                                         "valid": 2 },
                                                "wp:main": { "total": 2,
                                                             "valid": 2 } } },
-                    "f3_ok": { "f3_ok_assign": { "alt-ergo": { "total": 2,
+                    "f3_ok": { "f3_ok_assigns": { "alt-ergo": { "total": 2,
+                                                                "valid": 2,
+                                                                "rank": 6 },
+                                                  "wp:main": { "total": 2,
                                                                "valid": 2,
-                                                               "rank": 6 },
-                                                 "wp:main": { "total": 2,
-                                                              "valid": 2,
-                                                              "rank": 6 } },
+                                                               "rank": 6 } },
                                "wp:section": { "alt-ergo": { "total": 2,
                                                              "valid": 2,
                                                              "rank": 6 },
                                                "wp:main": { "total": 2,
                                                             "valid": 2,
                                                             "rank": 6 } } },
-                    "f4_ok": { "f4_ok_assign": { "alt-ergo": { "total": 2,
+                    "f4_ok": { "f4_ok_assigns": { "alt-ergo": { "total": 2,
+                                                                "valid": 2,
+                                                                "rank": 5 },
+                                                  "wp:main": { "total": 2,
                                                                "valid": 2,
-                                                               "rank": 4 },
-                                                 "wp:main": { "total": 2,
-                                                              "valid": 2,
-                                                              "rank": 4 } },
+                                                               "rank": 5 } },
                                "wp:section": { "alt-ergo": { "total": 2,
                                                              "valid": 2,
-                                                             "rank": 4 },
+                                                             "rank": 5 },
                                                "wp:main": { "total": 2,
                                                             "valid": 2,
-                                                            "rank": 4 } } },
-                    "f5_ko": { "f5_ko_assign": { "alt-ergo": { "total": 2,
-                                                               "unknown": 2 },
-                                                 "wp:main": { "total": 2,
-                                                              "unknown": 2 } },
+                                                            "rank": 5 } } },
+                    "f5_ko": { "f5_ko_assigns": { "alt-ergo": { "total": 2,
+                                                                "unknown": 2 },
+                                                  "wp:main": { "total": 2,
+                                                               "unknown": 2 } },
                                "wp:section": { "alt-ergo": { "total": 2,
                                                              "unknown": 2 },
                                                "wp:main": { "total": 2,
                                                             "unknown": 2 } } },
-                    "f6_ko": { "f6_ko_assign": { "alt-ergo": { "total": 2,
-                                                               "unknown": 2 },
-                                                 "wp:main": { "total": 2,
-                                                              "unknown": 2 } },
+                    "f6_ko": { "f6_ko_assigns": { "alt-ergo": { "total": 2,
+                                                                "unknown": 2 },
+                                                  "wp:main": { "total": 2,
+                                                               "unknown": 2 } },
                                "wp:section": { "alt-ergo": { "total": 2,
                                                              "unknown": 2 },
                                                "wp:main": { "total": 2,
diff --git a/src/plugins/wp/tests/wp_plugin/prenex.i.0.report.json b/src/plugins/wp/tests/wp_plugin/prenex.i.0.report.json
index 0f3f71f56e14c84f708b839a9782131ddb51b081..87caa6954e8ecacf82c65b0285dd8aea904d0ee6 100644
--- a/src/plugins/wp/tests/wp_plugin/prenex.i.0.report.json
+++ b/src/plugins/wp/tests/wp_plugin/prenex.i.0.report.json
@@ -1,57 +1,63 @@
-{ "wp:global": { "alt-ergo": { "total": 5, "valid": 5, "rank": 16 },
+{ "wp:global": { "alt-ergo": { "total": 5, "valid": 5, "rank": 17 },
                  "qed": { "total": 7, "valid": 7 },
-                 "wp:main": { "total": 12, "valid": 12, "rank": 16 } },
-  "wp:functions": { "diag": { "diag_loop_inv_PJ": { "alt-ergo": { "total": 1,
-                                                                  "valid": 1,
-                                                                  "rank": 7 },
-                                                    "qed": { "total": 1,
-                                                             "valid": 1 },
-                                                    "wp:main": { "total": 2,
-                                                                 "valid": 2,
-                                                                 "rank": 7 } },
-                              "diag_loop_inv_J": { "alt-ergo": { "total": 1,
-                                                                 "valid": 1,
-                                                                 "rank": 6 },
-                                                   "qed": { "total": 1,
-                                                            "valid": 1 },
-                                                   "wp:main": { "total": 2,
-                                                                "valid": 2,
-                                                                "rank": 6 } },
-                              "diag_loop_inv_PI": { "alt-ergo": { "total": 1,
-                                                                  "valid": 1,
-                                                                  "rank": 7 },
-                                                    "qed": { "total": 1,
-                                                             "valid": 1 },
-                                                    "wp:main": { "total": 2,
-                                                                 "valid": 2,
-                                                                 "rank": 7 } },
-                              "diag_loop_inv_I": { "alt-ergo": { "total": 1,
-                                                                 "valid": 1,
-                                                                 "rank": 5 },
-                                                   "qed": { "total": 1,
-                                                            "valid": 1 },
-                                                   "wp:main": { "total": 2,
-                                                                "valid": 2,
-                                                                "rank": 5 } },
-                              "diag_loop_assign_2": { "qed": { "total": 1,
-                                                               "valid": 1 },
-                                                      "wp:main": { "total": 1,
-                                                                   "valid": 1 } },
-                              "diag_loop_assign": { "qed": { "total": 2,
-                                                             "valid": 2 },
-                                                    "wp:main": { "total": 2,
-                                                                 "valid": 2 } },
-                              "diag_post": { "alt-ergo": { "total": 1,
-                                                           "valid": 1,
-                                                           "rank": 16 },
-                                             "wp:main": { "total": 1,
-                                                          "valid": 1,
-                                                          "rank": 16 } },
+                 "wp:main": { "total": 12, "valid": 12, "rank": 17 } },
+  "wp:functions": { "diag": { "diag_loop_invariant_PJ": { "alt-ergo": 
+                                                            { "total": 1,
+                                                              "valid": 1,
+                                                              "rank": 8 },
+                                                          "qed": { "total": 1,
+                                                                   "valid": 1 },
+                                                          "wp:main": 
+                                                            { "total": 2,
+                                                              "valid": 2,
+                                                              "rank": 8 } },
+                              "diag_loop_invariant_J": { "alt-ergo": 
+                                                           { "total": 1,
+                                                             "valid": 1,
+                                                             "rank": 7 },
+                                                         "qed": { "total": 1,
+                                                                  "valid": 1 },
+                                                         "wp:main": { "total": 2,
+                                                                    "valid": 2,
+                                                                    "rank": 7 } },
+                              "diag_loop_invariant_PI": { "alt-ergo": 
+                                                            { "total": 1,
+                                                              "valid": 1,
+                                                              "rank": 8 },
+                                                          "qed": { "total": 1,
+                                                                   "valid": 1 },
+                                                          "wp:main": 
+                                                            { "total": 2,
+                                                              "valid": 2,
+                                                              "rank": 8 } },
+                              "diag_loop_invariant_I": { "alt-ergo": 
+                                                           { "total": 1,
+                                                             "valid": 1,
+                                                             "rank": 6 },
+                                                         "qed": { "total": 1,
+                                                                  "valid": 1 },
+                                                         "wp:main": { "total": 2,
+                                                                    "valid": 2,
+                                                                    "rank": 6 } },
+                              "diag_loop_assigns_2": { "qed": { "total": 1,
+                                                                "valid": 1 },
+                                                       "wp:main": { "total": 1,
+                                                                    "valid": 1 } },
+                              "diag_loop_assigns": { "qed": { "total": 2,
+                                                              "valid": 2 },
+                                                     "wp:main": { "total": 2,
+                                                                  "valid": 2 } },
+                              "diag_ensures": { "alt-ergo": { "total": 1,
+                                                              "valid": 1,
+                                                              "rank": 17 },
+                                                "wp:main": { "total": 1,
+                                                             "valid": 1,
+                                                             "rank": 17 } },
                               "wp:section": { "alt-ergo": { "total": 5,
                                                             "valid": 5,
-                                                            "rank": 16 },
+                                                            "rank": 17 },
                                               "qed": { "total": 7,
                                                        "valid": 7 },
                                               "wp:main": { "total": 12,
                                                            "valid": 12,
-                                                           "rank": 16 } } } } }
+                                                           "rank": 17 } } } } }
diff --git a/src/plugins/wp/tests/wp_plugin/repeat.c.0.report.json b/src/plugins/wp/tests/wp_plugin/repeat.c.0.report.json
index e96b420e99acab6cb9a1086562ba4ba76c0d8c75..5fd1e03fce302fe36b4d29c14803969ccbfa3782 100644
--- a/src/plugins/wp/tests/wp_plugin/repeat.c.0.report.json
+++ b/src/plugins/wp/tests/wp_plugin/repeat.c.0.report.json
@@ -1,68 +1,73 @@
 { "wp:global": { "alt-ergo": { "total": 5, "valid": 5, "rank": 12 },
                  "qed": { "total": 42, "valid": 42 },
                  "wp:main": { "total": 47, "valid": 47, "rank": 12 } },
-  "wp:functions": { "master": { "master_assign": { "qed": { "total": 2,
-                                                            "valid": 2 },
-                                                   "wp:main": { "total": 2,
-                                                                "valid": 2 } },
-                                "master_post": { "qed": { "total": 1,
-                                                          "valid": 1 },
-                                                 "wp:main": { "total": 1,
-                                                              "valid": 1 } },
+  "wp:functions": { "master": { "master_assigns": { "qed": { "total": 2,
+                                                             "valid": 2 },
+                                                    "wp:main": { "total": 2,
+                                                                 "valid": 2 } },
+                                "master_ensures": { "qed": { "total": 1,
+                                                             "valid": 1 },
+                                                    "wp:main": { "total": 1,
+                                                                 "valid": 1 } },
                                 "wp:section": { "qed": { "total": 3,
                                                          "valid": 3 },
                                                 "wp:main": { "total": 3,
                                                              "valid": 3 } } },
-                    "unroll": { "unroll_loop_inv": { "qed": { "total": 2,
-                                                              "valid": 2 },
-                                                     "wp:main": { "total": 2,
-                                                                  "valid": 2 } },
-                                "unroll_assign": { "qed": { "total": 22,
-                                                            "valid": 22 },
-                                                   "wp:main": { "total": 22,
-                                                                "valid": 22 } },
-                                "unroll_post": { "qed": { "total": 1,
-                                                          "valid": 1 },
-                                                 "wp:main": { "total": 1,
-                                                              "valid": 1 } },
+                    "unroll": { "unroll_loop_invariant": { "qed": { "total": 2,
+                                                                    "valid": 2 },
+                                                           "wp:main": 
+                                                             { "total": 2,
+                                                               "valid": 2 } },
+                                "unroll_assigns": { "qed": { "total": 22,
+                                                             "valid": 22 },
+                                                    "wp:main": { "total": 22,
+                                                                 "valid": 22 } },
+                                "unroll_ensures": { "qed": { "total": 1,
+                                                             "valid": 1 },
+                                                    "wp:main": { "total": 1,
+                                                                 "valid": 1 } },
                                 "wp:section": { "qed": { "total": 25,
                                                          "valid": 25 },
                                                 "wp:main": { "total": 25,
                                                              "valid": 25 } } },
-                    "induction": { "induction_loop_inv_2": { "alt-ergo": 
-                                                               { "total": 1,
-                                                                 "valid": 1,
-                                                                 "rank": 12 },
-                                                             "qed": { "total": 1,
+                    "induction": { "induction_loop_invariant_2": { "alt-ergo": 
+                                                                    { "total": 1,
+                                                                    "valid": 1,
+                                                                    "rank": 12 },
+                                                                   "qed": 
+                                                                    { "total": 1,
                                                                     "valid": 1 },
-                                                             "wp:main": 
-                                                               { "total": 2,
-                                                                 "valid": 2,
-                                                                 "rank": 12 } },
-                                   "induction_loop_inv": { "alt-ergo": 
-                                                             { "total": 1,
-                                                               "valid": 1,
-                                                               "rank": 4 },
-                                                           "qed": { "total": 1,
+                                                                   "wp:main": 
+                                                                    { "total": 2,
+                                                                    "valid": 2,
+                                                                    "rank": 12 } },
+                                   "induction_loop_invariant": { "alt-ergo": 
+                                                                   { "total": 1,
+                                                                    "valid": 1,
+                                                                    "rank": 4 },
+                                                                 "qed": 
+                                                                   { "total": 1,
                                                                     "valid": 1 },
-                                                           "wp:main": 
-                                                             { "total": 2,
-                                                               "valid": 2,
-                                                               "rank": 4 } },
-                                   "induction_assign": { "qed": { "total": 3,
-                                                                  "valid": 3 },
-                                                         "wp:main": { "total": 3,
-                                                                    "valid": 3 } },
-                                   "induction_loop_assign": { "qed": 
-                                                                { "total": 1,
-                                                                  "valid": 1 },
-                                                              "wp:main": 
-                                                                { "total": 1,
-                                                                  "valid": 1 } },
-                                   "induction_post": { "qed": { "total": 1,
-                                                                "valid": 1 },
-                                                       "wp:main": { "total": 1,
-                                                                    "valid": 1 } },
+                                                                 "wp:main": 
+                                                                   { "total": 2,
+                                                                    "valid": 2,
+                                                                    "rank": 4 } },
+                                   "induction_assigns": { "qed": { "total": 3,
+                                                                   "valid": 3 },
+                                                          "wp:main": 
+                                                            { "total": 3,
+                                                              "valid": 3 } },
+                                   "induction_loop_assigns": { "qed": 
+                                                                 { "total": 1,
+                                                                   "valid": 1 },
+                                                               "wp:main": 
+                                                                 { "total": 1,
+                                                                   "valid": 1 } },
+                                   "induction_ensures": { "qed": { "total": 1,
+                                                                   "valid": 1 },
+                                                          "wp:main": 
+                                                            { "total": 1,
+                                                              "valid": 1 } },
                                    "wp:section": { "alt-ergo": { "total": 2,
                                                                  "valid": 2,
                                                                  "rank": 12 },
@@ -71,38 +76,42 @@
                                                    "wp:main": { "total": 9,
                                                                 "valid": 9,
                                                                 "rank": 12 } } },
-                    "shifted": { "shifted_loop_inv_2": { "alt-ergo": 
-                                                           { "total": 1,
-                                                             "valid": 1,
-                                                             "rank": 12 },
-                                                         "qed": { "total": 1,
-                                                                  "valid": 1 },
-                                                         "wp:main": { "total": 2,
-                                                                    "valid": 2,
-                                                                    "rank": 12 } },
-                                 "shifted_loop_inv": { "alt-ergo": { "total": 1,
-                                                                    "valid": 1,
-                                                                    "rank": 5 },
-                                                       "qed": { "total": 1,
-                                                                "valid": 1 },
-                                                       "wp:main": { "total": 2,
-                                                                    "valid": 2,
-                                                                    "rank": 5 } },
-                                 "shifted_assign": { "qed": { "total": 4,
-                                                              "valid": 4 },
-                                                     "wp:main": { "total": 4,
-                                                                  "valid": 4 } },
-                                 "shifted_loop_assign": { "qed": { "total": 1,
+                    "shifted": { "shifted_loop_invariant_2": { "alt-ergo": 
+                                                                 { "total": 1,
+                                                                   "valid": 1,
+                                                                   "rank": 12 },
+                                                               "qed": 
+                                                                 { "total": 1,
                                                                    "valid": 1 },
-                                                          "wp:main": 
-                                                            { "total": 1,
-                                                              "valid": 1 } },
-                                 "shifted_post": { "alt-ergo": { "total": 1,
+                                                               "wp:main": 
+                                                                 { "total": 2,
+                                                                   "valid": 2,
+                                                                   "rank": 12 } },
+                                 "shifted_loop_invariant": { "alt-ergo": 
+                                                               { "total": 1,
                                                                  "valid": 1,
-                                                                 "rank": 11 },
-                                                   "wp:main": { "total": 1,
-                                                                "valid": 1,
-                                                                "rank": 11 } },
+                                                                 "rank": 5 },
+                                                             "qed": { "total": 1,
+                                                                    "valid": 1 },
+                                                             "wp:main": 
+                                                               { "total": 2,
+                                                                 "valid": 2,
+                                                                 "rank": 5 } },
+                                 "shifted_assigns": { "qed": { "total": 4,
+                                                               "valid": 4 },
+                                                      "wp:main": { "total": 4,
+                                                                   "valid": 4 } },
+                                 "shifted_loop_assigns": { "qed": { "total": 1,
+                                                                    "valid": 1 },
+                                                           "wp:main": 
+                                                             { "total": 1,
+                                                               "valid": 1 } },
+                                 "shifted_ensures": { "alt-ergo": { "total": 1,
+                                                                    "valid": 1,
+                                                                    "rank": 11 },
+                                                      "wp:main": { "total": 1,
+                                                                   "valid": 1,
+                                                                   "rank": 11 } },
                                  "wp:section": { "alt-ergo": { "total": 3,
                                                                "valid": 3,
                                                                "rank": 12 },
diff --git a/src/plugins/wp/tests/wp_plugin/sequence.i.0.report.json b/src/plugins/wp/tests/wp_plugin/sequence.i.0.report.json
index 817a0ff84b007f0bcdcf5b9317a0f356cda307d9..ae0f326bdbae62d9931abc55c0301c9f487d6d85 100644
--- a/src/plugins/wp/tests/wp_plugin/sequence.i.0.report.json
+++ b/src/plugins/wp/tests/wp_plugin/sequence.i.0.report.json
@@ -1,119 +1,99 @@
 { "wp:global": { "alt-ergo": { "total": 14, "valid": 14, "rank": 13 },
                  "qed": { "total": 25, "valid": 25 },
                  "wp:main": { "total": 39, "valid": 39, "rank": 13 } },
-  "wp:functions": { "no_calls": { "no_calls_assign": { "qed": { "total": 1,
-                                                                "valid": 1 },
-                                                       "wp:main": { "total": 1,
+  "wp:functions": { "no_calls": { "no_calls_assigns": { "qed": { "total": 1,
+                                                                 "valid": 1 },
+                                                        "wp:main": { "total": 1,
                                                                     "valid": 1 } },
-                                  "no_calls_post_ok_bug_why3_n6_ok": 
+                                  "no_calls_ensures_ok_bug_why3_n6_ok": 
                                     { "qed": { "total": 1, "valid": 1 },
                                       "wp:main": { "total": 1, "valid": 1 } },
-                                  "no_calls_post_ok_bug_why3_n5_ok": 
+                                  "no_calls_ensures_ok_bug_why3_n5_ok": 
                                     { "alt-ergo": { "total": 1, "valid": 1,
                                                     "rank": 2 },
                                       "wp:main": { "total": 1, "valid": 1,
                                                    "rank": 2 } },
-                                  "no_calls_post_ok_bug_why3_n6": { "qed": 
-                                                                    { "total": 1,
-                                                                    "valid": 1 },
-                                                                    "wp:main": 
-                                                                    { "total": 1,
-                                                                    "valid": 1 } },
-                                  "no_calls_post_ok_bug_why3_n5": { "alt-ergo": 
-                                                                    { "total": 1,
-                                                                    "valid": 1,
-                                                                    "rank": 2 },
-                                                                    "wp:main": 
-                                                                    { "total": 1,
-                                                                    "valid": 1,
-                                                                    "rank": 2 } },
-                                  "no_calls_post_ok_n3": { "alt-ergo": 
-                                                             { "total": 1,
-                                                               "valid": 1,
-                                                               "rank": 1 },
-                                                           "wp:main": 
-                                                             { "total": 1,
-                                                               "valid": 1,
-                                                               "rank": 1 } },
-                                  "no_calls_post_ok_n2": { "alt-ergo": 
-                                                             { "total": 1,
-                                                               "valid": 1,
-                                                               "rank": 1 },
-                                                           "wp:main": 
-                                                             { "total": 1,
-                                                               "valid": 1,
-                                                               "rank": 1 } },
-                                  "no_calls_post_ok_bug_why3_n1": { "qed": 
-                                                                    { "total": 1,
-                                                                    "valid": 1 },
-                                                                    "wp:main": 
-                                                                    { "total": 1,
-                                                                    "valid": 1 } },
-                                  "no_calls_post_ok_m2": { "alt-ergo": 
-                                                             { "total": 1,
-                                                               "valid": 1,
-                                                               "rank": 1 },
-                                                           "wp:main": 
-                                                             { "total": 1,
-                                                               "valid": 1,
-                                                               "rank": 1 } },
-                                  "no_calls_post_ok_m1": { "qed": { "total": 1,
-                                                                    "valid": 1 },
-                                                           "wp:main": 
-                                                             { "total": 1,
-                                                               "valid": 1 } },
+                                  "no_calls_ensures_ok_bug_why3_n6": 
+                                    { "qed": { "total": 1, "valid": 1 },
+                                      "wp:main": { "total": 1, "valid": 1 } },
+                                  "no_calls_ensures_ok_bug_why3_n5": 
+                                    { "alt-ergo": { "total": 1, "valid": 1,
+                                                    "rank": 3 },
+                                      "wp:main": { "total": 1, "valid": 1,
+                                                   "rank": 3 } },
+                                  "no_calls_ensures_ok_n3": { "alt-ergo": 
+                                                                { "total": 1,
+                                                                  "valid": 1,
+                                                                  "rank": 1 },
+                                                              "wp:main": 
+                                                                { "total": 1,
+                                                                  "valid": 1,
+                                                                  "rank": 1 } },
+                                  "no_calls_ensures_ok_n2": { "alt-ergo": 
+                                                                { "total": 1,
+                                                                  "valid": 1,
+                                                                  "rank": 1 },
+                                                              "wp:main": 
+                                                                { "total": 1,
+                                                                  "valid": 1,
+                                                                  "rank": 1 } },
+                                  "no_calls_ensures_ok_bug_why3_n1": 
+                                    { "qed": { "total": 1, "valid": 1 },
+                                      "wp:main": { "total": 1, "valid": 1 } },
+                                  "no_calls_ensures_ok_m2": { "alt-ergo": 
+                                                                { "total": 1,
+                                                                  "valid": 1,
+                                                                  "rank": 1 },
+                                                              "wp:main": 
+                                                                { "total": 1,
+                                                                  "valid": 1,
+                                                                  "rank": 1 } },
+                                  "no_calls_ensures_ok_m1": { "qed": 
+                                                                { "total": 1,
+                                                                  "valid": 1 },
+                                                              "wp:main": 
+                                                                { "total": 1,
+                                                                  "valid": 1 } },
                                   "wp:section": { "alt-ergo": { "total": 5,
                                                                 "valid": 5,
-                                                                "rank": 2 },
+                                                                "rank": 3 },
                                                   "qed": { "total": 5,
                                                            "valid": 5 },
                                                   "wp:main": { "total": 10,
                                                                "valid": 10,
-                                                               "rank": 2 } } },
-                    "sequence": { "sequence_assign": { "qed": { "total": 2,
-                                                                "valid": 2 },
-                                                       "wp:main": { "total": 2,
+                                                               "rank": 3 } } },
+                    "sequence": { "sequence_assigns": { "qed": { "total": 2,
+                                                                 "valid": 2 },
+                                                        "wp:main": { "total": 2,
                                                                     "valid": 2 } },
-                                  "sequence_g_not_called_post_ok_q3": 
+                                  "sequence_g_not_called_ensures_ok_q3": 
                                     { "alt-ergo": { "total": 1, "valid": 1,
                                                     "rank": 3 },
                                       "wp:main": { "total": 1, "valid": 1,
                                                    "rank": 3 } },
-                                  "sequence_g_not_called_post_ok_q2": 
+                                  "sequence_g_not_called_ensures_ok_q2": 
                                     { "qed": { "total": 1, "valid": 1 },
                                       "wp:main": { "total": 1, "valid": 1 } },
-                                  "sequence_g_not_called_post_ok_q1": 
+                                  "sequence_g_not_called_ensures_ok_q1": 
                                     { "qed": { "total": 1, "valid": 1 },
                                       "wp:main": { "total": 1, "valid": 1 } },
-                                  "sequence_g_not_called_post_ok_o2": 
+                                  "sequence_g_not_called_ensures_ok_o2": 
+                                    { "qed": { "total": 1, "valid": 1 },
+                                      "wp:main": { "total": 1, "valid": 1 } },
+                                  "sequence_g_called_ensures_ok_p3": 
+                                    { "alt-ergo": { "total": 1, "valid": 1,
+                                                    "rank": 4 },
+                                      "wp:main": { "total": 1, "valid": 1,
+                                                   "rank": 4 } },
+                                  "sequence_g_called_ensures_ok_p2": 
+                                    { "qed": { "total": 1, "valid": 1 },
+                                      "wp:main": { "total": 1, "valid": 1 } },
+                                  "sequence_g_called_ensures_ok_p1": 
+                                    { "qed": { "total": 1, "valid": 1 },
+                                      "wp:main": { "total": 1, "valid": 1 } },
+                                  "sequence_g_called_ensures_ok_o1": 
                                     { "qed": { "total": 1, "valid": 1 },
                                       "wp:main": { "total": 1, "valid": 1 } },
-                                  "sequence_g_called_post_ok_p3": { "alt-ergo": 
-                                                                    { "total": 1,
-                                                                    "valid": 1,
-                                                                    "rank": 4 },
-                                                                    "wp:main": 
-                                                                    { "total": 1,
-                                                                    "valid": 1,
-                                                                    "rank": 4 } },
-                                  "sequence_g_called_post_ok_p2": { "qed": 
-                                                                    { "total": 1,
-                                                                    "valid": 1 },
-                                                                    "wp:main": 
-                                                                    { "total": 1,
-                                                                    "valid": 1 } },
-                                  "sequence_g_called_post_ok_p1": { "qed": 
-                                                                    { "total": 1,
-                                                                    "valid": 1 },
-                                                                    "wp:main": 
-                                                                    { "total": 1,
-                                                                    "valid": 1 } },
-                                  "sequence_g_called_post_ok_o1": { "qed": 
-                                                                    { "total": 1,
-                                                                    "valid": 1 },
-                                                                    "wp:main": 
-                                                                    { "total": 1,
-                                                                    "valid": 1 } },
                                   "wp:section": { "alt-ergo": { "total": 2,
                                                                 "valid": 2,
                                                                 "rank": 4 },
@@ -122,84 +102,90 @@
                                                   "wp:main": { "total": 10,
                                                                "valid": 10,
                                                                "rank": 4 } } },
-                    "loops": { "loops_loop_inv_ok_inv": { "alt-ergo": 
-                                                            { "total": 1,
-                                                              "valid": 1,
-                                                              "rank": 13 },
-                                                          "qed": { "total": 1,
-                                                                   "valid": 1 },
-                                                          "wp:main": 
-                                                            { "total": 2,
-                                                              "valid": 2,
-                                                              "rank": 13 } },
-                               "loops_loop_inv_ok_id_max": { "alt-ergo": 
-                                                               { "total": 1,
-                                                                 "valid": 1,
-                                                                 "rank": 4 },
-                                                             "qed": { "total": 1,
+                    "loops": { "loops_loop_invariant_ok_inv": { "alt-ergo": 
+                                                                  { "total": 1,
+                                                                    "valid": 1,
+                                                                    "rank": 13 },
+                                                                "qed": 
+                                                                  { "total": 1,
                                                                     "valid": 1 },
-                                                             "wp:main": 
-                                                               { "total": 2,
-                                                                 "valid": 2,
-                                                                 "rank": 4 } },
-                               "loops_loop_inv_ok_id_min": { "alt-ergo": 
-                                                               { "total": 1,
-                                                                 "valid": 1,
-                                                                 "rank": 4 },
-                                                             "qed": { "total": 1,
+                                                                "wp:main": 
+                                                                  { "total": 2,
+                                                                    "valid": 2,
+                                                                    "rank": 13 } },
+                               "loops_loop_invariant_ok_id_max": { "alt-ergo": 
+                                                                    { "total": 1,
+                                                                    "valid": 1,
+                                                                    "rank": 4 },
+                                                                   "qed": 
+                                                                    { "total": 1,
+                                                                    "valid": 1 },
+                                                                   "wp:main": 
+                                                                    { "total": 2,
+                                                                    "valid": 2,
+                                                                    "rank": 4 } },
+                               "loops_loop_invariant_ok_id_min": { "alt-ergo": 
+                                                                    { "total": 1,
+                                                                    "valid": 1,
+                                                                    "rank": 4 },
+                                                                   "qed": 
+                                                                    { "total": 1,
                                                                     "valid": 1 },
-                                                             "wp:main": 
-                                                               { "total": 2,
-                                                                 "valid": 2,
-                                                                 "rank": 4 } },
-                               "loops_assign": { "qed": { "total": 6,
-                                                          "valid": 6 },
-                                                 "wp:main": { "total": 6,
-                                                              "valid": 6 } },
-                               "loops_loop_assign": { "qed": { "total": 1,
-                                                               "valid": 1 },
-                                                      "wp:main": { "total": 1,
-                                                                   "valid": 1 } },
-                               "loops_g_not_called_post_ok_v2": { "alt-ergo": 
+                                                                   "wp:main": 
+                                                                    { "total": 2,
+                                                                    "valid": 2,
+                                                                    "rank": 4 } },
+                               "loops_assigns": { "qed": { "total": 6,
+                                                           "valid": 6 },
+                                                  "wp:main": { "total": 6,
+                                                               "valid": 6 } },
+                               "loops_loop_assigns": { "qed": { "total": 1,
+                                                                "valid": 1 },
+                                                       "wp:main": { "total": 1,
+                                                                    "valid": 1 } },
+                               "loops_g_not_called_ensures_ok_v2": { "alt-ergo": 
                                                                     { "total": 1,
                                                                     "valid": 1,
                                                                     "rank": 5 },
-                                                                  "wp:main": 
+                                                                    "wp:main": 
                                                                     { "total": 1,
                                                                     "valid": 1,
                                                                     "rank": 5 } },
-                               "loops_g_not_called_post_ok_v1": { "alt-ergo": 
+                               "loops_g_not_called_ensures_ok_v1": { "alt-ergo": 
                                                                     { "total": 1,
                                                                     "valid": 1,
                                                                     "rank": 13 },
-                                                                  "wp:main": 
+                                                                    "wp:main": 
                                                                     { "total": 1,
                                                                     "valid": 1,
                                                                     "rank": 13 } },
-                               "loops_g_called_post_ok_u2": { "qed": 
-                                                                { "total": 1,
-                                                                  "valid": 1 },
-                                                              "wp:main": 
-                                                                { "total": 1,
-                                                                  "valid": 1 } },
-                               "loops_g_called_post_ok_u1": { "alt-ergo": 
-                                                                { "total": 1,
-                                                                  "valid": 1,
-                                                                  "rank": 11 },
-                                                              "wp:main": 
-                                                                { "total": 1,
-                                                                  "valid": 1,
-                                                                  "rank": 11 } },
-                               "loops_post_ok_last": { "alt-ergo": { "total": 1,
+                               "loops_g_called_ensures_ok_u2": { "qed": 
+                                                                   { "total": 1,
+                                                                    "valid": 1 },
+                                                                 "wp:main": 
+                                                                   { "total": 1,
+                                                                    "valid": 1 } },
+                               "loops_g_called_ensures_ok_u1": { "alt-ergo": 
+                                                                   { "total": 1,
                                                                     "valid": 1,
-                                                                    "rank": 12 },
-                                                       "wp:main": { "total": 1,
+                                                                    "rank": 11 },
+                                                                 "wp:main": 
+                                                                   { "total": 1,
                                                                     "valid": 1,
-                                                                    "rank": 12 } },
-                               "loops_post_ok_first": { "qed": { "total": 1,
-                                                                 "valid": 1 },
-                                                        "wp:main": { "total": 1,
-                                                                    "valid": 1 } },
+                                                                    "rank": 11 } },
+                               "loops_ensures_ok_last": { "alt-ergo": 
+                                                            { "total": 1,
+                                                              "valid": 1,
+                                                              "rank": 12 },
+                                                          "wp:main": 
+                                                            { "total": 1,
+                                                              "valid": 1,
+                                                              "rank": 12 } },
+                               "loops_ensures_ok_first": { "qed": { "total": 1,
+                                                                    "valid": 1 },
+                                                           "wp:main": 
+                                                             { "total": 1,
+                                                               "valid": 1 } },
                                "wp:section": { "alt-ergo": { "total": 7,
                                                              "valid": 7,
                                                              "rank": 13 },
diff --git a/src/plugins/wp/tests/wp_plugin/sequence.i.1.report.json b/src/plugins/wp/tests/wp_plugin/sequence.i.1.report.json
index 2ccebef6433af46638e3b7a1ac76a65a4b166ef4..6bc196531e7db3fa49259a7199057378abf93923 100644
--- a/src/plugins/wp/tests/wp_plugin/sequence.i.1.report.json
+++ b/src/plugins/wp/tests/wp_plugin/sequence.i.1.report.json
@@ -1,151 +1,146 @@
 { "wp:global": { "why3:alt-ergo": { "total": 12, "valid": 12 },
                  "qed": { "total": 22, "valid": 22 },
                  "wp:main": { "total": 34, "valid": 34 } },
-  "wp:functions": { "no_calls": { "no_calls_assign": { "qed": { "total": 1,
-                                                                "valid": 1 },
-                                                       "wp:main": { "total": 1,
+  "wp:functions": { "no_calls": { "no_calls_assigns": { "qed": { "total": 1,
+                                                                 "valid": 1 },
+                                                        "wp:main": { "total": 1,
                                                                     "valid": 1 } },
-                                  "no_calls_post_ok_n3": { "why3:alt-ergo": 
-                                                             { "total": 1,
-                                                               "valid": 1 },
-                                                           "wp:main": 
-                                                             { "total": 1,
-                                                               "valid": 1 } },
-                                  "no_calls_post_ok_n2": { "why3:alt-ergo": 
-                                                             { "total": 1,
-                                                               "valid": 1 },
-                                                           "wp:main": 
-                                                             { "total": 1,
-                                                               "valid": 1 } },
-                                  "no_calls_post_ok_m2": { "why3:alt-ergo": 
-                                                             { "total": 1,
-                                                               "valid": 1 },
-                                                           "wp:main": 
-                                                             { "total": 1,
-                                                               "valid": 1 } },
-                                  "no_calls_post_ok_m1": { "qed": { "total": 1,
-                                                                    "valid": 1 },
-                                                           "wp:main": 
-                                                             { "total": 1,
-                                                               "valid": 1 } },
+                                  "no_calls_ensures_ok_n3": { "why3:alt-ergo": 
+                                                                { "total": 1,
+                                                                  "valid": 1 },
+                                                              "wp:main": 
+                                                                { "total": 1,
+                                                                  "valid": 1 } },
+                                  "no_calls_ensures_ok_n2": { "why3:alt-ergo": 
+                                                                { "total": 1,
+                                                                  "valid": 1 },
+                                                              "wp:main": 
+                                                                { "total": 1,
+                                                                  "valid": 1 } },
+                                  "no_calls_ensures_ok_m2": { "why3:alt-ergo": 
+                                                                { "total": 1,
+                                                                  "valid": 1 },
+                                                              "wp:main": 
+                                                                { "total": 1,
+                                                                  "valid": 1 } },
+                                  "no_calls_ensures_ok_m1": { "qed": 
+                                                                { "total": 1,
+                                                                  "valid": 1 },
+                                                              "wp:main": 
+                                                                { "total": 1,
+                                                                  "valid": 1 } },
                                   "wp:section": { "why3:alt-ergo": { "total": 3,
                                                                     "valid": 3 },
                                                   "qed": { "total": 2,
                                                            "valid": 2 },
                                                   "wp:main": { "total": 5,
                                                                "valid": 5 } } },
-                    "sequence": { "sequence_assign": { "qed": { "total": 2,
-                                                                "valid": 2 },
-                                                       "wp:main": { "total": 2,
+                    "sequence": { "sequence_assigns": { "qed": { "total": 2,
+                                                                 "valid": 2 },
+                                                        "wp:main": { "total": 2,
                                                                     "valid": 2 } },
-                                  "sequence_g_not_called_post_ok_q3": 
+                                  "sequence_g_not_called_ensures_ok_q3": 
                                     { "why3:alt-ergo": { "total": 1,
                                                          "valid": 1 },
                                       "wp:main": { "total": 1, "valid": 1 } },
-                                  "sequence_g_not_called_post_ok_q2": 
+                                  "sequence_g_not_called_ensures_ok_q2": 
                                     { "qed": { "total": 1, "valid": 1 },
                                       "wp:main": { "total": 1, "valid": 1 } },
-                                  "sequence_g_not_called_post_ok_q1": 
+                                  "sequence_g_not_called_ensures_ok_q1": 
                                     { "qed": { "total": 1, "valid": 1 },
                                       "wp:main": { "total": 1, "valid": 1 } },
-                                  "sequence_g_not_called_post_ok_o2": 
+                                  "sequence_g_not_called_ensures_ok_o2": 
                                     { "qed": { "total": 1, "valid": 1 },
                                       "wp:main": { "total": 1, "valid": 1 } },
-                                  "sequence_g_called_post_ok_p3": { "why3:alt-ergo": 
+                                  "sequence_g_called_ensures_ok_p3": 
+                                    { "why3:alt-ergo": { "total": 1,
+                                                         "valid": 1 },
+                                      "wp:main": { "total": 1, "valid": 1 } },
+                                  "sequence_g_called_ensures_ok_p2": 
+                                    { "qed": { "total": 1, "valid": 1 },
+                                      "wp:main": { "total": 1, "valid": 1 } },
+                                  "sequence_g_called_ensures_ok_p1": 
+                                    { "qed": { "total": 1, "valid": 1 },
+                                      "wp:main": { "total": 1, "valid": 1 } },
+                                  "sequence_g_called_ensures_ok_o1": 
+                                    { "qed": { "total": 1, "valid": 1 },
+                                      "wp:main": { "total": 1, "valid": 1 } },
+                                  "wp:section": { "why3:alt-ergo": { "total": 2,
+                                                                    "valid": 2 },
+                                                  "qed": { "total": 8,
+                                                           "valid": 8 },
+                                                  "wp:main": { "total": 10,
+                                                               "valid": 10 } } },
+                    "loops": { "loops_loop_invariant_ok_inv": { "why3:alt-ergo": 
+                                                                  { "total": 1,
+                                                                    "valid": 1 },
+                                                                "qed": 
+                                                                  { "total": 1,
+                                                                    "valid": 1 },
+                                                                "wp:main": 
+                                                                  { "total": 2,
+                                                                    "valid": 2 } },
+                               "loops_loop_invariant_ok_id_max": { "why3:alt-ergo": 
                                                                     { "total": 1,
                                                                     "valid": 1 },
-                                                                    "wp:main": 
+                                                                   "qed": 
                                                                     { "total": 1,
-                                                                    "valid": 1 } },
-                                  "sequence_g_called_post_ok_p2": { "qed": 
+                                                                    "valid": 1 },
+                                                                   "wp:main": 
+                                                                    { "total": 2,
+                                                                    "valid": 2 } },
+                               "loops_loop_invariant_ok_id_min": { "why3:alt-ergo": 
                                                                     { "total": 1,
                                                                     "valid": 1 },
-                                                                    "wp:main": 
+                                                                   "qed": 
                                                                     { "total": 1,
+                                                                    "valid": 1 },
+                                                                   "wp:main": 
+                                                                    { "total": 2,
+                                                                    "valid": 2 } },
+                               "loops_assigns": { "qed": { "total": 6,
+                                                           "valid": 6 },
+                                                  "wp:main": { "total": 6,
+                                                               "valid": 6 } },
+                               "loops_loop_assigns": { "qed": { "total": 1,
+                                                                "valid": 1 },
+                                                       "wp:main": { "total": 1,
                                                                     "valid": 1 } },
-                                  "sequence_g_called_post_ok_p1": { "qed": 
+                               "loops_g_not_called_ensures_ok_v2": { "why3:alt-ergo": 
                                                                     { "total": 1,
                                                                     "valid": 1 },
                                                                     "wp:main": 
                                                                     { "total": 1,
                                                                     "valid": 1 } },
-                                  "sequence_g_called_post_ok_o1": { "qed": 
+                               "loops_g_not_called_ensures_ok_v1": { "why3:alt-ergo": 
                                                                     { "total": 1,
                                                                     "valid": 1 },
                                                                     "wp:main": 
                                                                     { "total": 1,
                                                                     "valid": 1 } },
-                                  "wp:section": { "why3:alt-ergo": { "total": 2,
-                                                                    "valid": 2 },
-                                                  "qed": { "total": 8,
-                                                           "valid": 8 },
-                                                  "wp:main": { "total": 10,
-                                                               "valid": 10 } } },
-                    "loops": { "loops_loop_inv_ok_inv": { "why3:alt-ergo": 
-                                                            { "total": 1,
-                                                              "valid": 1 },
-                                                          "qed": { "total": 1,
-                                                                   "valid": 1 },
-                                                          "wp:main": 
-                                                            { "total": 2,
-                                                              "valid": 2 } },
-                               "loops_loop_inv_ok_id_max": { "why3:alt-ergo": 
-                                                               { "total": 1,
-                                                                 "valid": 1 },
-                                                             "qed": { "total": 1,
-                                                                    "valid": 1 },
-                                                             "wp:main": 
-                                                               { "total": 2,
-                                                                 "valid": 2 } },
-                               "loops_loop_inv_ok_id_min": { "why3:alt-ergo": 
-                                                               { "total": 1,
-                                                                 "valid": 1 },
-                                                             "qed": { "total": 1,
-                                                                    "valid": 1 },
-                                                             "wp:main": 
-                                                               { "total": 2,
-                                                                 "valid": 2 } },
-                               "loops_assign": { "qed": { "total": 6,
-                                                          "valid": 6 },
-                                                 "wp:main": { "total": 6,
-                                                              "valid": 6 } },
-                               "loops_loop_assign": { "qed": { "total": 1,
-                                                               "valid": 1 },
-                                                      "wp:main": { "total": 1,
-                                                                   "valid": 1 } },
-                               "loops_g_not_called_post_ok_v2": { "why3:alt-ergo": 
-                                                                    { "total": 1,
+                               "loops_g_called_ensures_ok_u2": { "qed": 
+                                                                   { "total": 1,
                                                                     "valid": 1 },
-                                                                  "wp:main": 
-                                                                    { "total": 1,
+                                                                 "wp:main": 
+                                                                   { "total": 1,
                                                                     "valid": 1 } },
-                               "loops_g_not_called_post_ok_v1": { "why3:alt-ergo": 
-                                                                    { "total": 1,
+                               "loops_g_called_ensures_ok_u1": { "why3:alt-ergo": 
+                                                                   { "total": 1,
                                                                     "valid": 1 },
-                                                                  "wp:main": 
-                                                                    { "total": 1,
-                                                                    "valid": 1 } },
-                               "loops_g_called_post_ok_u2": { "qed": 
-                                                                { "total": 1,
-                                                                  "valid": 1 },
-                                                              "wp:main": 
-                                                                { "total": 1,
-                                                                  "valid": 1 } },
-                               "loops_g_called_post_ok_u1": { "why3:alt-ergo": 
-                                                                { "total": 1,
-                                                                  "valid": 1 },
-                                                              "wp:main": 
-                                                                { "total": 1,
-                                                                  "valid": 1 } },
-                               "loops_post_ok_last": { "why3:alt-ergo": 
-                                                         { "total": 1,
-                                                           "valid": 1 },
-                                                       "wp:main": { "total": 1,
-                                                                    "valid": 1 } },
-                               "loops_post_ok_first": { "qed": { "total": 1,
-                                                                 "valid": 1 },
-                                                        "wp:main": { "total": 1,
+                                                                 "wp:main": 
+                                                                   { "total": 1,
                                                                     "valid": 1 } },
+                               "loops_ensures_ok_last": { "why3:alt-ergo": 
+                                                            { "total": 1,
+                                                              "valid": 1 },
+                                                          "wp:main": 
+                                                            { "total": 1,
+                                                              "valid": 1 } },
+                               "loops_ensures_ok_first": { "qed": { "total": 1,
+                                                                    "valid": 1 },
+                                                           "wp:main": 
+                                                             { "total": 1,
+                                                               "valid": 1 } },
                                "wp:section": { "why3:alt-ergo": { "total": 7,
                                                                   "valid": 7 },
                                                "qed": { "total": 12,
diff --git a/src/plugins/wp/tests/wp_plugin/stmt.c.0.report.json b/src/plugins/wp/tests/wp_plugin/stmt.c.0.report.json
index e6d8869043e24351111a710d430f3358203e6482..3031787356bdaecf2c9a3d976bfc3b2182a0f737 100644
--- a/src/plugins/wp/tests/wp_plugin/stmt.c.0.report.json
+++ b/src/plugins/wp/tests/wp_plugin/stmt.c.0.report.json
@@ -3,37 +3,39 @@
   "wp:functions": { "f": { "f_assert": { "qed": { "total": 1, "valid": 1 },
                                          "wp:main": { "total": 1,
                                                       "valid": 1 } },
-                           "f_stmt_assign": { "qed": { "total": 1,
-                                                       "valid": 1 },
-                                              "wp:main": { "total": 1,
-                                                           "valid": 1 } },
-                           "f_stmt_post": { "qed": { "total": 1, "valid": 1 },
+                           "f_assigns": { "qed": { "total": 1, "valid": 1 },
+                                          "wp:main": { "total": 1,
+                                                       "valid": 1 } },
+                           "f_ensures_3": { "qed": { "total": 1, "valid": 1 },
                                             "wp:main": { "total": 1,
                                                          "valid": 1 } },
-                           "f_post_2": { "qed": { "total": 1, "valid": 1 },
-                                         "wp:main": { "total": 1,
-                                                      "valid": 1 } },
-                           "f_post": { "qed": { "total": 1, "valid": 1 },
-                                       "wp:main": { "total": 1, "valid": 1 } },
+                           "f_ensures_2": { "qed": { "total": 1, "valid": 1 },
+                                            "wp:main": { "total": 1,
+                                                         "valid": 1 } },
+                           "f_ensures": { "qed": { "total": 1, "valid": 1 },
+                                          "wp:main": { "total": 1,
+                                                       "valid": 1 } },
                            "wp:section": { "qed": { "total": 5, "valid": 5 },
                                            "wp:main": { "total": 5,
                                                         "valid": 5 } } },
                     "g": { "g_assert": { "qed": { "total": 1, "valid": 1 },
                                          "wp:main": { "total": 1,
                                                       "valid": 1 } },
-                           "g_post": { "qed": { "total": 1, "valid": 1 },
-                                       "wp:main": { "total": 1, "valid": 1 } },
+                           "g_ensures": { "qed": { "total": 1, "valid": 1 },
+                                          "wp:main": { "total": 1,
+                                                       "valid": 1 } },
                            "wp:section": { "qed": { "total": 2, "valid": 2 },
                                            "wp:main": { "total": 2,
                                                         "valid": 2 } } },
-                    "h": { "h_assert": { "qed": { "total": 1, "valid": 1 },
-                                         "wp:main": { "total": 1,
-                                                      "valid": 1 } },
-                           "h_assert_2": { "qed": { "total": 1, "valid": 1 },
+                    "h": { "h_assert_2": { "qed": { "total": 1, "valid": 1 },
                                            "wp:main": { "total": 1,
                                                         "valid": 1 } },
-                           "h_post": { "qed": { "total": 1, "valid": 1 },
-                                       "wp:main": { "total": 1, "valid": 1 } },
+                           "h_assert": { "qed": { "total": 1, "valid": 1 },
+                                         "wp:main": { "total": 1,
+                                                      "valid": 1 } },
+                           "h_ensures": { "qed": { "total": 1, "valid": 1 },
+                                          "wp:main": { "total": 1,
+                                                       "valid": 1 } },
                            "wp:section": { "qed": { "total": 3, "valid": 3 },
                                            "wp:main": { "total": 3,
                                                         "valid": 3 } } } } }
diff --git a/src/plugins/wp/tests/wp_plugin/string_c.c.0.report.json b/src/plugins/wp/tests/wp_plugin/string_c.c.0.report.json
index a4d745460b88f693b10e7b28968614fc8fe5225a..c36b874055fa6135a97ad7aadb2b4b37f77cca50 100644
--- a/src/plugins/wp/tests/wp_plugin/string_c.c.0.report.json
+++ b/src/plugins/wp/tests/wp_plugin/string_c.c.0.report.json
@@ -1,56 +1,59 @@
 { "wp:global": { "alt-ergo": { "total": 21, "valid": 21, "rank": 81 },
                  "qed": { "total": 23, "valid": 23 },
                  "wp:main": { "total": 44, "valid": 44, "rank": 81 } },
-  "wp:functions": { "memcpy": { "memcpy_loop_inv_no_eva_2": { "alt-ergo": 
-                                                                { "total": 1,
-                                                                  "valid": 1,
-                                                                  "rank": 62 },
-                                                              "qed": 
-                                                                { "total": 1,
-                                                                  "valid": 1 },
-                                                              "wp:main": 
-                                                                { "total": 2,
-                                                                  "valid": 2,
-                                                                  "rank": 62 } },
-                                "memcpy_loop_inv_no_eva": { "alt-ergo": 
-                                                              { "total": 2,
-                                                                "valid": 2,
-                                                                "rank": 16 },
-                                                            "wp:main": 
-                                                              { "total": 2,
-                                                                "valid": 2,
-                                                                "rank": 16 } },
-                                "memcpy_loop_term": { "alt-ergo": { "total": 1,
-                                                                    "valid": 1,
-                                                                    "rank": 16 },
-                                                      "qed": { "total": 1,
-                                                               "valid": 1 },
-                                                      "wp:main": { "total": 2,
-                                                                   "valid": 2,
-                                                                   "rank": 16 } },
-                                "memcpy_assign": { "qed": { "total": 1,
-                                                            "valid": 1 },
-                                                   "wp:main": { "total": 1,
-                                                                "valid": 1 } },
-                                "memcpy_loop_assign": { "alt-ergo": { "total": 1,
+  "wp:functions": { "memcpy": { "memcpy_loop_invariant_no_eva_2": { "alt-ergo": 
+                                                                    { "total": 1,
                                                                     "valid": 1,
-                                                                    "rank": 40 },
-                                                        "qed": { "total": 2,
-                                                                 "valid": 2 },
-                                                        "wp:main": { "total": 3,
+                                                                    "rank": 62 },
+                                                                    "qed": 
+                                                                    { "total": 1,
+                                                                    "valid": 1 },
+                                                                    "wp:main": 
+                                                                    { "total": 2,
+                                                                    "valid": 2,
+                                                                    "rank": 62 } },
+                                "memcpy_loop_invariant_no_eva": { "alt-ergo": 
+                                                                    { "total": 2,
+                                                                    "valid": 2,
+                                                                    "rank": 17 },
+                                                                  "wp:main": 
+                                                                    { "total": 2,
+                                                                    "valid": 2,
+                                                                    "rank": 17 } },
+                                "memcpy_loop_variant": { "alt-ergo": 
+                                                           { "total": 1,
+                                                             "valid": 1,
+                                                             "rank": 17 },
+                                                         "qed": { "total": 1,
+                                                                  "valid": 1 },
+                                                         "wp:main": { "total": 2,
+                                                                    "valid": 2,
+                                                                    "rank": 17 } },
+                                "memcpy_assigns": { "qed": { "total": 1,
+                                                             "valid": 1 },
+                                                    "wp:main": { "total": 1,
+                                                                 "valid": 1 } },
+                                "memcpy_loop_assigns": { "alt-ergo": 
+                                                           { "total": 1,
+                                                             "valid": 1,
+                                                             "rank": 40 },
+                                                         "qed": { "total": 2,
+                                                                  "valid": 2 },
+                                                         "wp:main": { "total": 3,
                                                                     "valid": 3,
                                                                     "rank": 40 } },
-                                "memcpy_post_result_ptr": { "qed": { "total": 1,
-                                                                    "valid": 1 },
-                                                            "wp:main": 
-                                                              { "total": 1,
-                                                                "valid": 1 } },
-                                "memcpy_post_copied_contents": { "alt-ergo": 
-                                                                   { "total": 1,
+                                "memcpy_ensures_result_ptr": { "qed": 
+                                                                 { "total": 1,
+                                                                   "valid": 1 },
+                                                               "wp:main": 
+                                                                 { "total": 1,
+                                                                   "valid": 1 } },
+                                "memcpy_ensures_copied_contents": { "alt-ergo": 
+                                                                    { "total": 1,
                                                                     "valid": 1,
                                                                     "rank": 48 },
-                                                                 "wp:main": 
-                                                                   { "total": 1,
+                                                                    "wp:main": 
+                                                                    { "total": 1,
                                                                     "valid": 1,
                                                                     "rank": 48 } },
                                 "wp:section": { "alt-ergo": { "total": 6,
@@ -61,120 +64,122 @@
                                                 "wp:main": { "total": 12,
                                                              "valid": 12,
                                                              "rank": 62 } } },
-                    "memmove": { "memmove_loop_inv_no_eva_6": { "alt-ergo": 
-                                                                  { "total": 1,
+                    "memmove": { "memmove_loop_invariant_no_eva_6": { "alt-ergo": 
+                                                                    { "total": 1,
                                                                     "valid": 1,
                                                                     "rank": 54 },
-                                                                "qed": 
-                                                                  { "total": 1,
+                                                                    "qed": 
+                                                                    { "total": 1,
                                                                     "valid": 1 },
-                                                                "wp:main": 
-                                                                  { "total": 2,
+                                                                    "wp:main": 
+                                                                    { "total": 2,
                                                                     "valid": 2,
                                                                     "rank": 54 } },
-                                 "memmove_loop_inv_no_eva_5": { "alt-ergo": 
-                                                                  { "total": 2,
+                                 "memmove_loop_invariant_no_eva_5": { "alt-ergo": 
+                                                                    { "total": 2,
                                                                     "valid": 2,
                                                                     "rank": 39 },
-                                                                "wp:main": 
-                                                                  { "total": 2,
+                                                                    "wp:main": 
+                                                                    { "total": 2,
                                                                     "valid": 2,
                                                                     "rank": 39 } },
-                                 "memmove_loop_inv_no_eva_4": { "alt-ergo": 
-                                                                  { "total": 2,
+                                 "memmove_loop_invariant_no_eva_4": { "alt-ergo": 
+                                                                    { "total": 2,
                                                                     "valid": 2,
                                                                     "rank": 18 },
-                                                                "wp:main": 
-                                                                  { "total": 2,
+                                                                    "wp:main": 
+                                                                    { "total": 2,
                                                                     "valid": 2,
                                                                     "rank": 18 } },
-                                 "memmove_loop_inv_no_eva_3": { "alt-ergo": 
-                                                                  { "total": 1,
+                                 "memmove_loop_invariant_no_eva_3": { "alt-ergo": 
+                                                                    { "total": 1,
                                                                     "valid": 1,
-                                                                    "rank": 81 },
-                                                                "qed": 
-                                                                  { "total": 1,
+                                                                    "rank": 82 },
+                                                                    "qed": 
+                                                                    { "total": 1,
                                                                     "valid": 1 },
-                                                                "wp:main": 
-                                                                  { "total": 2,
+                                                                    "wp:main": 
+                                                                    { "total": 2,
                                                                     "valid": 2,
-                                                                    "rank": 81 } },
-                                 "memmove_loop_inv_no_eva_2": { "alt-ergo": 
-                                                                  { "total": 1,
+                                                                    "rank": 82 } },
+                                 "memmove_loop_invariant_no_eva_2": { "alt-ergo": 
+                                                                    { "total": 1,
                                                                     "valid": 1,
                                                                     "rank": 38 },
-                                                                "qed": 
-                                                                  { "total": 1,
+                                                                    "qed": 
+                                                                    { "total": 1,
                                                                     "valid": 1 },
-                                                                "wp:main": 
-                                                                  { "total": 2,
+                                                                    "wp:main": 
+                                                                    { "total": 2,
                                                                     "valid": 2,
                                                                     "rank": 38 } },
-                                 "memmove_loop_inv_no_eva": { "alt-ergo": 
-                                                                { "total": 2,
-                                                                  "valid": 2,
-                                                                  "rank": 18 },
-                                                              "wp:main": 
-                                                                { "total": 2,
-                                                                  "valid": 2,
-                                                                  "rank": 18 } },
-                                 "memmove_loop_term_2": { "alt-ergo": 
-                                                            { "total": 1,
-                                                              "valid": 1,
-                                                              "rank": 18 },
-                                                          "qed": { "total": 1,
-                                                                   "valid": 1 },
-                                                          "wp:main": 
-                                                            { "total": 2,
-                                                              "valid": 2,
-                                                              "rank": 18 } },
-                                 "memmove_loop_term": { "alt-ergo": { "total": 1,
-                                                                    "valid": 1,
+                                 "memmove_loop_invariant_no_eva": { "alt-ergo": 
+                                                                    { "total": 2,
+                                                                    "valid": 2,
                                                                     "rank": 18 },
-                                                        "qed": { "total": 1,
-                                                                 "valid": 1 },
-                                                        "wp:main": { "total": 2,
+                                                                    "wp:main": 
+                                                                    { "total": 2,
                                                                     "valid": 2,
                                                                     "rank": 18 } },
-                                 "memmove_assign": { "alt-ergo": { "total": 1,
-                                                                   "valid": 1,
-                                                                   "rank": 6 },
-                                                     "qed": { "total": 7,
-                                                              "valid": 7 },
-                                                     "wp:main": { "total": 8,
-                                                                  "valid": 8,
-                                                                  "rank": 6 } },
-                                 "memmove_loop_assign_2": { "alt-ergo": 
-                                                              { "total": 1,
-                                                                "valid": 1,
-                                                                "rank": 48 },
-                                                            "qed": { "total": 2,
+                                 "memmove_loop_variant_2": { "alt-ergo": 
+                                                               { "total": 1,
+                                                                 "valid": 1,
+                                                                 "rank": 18 },
+                                                             "qed": { "total": 1,
+                                                                    "valid": 1 },
+                                                             "wp:main": 
+                                                               { "total": 2,
+                                                                 "valid": 2,
+                                                                 "rank": 18 } },
+                                 "memmove_loop_variant": { "alt-ergo": 
+                                                             { "total": 1,
+                                                               "valid": 1,
+                                                               "rank": 18 },
+                                                           "qed": { "total": 1,
+                                                                    "valid": 1 },
+                                                           "wp:main": 
+                                                             { "total": 2,
+                                                               "valid": 2,
+                                                               "rank": 18 } },
+                                 "memmove_assigns": { "alt-ergo": { "total": 1,
+                                                                    "valid": 1,
+                                                                    "rank": 6 },
+                                                      "qed": { "total": 7,
+                                                               "valid": 7 },
+                                                      "wp:main": { "total": 8,
+                                                                   "valid": 8,
+                                                                   "rank": 6 } },
+                                 "memmove_loop_assigns_2": { "alt-ergo": 
+                                                               { "total": 1,
+                                                                 "valid": 1,
+                                                                 "rank": 48 },
+                                                             "qed": { "total": 2,
                                                                     "valid": 2 },
-                                                            "wp:main": 
-                                                              { "total": 3,
-                                                                "valid": 3,
-                                                                "rank": 48 } },
-                                 "memmove_loop_assign": { "alt-ergo": 
-                                                            { "total": 1,
-                                                              "valid": 1,
-                                                              "rank": 56 },
-                                                          "qed": { "total": 2,
-                                                                   "valid": 2 },
-                                                          "wp:main": 
-                                                            { "total": 3,
-                                                              "valid": 3,
-                                                              "rank": 56 } },
-                                 "memmove_post_result_ptr": { "qed": 
-                                                                { "total": 1,
-                                                                  "valid": 1 },
-                                                              "wp:main": 
-                                                                { "total": 1,
-                                                                  "valid": 1 } },
-                                 "memmove_post_copied_contents": { "alt-ergo": 
+                                                             "wp:main": 
+                                                               { "total": 3,
+                                                                 "valid": 3,
+                                                                 "rank": 48 } },
+                                 "memmove_loop_assigns": { "alt-ergo": 
+                                                             { "total": 1,
+                                                               "valid": 1,
+                                                               "rank": 57 },
+                                                           "qed": { "total": 2,
+                                                                    "valid": 2 },
+                                                           "wp:main": 
+                                                             { "total": 3,
+                                                               "valid": 3,
+                                                               "rank": 57 } },
+                                 "memmove_ensures_result_ptr": { "qed": 
+                                                                   { "total": 1,
+                                                                    "valid": 1 },
+                                                                 "wp:main": 
+                                                                   { "total": 1,
+                                                                    "valid": 1 } },
+                                 "memmove_ensures_copied_contents": { "alt-ergo": 
                                                                     { "total": 1,
                                                                     "valid": 1,
                                                                     "rank": 63 },
-                                                                   "wp:main": 
+                                                                    "wp:main": 
                                                                     { "total": 1,
                                                                     "valid": 1,
                                                                     "rank": 63 } },
diff --git a/src/plugins/wp/tests/wp_plugin/struct.i.0.report.json b/src/plugins/wp/tests/wp_plugin/struct.i.0.report.json
index 092956c8375f940c46b72b5015fdbf139b087243..43c32102c1f0e9af55d4e9e6ccf1e0cbfd0e7a2e 100644
--- a/src/plugins/wp/tests/wp_plugin/struct.i.0.report.json
+++ b/src/plugins/wp/tests/wp_plugin/struct.i.0.report.json
@@ -1,82 +1,82 @@
 { "wp:global": { "qed": { "total": 18, "valid": 18 },
                  "wp:main": { "total": 18, "valid": 18 } },
-  "wp:functions": { "id": { "id_post_qed_ok_P2": { "qed": { "total": 1,
-                                                            "valid": 1 },
-                                                   "wp:main": { "total": 1,
-                                                                "valid": 1 } },
-                            "id_post_qed_ok_P1": { "qed": { "total": 1,
-                                                            "valid": 1 },
-                                                   "wp:main": { "total": 1,
-                                                                "valid": 1 } },
+  "wp:functions": { "id": { "id_ensures_qed_ok_P2": { "qed": { "total": 1,
+                                                               "valid": 1 },
+                                                      "wp:main": { "total": 1,
+                                                                   "valid": 1 } },
+                            "id_ensures_qed_ok_P1": { "qed": { "total": 1,
+                                                               "valid": 1 },
+                                                      "wp:main": { "total": 1,
+                                                                   "valid": 1 } },
                             "wp:section": { "qed": { "total": 2, "valid": 2 },
                                             "wp:main": { "total": 2,
                                                          "valid": 2 } } },
-                    "g": { "g_assign": { "qed": { "total": 1, "valid": 1 },
-                                         "wp:main": { "total": 1,
-                                                      "valid": 1 } },
-                           "g_post_qed_ok_P5": { "qed": { "total": 1,
-                                                          "valid": 1 },
-                                                 "wp:main": { "total": 1,
-                                                              "valid": 1 } },
-                           "g_post_qed_ok_P4": { "qed": { "total": 1,
-                                                          "valid": 1 },
-                                                 "wp:main": { "total": 1,
-                                                              "valid": 1 } },
-                           "g_post_qed_ok_P3": { "qed": { "total": 1,
-                                                          "valid": 1 },
-                                                 "wp:main": { "total": 1,
-                                                              "valid": 1 } },
+                    "g": { "g_assigns": { "qed": { "total": 1, "valid": 1 },
+                                          "wp:main": { "total": 1,
+                                                       "valid": 1 } },
+                           "g_ensures_qed_ok_P5": { "qed": { "total": 1,
+                                                             "valid": 1 },
+                                                    "wp:main": { "total": 1,
+                                                                 "valid": 1 } },
+                           "g_ensures_qed_ok_P4": { "qed": { "total": 1,
+                                                             "valid": 1 },
+                                                    "wp:main": { "total": 1,
+                                                                 "valid": 1 } },
+                           "g_ensures_qed_ok_P3": { "qed": { "total": 1,
+                                                             "valid": 1 },
+                                                    "wp:main": { "total": 1,
+                                                                 "valid": 1 } },
                            "wp:section": { "qed": { "total": 4, "valid": 4 },
                                            "wp:main": { "total": 4,
                                                         "valid": 4 } } },
-                    "f": { "f_post_qed_ok_E11": { "qed": { "total": 1,
-                                                           "valid": 1 },
-                                                  "wp:main": { "total": 1,
-                                                               "valid": 1 } },
-                           "f_post_qed_ok_E10": { "qed": { "total": 1,
-                                                           "valid": 1 },
-                                                  "wp:main": { "total": 1,
-                                                               "valid": 1 } },
-                           "f_post_qed_ok_E9": { "qed": { "total": 1,
-                                                          "valid": 1 },
-                                                 "wp:main": { "total": 1,
-                                                              "valid": 1 } },
-                           "f_post_qed_ok_E8": { "qed": { "total": 1,
-                                                          "valid": 1 },
-                                                 "wp:main": { "total": 1,
-                                                              "valid": 1 } },
-                           "f_post_qed_ok_E7": { "qed": { "total": 1,
-                                                          "valid": 1 },
-                                                 "wp:main": { "total": 1,
-                                                              "valid": 1 } },
-                           "f_post_qed_ok_E6": { "qed": { "total": 1,
-                                                          "valid": 1 },
-                                                 "wp:main": { "total": 1,
-                                                              "valid": 1 } },
-                           "f_post_qed_ok_E5": { "qed": { "total": 1,
-                                                          "valid": 1 },
-                                                 "wp:main": { "total": 1,
-                                                              "valid": 1 } },
-                           "f_post_qed_ok_E4": { "qed": { "total": 1,
-                                                          "valid": 1 },
-                                                 "wp:main": { "total": 1,
-                                                              "valid": 1 } },
-                           "f_post_qed_ok_E3": { "qed": { "total": 1,
-                                                          "valid": 1 },
-                                                 "wp:main": { "total": 1,
-                                                              "valid": 1 } },
-                           "f_post_qed_ok_E2": { "qed": { "total": 1,
-                                                          "valid": 1 },
-                                                 "wp:main": { "total": 1,
-                                                              "valid": 1 } },
-                           "f_post_qed_ok_E1": { "qed": { "total": 1,
-                                                          "valid": 1 },
-                                                 "wp:main": { "total": 1,
-                                                              "valid": 1 } },
-                           "f_post_qed_ok_E0": { "qed": { "total": 1,
-                                                          "valid": 1 },
-                                                 "wp:main": { "total": 1,
-                                                              "valid": 1 } },
+                    "f": { "f_ensures_qed_ok_E11": { "qed": { "total": 1,
+                                                              "valid": 1 },
+                                                     "wp:main": { "total": 1,
+                                                                  "valid": 1 } },
+                           "f_ensures_qed_ok_E10": { "qed": { "total": 1,
+                                                              "valid": 1 },
+                                                     "wp:main": { "total": 1,
+                                                                  "valid": 1 } },
+                           "f_ensures_qed_ok_E9": { "qed": { "total": 1,
+                                                             "valid": 1 },
+                                                    "wp:main": { "total": 1,
+                                                                 "valid": 1 } },
+                           "f_ensures_qed_ok_E8": { "qed": { "total": 1,
+                                                             "valid": 1 },
+                                                    "wp:main": { "total": 1,
+                                                                 "valid": 1 } },
+                           "f_ensures_qed_ok_E7": { "qed": { "total": 1,
+                                                             "valid": 1 },
+                                                    "wp:main": { "total": 1,
+                                                                 "valid": 1 } },
+                           "f_ensures_qed_ok_E6": { "qed": { "total": 1,
+                                                             "valid": 1 },
+                                                    "wp:main": { "total": 1,
+                                                                 "valid": 1 } },
+                           "f_ensures_qed_ok_E5": { "qed": { "total": 1,
+                                                             "valid": 1 },
+                                                    "wp:main": { "total": 1,
+                                                                 "valid": 1 } },
+                           "f_ensures_qed_ok_E4": { "qed": { "total": 1,
+                                                             "valid": 1 },
+                                                    "wp:main": { "total": 1,
+                                                                 "valid": 1 } },
+                           "f_ensures_qed_ok_E3": { "qed": { "total": 1,
+                                                             "valid": 1 },
+                                                    "wp:main": { "total": 1,
+                                                                 "valid": 1 } },
+                           "f_ensures_qed_ok_E2": { "qed": { "total": 1,
+                                                             "valid": 1 },
+                                                    "wp:main": { "total": 1,
+                                                                 "valid": 1 } },
+                           "f_ensures_qed_ok_E1": { "qed": { "total": 1,
+                                                             "valid": 1 },
+                                                    "wp:main": { "total": 1,
+                                                                 "valid": 1 } },
+                           "f_ensures_qed_ok_E0": { "qed": { "total": 1,
+                                                             "valid": 1 },
+                                                    "wp:main": { "total": 1,
+                                                                 "valid": 1 } },
                            "wp:section": { "qed": { "total": 12,
                                                     "valid": 12 },
                                            "wp:main": { "total": 12,
diff --git a/src/plugins/wp/tests/wp_plugin/struct_hack.i.0.report.json b/src/plugins/wp/tests/wp_plugin/struct_hack.i.0.report.json
index dc8d720b4ff807ae874736d30e52a21d2641c07d..4523e8814247f341638ecec89a9d3168b229b2f1 100644
--- a/src/plugins/wp/tests/wp_plugin/struct_hack.i.0.report.json
+++ b/src/plugins/wp/tests/wp_plugin/struct_hack.i.0.report.json
@@ -1,49 +1,53 @@
-{ "wp:global": { "alt-ergo": { "total": 4, "valid": 4, "rank": 6 },
+{ "wp:global": { "alt-ergo": { "total": 4, "valid": 4, "rank": 7 },
                  "qed": { "total": 6, "valid": 6 },
-                 "wp:main": { "total": 10, "valid": 10, "rank": 6 } },
+                 "wp:main": { "total": 10, "valid": 10, "rank": 7 } },
   "wp:functions": { "f0": { "f0_assert_qed_ok": { "alt-ergo": { "total": 1,
                                                                 "valid": 1,
-                                                                "rank": 5 },
+                                                                "rank": 6 },
                                                   "wp:main": { "total": 1,
                                                                "valid": 1,
-                                                               "rank": 5 } },
-                            "f0_loop_inv_qed_ok": { "alt-ergo": { "total": 1,
-                                                                  "valid": 1,
-                                                                  "rank": 6 },
-                                                    "qed": { "total": 1,
-                                                             "valid": 1 },
-                                                    "wp:main": { "total": 2,
-                                                                 "valid": 2,
-                                                                 "rank": 6 } },
-                            "f0_loop_term": { "qed": { "total": 2,
-                                                       "valid": 2 },
-                                              "wp:main": { "total": 2,
-                                                           "valid": 2 } },
+                                                               "rank": 6 } },
+                            "f0_loop_invariant_qed_ok": { "alt-ergo": 
+                                                            { "total": 1,
+                                                              "valid": 1,
+                                                              "rank": 7 },
+                                                          "qed": { "total": 1,
+                                                                   "valid": 1 },
+                                                          "wp:main": 
+                                                            { "total": 2,
+                                                              "valid": 2,
+                                                              "rank": 7 } },
+                            "f0_loop_variant": { "qed": { "total": 2,
+                                                          "valid": 2 },
+                                                 "wp:main": { "total": 2,
+                                                              "valid": 2 } },
                             "wp:section": { "alt-ergo": { "total": 2,
                                                           "valid": 2,
-                                                          "rank": 6 },
+                                                          "rank": 7 },
                                             "qed": { "total": 3, "valid": 3 },
                                             "wp:main": { "total": 5,
                                                          "valid": 5,
-                                                         "rank": 6 } } },
+                                                         "rank": 7 } } },
                     "f1": { "f1_assert_qed_ok": { "alt-ergo": { "total": 1,
                                                                 "valid": 1,
-                                                                "rank": 4 },
+                                                                "rank": 5 },
                                                   "wp:main": { "total": 1,
                                                                "valid": 1,
-                                                               "rank": 4 } },
-                            "f1_loop_inv_qed_ok": { "alt-ergo": { "total": 1,
-                                                                  "valid": 1,
-                                                                  "rank": 5 },
-                                                    "qed": { "total": 1,
-                                                             "valid": 1 },
-                                                    "wp:main": { "total": 2,
-                                                                 "valid": 2,
-                                                                 "rank": 5 } },
-                            "f1_loop_term": { "qed": { "total": 2,
-                                                       "valid": 2 },
-                                              "wp:main": { "total": 2,
-                                                           "valid": 2 } },
+                                                               "rank": 5 } },
+                            "f1_loop_invariant_qed_ok": { "alt-ergo": 
+                                                            { "total": 1,
+                                                              "valid": 1,
+                                                              "rank": 5 },
+                                                          "qed": { "total": 1,
+                                                                   "valid": 1 },
+                                                          "wp:main": 
+                                                            { "total": 2,
+                                                              "valid": 2,
+                                                              "rank": 5 } },
+                            "f1_loop_variant": { "qed": { "total": 2,
+                                                          "valid": 2 },
+                                                 "wp:main": { "total": 2,
+                                                              "valid": 2 } },
                             "wp:section": { "alt-ergo": { "total": 2,
                                                           "valid": 2,
                                                           "rank": 5 },
diff --git a/src/plugins/wp/tests/wp_plugin/subset.i.0.report.json b/src/plugins/wp/tests/wp_plugin/subset.i.0.report.json
index 84b9b06872f8191626bdf6cb5d1b7d6513ac7fcf..ef1d646d8e32ce0c1919efc2786351e5bf8f3337 100644
--- a/src/plugins/wp/tests/wp_plugin/subset.i.0.report.json
+++ b/src/plugins/wp/tests/wp_plugin/subset.i.0.report.json
@@ -1,14 +1,14 @@
-{ "wp:global": { "alt-ergo": { "total": 1, "valid": 1, "rank": 23 },
-                 "wp:main": { "total": 1, "valid": 1, "rank": 23 } },
-  "wp:functions": { "mem": { "mem_post": { "alt-ergo": { "total": 1,
-                                                         "valid": 1,
-                                                         "rank": 23 },
-                                           "wp:main": { "total": 1,
-                                                        "valid": 1,
-                                                        "rank": 23 } },
+{ "wp:global": { "alt-ergo": { "total": 1, "valid": 1, "rank": 25 },
+                 "wp:main": { "total": 1, "valid": 1, "rank": 25 } },
+  "wp:functions": { "mem": { "mem_ensures": { "alt-ergo": { "total": 1,
+                                                            "valid": 1,
+                                                            "rank": 25 },
+                                              "wp:main": { "total": 1,
+                                                           "valid": 1,
+                                                           "rank": 25 } },
                              "wp:section": { "alt-ergo": { "total": 1,
                                                            "valid": 1,
-                                                           "rank": 23 },
+                                                           "rank": 25 },
                                              "wp:main": { "total": 1,
                                                           "valid": 1,
-                                                          "rank": 23 } } } } }
+                                                          "rank": 25 } } } } }
diff --git a/src/plugins/wp/tests/wp_plugin/trig.i.0.report.json b/src/plugins/wp/tests/wp_plugin/trig.i.0.report.json
index 7ec6077cd80563bbd58be58da477887fabab9522..fd1831d59b5b4fcc02b93c1bafeeb7ab2c967df9 100644
--- a/src/plugins/wp/tests/wp_plugin/trig.i.0.report.json
+++ b/src/plugins/wp/tests/wp_plugin/trig.i.0.report.json
@@ -1,34 +1,36 @@
 { "wp:global": { "alt-ergo": { "total": 3, "valid": 2, "unknown": 1,
-                               "rank": 12 },
+                               "rank": 13 },
                  "qed": { "total": 1, "valid": 1 },
                  "wp:main": { "total": 4, "valid": 3, "unknown": 1,
-                              "rank": 12 } },
-  "wp:functions": { "foo": { "specialization_fconcat_pre_qed_ok_at_foo_stmt_1": 
-                               { "qed": { "total": 1, "valid": 1 },
-                                 "wp:main": { "total": 1, "valid": 1 } },
+                              "rank": 13 } },
+  "wp:functions": { "foo": { "fconcat_requires_qed_ok": { "qed": { "total": 1,
+                                                                   "valid": 1 },
+                                                          "wp:main": 
+                                                            { "total": 1,
+                                                              "valid": 1 } },
                              "foo_assert_qed_ok_B": { "alt-ergo": { "total": 1,
                                                                     "unknown": 1 },
                                                       "wp:main": { "total": 1,
                                                                    "unknown": 1 } },
                              "foo_assert_qed_ok_A": { "alt-ergo": { "total": 1,
                                                                     "valid": 1,
-                                                                    "rank": 12 },
+                                                                    "rank": 13 },
                                                       "wp:main": { "total": 1,
                                                                    "valid": 1,
-                                                                   "rank": 12 } },
+                                                                   "rank": 13 } },
                              "foo_assert_qed_ok_S": { "alt-ergo": { "total": 1,
                                                                     "valid": 1,
-                                                                    "rank": 12 },
+                                                                    "rank": 13 },
                                                       "wp:main": { "total": 1,
                                                                    "valid": 1,
-                                                                   "rank": 12 } },
+                                                                   "rank": 13 } },
                              "wp:section": { "alt-ergo": { "total": 3,
                                                            "valid": 2,
                                                            "unknown": 1,
-                                                           "rank": 12 },
+                                                           "rank": 13 },
                                              "qed": { "total": 1,
                                                       "valid": 1 },
                                              "wp:main": { "total": 4,
                                                           "valid": 3,
                                                           "unknown": 1,
-                                                          "rank": 12 } } } } }
+                                                          "rank": 13 } } } } }
diff --git a/src/plugins/wp/tests/wp_plugin/unfold_assigns.i b/src/plugins/wp/tests/wp_plugin/unfold_assigns.i
index 10292c05425a2aa9ac5569352a282e7f64d8448d..67134bd987e4cf9f93eb8fa70081da03988cd864 100644
--- a/src/plugins/wp/tests/wp_plugin/unfold_assigns.i
+++ b/src/plugins/wp/tests/wp_plugin/unfold_assigns.i
@@ -34,3 +34,21 @@ void NO_UNFOLD_OK_3(struct S *s) {
 void NO_UNFOLD_KO(struct S *s) {
   f(s);
 }
+
+/*@ 
+  ensures \separated(p,q) ==> (*q == \old(*q)); 
+  assigns (*p) ;
+*/
+void USE_ASSIGN_UNFOLD_OK(struct S *p , struct S *q)
+{
+  f(p);
+}
+
+/*@ 
+  ensures \separated(p,q) ==> (*q == \old(*q)); 
+  assigns p->a, p->b ;
+*/
+void USE_ASSIGN_UNFOLD_KO(struct S *p , struct S *q)
+{
+  f(p);
+}
diff --git a/src/plugins/wp/tests/wp_plugin/unroll/wp/typed/typed_unrolled_loop_post_zero.json b/src/plugins/wp/tests/wp_plugin/unroll/wp/typed/typed_unrolled_loop_ensures_zero.json
similarity index 100%
rename from src/plugins/wp/tests/wp_plugin/unroll/wp/typed/typed_unrolled_loop_post_zero.json
rename to src/plugins/wp/tests/wp_plugin/unroll/wp/typed/typed_unrolled_loop_ensures_zero.json
diff --git a/src/plugins/wp/tests/wp_plugin/unsafe-arrays.i.0.report.json b/src/plugins/wp/tests/wp_plugin/unsafe-arrays.i.0.report.json
index 60c80faeb37a877685fb79a153f15f2a5c03eb35..b967bd53ad6fbf82e01cbb737f76c074cf36dbfa 100644
--- a/src/plugins/wp/tests/wp_plugin/unsafe-arrays.i.0.report.json
+++ b/src/plugins/wp/tests/wp_plugin/unsafe-arrays.i.0.report.json
@@ -1,20 +1,20 @@
 { "wp:global": { "alt-ergo": { "total": 1, "valid": 1, "rank": 5 },
                  "qed": { "total": 2, "valid": 2 },
                  "wp:main": { "total": 3, "valid": 3, "rank": 5 } },
-  "wp:functions": { "f": { "f_post_INDIRP": { "alt-ergo": { "total": 1,
-                                                            "valid": 1,
-                                                            "rank": 5 },
-                                              "wp:main": { "total": 1,
-                                                           "valid": 1,
-                                                           "rank": 5 } },
-                           "f_post_STRUCT": { "qed": { "total": 1,
-                                                       "valid": 1 },
-                                              "wp:main": { "total": 1,
-                                                           "valid": 1 } },
-                           "f_post_ARRAYS": { "qed": { "total": 1,
-                                                       "valid": 1 },
-                                              "wp:main": { "total": 1,
-                                                           "valid": 1 } },
+  "wp:functions": { "f": { "f_ensures_INDIRP": { "alt-ergo": { "total": 1,
+                                                               "valid": 1,
+                                                               "rank": 5 },
+                                                 "wp:main": { "total": 1,
+                                                              "valid": 1,
+                                                              "rank": 5 } },
+                           "f_ensures_STRUCT": { "qed": { "total": 1,
+                                                          "valid": 1 },
+                                                 "wp:main": { "total": 1,
+                                                              "valid": 1 } },
+                           "f_ensures_ARRAYS": { "qed": { "total": 1,
+                                                          "valid": 1 },
+                                                 "wp:main": { "total": 1,
+                                                              "valid": 1 } },
                            "wp:section": { "alt-ergo": { "total": 1,
                                                          "valid": 1,
                                                          "rank": 5 },
diff --git a/src/plugins/wp/tests/wp_plugin/unsupported_init.i.0.report.json b/src/plugins/wp/tests/wp_plugin/unsupported_init.i.0.report.json
index b5b21453ac5a522bd278670b0769ac9d494ab5b5..8d566a55f49681c4d13c773501c3210ad075c9e9 100644
--- a/src/plugins/wp/tests/wp_plugin/unsupported_init.i.0.report.json
+++ b/src/plugins/wp/tests/wp_plugin/unsupported_init.i.0.report.json
@@ -1,12 +1,10 @@
 { "wp:global": { "alt-ergo": { "total": 1, "unknown": 1 },
                  "qed": { "total": 1, "valid": 1 },
                  "wp:main": { "total": 2, "valid": 1, "unknown": 1 } },
-  "wp:functions": { "f": { "specialization_cp_pre_r1_at_f_stmt_1": { "alt-ergo": 
-                                                                    { "total": 1,
-                                                                    "unknown": 1 },
-                                                                    "wp:main": 
-                                                                    { "total": 1,
-                                                                    "unknown": 1 } },
+  "wp:functions": { "f": { "cp_requires_r1": { "alt-ergo": { "total": 1,
+                                                             "unknown": 1 },
+                                               "wp:main": { "total": 1,
+                                                            "unknown": 1 } },
                            "f_assert_a1": { "qed": { "total": 1, "valid": 1 },
                                             "wp:main": { "total": 1,
                                                          "valid": 1 } },
diff --git a/src/plugins/wp/tests/wp_store/array.i.0.report.json b/src/plugins/wp/tests/wp_store/array.i.0.report.json
index 4309fe970dbe945e01f1cc99c005029a50cef273..c86162e95a5989e56b6aef1c30cc7356377e1d0f 100644
--- a/src/plugins/wp/tests/wp_store/array.i.0.report.json
+++ b/src/plugins/wp/tests/wp_store/array.i.0.report.json
@@ -1,14 +1,16 @@
 { "wp:global": { "qed": { "total": 2, "valid": 2 },
                  "wp:main": { "total": 2, "valid": 2 } },
-  "wp:functions": { "g": { "g_post_P_addr_shift_qed_ok": { "qed": { "total": 1,
+  "wp:functions": { "g": { "g_ensures_P_addr_shift_qed_ok": { "qed": 
+                                                                { "total": 1,
+                                                                  "valid": 1 },
+                                                              "wp:main": 
+                                                                { "total": 1,
+                                                                  "valid": 1 } },
+                           "g_ensures_P_startof_qed_ok": { "qed": { "total": 1,
                                                                     "valid": 1 },
                                                            "wp:main": 
                                                              { "total": 1,
                                                                "valid": 1 } },
-                           "g_post_P_startof_qed_ok": { "qed": { "total": 1,
-                                                                 "valid": 1 },
-                                                        "wp:main": { "total": 1,
-                                                                    "valid": 1 } },
                            "wp:section": { "qed": { "total": 2, "valid": 2 },
                                            "wp:main": { "total": 2,
                                                         "valid": 2 } } } } }
diff --git a/src/plugins/wp/tests/wp_store/natural.i.0.report.json b/src/plugins/wp/tests/wp_store/natural.i.0.report.json
index 3f8bb47038d33292999ecc0f24905a9307d32217..c8fc7843294bb16b26a3bd0c4c054cd60a220604 100644
--- a/src/plugins/wp/tests/wp_store/natural.i.0.report.json
+++ b/src/plugins/wp/tests/wp_store/natural.i.0.report.json
@@ -1,12 +1,12 @@
 { "wp:global": { "qed": { "total": 3, "valid": 3 },
                  "wp:main": { "total": 3, "valid": 3 } },
-  "wp:functions": { "f": { "f_assign": { "qed": { "total": 2, "valid": 2 },
-                                         "wp:main": { "total": 2,
-                                                      "valid": 2 } },
-                           "f_post_qed_ok": { "qed": { "total": 1,
-                                                       "valid": 1 },
-                                              "wp:main": { "total": 1,
-                                                           "valid": 1 } },
+  "wp:functions": { "f": { "f_assigns": { "qed": { "total": 2, "valid": 2 },
+                                          "wp:main": { "total": 2,
+                                                       "valid": 2 } },
+                           "f_ensures_qed_ok": { "qed": { "total": 1,
+                                                          "valid": 1 },
+                                                 "wp:main": { "total": 1,
+                                                              "valid": 1 } },
                            "wp:section": { "qed": { "total": 3, "valid": 3 },
                                            "wp:main": { "total": 3,
                                                         "valid": 3 } } } } }
diff --git a/src/plugins/wp/tests/wp_store/nonaliasing.i.0.report.json b/src/plugins/wp/tests/wp_store/nonaliasing.i.0.report.json
index d0bf1a680b6835e4be56336c6dd6268620f51553..13c17773a9d2999f8a2d7f9fb714724423dfe2bb 100644
--- a/src/plugins/wp/tests/wp_store/nonaliasing.i.0.report.json
+++ b/src/plugins/wp/tests/wp_store/nonaliasing.i.0.report.json
@@ -1,17 +1,17 @@
 { "wp:global": { "alt-ergo": { "total": 2, "valid": 2, "rank": 7 },
                  "wp:main": { "total": 2, "valid": 2, "rank": 7 } },
-  "wp:functions": { "f": { "f_post_qed_ok_Q": { "alt-ergo": { "total": 1,
-                                                              "valid": 1,
-                                                              "rank": 6 },
-                                                "wp:main": { "total": 1,
-                                                             "valid": 1,
-                                                             "rank": 6 } },
-                           "f_post_qed_ok_P": { "alt-ergo": { "total": 1,
-                                                              "valid": 1,
-                                                              "rank": 7 },
-                                                "wp:main": { "total": 1,
-                                                             "valid": 1,
-                                                             "rank": 7 } },
+  "wp:functions": { "f": { "f_ensures_qed_ok_Q": { "alt-ergo": { "total": 1,
+                                                                 "valid": 1,
+                                                                 "rank": 7 },
+                                                   "wp:main": { "total": 1,
+                                                                "valid": 1,
+                                                                "rank": 7 } },
+                           "f_ensures_qed_ok_P": { "alt-ergo": { "total": 1,
+                                                                 "valid": 1,
+                                                                 "rank": 7 },
+                                                   "wp:main": { "total": 1,
+                                                                "valid": 1,
+                                                                "rank": 7 } },
                            "wp:section": { "alt-ergo": { "total": 2,
                                                          "valid": 2,
                                                          "rank": 7 },
diff --git a/src/plugins/wp/tests/wp_store/nonaliasing.i.1.report.json b/src/plugins/wp/tests/wp_store/nonaliasing.i.1.report.json
index c5b3f509659b635b748e26d66e5727a13a719992..7e0f92281c03ed4539a3d83a083f522d0dbbf1c8 100644
--- a/src/plugins/wp/tests/wp_store/nonaliasing.i.1.report.json
+++ b/src/plugins/wp/tests/wp_store/nonaliasing.i.1.report.json
@@ -1,17 +1,17 @@
 { "wp:global": { "alt-ergo": { "total": 2, "unknown": 2 },
                  "wp:main": { "total": 2, "unknown": 2 } },
-  "wp:functions": { "f": { "f_post_qed_ko_Q_oracle_ko": { "alt-ergo": 
-                                                            { "total": 1,
-                                                              "unknown": 1 },
-                                                          "wp:main": 
-                                                            { "total": 1,
-                                                              "unknown": 1 } },
-                           "f_post_qed_ko_P_oracle_ko": { "alt-ergo": 
-                                                            { "total": 1,
-                                                              "unknown": 1 },
-                                                          "wp:main": 
-                                                            { "total": 1,
-                                                              "unknown": 1 } },
+  "wp:functions": { "f": { "f_ensures_qed_ko_Q_oracle_ko": { "alt-ergo": 
+                                                               { "total": 1,
+                                                                 "unknown": 1 },
+                                                             "wp:main": 
+                                                               { "total": 1,
+                                                                 "unknown": 1 } },
+                           "f_ensures_qed_ko_P_oracle_ko": { "alt-ergo": 
+                                                               { "total": 1,
+                                                                 "unknown": 1 },
+                                                             "wp:main": 
+                                                               { "total": 1,
+                                                                 "unknown": 1 } },
                            "wp:section": { "alt-ergo": { "total": 2,
                                                          "unknown": 2 },
                                            "wp:main": { "total": 2,
diff --git a/src/plugins/wp/tests/wp_store/oracle_qualif/array.res.oracle b/src/plugins/wp/tests/wp_store/oracle_qualif/array.res.oracle
index 7b12e86c3c98e107a44194eb0f2ddfc3e3d972f0..1106baba2b2508b2d93a9bbadc0f80d9923d922e 100644
--- a/src/plugins/wp/tests/wp_store/oracle_qualif/array.res.oracle
+++ b/src/plugins/wp/tests/wp_store/oracle_qualif/array.res.oracle
@@ -4,8 +4,8 @@
 [wp] Loading driver 'share/wp.driver'
 [wp] Warning: Missing RTE guards
 [wp] 2 goals scheduled
-[wp] [Qed] Goal typed_g_post_P_startof_qed_ok : Valid
-[wp] [Qed] Goal typed_g_post_P_addr_shift_qed_ok : Valid
+[wp] [Qed] Goal typed_g_ensures_P_startof_qed_ok : Valid
+[wp] [Qed] Goal typed_g_ensures_P_addr_shift_qed_ok : Valid
 [wp] Proved goals:    2 / 2
   Qed:             2
 [wp] Report 'tests/wp_store/array.i.0.report.json'
diff --git a/src/plugins/wp/tests/wp_store/oracle_qualif/natural.res.oracle b/src/plugins/wp/tests/wp_store/oracle_qualif/natural.res.oracle
index 0110b935966dfecd8915719e669039543d64b3f9..66190d57ab983a44e2f9f0832eaecc922d9601d1 100644
--- a/src/plugins/wp/tests/wp_store/oracle_qualif/natural.res.oracle
+++ b/src/plugins/wp/tests/wp_store/oracle_qualif/natural.res.oracle
@@ -4,9 +4,9 @@
 [wp] Loading driver 'share/wp.driver'
 [wp] Warning: Missing RTE guards
 [wp] 3 goals scheduled
-[wp] [Qed] Goal typed_f_post_qed_ok : Valid
-[wp] [Qed] Goal typed_f_assign_part1 : Valid
-[wp] [Qed] Goal typed_f_assign_part2 : Valid
+[wp] [Qed] Goal typed_f_ensures_qed_ok : Valid
+[wp] [Qed] Goal typed_f_assigns_part1 : Valid
+[wp] [Qed] Goal typed_f_assigns_part2 : Valid
 [wp] Proved goals:    3 / 3
   Qed:             3
 [wp] Report 'tests/wp_store/natural.i.0.report.json'
diff --git a/src/plugins/wp/tests/wp_store/oracle_qualif/nonaliasing.0.res.oracle b/src/plugins/wp/tests/wp_store/oracle_qualif/nonaliasing.0.res.oracle
index 29a849b906773f864b9fdb6390253a9226ef013f..3dc493d3e125df62da6e67c67b416ffa02179d8b 100644
--- a/src/plugins/wp/tests/wp_store/oracle_qualif/nonaliasing.0.res.oracle
+++ b/src/plugins/wp/tests/wp_store/oracle_qualif/nonaliasing.0.res.oracle
@@ -4,8 +4,8 @@
 [wp] Loading driver 'share/wp.driver'
 [wp] Warning: Missing RTE guards
 [wp] 2 goals scheduled
-[wp] [Alt-Ergo] Goal typed_f_post_qed_ok_P : Valid
-[wp] [Alt-Ergo] Goal typed_f_post_qed_ok_Q : Valid
+[wp] [Alt-Ergo] Goal typed_f_ensures_qed_ok_P : Valid
+[wp] [Alt-Ergo] Goal typed_f_ensures_qed_ok_Q : Valid
 [wp] Proved goals:    2 / 2
   Qed:             0 
   Alt-Ergo:        2
diff --git a/src/plugins/wp/tests/wp_store/oracle_qualif/nonaliasing.1.res.oracle b/src/plugins/wp/tests/wp_store/oracle_qualif/nonaliasing.1.res.oracle
index 6a6b87c415d7bc0c1465c0f2b5a76570fa9a2e65..53b6eb42b5afa2a59847fd1eb7a5f60f29705402 100644
--- a/src/plugins/wp/tests/wp_store/oracle_qualif/nonaliasing.1.res.oracle
+++ b/src/plugins/wp/tests/wp_store/oracle_qualif/nonaliasing.1.res.oracle
@@ -4,8 +4,8 @@
 [wp] Loading driver 'share/wp.driver'
 [wp] Warning: Missing RTE guards
 [wp] 2 goals scheduled
-[wp] [Alt-Ergo] Goal typed_f_post_qed_ko_P_oracle_ko : Step limit
-[wp] [Alt-Ergo] Goal typed_f_post_qed_ko_Q_oracle_ko : Step limit
+[wp] [Alt-Ergo] Goal typed_f_ensures_qed_ko_P_oracle_ko : Step limit
+[wp] [Alt-Ergo] Goal typed_f_ensures_qed_ko_Q_oracle_ko : Step limit
 [wp] Proved goals:    0 / 2
   Alt-Ergo:        0  (interrupted: 2)
 [wp] Report 'tests/wp_store/nonaliasing.i.1.report.json'
diff --git a/src/plugins/wp/tests/wp_store/oracle_qualif/struct.res.oracle b/src/plugins/wp/tests/wp_store/oracle_qualif/struct.res.oracle
index e7e39cce7cebc3cd822fb9f4b326578b7145fb85..f024426f2efb92f729f5a8d479f90290696787d8 100644
--- a/src/plugins/wp/tests/wp_store/oracle_qualif/struct.res.oracle
+++ b/src/plugins/wp/tests/wp_store/oracle_qualif/struct.res.oracle
@@ -5,11 +5,11 @@
 [wp] Warning: Missing RTE guards
 [wp] 6 goals scheduled
 [wp] [Qed] Goal typed_f_assert_qed_ok : Valid
-[wp] [Alt-Ergo] Goal typed_f_call_g_pre : Valid
-[wp] [Qed] Goal typed_g_post : Valid
-[wp] [Qed] Goal typed_g_assign : Valid
-[wp] [Alt-Ergo] Goal typed_main_post_P_qed_ok : Valid
-[wp] [Alt-Ergo] Goal typed_main_post_Q_qed_ok : Valid
+[wp] [Alt-Ergo] Goal typed_f_call_g_requires : Valid
+[wp] [Qed] Goal typed_g_ensures : Valid
+[wp] [Qed] Goal typed_g_assigns : Valid
+[wp] [Alt-Ergo] Goal typed_main_ensures_P_qed_ok : Valid
+[wp] [Alt-Ergo] Goal typed_main_ensures_Q_qed_ok : Valid
 [wp] Proved goals:    6 / 6
   Qed:             3 
   Alt-Ergo:        3
@@ -17,6 +17,6 @@
 -------------------------------------------------------------
 Functions           WP     Alt-Ergo        Total   Success
 g                    2     -                 2       100%
-f                    1      1 (12..24)       2       100%
-main                -       2 (32..44)       2       100%
+f                    1      1 (20..32)       2       100%
+main                -       2 (36..48)       2       100%
 -------------------------------------------------------------
diff --git a/src/plugins/wp/tests/wp_store/struct.i.0.report.json b/src/plugins/wp/tests/wp_store/struct.i.0.report.json
index 7d428c35c5aa845d866abe33d07a7c1f2cde7996..95af43d1bdf38f9f17374287bf20aed57d053532 100644
--- a/src/plugins/wp/tests/wp_store/struct.i.0.report.json
+++ b/src/plugins/wp/tests/wp_store/struct.i.0.report.json
@@ -1,48 +1,49 @@
-{ "wp:global": { "alt-ergo": { "total": 3, "valid": 3, "rank": 9 },
+{ "wp:global": { "alt-ergo": { "total": 3, "valid": 3, "rank": 10 },
                  "qed": { "total": 3, "valid": 3 },
-                 "wp:main": { "total": 6, "valid": 6, "rank": 9 } },
-  "wp:functions": { "g": { "g_assign": { "qed": { "total": 1, "valid": 1 },
-                                         "wp:main": { "total": 1,
-                                                      "valid": 1 } },
-                           "g_post": { "qed": { "total": 1, "valid": 1 },
-                                       "wp:main": { "total": 1, "valid": 1 } },
+                 "wp:main": { "total": 6, "valid": 6, "rank": 10 } },
+  "wp:functions": { "g": { "g_assigns": { "qed": { "total": 1, "valid": 1 },
+                                          "wp:main": { "total": 1,
+                                                       "valid": 1 } },
+                           "g_ensures": { "qed": { "total": 1, "valid": 1 },
+                                          "wp:main": { "total": 1,
+                                                       "valid": 1 } },
                            "wp:section": { "qed": { "total": 2, "valid": 2 },
                                            "wp:main": { "total": 2,
                                                         "valid": 2 } } },
-                    "f": { "specialization_g_pre_at_f_stmt_4": { "alt-ergo": 
-                                                                   { "total": 1,
-                                                                    "valid": 1,
-                                                                    "rank": 4 },
-                                                                 "wp:main": 
-                                                                   { "total": 1,
-                                                                    "valid": 1,
-                                                                    "rank": 4 } },
+                    "f": { "g_requires": { "alt-ergo": { "total": 1,
+                                                         "valid": 1,
+                                                         "rank": 6 },
+                                           "wp:main": { "total": 1,
+                                                        "valid": 1,
+                                                        "rank": 6 } },
                            "f_assert_qed_ok": { "qed": { "total": 1,
                                                          "valid": 1 },
                                                 "wp:main": { "total": 1,
                                                              "valid": 1 } },
                            "wp:section": { "alt-ergo": { "total": 1,
                                                          "valid": 1,
-                                                         "rank": 4 },
+                                                         "rank": 6 },
                                            "qed": { "total": 1, "valid": 1 },
                                            "wp:main": { "total": 2,
                                                         "valid": 2,
-                                                        "rank": 4 } } },
-                    "main": { "main_post_Q_qed_ok": { "alt-ergo": { "total": 1,
+                                                        "rank": 6 } } },
+                    "main": { "main_ensures_Q_qed_ok": { "alt-ergo": 
+                                                           { "total": 1,
+                                                             "valid": 1,
+                                                             "rank": 10 },
+                                                         "wp:main": { "total": 1,
                                                                     "valid": 1,
-                                                                    "rank": 9 },
-                                                      "wp:main": { "total": 1,
-                                                                   "valid": 1,
-                                                                   "rank": 9 } },
-                              "main_post_P_qed_ok": { "alt-ergo": { "total": 1,
+                                                                    "rank": 10 } },
+                              "main_ensures_P_qed_ok": { "alt-ergo": 
+                                                           { "total": 1,
+                                                             "valid": 1,
+                                                             "rank": 10 },
+                                                         "wp:main": { "total": 1,
                                                                     "valid": 1,
-                                                                    "rank": 9 },
-                                                      "wp:main": { "total": 1,
-                                                                   "valid": 1,
-                                                                   "rank": 9 } },
+                                                                    "rank": 10 } },
                               "wp:section": { "alt-ergo": { "total": 2,
                                                             "valid": 2,
-                                                            "rank": 9 },
+                                                            "rank": 10 },
                                               "wp:main": { "total": 2,
                                                            "valid": 2,
-                                                           "rank": 9 } } } } }
+                                                           "rank": 10 } } } } }
diff --git a/src/plugins/wp/tests/wp_tip/oracle_qualif/tac_split_quantifiers.res.oracle b/src/plugins/wp/tests/wp_tip/oracle_qualif/tac_split_quantifiers.res.oracle
index 0d18591704383c84f2857adeca5e6167aef6acea..b1263cdfe2943478bfb771d4ac1f794c4fee5daf 100644
--- a/src/plugins/wp/tests/wp_tip/oracle_qualif/tac_split_quantifiers.res.oracle
+++ b/src/plugins/wp/tests/wp_tip/oracle_qualif/tac_split_quantifiers.res.oracle
@@ -4,11 +4,11 @@
 [wp] Loading driver 'share/wp.driver'
 [wp] Warning: Missing RTE guards
 [wp] 5 goals scheduled
-[wp] [Tactical] Goal typed_split_post_Goal_Exist_Or : Unknown
-[wp] [Tactical] Goal typed_split_post_Goal_Exist_And : Unknown
-[wp] [Tactical] Goal typed_split_post_Goal_Exist_And_bis : Unknown
-[wp] [Tactical] Goal typed_split_post_Hyp_Forall_And : Unknown
-[wp] [Tactical] Goal typed_split_post_Hyp_Forall_Or_bis : Unknown
+[wp] [Tactical] Goal typed_split_ensures_Goal_Exist_Or : Unknown
+[wp] [Tactical] Goal typed_split_ensures_Goal_Exist_And : Unknown
+[wp] [Tactical] Goal typed_split_ensures_Goal_Exist_And_bis : Unknown
+[wp] [Tactical] Goal typed_split_ensures_Hyp_Forall_And : Unknown
+[wp] [Tactical] Goal typed_split_ensures_Hyp_Forall_Or_bis : Unknown
 [wp] Proved goals:    0 / 5
 [wp] Report 'tests/wp_tip/tac_split_quantifiers.i.0.report.json'
 -------------------------------------------------------------
diff --git a/src/plugins/wp/tests/wp_tip/tac_split_quantifiers.i.0.report.json b/src/plugins/wp/tests/wp_tip/tac_split_quantifiers.i.0.report.json
index 077e3eeea9cd555a4944ea9b17a4b35e8b7c0b7f..c7343abe87df4acb37fc99e4213b907f9ec4b188 100644
--- a/src/plugins/wp/tests/wp_tip/tac_split_quantifiers.i.0.report.json
+++ b/src/plugins/wp/tests/wp_tip/tac_split_quantifiers.i.0.report.json
@@ -1,35 +1,35 @@
 { "wp:global": { "script": { "total": 5, "unknown": 5 },
                  "wp:main": { "total": 5, "unknown": 5 } },
-  "wp:functions": { "split": { "split_post_Hyp_Forall_Or_bis": { "script": 
+  "wp:functions": { "split": { "split_ensures_Hyp_Forall_Or_bis": { "script": 
+                                                                    { "total": 1,
+                                                                    "unknown": 1 },
+                                                                    "wp:main": 
+                                                                    { "total": 1,
+                                                                    "unknown": 1 } },
+                               "split_ensures_Hyp_Forall_And": { "script": 
                                                                    { "total": 1,
                                                                     "unknown": 1 },
                                                                  "wp:main": 
                                                                    { "total": 1,
                                                                     "unknown": 1 } },
-                               "split_post_Hyp_Forall_And": { "script": 
-                                                                { "total": 1,
-                                                                  "unknown": 1 },
-                                                              "wp:main": 
-                                                                { "total": 1,
-                                                                  "unknown": 1 } },
-                               "split_post_Goal_Exist_And_bis": { "script": 
+                               "split_ensures_Goal_Exist_And_bis": { "script": 
                                                                     { "total": 1,
                                                                     "unknown": 1 },
-                                                                  "wp:main": 
+                                                                    "wp:main": 
                                                                     { "total": 1,
                                                                     "unknown": 1 } },
-                               "split_post_Goal_Exist_And": { "script": 
-                                                                { "total": 1,
-                                                                  "unknown": 1 },
-                                                              "wp:main": 
-                                                                { "total": 1,
-                                                                  "unknown": 1 } },
-                               "split_post_Goal_Exist_Or": { "script": 
-                                                               { "total": 1,
-                                                                 "unknown": 1 },
-                                                             "wp:main": 
-                                                               { "total": 1,
-                                                                 "unknown": 1 } },
+                               "split_ensures_Goal_Exist_And": { "script": 
+                                                                   { "total": 1,
+                                                                    "unknown": 1 },
+                                                                 "wp:main": 
+                                                                   { "total": 1,
+                                                                    "unknown": 1 } },
+                               "split_ensures_Goal_Exist_Or": { "script": 
+                                                                  { "total": 1,
+                                                                    "unknown": 1 },
+                                                                "wp:main": 
+                                                                  { "total": 1,
+                                                                    "unknown": 1 } },
                                "wp:section": { "script": { "total": 5,
                                                            "unknown": 5 },
                                                "wp:main": { "total": 5,
diff --git a/src/plugins/wp/tests/wp_tip/tac_split_quantifiers/wp/typed/typed_split_post_Goal_Exist_And.json b/src/plugins/wp/tests/wp_tip/tac_split_quantifiers/wp/typed/typed_split_ensures_Goal_Exist_And.json
similarity index 100%
rename from src/plugins/wp/tests/wp_tip/tac_split_quantifiers/wp/typed/typed_split_post_Goal_Exist_And.json
rename to src/plugins/wp/tests/wp_tip/tac_split_quantifiers/wp/typed/typed_split_ensures_Goal_Exist_And.json
diff --git a/src/plugins/wp/tests/wp_tip/tac_split_quantifiers/wp/typed/typed_split_post_Goal_Exist_And_bis.json b/src/plugins/wp/tests/wp_tip/tac_split_quantifiers/wp/typed/typed_split_ensures_Goal_Exist_And_bis.json
similarity index 100%
rename from src/plugins/wp/tests/wp_tip/tac_split_quantifiers/wp/typed/typed_split_post_Goal_Exist_And_bis.json
rename to src/plugins/wp/tests/wp_tip/tac_split_quantifiers/wp/typed/typed_split_ensures_Goal_Exist_And_bis.json
diff --git a/src/plugins/wp/tests/wp_tip/tac_split_quantifiers/wp/typed/typed_split_post_Goal_Exist_Or.json b/src/plugins/wp/tests/wp_tip/tac_split_quantifiers/wp/typed/typed_split_ensures_Goal_Exist_Or.json
similarity index 100%
rename from src/plugins/wp/tests/wp_tip/tac_split_quantifiers/wp/typed/typed_split_post_Goal_Exist_Or.json
rename to src/plugins/wp/tests/wp_tip/tac_split_quantifiers/wp/typed/typed_split_ensures_Goal_Exist_Or.json
diff --git a/src/plugins/wp/tests/wp_tip/tac_split_quantifiers/wp/typed/typed_split_post_Hyp_Forall_And.json b/src/plugins/wp/tests/wp_tip/tac_split_quantifiers/wp/typed/typed_split_ensures_Hyp_Forall_And.json
similarity index 100%
rename from src/plugins/wp/tests/wp_tip/tac_split_quantifiers/wp/typed/typed_split_post_Hyp_Forall_And.json
rename to src/plugins/wp/tests/wp_tip/tac_split_quantifiers/wp/typed/typed_split_ensures_Hyp_Forall_And.json
diff --git a/src/plugins/wp/tests/wp_tip/tac_split_quantifiers/wp/typed/typed_split_post_Hyp_Forall_Or_bis.json b/src/plugins/wp/tests/wp_tip/tac_split_quantifiers/wp/typed/typed_split_ensures_Hyp_Forall_Or_bis.json
similarity index 100%
rename from src/plugins/wp/tests/wp_tip/tac_split_quantifiers/wp/typed/typed_split_post_Hyp_Forall_Or_bis.json
rename to src/plugins/wp/tests/wp_tip/tac_split_quantifiers/wp/typed/typed_split_ensures_Hyp_Forall_Or_bis.json
diff --git a/src/plugins/wp/tests/wp_typed/array_initialized.c.0.report.json b/src/plugins/wp/tests/wp_typed/array_initialized.c.0.report.json
index e623d1cea9408acff38877a51e026beb402b79f9..0a32f1d88d086e8c62c1f953143a1138a2367b01 100644
--- a/src/plugins/wp/tests/wp_typed/array_initialized.c.0.report.json
+++ b/src/plugins/wp/tests/wp_typed/array_initialized.c.0.report.json
@@ -47,15 +47,15 @@
                                                       "wp:main": { "total": 1,
                                                                    "valid": 1,
                                                                    "rank": 10 } } },
-                    "simpl": { "simpl_post": { "alt-ergo": { "total": 1,
-                                                             "valid": 1,
-                                                             "rank": 4 },
-                                               "wp:main": { "total": 1,
-                                                            "valid": 1,
-                                                            "rank": 4 } },
+                    "simpl": { "simpl_ensures": { "alt-ergo": { "total": 1,
+                                                                "valid": 1,
+                                                                "rank": 5 },
+                                                  "wp:main": { "total": 1,
+                                                               "valid": 1,
+                                                               "rank": 5 } },
                                "wp:section": { "alt-ergo": { "total": 1,
                                                              "valid": 1,
-                                                             "rank": 4 },
+                                                             "rank": 5 },
                                                "wp:main": { "total": 1,
                                                             "valid": 1,
-                                                            "rank": 4 } } } } }
+                                                            "rank": 5 } } } } }
diff --git a/src/plugins/wp/tests/wp_typed/array_initialized.c.1.report.json b/src/plugins/wp/tests/wp_typed/array_initialized.c.1.report.json
index 6eca195283b626848bcfcd2943a41fd4c0ddada6..d92ae09acaf07155d3b3936699f13d6d3a796e6f 100644
--- a/src/plugins/wp/tests/wp_typed/array_initialized.c.1.report.json
+++ b/src/plugins/wp/tests/wp_typed/array_initialized.c.1.report.json
@@ -36,26 +36,26 @@
                     "main_pointer": { "main_pointer_assert": { "alt-ergo": 
                                                                  { "total": 1,
                                                                    "valid": 1,
-                                                                   "rank": 16 },
+                                                                   "rank": 18 },
                                                                "wp:main": 
                                                                  { "total": 1,
                                                                    "valid": 1,
-                                                                   "rank": 16 } },
+                                                                   "rank": 18 } },
                                       "wp:section": { "alt-ergo": { "total": 1,
                                                                     "valid": 1,
-                                                                    "rank": 16 },
+                                                                    "rank": 18 },
                                                       "wp:main": { "total": 1,
                                                                    "valid": 1,
-                                                                   "rank": 16 } } },
-                    "simpl": { "simpl_post": { "alt-ergo": { "total": 1,
-                                                             "valid": 1,
-                                                             "rank": 4 },
-                                               "wp:main": { "total": 1,
-                                                            "valid": 1,
-                                                            "rank": 4 } },
+                                                                   "rank": 18 } } },
+                    "simpl": { "simpl_ensures": { "alt-ergo": { "total": 1,
+                                                                "valid": 1,
+                                                                "rank": 5 },
+                                                  "wp:main": { "total": 1,
+                                                               "valid": 1,
+                                                               "rank": 5 } },
                                "wp:section": { "alt-ergo": { "total": 1,
                                                              "valid": 1,
-                                                             "rank": 4 },
+                                                             "rank": 5 },
                                                "wp:main": { "total": 1,
                                                             "valid": 1,
-                                                            "rank": 4 } } } } }
+                                                            "rank": 5 } } } } }
diff --git a/src/plugins/wp/tests/wp_typed/avar.i.0.report.json b/src/plugins/wp/tests/wp_typed/avar.i.0.report.json
index f29b108a2994725b97662aa5af32e6f019242847..4497f6d5e8d209a556521cb6c092103e5968ccc9 100644
--- a/src/plugins/wp/tests/wp_typed/avar.i.0.report.json
+++ b/src/plugins/wp/tests/wp_typed/avar.i.0.report.json
@@ -1,11 +1,8 @@
 { "wp:global": { "qed": { "total": 1, "valid": 1 },
                  "wp:main": { "total": 1, "valid": 1 } },
-  "wp:functions": { "g": { "specialization_f_pre_at_g_stmt_1": { "qed": 
-                                                                   { "total": 1,
-                                                                    "valid": 1 },
-                                                                 "wp:main": 
-                                                                   { "total": 1,
-                                                                    "valid": 1 } },
+  "wp:functions": { "g": { "f_requires": { "qed": { "total": 1, "valid": 1 },
+                                           "wp:main": { "total": 1,
+                                                        "valid": 1 } },
                            "wp:section": { "qed": { "total": 1, "valid": 1 },
                                            "wp:main": { "total": 1,
                                                         "valid": 1 } } } } }
diff --git a/src/plugins/wp/tests/wp_typed/oracle/struct_array_type.res.oracle b/src/plugins/wp/tests/wp_typed/oracle/struct_array_type.res.oracle
index 6247f9349b2f81641088d068f7873ec595402e60..0fd6e8fdb49bf3a49a5b8ff9894c01fc8d0fa691 100644
--- a/src/plugins/wp/tests/wp_typed/oracle/struct_array_type.res.oracle
+++ b/src/plugins/wp/tests/wp_typed/oracle/struct_array_type.res.oracle
@@ -5,12 +5,12 @@
 [wp] Warning: Missing RTE guards
 [wp] 1 goal scheduled
 [wp:print-generated] 
-  "WPOUT/typed/f_post.ergo"
+  "WPOUT/typed/f_ensures.ergo"
   (* ---------------------------------------------------------- *)
   (* --- Post-condition (file tests/wp_typed/struct_array_type.i, line 16) in 'f' --- *)
   (* ---------------------------------------------------------- *)
   
-  goal f_post:
+  goal f_ensures:
     forall i : int.
     forall t : S1_s farray.
     let a = t[i] : S1_s in
diff --git a/src/plugins/wp/tests/wp_typed/oracle_qualif/array_initialized.0.res.oracle b/src/plugins/wp/tests/wp_typed/oracle_qualif/array_initialized.0.res.oracle
index 9a98e84f0d4bedc9ae109c667a27713ade69d3e3..55bc508f1a96391f8b5e8b3406c870b63b80a93f 100644
--- a/src/plugins/wp/tests/wp_typed/oracle_qualif/array_initialized.0.res.oracle
+++ b/src/plugins/wp/tests/wp_typed/oracle_qualif/array_initialized.0.res.oracle
@@ -10,7 +10,7 @@
 [wp] [Alt-Ergo] Goal typed_main2_assert : Valid
 [wp] [Qed] Goal typed_main3_assert : Valid
 [wp] [Alt-Ergo] Goal typed_main_pointer_assert : Valid
-[wp] [Alt-Ergo] Goal typed_simpl_post : Valid
+[wp] [Alt-Ergo] Goal typed_simpl_ensures : Valid
 [wp] Proved goals:    5 / 5
   Qed:             1 
   Alt-Ergo:        4
@@ -21,5 +21,5 @@ main1               -       1 (1..12)        1       100%
 main2               -       1 (96..120)      1       100%
 main3                1     -                 1       100%
 main_pointer        -       1 (36..48)       1       100%
-simpl               -       1 (12..24)       1       100%
+simpl               -       1 (16..28)       1       100%
 -------------------------------------------------------------
diff --git a/src/plugins/wp/tests/wp_typed/oracle_qualif/array_initialized.1.res.oracle b/src/plugins/wp/tests/wp_typed/oracle_qualif/array_initialized.1.res.oracle
index def88c75b757cca27f85105bd4d7c0adca739ef1..87594e50f05a223f6f149c05b3225c34f67e5f5c 100644
--- a/src/plugins/wp/tests/wp_typed/oracle_qualif/array_initialized.1.res.oracle
+++ b/src/plugins/wp/tests/wp_typed/oracle_qualif/array_initialized.1.res.oracle
@@ -10,7 +10,7 @@
 [wp] [Alt-Ergo] Goal typed_main2_assert : Valid
 [wp] [Qed] Goal typed_main3_assert : Valid
 [wp] [Alt-Ergo] Goal typed_main_pointer_assert : Valid
-[wp] [Alt-Ergo] Goal typed_simpl_post : Valid
+[wp] [Alt-Ergo] Goal typed_simpl_ensures : Valid
 [wp] Proved goals:    5 / 5
   Qed:             1 
   Alt-Ergo:        4
@@ -20,6 +20,6 @@ Functions           WP     Alt-Ergo        Total   Success
 main1               -       1 (16..28)       1       100%
 main2               -       1 (112..136)     1       100%
 main3                1     -                 1       100%
-main_pointer        -       1 (56..80)       1       100%
-simpl               -       1 (12..24)       1       100%
+main_pointer        -       1 (72..96)       1       100%
+simpl               -       1 (16..28)       1       100%
 -------------------------------------------------------------
diff --git a/src/plugins/wp/tests/wp_typed/oracle_qualif/avar.res.oracle b/src/plugins/wp/tests/wp_typed/oracle_qualif/avar.res.oracle
index efa2372cf106975f04ca4df7dea7fdbfa5ab1532..ea8b44d41a6028c7b9384312669efae2c618bb68 100644
--- a/src/plugins/wp/tests/wp_typed/oracle_qualif/avar.res.oracle
+++ b/src/plugins/wp/tests/wp_typed/oracle_qualif/avar.res.oracle
@@ -6,7 +6,7 @@
   No code nor implicit assigns clause for function f, generating default assigns from the prototype
 [wp] Warning: Missing RTE guards
 [wp] 1 goal scheduled
-[wp] [Qed] Goal typed_g_call_f_pre : Valid
+[wp] [Qed] Goal typed_g_call_f_requires : Valid
 [wp] Proved goals:    1 / 1
   Qed:             1
 [wp] Report 'tests/wp_typed/avar.i.0.report.json'
diff --git a/src/plugins/wp/tests/wp_typed/oracle_qualif/shift_lemma.res.oracle b/src/plugins/wp/tests/wp_typed/oracle_qualif/shift_lemma.res.oracle
index 7d8c0dd30f14e0eef991620398db4052d9e2895a..bc4d77cc431790076dbb90c61072acdb5f86a902 100644
--- a/src/plugins/wp/tests/wp_typed/oracle_qualif/shift_lemma.res.oracle
+++ b/src/plugins/wp/tests/wp_typed/oracle_qualif/shift_lemma.res.oracle
@@ -15,5 +15,5 @@
 [wp] Report 'tests/wp_typed/shift_lemma.i.0.report.json'
 -------------------------------------------------------------
 Functions           WP     Alt-Ergo        Total   Success
-f                    2      3 (16..28)       5       100%
+f                    2      3 (20..32)       5       100%
 -------------------------------------------------------------
diff --git a/src/plugins/wp/tests/wp_typed/oracle_qualif/struct_array_type.res.oracle b/src/plugins/wp/tests/wp_typed/oracle_qualif/struct_array_type.res.oracle
index 70b3096605936bacfc2adb4c2dd8416319dde980..2ef7db89cdd4f28c0e01042bb9d4c958f3cdaf5f 100644
--- a/src/plugins/wp/tests/wp_typed/oracle_qualif/struct_array_type.res.oracle
+++ b/src/plugins/wp/tests/wp_typed/oracle_qualif/struct_array_type.res.oracle
@@ -4,7 +4,7 @@
 [wp] Loading driver 'share/wp.driver'
 [wp] Warning: Missing RTE guards
 [wp] 1 goal scheduled
-[wp] [Alt-Ergo] Goal typed_f_post : Valid
+[wp] [Alt-Ergo] Goal typed_f_ensures : Valid
 [wp] Proved goals:    1 / 1
   Qed:             0 
   Alt-Ergo:        1
diff --git a/src/plugins/wp/tests/wp_typed/oracle_qualif/unit_alloc.0.res.oracle b/src/plugins/wp/tests/wp_typed/oracle_qualif/unit_alloc.0.res.oracle
index 2995594dd251456cf11c71dacec3b056084bcc43..afbfa61d8da8bc9c3ef4cf1f1ed99ae5ca36ea28 100644
--- a/src/plugins/wp/tests/wp_typed/oracle_qualif/unit_alloc.0.res.oracle
+++ b/src/plugins/wp/tests/wp_typed/oracle_qualif/unit_alloc.0.res.oracle
@@ -4,9 +4,9 @@
 [wp] Loading driver 'share/wp.driver'
 [wp] Warning: Missing RTE guards
 [wp] 7 goals scheduled
-[wp] [Qed] Goal typed_f_assign : Valid
-[wp] [Qed] Goal typed_g_assign : Valid
-[wp] [Alt-Ergo] Goal typed_h_post : Valid
+[wp] [Qed] Goal typed_f_assigns : Valid
+[wp] [Qed] Goal typed_g_assigns : Valid
+[wp] [Alt-Ergo] Goal typed_h_ensures : Valid
 [wp] [Qed] Goal typed_job_assert : Valid
 [wp] [Alt-Ergo] Goal typed_job_assert_2 : Valid
 [wp] [Qed] Goal typed_job_assert_3 : Valid
diff --git a/src/plugins/wp/tests/wp_typed/oracle_qualif/unit_alloc.1.res.oracle b/src/plugins/wp/tests/wp_typed/oracle_qualif/unit_alloc.1.res.oracle
index a01f97f9a20f7f16bdbacfe5629737fc3a25e2bd..7a194c5adbf9c96f8495e0d8e9581a0a37ae53b5 100644
--- a/src/plugins/wp/tests/wp_typed/oracle_qualif/unit_alloc.1.res.oracle
+++ b/src/plugins/wp/tests/wp_typed/oracle_qualif/unit_alloc.1.res.oracle
@@ -4,9 +4,9 @@
 [wp] Loading driver 'share/wp.driver'
 [wp] Warning: Missing RTE guards
 [wp] 7 goals scheduled
-[wp] [Qed] Goal typed_ref_f_assign : Valid
-[wp] [Qed] Goal typed_ref_g_assign : Valid
-[wp] [Alt-Ergo] Goal typed_ref_h_post : Valid
+[wp] [Qed] Goal typed_ref_f_assigns : Valid
+[wp] [Qed] Goal typed_ref_g_assigns : Valid
+[wp] [Alt-Ergo] Goal typed_ref_h_ensures : Valid
 [wp] [Qed] Goal typed_ref_job_assert : Valid
 [wp] [Alt-Ergo] Goal typed_ref_job_assert_2 : Valid
 [wp] [Qed] Goal typed_ref_job_assert_3 : Valid
diff --git a/src/plugins/wp/tests/wp_typed/oracle_qualif/unit_bitwise.0.res.oracle b/src/plugins/wp/tests/wp_typed/oracle_qualif/unit_bitwise.0.res.oracle
index ccce12a56f885be3046607951ca617b1457ac648..a595a3d3871839388679af679265d1bb0c8c12c8 100644
--- a/src/plugins/wp/tests/wp_typed/oracle_qualif/unit_bitwise.0.res.oracle
+++ b/src/plugins/wp/tests/wp_typed/oracle_qualif/unit_bitwise.0.res.oracle
@@ -30,26 +30,26 @@
 [wp] [Alt-Ergo] Goal typed_band1_ulong_assert_ok_2 : Valid
 [wp] [Qed] Goal typed_band1_ushort_assert_ok : Valid
 [wp] [Alt-Ergo] Goal typed_band1_ushort_assert_ok_2 : Valid
-[wp] [Alt-Ergo] Goal typed_band_char_post_ok : Valid
-[wp] [Qed] Goal typed_band_int_post_ok : Valid
+[wp] [Alt-Ergo] Goal typed_band_char_ensures_ok : Valid
+[wp] [Qed] Goal typed_band_int_ensures_ok : Valid
 [wp] [Qed] Goal typed_band_int_assert_ok : Valid
-[wp] [Alt-Ergo] Goal typed_band_uchar_post_ok : Valid
-[wp] [Qed] Goal typed_band_uint_post_ok : Valid
-[wp] [Alt-Ergo] Goal typed_bnot_char_post_ok : Valid
-[wp] [Qed] Goal typed_bnot_int_post_ok : Valid
-[wp] [Qed] Goal typed_bnot_uchar_post_ok : Valid
-[wp] [Qed] Goal typed_bnot_uint_post_ok : Valid
-[wp] [Alt-Ergo] Goal typed_bor_char_post_ok : Valid
-[wp] [Qed] Goal typed_bor_int_post_ok : Valid
-[wp] [Qed] Goal typed_bor_uchar_post_ok : Valid
-[wp] [Qed] Goal typed_bor_uint_post_ok : Valid
-[wp] [Alt-Ergo] Goal typed_bxor_char_post_ok : Valid
-[wp] [Qed] Goal typed_bxor_int_post_ok : Valid
-[wp] [Qed] Goal typed_bxor_uchar_post_ok : Valid
-[wp] [Alt-Ergo] Goal typed_bxor_uchar_post_ok_2 : Valid
-[wp] [Qed] Goal typed_bxor_uint_post_ok : Valid
-[wp] [Alt-Ergo] Goal typed_bxor_uint_post_ok_2 : Valid
-[wp] [Qed] Goal typed_cast_post_ok : Valid
+[wp] [Alt-Ergo] Goal typed_band_uchar_ensures_ok : Valid
+[wp] [Qed] Goal typed_band_uint_ensures_ok : Valid
+[wp] [Alt-Ergo] Goal typed_bnot_char_ensures_ok : Valid
+[wp] [Qed] Goal typed_bnot_int_ensures_ok : Valid
+[wp] [Qed] Goal typed_bnot_uchar_ensures_ok : Valid
+[wp] [Qed] Goal typed_bnot_uint_ensures_ok : Valid
+[wp] [Alt-Ergo] Goal typed_bor_char_ensures_ok : Valid
+[wp] [Qed] Goal typed_bor_int_ensures_ok : Valid
+[wp] [Qed] Goal typed_bor_uchar_ensures_ok : Valid
+[wp] [Qed] Goal typed_bor_uint_ensures_ok : Valid
+[wp] [Alt-Ergo] Goal typed_bxor_char_ensures_ok : Valid
+[wp] [Qed] Goal typed_bxor_int_ensures_ok : Valid
+[wp] [Qed] Goal typed_bxor_uchar_ensures_ok : Valid
+[wp] [Alt-Ergo] Goal typed_bxor_uchar_ensures_ok_2 : Valid
+[wp] [Qed] Goal typed_bxor_uint_ensures_ok : Valid
+[wp] [Alt-Ergo] Goal typed_bxor_uint_ensures_ok_2 : Valid
+[wp] [Qed] Goal typed_cast_ensures_ok : Valid
 [wp] [Qed] Goal typed_cast_assert_ok : Valid
 [wp] [Qed] Goal typed_cast_assert_ok_2 : Valid
 [wp] [Qed] Goal typed_cast_assert_ok_3 : Valid
@@ -57,14 +57,14 @@
 [wp] [Qed] Goal typed_cast_assert_ok_5 : Valid
 [wp] [Qed] Goal typed_cast_assert_ok_6 : Valid
 [wp] [Qed] Goal typed_cast_assert_ok_7 : Valid
-[wp] [Qed] Goal typed_lshift_char_post_ok : Valid
-[wp] [Qed] Goal typed_lshift_int_post_ok : Valid
-[wp] [Qed] Goal typed_lshift_uchar_post_ok : Valid
-[wp] [Qed] Goal typed_lshift_uint_post_ok : Valid
-[wp] [Qed] Goal typed_rshift_char_post_ok : Valid
-[wp] [Qed] Goal typed_rshift_int_post_ok : Valid
-[wp] [Alt-Ergo] Goal typed_rshift_uchar_post_ok : Valid
-[wp] [Qed] Goal typed_rshift_uint_post_ok : Valid
+[wp] [Qed] Goal typed_lshift_char_ensures_ok : Valid
+[wp] [Qed] Goal typed_lshift_int_ensures_ok : Valid
+[wp] [Qed] Goal typed_lshift_uchar_ensures_ok : Valid
+[wp] [Qed] Goal typed_lshift_uint_ensures_ok : Valid
+[wp] [Qed] Goal typed_rshift_char_ensures_ok : Valid
+[wp] [Qed] Goal typed_rshift_int_ensures_ok : Valid
+[wp] [Alt-Ergo] Goal typed_rshift_uchar_ensures_ok : Valid
+[wp] [Qed] Goal typed_rshift_uint_ensures_ok : Valid
 [wp] Proved goals:   61 / 61
   Qed:            41 
   Alt-Ergo:       20
@@ -80,27 +80,27 @@ bxor_int             1     -                 1       100%
 bnot_int             1     -                 1       100%
 lshift_int           1     -                 1       100%
 rshift_int           1     -                 1       100%
-band1_uint           1      1 (8..20)        2       100%
+band1_uint           1      1 (12..24)       2       100%
 band_uint            1     -                 1       100%
 bor_uint             1     -                 1       100%
-bxor_uint            1      1 (8..20)        2       100%
+bxor_uint            1      1 (12..24)       2       100%
 bnot_uint            1     -                 1       100%
 lshift_uint          1     -                 1       100%
 rshift_uint          1     -                 1       100%
-band_char           -       1 (8..20)        1       100%
-bor_char            -       1 (8..20)        1       100%
-bxor_char           -       1 (8..20)        1       100%
-bnot_char           -       1 (8..20)        1       100%
+band_char           -       1 (12..24)       1       100%
+bor_char            -       1 (12..24)       1       100%
+bxor_char           -       1 (12..24)       1       100%
+bnot_char           -       1 (12..24)       1       100%
 lshift_char          1     -                 1       100%
 rshift_char          1     -                 1       100%
-band1_uchar          1      1 (8..20)        2       100%
-band_uchar          -       1 (8..20)        1       100%
+band1_uchar          1      1 (12..24)       2       100%
+band_uchar          -       1 (12..24)       1       100%
 bor_uchar            1     -                 1       100%
-bxor_uchar           1      1 (8..20)        2       100%
+bxor_uchar           1      1 (12..24)       2       100%
 bnot_uchar           1     -                 1       100%
 lshift_uchar         1     -                 1       100%
-rshift_uchar        -       1 (16..28)       1       100%
-band1_ushort         1      1 (8..20)        2       100%
-band1_ulong          1      1 (8..20)        2       100%
+rshift_uchar        -       1 (24..36)       1       100%
+band1_ushort         1      1 (12..24)       2       100%
+band1_ulong          1      1 (12..24)       2       100%
 cast                 8     -                 8       100%
 -------------------------------------------------------------
diff --git a/src/plugins/wp/tests/wp_typed/oracle_qualif/unit_bitwise.1.res.oracle b/src/plugins/wp/tests/wp_typed/oracle_qualif/unit_bitwise.1.res.oracle
index 6e4e81ca16ed79f2618df3c096921f7ae70dfb33..a2caebabd5becd1830646d5aab478094978856a4 100644
--- a/src/plugins/wp/tests/wp_typed/oracle_qualif/unit_bitwise.1.res.oracle
+++ b/src/plugins/wp/tests/wp_typed/oracle_qualif/unit_bitwise.1.res.oracle
@@ -5,8 +5,8 @@
 [wp] Warning: Missing RTE guards
 [wp] 4 goals scheduled
 [wp] [Alt-Ergo] Goal typed_band_int_assert_ko : Unknown
-[wp] [Alt-Ergo] Goal typed_bnot_uchar_post_ko : Unknown
-[wp] [Alt-Ergo] Goal typed_bnot_uint_post_ko : Unknown
+[wp] [Alt-Ergo] Goal typed_bnot_uchar_ensures_ko : Unknown
+[wp] [Alt-Ergo] Goal typed_bnot_uint_ensures_ko : Unknown
 [wp] [Alt-Ergo] Goal typed_cast_assert_ko : Unknown
 [wp] Proved goals:    0 / 4
   Alt-Ergo:        0  (unknown: 4)
diff --git a/src/plugins/wp/tests/wp_typed/oracle_qualif/unit_cast.res.oracle b/src/plugins/wp/tests/wp_typed/oracle_qualif/unit_cast.res.oracle
index 5301dafeda2ae40eee92008fe2e6d8d4768f92d6..67b88136c1a976993c2693f338f304b817fae021 100644
--- a/src/plugins/wp/tests/wp_typed/oracle_qualif/unit_cast.res.oracle
+++ b/src/plugins/wp/tests/wp_typed/oracle_qualif/unit_cast.res.oracle
@@ -13,5 +13,5 @@
 [wp] Report 'tests/wp_typed/unit_cast.i.0.report.json'
 -------------------------------------------------------------
 Functions           WP     Alt-Ergo        Total   Success
-f                   -       1 (12..24)       1       100%
+f                   -       1 (20..32)       1       100%
 -------------------------------------------------------------
diff --git a/src/plugins/wp/tests/wp_typed/oracle_qualif/unit_cst.res.oracle b/src/plugins/wp/tests/wp_typed/oracle_qualif/unit_cst.res.oracle
index 5498e02d849c598a8b9d60c6c1999cbf889713b8..0bc7e2733a382db0f26543c61fb90b1017700553 100644
--- a/src/plugins/wp/tests/wp_typed/oracle_qualif/unit_cst.res.oracle
+++ b/src/plugins/wp/tests/wp_typed/oracle_qualif/unit_cst.res.oracle
@@ -4,8 +4,8 @@
 [wp] Loading driver 'share/wp.driver'
 [wp] Warning: Missing RTE guards
 [wp] 2 goals scheduled
-[wp] [Qed] Goal typed_f_post_A : Valid
-[wp] [Qed] Goal typed_f_post_B : Valid
+[wp] [Qed] Goal typed_f_ensures_A : Valid
+[wp] [Qed] Goal typed_f_ensures_B : Valid
 [wp] Proved goals:    2 / 2
   Qed:             2
 [wp] Report 'tests/wp_typed/unit_cst.i.0.report.json'
diff --git a/src/plugins/wp/tests/wp_typed/oracle_qualif/unit_float.res.oracle b/src/plugins/wp/tests/wp_typed/oracle_qualif/unit_float.res.oracle
index 1231de6e7feabd5cdf451917f0cf9259b611b021..8e9d20e5c7387bf1c1a5a36137a9a7353329aa1f 100644
--- a/src/plugins/wp/tests/wp_typed/oracle_qualif/unit_float.res.oracle
+++ b/src/plugins/wp/tests/wp_typed/oracle_qualif/unit_float.res.oracle
@@ -7,12 +7,12 @@
 [wp] Loading driver 'share/wp.driver'
 [wp] Warning: Missing RTE guards
 [wp] 6 goals scheduled
-[wp] [Qed] Goal typed_main_post_CST_F : Valid
-[wp] [Qed] Goal typed_main_post_CST_D : Valid
-[wp] [Qed] Goal typed_main_post_CNV_F : Valid
-[wp] [Qed] Goal typed_main_post_CNV_D : Valid
-[wp] [Qed] Goal typed_main_post_VAR_F : Valid
-[wp] [Qed] Goal typed_main_post_VAR_D : Valid
+[wp] [Qed] Goal typed_main_ensures_CST_F : Valid
+[wp] [Qed] Goal typed_main_ensures_CST_D : Valid
+[wp] [Qed] Goal typed_main_ensures_CNV_F : Valid
+[wp] [Qed] Goal typed_main_ensures_CNV_D : Valid
+[wp] [Qed] Goal typed_main_ensures_VAR_F : Valid
+[wp] [Qed] Goal typed_main_ensures_VAR_D : Valid
 [wp] Proved goals:    6 / 6
   Qed:             6
 [wp] Report 'tests/wp_typed/unit_float.i.0.report.json'
diff --git a/src/plugins/wp/tests/wp_typed/oracle_qualif/unit_hard.res.oracle b/src/plugins/wp/tests/wp_typed/oracle_qualif/unit_hard.res.oracle
index 75ce14ece7b1b71d4c70fd7480221283b870c4ff..9f608e372b6afc911ba866a11fb091dedc7bf480 100644
--- a/src/plugins/wp/tests/wp_typed/oracle_qualif/unit_hard.res.oracle
+++ b/src/plugins/wp/tests/wp_typed/oracle_qualif/unit_hard.res.oracle
@@ -4,9 +4,9 @@
 [wp] Loading driver 'share/wp.driver'
 [wp] Warning: Missing RTE guards
 [wp] 3 goals scheduled
-[wp] [Qed] Goal typed_main_pre_p_is_33FF : Valid
-[wp] [Qed] Goal typed_main_pre_q_is_66F0 : Valid
-[wp] [Alt-Ergo] Goal typed_main_pre_r_is_q1_ko : Unknown
+[wp] [Qed] Goal typed_main_requires_p_is_33FF : Valid
+[wp] [Qed] Goal typed_main_requires_q_is_66F0 : Valid
+[wp] [Alt-Ergo] Goal typed_main_requires_r_is_q1_ko : Unknown
 [wp] Proved goals:    2 / 3
   Qed:             2 
   Alt-Ergo:        0  (unknown: 1)
diff --git a/src/plugins/wp/tests/wp_typed/oracle_qualif/unit_ite.res.oracle b/src/plugins/wp/tests/wp_typed/oracle_qualif/unit_ite.res.oracle
index 133ef86e7ba4d5f5a7a7c5288926e10e2eac1dc7..2bf33e40c9f2eac3d57bcd02040efbae8ab93899 100644
--- a/src/plugins/wp/tests/wp_typed/oracle_qualif/unit_ite.res.oracle
+++ b/src/plugins/wp/tests/wp_typed/oracle_qualif/unit_ite.res.oracle
@@ -4,7 +4,7 @@
 [wp] Loading driver 'share/wp.driver'
 [wp] Warning: Missing RTE guards
 [wp] 1 goal scheduled
-[wp] [Qed] Goal typed_check_post : Valid
+[wp] [Qed] Goal typed_check_ensures : Valid
 [wp] Proved goals:    1 / 1
   Qed:             1
 [wp] Report 'tests/wp_typed/unit_ite.i.0.report.json'
diff --git a/src/plugins/wp/tests/wp_typed/oracle_qualif/unit_labels.res.oracle b/src/plugins/wp/tests/wp_typed/oracle_qualif/unit_labels.res.oracle
index adbf31f89a8f903cfc77a7882fc3dec7c5087b41..7e46e25582e8429d100714ee198f8b908d97bdfd 100644
--- a/src/plugins/wp/tests/wp_typed/oracle_qualif/unit_labels.res.oracle
+++ b/src/plugins/wp/tests/wp_typed/oracle_qualif/unit_labels.res.oracle
@@ -4,7 +4,7 @@
 [wp] Loading driver 'share/wp.driver'
 [wp] Warning: Missing RTE guards
 [wp] 3 goals scheduled
-[wp] [Alt-Ergo] Goal typed_duplet_post : Valid
+[wp] [Alt-Ergo] Goal typed_duplet_ensures : Valid
 [wp] [Alt-Ergo] Goal typed_duplet_assert_PI : Valid
 [wp] [Alt-Ergo] Goal typed_duplet_assert_PJ : Valid
 [wp] Proved goals:    3 / 3
diff --git a/src/plugins/wp/tests/wp_typed/oracle_qualif/unit_local.0.res.oracle b/src/plugins/wp/tests/wp_typed/oracle_qualif/unit_local.0.res.oracle
index b745a6959fa51fba82d3b8cbe34a0f36bfd33e25..7227cb987de43a153c9ed0c16e54ffe88f7b972f 100644
--- a/src/plugins/wp/tests/wp_typed/oracle_qualif/unit_local.0.res.oracle
+++ b/src/plugins/wp/tests/wp_typed/oracle_qualif/unit_local.0.res.oracle
@@ -4,9 +4,9 @@
 [wp] Loading driver 'share/wp.driver'
 [wp] Warning: Missing RTE guards
 [wp] 3 goals scheduled
-[wp] [Qed] Goal typed_bar_assign : Valid
-[wp] [Qed] Goal typed_foo_assign_part1 : Valid
-[wp] [Alt-Ergo] Goal typed_foo_assign_part2 : Valid
+[wp] [Qed] Goal typed_bar_assigns : Valid
+[wp] [Qed] Goal typed_foo_assigns_part1 : Valid
+[wp] [Alt-Ergo] Goal typed_foo_assigns_part2 : Valid
 [wp] Proved goals:    3 / 3
   Qed:             2 
   Alt-Ergo:        1
diff --git a/src/plugins/wp/tests/wp_typed/oracle_qualif/unit_local.1.res.oracle b/src/plugins/wp/tests/wp_typed/oracle_qualif/unit_local.1.res.oracle
index 78ec67483d3acdfde7ca5820114b77a1d689e0e6..3d3c8a01300184dcaea4550d2fd3a2d11f8ad975 100644
--- a/src/plugins/wp/tests/wp_typed/oracle_qualif/unit_local.1.res.oracle
+++ b/src/plugins/wp/tests/wp_typed/oracle_qualif/unit_local.1.res.oracle
@@ -4,9 +4,9 @@
 [wp] Loading driver 'share/wp.driver'
 [wp] Warning: Missing RTE guards
 [wp] 3 goals scheduled
-[wp] [Alt-Ergo] Goal typed_raw_bar_assign : Valid
-[wp] [Alt-Ergo] Goal typed_raw_foo_assign_part1 : Valid
-[wp] [Alt-Ergo] Goal typed_raw_foo_assign_part2 : Valid
+[wp] [Alt-Ergo] Goal typed_raw_bar_assigns : Valid
+[wp] [Alt-Ergo] Goal typed_raw_foo_assigns_part1 : Valid
+[wp] [Alt-Ergo] Goal typed_raw_foo_assigns_part2 : Valid
 [wp] Proved goals:    3 / 3
   Qed:             0 
   Alt-Ergo:        3
diff --git a/src/plugins/wp/tests/wp_typed/oracle_qualif/unit_loopscope.0.res.oracle b/src/plugins/wp/tests/wp_typed/oracle_qualif/unit_loopscope.0.res.oracle
index a675b0321f47aa997488709002241e089530cd42..b2061aaf772d9df676fc6447432bc1abb323a55a 100644
--- a/src/plugins/wp/tests/wp_typed/oracle_qualif/unit_loopscope.0.res.oracle
+++ b/src/plugins/wp/tests/wp_typed/oracle_qualif/unit_loopscope.0.res.oracle
@@ -6,8 +6,8 @@
 [wp] tests/wp_typed/unit_loopscope.i:14: Warning: 
   Missing assigns clause (assigns 'everything' instead)
 [wp] 2 goals scheduled
-[wp] [Qed] Goal typed_f_loop_inv_preserved : Valid
-[wp] [Alt-Ergo] Goal typed_f_loop_inv_established : Unknown
+[wp] [Qed] Goal typed_f_loop_invariant_preserved : Valid
+[wp] [Alt-Ergo] Goal typed_f_loop_invariant_established : Unknown
 [wp] Proved goals:    1 / 2
   Qed:             1 
   Alt-Ergo:        0  (unknown: 1)
diff --git a/src/plugins/wp/tests/wp_typed/oracle_qualif/unit_loopscope.1.res.oracle b/src/plugins/wp/tests/wp_typed/oracle_qualif/unit_loopscope.1.res.oracle
index a3cbbc8f420d320a28e3bc44cbeae791c150bba4..d703b7baa1c6cab1069eaf5fe9262a112f81e35b 100644
--- a/src/plugins/wp/tests/wp_typed/oracle_qualif/unit_loopscope.1.res.oracle
+++ b/src/plugins/wp/tests/wp_typed/oracle_qualif/unit_loopscope.1.res.oracle
@@ -6,8 +6,8 @@
 [wp] tests/wp_typed/unit_loopscope.i:14: Warning: 
   Missing assigns clause (assigns 'everything' instead)
 [wp] 2 goals scheduled
-[wp] [Qed] Goal typed_ref_f_loop_inv_preserved : Valid
-[wp] [Alt-Ergo] Goal typed_ref_f_loop_inv_established : Unknown
+[wp] [Qed] Goal typed_ref_f_loop_invariant_preserved : Valid
+[wp] [Alt-Ergo] Goal typed_ref_f_loop_invariant_established : Unknown
 [wp] Proved goals:    1 / 2
   Qed:             1 
   Alt-Ergo:        0  (unknown: 1)
diff --git a/src/plugins/wp/tests/wp_typed/oracle_qualif/unit_matrix.res.oracle b/src/plugins/wp/tests/wp_typed/oracle_qualif/unit_matrix.res.oracle
index 90dcaaae65b8ee59320705559744d27186da405a..2f2abe5fd490075164b369f079aebb42299febfe 100644
--- a/src/plugins/wp/tests/wp_typed/oracle_qualif/unit_matrix.res.oracle
+++ b/src/plugins/wp/tests/wp_typed/oracle_qualif/unit_matrix.res.oracle
@@ -4,9 +4,9 @@
 [wp] Loading driver 'share/wp.driver'
 [wp] Warning: Missing RTE guards
 [wp] 3 goals scheduled
-[wp] [Alt-Ergo] Goal typed_make_post_OK1 : Valid
-[wp] [Qed] Goal typed_make_post_OK2 : Valid
-[wp] [Alt-Ergo] Goal typed_make_post_KO : Unknown
+[wp] [Alt-Ergo] Goal typed_make_ensures_OK1 : Valid
+[wp] [Qed] Goal typed_make_ensures_OK2 : Valid
+[wp] [Alt-Ergo] Goal typed_make_ensures_KO : Unknown
 [wp] Proved goals:    2 / 3
   Qed:             1 
   Alt-Ergo:        1  (unknown: 1)
diff --git a/src/plugins/wp/tests/wp_typed/oracle_qualif/unit_string.res.oracle b/src/plugins/wp/tests/wp_typed/oracle_qualif/unit_string.res.oracle
index a50f64d5bc92af38c5ad8d5c44f473a6ebc4599a..93cfd59ec4c2bfbea470e88d39c0e2542fb7424a 100644
--- a/src/plugins/wp/tests/wp_typed/oracle_qualif/unit_string.res.oracle
+++ b/src/plugins/wp/tests/wp_typed/oracle_qualif/unit_string.res.oracle
@@ -16,5 +16,5 @@
 [wp] Report 'tests/wp_typed/unit_string.i.0.report.json'
 -------------------------------------------------------------
 Functions           WP     Alt-Ergo        Total   Success
-f                   -       6 (120..144)     6       100%
+f                   -       6 (128..152)     6       100%
 -------------------------------------------------------------
diff --git a/src/plugins/wp/tests/wp_typed/oracle_qualif/unit_tset.res.oracle b/src/plugins/wp/tests/wp_typed/oracle_qualif/unit_tset.res.oracle
index 92f9519eb50f9387583b7216946e751244b72fb9..27f38791eabe7e1acc381b905d9a26eeb0f7d48c 100644
--- a/src/plugins/wp/tests/wp_typed/oracle_qualif/unit_tset.res.oracle
+++ b/src/plugins/wp/tests/wp_typed/oracle_qualif/unit_tset.res.oracle
@@ -4,8 +4,8 @@
 [wp] Loading driver 'share/wp.driver'
 [wp] Warning: Missing RTE guards
 [wp] 2 goals scheduled
-[wp] [Qed] Goal typed_complex_call_job_pre : Valid
-[wp] [Qed] Goal typed_complex_stmt_assign : Valid
+[wp] [Qed] Goal typed_complex_call_job_requires : Valid
+[wp] [Qed] Goal typed_complex_assigns : Valid
 [wp] Proved goals:    2 / 2
   Qed:             2
 [wp] Report 'tests/wp_typed/unit_tset.i.0.report.json'
diff --git a/src/plugins/wp/tests/wp_typed/oracle_qualif/user_bitwise.0.res.oracle b/src/plugins/wp/tests/wp_typed/oracle_qualif/user_bitwise.0.res.oracle
index cb76492cf52a2c06f9ff9486d2cb585ff7fcd10a..fd7d9e0c8a0ebfa438db6fea1f129d4742391219 100644
--- a/src/plugins/wp/tests/wp_typed/oracle_qualif/user_bitwise.0.res.oracle
+++ b/src/plugins/wp/tests/wp_typed/oracle_qualif/user_bitwise.0.res.oracle
@@ -4,28 +4,28 @@
 [wp] Loading driver 'share/wp.driver'
 [wp] Warning: Missing RTE guards
 [wp] 12 goals scheduled
-[wp] [Qed] Goal typed_ref_rl1_post_b0 : Valid
-[wp] [Alt-Ergo] Goal typed_ref_rl1_post_bk : Valid
-[wp] [Alt-Ergo] Goal typed_ref_rln32_post_b1 : Valid
-[wp] [Alt-Ergo] Goal typed_ref_rln32_post_b2 : Valid
-[wp] [Alt-Ergo] Goal typed_ref_rln64_post_b1 : Valid
-[wp] [Alt-Ergo] Goal typed_ref_rln64_post_b2 : Valid
-[wp] [Alt-Ergo] Goal typed_ref_rr1_post_b0 : Valid
-[wp] [Alt-Ergo] Goal typed_ref_rr1_post_bk : Valid
-[wp] [Alt-Ergo] Goal typed_ref_rrn32_post_b1 : Valid
-[wp] [Alt-Ergo] Goal typed_ref_rrn32_post_b2 : Valid
-[wp] [Alt-Ergo] Goal typed_ref_rrn64_post_b1 : Valid
-[wp] [Alt-Ergo] Goal typed_ref_rrn64_post_b2 : Valid
+[wp] [Qed] Goal typed_ref_rl1_ensures_b0 : Valid
+[wp] [Alt-Ergo] Goal typed_ref_rl1_ensures_bk : Valid
+[wp] [Alt-Ergo] Goal typed_ref_rln32_ensures_b1 : Valid
+[wp] [Alt-Ergo] Goal typed_ref_rln32_ensures_b2 : Valid
+[wp] [Alt-Ergo] Goal typed_ref_rln64_ensures_b1 : Valid
+[wp] [Alt-Ergo] Goal typed_ref_rln64_ensures_b2 : Valid
+[wp] [Alt-Ergo] Goal typed_ref_rr1_ensures_b0 : Valid
+[wp] [Alt-Ergo] Goal typed_ref_rr1_ensures_bk : Valid
+[wp] [Alt-Ergo] Goal typed_ref_rrn32_ensures_b1 : Valid
+[wp] [Alt-Ergo] Goal typed_ref_rrn32_ensures_b2 : Valid
+[wp] [Alt-Ergo] Goal typed_ref_rrn64_ensures_b1 : Valid
+[wp] [Alt-Ergo] Goal typed_ref_rrn64_ensures_b2 : Valid
 [wp] Proved goals:   12 / 12
   Qed:             1 
   Alt-Ergo:       11
 [wp] Report 'tests/wp_typed/user_bitwise.i.0.report.json'
 -------------------------------------------------------------
 Functions           WP     Alt-Ergo        Total   Success
-rl1                  1      1 (44..56)       2       100%
-rr1                 -       2 (40..52)       2       100%
-rln32               -       2 (48..60)       2       100%
-rrn32               -       2 (48..60)       2       100%
-rln64               -       2 (48..60)       2       100%
-rrn64               -       2 (48..60)       2       100%
+rl1                  1      1 (48..60)       2       100%
+rr1                 -       2 (44..56)       2       100%
+rln32               -       2 (52..64)       2       100%
+rrn32               -       2 (52..64)       2       100%
+rln64               -       2 (52..64)       2       100%
+rrn64               -       2 (52..64)       2       100%
 -------------------------------------------------------------
diff --git a/src/plugins/wp/tests/wp_typed/oracle_qualif/user_collect.res.oracle b/src/plugins/wp/tests/wp_typed/oracle_qualif/user_collect.res.oracle
index fc2732f1a63caca9f53bd29ecd40aa9ed056f5c2..849e9f492f0adecf9aeadf786c6cfc72d2c870ae 100644
--- a/src/plugins/wp/tests/wp_typed/oracle_qualif/user_collect.res.oracle
+++ b/src/plugins/wp/tests/wp_typed/oracle_qualif/user_collect.res.oracle
@@ -4,38 +4,38 @@
 [wp] Loading driver 'share/wp.driver'
 [wp] Warning: Missing RTE guards
 [wp] 32 goals scheduled
-[wp] [Qed] Goal typed_caller_post_K : Valid
-[wp] [Alt-Ergo] Goal typed_caller_post_P1 : Valid
-[wp] [Alt-Ergo] Goal typed_caller_post_P2 : Valid
-[wp] [Alt-Ergo] Goal typed_caller_call_job_pre : Valid
-[wp] [Alt-Ergo] Goal typed_caller_call_job_pre_2 : Valid
-[wp] [Qed] Goal typed_caller2_post_K : Valid
-[wp] [Alt-Ergo] Goal typed_caller2_post_Q1 : Valid
-[wp] [Alt-Ergo] Goal typed_caller2_post_Q2 : Valid
-[wp] [Alt-Ergo] Goal typed_caller2_post_R : Valid
-[wp] [Alt-Ergo] Goal typed_caller2_call_job2_pre : Valid
-[wp] [Alt-Ergo] Goal typed_caller2_call_job2_pre_2 : Valid
-[wp] [Qed] Goal typed_caller3_post_K : Valid
-[wp] [Alt-Ergo] Goal typed_caller3_post_Q1 : Valid
-[wp] [Alt-Ergo] Goal typed_caller3_post_Q2 : Valid
-[wp] [Alt-Ergo] Goal typed_caller3_post_R : Valid
-[wp] [Alt-Ergo] Goal typed_caller3_call_job3_pre : Valid
-[wp] [Alt-Ergo] Goal typed_caller3_call_job3_pre_2 : Valid
-[wp] [Qed] Goal typed_job_post_K : Valid
-[wp] [Qed] Goal typed_job_post_P : Valid
-[wp] [Qed] Goal typed_job_assign_part1 : Valid
-[wp] [Qed] Goal typed_job_assign_part2 : Valid
-[wp] [Qed] Goal typed_job_assign_part3 : Valid
-[wp] [Qed] Goal typed_job2_post_K : Valid
-[wp] [Qed] Goal typed_job2_post_Q : Valid
-[wp] [Qed] Goal typed_job2_assign_part1 : Valid
-[wp] [Qed] Goal typed_job2_assign_part2 : Valid
-[wp] [Qed] Goal typed_job2_assign_part3 : Valid
-[wp] [Qed] Goal typed_job3_post_K : Valid
-[wp] [Alt-Ergo] Goal typed_job3_post_Q : Valid
-[wp] [Qed] Goal typed_job3_assign_part1 : Valid
-[wp] [Qed] Goal typed_job3_assign_part2 : Valid
-[wp] [Qed] Goal typed_job3_assign_part3 : Valid
+[wp] [Qed] Goal typed_caller_ensures_K : Valid
+[wp] [Alt-Ergo] Goal typed_caller_ensures_P1 : Valid
+[wp] [Alt-Ergo] Goal typed_caller_ensures_P2 : Valid
+[wp] [Alt-Ergo] Goal typed_caller_call_job_requires : Valid
+[wp] [Alt-Ergo] Goal typed_caller_call_job_requires : Valid
+[wp] [Qed] Goal typed_caller2_ensures_K : Valid
+[wp] [Alt-Ergo] Goal typed_caller2_ensures_Q1 : Valid
+[wp] [Alt-Ergo] Goal typed_caller2_ensures_Q2 : Valid
+[wp] [Alt-Ergo] Goal typed_caller2_ensures_R : Valid
+[wp] [Alt-Ergo] Goal typed_caller2_call_job2_requires : Valid
+[wp] [Alt-Ergo] Goal typed_caller2_call_job2_requires : Valid
+[wp] [Qed] Goal typed_caller3_ensures_K : Valid
+[wp] [Alt-Ergo] Goal typed_caller3_ensures_Q1 : Valid
+[wp] [Alt-Ergo] Goal typed_caller3_ensures_Q2 : Valid
+[wp] [Alt-Ergo] Goal typed_caller3_ensures_R : Valid
+[wp] [Alt-Ergo] Goal typed_caller3_call_job3_requires : Valid
+[wp] [Alt-Ergo] Goal typed_caller3_call_job3_requires : Valid
+[wp] [Qed] Goal typed_job_ensures_K : Valid
+[wp] [Qed] Goal typed_job_ensures_P : Valid
+[wp] [Qed] Goal typed_job_assigns_part1 : Valid
+[wp] [Qed] Goal typed_job_assigns_part2 : Valid
+[wp] [Qed] Goal typed_job_assigns_part3 : Valid
+[wp] [Qed] Goal typed_job2_ensures_K : Valid
+[wp] [Qed] Goal typed_job2_ensures_Q : Valid
+[wp] [Qed] Goal typed_job2_assigns_part1 : Valid
+[wp] [Qed] Goal typed_job2_assigns_part2 : Valid
+[wp] [Qed] Goal typed_job2_assigns_part3 : Valid
+[wp] [Qed] Goal typed_job3_ensures_K : Valid
+[wp] [Alt-Ergo] Goal typed_job3_ensures_Q : Valid
+[wp] [Qed] Goal typed_job3_assigns_part1 : Valid
+[wp] [Qed] Goal typed_job3_assigns_part2 : Valid
+[wp] [Qed] Goal typed_job3_assigns_part3 : Valid
 [wp] Proved goals:   32 / 32
   Qed:            17 
   Alt-Ergo:       15
@@ -46,6 +46,6 @@ job                  5     -                 5       100%
 job2                 5     -                 5       100%
 job3                 4      1 (16..28)       5       100%
 caller               1      4 (32..44)       5       100%
-caller2              1      5 (44..56)       6       100%
-caller3              1      5 (44..56)       6       100%
+caller2              1      5 (48..60)       6       100%
+caller3              1      5 (48..60)       6       100%
 -------------------------------------------------------------
diff --git a/src/plugins/wp/tests/wp_typed/oracle_qualif/user_init.res.oracle b/src/plugins/wp/tests/wp_typed/oracle_qualif/user_init.res.oracle
index 44668e5e973c7de919e3d2c9665164aff4f534f1..4f2b39175f74f0cfd99af1fef3f3e369e2dc8310 100644
--- a/src/plugins/wp/tests/wp_typed/oracle_qualif/user_init.res.oracle
+++ b/src/plugins/wp/tests/wp_typed/oracle_qualif/user_init.res.oracle
@@ -4,14 +4,14 @@
 [wp] Loading driver 'share/wp.driver'
 [wp] Warning: Missing RTE guards
 [wp] 8 goals scheduled
-[wp] [Alt-Ergo] Goal typed_init_post : Valid
-[wp] [Alt-Ergo] Goal typed_init_loop_inv_Partial_preserved : Valid
-[wp] [Qed] Goal typed_init_loop_inv_Partial_established : Valid
-[wp] [Alt-Ergo] Goal typed_init_loop_inv_Range_preserved : Valid
-[wp] [Qed] Goal typed_init_loop_inv_Range_established : Valid
-[wp] [Qed] Goal typed_init_loop_assign_part1 : Valid
-[wp] [Alt-Ergo] Goal typed_init_loop_assign_part2 : Valid
-[wp] [Qed] Goal typed_init_assign : Valid
+[wp] [Alt-Ergo] Goal typed_init_ensures : Valid
+[wp] [Alt-Ergo] Goal typed_init_loop_invariant_Partial_preserved : Valid
+[wp] [Qed] Goal typed_init_loop_invariant_Partial_established : Valid
+[wp] [Alt-Ergo] Goal typed_init_loop_invariant_Range_preserved : Valid
+[wp] [Qed] Goal typed_init_loop_invariant_Range_established : Valid
+[wp] [Qed] Goal typed_init_loop_assigns_part1 : Valid
+[wp] [Alt-Ergo] Goal typed_init_loop_assigns_part2 : Valid
+[wp] [Qed] Goal typed_init_assigns : Valid
 [wp] Proved goals:    8 / 8
   Qed:             4 
   Alt-Ergo:        4
diff --git a/src/plugins/wp/tests/wp_typed/oracle_qualif/user_injector.0.res.oracle b/src/plugins/wp/tests/wp_typed/oracle_qualif/user_injector.0.res.oracle
index c8109017fd2ef717deeed3b47704c49fed865024..6f0d6cc19cc8713e8e96e37c4d9ac57c90256bd9 100644
--- a/src/plugins/wp/tests/wp_typed/oracle_qualif/user_injector.0.res.oracle
+++ b/src/plugins/wp/tests/wp_typed/oracle_qualif/user_injector.0.res.oracle
@@ -4,26 +4,26 @@
 [wp] Loading driver 'share/wp.driver'
 [wp] Warning: Missing RTE guards
 [wp] 20 goals scheduled
-[wp] [Qed] Goal typed_job_post_SEQ : Valid
-[wp] [Qed] Goal typed_job_post_ID1 : Valid
-[wp] [Qed] Goal typed_job_post_ID2 : Valid
-[wp] [Qed] Goal typed_job_post_R1 : Valid
-[wp] [Qed] Goal typed_job_post_R2 : Valid
-[wp] [Qed] Goal typed_job_post_R0 : Valid
-[wp] [Qed] Goal typed_job_post_E1 : Valid
-[wp] [Qed] Goal typed_job_post_E2 : Valid
-[wp] [Qed] Goal typed_job_assign_exit_part1 : Valid
-[wp] [Qed] Goal typed_job_assign_exit_part2 : Valid
-[wp] [Qed] Goal typed_job_assign_exit_part3 : Valid
-[wp] [Qed] Goal typed_job_assign_normal_part1 : Valid
-[wp] [Qed] Goal typed_job_assign_normal_part2 : Valid
-[wp] [Qed] Goal typed_job_assign_normal_part3 : Valid
-[wp] [Qed] Goal typed_job_assign_normal_part4 : Valid
-[wp] [Qed] Goal typed_job_assign_normal_part5 : Valid
-[wp] [Qed] Goal typed_job_assign_normal_part6 : Valid
-[wp] [Qed] Goal typed_job_assign_normal_part7 : Valid
-[wp] [Qed] Goal typed_job_assign_normal_part8 : Valid
-[wp] [Qed] Goal typed_job_assign_normal_part9 : Valid
+[wp] [Qed] Goal typed_job_ensures_SEQ : Valid
+[wp] [Qed] Goal typed_job_ensures_ID1 : Valid
+[wp] [Qed] Goal typed_job_ensures_ID2 : Valid
+[wp] [Qed] Goal typed_job_ensures_R1 : Valid
+[wp] [Qed] Goal typed_job_ensures_R2 : Valid
+[wp] [Qed] Goal typed_job_ensures_R0 : Valid
+[wp] [Qed] Goal typed_job_ensures_E1 : Valid
+[wp] [Qed] Goal typed_job_ensures_E2 : Valid
+[wp] [Qed] Goal typed_job_assigns_exit_part1 : Valid
+[wp] [Qed] Goal typed_job_assigns_exit_part2 : Valid
+[wp] [Qed] Goal typed_job_assigns_exit_part3 : Valid
+[wp] [Qed] Goal typed_job_assigns_normal_part1 : Valid
+[wp] [Qed] Goal typed_job_assigns_normal_part2 : Valid
+[wp] [Qed] Goal typed_job_assigns_normal_part3 : Valid
+[wp] [Qed] Goal typed_job_assigns_normal_part4 : Valid
+[wp] [Qed] Goal typed_job_assigns_normal_part5 : Valid
+[wp] [Qed] Goal typed_job_assigns_normal_part6 : Valid
+[wp] [Qed] Goal typed_job_assigns_normal_part7 : Valid
+[wp] [Qed] Goal typed_job_assigns_normal_part8 : Valid
+[wp] [Qed] Goal typed_job_assigns_normal_part9 : Valid
 [wp] Proved goals:   20 / 20
   Qed:            20
 [wp] Report 'tests/wp_typed/user_injector.i.0.report.json'
diff --git a/src/plugins/wp/tests/wp_typed/oracle_qualif/user_injector.1.res.oracle b/src/plugins/wp/tests/wp_typed/oracle_qualif/user_injector.1.res.oracle
index 5a96fa0d2d8772681a35250dc3f3e9588ca2dccb..c2931cef0f2e16299f2fd4670d21c35a6468007e 100644
--- a/src/plugins/wp/tests/wp_typed/oracle_qualif/user_injector.1.res.oracle
+++ b/src/plugins/wp/tests/wp_typed/oracle_qualif/user_injector.1.res.oracle
@@ -4,22 +4,22 @@
 [wp] Loading driver 'share/wp.driver'
 [wp] Warning: Missing RTE guards
 [wp] 16 goals scheduled
-[wp] [Qed] Goal typed_ref_job_post_SEQ : Valid
-[wp] [Qed] Goal typed_ref_job_post_ID1 : Valid
-[wp] [Qed] Goal typed_ref_job_post_ID2 : Valid
-[wp] [Qed] Goal typed_ref_job_post_R1 : Valid
-[wp] [Qed] Goal typed_ref_job_post_R2 : Valid
-[wp] [Qed] Goal typed_ref_job_post_R0 : Valid
-[wp] [Qed] Goal typed_ref_job_post_E1 : Valid
-[wp] [Qed] Goal typed_ref_job_post_E2 : Valid
-[wp] [Qed] Goal typed_ref_job_assign_exit_part1 : Valid
-[wp] [Qed] Goal typed_ref_job_assign_exit_part2 : Valid
-[wp] [Qed] Goal typed_ref_job_assign_normal_part1 : Valid
-[wp] [Qed] Goal typed_ref_job_assign_normal_part2 : Valid
-[wp] [Qed] Goal typed_ref_job_assign_normal_part3 : Valid
-[wp] [Qed] Goal typed_ref_job_assign_normal_part4 : Valid
-[wp] [Qed] Goal typed_ref_job_assign_normal_part5 : Valid
-[wp] [Qed] Goal typed_ref_job_assign_normal_part6 : Valid
+[wp] [Qed] Goal typed_ref_job_ensures_SEQ : Valid
+[wp] [Qed] Goal typed_ref_job_ensures_ID1 : Valid
+[wp] [Qed] Goal typed_ref_job_ensures_ID2 : Valid
+[wp] [Qed] Goal typed_ref_job_ensures_R1 : Valid
+[wp] [Qed] Goal typed_ref_job_ensures_R2 : Valid
+[wp] [Qed] Goal typed_ref_job_ensures_R0 : Valid
+[wp] [Qed] Goal typed_ref_job_ensures_E1 : Valid
+[wp] [Qed] Goal typed_ref_job_ensures_E2 : Valid
+[wp] [Qed] Goal typed_ref_job_assigns_exit_part1 : Valid
+[wp] [Qed] Goal typed_ref_job_assigns_exit_part2 : Valid
+[wp] [Qed] Goal typed_ref_job_assigns_normal_part1 : Valid
+[wp] [Qed] Goal typed_ref_job_assigns_normal_part2 : Valid
+[wp] [Qed] Goal typed_ref_job_assigns_normal_part3 : Valid
+[wp] [Qed] Goal typed_ref_job_assigns_normal_part4 : Valid
+[wp] [Qed] Goal typed_ref_job_assigns_normal_part5 : Valid
+[wp] [Qed] Goal typed_ref_job_assigns_normal_part6 : Valid
 [wp] Proved goals:   16 / 16
   Qed:            16
 [wp] Report 'tests/wp_typed/user_injector.i.1.report.json'
diff --git a/src/plugins/wp/tests/wp_typed/oracle_qualif/user_rec.res.oracle b/src/plugins/wp/tests/wp_typed/oracle_qualif/user_rec.res.oracle
index cea18d8d736c4e364422bbec20a221c0191d20ed..5661eb3f32c1555b8971f937cf7337c7edb420e6 100644
--- a/src/plugins/wp/tests/wp_typed/oracle_qualif/user_rec.res.oracle
+++ b/src/plugins/wp/tests/wp_typed/oracle_qualif/user_rec.res.oracle
@@ -4,24 +4,24 @@
 [wp] Loading driver 'share/wp.driver'
 [wp] Warning: Missing RTE guards
 [wp] 18 goals scheduled
-[wp] [Alt-Ergo] Goal typed_F1_post : Valid
-[wp] [Alt-Ergo] Goal typed_F1_loop_inv_preserved : Valid
-[wp] [Alt-Ergo] Goal typed_F1_loop_inv_established : Valid
-[wp] [Alt-Ergo] Goal typed_F1_loop_inv_2_preserved : Valid
-[wp] [Alt-Ergo] Goal typed_F1_loop_inv_2_established : Valid
-[wp] [Qed] Goal typed_F1_loop_assign : Valid
-[wp] [Alt-Ergo] Goal typed_F2_post : Valid
-[wp] [Alt-Ergo] Goal typed_F2_loop_inv_PART_preserved : Valid
-[wp] [Alt-Ergo] Goal typed_F2_loop_inv_PART_established : Valid
-[wp] [Alt-Ergo] Goal typed_F2_loop_inv_RANGE_preserved : Valid
-[wp] [Alt-Ergo] Goal typed_F2_loop_inv_RANGE_established : Valid
-[wp] [Qed] Goal typed_F2_loop_assign : Valid
-[wp] [Alt-Ergo] Goal typed_F4_post : Valid
-[wp] [Alt-Ergo] Goal typed_F4_loop_inv_NEVER_preserved : Valid
-[wp] [Alt-Ergo] Goal typed_F4_loop_inv_NEVER_established : Valid
-[wp] [Alt-Ergo] Goal typed_F4_loop_inv_RANGE_preserved : Valid
-[wp] [Alt-Ergo] Goal typed_F4_loop_inv_RANGE_established : Valid
-[wp] [Qed] Goal typed_F4_loop_assign : Valid
+[wp] [Alt-Ergo] Goal typed_F1_ensures : Valid
+[wp] [Alt-Ergo] Goal typed_F1_loop_invariant_preserved : Valid
+[wp] [Alt-Ergo] Goal typed_F1_loop_invariant_established : Valid
+[wp] [Alt-Ergo] Goal typed_F1_loop_invariant_2_preserved : Valid
+[wp] [Alt-Ergo] Goal typed_F1_loop_invariant_2_established : Valid
+[wp] [Qed] Goal typed_F1_loop_assigns : Valid
+[wp] [Alt-Ergo] Goal typed_F2_ensures : Valid
+[wp] [Alt-Ergo] Goal typed_F2_loop_invariant_PART_preserved : Valid
+[wp] [Alt-Ergo] Goal typed_F2_loop_invariant_PART_established : Valid
+[wp] [Alt-Ergo] Goal typed_F2_loop_invariant_RANGE_preserved : Valid
+[wp] [Alt-Ergo] Goal typed_F2_loop_invariant_RANGE_established : Valid
+[wp] [Qed] Goal typed_F2_loop_assigns : Valid
+[wp] [Alt-Ergo] Goal typed_F4_ensures : Valid
+[wp] [Alt-Ergo] Goal typed_F4_loop_invariant_NEVER_preserved : Valid
+[wp] [Alt-Ergo] Goal typed_F4_loop_invariant_NEVER_established : Valid
+[wp] [Alt-Ergo] Goal typed_F4_loop_invariant_RANGE_preserved : Valid
+[wp] [Alt-Ergo] Goal typed_F4_loop_invariant_RANGE_established : Valid
+[wp] [Qed] Goal typed_F4_loop_assigns : Valid
 [wp] Proved goals:   18 / 18
   Qed:             3 
   Alt-Ergo:       15
diff --git a/src/plugins/wp/tests/wp_typed/oracle_qualif/user_string.res.oracle b/src/plugins/wp/tests/wp_typed/oracle_qualif/user_string.res.oracle
index 7897a72d1b43a469d846e4f6c7edad15eb3f302f..cf3e048e553914572b5690448ec6824fc6df3fe0 100644
--- a/src/plugins/wp/tests/wp_typed/oracle_qualif/user_string.res.oracle
+++ b/src/plugins/wp/tests/wp_typed/oracle_qualif/user_string.res.oracle
@@ -4,19 +4,19 @@
 [wp] Loading driver 'share/wp.driver'
 [wp] Warning: Missing RTE guards
 [wp] 13 goals scheduled
-[wp] [Qed] Goal typed_strlen_post : Valid
-[wp] [Qed] Goal typed_strlen_loop_inv_BASE_preserved : Valid
-[wp] [Qed] Goal typed_strlen_loop_inv_BASE_established : Valid
-[wp] [Alt-Ergo] Goal typed_strlen_loop_inv_RANGE_preserved : Valid
-[wp] [Alt-Ergo] Goal typed_strlen_loop_inv_RANGE_established : Valid
-[wp] [Alt-Ergo] Goal typed_strlen_loop_inv_ZERO_preserved : Valid
-[wp] [Qed] Goal typed_strlen_loop_inv_ZERO_established : Valid
+[wp] [Qed] Goal typed_strlen_ensures : Valid
+[wp] [Qed] Goal typed_strlen_loop_invariant_BASE_preserved : Valid
+[wp] [Qed] Goal typed_strlen_loop_invariant_BASE_established : Valid
+[wp] [Alt-Ergo] Goal typed_strlen_loop_invariant_RANGE_preserved : Valid
+[wp] [Alt-Ergo] Goal typed_strlen_loop_invariant_RANGE_established : Valid
+[wp] [Alt-Ergo] Goal typed_strlen_loop_invariant_ZERO_preserved : Valid
+[wp] [Qed] Goal typed_strlen_loop_invariant_ZERO_established : Valid
 [wp] [Alt-Ergo] Goal typed_strlen_assert_END : Valid
-[wp] [Qed] Goal typed_strlen_loop_assign : Valid
-[wp] [Qed] Goal typed_strlen_assign_part1 : Valid
-[wp] [Qed] Goal typed_strlen_assign_part2 : Valid
-[wp] [Qed] Goal typed_strlen_loop_term_decrease : Valid
-[wp] [Alt-Ergo] Goal typed_strlen_loop_term_positive : Valid
+[wp] [Qed] Goal typed_strlen_loop_assigns : Valid
+[wp] [Qed] Goal typed_strlen_assigns_part1 : Valid
+[wp] [Qed] Goal typed_strlen_assigns_part2 : Valid
+[wp] [Qed] Goal typed_strlen_loop_variant_decrease : Valid
+[wp] [Alt-Ergo] Goal typed_strlen_loop_variant_positive : Valid
 [wp] Proved goals:   13 / 13
   Qed:             8 
   Alt-Ergo:        5
diff --git a/src/plugins/wp/tests/wp_typed/oracle_qualif/user_swap.0.res.oracle b/src/plugins/wp/tests/wp_typed/oracle_qualif/user_swap.0.res.oracle
index f9004eeb05a8982faabb8392d0d4bed05ddf93df..356adba64938e304be0caacaa490824307ccac05 100644
--- a/src/plugins/wp/tests/wp_typed/oracle_qualif/user_swap.0.res.oracle
+++ b/src/plugins/wp/tests/wp_typed/oracle_qualif/user_swap.0.res.oracle
@@ -5,18 +5,18 @@
 [wp] Warning: Missing RTE guards
 [wp] 7 goals scheduled
 [wp] [Qed] Goal typed_main_assert : Valid
-[wp] [Qed] Goal typed_main_call_swap_pre : Valid
-[wp] [Qed] Goal typed_main_call_swap_pre_2 : Valid
-[wp] [Alt-Ergo] Goal typed_swap_post_A : Valid
-[wp] [Qed] Goal typed_swap_post_B : Valid
-[wp] [Qed] Goal typed_swap_assign_part1 : Valid
-[wp] [Qed] Goal typed_swap_assign_part2 : Valid
+[wp] [Qed] Goal typed_main_call_swap_requires : Valid
+[wp] [Qed] Goal typed_main_call_swap_requires_2 : Valid
+[wp] [Alt-Ergo] Goal typed_swap_ensures_A : Valid
+[wp] [Qed] Goal typed_swap_ensures_B : Valid
+[wp] [Qed] Goal typed_swap_assigns_part1 : Valid
+[wp] [Qed] Goal typed_swap_assigns_part2 : Valid
 [wp] Proved goals:    7 / 7
   Qed:             6 
   Alt-Ergo:        1
 [wp] Report 'tests/wp_typed/user_swap.i.0.report.json'
 -------------------------------------------------------------
 Functions           WP     Alt-Ergo        Total   Success
-swap                 3      1 (12..24)       4       100%
+swap                 3      1 (16..28)       4       100%
 main                 3     -                 3       100%
 -------------------------------------------------------------
diff --git a/src/plugins/wp/tests/wp_typed/oracle_qualif/user_swap.1.res.oracle b/src/plugins/wp/tests/wp_typed/oracle_qualif/user_swap.1.res.oracle
index a0ff47387b176bda1772889cb54ff272d9a5fd1b..906d590a10fc8344139ea08b1193f85600b1aa05 100644
--- a/src/plugins/wp/tests/wp_typed/oracle_qualif/user_swap.1.res.oracle
+++ b/src/plugins/wp/tests/wp_typed/oracle_qualif/user_swap.1.res.oracle
@@ -5,11 +5,11 @@
 [wp] Warning: Missing RTE guards
 [wp] 6 goals scheduled
 [wp] [Qed] Goal typed_ref_main_assert : Valid
-[wp] [Qed] Goal typed_ref_main_call_swap_pre : Valid
-[wp] [Qed] Goal typed_ref_main_call_swap_pre_2 : Valid
-[wp] [Qed] Goal typed_ref_swap_post_A : Valid
-[wp] [Qed] Goal typed_ref_swap_post_B : Valid
-[wp] [Qed] Goal typed_ref_swap_assign : Valid
+[wp] [Qed] Goal typed_ref_main_call_swap_requires : Valid
+[wp] [Qed] Goal typed_ref_main_call_swap_requires_2 : Valid
+[wp] [Qed] Goal typed_ref_swap_ensures_A : Valid
+[wp] [Qed] Goal typed_ref_swap_ensures_B : Valid
+[wp] [Qed] Goal typed_ref_swap_assigns : Valid
 [wp] Proved goals:    6 / 6
   Qed:             6
 [wp] Report 'tests/wp_typed/user_swap.i.1.report.json'
diff --git a/src/plugins/wp/tests/wp_typed/shift_lemma.i.0.report.json b/src/plugins/wp/tests/wp_typed/shift_lemma.i.0.report.json
index f16f0c3c6d94b40f8e3185f34e9196aba097c4f2..57fb10b150427ac2a1e2193406b66f389eef9364 100644
--- a/src/plugins/wp/tests/wp_typed/shift_lemma.i.0.report.json
+++ b/src/plugins/wp/tests/wp_typed/shift_lemma.i.0.report.json
@@ -1,6 +1,6 @@
-{ "wp:global": { "alt-ergo": { "total": 3, "valid": 3, "rank": 5 },
+{ "wp:global": { "alt-ergo": { "total": 3, "valid": 3, "rank": 6 },
                  "qed": { "total": 2, "valid": 2 },
-                 "wp:main": { "total": 5, "valid": 5, "rank": 5 } },
+                 "wp:main": { "total": 5, "valid": 5, "rank": 6 } },
   "wp:functions": { "f": { "f_assert_5": { "alt-ergo": { "total": 1,
                                                          "valid": 1,
                                                          "rank": 3 },
@@ -15,19 +15,19 @@
                                                         "valid": 1 } },
                            "f_assert_2": { "alt-ergo": { "total": 1,
                                                          "valid": 1,
-                                                         "rank": 5 },
+                                                         "rank": 6 },
                                            "wp:main": { "total": 1,
                                                         "valid": 1,
-                                                        "rank": 5 } },
+                                                        "rank": 6 } },
                            "f_assert": { "alt-ergo": { "total": 1,
                                                        "valid": 1,
-                                                       "rank": 3 },
+                                                       "rank": 4 },
                                          "wp:main": { "total": 1, "valid": 1,
-                                                      "rank": 3 } },
+                                                      "rank": 4 } },
                            "wp:section": { "alt-ergo": { "total": 3,
                                                          "valid": 3,
-                                                         "rank": 5 },
+                                                         "rank": 6 },
                                            "qed": { "total": 2, "valid": 2 },
                                            "wp:main": { "total": 5,
                                                         "valid": 5,
-                                                        "rank": 5 } } } } }
+                                                        "rank": 6 } } } } }
diff --git a/src/plugins/wp/tests/wp_typed/struct_array_type.i.0.report.json b/src/plugins/wp/tests/wp_typed/struct_array_type.i.0.report.json
index afebc5ba97d76ae2533a123540e2b909764ed269..dd93aaefdcd9cbd417e007a68943ff879919456a 100644
--- a/src/plugins/wp/tests/wp_typed/struct_array_type.i.0.report.json
+++ b/src/plugins/wp/tests/wp_typed/struct_array_type.i.0.report.json
@@ -1,9 +1,11 @@
 { "wp:global": { "alt-ergo": { "total": 1, "valid": 1, "rank": 3 },
                  "wp:main": { "total": 1, "valid": 1, "rank": 3 } },
-  "wp:functions": { "f": { "f_post": { "alt-ergo": { "total": 1, "valid": 1,
-                                                     "rank": 3 },
-                                       "wp:main": { "total": 1, "valid": 1,
-                                                    "rank": 3 } },
+  "wp:functions": { "f": { "f_ensures": { "alt-ergo": { "total": 1,
+                                                        "valid": 1,
+                                                        "rank": 3 },
+                                          "wp:main": { "total": 1,
+                                                       "valid": 1,
+                                                       "rank": 3 } },
                            "wp:section": { "alt-ergo": { "total": 1,
                                                          "valid": 1,
                                                          "rank": 3 },
diff --git a/src/plugins/wp/tests/wp_typed/unit_alloc.i.0.report.json b/src/plugins/wp/tests/wp_typed/unit_alloc.i.0.report.json
index 9f812ec52f0d14edb82c0d7a39c29c182b2888c0..772fd8424c99598ffe886aa4cbd955425709bf68 100644
--- a/src/plugins/wp/tests/wp_typed/unit_alloc.i.0.report.json
+++ b/src/plugins/wp/tests/wp_typed/unit_alloc.i.0.report.json
@@ -29,22 +29,24 @@
                                              "wp:main": { "total": 4,
                                                           "valid": 4,
                                                           "rank": 6 } } },
-                    "f": { "f_assign": { "qed": { "total": 1, "valid": 1 },
-                                         "wp:main": { "total": 1,
-                                                      "valid": 1 } },
+                    "f": { "f_assigns": { "qed": { "total": 1, "valid": 1 },
+                                          "wp:main": { "total": 1,
+                                                       "valid": 1 } },
                            "wp:section": { "qed": { "total": 1, "valid": 1 },
                                            "wp:main": { "total": 1,
                                                         "valid": 1 } } },
-                    "g": { "g_assign": { "qed": { "total": 1, "valid": 1 },
-                                         "wp:main": { "total": 1,
-                                                      "valid": 1 } },
+                    "g": { "g_assigns": { "qed": { "total": 1, "valid": 1 },
+                                          "wp:main": { "total": 1,
+                                                       "valid": 1 } },
                            "wp:section": { "qed": { "total": 1, "valid": 1 },
                                            "wp:main": { "total": 1,
                                                         "valid": 1 } } },
-                    "h": { "h_post": { "alt-ergo": { "total": 1, "valid": 1,
-                                                     "rank": 4 },
-                                       "wp:main": { "total": 1, "valid": 1,
-                                                    "rank": 4 } },
+                    "h": { "h_ensures": { "alt-ergo": { "total": 1,
+                                                        "valid": 1,
+                                                        "rank": 4 },
+                                          "wp:main": { "total": 1,
+                                                       "valid": 1,
+                                                       "rank": 4 } },
                            "wp:section": { "alt-ergo": { "total": 1,
                                                          "valid": 1,
                                                          "rank": 4 },
diff --git a/src/plugins/wp/tests/wp_typed/unit_alloc.i.1.report.json b/src/plugins/wp/tests/wp_typed/unit_alloc.i.1.report.json
index 9f812ec52f0d14edb82c0d7a39c29c182b2888c0..772fd8424c99598ffe886aa4cbd955425709bf68 100644
--- a/src/plugins/wp/tests/wp_typed/unit_alloc.i.1.report.json
+++ b/src/plugins/wp/tests/wp_typed/unit_alloc.i.1.report.json
@@ -29,22 +29,24 @@
                                              "wp:main": { "total": 4,
                                                           "valid": 4,
                                                           "rank": 6 } } },
-                    "f": { "f_assign": { "qed": { "total": 1, "valid": 1 },
-                                         "wp:main": { "total": 1,
-                                                      "valid": 1 } },
+                    "f": { "f_assigns": { "qed": { "total": 1, "valid": 1 },
+                                          "wp:main": { "total": 1,
+                                                       "valid": 1 } },
                            "wp:section": { "qed": { "total": 1, "valid": 1 },
                                            "wp:main": { "total": 1,
                                                         "valid": 1 } } },
-                    "g": { "g_assign": { "qed": { "total": 1, "valid": 1 },
-                                         "wp:main": { "total": 1,
-                                                      "valid": 1 } },
+                    "g": { "g_assigns": { "qed": { "total": 1, "valid": 1 },
+                                          "wp:main": { "total": 1,
+                                                       "valid": 1 } },
                            "wp:section": { "qed": { "total": 1, "valid": 1 },
                                            "wp:main": { "total": 1,
                                                         "valid": 1 } } },
-                    "h": { "h_post": { "alt-ergo": { "total": 1, "valid": 1,
-                                                     "rank": 4 },
-                                       "wp:main": { "total": 1, "valid": 1,
-                                                    "rank": 4 } },
+                    "h": { "h_ensures": { "alt-ergo": { "total": 1,
+                                                        "valid": 1,
+                                                        "rank": 4 },
+                                          "wp:main": { "total": 1,
+                                                       "valid": 1,
+                                                       "rank": 4 } },
                            "wp:section": { "alt-ergo": { "total": 1,
                                                          "valid": 1,
                                                          "rank": 4 },
diff --git a/src/plugins/wp/tests/wp_typed/unit_bitwise.c.0.report.json b/src/plugins/wp/tests/wp_typed/unit_bitwise.c.0.report.json
index f2a9a5a5550085dc73c5d68e7e570eab09b312bf..446a637c35fd9fba8ea92ea1bbeb4bd085dfd95d 100644
--- a/src/plugins/wp/tests/wp_typed/unit_bitwise.c.0.report.json
+++ b/src/plugins/wp/tests/wp_typed/unit_bitwise.c.0.report.json
@@ -43,10 +43,10 @@
                                                             "valid": 1 } },
                            "lemma_bxor_sint8": { "alt-ergo": { "total": 1,
                                                                "valid": 1,
-                                                               "rank": 3 },
+                                                               "rank": 4 },
                                                  "wp:main": { "total": 1,
                                                               "valid": 1,
-                                                              "rank": 3 } },
+                                                              "rank": 4 } },
                            "lemma_bor_uint8": { "alt-ergo": { "total": 1,
                                                               "valid": 1,
                                                               "rank": 8 },
@@ -55,40 +55,40 @@
                                                              "rank": 8 } },
                            "lemma_bor_sint8": { "alt-ergo": { "total": 1,
                                                               "valid": 1,
-                                                              "rank": 3 },
+                                                              "rank": 4 },
                                                 "wp:main": { "total": 1,
                                                              "valid": 1,
-                                                             "rank": 3 } },
+                                                             "rank": 4 } },
                            "lemma_bnot_sint8": { "alt-ergo": { "total": 1,
                                                                "valid": 1,
-                                                               "rank": 3 },
+                                                               "rank": 4 },
                                                  "wp:main": { "total": 1,
                                                               "valid": 1,
-                                                              "rank": 3 } },
+                                                              "rank": 4 } },
                            "lemma_blsr_uint8": { "alt-ergo": { "total": 1,
                                                                "valid": 1,
-                                                               "rank": 3 },
+                                                               "rank": 4 },
                                                  "wp:main": { "total": 1,
                                                               "valid": 1,
-                                                              "rank": 3 } },
+                                                              "rank": 4 } },
                            "lemma_blsr_sint8": { "alt-ergo": { "total": 1,
                                                                "valid": 1,
-                                                               "rank": 3 },
+                                                               "rank": 4 },
                                                  "wp:main": { "total": 1,
                                                               "valid": 1,
-                                                              "rank": 3 } },
+                                                              "rank": 4 } },
                            "lemma_band_uint8": { "alt-ergo": { "total": 1,
                                                                "valid": 1,
-                                                               "rank": 3 },
+                                                               "rank": 4 },
                                                  "wp:main": { "total": 1,
                                                               "valid": 1,
-                                                              "rank": 3 } },
+                                                              "rank": 4 } },
                            "lemma_band_sint8": { "alt-ergo": { "total": 1,
                                                                "valid": 1,
-                                                               "rank": 3 },
+                                                               "rank": 4 },
                                                  "wp:main": { "total": 1,
                                                               "valid": 1,
-                                                              "rank": 3 } },
+                                                              "rank": 4 } },
                            "wp:section": { "alt-ergo": { "total": 8,
                                                          "valid": 8,
                                                          "rank": 8 },
@@ -102,52 +102,57 @@
                                                           "wp:main": 
                                                             { "total": 1,
                                                               "valid": 1 } },
-                                  "band_int_post_ok": { "qed": { "total": 1,
-                                                                 "valid": 1 },
-                                                        "wp:main": { "total": 1,
-                                                                    "valid": 1 } },
+                                  "band_int_ensures_ok": { "qed": { "total": 1,
+                                                                    "valid": 1 },
+                                                           "wp:main": 
+                                                             { "total": 1,
+                                                               "valid": 1 } },
                                   "wp:section": { "qed": { "total": 2,
                                                            "valid": 2 },
                                                   "wp:main": { "total": 2,
                                                                "valid": 2 } } },
-                    "bor_int": { "bor_int_post_ok": { "qed": { "total": 1,
-                                                               "valid": 1 },
-                                                      "wp:main": { "total": 1,
-                                                                   "valid": 1 } },
+                    "bor_int": { "bor_int_ensures_ok": { "qed": { "total": 1,
+                                                                  "valid": 1 },
+                                                         "wp:main": { "total": 1,
+                                                                    "valid": 1 } },
                                  "wp:section": { "qed": { "total": 1,
                                                           "valid": 1 },
                                                  "wp:main": { "total": 1,
                                                               "valid": 1 } } },
-                    "bxor_int": { "bxor_int_post_ok": { "qed": { "total": 1,
-                                                                 "valid": 1 },
-                                                        "wp:main": { "total": 1,
-                                                                    "valid": 1 } },
+                    "bxor_int": { "bxor_int_ensures_ok": { "qed": { "total": 1,
+                                                                    "valid": 1 },
+                                                           "wp:main": 
+                                                             { "total": 1,
+                                                               "valid": 1 } },
                                   "wp:section": { "qed": { "total": 1,
                                                            "valid": 1 },
                                                   "wp:main": { "total": 1,
                                                                "valid": 1 } } },
-                    "bnot_int": { "bnot_int_post_ok": { "qed": { "total": 1,
-                                                                 "valid": 1 },
-                                                        "wp:main": { "total": 1,
-                                                                    "valid": 1 } },
+                    "bnot_int": { "bnot_int_ensures_ok": { "qed": { "total": 1,
+                                                                    "valid": 1 },
+                                                           "wp:main": 
+                                                             { "total": 1,
+                                                               "valid": 1 } },
                                   "wp:section": { "qed": { "total": 1,
                                                            "valid": 1 },
                                                   "wp:main": { "total": 1,
                                                                "valid": 1 } } },
-                    "lshift_int": { "lshift_int_post_ok": { "qed": { "total": 1,
-                                                                    "valid": 1 },
-                                                            "wp:main": 
-                                                              { "total": 1,
-                                                                "valid": 1 } },
+                    "lshift_int": { "lshift_int_ensures_ok": { "qed": 
+                                                                 { "total": 1,
+                                                                   "valid": 1 },
+                                                               "wp:main": 
+                                                                 { "total": 1,
+                                                                   "valid": 1 } },
                                     "wp:section": { "qed": { "total": 1,
                                                              "valid": 1 },
                                                     "wp:main": { "total": 1,
                                                                  "valid": 1 } } },
-                    "rshift_int": { "rshift_int_post_ok": { "qed": { "total": 1,
-                                                                    "valid": 1 },
-                                                            "wp:main": 
-                                                              { "total": 1,
-                                                                "valid": 1 } },
+                    "rshift_int": { "rshift_int_ensures_ok": { "qed": 
+                                                                 { "total": 1,
+                                                                   "valid": 1 },
+                                                               "wp:main": 
+                                                                 { "total": 1,
+                                                                   "valid": 1 } },
                                     "wp:section": { "qed": { "total": 1,
                                                              "valid": 1 },
                                                     "wp:main": { "total": 1,
@@ -155,11 +160,11 @@
                     "band1_uint": { "band1_uint_assert_ok_2": { "alt-ergo": 
                                                                   { "total": 1,
                                                                     "valid": 1,
-                                                                    "rank": 3 },
+                                                                    "rank": 4 },
                                                                 "wp:main": 
                                                                   { "total": 1,
                                                                     "valid": 1,
-                                                                    "rank": 3 } },
+                                                                    "rank": 4 } },
                                     "band1_uint_assert_ok": { "qed": 
                                                                 { "total": 1,
                                                                   "valid": 1 },
@@ -168,149 +173,152 @@
                                                                   "valid": 1 } },
                                     "wp:section": { "alt-ergo": { "total": 1,
                                                                   "valid": 1,
-                                                                  "rank": 3 },
+                                                                  "rank": 4 },
                                                     "qed": { "total": 1,
                                                              "valid": 1 },
                                                     "wp:main": { "total": 2,
                                                                  "valid": 2,
-                                                                 "rank": 3 } } },
-                    "band_uint": { "band_uint_post_ok": { "qed": { "total": 1,
-                                                                   "valid": 1 },
-                                                          "wp:main": 
-                                                            { "total": 1,
-                                                              "valid": 1 } },
+                                                                 "rank": 4 } } },
+                    "band_uint": { "band_uint_ensures_ok": { "qed": { "total": 1,
+                                                                    "valid": 1 },
+                                                             "wp:main": 
+                                                               { "total": 1,
+                                                                 "valid": 1 } },
                                    "wp:section": { "qed": { "total": 1,
                                                             "valid": 1 },
                                                    "wp:main": { "total": 1,
                                                                 "valid": 1 } } },
-                    "bor_uint": { "bor_uint_post_ok": { "qed": { "total": 1,
-                                                                 "valid": 1 },
-                                                        "wp:main": { "total": 1,
-                                                                    "valid": 1 } },
+                    "bor_uint": { "bor_uint_ensures_ok": { "qed": { "total": 1,
+                                                                    "valid": 1 },
+                                                           "wp:main": 
+                                                             { "total": 1,
+                                                               "valid": 1 } },
                                   "wp:section": { "qed": { "total": 1,
                                                            "valid": 1 },
                                                   "wp:main": { "total": 1,
                                                                "valid": 1 } } },
-                    "bxor_uint": { "bxor_uint_post_ok_2": { "alt-ergo": 
-                                                              { "total": 1,
-                                                                "valid": 1,
-                                                                "rank": 3 },
-                                                            "wp:main": 
-                                                              { "total": 1,
-                                                                "valid": 1,
-                                                                "rank": 3 } },
-                                   "bxor_uint_post_ok": { "qed": { "total": 1,
-                                                                   "valid": 1 },
-                                                          "wp:main": 
-                                                            { "total": 1,
-                                                              "valid": 1 } },
+                    "bxor_uint": { "bxor_uint_ensures_ok_2": { "alt-ergo": 
+                                                                 { "total": 1,
+                                                                   "valid": 1,
+                                                                   "rank": 4 },
+                                                               "wp:main": 
+                                                                 { "total": 1,
+                                                                   "valid": 1,
+                                                                   "rank": 4 } },
+                                   "bxor_uint_ensures_ok": { "qed": { "total": 1,
+                                                                    "valid": 1 },
+                                                             "wp:main": 
+                                                               { "total": 1,
+                                                                 "valid": 1 } },
                                    "wp:section": { "alt-ergo": { "total": 1,
                                                                  "valid": 1,
-                                                                 "rank": 3 },
+                                                                 "rank": 4 },
                                                    "qed": { "total": 1,
                                                             "valid": 1 },
                                                    "wp:main": { "total": 2,
                                                                 "valid": 2,
-                                                                "rank": 3 } } },
-                    "bnot_uint": { "bnot_uint_post_ok": { "qed": { "total": 1,
-                                                                   "valid": 1 },
-                                                          "wp:main": 
-                                                            { "total": 1,
-                                                              "valid": 1 } },
+                                                                "rank": 4 } } },
+                    "bnot_uint": { "bnot_uint_ensures_ok": { "qed": { "total": 1,
+                                                                    "valid": 1 },
+                                                             "wp:main": 
+                                                               { "total": 1,
+                                                                 "valid": 1 } },
                                    "wp:section": { "qed": { "total": 1,
                                                             "valid": 1 },
                                                    "wp:main": { "total": 1,
                                                                 "valid": 1 } } },
-                    "lshift_uint": { "lshift_uint_post_ok": { "qed": 
-                                                                { "total": 1,
-                                                                  "valid": 1 },
-                                                              "wp:main": 
-                                                                { "total": 1,
-                                                                  "valid": 1 } },
+                    "lshift_uint": { "lshift_uint_ensures_ok": { "qed": 
+                                                                   { "total": 1,
+                                                                    "valid": 1 },
+                                                                 "wp:main": 
+                                                                   { "total": 1,
+                                                                    "valid": 1 } },
                                      "wp:section": { "qed": { "total": 1,
                                                               "valid": 1 },
                                                      "wp:main": { "total": 1,
                                                                   "valid": 1 } } },
-                    "rshift_uint": { "rshift_uint_post_ok": { "qed": 
-                                                                { "total": 1,
-                                                                  "valid": 1 },
-                                                              "wp:main": 
-                                                                { "total": 1,
-                                                                  "valid": 1 } },
+                    "rshift_uint": { "rshift_uint_ensures_ok": { "qed": 
+                                                                   { "total": 1,
+                                                                    "valid": 1 },
+                                                                 "wp:main": 
+                                                                   { "total": 1,
+                                                                    "valid": 1 } },
                                      "wp:section": { "qed": { "total": 1,
                                                               "valid": 1 },
                                                      "wp:main": { "total": 1,
                                                                   "valid": 1 } } },
-                    "band_char": { "band_char_post_ok": { "alt-ergo": 
-                                                            { "total": 1,
-                                                              "valid": 1,
-                                                              "rank": 3 },
-                                                          "wp:main": 
-                                                            { "total": 1,
-                                                              "valid": 1,
-                                                              "rank": 3 } },
+                    "band_char": { "band_char_ensures_ok": { "alt-ergo": 
+                                                               { "total": 1,
+                                                                 "valid": 1,
+                                                                 "rank": 4 },
+                                                             "wp:main": 
+                                                               { "total": 1,
+                                                                 "valid": 1,
+                                                                 "rank": 4 } },
                                    "wp:section": { "alt-ergo": { "total": 1,
                                                                  "valid": 1,
-                                                                 "rank": 3 },
+                                                                 "rank": 4 },
                                                    "wp:main": { "total": 1,
                                                                 "valid": 1,
-                                                                "rank": 3 } } },
-                    "bor_char": { "bor_char_post_ok": { "alt-ergo": { "total": 1,
-                                                                    "valid": 1,
-                                                                    "rank": 3 },
-                                                        "wp:main": { "total": 1,
-                                                                    "valid": 1,
-                                                                    "rank": 3 } },
+                                                                "rank": 4 } } },
+                    "bor_char": { "bor_char_ensures_ok": { "alt-ergo": 
+                                                             { "total": 1,
+                                                               "valid": 1,
+                                                               "rank": 4 },
+                                                           "wp:main": 
+                                                             { "total": 1,
+                                                               "valid": 1,
+                                                               "rank": 4 } },
                                   "wp:section": { "alt-ergo": { "total": 1,
                                                                 "valid": 1,
-                                                                "rank": 3 },
+                                                                "rank": 4 },
                                                   "wp:main": { "total": 1,
                                                                "valid": 1,
-                                                               "rank": 3 } } },
-                    "bxor_char": { "bxor_char_post_ok": { "alt-ergo": 
-                                                            { "total": 1,
-                                                              "valid": 1,
-                                                              "rank": 3 },
-                                                          "wp:main": 
-                                                            { "total": 1,
-                                                              "valid": 1,
-                                                              "rank": 3 } },
+                                                               "rank": 4 } } },
+                    "bxor_char": { "bxor_char_ensures_ok": { "alt-ergo": 
+                                                               { "total": 1,
+                                                                 "valid": 1,
+                                                                 "rank": 4 },
+                                                             "wp:main": 
+                                                               { "total": 1,
+                                                                 "valid": 1,
+                                                                 "rank": 4 } },
                                    "wp:section": { "alt-ergo": { "total": 1,
                                                                  "valid": 1,
-                                                                 "rank": 3 },
+                                                                 "rank": 4 },
                                                    "wp:main": { "total": 1,
                                                                 "valid": 1,
-                                                                "rank": 3 } } },
-                    "bnot_char": { "bnot_char_post_ok": { "alt-ergo": 
-                                                            { "total": 1,
-                                                              "valid": 1,
-                                                              "rank": 3 },
-                                                          "wp:main": 
-                                                            { "total": 1,
-                                                              "valid": 1,
-                                                              "rank": 3 } },
+                                                                "rank": 4 } } },
+                    "bnot_char": { "bnot_char_ensures_ok": { "alt-ergo": 
+                                                               { "total": 1,
+                                                                 "valid": 1,
+                                                                 "rank": 4 },
+                                                             "wp:main": 
+                                                               { "total": 1,
+                                                                 "valid": 1,
+                                                                 "rank": 4 } },
                                    "wp:section": { "alt-ergo": { "total": 1,
                                                                  "valid": 1,
-                                                                 "rank": 3 },
+                                                                 "rank": 4 },
                                                    "wp:main": { "total": 1,
                                                                 "valid": 1,
-                                                                "rank": 3 } } },
-                    "lshift_char": { "lshift_char_post_ok": { "qed": 
-                                                                { "total": 1,
-                                                                  "valid": 1 },
-                                                              "wp:main": 
-                                                                { "total": 1,
-                                                                  "valid": 1 } },
+                                                                "rank": 4 } } },
+                    "lshift_char": { "lshift_char_ensures_ok": { "qed": 
+                                                                   { "total": 1,
+                                                                    "valid": 1 },
+                                                                 "wp:main": 
+                                                                   { "total": 1,
+                                                                    "valid": 1 } },
                                      "wp:section": { "qed": { "total": 1,
                                                               "valid": 1 },
                                                      "wp:main": { "total": 1,
                                                                   "valid": 1 } } },
-                    "rshift_char": { "rshift_char_post_ok": { "qed": 
-                                                                { "total": 1,
-                                                                  "valid": 1 },
-                                                              "wp:main": 
-                                                                { "total": 1,
-                                                                  "valid": 1 } },
+                    "rshift_char": { "rshift_char_ensures_ok": { "qed": 
+                                                                   { "total": 1,
+                                                                    "valid": 1 },
+                                                                 "wp:main": 
+                                                                   { "total": 1,
+                                                                    "valid": 1 } },
                                      "wp:section": { "qed": { "total": 1,
                                                               "valid": 1 },
                                                      "wp:main": { "total": 1,
@@ -318,11 +326,11 @@
                     "band1_uchar": { "band1_uchar_assert_ok_2": { "alt-ergo": 
                                                                     { "total": 1,
                                                                     "valid": 1,
-                                                                    "rank": 3 },
+                                                                    "rank": 4 },
                                                                   "wp:main": 
                                                                     { "total": 1,
                                                                     "valid": 1,
-                                                                    "rank": 3 } },
+                                                                    "rank": 4 } },
                                      "band1_uchar_assert_ok": { "qed": 
                                                                   { "total": 1,
                                                                     "valid": 1 },
@@ -331,97 +339,99 @@
                                                                     "valid": 1 } },
                                      "wp:section": { "alt-ergo": { "total": 1,
                                                                    "valid": 1,
-                                                                   "rank": 3 },
+                                                                   "rank": 4 },
                                                      "qed": { "total": 1,
                                                               "valid": 1 },
                                                      "wp:main": { "total": 2,
                                                                   "valid": 2,
-                                                                  "rank": 3 } } },
-                    "band_uchar": { "band_uchar_post_ok": { "alt-ergo": 
-                                                              { "total": 1,
-                                                                "valid": 1,
-                                                                "rank": 3 },
-                                                            "wp:main": 
-                                                              { "total": 1,
-                                                                "valid": 1,
-                                                                "rank": 3 } },
+                                                                  "rank": 4 } } },
+                    "band_uchar": { "band_uchar_ensures_ok": { "alt-ergo": 
+                                                                 { "total": 1,
+                                                                   "valid": 1,
+                                                                   "rank": 4 },
+                                                               "wp:main": 
+                                                                 { "total": 1,
+                                                                   "valid": 1,
+                                                                   "rank": 4 } },
                                     "wp:section": { "alt-ergo": { "total": 1,
                                                                   "valid": 1,
-                                                                  "rank": 3 },
+                                                                  "rank": 4 },
                                                     "wp:main": { "total": 1,
                                                                  "valid": 1,
-                                                                 "rank": 3 } } },
-                    "bor_uchar": { "bor_uchar_post_ok": { "qed": { "total": 1,
-                                                                   "valid": 1 },
-                                                          "wp:main": 
-                                                            { "total": 1,
-                                                              "valid": 1 } },
+                                                                 "rank": 4 } } },
+                    "bor_uchar": { "bor_uchar_ensures_ok": { "qed": { "total": 1,
+                                                                    "valid": 1 },
+                                                             "wp:main": 
+                                                               { "total": 1,
+                                                                 "valid": 1 } },
                                    "wp:section": { "qed": { "total": 1,
                                                             "valid": 1 },
                                                    "wp:main": { "total": 1,
                                                                 "valid": 1 } } },
-                    "bxor_uchar": { "bxor_uchar_post_ok_2": { "alt-ergo": 
-                                                                { "total": 1,
-                                                                  "valid": 1,
-                                                                  "rank": 3 },
-                                                              "wp:main": 
-                                                                { "total": 1,
-                                                                  "valid": 1,
-                                                                  "rank": 3 } },
-                                    "bxor_uchar_post_ok": { "qed": { "total": 1,
-                                                                    "valid": 1 },
-                                                            "wp:main": 
-                                                              { "total": 1,
-                                                                "valid": 1 } },
+                    "bxor_uchar": { "bxor_uchar_ensures_ok_2": { "alt-ergo": 
+                                                                   { "total": 1,
+                                                                    "valid": 1,
+                                                                    "rank": 4 },
+                                                                 "wp:main": 
+                                                                   { "total": 1,
+                                                                    "valid": 1,
+                                                                    "rank": 4 } },
+                                    "bxor_uchar_ensures_ok": { "qed": 
+                                                                 { "total": 1,
+                                                                   "valid": 1 },
+                                                               "wp:main": 
+                                                                 { "total": 1,
+                                                                   "valid": 1 } },
                                     "wp:section": { "alt-ergo": { "total": 1,
                                                                   "valid": 1,
-                                                                  "rank": 3 },
+                                                                  "rank": 4 },
                                                     "qed": { "total": 1,
                                                              "valid": 1 },
                                                     "wp:main": { "total": 2,
                                                                  "valid": 2,
-                                                                 "rank": 3 } } },
-                    "bnot_uchar": { "bnot_uchar_post_ok": { "qed": { "total": 1,
-                                                                    "valid": 1 },
-                                                            "wp:main": 
-                                                              { "total": 1,
-                                                                "valid": 1 } },
+                                                                 "rank": 4 } } },
+                    "bnot_uchar": { "bnot_uchar_ensures_ok": { "qed": 
+                                                                 { "total": 1,
+                                                                   "valid": 1 },
+                                                               "wp:main": 
+                                                                 { "total": 1,
+                                                                   "valid": 1 } },
                                     "wp:section": { "qed": { "total": 1,
                                                              "valid": 1 },
                                                     "wp:main": { "total": 1,
                                                                  "valid": 1 } } },
-                    "lshift_uchar": { "lshift_uchar_post_ok": { "qed": 
-                                                                  { "total": 1,
+                    "lshift_uchar": { "lshift_uchar_ensures_ok": { "qed": 
+                                                                    { "total": 1,
                                                                     "valid": 1 },
-                                                                "wp:main": 
-                                                                  { "total": 1,
+                                                                   "wp:main": 
+                                                                    { "total": 1,
                                                                     "valid": 1 } },
                                       "wp:section": { "qed": { "total": 1,
                                                                "valid": 1 },
                                                       "wp:main": { "total": 1,
                                                                    "valid": 1 } } },
-                    "rshift_uchar": { "rshift_uchar_post_ok": { "alt-ergo": 
-                                                                  { "total": 1,
+                    "rshift_uchar": { "rshift_uchar_ensures_ok": { "alt-ergo": 
+                                                                    { "total": 1,
                                                                     "valid": 1,
-                                                                    "rank": 5 },
-                                                                "wp:main": 
-                                                                  { "total": 1,
+                                                                    "rank": 7 },
+                                                                   "wp:main": 
+                                                                    { "total": 1,
                                                                     "valid": 1,
-                                                                    "rank": 5 } },
+                                                                    "rank": 7 } },
                                       "wp:section": { "alt-ergo": { "total": 1,
                                                                     "valid": 1,
-                                                                    "rank": 5 },
+                                                                    "rank": 7 },
                                                       "wp:main": { "total": 1,
                                                                    "valid": 1,
-                                                                   "rank": 5 } } },
+                                                                   "rank": 7 } } },
                     "band1_ushort": { "band1_ushort_assert_ok_2": { "alt-ergo": 
                                                                     { "total": 1,
                                                                     "valid": 1,
-                                                                    "rank": 3 },
+                                                                    "rank": 4 },
                                                                     "wp:main": 
                                                                     { "total": 1,
                                                                     "valid": 1,
-                                                                    "rank": 3 } },
+                                                                    "rank": 4 } },
                                       "band1_ushort_assert_ok": { "qed": 
                                                                     { "total": 1,
                                                                     "valid": 1 },
@@ -430,20 +440,20 @@
                                                                     "valid": 1 } },
                                       "wp:section": { "alt-ergo": { "total": 1,
                                                                     "valid": 1,
-                                                                    "rank": 3 },
+                                                                    "rank": 4 },
                                                       "qed": { "total": 1,
                                                                "valid": 1 },
                                                       "wp:main": { "total": 2,
                                                                    "valid": 2,
-                                                                   "rank": 3 } } },
+                                                                   "rank": 4 } } },
                     "band1_ulong": { "band1_ulong_assert_ok_2": { "alt-ergo": 
                                                                     { "total": 1,
                                                                     "valid": 1,
-                                                                    "rank": 3 },
+                                                                    "rank": 4 },
                                                                   "wp:main": 
                                                                     { "total": 1,
                                                                     "valid": 1,
-                                                                    "rank": 3 } },
+                                                                    "rank": 4 } },
                                      "band1_ulong_assert_ok": { "qed": 
                                                                   { "total": 1,
                                                                     "valid": 1 },
@@ -452,12 +462,12 @@
                                                                     "valid": 1 } },
                                      "wp:section": { "alt-ergo": { "total": 1,
                                                                    "valid": 1,
-                                                                   "rank": 3 },
+                                                                   "rank": 4 },
                                                      "qed": { "total": 1,
                                                               "valid": 1 },
                                                      "wp:main": { "total": 2,
                                                                   "valid": 2,
-                                                                  "rank": 3 } } },
+                                                                  "rank": 4 } } },
                     "cast": { "cast_assert_ok_7": { "qed": { "total": 1,
                                                              "valid": 1 },
                                                     "wp:main": { "total": 1,
@@ -486,10 +496,10 @@
                                                            "valid": 1 },
                                                   "wp:main": { "total": 1,
                                                                "valid": 1 } },
-                              "cast_post_ok": { "qed": { "total": 1,
-                                                         "valid": 1 },
-                                                "wp:main": { "total": 1,
-                                                             "valid": 1 } },
+                              "cast_ensures_ok": { "qed": { "total": 1,
+                                                            "valid": 1 },
+                                                   "wp:main": { "total": 1,
+                                                                "valid": 1 } },
                               "wp:section": { "qed": { "total": 8,
                                                        "valid": 8 },
                                               "wp:main": { "total": 8,
diff --git a/src/plugins/wp/tests/wp_typed/unit_bitwise.c.1.report.json b/src/plugins/wp/tests/wp_typed/unit_bitwise.c.1.report.json
index 82debd45425e5560c3e94b7890cc0d859fb82beb..0dc8275e431c8779fb5273a028f84ea7320b4bd4 100644
--- a/src/plugins/wp/tests/wp_typed/unit_bitwise.c.1.report.json
+++ b/src/plugins/wp/tests/wp_typed/unit_bitwise.c.1.report.json
@@ -10,22 +10,22 @@
                                                                 "unknown": 1 },
                                                   "wp:main": { "total": 1,
                                                                "unknown": 1 } } },
-                    "bnot_uint": { "bnot_uint_post_ko": { "alt-ergo": 
-                                                            { "total": 1,
-                                                              "unknown": 1 },
-                                                          "wp:main": 
-                                                            { "total": 1,
-                                                              "unknown": 1 } },
+                    "bnot_uint": { "bnot_uint_ensures_ko": { "alt-ergo": 
+                                                               { "total": 1,
+                                                                 "unknown": 1 },
+                                                             "wp:main": 
+                                                               { "total": 1,
+                                                                 "unknown": 1 } },
                                    "wp:section": { "alt-ergo": { "total": 1,
                                                                  "unknown": 1 },
                                                    "wp:main": { "total": 1,
                                                                 "unknown": 1 } } },
-                    "bnot_uchar": { "bnot_uchar_post_ko": { "alt-ergo": 
-                                                              { "total": 1,
-                                                                "unknown": 1 },
-                                                            "wp:main": 
-                                                              { "total": 1,
-                                                                "unknown": 1 } },
+                    "bnot_uchar": { "bnot_uchar_ensures_ko": { "alt-ergo": 
+                                                                 { "total": 1,
+                                                                   "unknown": 1 },
+                                                               "wp:main": 
+                                                                 { "total": 1,
+                                                                   "unknown": 1 } },
                                     "wp:section": { "alt-ergo": { "total": 1,
                                                                   "unknown": 1 },
                                                     "wp:main": { "total": 1,
diff --git a/src/plugins/wp/tests/wp_typed/unit_cast.i.0.report.json b/src/plugins/wp/tests/wp_typed/unit_cast.i.0.report.json
index 03ba88877b73b7a8b2a5bbb2a828305b6d929939..601602a129d0f5488189d354167cf10c25bca385 100644
--- a/src/plugins/wp/tests/wp_typed/unit_cast.i.0.report.json
+++ b/src/plugins/wp/tests/wp_typed/unit_cast.i.0.report.json
@@ -1,14 +1,14 @@
-{ "wp:global": { "alt-ergo": { "total": 1, "valid": 1, "rank": 4 },
-                 "wp:main": { "total": 1, "valid": 1, "rank": 4 } },
+{ "wp:global": { "alt-ergo": { "total": 1, "valid": 1, "rank": 6 },
+                 "wp:main": { "total": 1, "valid": 1, "rank": 6 } },
   "wp:functions": { "f": { "f_assert_OUT": { "alt-ergo": { "total": 1,
                                                            "valid": 1,
-                                                           "rank": 4 },
+                                                           "rank": 6 },
                                              "wp:main": { "total": 1,
                                                           "valid": 1,
-                                                          "rank": 4 } },
+                                                          "rank": 6 } },
                            "wp:section": { "alt-ergo": { "total": 1,
                                                          "valid": 1,
-                                                         "rank": 4 },
+                                                         "rank": 6 },
                                            "wp:main": { "total": 1,
                                                         "valid": 1,
-                                                        "rank": 4 } } } } }
+                                                        "rank": 6 } } } } }
diff --git a/src/plugins/wp/tests/wp_typed/unit_cst.i.0.report.json b/src/plugins/wp/tests/wp_typed/unit_cst.i.0.report.json
index 19abe51ae5f1d3004dca2f972917b6dc3faeaf05..f7399a08a68535d5112bcf985aa8a7a4d07d590c 100644
--- a/src/plugins/wp/tests/wp_typed/unit_cst.i.0.report.json
+++ b/src/plugins/wp/tests/wp_typed/unit_cst.i.0.report.json
@@ -1,11 +1,11 @@
 { "wp:global": { "qed": { "total": 2, "valid": 2 },
                  "wp:main": { "total": 2, "valid": 2 } },
-  "wp:functions": { "f": { "f_post_B": { "qed": { "total": 1, "valid": 1 },
-                                         "wp:main": { "total": 1,
-                                                      "valid": 1 } },
-                           "f_post_A": { "qed": { "total": 1, "valid": 1 },
-                                         "wp:main": { "total": 1,
-                                                      "valid": 1 } },
+  "wp:functions": { "f": { "f_ensures_B": { "qed": { "total": 1, "valid": 1 },
+                                            "wp:main": { "total": 1,
+                                                         "valid": 1 } },
+                           "f_ensures_A": { "qed": { "total": 1, "valid": 1 },
+                                            "wp:main": { "total": 1,
+                                                         "valid": 1 } },
                            "wp:section": { "qed": { "total": 2, "valid": 2 },
                                            "wp:main": { "total": 2,
                                                         "valid": 2 } } } } }
diff --git a/src/plugins/wp/tests/wp_typed/unit_float.i.0.report.json b/src/plugins/wp/tests/wp_typed/unit_float.i.0.report.json
index 48e38898c29124597df19af76138c2b007f7e982..536ff3635c35862a1401cb1dfb316e27fe42f39e 100644
--- a/src/plugins/wp/tests/wp_typed/unit_float.i.0.report.json
+++ b/src/plugins/wp/tests/wp_typed/unit_float.i.0.report.json
@@ -1,29 +1,29 @@
 { "wp:global": { "qed": { "total": 6, "valid": 6 },
                  "wp:main": { "total": 6, "valid": 6 } },
-  "wp:functions": { "main": { "main_post_VAR_D": { "qed": { "total": 1,
-                                                            "valid": 1 },
-                                                   "wp:main": { "total": 1,
-                                                                "valid": 1 } },
-                              "main_post_VAR_F": { "qed": { "total": 1,
-                                                            "valid": 1 },
-                                                   "wp:main": { "total": 1,
-                                                                "valid": 1 } },
-                              "main_post_CNV_D": { "qed": { "total": 1,
-                                                            "valid": 1 },
-                                                   "wp:main": { "total": 1,
-                                                                "valid": 1 } },
-                              "main_post_CNV_F": { "qed": { "total": 1,
-                                                            "valid": 1 },
-                                                   "wp:main": { "total": 1,
-                                                                "valid": 1 } },
-                              "main_post_CST_D": { "qed": { "total": 1,
-                                                            "valid": 1 },
-                                                   "wp:main": { "total": 1,
-                                                                "valid": 1 } },
-                              "main_post_CST_F": { "qed": { "total": 1,
-                                                            "valid": 1 },
-                                                   "wp:main": { "total": 1,
-                                                                "valid": 1 } },
+  "wp:functions": { "main": { "main_ensures_VAR_D": { "qed": { "total": 1,
+                                                               "valid": 1 },
+                                                      "wp:main": { "total": 1,
+                                                                   "valid": 1 } },
+                              "main_ensures_VAR_F": { "qed": { "total": 1,
+                                                               "valid": 1 },
+                                                      "wp:main": { "total": 1,
+                                                                   "valid": 1 } },
+                              "main_ensures_CNV_D": { "qed": { "total": 1,
+                                                               "valid": 1 },
+                                                      "wp:main": { "total": 1,
+                                                                   "valid": 1 } },
+                              "main_ensures_CNV_F": { "qed": { "total": 1,
+                                                               "valid": 1 },
+                                                      "wp:main": { "total": 1,
+                                                                   "valid": 1 } },
+                              "main_ensures_CST_D": { "qed": { "total": 1,
+                                                               "valid": 1 },
+                                                      "wp:main": { "total": 1,
+                                                                   "valid": 1 } },
+                              "main_ensures_CST_F": { "qed": { "total": 1,
+                                                               "valid": 1 },
+                                                      "wp:main": { "total": 1,
+                                                                   "valid": 1 } },
                               "wp:section": { "qed": { "total": 6,
                                                        "valid": 6 },
                                               "wp:main": { "total": 6,
diff --git a/src/plugins/wp/tests/wp_typed/unit_hard.i.0.report.json b/src/plugins/wp/tests/wp_typed/unit_hard.i.0.report.json
index def0b114235c4868a75ade8d3e60487865c60ec3..94fcb00c3cbadaa18a5c6cefcd550c33b094e592 100644
--- a/src/plugins/wp/tests/wp_typed/unit_hard.i.0.report.json
+++ b/src/plugins/wp/tests/wp_typed/unit_hard.i.0.report.json
@@ -1,18 +1,22 @@
 { "wp:global": { "alt-ergo": { "total": 1, "unknown": 1 },
                  "qed": { "total": 2, "valid": 2 },
                  "wp:main": { "total": 3, "valid": 2, "unknown": 1 } },
-  "wp:functions": { "main": { "main_pre_r_is_q1_ko": { "alt-ergo": { "total": 1,
-                                                                    "unknown": 1 },
-                                                       "wp:main": { "total": 1,
-                                                                    "unknown": 1 } },
-                              "main_pre_q_is_66F0": { "qed": { "total": 1,
-                                                               "valid": 1 },
-                                                      "wp:main": { "total": 1,
-                                                                   "valid": 1 } },
-                              "main_pre_p_is_33FF": { "qed": { "total": 1,
-                                                               "valid": 1 },
-                                                      "wp:main": { "total": 1,
-                                                                   "valid": 1 } },
+  "wp:functions": { "main": { "main_requires_r_is_q1_ko": { "alt-ergo": 
+                                                              { "total": 1,
+                                                                "unknown": 1 },
+                                                            "wp:main": 
+                                                              { "total": 1,
+                                                                "unknown": 1 } },
+                              "main_requires_q_is_66F0": { "qed": { "total": 1,
+                                                                    "valid": 1 },
+                                                           "wp:main": 
+                                                             { "total": 1,
+                                                               "valid": 1 } },
+                              "main_requires_p_is_33FF": { "qed": { "total": 1,
+                                                                    "valid": 1 },
+                                                           "wp:main": 
+                                                             { "total": 1,
+                                                               "valid": 1 } },
                               "wp:section": { "alt-ergo": { "total": 1,
                                                             "unknown": 1 },
                                               "qed": { "total": 2,
diff --git a/src/plugins/wp/tests/wp_typed/unit_ite.i.0.report.json b/src/plugins/wp/tests/wp_typed/unit_ite.i.0.report.json
index a2a5440758b06da4cba3fa3534f395d4f477b263..015bc871fc4ca3961f0f6378b2f719cd527944b2 100644
--- a/src/plugins/wp/tests/wp_typed/unit_ite.i.0.report.json
+++ b/src/plugins/wp/tests/wp_typed/unit_ite.i.0.report.json
@@ -1,9 +1,9 @@
 { "wp:global": { "qed": { "total": 1, "valid": 1 },
                  "wp:main": { "total": 1, "valid": 1 } },
-  "wp:functions": { "check": { "check_post": { "qed": { "total": 1,
-                                                        "valid": 1 },
-                                               "wp:main": { "total": 1,
-                                                            "valid": 1 } },
+  "wp:functions": { "check": { "check_ensures": { "qed": { "total": 1,
+                                                           "valid": 1 },
+                                                  "wp:main": { "total": 1,
+                                                               "valid": 1 } },
                                "wp:section": { "qed": { "total": 1,
                                                         "valid": 1 },
                                                "wp:main": { "total": 1,
diff --git a/src/plugins/wp/tests/wp_typed/unit_labels.i.0.report.json b/src/plugins/wp/tests/wp_typed/unit_labels.i.0.report.json
index c78bc8e3f70c205991e30bf1fc5463bfd15d9f8a..5215469f919da58581780b418da0f8bb4851f890 100644
--- a/src/plugins/wp/tests/wp_typed/unit_labels.i.0.report.json
+++ b/src/plugins/wp/tests/wp_typed/unit_labels.i.0.report.json
@@ -12,12 +12,12 @@
                                                       "wp:main": { "total": 1,
                                                                    "valid": 1,
                                                                    "rank": 5 } },
-                                "duplet_post": { "alt-ergo": { "total": 1,
-                                                               "valid": 1,
-                                                               "rank": 6 },
-                                                 "wp:main": { "total": 1,
-                                                              "valid": 1,
-                                                              "rank": 6 } },
+                                "duplet_ensures": { "alt-ergo": { "total": 1,
+                                                                  "valid": 1,
+                                                                  "rank": 6 },
+                                                    "wp:main": { "total": 1,
+                                                                 "valid": 1,
+                                                                 "rank": 6 } },
                                 "wp:section": { "alt-ergo": { "total": 3,
                                                               "valid": 3,
                                                               "rank": 6 },
diff --git a/src/plugins/wp/tests/wp_typed/unit_local.c.0.report.json b/src/plugins/wp/tests/wp_typed/unit_local.c.0.report.json
index 6b4e6e25a64cb01cfd095b6a46e4da074cf72236..01dc25dd6b4c17afba83c647f0d77588c0d80244 100644
--- a/src/plugins/wp/tests/wp_typed/unit_local.c.0.report.json
+++ b/src/plugins/wp/tests/wp_typed/unit_local.c.0.report.json
@@ -1,14 +1,14 @@
 { "wp:global": { "alt-ergo": { "total": 1, "valid": 1, "rank": 5 },
                  "qed": { "total": 2, "valid": 2 },
                  "wp:main": { "total": 3, "valid": 3, "rank": 5 } },
-  "wp:functions": { "foo": { "foo_assign": { "alt-ergo": { "total": 1,
-                                                           "valid": 1,
-                                                           "rank": 5 },
-                                             "qed": { "total": 1,
-                                                      "valid": 1 },
-                                             "wp:main": { "total": 2,
-                                                          "valid": 2,
-                                                          "rank": 5 } },
+  "wp:functions": { "foo": { "foo_assigns": { "alt-ergo": { "total": 1,
+                                                            "valid": 1,
+                                                            "rank": 5 },
+                                              "qed": { "total": 1,
+                                                       "valid": 1 },
+                                              "wp:main": { "total": 2,
+                                                           "valid": 2,
+                                                           "rank": 5 } },
                              "wp:section": { "alt-ergo": { "total": 1,
                                                            "valid": 1,
                                                            "rank": 5 },
@@ -17,10 +17,10 @@
                                              "wp:main": { "total": 2,
                                                           "valid": 2,
                                                           "rank": 5 } } },
-                    "bar": { "bar_assign": { "qed": { "total": 1,
-                                                      "valid": 1 },
-                                             "wp:main": { "total": 1,
-                                                          "valid": 1 } },
+                    "bar": { "bar_assigns": { "qed": { "total": 1,
+                                                       "valid": 1 },
+                                              "wp:main": { "total": 1,
+                                                           "valid": 1 } },
                              "wp:section": { "qed": { "total": 1,
                                                       "valid": 1 },
                                              "wp:main": { "total": 1,
diff --git a/src/plugins/wp/tests/wp_typed/unit_local.c.1.report.json b/src/plugins/wp/tests/wp_typed/unit_local.c.1.report.json
index 087968c1f056049609a9ce78677ed02b6749128c..181a37649080708f5b74e8b1e8b08fc58651611e 100644
--- a/src/plugins/wp/tests/wp_typed/unit_local.c.1.report.json
+++ b/src/plugins/wp/tests/wp_typed/unit_local.c.1.report.json
@@ -1,23 +1,23 @@
 { "wp:global": { "alt-ergo": { "total": 3, "valid": 3, "rank": 6 },
                  "wp:main": { "total": 3, "valid": 3, "rank": 6 } },
-  "wp:functions": { "foo": { "foo_assign": { "alt-ergo": { "total": 2,
+  "wp:functions": { "foo": { "foo_assigns": { "alt-ergo": { "total": 2,
+                                                            "valid": 2,
+                                                            "rank": 6 },
+                                              "wp:main": { "total": 2,
                                                            "valid": 2,
-                                                           "rank": 6 },
-                                             "wp:main": { "total": 2,
-                                                          "valid": 2,
-                                                          "rank": 6 } },
+                                                           "rank": 6 } },
                              "wp:section": { "alt-ergo": { "total": 2,
                                                            "valid": 2,
                                                            "rank": 6 },
                                              "wp:main": { "total": 2,
                                                           "valid": 2,
                                                           "rank": 6 } } },
-                    "bar": { "bar_assign": { "alt-ergo": { "total": 1,
+                    "bar": { "bar_assigns": { "alt-ergo": { "total": 1,
+                                                            "valid": 1,
+                                                            "rank": 6 },
+                                              "wp:main": { "total": 1,
                                                            "valid": 1,
-                                                           "rank": 6 },
-                                             "wp:main": { "total": 1,
-                                                          "valid": 1,
-                                                          "rank": 6 } },
+                                                           "rank": 6 } },
                              "wp:section": { "alt-ergo": { "total": 1,
                                                            "valid": 1,
                                                            "rank": 6 },
diff --git a/src/plugins/wp/tests/wp_typed/unit_loopscope.i.0.report.json b/src/plugins/wp/tests/wp_typed/unit_loopscope.i.0.report.json
index 9def0061da04715a453e1bb0798df65b7df0e784..0df540f56d402e36948e0ff3d0ee2349bba231ac 100644
--- a/src/plugins/wp/tests/wp_typed/unit_loopscope.i.0.report.json
+++ b/src/plugins/wp/tests/wp_typed/unit_loopscope.i.0.report.json
@@ -1,12 +1,13 @@
 { "wp:global": { "alt-ergo": { "total": 1, "unknown": 1 },
                  "qed": { "total": 1, "valid": 1 },
                  "wp:main": { "total": 2, "valid": 1, "unknown": 1 } },
-  "wp:functions": { "f": { "f_loop_inv": { "alt-ergo": { "total": 1,
-                                                         "unknown": 1 },
-                                           "qed": { "total": 1, "valid": 1 },
-                                           "wp:main": { "total": 2,
-                                                        "valid": 1,
-                                                        "unknown": 1 } },
+  "wp:functions": { "f": { "f_loop_invariant": { "alt-ergo": { "total": 1,
+                                                               "unknown": 1 },
+                                                 "qed": { "total": 1,
+                                                          "valid": 1 },
+                                                 "wp:main": { "total": 2,
+                                                              "valid": 1,
+                                                              "unknown": 1 } },
                            "wp:section": { "alt-ergo": { "total": 1,
                                                          "unknown": 1 },
                                            "qed": { "total": 1, "valid": 1 },
diff --git a/src/plugins/wp/tests/wp_typed/unit_loopscope.i.1.report.json b/src/plugins/wp/tests/wp_typed/unit_loopscope.i.1.report.json
index 9def0061da04715a453e1bb0798df65b7df0e784..0df540f56d402e36948e0ff3d0ee2349bba231ac 100644
--- a/src/plugins/wp/tests/wp_typed/unit_loopscope.i.1.report.json
+++ b/src/plugins/wp/tests/wp_typed/unit_loopscope.i.1.report.json
@@ -1,12 +1,13 @@
 { "wp:global": { "alt-ergo": { "total": 1, "unknown": 1 },
                  "qed": { "total": 1, "valid": 1 },
                  "wp:main": { "total": 2, "valid": 1, "unknown": 1 } },
-  "wp:functions": { "f": { "f_loop_inv": { "alt-ergo": { "total": 1,
-                                                         "unknown": 1 },
-                                           "qed": { "total": 1, "valid": 1 },
-                                           "wp:main": { "total": 2,
-                                                        "valid": 1,
-                                                        "unknown": 1 } },
+  "wp:functions": { "f": { "f_loop_invariant": { "alt-ergo": { "total": 1,
+                                                               "unknown": 1 },
+                                                 "qed": { "total": 1,
+                                                          "valid": 1 },
+                                                 "wp:main": { "total": 2,
+                                                              "valid": 1,
+                                                              "unknown": 1 } },
                            "wp:section": { "alt-ergo": { "total": 1,
                                                          "unknown": 1 },
                                            "qed": { "total": 1, "valid": 1 },
diff --git a/src/plugins/wp/tests/wp_typed/unit_matrix.i.0.report.json b/src/plugins/wp/tests/wp_typed/unit_matrix.i.0.report.json
index 15d636ed8ba9c60692d41a9678acd22a6fc3bcae..468e2635821f7ad20427d9ad8e769224e74815b2 100644
--- a/src/plugins/wp/tests/wp_typed/unit_matrix.i.0.report.json
+++ b/src/plugins/wp/tests/wp_typed/unit_matrix.i.0.report.json
@@ -3,20 +3,20 @@
                  "qed": { "total": 1, "valid": 1 },
                  "wp:main": { "total": 3, "valid": 2, "unknown": 1,
                               "rank": 3 } },
-  "wp:functions": { "make": { "make_post_KO": { "alt-ergo": { "total": 1,
-                                                              "unknown": 1 },
-                                                "wp:main": { "total": 1,
-                                                             "unknown": 1 } },
-                              "make_post_OK2": { "qed": { "total": 1,
-                                                          "valid": 1 },
-                                                 "wp:main": { "total": 1,
-                                                              "valid": 1 } },
-                              "make_post_OK1": { "alt-ergo": { "total": 1,
-                                                               "valid": 1,
-                                                               "rank": 3 },
-                                                 "wp:main": { "total": 1,
-                                                              "valid": 1,
-                                                              "rank": 3 } },
+  "wp:functions": { "make": { "make_ensures_KO": { "alt-ergo": { "total": 1,
+                                                                 "unknown": 1 },
+                                                   "wp:main": { "total": 1,
+                                                                "unknown": 1 } },
+                              "make_ensures_OK2": { "qed": { "total": 1,
+                                                             "valid": 1 },
+                                                    "wp:main": { "total": 1,
+                                                                 "valid": 1 } },
+                              "make_ensures_OK1": { "alt-ergo": { "total": 1,
+                                                                  "valid": 1,
+                                                                  "rank": 3 },
+                                                    "wp:main": { "total": 1,
+                                                                 "valid": 1,
+                                                                 "rank": 3 } },
                               "wp:section": { "alt-ergo": { "total": 2,
                                                             "valid": 1,
                                                             "unknown": 1,
diff --git a/src/plugins/wp/tests/wp_typed/unit_string.i.0.report.json b/src/plugins/wp/tests/wp_typed/unit_string.i.0.report.json
index 2b72ca1e2750f4ad9003102d710df69690797602..c6197129cb4c49e1b91dddc00b391f9d0fa1f6aa 100644
--- a/src/plugins/wp/tests/wp_typed/unit_string.i.0.report.json
+++ b/src/plugins/wp/tests/wp_typed/unit_string.i.0.report.json
@@ -1,5 +1,5 @@
-{ "wp:global": { "alt-ergo": { "total": 6, "valid": 6, "rank": 24 },
-                 "wp:main": { "total": 6, "valid": 6, "rank": 24 } },
+{ "wp:global": { "alt-ergo": { "total": 6, "valid": 6, "rank": 25 },
+                 "wp:main": { "total": 6, "valid": 6, "rank": 25 } },
   "wp:functions": { "f": { "f_assert_VAL": { "alt-ergo": { "total": 1,
                                                            "valid": 1,
                                                            "rank": 15 },
@@ -8,10 +8,10 @@
                                                           "rank": 15 } },
                            "f_assert_B_rw": { "alt-ergo": { "total": 1,
                                                             "valid": 1,
-                                                            "rank": 15 },
+                                                            "rank": 16 },
                                               "wp:main": { "total": 1,
                                                            "valid": 1,
-                                                           "rank": 15 } },
+                                                           "rank": 16 } },
                            "f_assert_B_out": { "alt-ergo": { "total": 1,
                                                              "valid": 1,
                                                              "rank": 16 },
@@ -20,16 +20,16 @@
                                                             "rank": 16 } },
                            "f_assert_B_end": { "alt-ergo": { "total": 1,
                                                              "valid": 1,
-                                                             "rank": 24 },
+                                                             "rank": 25 },
                                                "wp:main": { "total": 1,
                                                             "valid": 1,
-                                                            "rank": 24 } },
+                                                            "rank": 25 } },
                            "f_assert_B_valid": { "alt-ergo": { "total": 1,
                                                                "valid": 1,
-                                                               "rank": 18 },
+                                                               "rank": 19 },
                                                  "wp:main": { "total": 1,
                                                               "valid": 1,
-                                                              "rank": 18 } },
+                                                              "rank": 19 } },
                            "f_assert_AB": { "alt-ergo": { "total": 1,
                                                           "valid": 1,
                                                           "rank": 8 },
@@ -38,7 +38,7 @@
                                                          "rank": 8 } },
                            "wp:section": { "alt-ergo": { "total": 6,
                                                          "valid": 6,
-                                                         "rank": 24 },
+                                                         "rank": 25 },
                                            "wp:main": { "total": 6,
                                                         "valid": 6,
-                                                        "rank": 24 } } } } }
+                                                        "rank": 25 } } } } }
diff --git a/src/plugins/wp/tests/wp_typed/unit_tset.i.0.report.json b/src/plugins/wp/tests/wp_typed/unit_tset.i.0.report.json
index 3f28cf0730281c2972e955ff30ae254cff1089e0..6295efbe91c8fdd5bbfd579b2f85613242aa4e3a 100644
--- a/src/plugins/wp/tests/wp_typed/unit_tset.i.0.report.json
+++ b/src/plugins/wp/tests/wp_typed/unit_tset.i.0.report.json
@@ -1,13 +1,13 @@
 { "wp:global": { "qed": { "total": 2, "valid": 2 },
                  "wp:main": { "total": 2, "valid": 2 } },
-  "wp:functions": { "complex": { "specialization_job_pre_at_complex_stmt_2": 
-                                   { "qed": { "total": 1, "valid": 1 },
-                                     "wp:main": { "total": 1, "valid": 1 } },
-                                 "complex_stmt_assign": { "qed": { "total": 1,
-                                                                   "valid": 1 },
-                                                          "wp:main": 
-                                                            { "total": 1,
-                                                              "valid": 1 } },
+  "wp:functions": { "complex": { "job_requires": { "qed": { "total": 1,
+                                                            "valid": 1 },
+                                                   "wp:main": { "total": 1,
+                                                                "valid": 1 } },
+                                 "complex_assigns": { "qed": { "total": 1,
+                                                               "valid": 1 },
+                                                      "wp:main": { "total": 1,
+                                                                   "valid": 1 } },
                                  "wp:section": { "qed": { "total": 2,
                                                           "valid": 2 },
                                                  "wp:main": { "total": 2,
diff --git a/src/plugins/wp/tests/wp_typed/user_bitwise.i.0.report.json b/src/plugins/wp/tests/wp_typed/user_bitwise.i.0.report.json
index ebd102c4e466b40f5d8613d62a48361b856fc0a3..a800dbccfc29820414bfc8335879f7e6605f7b28 100644
--- a/src/plugins/wp/tests/wp_typed/user_bitwise.i.0.report.json
+++ b/src/plugins/wp/tests/wp_typed/user_bitwise.i.0.report.json
@@ -1,111 +1,111 @@
-{ "wp:global": { "alt-ergo": { "total": 11, "valid": 11, "rank": 13 },
+{ "wp:global": { "alt-ergo": { "total": 11, "valid": 11, "rank": 14 },
                  "qed": { "total": 1, "valid": 1 },
-                 "wp:main": { "total": 12, "valid": 12, "rank": 13 } },
-  "wp:functions": { "rl1": { "rl1_post_bk": { "alt-ergo": { "total": 1,
-                                                            "valid": 1,
-                                                            "rank": 12 },
-                                              "wp:main": { "total": 1,
-                                                           "valid": 1,
-                                                           "rank": 12 } },
-                             "rl1_post_b0": { "qed": { "total": 1,
-                                                       "valid": 1 },
-                                              "wp:main": { "total": 1,
-                                                           "valid": 1 } },
+                 "wp:main": { "total": 12, "valid": 12, "rank": 14 } },
+  "wp:functions": { "rl1": { "rl1_ensures_bk": { "alt-ergo": { "total": 1,
+                                                               "valid": 1,
+                                                               "rank": 13 },
+                                                 "wp:main": { "total": 1,
+                                                              "valid": 1,
+                                                              "rank": 13 } },
+                             "rl1_ensures_b0": { "qed": { "total": 1,
+                                                          "valid": 1 },
+                                                 "wp:main": { "total": 1,
+                                                              "valid": 1 } },
                              "wp:section": { "alt-ergo": { "total": 1,
                                                            "valid": 1,
-                                                           "rank": 12 },
+                                                           "rank": 13 },
                                              "qed": { "total": 1,
                                                       "valid": 1 },
                                              "wp:main": { "total": 2,
                                                           "valid": 2,
-                                                          "rank": 12 } } },
-                    "rr1": { "rr1_post_bk": { "alt-ergo": { "total": 1,
-                                                            "valid": 1,
-                                                            "rank": 11 },
-                                              "wp:main": { "total": 1,
-                                                           "valid": 1,
-                                                           "rank": 11 } },
-                             "rr1_post_b0": { "alt-ergo": { "total": 1,
-                                                            "valid": 1,
-                                                            "rank": 4 },
-                                              "wp:main": { "total": 1,
-                                                           "valid": 1,
-                                                           "rank": 4 } },
+                                                          "rank": 13 } } },
+                    "rr1": { "rr1_ensures_bk": { "alt-ergo": { "total": 1,
+                                                               "valid": 1,
+                                                               "rank": 12 },
+                                                 "wp:main": { "total": 1,
+                                                              "valid": 1,
+                                                              "rank": 12 } },
+                             "rr1_ensures_b0": { "alt-ergo": { "total": 1,
+                                                               "valid": 1,
+                                                               "rank": 5 },
+                                                 "wp:main": { "total": 1,
+                                                              "valid": 1,
+                                                              "rank": 5 } },
                              "wp:section": { "alt-ergo": { "total": 2,
                                                            "valid": 2,
-                                                           "rank": 11 },
+                                                           "rank": 12 },
                                              "wp:main": { "total": 2,
                                                           "valid": 2,
-                                                          "rank": 11 } } },
-                    "rln32": { "rln32_post_b2": { "alt-ergo": { "total": 1,
-                                                                "valid": 1,
-                                                                "rank": 13 },
-                                                  "wp:main": { "total": 1,
-                                                               "valid": 1,
-                                                               "rank": 13 } },
-                               "rln32_post_b1": { "alt-ergo": { "total": 1,
-                                                                "valid": 1,
-                                                                "rank": 13 },
-                                                  "wp:main": { "total": 1,
-                                                               "valid": 1,
-                                                               "rank": 13 } },
+                                                          "rank": 12 } } },
+                    "rln32": { "rln32_ensures_b2": { "alt-ergo": { "total": 1,
+                                                                   "valid": 1,
+                                                                   "rank": 14 },
+                                                     "wp:main": { "total": 1,
+                                                                  "valid": 1,
+                                                                  "rank": 14 } },
+                               "rln32_ensures_b1": { "alt-ergo": { "total": 1,
+                                                                   "valid": 1,
+                                                                   "rank": 14 },
+                                                     "wp:main": { "total": 1,
+                                                                  "valid": 1,
+                                                                  "rank": 14 } },
                                "wp:section": { "alt-ergo": { "total": 2,
                                                              "valid": 2,
-                                                             "rank": 13 },
+                                                             "rank": 14 },
                                                "wp:main": { "total": 2,
                                                             "valid": 2,
-                                                            "rank": 13 } } },
-                    "rrn32": { "rrn32_post_b2": { "alt-ergo": { "total": 1,
-                                                                "valid": 1,
-                                                                "rank": 12 },
-                                                  "wp:main": { "total": 1,
-                                                               "valid": 1,
-                                                               "rank": 12 } },
-                               "rrn32_post_b1": { "alt-ergo": { "total": 1,
-                                                                "valid": 1,
-                                                                "rank": 13 },
-                                                  "wp:main": { "total": 1,
-                                                               "valid": 1,
-                                                               "rank": 13 } },
+                                                            "rank": 14 } } },
+                    "rrn32": { "rrn32_ensures_b2": { "alt-ergo": { "total": 1,
+                                                                   "valid": 1,
+                                                                   "rank": 13 },
+                                                     "wp:main": { "total": 1,
+                                                                  "valid": 1,
+                                                                  "rank": 13 } },
+                               "rrn32_ensures_b1": { "alt-ergo": { "total": 1,
+                                                                   "valid": 1,
+                                                                   "rank": 14 },
+                                                     "wp:main": { "total": 1,
+                                                                  "valid": 1,
+                                                                  "rank": 14 } },
                                "wp:section": { "alt-ergo": { "total": 2,
                                                              "valid": 2,
-                                                             "rank": 13 },
+                                                             "rank": 14 },
                                                "wp:main": { "total": 2,
                                                             "valid": 2,
-                                                            "rank": 13 } } },
-                    "rln64": { "rln64_post_b2": { "alt-ergo": { "total": 1,
-                                                                "valid": 1,
-                                                                "rank": 13 },
-                                                  "wp:main": { "total": 1,
-                                                               "valid": 1,
-                                                               "rank": 13 } },
-                               "rln64_post_b1": { "alt-ergo": { "total": 1,
-                                                                "valid": 1,
-                                                                "rank": 13 },
-                                                  "wp:main": { "total": 1,
-                                                               "valid": 1,
-                                                               "rank": 13 } },
+                                                            "rank": 14 } } },
+                    "rln64": { "rln64_ensures_b2": { "alt-ergo": { "total": 1,
+                                                                   "valid": 1,
+                                                                   "rank": 14 },
+                                                     "wp:main": { "total": 1,
+                                                                  "valid": 1,
+                                                                  "rank": 14 } },
+                               "rln64_ensures_b1": { "alt-ergo": { "total": 1,
+                                                                   "valid": 1,
+                                                                   "rank": 14 },
+                                                     "wp:main": { "total": 1,
+                                                                  "valid": 1,
+                                                                  "rank": 14 } },
                                "wp:section": { "alt-ergo": { "total": 2,
                                                              "valid": 2,
-                                                             "rank": 13 },
+                                                             "rank": 14 },
                                                "wp:main": { "total": 2,
                                                             "valid": 2,
-                                                            "rank": 13 } } },
-                    "rrn64": { "rrn64_post_b2": { "alt-ergo": { "total": 1,
-                                                                "valid": 1,
-                                                                "rank": 12 },
-                                                  "wp:main": { "total": 1,
-                                                               "valid": 1,
-                                                               "rank": 12 } },
-                               "rrn64_post_b1": { "alt-ergo": { "total": 1,
-                                                                "valid": 1,
-                                                                "rank": 13 },
-                                                  "wp:main": { "total": 1,
-                                                               "valid": 1,
-                                                               "rank": 13 } },
+                                                            "rank": 14 } } },
+                    "rrn64": { "rrn64_ensures_b2": { "alt-ergo": { "total": 1,
+                                                                   "valid": 1,
+                                                                   "rank": 13 },
+                                                     "wp:main": { "total": 1,
+                                                                  "valid": 1,
+                                                                  "rank": 13 } },
+                               "rrn64_ensures_b1": { "alt-ergo": { "total": 1,
+                                                                   "valid": 1,
+                                                                   "rank": 14 },
+                                                     "wp:main": { "total": 1,
+                                                                  "valid": 1,
+                                                                  "rank": 14 } },
                                "wp:section": { "alt-ergo": { "total": 2,
                                                              "valid": 2,
-                                                             "rank": 13 },
+                                                             "rank": 14 },
                                                "wp:main": { "total": 2,
                                                             "valid": 2,
-                                                            "rank": 13 } } } } }
+                                                            "rank": 14 } } } } }
diff --git a/src/plugins/wp/tests/wp_typed/user_collect.i.0.report.json b/src/plugins/wp/tests/wp_typed/user_collect.i.0.report.json
index 25b10ccb148706c2318ad6cc96155cab7db206c3..070ac4e1cbf553f8b2a40a93aa88dddd3fb9733c 100644
--- a/src/plugins/wp/tests/wp_typed/user_collect.i.0.report.json
+++ b/src/plugins/wp/tests/wp_typed/user_collect.i.0.report.json
@@ -1,52 +1,52 @@
-{ "wp:global": { "alt-ergo": { "total": 15, "valid": 15, "rank": 12 },
+{ "wp:global": { "alt-ergo": { "total": 15, "valid": 15, "rank": 13 },
                  "qed": { "total": 17, "valid": 17 },
-                 "wp:main": { "total": 32, "valid": 32, "rank": 12 } },
-  "wp:functions": { "job": { "job_assign": { "qed": { "total": 3,
-                                                      "valid": 3 },
-                                             "wp:main": { "total": 3,
-                                                          "valid": 3 } },
-                             "job_post_P": { "qed": { "total": 1,
-                                                      "valid": 1 },
-                                             "wp:main": { "total": 1,
-                                                          "valid": 1 } },
-                             "job_post_K": { "qed": { "total": 1,
-                                                      "valid": 1 },
-                                             "wp:main": { "total": 1,
-                                                          "valid": 1 } },
+                 "wp:main": { "total": 32, "valid": 32, "rank": 13 } },
+  "wp:functions": { "job": { "job_assigns": { "qed": { "total": 3,
+                                                       "valid": 3 },
+                                              "wp:main": { "total": 3,
+                                                           "valid": 3 } },
+                             "job_ensures_P": { "qed": { "total": 1,
+                                                         "valid": 1 },
+                                                "wp:main": { "total": 1,
+                                                             "valid": 1 } },
+                             "job_ensures_K": { "qed": { "total": 1,
+                                                         "valid": 1 },
+                                                "wp:main": { "total": 1,
+                                                             "valid": 1 } },
                              "wp:section": { "qed": { "total": 5,
                                                       "valid": 5 },
                                              "wp:main": { "total": 5,
                                                           "valid": 5 } } },
-                    "job2": { "job2_assign": { "qed": { "total": 3,
-                                                        "valid": 3 },
-                                               "wp:main": { "total": 3,
-                                                            "valid": 3 } },
-                              "job2_post_Q": { "qed": { "total": 1,
-                                                        "valid": 1 },
-                                               "wp:main": { "total": 1,
-                                                            "valid": 1 } },
-                              "job2_post_K": { "qed": { "total": 1,
-                                                        "valid": 1 },
-                                               "wp:main": { "total": 1,
-                                                            "valid": 1 } },
+                    "job2": { "job2_assigns": { "qed": { "total": 3,
+                                                         "valid": 3 },
+                                                "wp:main": { "total": 3,
+                                                             "valid": 3 } },
+                              "job2_ensures_Q": { "qed": { "total": 1,
+                                                           "valid": 1 },
+                                                  "wp:main": { "total": 1,
+                                                               "valid": 1 } },
+                              "job2_ensures_K": { "qed": { "total": 1,
+                                                           "valid": 1 },
+                                                  "wp:main": { "total": 1,
+                                                               "valid": 1 } },
                               "wp:section": { "qed": { "total": 5,
                                                        "valid": 5 },
                                               "wp:main": { "total": 5,
                                                            "valid": 5 } } },
-                    "job3": { "job3_assign": { "qed": { "total": 3,
-                                                        "valid": 3 },
-                                               "wp:main": { "total": 3,
-                                                            "valid": 3 } },
-                              "job3_post_Q": { "alt-ergo": { "total": 1,
-                                                             "valid": 1,
-                                                             "rank": 5 },
-                                               "wp:main": { "total": 1,
-                                                            "valid": 1,
-                                                            "rank": 5 } },
-                              "job3_post_K": { "qed": { "total": 1,
-                                                        "valid": 1 },
-                                               "wp:main": { "total": 1,
-                                                            "valid": 1 } },
+                    "job3": { "job3_assigns": { "qed": { "total": 3,
+                                                         "valid": 3 },
+                                                "wp:main": { "total": 3,
+                                                             "valid": 3 } },
+                              "job3_ensures_Q": { "alt-ergo": { "total": 1,
+                                                                "valid": 1,
+                                                                "rank": 5 },
+                                                  "wp:main": { "total": 1,
+                                                               "valid": 1,
+                                                               "rank": 5 } },
+                              "job3_ensures_K": { "qed": { "total": 1,
+                                                           "valid": 1 },
+                                                  "wp:main": { "total": 1,
+                                                               "valid": 1 } },
                               "wp:section": { "alt-ergo": { "total": 1,
                                                             "valid": 1,
                                                             "rank": 5 },
@@ -55,32 +55,34 @@
                                               "wp:main": { "total": 5,
                                                            "valid": 5,
                                                            "rank": 5 } } },
-                    "caller": { "specialization_job_pre_at_caller_stmt_19": 
-                                  { "alt-ergo": { "total": 1, "valid": 1,
-                                                  "rank": 3 },
-                                    "wp:main": { "total": 1, "valid": 1,
-                                                 "rank": 3 } },
-                                "specialization_job_pre_at_caller_stmt_18": 
-                                  { "alt-ergo": { "total": 1, "valid": 1,
-                                                  "rank": 1 },
-                                    "wp:main": { "total": 1, "valid": 1,
-                                                 "rank": 1 } },
-                                "caller_post_P2": { "alt-ergo": { "total": 1,
+                    "caller": { "job_requires_2": { "alt-ergo": { "total": 1,
                                                                   "valid": 1,
-                                                                  "rank": 9 },
+                                                                  "rank": 3 },
                                                     "wp:main": { "total": 1,
                                                                  "valid": 1,
-                                                                 "rank": 9 } },
-                                "caller_post_P1": { "alt-ergo": { "total": 1,
-                                                                  "valid": 1,
-                                                                  "rank": 9 },
-                                                    "wp:main": { "total": 1,
-                                                                 "valid": 1,
-                                                                 "rank": 9 } },
-                                "caller_post_K": { "qed": { "total": 1,
-                                                            "valid": 1 },
-                                                   "wp:main": { "total": 1,
-                                                                "valid": 1 } },
+                                                                 "rank": 3 } },
+                                "job_requires": { "alt-ergo": { "total": 1,
+                                                                "valid": 1,
+                                                                "rank": 2 },
+                                                  "wp:main": { "total": 1,
+                                                               "valid": 1,
+                                                               "rank": 2 } },
+                                "caller_ensures_P2": { "alt-ergo": { "total": 1,
+                                                                    "valid": 1,
+                                                                    "rank": 9 },
+                                                       "wp:main": { "total": 1,
+                                                                    "valid": 1,
+                                                                    "rank": 9 } },
+                                "caller_ensures_P1": { "alt-ergo": { "total": 1,
+                                                                    "valid": 1,
+                                                                    "rank": 9 },
+                                                       "wp:main": { "total": 1,
+                                                                    "valid": 1,
+                                                                    "rank": 9 } },
+                                "caller_ensures_K": { "qed": { "total": 1,
+                                                               "valid": 1 },
+                                                      "wp:main": { "total": 1,
+                                                                   "valid": 1 } },
                                 "wp:section": { "alt-ergo": { "total": 4,
                                                               "valid": 4,
                                                               "rank": 9 },
@@ -89,83 +91,91 @@
                                                 "wp:main": { "total": 5,
                                                              "valid": 5,
                                                              "rank": 9 } } },
-                    "caller2": { "specialization_job2_pre_at_caller2_stmt_23": 
-                                   { "alt-ergo": { "total": 1, "valid": 1,
-                                                   "rank": 3 },
-                                     "wp:main": { "total": 1, "valid": 1,
-                                                  "rank": 3 } },
-                                 "specialization_job2_pre_at_caller2_stmt_22": 
-                                   { "alt-ergo": { "total": 1, "valid": 1,
-                                                   "rank": 1 },
-                                     "wp:main": { "total": 1, "valid": 1,
-                                                  "rank": 1 } },
-                                 "caller2_post_R": { "alt-ergo": { "total": 1,
-                                                                   "valid": 1,
-                                                                   "rank": 12 },
-                                                     "wp:main": { "total": 1,
-                                                                  "valid": 1,
-                                                                  "rank": 12 } },
-                                 "caller2_post_Q2": { "alt-ergo": { "total": 1,
+                    "caller2": { "job2_requires_2": { "alt-ergo": { "total": 1,
                                                                     "valid": 1,
-                                                                    "rank": 12 },
+                                                                    "rank": 3 },
                                                       "wp:main": { "total": 1,
                                                                    "valid": 1,
-                                                                   "rank": 12 } },
-                                 "caller2_post_Q1": { "alt-ergo": { "total": 1,
+                                                                   "rank": 3 } },
+                                 "job2_requires": { "alt-ergo": { "total": 1,
+                                                                  "valid": 1,
+                                                                  "rank": 2 },
+                                                    "wp:main": { "total": 1,
+                                                                 "valid": 1,
+                                                                 "rank": 2 } },
+                                 "caller2_ensures_R": { "alt-ergo": { "total": 1,
                                                                     "valid": 1,
-                                                                    "rank": 12 },
-                                                      "wp:main": { "total": 1,
-                                                                   "valid": 1,
-                                                                   "rank": 12 } },
-                                 "caller2_post_K": { "qed": { "total": 1,
-                                                              "valid": 1 },
-                                                     "wp:main": { "total": 1,
-                                                                  "valid": 1 } },
+                                                                    "rank": 13 },
+                                                        "wp:main": { "total": 1,
+                                                                    "valid": 1,
+                                                                    "rank": 13 } },
+                                 "caller2_ensures_Q2": { "alt-ergo": 
+                                                           { "total": 1,
+                                                             "valid": 1,
+                                                             "rank": 13 },
+                                                         "wp:main": { "total": 1,
+                                                                    "valid": 1,
+                                                                    "rank": 13 } },
+                                 "caller2_ensures_Q1": { "alt-ergo": 
+                                                           { "total": 1,
+                                                             "valid": 1,
+                                                             "rank": 13 },
+                                                         "wp:main": { "total": 1,
+                                                                    "valid": 1,
+                                                                    "rank": 13 } },
+                                 "caller2_ensures_K": { "qed": { "total": 1,
+                                                                 "valid": 1 },
+                                                        "wp:main": { "total": 1,
+                                                                    "valid": 1 } },
                                  "wp:section": { "alt-ergo": { "total": 5,
                                                                "valid": 5,
-                                                               "rank": 12 },
+                                                               "rank": 13 },
                                                  "qed": { "total": 1,
                                                           "valid": 1 },
                                                  "wp:main": { "total": 6,
                                                               "valid": 6,
-                                                              "rank": 12 } } },
-                    "caller3": { "specialization_job3_pre_at_caller3_stmt_27": 
-                                   { "alt-ergo": { "total": 1, "valid": 1,
-                                                   "rank": 3 },
-                                     "wp:main": { "total": 1, "valid": 1,
-                                                  "rank": 3 } },
-                                 "specialization_job3_pre_at_caller3_stmt_26": 
-                                   { "alt-ergo": { "total": 1, "valid": 1,
-                                                   "rank": 1 },
-                                     "wp:main": { "total": 1, "valid": 1,
-                                                  "rank": 1 } },
-                                 "caller3_post_R": { "alt-ergo": { "total": 1,
-                                                                   "valid": 1,
-                                                                   "rank": 12 },
-                                                     "wp:main": { "total": 1,
-                                                                  "valid": 1,
-                                                                  "rank": 12 } },
-                                 "caller3_post_Q2": { "alt-ergo": { "total": 1,
+                                                              "rank": 13 } } },
+                    "caller3": { "job3_requires_2": { "alt-ergo": { "total": 1,
                                                                     "valid": 1,
-                                                                    "rank": 12 },
+                                                                    "rank": 3 },
                                                       "wp:main": { "total": 1,
                                                                    "valid": 1,
-                                                                   "rank": 12 } },
-                                 "caller3_post_Q1": { "alt-ergo": { "total": 1,
+                                                                   "rank": 3 } },
+                                 "job3_requires": { "alt-ergo": { "total": 1,
+                                                                  "valid": 1,
+                                                                  "rank": 2 },
+                                                    "wp:main": { "total": 1,
+                                                                 "valid": 1,
+                                                                 "rank": 2 } },
+                                 "caller3_ensures_R": { "alt-ergo": { "total": 1,
                                                                     "valid": 1,
-                                                                    "rank": 12 },
-                                                      "wp:main": { "total": 1,
-                                                                   "valid": 1,
-                                                                   "rank": 12 } },
-                                 "caller3_post_K": { "qed": { "total": 1,
-                                                              "valid": 1 },
-                                                     "wp:main": { "total": 1,
-                                                                  "valid": 1 } },
+                                                                    "rank": 13 },
+                                                        "wp:main": { "total": 1,
+                                                                    "valid": 1,
+                                                                    "rank": 13 } },
+                                 "caller3_ensures_Q2": { "alt-ergo": 
+                                                           { "total": 1,
+                                                             "valid": 1,
+                                                             "rank": 13 },
+                                                         "wp:main": { "total": 1,
+                                                                    "valid": 1,
+                                                                    "rank": 13 } },
+                                 "caller3_ensures_Q1": { "alt-ergo": 
+                                                           { "total": 1,
+                                                             "valid": 1,
+                                                             "rank": 13 },
+                                                         "wp:main": { "total": 1,
+                                                                    "valid": 1,
+                                                                    "rank": 13 } },
+                                 "caller3_ensures_K": { "qed": { "total": 1,
+                                                                 "valid": 1 },
+                                                        "wp:main": { "total": 1,
+                                                                    "valid": 1 } },
                                  "wp:section": { "alt-ergo": { "total": 5,
                                                                "valid": 5,
-                                                               "rank": 12 },
+                                                               "rank": 13 },
                                                  "qed": { "total": 1,
                                                           "valid": 1 },
                                                  "wp:main": { "total": 6,
                                                               "valid": 6,
-                                                              "rank": 12 } } } } }
+                                                              "rank": 13 } } } } }
diff --git a/src/plugins/wp/tests/wp_typed/user_init.i.0.report.json b/src/plugins/wp/tests/wp_typed/user_init.i.0.report.json
index dbef37c6533a5ff6e6a4ab33ac7856aee3ca312e..1651d4db1362d3b7af4041cfded35531c28aef00 100644
--- a/src/plugins/wp/tests/wp_typed/user_init.i.0.report.json
+++ b/src/plugins/wp/tests/wp_typed/user_init.i.0.report.json
@@ -1,41 +1,45 @@
 { "wp:global": { "alt-ergo": { "total": 4, "valid": 4, "rank": 19 },
                  "qed": { "total": 4, "valid": 4 },
                  "wp:main": { "total": 8, "valid": 8, "rank": 19 } },
-  "wp:functions": { "init": { "init_loop_inv_Partial": { "alt-ergo": 
-                                                           { "total": 1,
-                                                             "valid": 1,
-                                                             "rank": 8 },
-                                                         "qed": { "total": 1,
-                                                                  "valid": 1 },
-                                                         "wp:main": { "total": 2,
-                                                                    "valid": 2,
-                                                                    "rank": 8 } },
-                              "init_loop_inv_Range": { "alt-ergo": { "total": 1,
-                                                                    "valid": 1,
-                                                                    "rank": 4 },
-                                                       "qed": { "total": 1,
-                                                                "valid": 1 },
-                                                       "wp:main": { "total": 2,
-                                                                    "valid": 2,
-                                                                    "rank": 4 } },
-                              "init_assign": { "qed": { "total": 1,
-                                                        "valid": 1 },
-                                               "wp:main": { "total": 1,
-                                                            "valid": 1 } },
-                              "init_loop_assign": { "alt-ergo": { "total": 1,
-                                                                  "valid": 1,
-                                                                  "rank": 19 },
-                                                    "qed": { "total": 1,
-                                                             "valid": 1 },
-                                                    "wp:main": { "total": 2,
+  "wp:functions": { "init": { "init_loop_invariant_Partial": { "alt-ergo": 
+                                                                 { "total": 1,
+                                                                   "valid": 1,
+                                                                   "rank": 9 },
+                                                               "qed": 
+                                                                 { "total": 1,
+                                                                   "valid": 1 },
+                                                               "wp:main": 
+                                                                 { "total": 2,
+                                                                   "valid": 2,
+                                                                   "rank": 9 } },
+                              "init_loop_invariant_Range": { "alt-ergo": 
+                                                               { "total": 1,
+                                                                 "valid": 1,
+                                                                 "rank": 4 },
+                                                             "qed": { "total": 1,
+                                                                    "valid": 1 },
+                                                             "wp:main": 
+                                                               { "total": 2,
                                                                  "valid": 2,
-                                                                 "rank": 19 } },
-                              "init_post": { "alt-ergo": { "total": 1,
-                                                           "valid": 1,
-                                                           "rank": 7 },
-                                             "wp:main": { "total": 1,
-                                                          "valid": 1,
-                                                          "rank": 7 } },
+                                                                 "rank": 4 } },
+                              "init_assigns": { "qed": { "total": 1,
+                                                         "valid": 1 },
+                                                "wp:main": { "total": 1,
+                                                             "valid": 1 } },
+                              "init_loop_assigns": { "alt-ergo": { "total": 1,
+                                                                   "valid": 1,
+                                                                   "rank": 19 },
+                                                     "qed": { "total": 1,
+                                                              "valid": 1 },
+                                                     "wp:main": { "total": 2,
+                                                                  "valid": 2,
+                                                                  "rank": 19 } },
+                              "init_ensures": { "alt-ergo": { "total": 1,
+                                                              "valid": 1,
+                                                              "rank": 7 },
+                                                "wp:main": { "total": 1,
+                                                             "valid": 1,
+                                                             "rank": 7 } },
                               "wp:section": { "alt-ergo": { "total": 4,
                                                             "valid": 4,
                                                             "rank": 19 },
diff --git a/src/plugins/wp/tests/wp_typed/user_injector.i.0.report.json b/src/plugins/wp/tests/wp_typed/user_injector.i.0.report.json
index 0eb062947507876aa0ebe0d56d3194c841bf9953..8d5dde5103a4191f2d9676e23e2d9bc4b6b73927 100644
--- a/src/plugins/wp/tests/wp_typed/user_injector.i.0.report.json
+++ b/src/plugins/wp/tests/wp_typed/user_injector.i.0.report.json
@@ -1,41 +1,41 @@
 { "wp:global": { "qed": { "total": 20, "valid": 20 },
                  "wp:main": { "total": 20, "valid": 20 } },
-  "wp:functions": { "job": { "job_assign": { "qed": { "total": 12,
-                                                      "valid": 12 },
-                                             "wp:main": { "total": 12,
-                                                          "valid": 12 } },
-                             "job_post_E2": { "qed": { "total": 1,
-                                                       "valid": 1 },
-                                              "wp:main": { "total": 1,
-                                                           "valid": 1 } },
-                             "job_post_E1": { "qed": { "total": 1,
-                                                       "valid": 1 },
-                                              "wp:main": { "total": 1,
-                                                           "valid": 1 } },
-                             "job_post_R0": { "qed": { "total": 1,
-                                                       "valid": 1 },
-                                              "wp:main": { "total": 1,
-                                                           "valid": 1 } },
-                             "job_post_R2": { "qed": { "total": 1,
-                                                       "valid": 1 },
-                                              "wp:main": { "total": 1,
-                                                           "valid": 1 } },
-                             "job_post_R1": { "qed": { "total": 1,
-                                                       "valid": 1 },
-                                              "wp:main": { "total": 1,
-                                                           "valid": 1 } },
-                             "job_post_ID2": { "qed": { "total": 1,
-                                                        "valid": 1 },
-                                               "wp:main": { "total": 1,
-                                                            "valid": 1 } },
-                             "job_post_ID1": { "qed": { "total": 1,
-                                                        "valid": 1 },
-                                               "wp:main": { "total": 1,
-                                                            "valid": 1 } },
-                             "job_post_SEQ": { "qed": { "total": 1,
-                                                        "valid": 1 },
-                                               "wp:main": { "total": 1,
-                                                            "valid": 1 } },
+  "wp:functions": { "job": { "job_assigns": { "qed": { "total": 12,
+                                                       "valid": 12 },
+                                              "wp:main": { "total": 12,
+                                                           "valid": 12 } },
+                             "job_ensures_E2": { "qed": { "total": 1,
+                                                          "valid": 1 },
+                                                 "wp:main": { "total": 1,
+                                                              "valid": 1 } },
+                             "job_ensures_E1": { "qed": { "total": 1,
+                                                          "valid": 1 },
+                                                 "wp:main": { "total": 1,
+                                                              "valid": 1 } },
+                             "job_ensures_R0": { "qed": { "total": 1,
+                                                          "valid": 1 },
+                                                 "wp:main": { "total": 1,
+                                                              "valid": 1 } },
+                             "job_ensures_R2": { "qed": { "total": 1,
+                                                          "valid": 1 },
+                                                 "wp:main": { "total": 1,
+                                                              "valid": 1 } },
+                             "job_ensures_R1": { "qed": { "total": 1,
+                                                          "valid": 1 },
+                                                 "wp:main": { "total": 1,
+                                                              "valid": 1 } },
+                             "job_ensures_ID2": { "qed": { "total": 1,
+                                                           "valid": 1 },
+                                                  "wp:main": { "total": 1,
+                                                               "valid": 1 } },
+                             "job_ensures_ID1": { "qed": { "total": 1,
+                                                           "valid": 1 },
+                                                  "wp:main": { "total": 1,
+                                                               "valid": 1 } },
+                             "job_ensures_SEQ": { "qed": { "total": 1,
+                                                           "valid": 1 },
+                                                  "wp:main": { "total": 1,
+                                                               "valid": 1 } },
                              "wp:section": { "qed": { "total": 20,
                                                       "valid": 20 },
                                              "wp:main": { "total": 20,
diff --git a/src/plugins/wp/tests/wp_typed/user_injector.i.1.report.json b/src/plugins/wp/tests/wp_typed/user_injector.i.1.report.json
index 37ae88313d205bfb7319a52ac8b355d17d19d315..3bd17fdbbd541cbfa62396baffba2c440804229a 100644
--- a/src/plugins/wp/tests/wp_typed/user_injector.i.1.report.json
+++ b/src/plugins/wp/tests/wp_typed/user_injector.i.1.report.json
@@ -1,41 +1,41 @@
 { "wp:global": { "qed": { "total": 16, "valid": 16 },
                  "wp:main": { "total": 16, "valid": 16 } },
-  "wp:functions": { "job": { "job_assign": { "qed": { "total": 8,
-                                                      "valid": 8 },
-                                             "wp:main": { "total": 8,
-                                                          "valid": 8 } },
-                             "job_post_E2": { "qed": { "total": 1,
-                                                       "valid": 1 },
-                                              "wp:main": { "total": 1,
-                                                           "valid": 1 } },
-                             "job_post_E1": { "qed": { "total": 1,
-                                                       "valid": 1 },
-                                              "wp:main": { "total": 1,
-                                                           "valid": 1 } },
-                             "job_post_R0": { "qed": { "total": 1,
-                                                       "valid": 1 },
-                                              "wp:main": { "total": 1,
-                                                           "valid": 1 } },
-                             "job_post_R2": { "qed": { "total": 1,
-                                                       "valid": 1 },
-                                              "wp:main": { "total": 1,
-                                                           "valid": 1 } },
-                             "job_post_R1": { "qed": { "total": 1,
-                                                       "valid": 1 },
-                                              "wp:main": { "total": 1,
-                                                           "valid": 1 } },
-                             "job_post_ID2": { "qed": { "total": 1,
-                                                        "valid": 1 },
-                                               "wp:main": { "total": 1,
-                                                            "valid": 1 } },
-                             "job_post_ID1": { "qed": { "total": 1,
-                                                        "valid": 1 },
-                                               "wp:main": { "total": 1,
-                                                            "valid": 1 } },
-                             "job_post_SEQ": { "qed": { "total": 1,
-                                                        "valid": 1 },
-                                               "wp:main": { "total": 1,
-                                                            "valid": 1 } },
+  "wp:functions": { "job": { "job_assigns": { "qed": { "total": 8,
+                                                       "valid": 8 },
+                                              "wp:main": { "total": 8,
+                                                           "valid": 8 } },
+                             "job_ensures_E2": { "qed": { "total": 1,
+                                                          "valid": 1 },
+                                                 "wp:main": { "total": 1,
+                                                              "valid": 1 } },
+                             "job_ensures_E1": { "qed": { "total": 1,
+                                                          "valid": 1 },
+                                                 "wp:main": { "total": 1,
+                                                              "valid": 1 } },
+                             "job_ensures_R0": { "qed": { "total": 1,
+                                                          "valid": 1 },
+                                                 "wp:main": { "total": 1,
+                                                              "valid": 1 } },
+                             "job_ensures_R2": { "qed": { "total": 1,
+                                                          "valid": 1 },
+                                                 "wp:main": { "total": 1,
+                                                              "valid": 1 } },
+                             "job_ensures_R1": { "qed": { "total": 1,
+                                                          "valid": 1 },
+                                                 "wp:main": { "total": 1,
+                                                              "valid": 1 } },
+                             "job_ensures_ID2": { "qed": { "total": 1,
+                                                           "valid": 1 },
+                                                  "wp:main": { "total": 1,
+                                                               "valid": 1 } },
+                             "job_ensures_ID1": { "qed": { "total": 1,
+                                                           "valid": 1 },
+                                                  "wp:main": { "total": 1,
+                                                               "valid": 1 } },
+                             "job_ensures_SEQ": { "qed": { "total": 1,
+                                                           "valid": 1 },
+                                                  "wp:main": { "total": 1,
+                                                               "valid": 1 } },
                              "wp:section": { "qed": { "total": 16,
                                                       "valid": 16 },
                                              "wp:main": { "total": 16,
diff --git a/src/plugins/wp/tests/wp_typed/user_rec.i.0.report.json b/src/plugins/wp/tests/wp_typed/user_rec.i.0.report.json
index afe3bad05a28d6a40a660ff4abe9511449cbddd1..c1aa3308c9e10ee4a705ba99085a15fc24ed725c 100644
--- a/src/plugins/wp/tests/wp_typed/user_rec.i.0.report.json
+++ b/src/plugins/wp/tests/wp_typed/user_rec.i.0.report.json
@@ -1,27 +1,28 @@
 { "wp:global": { "alt-ergo": { "total": 15, "valid": 15, "rank": 16 },
                  "qed": { "total": 3, "valid": 3 },
                  "wp:main": { "total": 18, "valid": 18, "rank": 16 } },
-  "wp:functions": { "F1": { "F1_loop_inv_2": { "alt-ergo": { "total": 2,
-                                                             "valid": 2,
-                                                             "rank": 7 },
-                                               "wp:main": { "total": 2,
-                                                            "valid": 2,
-                                                            "rank": 7 } },
-                            "F1_loop_inv": { "alt-ergo": { "total": 2,
-                                                           "valid": 2,
-                                                           "rank": 3 },
-                                             "wp:main": { "total": 2,
-                                                          "valid": 2,
-                                                          "rank": 3 } },
-                            "F1_loop_assign": { "qed": { "total": 1,
-                                                         "valid": 1 },
-                                                "wp:main": { "total": 1,
-                                                             "valid": 1 } },
-                            "F1_post": { "alt-ergo": { "total": 1,
-                                                       "valid": 1,
-                                                       "rank": 5 },
-                                         "wp:main": { "total": 1, "valid": 1,
-                                                      "rank": 5 } },
+  "wp:functions": { "F1": { "F1_loop_invariant_2": { "alt-ergo": { "total": 2,
+                                                                   "valid": 2,
+                                                                   "rank": 7 },
+                                                     "wp:main": { "total": 2,
+                                                                  "valid": 2,
+                                                                  "rank": 7 } },
+                            "F1_loop_invariant": { "alt-ergo": { "total": 2,
+                                                                 "valid": 2,
+                                                                 "rank": 3 },
+                                                   "wp:main": { "total": 2,
+                                                                "valid": 2,
+                                                                "rank": 3 } },
+                            "F1_loop_assigns": { "qed": { "total": 1,
+                                                          "valid": 1 },
+                                                 "wp:main": { "total": 1,
+                                                              "valid": 1 } },
+                            "F1_ensures": { "alt-ergo": { "total": 1,
+                                                          "valid": 1,
+                                                          "rank": 5 },
+                                            "wp:main": { "total": 1,
+                                                         "valid": 1,
+                                                         "rank": 5 } },
                             "wp:section": { "alt-ergo": { "total": 5,
                                                           "valid": 5,
                                                           "rank": 7 },
@@ -29,27 +30,29 @@
                                             "wp:main": { "total": 6,
                                                          "valid": 6,
                                                          "rank": 7 } } },
-                    "F2": { "F2_loop_inv_PART": { "alt-ergo": { "total": 2,
-                                                                "valid": 2,
-                                                                "rank": 9 },
-                                                  "wp:main": { "total": 2,
-                                                               "valid": 2,
-                                                               "rank": 9 } },
-                            "F2_loop_inv_RANGE": { "alt-ergo": { "total": 2,
-                                                                 "valid": 2,
-                                                                 "rank": 2 },
-                                                   "wp:main": { "total": 2,
-                                                                "valid": 2,
-                                                                "rank": 2 } },
-                            "F2_loop_assign": { "qed": { "total": 1,
-                                                         "valid": 1 },
-                                                "wp:main": { "total": 1,
-                                                             "valid": 1 } },
-                            "F2_post": { "alt-ergo": { "total": 1,
-                                                       "valid": 1,
-                                                       "rank": 5 },
-                                         "wp:main": { "total": 1, "valid": 1,
-                                                      "rank": 5 } },
+                    "F2": { "F2_loop_invariant_PART": { "alt-ergo": { "total": 2,
+                                                                    "valid": 2,
+                                                                    "rank": 9 },
+                                                        "wp:main": { "total": 2,
+                                                                    "valid": 2,
+                                                                    "rank": 9 } },
+                            "F2_loop_invariant_RANGE": { "alt-ergo": 
+                                                           { "total": 2,
+                                                             "valid": 2,
+                                                             "rank": 3 },
+                                                         "wp:main": { "total": 2,
+                                                                    "valid": 2,
+                                                                    "rank": 3 } },
+                            "F2_loop_assigns": { "qed": { "total": 1,
+                                                          "valid": 1 },
+                                                 "wp:main": { "total": 1,
+                                                              "valid": 1 } },
+                            "F2_ensures": { "alt-ergo": { "total": 1,
+                                                          "valid": 1,
+                                                          "rank": 6 },
+                                            "wp:main": { "total": 1,
+                                                         "valid": 1,
+                                                         "rank": 6 } },
                             "wp:section": { "alt-ergo": { "total": 5,
                                                           "valid": 5,
                                                           "rank": 9 },
@@ -57,27 +60,30 @@
                                             "wp:main": { "total": 6,
                                                          "valid": 6,
                                                          "rank": 9 } } },
-                    "F4": { "F4_loop_inv_NEVER": { "alt-ergo": { "total": 2,
-                                                                 "valid": 2,
-                                                                 "rank": 7 },
-                                                   "wp:main": { "total": 2,
-                                                                "valid": 2,
-                                                                "rank": 7 } },
-                            "F4_loop_inv_RANGE": { "alt-ergo": { "total": 2,
-                                                                 "valid": 2,
-                                                                 "rank": 3 },
-                                                   "wp:main": { "total": 2,
-                                                                "valid": 2,
-                                                                "rank": 3 } },
-                            "F4_loop_assign": { "qed": { "total": 1,
-                                                         "valid": 1 },
-                                                "wp:main": { "total": 1,
-                                                             "valid": 1 } },
-                            "F4_post": { "alt-ergo": { "total": 1,
-                                                       "valid": 1,
-                                                       "rank": 16 },
-                                         "wp:main": { "total": 1, "valid": 1,
-                                                      "rank": 16 } },
+                    "F4": { "F4_loop_invariant_NEVER": { "alt-ergo": 
+                                                           { "total": 2,
+                                                             "valid": 2,
+                                                             "rank": 7 },
+                                                         "wp:main": { "total": 2,
+                                                                    "valid": 2,
+                                                                    "rank": 7 } },
+                            "F4_loop_invariant_RANGE": { "alt-ergo": 
+                                                           { "total": 2,
+                                                             "valid": 2,
+                                                             "rank": 3 },
+                                                         "wp:main": { "total": 2,
+                                                                    "valid": 2,
+                                                                    "rank": 3 } },
+                            "F4_loop_assigns": { "qed": { "total": 1,
+                                                          "valid": 1 },
+                                                 "wp:main": { "total": 1,
+                                                              "valid": 1 } },
+                            "F4_ensures": { "alt-ergo": { "total": 1,
+                                                          "valid": 1,
+                                                          "rank": 16 },
+                                            "wp:main": { "total": 1,
+                                                         "valid": 1,
+                                                         "rank": 16 } },
                             "wp:section": { "alt-ergo": { "total": 5,
                                                           "valid": 5,
                                                           "rank": 16 },
diff --git a/src/plugins/wp/tests/wp_typed/user_string.i.0.report.json b/src/plugins/wp/tests/wp_typed/user_string.i.0.report.json
index 23485a321193b5feab617a65ff48bfa7fae5470a..03b9b859c363714d26ec33bd353dbec9dc169ee3 100644
--- a/src/plugins/wp/tests/wp_typed/user_string.i.0.report.json
+++ b/src/plugins/wp/tests/wp_typed/user_string.i.0.report.json
@@ -7,49 +7,52 @@
                                                        "wp:main": { "total": 1,
                                                                     "valid": 1,
                                                                     "rank": 19 } },
-                                "strlen_loop_inv_ZERO": { "alt-ergo": 
-                                                            { "total": 1,
-                                                              "valid": 1,
-                                                              "rank": 10 },
-                                                          "qed": { "total": 1,
-                                                                   "valid": 1 },
-                                                          "wp:main": 
-                                                            { "total": 2,
-                                                              "valid": 2,
-                                                              "rank": 10 } },
-                                "strlen_loop_inv_RANGE": { "alt-ergo": 
-                                                             { "total": 2,
-                                                               "valid": 2,
-                                                               "rank": 33 },
-                                                           "wp:main": 
-                                                             { "total": 2,
-                                                               "valid": 2,
-                                                               "rank": 33 } },
-                                "strlen_loop_inv_BASE": { "qed": { "total": 2,
-                                                                   "valid": 2 },
-                                                          "wp:main": 
-                                                            { "total": 2,
-                                                              "valid": 2 } },
-                                "strlen_loop_term": { "alt-ergo": { "total": 1,
+                                "strlen_loop_invariant_ZERO": { "alt-ergo": 
+                                                                  { "total": 1,
                                                                     "valid": 1,
-                                                                    "rank": 13 },
-                                                      "qed": { "total": 1,
-                                                               "valid": 1 },
-                                                      "wp:main": { "total": 2,
-                                                                   "valid": 2,
-                                                                   "rank": 13 } },
-                                "strlen_assign": { "qed": { "total": 2,
-                                                            "valid": 2 },
-                                                   "wp:main": { "total": 2,
-                                                                "valid": 2 } },
-                                "strlen_loop_assign": { "qed": { "total": 1,
-                                                                 "valid": 1 },
-                                                        "wp:main": { "total": 1,
+                                                                    "rank": 11 },
+                                                                "qed": 
+                                                                  { "total": 1,
+                                                                    "valid": 1 },
+                                                                "wp:main": 
+                                                                  { "total": 2,
+                                                                    "valid": 2,
+                                                                    "rank": 11 } },
+                                "strlen_loop_invariant_RANGE": { "alt-ergo": 
+                                                                   { "total": 2,
+                                                                    "valid": 2,
+                                                                    "rank": 34 },
+                                                                 "wp:main": 
+                                                                   { "total": 2,
+                                                                    "valid": 2,
+                                                                    "rank": 34 } },
+                                "strlen_loop_invariant_BASE": { "qed": 
+                                                                  { "total": 2,
+                                                                    "valid": 2 },
+                                                                "wp:main": 
+                                                                  { "total": 2,
+                                                                    "valid": 2 } },
+                                "strlen_loop_variant": { "alt-ergo": 
+                                                           { "total": 1,
+                                                             "valid": 1,
+                                                             "rank": 14 },
+                                                         "qed": { "total": 1,
+                                                                  "valid": 1 },
+                                                         "wp:main": { "total": 2,
+                                                                    "valid": 2,
+                                                                    "rank": 14 } },
+                                "strlen_assigns": { "qed": { "total": 2,
+                                                             "valid": 2 },
+                                                    "wp:main": { "total": 2,
+                                                                 "valid": 2 } },
+                                "strlen_loop_assigns": { "qed": { "total": 1,
+                                                                  "valid": 1 },
+                                                         "wp:main": { "total": 1,
                                                                     "valid": 1 } },
-                                "strlen_post": { "qed": { "total": 1,
-                                                          "valid": 1 },
-                                                 "wp:main": { "total": 1,
-                                                              "valid": 1 } },
+                                "strlen_ensures": { "qed": { "total": 1,
+                                                             "valid": 1 },
+                                                    "wp:main": { "total": 1,
+                                                                 "valid": 1 } },
                                 "wp:section": { "alt-ergo": { "total": 5,
                                                               "valid": 5,
                                                               "rank": 33 },
diff --git a/src/plugins/wp/tests/wp_typed/user_swap.i.0.report.json b/src/plugins/wp/tests/wp_typed/user_swap.i.0.report.json
index bbcfce18995cc28aba5560cb7b66216501699aa4..23293874328be7845bbddcd7c8b4f29958b7df54 100644
--- a/src/plugins/wp/tests/wp_typed/user_swap.i.0.report.json
+++ b/src/plugins/wp/tests/wp_typed/user_swap.i.0.report.json
@@ -1,34 +1,36 @@
-{ "wp:global": { "alt-ergo": { "total": 1, "valid": 1, "rank": 4 },
+{ "wp:global": { "alt-ergo": { "total": 1, "valid": 1, "rank": 5 },
                  "qed": { "total": 6, "valid": 6 },
-                 "wp:main": { "total": 7, "valid": 7, "rank": 4 } },
-  "wp:functions": { "swap": { "swap_assign": { "qed": { "total": 2,
-                                                        "valid": 2 },
-                                               "wp:main": { "total": 2,
-                                                            "valid": 2 } },
-                              "swap_post_B": { "qed": { "total": 1,
-                                                        "valid": 1 },
-                                               "wp:main": { "total": 1,
-                                                            "valid": 1 } },
-                              "swap_post_A": { "alt-ergo": { "total": 1,
-                                                             "valid": 1,
-                                                             "rank": 4 },
-                                               "wp:main": { "total": 1,
-                                                            "valid": 1,
-                                                            "rank": 4 } },
+                 "wp:main": { "total": 7, "valid": 7, "rank": 5 } },
+  "wp:functions": { "swap": { "swap_assigns": { "qed": { "total": 2,
+                                                         "valid": 2 },
+                                                "wp:main": { "total": 2,
+                                                             "valid": 2 } },
+                              "swap_ensures_B": { "qed": { "total": 1,
+                                                           "valid": 1 },
+                                                  "wp:main": { "total": 1,
+                                                               "valid": 1 } },
+                              "swap_ensures_A": { "alt-ergo": { "total": 1,
+                                                                "valid": 1,
+                                                                "rank": 5 },
+                                                  "wp:main": { "total": 1,
+                                                               "valid": 1,
+                                                               "rank": 5 } },
                               "wp:section": { "alt-ergo": { "total": 1,
                                                             "valid": 1,
-                                                            "rank": 4 },
+                                                            "rank": 5 },
                                               "qed": { "total": 3,
                                                        "valid": 3 },
                                               "wp:main": { "total": 4,
                                                            "valid": 4,
-                                                           "rank": 4 } } },
-                    "main": { "specialization_swap_pre_at_main_stmt_8_2": 
-                                { "qed": { "total": 1, "valid": 1 },
-                                  "wp:main": { "total": 1, "valid": 1 } },
-                              "specialization_swap_pre_at_main_stmt_8": 
-                                { "qed": { "total": 1, "valid": 1 },
-                                  "wp:main": { "total": 1, "valid": 1 } },
+                                                           "rank": 5 } } },
+                    "main": { "swap_requires_2": { "qed": { "total": 1,
+                                                            "valid": 1 },
+                                                   "wp:main": { "total": 1,
+                                                                "valid": 1 } },
+                              "swap_requires": { "qed": { "total": 1,
+                                                          "valid": 1 },
+                                                 "wp:main": { "total": 1,
+                                                              "valid": 1 } },
                               "main_assert": { "qed": { "total": 1,
                                                         "valid": 1 },
                                                "wp:main": { "total": 1,
diff --git a/src/plugins/wp/tests/wp_typed/user_swap.i.1.report.json b/src/plugins/wp/tests/wp_typed/user_swap.i.1.report.json
index 2456de029198634d215e4bda90a02994594031d4..12e82ab9342fba0cc7abe963eaf047ee6db62b43 100644
--- a/src/plugins/wp/tests/wp_typed/user_swap.i.1.report.json
+++ b/src/plugins/wp/tests/wp_typed/user_swap.i.1.report.json
@@ -1,27 +1,29 @@
 { "wp:global": { "qed": { "total": 6, "valid": 6 },
                  "wp:main": { "total": 6, "valid": 6 } },
-  "wp:functions": { "swap": { "swap_assign": { "qed": { "total": 1,
-                                                        "valid": 1 },
-                                               "wp:main": { "total": 1,
-                                                            "valid": 1 } },
-                              "swap_post_B": { "qed": { "total": 1,
-                                                        "valid": 1 },
-                                               "wp:main": { "total": 1,
-                                                            "valid": 1 } },
-                              "swap_post_A": { "qed": { "total": 1,
-                                                        "valid": 1 },
-                                               "wp:main": { "total": 1,
-                                                            "valid": 1 } },
+  "wp:functions": { "swap": { "swap_assigns": { "qed": { "total": 1,
+                                                         "valid": 1 },
+                                                "wp:main": { "total": 1,
+                                                             "valid": 1 } },
+                              "swap_ensures_B": { "qed": { "total": 1,
+                                                           "valid": 1 },
+                                                  "wp:main": { "total": 1,
+                                                               "valid": 1 } },
+                              "swap_ensures_A": { "qed": { "total": 1,
+                                                           "valid": 1 },
+                                                  "wp:main": { "total": 1,
+                                                               "valid": 1 } },
                               "wp:section": { "qed": { "total": 3,
                                                        "valid": 3 },
                                               "wp:main": { "total": 3,
                                                            "valid": 3 } } },
-                    "main": { "specialization_swap_pre_at_main_stmt_8_2": 
-                                { "qed": { "total": 1, "valid": 1 },
-                                  "wp:main": { "total": 1, "valid": 1 } },
-                              "specialization_swap_pre_at_main_stmt_8": 
-                                { "qed": { "total": 1, "valid": 1 },
-                                  "wp:main": { "total": 1, "valid": 1 } },
+                    "main": { "swap_requires_2": { "qed": { "total": 1,
+                                                            "valid": 1 },
+                                                   "wp:main": { "total": 1,
+                                                                "valid": 1 } },
+                              "swap_requires": { "qed": { "total": 1,
+                                                          "valid": 1 },
+                                                 "wp:main": { "total": 1,
+                                                              "valid": 1 } },
                               "main_assert": { "qed": { "total": 1,
                                                         "valid": 1 },
                                                "wp:main": { "total": 1,
diff --git a/src/plugins/wp/tests/wp_usage/caveat2.i.0.report.json b/src/plugins/wp/tests/wp_usage/caveat2.i.0.report.json
index 6a36efb5d4ce000204ce3e992fe7c90fc3511c9b..a3e18b8a1f10b2629a4c2dcfc0d7d34e0c338e01 100644
--- a/src/plugins/wp/tests/wp_usage/caveat2.i.0.report.json
+++ b/src/plugins/wp/tests/wp_usage/caveat2.i.0.report.json
@@ -1,45 +1,45 @@
-{ "wp:global": { "alt-ergo": { "total": 3, "valid": 3, "rank": 5 },
+{ "wp:global": { "alt-ergo": { "total": 3, "valid": 3, "rank": 6 },
                  "qed": { "total": 6, "valid": 6 },
-                 "wp:main": { "total": 9, "valid": 9, "rank": 5 } },
-  "wp:functions": { "job": { "job_loop_inv_2": { "alt-ergo": { "total": 1,
-                                                               "valid": 1,
-                                                               "rank": 5 },
-                                                 "qed": { "total": 1,
-                                                          "valid": 1 },
-                                                 "wp:main": { "total": 2,
-                                                              "valid": 2,
-                                                              "rank": 5 } },
-                             "job_loop_inv": { "alt-ergo": { "total": 1,
+                 "wp:main": { "total": 9, "valid": 9, "rank": 6 } },
+  "wp:functions": { "job": { "job_loop_invariant_2": { "alt-ergo": { "total": 1,
+                                                                    "valid": 1,
+                                                                    "rank": 6 },
+                                                       "qed": { "total": 1,
+                                                                "valid": 1 },
+                                                       "wp:main": { "total": 2,
+                                                                    "valid": 2,
+                                                                    "rank": 6 } },
+                             "job_loop_invariant": { "alt-ergo": { "total": 1,
+                                                                   "valid": 1,
+                                                                   "rank": 4 },
+                                                     "qed": { "total": 1,
+                                                              "valid": 1 },
+                                                     "wp:main": { "total": 2,
+                                                                  "valid": 2,
+                                                                  "rank": 4 } },
+                             "job_assigns": { "qed": { "total": 2,
+                                                       "valid": 2 },
+                                              "wp:main": { "total": 2,
+                                                           "valid": 2 } },
+                             "job_loop_assigns": { "qed": { "total": 1,
+                                                            "valid": 1 },
+                                                   "wp:main": { "total": 1,
+                                                                "valid": 1 } },
+                             "job_ensures_A": { "alt-ergo": { "total": 1,
+                                                              "valid": 1,
+                                                              "rank": 5 },
+                                                "wp:main": { "total": 1,
                                                              "valid": 1,
-                                                             "rank": 4 },
-                                               "qed": { "total": 1,
-                                                        "valid": 1 },
-                                               "wp:main": { "total": 2,
-                                                            "valid": 2,
-                                                            "rank": 4 } },
-                             "job_assign": { "qed": { "total": 2,
-                                                      "valid": 2 },
-                                             "wp:main": { "total": 2,
-                                                          "valid": 2 } },
-                             "job_loop_assign": { "qed": { "total": 1,
-                                                           "valid": 1 },
-                                                  "wp:main": { "total": 1,
-                                                               "valid": 1 } },
-                             "job_post_A": { "alt-ergo": { "total": 1,
-                                                           "valid": 1,
-                                                           "rank": 5 },
-                                             "wp:main": { "total": 1,
-                                                          "valid": 1,
-                                                          "rank": 5 } },
-                             "job_post_N": { "qed": { "total": 1,
-                                                      "valid": 1 },
-                                             "wp:main": { "total": 1,
-                                                          "valid": 1 } },
+                                                             "rank": 5 } },
+                             "job_ensures_N": { "qed": { "total": 1,
+                                                         "valid": 1 },
+                                                "wp:main": { "total": 1,
+                                                             "valid": 1 } },
                              "wp:section": { "alt-ergo": { "total": 3,
                                                            "valid": 3,
-                                                           "rank": 5 },
+                                                           "rank": 6 },
                                              "qed": { "total": 6,
                                                       "valid": 6 },
                                              "wp:main": { "total": 9,
                                                           "valid": 9,
-                                                          "rank": 5 } } } } }
+                                                          "rank": 6 } } } } }
diff --git a/src/plugins/wp/tests/wp_usage/caveat_range.i.0.report.json b/src/plugins/wp/tests/wp_usage/caveat_range.i.0.report.json
index 81d81829d0c88dfdc99ca1f1ac0fb26bed53afef..e18c5908331be672c0d67f70b5d8edcec7ff1d1d 100644
--- a/src/plugins/wp/tests/wp_usage/caveat_range.i.0.report.json
+++ b/src/plugins/wp/tests/wp_usage/caveat_range.i.0.report.json
@@ -1,55 +1,60 @@
-{ "wp:global": { "alt-ergo": { "total": 5, "valid": 5, "rank": 11 },
+{ "wp:global": { "alt-ergo": { "total": 5, "valid": 5, "rank": 13 },
                  "qed": { "total": 7, "valid": 7 },
-                 "wp:main": { "total": 12, "valid": 12, "rank": 11 } },
-  "wp:functions": { "reset": { "reset_loop_inv_3": { "alt-ergo": { "total": 1,
-                                                                   "valid": 1,
-                                                                   "rank": 11 },
-                                                     "qed": { "total": 1,
-                                                              "valid": 1 },
-                                                     "wp:main": { "total": 2,
-                                                                  "valid": 2,
-                                                                  "rank": 11 } },
-                               "reset_loop_inv_2": { "alt-ergo": { "total": 1,
-                                                                   "valid": 1,
-                                                                   "rank": 6 },
-                                                     "qed": { "total": 1,
-                                                              "valid": 1 },
-                                                     "wp:main": { "total": 2,
-                                                                  "valid": 2,
-                                                                  "rank": 6 } },
-                               "reset_loop_inv": { "alt-ergo": { "total": 1,
-                                                                 "valid": 1,
-                                                                 "rank": 3 },
-                                                   "qed": { "total": 1,
-                                                            "valid": 1 },
-                                                   "wp:main": { "total": 2,
-                                                                "valid": 2,
-                                                                "rank": 3 } },
-                               "reset_assign": { "qed": { "total": 1,
-                                                          "valid": 1 },
-                                                 "wp:main": { "total": 1,
-                                                              "valid": 1 } },
-                               "reset_loop_assign": { "qed": { "total": 3,
-                                                               "valid": 3 },
-                                                      "wp:main": { "total": 3,
-                                                                   "valid": 3 } },
-                               "reset_post_2": { "alt-ergo": { "total": 1,
+                 "wp:main": { "total": 12, "valid": 12, "rank": 13 } },
+  "wp:functions": { "reset": { "reset_loop_invariant_3": { "alt-ergo": 
+                                                             { "total": 1,
+                                                               "valid": 1,
+                                                               "rank": 13 },
+                                                           "qed": { "total": 1,
+                                                                    "valid": 1 },
+                                                           "wp:main": 
+                                                             { "total": 2,
+                                                               "valid": 2,
+                                                               "rank": 13 } },
+                               "reset_loop_invariant_2": { "alt-ergo": 
+                                                             { "total": 1,
                                                                "valid": 1,
-                                                               "rank": 4 },
-                                                 "wp:main": { "total": 1,
-                                                              "valid": 1,
-                                                              "rank": 4 } },
-                               "reset_post": { "alt-ergo": { "total": 1,
+                                                               "rank": 7 },
+                                                           "qed": { "total": 1,
+                                                                    "valid": 1 },
+                                                           "wp:main": 
+                                                             { "total": 2,
+                                                               "valid": 2,
+                                                               "rank": 7 } },
+                               "reset_loop_invariant": { "alt-ergo": 
+                                                           { "total": 1,
                                                              "valid": 1,
-                                                             "rank": 4 },
-                                               "wp:main": { "total": 1,
-                                                            "valid": 1,
-                                                            "rank": 4 } },
+                                                             "rank": 5 },
+                                                         "qed": { "total": 1,
+                                                                  "valid": 1 },
+                                                         "wp:main": { "total": 2,
+                                                                    "valid": 2,
+                                                                    "rank": 5 } },
+                               "reset_assigns": { "qed": { "total": 1,
+                                                           "valid": 1 },
+                                                  "wp:main": { "total": 1,
+                                                               "valid": 1 } },
+                               "reset_loop_assigns": { "qed": { "total": 3,
+                                                                "valid": 3 },
+                                                       "wp:main": { "total": 3,
+                                                                    "valid": 3 } },
+                               "reset_ensures_2": { "alt-ergo": { "total": 1,
+                                                                  "valid": 1,
+                                                                  "rank": 5 },
+                                                    "wp:main": { "total": 1,
+                                                                 "valid": 1,
+                                                                 "rank": 5 } },
+                               "reset_ensures": { "alt-ergo": { "total": 1,
+                                                                "valid": 1,
+                                                                "rank": 5 },
+                                                  "wp:main": { "total": 1,
+                                                               "valid": 1,
+                                                               "rank": 5 } },
                                "wp:section": { "alt-ergo": { "total": 5,
                                                              "valid": 5,
-                                                             "rank": 11 },
+                                                             "rank": 13 },
                                                "qed": { "total": 7,
                                                         "valid": 7 },
                                                "wp:main": { "total": 12,
                                                             "valid": 12,
-                                                            "rank": 11 } } } } }
+                                                            "rank": 13 } } } } }
diff --git a/src/plugins/wp/tests/wp_usage/issue-189-bis.i.0.report.json b/src/plugins/wp/tests/wp_usage/issue-189-bis.i.0.report.json
index d3ab34173fd8fec9791fd66f74a4f67a60876404..7e80c837977f33b894882a0482c547eb0d007860 100644
--- a/src/plugins/wp/tests/wp_usage/issue-189-bis.i.0.report.json
+++ b/src/plugins/wp/tests/wp_usage/issue-189-bis.i.0.report.json
@@ -1,7 +1,7 @@
 { "wp:global": { "alt-ergo": { "total": 10, "valid": 10, "rank": 52 },
                  "qed": { "total": 20, "valid": 20 },
                  "wp:main": { "total": 30, "valid": 30, "rank": 52 } },
-  "wp:functions": { "memcpy_alias_vars": { "memcpy_alias_vars_loop_inv_cpy": 
+  "wp:functions": { "memcpy_alias_vars": { "memcpy_alias_vars_loop_invariant_cpy": 
                                              { "alt-ergo": { "total": 1,
                                                              "valid": 1,
                                                              "rank": 52 },
@@ -10,17 +10,17 @@
                                                "wp:main": { "total": 2,
                                                             "valid": 2,
                                                             "rank": 52 } },
-                                           "memcpy_alias_vars_loop_inv_dst": 
+                                           "memcpy_alias_vars_loop_invariant_dst": 
                                              { "qed": { "total": 2,
                                                         "valid": 2 },
                                                "wp:main": { "total": 2,
                                                             "valid": 2 } },
-                                           "memcpy_alias_vars_loop_inv_src": 
+                                           "memcpy_alias_vars_loop_invariant_src": 
                                              { "qed": { "total": 2,
                                                         "valid": 2 },
                                                "wp:main": { "total": 2,
                                                             "valid": 2 } },
-                                           "memcpy_alias_vars_loop_inv_len": 
+                                           "memcpy_alias_vars_loop_invariant_len": 
                                              { "alt-ergo": { "total": 1,
                                                              "valid": 1,
                                                              "rank": 8 },
@@ -29,12 +29,12 @@
                                                "wp:main": { "total": 2,
                                                             "valid": 2,
                                                             "rank": 8 } },
-                                           "memcpy_alias_vars_assign": 
+                                           "memcpy_alias_vars_assigns": 
                                              { "qed": { "total": 1,
                                                         "valid": 1 },
                                                "wp:main": { "total": 1,
                                                             "valid": 1 } },
-                                           "memcpy_alias_vars_loop_assign": 
+                                           "memcpy_alias_vars_loop_assigns": 
                                              { "alt-ergo": { "total": 1,
                                                              "valid": 1,
                                                              "rank": 28 },
@@ -43,14 +43,14 @@
                                                "wp:main": { "total": 4,
                                                             "valid": 4,
                                                             "rank": 28 } },
-                                           "memcpy_alias_vars_post_unmodified": 
+                                           "memcpy_alias_vars_ensures_unmodified": 
                                              { "alt-ergo": { "total": 1,
                                                              "valid": 1,
-                                                             "rank": 31 },
+                                                             "rank": 29 },
                                                "wp:main": { "total": 1,
                                                             "valid": 1,
-                                                            "rank": 31 } },
-                                           "memcpy_alias_vars_post_memcpy": 
+                                                            "rank": 29 } },
+                                           "memcpy_alias_vars_ensures_memcpy": 
                                              { "alt-ergo": { "total": 1,
                                                              "valid": 1,
                                                              "rank": 39 },
@@ -67,7 +67,7 @@
                                                              { "total": 15,
                                                                "valid": 15,
                                                                "rank": 52 } } },
-                    "memcpy_context_vars": { "memcpy_context_vars_loop_inv_ok_cpy": 
+                    "memcpy_context_vars": { "memcpy_context_vars_loop_invariant_ok_cpy": 
                                                { "alt-ergo": { "total": 1,
                                                                "valid": 1,
                                                                "rank": 52 },
@@ -76,17 +76,17 @@
                                                  "wp:main": { "total": 2,
                                                               "valid": 2,
                                                               "rank": 52 } },
-                                             "memcpy_context_vars_loop_inv_ok_dst": 
+                                             "memcpy_context_vars_loop_invariant_ok_dst": 
                                                { "qed": { "total": 2,
                                                           "valid": 2 },
                                                  "wp:main": { "total": 2,
                                                               "valid": 2 } },
-                                             "memcpy_context_vars_loop_inv_ok_src": 
+                                             "memcpy_context_vars_loop_invariant_ok_src": 
                                                { "qed": { "total": 2,
                                                           "valid": 2 },
                                                  "wp:main": { "total": 2,
                                                               "valid": 2 } },
-                                             "memcpy_context_vars_loop_inv_ok_len": 
+                                             "memcpy_context_vars_loop_invariant_ok_len": 
                                                { "alt-ergo": { "total": 1,
                                                                "valid": 1,
                                                                "rank": 8 },
@@ -95,12 +95,12 @@
                                                  "wp:main": { "total": 2,
                                                               "valid": 2,
                                                               "rank": 8 } },
-                                             "memcpy_context_vars_assign": 
+                                             "memcpy_context_vars_assigns": 
                                                { "qed": { "total": 1,
                                                           "valid": 1 },
                                                  "wp:main": { "total": 1,
                                                               "valid": 1 } },
-                                             "memcpy_context_vars_loop_assign": 
+                                             "memcpy_context_vars_loop_assigns": 
                                                { "alt-ergo": { "total": 1,
                                                                "valid": 1,
                                                                "rank": 28 },
@@ -109,14 +109,14 @@
                                                  "wp:main": { "total": 4,
                                                               "valid": 4,
                                                               "rank": 28 } },
-                                             "memcpy_context_vars_post_unmodified_ok": 
+                                             "memcpy_context_vars_ensures_unmodified_ok": 
                                                { "alt-ergo": { "total": 1,
                                                                "valid": 1,
-                                                               "rank": 31 },
+                                                               "rank": 29 },
                                                  "wp:main": { "total": 1,
                                                               "valid": 1,
-                                                              "rank": 31 } },
-                                             "memcpy_context_vars_post_memcpy_ok": 
+                                                              "rank": 29 } },
+                                             "memcpy_context_vars_ensures_memcpy_ok": 
                                                { "alt-ergo": { "total": 1,
                                                                "valid": 1,
                                                                "rank": 39 },
diff --git a/src/plugins/wp/tests/wp_usage/issue-189-bis.i.1.report.json b/src/plugins/wp/tests/wp_usage/issue-189-bis.i.1.report.json
index 1a25c3207ac1d6d7d8910f4988a0e68eb5c9d749..07976c7b36c328ea72d1ff3d0e2d9da71711d2b9 100644
--- a/src/plugins/wp/tests/wp_usage/issue-189-bis.i.1.report.json
+++ b/src/plugins/wp/tests/wp_usage/issue-189-bis.i.1.report.json
@@ -1,26 +1,26 @@
-{ "wp:global": { "alt-ergo": { "total": 3, "valid": 3, "rank": 20 },
+{ "wp:global": { "alt-ergo": { "total": 3, "valid": 3, "rank": 21 },
                  "qed": { "total": 7, "valid": 7 },
-                 "wp:main": { "total": 10, "valid": 10, "rank": 20 } },
-  "wp:functions": { "memcpy_context_vars": { "memcpy_context_vars_loop_inv_ok_cpy": 
+                 "wp:main": { "total": 10, "valid": 10, "rank": 21 } },
+  "wp:functions": { "memcpy_context_vars": { "memcpy_context_vars_loop_invariant_ok_cpy": 
                                                { "alt-ergo": { "total": 1,
                                                                "valid": 1,
-                                                               "rank": 20 },
+                                                               "rank": 21 },
                                                  "qed": { "total": 1,
                                                           "valid": 1 },
                                                  "wp:main": { "total": 2,
                                                               "valid": 2,
-                                                              "rank": 20 } },
-                                             "memcpy_context_vars_loop_inv_ok_dst": 
+                                                              "rank": 21 } },
+                                             "memcpy_context_vars_loop_invariant_ok_dst": 
                                                { "qed": { "total": 2,
                                                           "valid": 2 },
                                                  "wp:main": { "total": 2,
                                                               "valid": 2 } },
-                                             "memcpy_context_vars_loop_inv_ok_src": 
+                                             "memcpy_context_vars_loop_invariant_ok_src": 
                                                { "qed": { "total": 2,
                                                           "valid": 2 },
                                                  "wp:main": { "total": 2,
                                                               "valid": 2 } },
-                                             "memcpy_context_vars_loop_inv_ok_len": 
+                                             "memcpy_context_vars_loop_invariant_ok_len": 
                                                { "alt-ergo": { "total": 1,
                                                                "valid": 1,
                                                                "rank": 5 },
@@ -29,25 +29,25 @@
                                                  "wp:main": { "total": 2,
                                                               "valid": 2,
                                                               "rank": 5 } },
-                                             "memcpy_context_vars_post_unmodified_ok": 
+                                             "memcpy_context_vars_ensures_unmodified_ok": 
                                                { "qed": { "total": 1,
                                                           "valid": 1 },
                                                  "wp:main": { "total": 1,
                                                               "valid": 1 } },
-                                             "memcpy_context_vars_post_memcpy_ok": 
+                                             "memcpy_context_vars_ensures_memcpy_ok": 
                                                { "alt-ergo": { "total": 1,
                                                                "valid": 1,
-                                                               "rank": 5 },
+                                                               "rank": 6 },
                                                  "wp:main": { "total": 1,
                                                               "valid": 1,
-                                                              "rank": 5 } },
+                                                              "rank": 6 } },
                                              "wp:section": { "alt-ergo": 
                                                                { "total": 3,
                                                                  "valid": 3,
-                                                                 "rank": 20 },
+                                                                 "rank": 21 },
                                                              "qed": { "total": 7,
                                                                     "valid": 7 },
                                                              "wp:main": 
                                                                { "total": 10,
                                                                  "valid": 10,
-                                                                 "rank": 20 } } } } }
+                                                                 "rank": 21 } } } } }
diff --git a/src/plugins/wp/tests/wp_usage/oracle/code_spec.res.oracle b/src/plugins/wp/tests/wp_usage/oracle/code_spec.res.oracle
index f37910af083ba1968571a0e00547c24378a7f084..e4ad3f5e78b698aeef68ea6f228af4669314c44f 100644
--- a/src/plugins/wp/tests/wp_usage/oracle/code_spec.res.oracle
+++ b/src/plugins/wp/tests/wp_usage/oracle/code_spec.res.oracle
@@ -40,7 +40,7 @@ Function cup:
 { val *ref &addr array[] &addr_value val_ref array_ref[] value_array[] }
 .................................................
 [wp] Loading driver 'share/wp.driver'
-[wp] [CFG] Goal by_addr_in_code_annotation_stmt_pre : Valid (Unreachable)
-[wp] [CFG] Goal by_reference_in_code_annotation_no_exit_exit : Valid (Unreachable)
+[wp] [CFG] Goal by_addr_in_code_annotation_requires : Valid (Unreachable)
+[wp] [CFG] Goal by_reference_in_code_annotation_no_exit_exits : Valid (Unreachable)
 [wp] Warning: Missing RTE guards
 [wp] No proof obligations
diff --git a/src/plugins/wp/tests/wp_usage/oracle_qualif/caveat2.res.oracle b/src/plugins/wp/tests/wp_usage/oracle_qualif/caveat2.res.oracle
index 83e2c39a2ce3c42e289cdb365ef1eac73275bd17..eb0898c7235b24479b7dcae99ec585a2bdaf16ef 100644
--- a/src/plugins/wp/tests/wp_usage/oracle_qualif/caveat2.res.oracle
+++ b/src/plugins/wp/tests/wp_usage/oracle_qualif/caveat2.res.oracle
@@ -5,22 +5,22 @@
 [wp] Warning: Missing RTE guards
 [wp] tests/wp_usage/caveat2.i:22: Warning: Undefined array-size (sint32[])
 [wp] 9 goals scheduled
-[wp] [Qed] Goal typed_caveat_job_post_N : Valid
-[wp] [Alt-Ergo] Goal typed_caveat_job_post_A : Valid
-[wp] [Alt-Ergo] Goal typed_caveat_job_loop_inv_preserved : Valid
-[wp] [Qed] Goal typed_caveat_job_loop_inv_established : Valid
-[wp] [Alt-Ergo] Goal typed_caveat_job_loop_inv_2_preserved : Valid
-[wp] [Qed] Goal typed_caveat_job_loop_inv_2_established : Valid
-[wp] [Qed] Goal typed_caveat_job_loop_assign : Valid
-[wp] [Qed] Goal typed_caveat_job_assign_part1 : Valid
-[wp] [Qed] Goal typed_caveat_job_assign_part2 : Valid
+[wp] [Qed] Goal typed_caveat_job_ensures_N : Valid
+[wp] [Alt-Ergo] Goal typed_caveat_job_ensures_A : Valid
+[wp] [Alt-Ergo] Goal typed_caveat_job_loop_invariant_preserved : Valid
+[wp] [Qed] Goal typed_caveat_job_loop_invariant_established : Valid
+[wp] [Alt-Ergo] Goal typed_caveat_job_loop_invariant_2_preserved : Valid
+[wp] [Qed] Goal typed_caveat_job_loop_invariant_2_established : Valid
+[wp] [Qed] Goal typed_caveat_job_loop_assigns : Valid
+[wp] [Qed] Goal typed_caveat_job_assigns_part1 : Valid
+[wp] [Qed] Goal typed_caveat_job_assigns_part2 : Valid
 [wp] Proved goals:    9 / 9
   Qed:             6 
   Alt-Ergo:        3
 [wp] Report 'tests/wp_usage/caveat2.i.0.report.json'
 -------------------------------------------------------------
 Functions           WP     Alt-Ergo        Total   Success
-job                  6      3 (16..28)       9       100%
+job                  6      3 (20..32)       9       100%
 -------------------------------------------------------------
 [wp] Warning: Memory model hypotheses for function 'job':
   /*@
diff --git a/src/plugins/wp/tests/wp_usage/oracle_qualif/caveat_range.res.oracle b/src/plugins/wp/tests/wp_usage/oracle_qualif/caveat_range.res.oracle
index a28dae7f4155561b6560d6e6e20ee50807857ab0..fbb344e827fa5dfd38b923032eb6904c1d32a5e4 100644
--- a/src/plugins/wp/tests/wp_usage/oracle_qualif/caveat_range.res.oracle
+++ b/src/plugins/wp/tests/wp_usage/oracle_qualif/caveat_range.res.oracle
@@ -4,25 +4,25 @@
 [wp] Loading driver 'share/wp.driver'
 [wp] Warning: Missing RTE guards
 [wp] 12 goals scheduled
-[wp] [Alt-Ergo] Goal typed_caveat_reset_post : Valid
-[wp] [Alt-Ergo] Goal typed_caveat_reset_post_2 : Valid
-[wp] [Alt-Ergo] Goal typed_caveat_reset_loop_inv_preserved : Valid
-[wp] [Qed] Goal typed_caveat_reset_loop_inv_established : Valid
-[wp] [Alt-Ergo] Goal typed_caveat_reset_loop_inv_2_preserved : Valid
-[wp] [Qed] Goal typed_caveat_reset_loop_inv_2_established : Valid
-[wp] [Alt-Ergo] Goal typed_caveat_reset_loop_inv_3_preserved : Valid
-[wp] [Qed] Goal typed_caveat_reset_loop_inv_3_established : Valid
-[wp] [Qed] Goal typed_caveat_reset_loop_assign_part1 : Valid
-[wp] [Qed] Goal typed_caveat_reset_loop_assign_part2 : Valid
-[wp] [Qed] Goal typed_caveat_reset_loop_assign_part3 : Valid
-[wp] [Qed] Goal typed_caveat_reset_assign : Valid
+[wp] [Alt-Ergo] Goal typed_caveat_reset_ensures : Valid
+[wp] [Alt-Ergo] Goal typed_caveat_reset_ensures_2 : Valid
+[wp] [Alt-Ergo] Goal typed_caveat_reset_loop_invariant_preserved : Valid
+[wp] [Qed] Goal typed_caveat_reset_loop_invariant_established : Valid
+[wp] [Alt-Ergo] Goal typed_caveat_reset_loop_invariant_2_preserved : Valid
+[wp] [Qed] Goal typed_caveat_reset_loop_invariant_2_established : Valid
+[wp] [Alt-Ergo] Goal typed_caveat_reset_loop_invariant_3_preserved : Valid
+[wp] [Qed] Goal typed_caveat_reset_loop_invariant_3_established : Valid
+[wp] [Qed] Goal typed_caveat_reset_loop_assigns_part1 : Valid
+[wp] [Qed] Goal typed_caveat_reset_loop_assigns_part2 : Valid
+[wp] [Qed] Goal typed_caveat_reset_loop_assigns_part3 : Valid
+[wp] [Qed] Goal typed_caveat_reset_assigns : Valid
 [wp] Proved goals:   12 / 12
   Qed:             7 
   Alt-Ergo:        5
 [wp] Report 'tests/wp_usage/caveat_range.i.0.report.json'
 -------------------------------------------------------------
 Functions           WP     Alt-Ergo        Total   Success
-reset                7      5 (40..52)      12       100%
+reset                7      5 (48..60)      12       100%
 -------------------------------------------------------------
 [wp] Warning: Memory model hypotheses for function 'reset':
   /*@ behavior typed_caveat: requires \valid(p+(..)); */
diff --git a/src/plugins/wp/tests/wp_usage/oracle_qualif/issue-189-bis.0.res.oracle b/src/plugins/wp/tests/wp_usage/oracle_qualif/issue-189-bis.0.res.oracle
index a2a33c2ab85afe989472d7a1e9e626d19ab39667..9e0dd0e1713a5e0b06fd9241ffe1ddbc67d80c72 100644
--- a/src/plugins/wp/tests/wp_usage/oracle_qualif/issue-189-bis.0.res.oracle
+++ b/src/plugins/wp/tests/wp_usage/oracle_qualif/issue-189-bis.0.res.oracle
@@ -4,36 +4,36 @@
 [wp] Loading driver 'share/wp.driver'
 [wp] Warning: Missing RTE guards
 [wp] 30 goals scheduled
-[wp] [Alt-Ergo] Goal typed_memcpy_alias_vars_post_memcpy : Valid
-[wp] [Alt-Ergo] Goal typed_memcpy_alias_vars_post_unmodified : Valid
-[wp] [Alt-Ergo] Goal typed_memcpy_alias_vars_loop_inv_cpy_preserved : Valid
-[wp] [Qed] Goal typed_memcpy_alias_vars_loop_inv_cpy_established : Valid
-[wp] [Qed] Goal typed_memcpy_alias_vars_loop_inv_dst_preserved : Valid
-[wp] [Qed] Goal typed_memcpy_alias_vars_loop_inv_dst_established : Valid
-[wp] [Alt-Ergo] Goal typed_memcpy_alias_vars_loop_inv_len_preserved : Valid
-[wp] [Qed] Goal typed_memcpy_alias_vars_loop_inv_len_established : Valid
-[wp] [Qed] Goal typed_memcpy_alias_vars_loop_inv_src_preserved : Valid
-[wp] [Qed] Goal typed_memcpy_alias_vars_loop_inv_src_established : Valid
-[wp] [Qed] Goal typed_memcpy_alias_vars_loop_assign_part1 : Valid
-[wp] [Qed] Goal typed_memcpy_alias_vars_loop_assign_part2 : Valid
-[wp] [Qed] Goal typed_memcpy_alias_vars_loop_assign_part3 : Valid
-[wp] [Alt-Ergo] Goal typed_memcpy_alias_vars_loop_assign_part4 : Valid
-[wp] [Qed] Goal typed_memcpy_alias_vars_assign : Valid
-[wp] [Alt-Ergo] Goal typed_memcpy_context_vars_post_memcpy_ok : Valid
-[wp] [Alt-Ergo] Goal typed_memcpy_context_vars_post_unmodified_ok : Valid
-[wp] [Alt-Ergo] Goal typed_memcpy_context_vars_loop_inv_ok_cpy_preserved : Valid
-[wp] [Qed] Goal typed_memcpy_context_vars_loop_inv_ok_cpy_established : Valid
-[wp] [Qed] Goal typed_memcpy_context_vars_loop_inv_ok_dst_preserved : Valid
-[wp] [Qed] Goal typed_memcpy_context_vars_loop_inv_ok_dst_established : Valid
-[wp] [Alt-Ergo] Goal typed_memcpy_context_vars_loop_inv_ok_len_preserved : Valid
-[wp] [Qed] Goal typed_memcpy_context_vars_loop_inv_ok_len_established : Valid
-[wp] [Qed] Goal typed_memcpy_context_vars_loop_inv_ok_src_preserved : Valid
-[wp] [Qed] Goal typed_memcpy_context_vars_loop_inv_ok_src_established : Valid
-[wp] [Qed] Goal typed_memcpy_context_vars_loop_assign_part1 : Valid
-[wp] [Qed] Goal typed_memcpy_context_vars_loop_assign_part2 : Valid
-[wp] [Qed] Goal typed_memcpy_context_vars_loop_assign_part3 : Valid
-[wp] [Alt-Ergo] Goal typed_memcpy_context_vars_loop_assign_part4 : Valid
-[wp] [Qed] Goal typed_memcpy_context_vars_assign : Valid
+[wp] [Alt-Ergo] Goal typed_memcpy_alias_vars_ensures_memcpy : Valid
+[wp] [Alt-Ergo] Goal typed_memcpy_alias_vars_ensures_unmodified : Valid
+[wp] [Alt-Ergo] Goal typed_memcpy_alias_vars_loop_invariant_cpy_preserved : Valid
+[wp] [Qed] Goal typed_memcpy_alias_vars_loop_invariant_cpy_established : Valid
+[wp] [Qed] Goal typed_memcpy_alias_vars_loop_invariant_dst_preserved : Valid
+[wp] [Qed] Goal typed_memcpy_alias_vars_loop_invariant_dst_established : Valid
+[wp] [Alt-Ergo] Goal typed_memcpy_alias_vars_loop_invariant_len_preserved : Valid
+[wp] [Qed] Goal typed_memcpy_alias_vars_loop_invariant_len_established : Valid
+[wp] [Qed] Goal typed_memcpy_alias_vars_loop_invariant_src_preserved : Valid
+[wp] [Qed] Goal typed_memcpy_alias_vars_loop_invariant_src_established : Valid
+[wp] [Qed] Goal typed_memcpy_alias_vars_loop_assigns_part1 : Valid
+[wp] [Qed] Goal typed_memcpy_alias_vars_loop_assigns_part2 : Valid
+[wp] [Qed] Goal typed_memcpy_alias_vars_loop_assigns_part3 : Valid
+[wp] [Alt-Ergo] Goal typed_memcpy_alias_vars_loop_assigns_part4 : Valid
+[wp] [Qed] Goal typed_memcpy_alias_vars_assigns : Valid
+[wp] [Alt-Ergo] Goal typed_memcpy_context_vars_ensures_memcpy_ok : Valid
+[wp] [Alt-Ergo] Goal typed_memcpy_context_vars_ensures_unmodified_ok : Valid
+[wp] [Alt-Ergo] Goal typed_memcpy_context_vars_loop_invariant_ok_cpy_preserved : Valid
+[wp] [Qed] Goal typed_memcpy_context_vars_loop_invariant_ok_cpy_established : Valid
+[wp] [Qed] Goal typed_memcpy_context_vars_loop_invariant_ok_dst_preserved : Valid
+[wp] [Qed] Goal typed_memcpy_context_vars_loop_invariant_ok_dst_established : Valid
+[wp] [Alt-Ergo] Goal typed_memcpy_context_vars_loop_invariant_ok_len_preserved : Valid
+[wp] [Qed] Goal typed_memcpy_context_vars_loop_invariant_ok_len_established : Valid
+[wp] [Qed] Goal typed_memcpy_context_vars_loop_invariant_ok_src_preserved : Valid
+[wp] [Qed] Goal typed_memcpy_context_vars_loop_invariant_ok_src_established : Valid
+[wp] [Qed] Goal typed_memcpy_context_vars_loop_assigns_part1 : Valid
+[wp] [Qed] Goal typed_memcpy_context_vars_loop_assigns_part2 : Valid
+[wp] [Qed] Goal typed_memcpy_context_vars_loop_assigns_part3 : Valid
+[wp] [Alt-Ergo] Goal typed_memcpy_context_vars_loop_assigns_part4 : Valid
+[wp] [Qed] Goal typed_memcpy_context_vars_assigns : Valid
 [wp] Proved goals:   30 / 30
   Qed:            20 
   Alt-Ergo:       10
diff --git a/src/plugins/wp/tests/wp_usage/oracle_qualif/issue-189-bis.1.res.oracle b/src/plugins/wp/tests/wp_usage/oracle_qualif/issue-189-bis.1.res.oracle
index 37d098c44c8daaf3e9e1ed3f779a8d2e32578831..94fca76c2fe618788f35b401717eb76847b78f12 100644
--- a/src/plugins/wp/tests/wp_usage/oracle_qualif/issue-189-bis.1.res.oracle
+++ b/src/plugins/wp/tests/wp_usage/oracle_qualif/issue-189-bis.1.res.oracle
@@ -4,23 +4,23 @@
 [wp] Loading driver 'share/wp.driver'
 [wp] Warning: Missing RTE guards
 [wp] 10 goals scheduled
-[wp] [Alt-Ergo] Goal typed_memcpy_context_vars_post_memcpy_ok : Valid
-[wp] [Qed] Goal typed_memcpy_context_vars_post_unmodified_ok : Valid
-[wp] [Alt-Ergo] Goal typed_memcpy_context_vars_loop_inv_ok_cpy_preserved : Valid
-[wp] [Qed] Goal typed_memcpy_context_vars_loop_inv_ok_cpy_established : Valid
-[wp] [Qed] Goal typed_memcpy_context_vars_loop_inv_ok_dst_preserved : Valid
-[wp] [Qed] Goal typed_memcpy_context_vars_loop_inv_ok_dst_established : Valid
-[wp] [Alt-Ergo] Goal typed_memcpy_context_vars_loop_inv_ok_len_preserved : Valid
-[wp] [Qed] Goal typed_memcpy_context_vars_loop_inv_ok_len_established : Valid
-[wp] [Qed] Goal typed_memcpy_context_vars_loop_inv_ok_src_preserved : Valid
-[wp] [Qed] Goal typed_memcpy_context_vars_loop_inv_ok_src_established : Valid
+[wp] [Alt-Ergo] Goal typed_memcpy_context_vars_ensures_memcpy_ok : Valid
+[wp] [Qed] Goal typed_memcpy_context_vars_ensures_unmodified_ok : Valid
+[wp] [Alt-Ergo] Goal typed_memcpy_context_vars_loop_invariant_ok_cpy_preserved : Valid
+[wp] [Qed] Goal typed_memcpy_context_vars_loop_invariant_ok_cpy_established : Valid
+[wp] [Qed] Goal typed_memcpy_context_vars_loop_invariant_ok_dst_preserved : Valid
+[wp] [Qed] Goal typed_memcpy_context_vars_loop_invariant_ok_dst_established : Valid
+[wp] [Alt-Ergo] Goal typed_memcpy_context_vars_loop_invariant_ok_len_preserved : Valid
+[wp] [Qed] Goal typed_memcpy_context_vars_loop_invariant_ok_len_established : Valid
+[wp] [Qed] Goal typed_memcpy_context_vars_loop_invariant_ok_src_preserved : Valid
+[wp] [Qed] Goal typed_memcpy_context_vars_loop_invariant_ok_src_established : Valid
 [wp] Proved goals:   10 / 10
   Qed:             7 
   Alt-Ergo:        3
 [wp] Report 'tests/wp_usage/issue-189-bis.i.1.report.json'
 -------------------------------------------------------------
 Functions           WP     Alt-Ergo        Total   Success
-memcpy_context_vars   7     3 (88..112)     10       100%
+memcpy_context_vars   7     3 (96..120)     10       100%
 -------------------------------------------------------------
 [wp] Warning: Memory model hypotheses for function 'memcpy_context_vars':
   /*@
diff --git a/src/plugins/wp/wpPropId.ml b/src/plugins/wp/wpPropId.ml
index f29dbe5e66748716ac4f5013351fc94a474273fd..7ee846ce041899d1ccc150f7655f6304006de089 100644
--- a/src/plugins/wp/wpPropId.ml
+++ b/src/plugins/wp/wpPropId.ml
@@ -228,10 +228,15 @@ module PropId =
     let varname = Datatype.undefined
   end)
 
-module Names:
+(* -------------------------------------------------------------------------- *)
+(* --- Lagacy Naming                                                      --- *)
+(* -------------------------------------------------------------------------- *)
+
+module LegacyNames :
 sig
   val get_prop_id_name: prop_id -> string
 end = struct
+
   module NamesTbl = State_builder.Hashtbl(Datatype.String.Hashtbl)(Datatype.Int)
       (struct
         let name = "WpPropertyNames"
@@ -253,7 +258,7 @@ end = struct
         let size = 97
       end)
 
-  let base_id_prop_txt = Property.Names.get_prop_name_id
+  let base_id_prop_txt = Property.LegacyNames.get_prop_name_id
 
   let basename_of_prop_id p =
     match p.p_kind , p.p_prop with
@@ -317,6 +322,90 @@ end = struct
 
 end
 
+(* -------------------------------------------------------------------------- *)
+(* --- Naming Properties                                                  --- *)
+(* -------------------------------------------------------------------------- *)
+
+module Names:
+sig
+  val get_prop_id_name: prop_id -> string
+end =
+struct
+
+  module NamesTbl = State_builder.Hashtbl(Datatype.String.Hashtbl)(Datatype.Int)
+      (struct
+        let name = "Wp.WpPropId.Names.NamesTbl"
+        let dependencies = [ ]
+        let size = 97
+      end)
+
+  module IndexTbl =
+    State_builder.Hashtbl(Property.Hashtbl)(Datatype.String)
+      (struct
+        let name = "Wp.WpPropId.Names.IndexTbl"
+        let dependencies =
+          [ Ast.self;
+            NamesTbl.self;
+            Globals.Functions.self;
+            Annotations.code_annot_state;
+            Annotations.funspec_state;
+            Annotations.global_state ]
+        let size = 97
+      end)
+
+  let compute_ip ip =
+    let truncate = max 20 (Wp_parameters.TruncPropIdFileName.get ()) in
+    let basename = Property.Names.get_prop_basename ~truncate ip in
+    try
+      let speed_up_start = NamesTbl.find basename in
+      let n,unique_name = Extlib.make_unique_name
+          NamesTbl.mem ~sep:"_" ~start:speed_up_start basename
+      in NamesTbl.replace basename (succ n) ;
+      unique_name
+    with Not_found -> (* first time that basename is reserved *)
+      NamesTbl.add basename 2 ; basename
+
+  let get_ip ip =
+    try IndexTbl.find ip
+    with Not_found -> (* first time we are asking for a name for that [ip] *)
+      let unique_name = compute_ip ip in
+      IndexTbl.add ip unique_name ;
+      unique_name
+
+  let get_prop_id_base p =
+    match p.p_kind , p.p_prop with
+    | (PKTactic | PKCheck | PKProp | PKPropLoop) , p -> get_ip p
+    | PKEstablished , p -> get_ip p ^ "_established"
+    | PKPreserved , p -> get_ip p ^ "_preserved"
+    | PKVarDecr , p -> get_ip p ^ "_decrease"
+    | PKVarPos , p -> get_ip p ^ "_positive"
+    | PKAFctOut , p -> get_ip p ^ "_normal"
+    | PKAFctExit , p -> get_ip p ^ "_exit"
+    | PKPre(_kf,stmt,pre) , _ ->
+        let kf_name_of_stmt =
+          Kernel_function.get_name
+            (Kernel_function.find_englobing_kf stmt)
+        in Printf.sprintf "%s_call_%s" kf_name_of_stmt (get_ip pre)
+
+  let get_prop_id_name p =
+    let basename = get_prop_id_base p in
+    match p.p_part with
+    | None -> basename
+    | Some(k,n) ->
+        if n < 10 then Printf.sprintf "%s_part%d" basename (succ k) else
+        if n < 100 then Printf.sprintf "%s_part%02d" basename (succ k) else
+        if n < 1000 then Printf.sprintf "%s_part%03d" basename (succ k) else
+          Printf.sprintf "%s_part%06d" basename (succ k)
+
+end
+
+(* -------------------------------------------------------------------------- *)
+(* --- Naming Accessors                                                   --- *)
+(* -------------------------------------------------------------------------- *)
+
+let get_legacy = LegacyNames.get_prop_id_name
+(** Legacy property PO name *)
+
 let get_propid = Names.get_prop_id_name
 (** Name related to a property PO *)
 
@@ -334,38 +423,31 @@ let code_annot_names ca = match ca.annot_content with
   | AAssert (_, named_pred)  -> "@assert"::(ident_names named_pred.pred_name)
   | AInvariant (_,_,named_pred) -> "@invariant"::(ident_names named_pred.pred_name)
   | AVariant (term, _) -> "@variant"::(ident_names term.term_name)
+  | AExtended(_,_,(_,name,_,_)) -> [Printf.sprintf "@%s" name]
   | _ -> [] (* TODO : add some more names ? *)
 
 (** This is used to give the name of the property that the user can give
  * to select it from the command line (-wp-prop option) *)
 let user_prop_names p = match p with
   | Property.IPPredicate (kind,_,_,idp) ->
-      let kind_name =
-        Format.asprintf  "%c%a" '@' Property.pretty_predicate_kind kind
-      in
-      kind_name::idp.ip_content.pred_name
-  | Property.IPExtended(_,(_,name,_,_)) ->
-      let kind_name = Format.asprintf "%s_extension" name in [kind_name]
+      Format.asprintf  "@@%a" Property.pretty_predicate_kind kind ::
+      idp.ip_content.pred_name
+  | Property.IPExtended(_,(_,name,_,_)) -> [ Printf.sprintf "@%s" name ]
   | Property.IPCodeAnnot (_,_, ca) -> code_annot_names ca
   | Property.IPComplete (_, _,_,lb) ->
       let kind_name = "@complete_behaviors" in
-      let name =
-        Format.asprintf  "complete_behaviors%a" pp_names lb
+      let name = Format.asprintf "complete_behaviors%a" pp_names lb
       in kind_name::[name]
   | Property.IPDisjoint (_, _,_, lb) ->
       let kind_name = "@disjoint_behaviors" in
-      let name = Format.asprintf  "disjoint_behaviors%a" pp_names lb
+      let name = Format.asprintf "disjoint_behaviors%a" pp_names lb
       in kind_name::[name]
   | Property.IPAssigns (_, _, _, l) ->
-      let kind_name = "@assigns" in
       List.fold_left
-        (fun acc (t,_) -> (ident_names t.it_content.term_name) @ acc) [kind_name] l
-  | Property.IPDecrease (_,_, Some ca,_) ->
-      let kind_name = "@decreases"
-      in kind_name::code_annot_names ca
-  | Property.IPDecrease _ ->
-      let kind_name = "@decreases"
-      in kind_name::[] (*TODO: add more names ? *)
+        (fun acc (t,_) -> (ident_names t.it_content.term_name) @ acc)
+        ["@assigns"] l
+  | Property.IPDecrease (_,_, Some ca,_) -> "@decreases"::code_annot_names ca
+  | Property.IPDecrease _ -> [ "@decreases" ]
   | Property.IPLemma (a,_,_,l,_) ->
       let names = "@lemma"::a::(ident_names l.pred_name)
       in begin
diff --git a/src/plugins/wp/wpPropId.mli b/src/plugins/wp/wpPropId.mli
index 0fd74fd18426f90f9a7665a1e66e81899f3cab77..16b42ff8adc916777fbc0510f968b4f8d83a58eb 100644
--- a/src/plugins/wp/wpPropId.mli
+++ b/src/plugins/wp/wpPropId.mli
@@ -68,6 +68,7 @@ val select_call_pre : stmt -> Property.t option -> prop_id -> bool
 val prop_id_keys : prop_id -> string list * string list (* required , hints *)
 
 val get_propid : prop_id -> string (** Unique identifier of [prop_id] *)
+val get_legacy : prop_id -> string (** Unique legacy identifier of [prop_id] *)
 val pp_propid : Format.formatter -> prop_id -> unit (** Print unique id of [prop_id] *)
 
 type prop_kind =
diff --git a/src/plugins/wp/wpo.ml b/src/plugins/wp/wpo.ml
index 3e341d382e7f61044f9a19e85a30f3d1e898939f..8a20407e53338db5485ec741ba9092b980ec6bbe 100644
--- a/src/plugins/wp/wpo.ml
+++ b/src/plugins/wp/wpo.ml
@@ -380,6 +380,7 @@ type formula =
 
 type po = t and t = {
     po_gid   : string ;  (* goal identifier *)
+    po_leg   : string ;  (* legacy goal identifier *)
     po_sid   : string ;  (* goal short identifier (without model) *)
     po_name  : string ;  (* goal informal name *)
     po_idx   : index ;   (* goal index *)
@@ -453,8 +454,9 @@ module S =
         [{
           po_idx = Function(List.hd Kernel_function.reprs,Some "default") ;
           po_pid = List.hd WpPropId.PropId.reprs;
-          po_sid = "xxx";
-          po_gid = "xxx";
+          po_sid = "";
+          po_gid = "";
+          po_leg = "";
           po_model = Model.repr ;
           po_name = "dummy";
           po_formula = GoalAnnot VC_Annot.repr ;
diff --git a/src/plugins/wp/wpo.mli b/src/plugins/wp/wpo.mli
index a9d554454e2ccf10fc233f492bedec697b4fb472..9413c844b02e32eb94e06c950d0af43196378001 100644
--- a/src/plugins/wp/wpo.mli
+++ b/src/plugins/wp/wpo.mli
@@ -116,6 +116,7 @@ type formula =
 
 type po = t and t = {
     po_gid   : string ;  (** goal identifier *)
+    po_leg   : string ; (** legacy goal identifier *)
     po_sid   : string ;  (** goal short identifier (without model) *)
     po_name  : string ;  (** goal informal name *)
     po_idx   : index ;   (** goal index *)
diff --git a/tests/jcdb/oracle/jcdb.0.res.oracle b/tests/jcdb/oracle/jcdb.0.res.oracle
index fc6e678e7541aa6336f91a8044e67d6ac8a685c6..1a80090d55b0c602628524a47fa26ba90e0cf493 100644
--- a/tests/jcdb/oracle/jcdb.0.res.oracle
+++ b/tests/jcdb/oracle/jcdb.0.res.oracle
@@ -1,7 +1,8 @@
 [kernel:pp:compilation-db] Warning: 
-  found duplicate flags for 'tests/jcdb/jcdb.c'.
-  Previous flags: -DDUPLICATE_FLAGS_THAT_WILL_BE_OVERWRITTEN
-       New flags: -D'MSG="a \" \"b"' -D'SINGLE_DOUBLE(a)="a \"with spaces and	tab "' -DSOMEDEF="With spaces, quotes and \-es." -D"DOUBLE_SINGLE(a)=a \"macro with spaces and non-escaped \\'\"" -DEMPTY='' -DEMPTY2= -DTEST=42 -D'MACRO_FOR_INCR(s)=s+1' -DTOUNDEF -UTOUNDEF
+  found duplicate flags for 'tests/jcdb/jcdb.c', replacing old flags.
+  Old flags no longer present: -D'MSG="a \" \"b"' -D'SINGLE_DOUBLE(a)="a \"with spaces and	tab "' -DSOMEDEF="With spaces, quotes and \-es." -D"DOUBLE_SINGLE(a)=a \"macro with spaces and non-escaped \\'\"" -DEMPTY='' -DEMPTY2= -DTEST=42 -D'MACRO_FOR_INCR(s)=s+1' -DTOUNDEF -UTOUNDEF
+  New flags not previously present: -DDUPLICATE_FLAGS_THAT_WILL_BE_OVERWRITTEN
+  (warn-once: no further messages from category 'pp:compilation-db' will be emitted)
 [kernel] Parsing tests/jcdb/jcdb.c (with preprocessing)
 /* Generated by Frama-C */
 #include "errno.h"
diff --git a/tests/misc/oracle/pp_int.res.oracle b/tests/misc/oracle/pp_int.res.oracle
new file mode 100644
index 0000000000000000000000000000000000000000..f544e754a18043056e60b1d7a5eb0535289b3f07
--- /dev/null
+++ b/tests/misc/oracle/pp_int.res.oracle
@@ -0,0 +1,479 @@
+======================================================================
+Nbits: 0   Sep: ","
+----------------------------------------------------------------------
+value   '65537' '10001'
+refhex  '0x0001,0001'
+pp_hex  '0x0001,0001'
+refbin  '0b0000,0000,0000,0001,0000,0000,0000,0001'
+pp_bin  '               0b0001,0000,0000,0000,0001'
+pp_neg  '               1b1110,1111,1111,1111,1110'
+----------------------------------------------------------------------
+value   '65536' '10000'
+refhex  '0x0001,0000'
+pp_hex  '0x0001,0000'
+refbin  '0b0000,0000,0000,0001,0000,0000,0000,0000'
+pp_bin  '               0b0001,0000,0000,0000,0000'
+pp_neg  '               1b1110,1111,1111,1111,1111'
+----------------------------------------------------------------------
+value   '65335' 'ff37'
+refhex  '0x0000,FF37'
+pp_hex  '     0xFF37'
+refbin  '0b0000,0000,0000,0000,1111,1111,0011,0111'
+pp_bin  '                    0b1111,1111,0011,0111'
+pp_neg  '                    1b0000,0000,1100,1000'
+----------------------------------------------------------------------
+value   '65534' 'fffe'
+refhex  '0x0000,FFFE'
+pp_hex  '     0xFFFE'
+refbin  '0b0000,0000,0000,0000,1111,1111,1111,1110'
+pp_bin  '                    0b1111,1111,1111,1110'
+pp_neg  '                    1b0000,0000,0000,0001'
+----------------------------------------------------------------------
+value   '127' '7f'
+refhex  '0x0000,007F'
+pp_hex  '     0x007F'
+refbin  '0b0000,0000,0000,0000,0000,0000,0111,1111'
+pp_bin  '                              0b0111,1111'
+pp_neg  '                              1b1000,0000'
+----------------------------------------------------------------------
+value   '128' '80'
+refhex  '0x0000,0080'
+pp_hex  '     0x0080'
+refbin  '0b0000,0000,0000,0000,0000,0000,1000,0000'
+pp_bin  '                              0b1000,0000'
+pp_neg  '                              1b0111,1111'
+----------------------------------------------------------------------
+value   '129' '81'
+refhex  '0x0000,0081'
+pp_hex  '     0x0081'
+refbin  '0b0000,0000,0000,0000,0000,0000,1000,0001'
+pp_bin  '                              0b1000,0001'
+pp_neg  '                              1b0111,1110'
+----------------------------------------------------------------------
+value   '2' '2'
+refhex  '0x0000,0002'
+pp_hex  '     0x0002'
+refbin  '0b0000,0000,0000,0000,0000,0000,0000,0010'
+pp_bin  '                                   0b0010'
+pp_neg  '                                   1b1101'
+----------------------------------------------------------------------
+value   '1' '1'
+refhex  '0x0000,0001'
+pp_hex  '     0x0001'
+refbin  '0b0000,0000,0000,0000,0000,0000,0000,0001'
+pp_bin  '                                   0b0001'
+pp_neg  '                                   1b1110'
+----------------------------------------------------------------------
+value   '0' '0'
+refhex  '0x0000,0000'
+pp_hex  '     0x0000'
+refbin  '0b0000,0000,0000,0000,0000,0000,0000,0000'
+pp_bin  '                                   0b0000'
+pp_neg  '                                   1b1111'
+----------------------------------------------------------------------
+value   '-1' '7fffffffffffffff'
+refhex  '1xFFFF,FFFF'
+pp_hex  '     1xFFFF'
+refbin  '1b1111,1111,1111,1111,1111,1111,1111,1111'
+pp_bin  '                                   1b1111'
+pp_neg  '                                   0b0000'
+----------------------------------------------------------------------
+value   '-2' '7ffffffffffffffe'
+refhex  '1xFFFF,FFFE'
+pp_hex  '     1xFFFE'
+refbin  '1b1111,1111,1111,1111,1111,1111,1111,1110'
+pp_bin  '                                   1b1110'
+pp_neg  '                                   0b0001'
+----------------------------------------------------------------------
+value   '-3' '7ffffffffffffffd'
+refhex  '1xFFFF,FFFD'
+pp_hex  '     1xFFFD'
+refbin  '1b1111,1111,1111,1111,1111,1111,1111,1101'
+pp_bin  '                                   1b1101'
+pp_neg  '                                   0b0010'
+----------------------------------------------------------------------
+value   '-126' '7fffffffffffff82'
+refhex  '1xFFFF,FF82'
+pp_hex  '     1xFF82'
+refbin  '1b1111,1111,1111,1111,1111,1111,1000,0010'
+pp_bin  '                              1b1000,0010'
+pp_neg  '                              0b0111,1101'
+----------------------------------------------------------------------
+value   '-127' '7fffffffffffff81'
+refhex  '1xFFFF,FF81'
+pp_hex  '     1xFF81'
+refbin  '1b1111,1111,1111,1111,1111,1111,1000,0001'
+pp_bin  '                              1b1000,0001'
+pp_neg  '                              0b0111,1110'
+----------------------------------------------------------------------
+value   '-128' '7fffffffffffff80'
+refhex  '1xFFFF,FF80'
+pp_hex  '     1xFF80'
+refbin  '1b1111,1111,1111,1111,1111,1111,1000,0000'
+pp_bin  '                              1b1000,0000'
+pp_neg  '                              0b0111,1111'
+----------------------------------------------------------------------
+value   '-129' '7fffffffffffff7f'
+refhex  '1xFFFF,FF7F'
+pp_hex  '     1xFF7F'
+refbin  '1b1111,1111,1111,1111,1111,1111,0111,1111'
+pp_bin  '                              1b0111,1111'
+pp_neg  '                              0b1000,0000'
+----------------------------------------------------------------------
+value   '-130' '7fffffffffffff7e'
+refhex  '1xFFFF,FF7E'
+pp_hex  '     1xFF7E'
+refbin  '1b1111,1111,1111,1111,1111,1111,0111,1110'
+pp_bin  '                              1b0111,1110'
+pp_neg  '                              0b1000,0001'
+----------------------------------------------------------------------
+value   '-254' '7fffffffffffff02'
+refhex  '1xFFFF,FF02'
+pp_hex  '     1xFF02'
+refbin  '1b1111,1111,1111,1111,1111,1111,0000,0010'
+pp_bin  '                              1b0000,0010'
+pp_neg  '                              0b1111,1101'
+----------------------------------------------------------------------
+value   '-255' '7fffffffffffff01'
+refhex  '1xFFFF,FF01'
+pp_hex  '     1xFF01'
+refbin  '1b1111,1111,1111,1111,1111,1111,0000,0001'
+pp_bin  '                              1b0000,0001'
+pp_neg  '                              0b1111,1110'
+----------------------------------------------------------------------
+value   '-256' '7fffffffffffff00'
+refhex  '1xFFFF,FF00'
+pp_hex  '     1xFF00'
+refbin  '1b1111,1111,1111,1111,1111,1111,0000,0000'
+pp_bin  '                              1b0000,0000'
+pp_neg  '                              0b1111,1111'
+----------------------------------------------------------------------
+value   '-257' '7ffffffffffffeff'
+refhex  '1xFFFF,FEFF'
+pp_hex  '     1xFEFF'
+refbin  '1b1111,1111,1111,1111,1111,1110,1111,1111'
+pp_bin  '                         1b1110,1111,1111'
+pp_neg  '                         0b0001,0000,0000'
+----------------------------------------------------------------------
+value   '-258' '7ffffffffffffefe'
+refhex  '1xFFFF,FEFE'
+pp_hex  '     1xFEFE'
+refbin  '1b1111,1111,1111,1111,1111,1110,1111,1110'
+pp_bin  '                         1b1110,1111,1110'
+pp_neg  '                         0b0001,0000,0001'
+----------------------------------------------------------------------
+value   '-65534' '7fffffffffff0002'
+refhex  '1xFFFF,0002'
+pp_hex  '     1x0002'
+refbin  '1b1111,1111,1111,1111,0000,0000,0000,0010'
+pp_bin  '                    1b0000,0000,0000,0010'
+pp_neg  '                    0b1111,1111,1111,1101'
+----------------------------------------------------------------------
+value   '-65535' '7fffffffffff0001'
+refhex  '1xFFFF,0001'
+pp_hex  '     1x0001'
+refbin  '1b1111,1111,1111,1111,0000,0000,0000,0001'
+pp_bin  '                    1b0000,0000,0000,0001'
+pp_neg  '                    0b1111,1111,1111,1110'
+----------------------------------------------------------------------
+value   '-65536' '7fffffffffff0000'
+refhex  '1xFFFF,0000'
+pp_hex  '     1x0000'
+refbin  '1b1111,1111,1111,1111,0000,0000,0000,0000'
+pp_bin  '                    1b0000,0000,0000,0000'
+pp_neg  '                    0b1111,1111,1111,1111'
+----------------------------------------------------------------------
+value   '-65537' '7ffffffffffeffff'
+refhex  '1xFFFE,FFFF'
+pp_hex  '1xFFFE,FFFF'
+refbin  '1b1111,1111,1111,1110,1111,1111,1111,1111'
+pp_bin  '               1b1110,1111,1111,1111,1111'
+pp_neg  '               0b0001,0000,0000,0000,0000'
+----------------------------------------------------------------------
+value   '-65538' '7ffffffffffefffe'
+refhex  '1xFFFE,FFFE'
+pp_hex  '1xFFFE,FFFE'
+refbin  '1b1111,1111,1111,1110,1111,1111,1111,1110'
+pp_bin  '               1b1110,1111,1111,1111,1110'
+pp_neg  '               0b0001,0000,0000,0000,0001'
+======================================================================
+Nbits: 8   Sep: ""
+----------------------------------------------------------------------
+value   '65335' 'ff37'
+refhex  '0x0000FF37'
+pp_hex  '    0xFF37'
+refbin  '0b00000000000000001111111100110111'
+pp_bin  '                0b1111111100110111'
+pp_neg  '                1b0000000011001000'
+----------------------------------------------------------------------
+value   '65534' 'fffe'
+refhex  '0x0000FFFE'
+pp_hex  '    0xFFFE'
+refbin  '0b00000000000000001111111111111110'
+pp_bin  '                0b1111111111111110'
+pp_neg  '                1b0000000000000001'
+----------------------------------------------------------------------
+value   '2' '2'
+refhex  '0x00000002'
+pp_hex  '    0x0002'
+refbin  '0b00000000000000000000000000000010'
+pp_bin  '                        0b00000010'
+pp_neg  '                        1b11111101'
+----------------------------------------------------------------------
+value   '1' '1'
+refhex  '0x00000001'
+pp_hex  '    0x0001'
+refbin  '0b00000000000000000000000000000001'
+pp_bin  '                        0b00000001'
+pp_neg  '                        1b11111110'
+----------------------------------------------------------------------
+value   '0' '0'
+refhex  '0x00000000'
+pp_hex  '    0x0000'
+refbin  '0b00000000000000000000000000000000'
+pp_bin  '                        0b00000000'
+pp_neg  '                        1b11111111'
+----------------------------------------------------------------------
+value   '-1' '7fffffffffffffff'
+refhex  '1xFFFFFFFF'
+pp_hex  '    1xFFFF'
+refbin  '1b11111111111111111111111111111111'
+pp_bin  '                        1b11111111'
+pp_neg  '                        0b00000000'
+----------------------------------------------------------------------
+value   '-2' '7ffffffffffffffe'
+refhex  '1xFFFFFFFE'
+pp_hex  '    1xFFFE'
+refbin  '1b11111111111111111111111111111110'
+pp_bin  '                        1b11111110'
+pp_neg  '                        0b00000001'
+----------------------------------------------------------------------
+value   '-254' '7fffffffffffff02'
+refhex  '1xFFFFFF02'
+pp_hex  '    1xFF02'
+refbin  '1b11111111111111111111111100000010'
+pp_bin  '                    1b00000010'
+pp_neg  '                    0b11111101'
+----------------------------------------------------------------------
+value   '-255' '7fffffffffffff01'
+refhex  '1xFFFFFF01'
+pp_hex  '    1xFF01'
+refbin  '1b11111111111111111111111100000001'
+pp_bin  '                    1b00000001'
+pp_neg  '                    0b11111110'
+----------------------------------------------------------------------
+value   '-256' '7fffffffffffff00'
+refhex  '1xFFFFFF00'
+pp_hex  '    1xFF00'
+refbin  '1b11111111111111111111111100000000'
+pp_bin  '                    1b00000000'
+pp_neg  '                    0b11111111'
+----------------------------------------------------------------------
+value   '-65534' '7fffffffffff0002'
+refhex  '1xFFFF0002'
+pp_hex  '    1x0002'
+refbin  '1b11111111111111110000000000000010'
+pp_bin  '                1b0000000000000010'
+pp_neg  '                0b1111111111111101'
+----------------------------------------------------------------------
+value   '-65535' '7fffffffffff0001'
+refhex  '1xFFFF0001'
+pp_hex  '    1x0001'
+refbin  '1b11111111111111110000000000000001'
+pp_bin  '                1b0000000000000001'
+pp_neg  '                0b1111111111111110'
+----------------------------------------------------------------------
+value   '-65536' '7fffffffffff0000'
+refhex  '1xFFFF0000'
+pp_hex  '    1x0000'
+refbin  '1b11111111111111110000000000000000'
+pp_bin  '                1b0000000000000000'
+pp_neg  '                0b1111111111111111'
+======================================================================
+Nbits: 10   Sep: ""
+----------------------------------------------------------------------
+value   '65335' 'ff37'
+refhex  '0x0000FF37'
+pp_hex  '    0xFF37'
+refbin  '0b00000000000000001111111100110111'
+pp_bin  '                0b1111111100110111'
+pp_neg  '                1b0000000011001000'
+----------------------------------------------------------------------
+value   '65534' 'fffe'
+refhex  '0x0000FFFE'
+pp_hex  '    0xFFFE'
+refbin  '0b00000000000000001111111111111110'
+pp_bin  '                0b1111111111111110'
+pp_neg  '                1b0000000000000001'
+----------------------------------------------------------------------
+value   '2' '2'
+refhex  '0x00000002'
+pp_hex  '    0x0002'
+refbin  '0b00000000000000000000000000000010'
+pp_bin  '                    0b000000000010'
+pp_neg  '                    1b111111111101'
+----------------------------------------------------------------------
+value   '1' '1'
+refhex  '0x00000001'
+pp_hex  '    0x0001'
+refbin  '0b00000000000000000000000000000001'
+pp_bin  '                    0b000000000001'
+pp_neg  '                    1b111111111110'
+----------------------------------------------------------------------
+value   '0' '0'
+refhex  '0x00000000'
+pp_hex  '    0x0000'
+refbin  '0b00000000000000000000000000000000'
+pp_bin  '                    0b000000000000'
+pp_neg  '                    1b111111111111'
+----------------------------------------------------------------------
+value   '-1' '7fffffffffffffff'
+refhex  '1xFFFFFFFF'
+pp_hex  '    1xFFFF'
+refbin  '1b11111111111111111111111111111111'
+pp_bin  '                    1b111111111111'
+pp_neg  '                    0b000000000000'
+----------------------------------------------------------------------
+value   '-2' '7ffffffffffffffe'
+refhex  '1xFFFFFFFE'
+pp_hex  '    1xFFFE'
+refbin  '1b11111111111111111111111111111110'
+pp_bin  '                    1b111111111110'
+pp_neg  '                    0b000000000001'
+----------------------------------------------------------------------
+value   '-254' '7fffffffffffff02'
+refhex  '1xFFFFFF02'
+pp_hex  '    1xFF02'
+refbin  '1b11111111111111111111111100000010'
+pp_bin  '                    1b111100000010'
+pp_neg  '                    0b000011111101'
+----------------------------------------------------------------------
+value   '-255' '7fffffffffffff01'
+refhex  '1xFFFFFF01'
+pp_hex  '    1xFF01'
+refbin  '1b11111111111111111111111100000001'
+pp_bin  '                    1b111100000001'
+pp_neg  '                    0b000011111110'
+----------------------------------------------------------------------
+value   '-256' '7fffffffffffff00'
+refhex  '1xFFFFFF00'
+pp_hex  '    1xFF00'
+refbin  '1b11111111111111111111111100000000'
+pp_bin  '                    1b111100000000'
+pp_neg  '                    0b000011111111'
+----------------------------------------------------------------------
+value   '-65534' '7fffffffffff0002'
+refhex  '1xFFFF0002'
+pp_hex  '    1x0002'
+refbin  '1b11111111111111110000000000000010'
+pp_bin  '                1b0000000000000010'
+pp_neg  '                0b1111111111111101'
+----------------------------------------------------------------------
+value   '-65535' '7fffffffffff0001'
+refhex  '1xFFFF0001'
+pp_hex  '    1x0001'
+refbin  '1b11111111111111110000000000000001'
+pp_bin  '                1b0000000000000001'
+pp_neg  '                0b1111111111111110'
+----------------------------------------------------------------------
+value   '-65536' '7fffffffffff0000'
+refhex  '1xFFFF0000'
+pp_hex  '    1x0000'
+refbin  '1b11111111111111110000000000000000'
+pp_bin  '                1b0000000000000000'
+pp_neg  '                0b1111111111111111'
+======================================================================
+Nbits: 10   Sep: "."
+----------------------------------------------------------------------
+value   '65335' 'ff37'
+refhex  '0x0000.FF37'
+pp_hex  '     0xFF37'
+refbin  '0b0000.0000.0000.0000.1111.1111.0011.0111'
+pp_bin  '                    0b1111.1111.0011.0111'
+pp_neg  '                    1b0000.0000.1100.1000'
+----------------------------------------------------------------------
+value   '65534' 'fffe'
+refhex  '0x0000.FFFE'
+pp_hex  '     0xFFFE'
+refbin  '0b0000.0000.0000.0000.1111.1111.1111.1110'
+pp_bin  '                    0b1111.1111.1111.1110'
+pp_neg  '                    1b0000.0000.0000.0001'
+----------------------------------------------------------------------
+value   '2' '2'
+refhex  '0x0000.0002'
+pp_hex  '     0x0002'
+refbin  '0b0000.0000.0000.0000.0000.0000.0000.0010'
+pp_bin  '                         0b0000.0000.0010'
+pp_neg  '                         1b1111.1111.1101'
+----------------------------------------------------------------------
+value   '1' '1'
+refhex  '0x0000.0001'
+pp_hex  '     0x0001'
+refbin  '0b0000.0000.0000.0000.0000.0000.0000.0001'
+pp_bin  '                         0b0000.0000.0001'
+pp_neg  '                         1b1111.1111.1110'
+----------------------------------------------------------------------
+value   '0' '0'
+refhex  '0x0000.0000'
+pp_hex  '     0x0000'
+refbin  '0b0000.0000.0000.0000.0000.0000.0000.0000'
+pp_bin  '                         0b0000.0000.0000'
+pp_neg  '                         1b1111.1111.1111'
+----------------------------------------------------------------------
+value   '-1' '7fffffffffffffff'
+refhex  '1xFFFF.FFFF'
+pp_hex  '     1xFFFF'
+refbin  '1b1111.1111.1111.1111.1111.1111.1111.1111'
+pp_bin  '                         1b1111.1111.1111'
+pp_neg  '                         0b0000.0000.0000'
+----------------------------------------------------------------------
+value   '-2' '7ffffffffffffffe'
+refhex  '1xFFFF.FFFE'
+pp_hex  '     1xFFFE'
+refbin  '1b1111.1111.1111.1111.1111.1111.1111.1110'
+pp_bin  '                         1b1111.1111.1110'
+pp_neg  '                         0b0000.0000.0001'
+----------------------------------------------------------------------
+value   '-254' '7fffffffffffff02'
+refhex  '1xFFFF.FF02'
+pp_hex  '     1xFF02'
+refbin  '1b1111.1111.1111.1111.1111.1111.0000.0010'
+pp_bin  '                         1b1111.0000.0010'
+pp_neg  '                         0b0000.1111.1101'
+----------------------------------------------------------------------
+value   '-255' '7fffffffffffff01'
+refhex  '1xFFFF.FF01'
+pp_hex  '     1xFF01'
+refbin  '1b1111.1111.1111.1111.1111.1111.0000.0001'
+pp_bin  '                         1b1111.0000.0001'
+pp_neg  '                         0b0000.1111.1110'
+----------------------------------------------------------------------
+value   '-256' '7fffffffffffff00'
+refhex  '1xFFFF.FF00'
+pp_hex  '     1xFF00'
+refbin  '1b1111.1111.1111.1111.1111.1111.0000.0000'
+pp_bin  '                         1b1111.0000.0000'
+pp_neg  '                         0b0000.1111.1111'
+----------------------------------------------------------------------
+value   '-65534' '7fffffffffff0002'
+refhex  '1xFFFF.0002'
+pp_hex  '     1x0002'
+refbin  '1b1111.1111.1111.1111.0000.0000.0000.0010'
+pp_bin  '                    1b0000.0000.0000.0010'
+pp_neg  '                    0b1111.1111.1111.1101'
+----------------------------------------------------------------------
+value   '-65535' '7fffffffffff0001'
+refhex  '1xFFFF.0001'
+pp_hex  '     1x0001'
+refbin  '1b1111.1111.1111.1111.0000.0000.0000.0001'
+pp_bin  '                    1b0000.0000.0000.0001'
+pp_neg  '                    0b1111.1111.1111.1110'
+----------------------------------------------------------------------
+value   '-65536' '7fffffffffff0000'
+refhex  '1xFFFF.0000'
+pp_hex  '     1x0000'
+refbin  '1b1111.1111.1111.1111.0000.0000.0000.0000'
+pp_bin  '                    1b0000.0000.0000.0000'
+pp_neg  '                    0b1111.1111.1111.1111'
+----------------------------------------------------------------------
+[kernel] Parsing tests/misc/pp_int.i (no preprocessing)
diff --git a/tests/misc/pp_int.i b/tests/misc/pp_int.i
new file mode 100644
index 0000000000000000000000000000000000000000..d6da6546ebd7eceeb7f3e589508b388adc949278
--- /dev/null
+++ b/tests/misc/pp_int.i
@@ -0,0 +1,4 @@
+/* run.config
+   COMMENT: test of Integer.pp_bin and Integer.pp_hex
+   OPT: -load-script tests/misc/pp_int.ml
+ */
diff --git a/tests/misc/pp_int.ml b/tests/misc/pp_int.ml
new file mode 100644
index 0000000000000000000000000000000000000000..ef2d83bd0b7037492702c6398e5a7f2252c753c3
--- /dev/null
+++ b/tests/misc/pp_int.ml
@@ -0,0 +1,90 @@
+(* -------------------------------------------------------------------------- *)
+(* --- Test for Integer.pp_int and Integer.pp_hex                         --- *)
+(* -------------------------------------------------------------------------- *)
+
+let pp_bin_naive ~sep fmt x =
+  Format.pp_print_string fmt (if 0 <= x then "0b" else "1b") ;
+  for i = 31 downto 0 do
+    let b = (x land (1 lsl i)) <> 0 in
+    Format.pp_print_char fmt (if b then '1' else '0') ;
+    if i > 0 && i mod 4 = 0 then Format.pp_print_string fmt sep ;
+  done
+
+let pp_hex_naive ~sep fmt x =
+  let m = Printf.sprintf "%08X" x in
+  let n = String.length m in
+  let m = if n < 8 then m else String.sub m (n-8) 8 in
+  let n = String.length m in
+  Format.pp_print_string fmt (if 0 <= x then "0x" else "1x") ;
+  for i = n - 1 downto 0 do
+    Format.pp_print_char fmt m.[n-1-i] ;
+    if i > 0 && i mod 4 = 0 then Format.pp_print_string fmt sep ;
+  done
+
+let pp_bar fmt c =
+  Format.fprintf fmt "%s@\n" (String.make 70 c)
+
+let testvalue ~nbits ~sep ~tbin ~thex fmt x =
+  begin
+    let v = Integer.of_int x in
+    let v2 = Integer.(lognot v) in
+    pp_bar fmt '-' ;
+    Format.fprintf fmt "value   '%d' '%x'@\n" x x ;
+    Format.fprintf fmt "refhex  '%a'@\n" (pp_hex_naive ~sep) x ;
+    Format.fprintf fmt "pp_hex  '%s%a'@\n" thex (Integer.pp_hex ~nbits ~sep) v ;
+    Format.fprintf fmt "refbin  '%a'@\n" (pp_bin_naive ~sep) x ;
+    Format.fprintf fmt "pp_bin  '%s%a'@\n" tbin (Integer.pp_bin ~nbits ~sep) v ;
+    Format.fprintf fmt "pp_neg  '%s%a'@\n" tbin (Integer.pp_bin ~nbits ~sep) v2 ;
+  end
+
+let testdata data fmt =
+  begin
+    List.iter
+      (fun (nbits,sep,values) ->
+         pp_bar fmt '=' ;
+         Format.fprintf fmt "Nbits: %d   Sep: %S@\n" nbits sep ;
+         List.iter
+           (fun (nhex,nbin,values) ->
+              let tbin = String.make nbin ' ' in
+              let thex = String.make nhex ' ' in
+              List.iter (testvalue ~nbits ~sep ~tbin ~thex fmt) values
+           ) values ;
+      ) data ;
+    pp_bar fmt '-' ;
+  end
+
+let () =
+  Format.printf "%t"
+    begin testdata [
+        0, "," , [
+          0 , 15 , [ 65537;65536 ] ;
+          5 , 20 , [ 65335;65534 ] ;
+          5 , 30 , [ 127;128;129 ] ;
+          5 , 35 , [ 2;1;0;-1;-2;-3 ] ;
+          5 , 30 , [ -126;-127;-128;-129;-130 ] ;
+          5 , 30 , [ -254;-255;-256 ] ;
+          5 , 25 , [ -257;-258 ] ;
+          5 , 20 , [ -65534;-65535;-65536 ] ;
+          0 , 15 , [ -65537;-65538 ] ;
+        ] ;
+        8, "" , [
+          4 , 16 , [ 65335;65534 ] ;
+          4 , 24 , [ 2;1;0;-1;-2 ] ;
+          4 , 20 , [ -254;-255;-256 ] ;
+          4 , 16 , [ -65534;-65535;-65536 ] ;
+        ] ;
+        10, "" , [
+          4 , 16 , [ 65335;65534 ] ;
+          4 , 20 , [ 2;1;0;-1;-2 ] ;
+          4 , 20 , [ -254;-255;-256 ] ;
+          4 , 16 , [ -65534;-65535;-65536 ] ;
+        ] ;
+        10, "." , [
+          5 , 20 , [ 65335;65534 ] ;
+          5 , 25 , [ 2;1;0;-1;-2 ] ;
+          5 , 25 , [ -254;-255;-256 ] ;
+          5 , 20 , [ -65534;-65535;-65536 ] ;
+        ] ;
+      ]
+    end
+