From 2e6894fc54a024702ef9f9a80184f57e0a098f9f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Loi=CC=88c=20Correnson?= <loic.correnson@cea.fr>
Date: Wed, 10 Apr 2024 00:14:23 +0200
Subject: [PATCH] [wp] refactor prover selection and cleanup tests

---
 src/plugins/wp/VCS.ml                         | 20 ++---
 src/plugins/wp/Why3Provers.ml                 | 77 +++++++++----------
 src/plugins/wp/Why3Provers.mli                |  8 +-
 src/plugins/wp/gui/GuiConfig.ml               |  2 +-
 .../wp/tests/wp_acsl/chunk_typing_usable.i    |  2 +-
 src/plugins/wp/tests/wp_acsl/classify_float.c |  2 +-
 src/plugins/wp/tests/wp_acsl/div_mod.i        |  2 -
 src/plugins/wp/tests/wp_acsl/float_compare.i  |  2 +-
 .../oracle_qualif/classify_float.2.res.oracle | 13 ----
 .../oracle_qualif/div_mod.1.res.oracle        | 38 ---------
 .../oracle_qualif/div_mod.2.res.oracle        | 13 ----
 ...iv_mod.0.res.oracle => div_mod.res.oracle} |  0
 src/plugins/wp/tests/wp_acsl/tset.i           |  2 +-
 .../tests/wp_gallery/binary-multiplication.c  |  2 -
 src/plugins/wp/tests/wp_plugin/abs.i          |  2 +-
 src/plugins/wp/tests/wp_plugin/bit_test.c     |  2 +-
 src/plugins/wp/tests/wp_plugin/fallback.i     |  1 +
 src/plugins/wp/tests/wp_plugin/float_format.i |  2 +-
 src/plugins/wp/tests/wp_plugin/math.i         |  3 +-
 src/plugins/wp/tests/wp_plugin/nosession.i    |  2 +-
 .../wp_plugin/oracle/fallback.res.oracle      |  2 +-
 .../wp_plugin/oracle/sequence.res.oracle      | 50 ++++++------
 .../oracle_qualif/fallback.res.oracle         | 13 ++--
 .../wp_plugin/oracle_qualif/math.1.res.oracle | 22 ------
 .../{math.0.res.oracle => math.res.oracle}    |  0
 .../oracle_qualif/sequence.0.res.oracle       | 69 -----------------
 .../oracle_qualif/sequence.1.res.oracle       | 64 ---------------
 .../oracle_qualif/sequence.2.res.oracle       |  6 --
 .../oracle_qualif/sequence.res.oracle         | 69 +++++++++++++++++
 src/plugins/wp/tests/wp_plugin/sequence.i     | 10 ---
 30 files changed, 153 insertions(+), 347 deletions(-)
 delete mode 100644 src/plugins/wp/tests/wp_acsl/oracle_qualif/classify_float.2.res.oracle
 delete mode 100644 src/plugins/wp/tests/wp_acsl/oracle_qualif/div_mod.1.res.oracle
 delete mode 100644 src/plugins/wp/tests/wp_acsl/oracle_qualif/div_mod.2.res.oracle
 rename src/plugins/wp/tests/wp_acsl/oracle_qualif/{div_mod.0.res.oracle => div_mod.res.oracle} (100%)
 delete mode 100644 src/plugins/wp/tests/wp_plugin/oracle_qualif/math.1.res.oracle
 rename src/plugins/wp/tests/wp_plugin/oracle_qualif/{math.0.res.oracle => math.res.oracle} (100%)
 delete mode 100644 src/plugins/wp/tests/wp_plugin/oracle_qualif/sequence.0.res.oracle
 delete mode 100644 src/plugins/wp/tests/wp_plugin/oracle_qualif/sequence.1.res.oracle
 delete mode 100644 src/plugins/wp/tests/wp_plugin/oracle_qualif/sequence.2.res.oracle
 create mode 100644 src/plugins/wp/tests/wp_plugin/oracle_qualif/sequence.res.oracle

diff --git a/src/plugins/wp/VCS.ml b/src/plugins/wp/VCS.ml
index 25d32bef0af..fb2766c4ac9 100644
--- a/src/plugins/wp/VCS.ml
+++ b/src/plugins/wp/VCS.ml
@@ -46,21 +46,11 @@ let parse_prover = function
   | "why3" -> Some (Why3 { Why3.Whyconf.prover_name = "why3";
                            Why3.Whyconf.prover_version = "";
                            Why3.Whyconf.prover_altern = "generate only" })
-  | s ->
-    let prv = String.split_on_char ':' s in
-    let prv = match prv with "why3"::prv -> prv | _ -> prv in
-    let name = String.concat "," prv in
-    match Why3Provers.find_fallback name with
-    | Exact p -> Some (Why3 p)
-    | Fallback p ->
-      Wp_parameters.warning ~current:false ~once:true
-        "Prover '%s' not found, fallback to '%s'"
-        (String.concat ":" prv) (Why3Provers.ident_wp p) ;
-      Some (Why3 p)
-    | NotFound ->
-      Wp_parameters.error ~once:true
-        "Prover '%s' not found in why3.conf" name ;
-      None
+  | name ->
+    match Why3Provers.lookup name with
+    | Some p -> Some (Why3 p)
+    | None -> Wp_parameters.error ~once:true
+                "Prover '%s' not found in why3.conf" name ; None
 
 let parse_mode m =
   match String.lowercase_ascii m with
diff --git a/src/plugins/wp/Why3Provers.ml b/src/plugins/wp/Why3Provers.ml
index 04d4e4e5a0a..f84d4b764a1 100644
--- a/src/plugins/wp/Why3Provers.ml
+++ b/src/plugins/wp/Why3Provers.ml
@@ -62,40 +62,6 @@ let configure =
 
 type t = Why3.Whyconf.prover
 
-(* In an ambiguous map of provers, tries to find the basic alternative, if none
-   is found, just give an arbitrary one. *)
-let resolve_ambiguity provers =
-  let open Why3.Whyconf in
-  let provers = fst @@ List.split @@ Mprover.bindings provers in
-  try List.find (fun p -> p.prover_altern = "") provers
-  with Not_found -> List.hd provers
-
-let find_opt s =
-  let open Why3.Whyconf in
-  try
-    let config = Lazy.force cfg in
-    let filter = parse_filter_prover s in
-    Some ((filter_one_prover config filter).prover)
-  with
-  | ParseFilterProver _ -> None
-  | ProverNotFound _ -> None
-  | ProverAmbiguity (_, _, provers)  -> Some (resolve_ambiguity provers)
-
-type fallback = Exact of t | Fallback of t | NotFound
-
-let find_fallback name =
-  match find_opt name with
-  | Some prv -> Exact prv
-  | None ->
-    match String.split_on_char ',' name with
-    | shortname :: _ :: _ ->
-      begin
-        match find_opt shortname with
-        | Some prv -> Fallback prv
-        | None -> NotFound
-      end
-    | _ -> NotFound
-
 let ident_why3 = Why3.Whyconf.prover_parseable_format
 let ident_wp s =
   let name = Why3.Whyconf.prover_parseable_format s in
@@ -133,19 +99,48 @@ let provers_set () : Why3.Whyconf.Sprover.t =
 let is_available p =
   Why3.Whyconf.Mprover.mem p (Why3.Whyconf.get_provers (config ()))
 
-let has_shortcut p s =
-  match Why3.Wstdlib.Mstr.find_opt s
-          (Why3.Whyconf.get_prover_shortcuts (config ())) with
-  | None -> false
-  | Some p' -> Why3.Whyconf.Prover.equal p p'
-
 let with_counter_examples p =
   if has_counter_examples p then Some p else
     let name = p.prover_name in
+    let version = p.prover_version in
     List.find_opt
-      (fun (q : t) -> q.prover_name = name && has_counter_examples q)
+      (fun (q : t) ->
+         q.prover_name = name &&
+         q.prover_version = version &&
+         has_counter_examples q)
     @@ provers ()
 
+(* -------------------------------------------------------------------------- *)
+(* ---  Prover Lookup                                                     --- *)
+(* -------------------------------------------------------------------------- *)
+
+(* semantical version comparison *)
+
+type sem = V of int | S of string
+let sem s = try V (int_of_string s) with Failure _ -> S s
+let cmp x y =
+  match x,y with
+  | V a,V b -> b - a
+  | V _,S _ -> (-1)
+  | S _,V _ -> (+1)
+  | S a,S b -> String.compare a b
+let scmp u v = cmp (sem u) (sem v)
+let vcmp u v =
+  List.compare scmp (String.split_on_char '.' u) (String.split_on_char '.' v)
+let by_version (p:t) (q:t) = vcmp p.prover_version q.prover_version
+
+let filter ~name ?version (p:t) =
+  p.prover_altern = "" &&
+  String.lowercase_ascii p.prover_name = name &&
+  match version with None -> true | Some v -> p.prover_version = v
+
+let select name =
+  match String.split_on_char ':' @@ String.lowercase_ascii name with
+  | [name;version] -> List.filter (filter ~name ~version) @@ provers ()
+  | [name] -> List.sort by_version @@ List.filter (filter ~name) @@ provers ()
+  | _ -> []
+let lookup name = match select name with p :: _ -> Some p | [] -> None
+
 (* -------------------------------------------------------------------------- *)
 (* --- Models                                                             --- *)
 (* -------------------------------------------------------------------------- *)
diff --git a/src/plugins/wp/Why3Provers.mli b/src/plugins/wp/Why3Provers.mli
index 0142173be48..11e189d5799 100644
--- a/src/plugins/wp/Why3Provers.mli
+++ b/src/plugins/wp/Why3Provers.mli
@@ -27,11 +27,6 @@ val set_procs : int -> unit
 
 type t = Why3.Whyconf.prover
 
-val find_opt : string -> t option
-
-type fallback = Exact of t | Fallback of t | NotFound
-val find_fallback : string -> fallback
-
 val ident_why3 : t -> string
 val ident_wp : t -> string
 val title : ?version:bool -> t -> string
@@ -40,6 +35,7 @@ val version : t -> string
 val altern : t -> string
 val compare : t -> t -> int
 
+val lookup : string -> t option
 val provers : unit -> t list
 val provers_set : unit -> Why3.Whyconf.Sprover.t
 val is_auto : t -> bool
@@ -47,8 +43,6 @@ val is_available : t -> bool
 val is_mainstream : t -> bool
 val has_counter_examples : t -> bool
 val with_counter_examples : t -> t option
-val has_shortcut : t -> string -> bool
-
 
 type model = Why3.Model_parser.concrete_syntax_term
 val pp_model : model Pretty_utils.formatter
diff --git a/src/plugins/wp/gui/GuiConfig.ml b/src/plugins/wp/gui/GuiConfig.ml
index f40609610d9..061068f4178 100644
--- a/src/plugins/wp/gui/GuiConfig.ml
+++ b/src/plugins/wp/gui/GuiConfig.ml
@@ -41,7 +41,7 @@ class provers =
         in
         let selection = List.fold_left
             (fun acc e ->
-               match Why3Provers.find_opt e with
+               match Why3Provers.lookup e with
                | None -> acc
                | Some p -> S.add p acc)
             S.empty cmdline
diff --git a/src/plugins/wp/tests/wp_acsl/chunk_typing_usable.i b/src/plugins/wp/tests/wp_acsl/chunk_typing_usable.i
index 7681d66416b..3eced44d70b 100644
--- a/src/plugins/wp/tests/wp_acsl/chunk_typing_usable.i
+++ b/src/plugins/wp/tests/wp_acsl/chunk_typing_usable.i
@@ -2,7 +2,7 @@
    OPT: -wp-gen -wp-rte -wp-prover why3 -wp-msg-key print-generated
 */
 /* run.config_qualif
-   OPT: -wp-rte -wp-prover Alt-Ergo
+   OPT: -wp-rte
 */
 
 /*@
diff --git a/src/plugins/wp/tests/wp_acsl/classify_float.c b/src/plugins/wp/tests/wp_acsl/classify_float.c
index ec858e5eedb..56142759693 100644
--- a/src/plugins/wp/tests/wp_acsl/classify_float.c
+++ b/src/plugins/wp/tests/wp_acsl/classify_float.c
@@ -1,5 +1,5 @@
 /* run.config_qualif
-   OPT: -wp-prover Alt-Ergo
+   OPT:
    OPT: -wp-model real
  */
 
diff --git a/src/plugins/wp/tests/wp_acsl/div_mod.i b/src/plugins/wp/tests/wp_acsl/div_mod.i
index 10cf92b70f4..8fd5fb4e5cb 100644
--- a/src/plugins/wp/tests/wp_acsl/div_mod.i
+++ b/src/plugins/wp/tests/wp_acsl/div_mod.i
@@ -3,8 +3,6 @@
 */
 /* run.config_qualif
    OPT: -wp-prop="-ko"
-   OPT: -wp-prover why3:Alt-Ergo -wp-prop="-ko"
-   OPT: -wp-prover "Alt-Ergo" -wp-prop="ko" -wp-steps 50
 */
 
 //@ axiomatic Eq { predicate Peq(integer x,integer y) = x == y ; }
diff --git a/src/plugins/wp/tests/wp_acsl/float_compare.i b/src/plugins/wp/tests/wp_acsl/float_compare.i
index ff33d352a8f..3e5efe0a21c 100644
--- a/src/plugins/wp/tests/wp_acsl/float_compare.i
+++ b/src/plugins/wp/tests/wp_acsl/float_compare.i
@@ -1,5 +1,5 @@
 /* run.config_qualif
-   OPT: -wp-prover why3:Alt-Ergo
+   OPT:
    OPT: -wp-model real
  */
 
diff --git a/src/plugins/wp/tests/wp_acsl/oracle_qualif/classify_float.2.res.oracle b/src/plugins/wp/tests/wp_acsl/oracle_qualif/classify_float.2.res.oracle
deleted file mode 100644
index d56892bed73..00000000000
--- a/src/plugins/wp/tests/wp_acsl/oracle_qualif/classify_float.2.res.oracle
+++ /dev/null
@@ -1,13 +0,0 @@
-# frama-c -wp -wp-model 'Typed (Real)' [...]
-[kernel] Parsing classify_float.c (with preprocessing)
-[wp] Running WP plugin...
-[wp] 3 goals scheduled
-[wp] [Qed] Goal typed_real_lemma_InfN_not_finite : Valid
-[wp] [Qed] Goal typed_real_lemma_InfP_not_finite : Valid
-[wp] [Qed] Goal typed_real_lemma_NaN_not_finite : Valid
-[wp] Proved goals:    3 / 3
-  Qed:             3
-------------------------------------------------------------
- Axiomatics                WP     Alt-Ergo  Total   Success
-  Lemma                     3        -        3       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
deleted file mode 100644
index b02c8f809be..00000000000
--- a/src/plugins/wp/tests/wp_acsl/oracle_qualif/div_mod.1.res.oracle
+++ /dev/null
@@ -1,38 +0,0 @@
-# frama-c -wp [...]
-[kernel] Parsing div_mod.i (no preprocessing)
-[wp] Running WP plugin...
-[wp] [Valid] Goal f_exits (Cfg) (Unreachable)
-[wp] [Valid] Goal f_terminates (Cfg) (Trivial)
-[wp] Warning: Missing RTE guards
-[wp] 22 goals scheduled
-[wp] [Valid] typed_f_ensures_d0_div_pos_pos (Alt-Ergo) (Trivial)
-[wp] [Valid] typed_f_ensures_d1_div_neg_pos (Alt-Ergo) (Trivial)
-[wp] [Valid] typed_f_ensures_d2_div_pos_neg (Alt-Ergo) (Trivial)
-[wp] [Valid] typed_f_ensures_d3_div_neg_neg (Alt-Ergo) (Trivial)
-[wp] [Valid] typed_f_ensures_d4_div_x_1 (Alt-Ergo) (Trivial)
-[wp] [Valid] typed_f_ensures_d5_div_x_minus1 (Alt-Ergo) (Trivial)
-[wp] [Valid] typed_f_ensures_d6_div_0_x (Alt-Ergo) (Cached)
-[wp] [Valid] typed_f_ensures_sd0_div_pos_pos (Alt-Ergo) (Cached)
-[wp] [Valid] typed_f_ensures_sd1_div_neg_pos (Alt-Ergo) (Cached)
-[wp] [Unsuccess] typed_f_ensures_sd2_div_pos_neg (Alt-Ergo) (Cached)
-[wp] [Unsuccess] typed_f_ensures_sd3_div_neg_neg (Alt-Ergo) (Cached)
-[wp] [Valid] typed_f_ensures_m0_mod_pos_pos (Alt-Ergo) (Trivial)
-[wp] [Valid] typed_f_ensures_m1_mod_neg_pos (Alt-Ergo) (Trivial)
-[wp] [Valid] typed_f_ensures_m2_mod_pos_neg (Alt-Ergo) (Trivial)
-[wp] [Valid] typed_f_ensures_m3_mod_neg_neg (Alt-Ergo) (Trivial)
-[wp] [Valid] typed_f_ensures_m4_mod_x_1 (Alt-Ergo) (Trivial)
-[wp] [Valid] typed_f_ensures_m5_mod_x_minus1 (Alt-Ergo) (Cached)
-[wp] [Valid] typed_f_ensures_m6_mod_0_x (Alt-Ergo) (Cached)
-[wp] [Valid] typed_f_ensures_sm0_mod_pos_pos (Alt-Ergo) (Cached)
-[wp] [Valid] typed_f_ensures_sm1_mod_neg_pos (Alt-Ergo) (Cached)
-[wp] [Valid] typed_f_ensures_sm2_mod_pos_neg (Alt-Ergo) (Cached)
-[wp] [Valid] typed_f_ensures_sm3_mod_neg_neg (Alt-Ergo) (Cached)
-[wp] Proved goals:   22 / 24
-  Terminating:     1
-  Unreachable:     1
-  Alt-Ergo:       20
-  Unsuccess:       2
-------------------------------------------------------------
- Functions                 WP     Alt-Ergo  Total   Success
-  f                         -       20       22      90.9%
-------------------------------------------------------------
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
deleted file mode 100644
index ed6ef43b129..00000000000
--- a/src/plugins/wp/tests/wp_acsl/oracle_qualif/div_mod.2.res.oracle
+++ /dev/null
@@ -1,13 +0,0 @@
-# frama-c -wp -wp-steps 50 [...]
-[kernel] Parsing div_mod.i (no preprocessing)
-[wp] Running WP plugin...
-[wp] Warning: Missing RTE guards
-[wp] 2 goals scheduled
-[wp] [Unsuccess] typed_f_ensures_d7_div_0_x_ko (Alt-Ergo) (Cached)
-[wp] [Unsuccess] typed_f_ensures_m7_mod_0_x_ko (Alt-Ergo) (Cached)
-[wp] Proved goals:    0 / 2
-  Unsuccess:       2
-------------------------------------------------------------
- Functions                 WP     Alt-Ergo  Total   Success
-  f                         -        -        2       0.0%
-------------------------------------------------------------
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.res.oracle
similarity index 100%
rename from src/plugins/wp/tests/wp_acsl/oracle_qualif/div_mod.0.res.oracle
rename to src/plugins/wp/tests/wp_acsl/oracle_qualif/div_mod.res.oracle
diff --git a/src/plugins/wp/tests/wp_acsl/tset.i b/src/plugins/wp/tests/wp_acsl/tset.i
index 9a2cbce1d8b..c7304aa8fb2 100644
--- a/src/plugins/wp/tests/wp_acsl/tset.i
+++ b/src/plugins/wp/tests/wp_acsl/tset.i
@@ -1,5 +1,5 @@
 /* run.config_qualif
-   OPT: -wp -wp-prover Alt-Ergo
+   OPT: -wp
 */
 
 /*@
diff --git a/src/plugins/wp/tests/wp_gallery/binary-multiplication.c b/src/plugins/wp/tests/wp_gallery/binary-multiplication.c
index 64a63d80a8d..91c3d02472d 100644
--- a/src/plugins/wp/tests/wp_gallery/binary-multiplication.c
+++ b/src/plugins/wp/tests/wp_gallery/binary-multiplication.c
@@ -6,8 +6,6 @@
    OPT: -wp-rte -wp-prover=Alt-Ergo,script -wp-prop=-lack @USING_WP_SESSION@
 */
 
-// The use '-wp-prover=z3,why3:Alt-Ergo' or using Alt-Ergo 2.3.0 gives better results.
-
 typedef unsigned uint32_t ;
 typedef unsigned long long uint64_t ;
 
diff --git a/src/plugins/wp/tests/wp_plugin/abs.i b/src/plugins/wp/tests/wp_plugin/abs.i
index 160340d39d9..8e6b8f3a033 100644
--- a/src/plugins/wp/tests/wp_plugin/abs.i
+++ b/src/plugins/wp/tests/wp_plugin/abs.i
@@ -6,7 +6,7 @@
 /* run.config_qualif
  COMMENT: depends from files mentionned into "abs.driver"
  DEPS: @PTEST_DEPS@ abs.why
-   OPT: -wp -wp-driver %{dep:@PTEST_DIR@/abs.driver} -wp-prover Alt-Ergo
+   OPT: -wp -wp-driver %{dep:@PTEST_DIR@/abs.driver}
 */
 /*@ axiomatic Absolute { logic integer ABS(integer x) ; } */
 
diff --git a/src/plugins/wp/tests/wp_plugin/bit_test.c b/src/plugins/wp/tests/wp_plugin/bit_test.c
index 03c9e001851..8596c3bea92 100644
--- a/src/plugins/wp/tests/wp_plugin/bit_test.c
+++ b/src/plugins/wp/tests/wp_plugin/bit_test.c
@@ -3,7 +3,7 @@
  */
 
 /* run.config_qualif
-   OPT: -wp-driver %{dep:@PTEST_DIR@/bit_test.driver} -wp-prover why3:Alt-Ergo
+   OPT: -wp-driver %{dep:@PTEST_DIR@/bit_test.driver}
 */
 
 /*@
diff --git a/src/plugins/wp/tests/wp_plugin/fallback.i b/src/plugins/wp/tests/wp_plugin/fallback.i
index 2290dc57bd4..dc9e3482885 100644
--- a/src/plugins/wp/tests/wp_plugin/fallback.i
+++ b/src/plugins/wp/tests/wp_plugin/fallback.i
@@ -1,4 +1,5 @@
 /* run.config_qualif
+   EXIT: 1
    OPT: -wp-prover=Alt-Ergo:1.2.0
  */
 
diff --git a/src/plugins/wp/tests/wp_plugin/float_format.i b/src/plugins/wp/tests/wp_plugin/float_format.i
index 4a7f3dac8e9..0686e1ef489 100644
--- a/src/plugins/wp/tests/wp_plugin/float_format.i
+++ b/src/plugins/wp/tests/wp_plugin/float_format.i
@@ -1,5 +1,5 @@
 /* run.config_qualif
-   OPT: -wp-prover Alt-Ergo -wp-steps 5 -wp-timeout 100
+   OPT: -wp-steps 5 -wp-timeout 100
 */
 
 //@ ensures KO: \result == 0.2 + x ;
diff --git a/src/plugins/wp/tests/wp_plugin/math.i b/src/plugins/wp/tests/wp_plugin/math.i
index 891798bc632..bf12316c003 100644
--- a/src/plugins/wp/tests/wp_plugin/math.i
+++ b/src/plugins/wp/tests/wp_plugin/math.i
@@ -3,8 +3,7 @@
 */
 
 /* run.config_qualif
-   OPT: -wp-prover Alt-Ergo -wp-prop=-ko
-   OPT: -wp-prover Alt-Ergo -wp-prop=ko -wp-steps 10
+   OPT: -wp-prop=-ko
 */
 
 // --------------------------------------------------------------------------
diff --git a/src/plugins/wp/tests/wp_plugin/nosession.i b/src/plugins/wp/tests/wp_plugin/nosession.i
index eb72aff708d..5c5012bb8de 100644
--- a/src/plugins/wp/tests/wp_plugin/nosession.i
+++ b/src/plugins/wp/tests/wp_plugin/nosession.i
@@ -4,7 +4,7 @@
 /* run.config_qualif
    CMD: @frama-c@ -wp-share @PTEST_SHARE_DIR@ -wp-msg-key shell -wp-warn-key pedantic-assigns=inactive
 PLUGIN: wp,rtegen
-   OPT: -wp -wp-prover Alt-Ergo -wp-session shall_not_exists_dir -wp-cache offline -wp-no-cache-env
+   OPT: -wp -wp-session shall_not_exists_dir -wp-cache offline -wp-no-cache-env
    COMMENT: The session directory shall not be created
  */
 
diff --git a/src/plugins/wp/tests/wp_plugin/oracle/fallback.res.oracle b/src/plugins/wp/tests/wp_plugin/oracle/fallback.res.oracle
index 02f6170d68a..c31f09c80a4 100644
--- a/src/plugins/wp/tests/wp_plugin/oracle/fallback.res.oracle
+++ b/src/plugins/wp/tests/wp_plugin/oracle/fallback.res.oracle
@@ -8,7 +8,7 @@
   Function job
 ------------------------------------------------------------
 
-Goal Post-condition (file fallback.i, line 5) in 'job':
+Goal Post-condition (file fallback.i, line 6) in 'job':
 Let x = b + (b * (a - 1)).
 Assume { Type: is_sint32(a) /\ is_sint32(b) /\ is_sint32(x). }
 Prove: (a * b) = x.
diff --git a/src/plugins/wp/tests/wp_plugin/oracle/sequence.res.oracle b/src/plugins/wp/tests/wp_plugin/oracle/sequence.res.oracle
index 97cac771188..6a4ce52b61a 100644
--- a/src/plugins/wp/tests/wp_plugin/oracle/sequence.res.oracle
+++ b/src/plugins/wp/tests/wp_plugin/oracle/sequence.res.oracle
@@ -1,10 +1,10 @@
-# frama-c -wp -wp-model 'Typed (Caveat)' [...]
+# frama-c -wp [...]
 [kernel] Parsing sequence.i (no preprocessing)
 [wp] Running WP plugin...
-[kernel:annot:missing-spec] sequence.i:23: Warning: 
+[kernel:annot:missing-spec] sequence.i:13: Warning: 
   Neither code nor explicit exits and terminates for function f,
    generating default clauses. See -generated-spec-* options for more info
-[kernel:annot:missing-spec] sequence.i:29: Warning: 
+[kernel:annot:missing-spec] sequence.i:19: Warning: 
   Neither code nor explicit exits and terminates for function g,
    generating default clauses. See -generated-spec-* options for more info
 [wp] Warning: Missing RTE guards
@@ -56,27 +56,27 @@ Prove: true.
 
 ------------------------------------------------------------
 
-Goal Preservation of Invariant 'ok,id_max' (file sequence.i, line 97):
+Goal Preservation of Invariant 'ok,id_max' (file sequence.i, line 87):
 Prove: true.
 
 ------------------------------------------------------------
 
-Goal Establishment of Invariant 'ok,id_max' (file sequence.i, line 97):
+Goal Establishment of Invariant 'ok,id_max' (file sequence.i, line 87):
 Prove: true.
 
 ------------------------------------------------------------
 
-Goal Preservation of Invariant 'ok,id_min' (file sequence.i, line 96):
+Goal Preservation of Invariant 'ok,id_min' (file sequence.i, line 86):
 Prove: true.
 
 ------------------------------------------------------------
 
-Goal Establishment of Invariant 'ok,id_min' (file sequence.i, line 96):
+Goal Establishment of Invariant 'ok,id_min' (file sequence.i, line 86):
 Prove: true.
 
 ------------------------------------------------------------
 
-Goal Preservation of Invariant 'ok,inv' (file sequence.i, line 98):
+Goal Preservation of Invariant 'ok,inv' (file sequence.i, line 88):
 Let a = ([ y ] *^ i).
 Let x_1 = 1 + i.
 Assume {
@@ -107,56 +107,56 @@ Prove: ([ y ] *^ x_1) = a ^ [ y ].
 
 ------------------------------------------------------------
 
-Goal Establishment of Invariant 'ok,inv' (file sequence.i, line 98):
+Goal Establishment of Invariant 'ok,inv' (file sequence.i, line 88):
 Prove: true.
 
 ------------------------------------------------------------
 
-Goal Loop assigns (file sequence.i, line 95):
+Goal Loop assigns (file sequence.i, line 85):
 Prove: true.
 
 ------------------------------------------------------------
 
-Goal Assigns (file sequence.i, line 79) in 'loops' (1/3):
+Goal Assigns (file sequence.i, line 69) in 'loops' (1/3):
 Prove: true.
 
 ------------------------------------------------------------
 
-Goal Assigns (file sequence.i, line 79) in 'loops' (2/3):
-Effect at line 101
+Goal Assigns (file sequence.i, line 69) in 'loops' (2/3):
+Effect at line 91
 Prove: true.
 
 ------------------------------------------------------------
 
-Goal Assigns (file sequence.i, line 79) in 'loops' (3/3):
-Effect at line 101
+Goal Assigns (file sequence.i, line 69) in 'loops' (3/3):
+Effect at line 91
 Prove: true.
 
 ------------------------------------------------------------
 
-Goal Assigns (file sequence.i, line 79) in 'loops' (1/3):
+Goal Assigns (file sequence.i, line 69) in 'loops' (1/3):
 Prove: true.
 
 ------------------------------------------------------------
 
-Goal Assigns (file sequence.i, line 79) in 'loops' (2/3):
-Effect at line 101
+Goal Assigns (file sequence.i, line 69) in 'loops' (2/3):
+Effect at line 91
 Prove: true.
 
 ------------------------------------------------------------
 
-Goal Assigns (file sequence.i, line 79) in 'loops' (3/3):
-Effect at line 101
+Goal Assigns (file sequence.i, line 69) in 'loops' (3/3):
+Effect at line 91
 Prove: true.
 
 ------------------------------------------------------------
 
-Goal Decreasing of Loop variant at loop (file sequence.i, line 101):
+Goal Decreasing of Loop variant at loop (file sequence.i, line 91):
 Prove: true.
 
 ------------------------------------------------------------
 
-Goal Positivity of Loop variant at loop (file sequence.i, line 101):
+Goal Positivity of Loop variant at loop (file sequence.i, line 91):
 Prove: true.
 
 ------------------------------------------------------------
@@ -315,7 +315,7 @@ Prove: true.
 
 ------------------------------------------------------------
 
-Goal Assigns (file sequence.i, line 35) in 'no_calls':
+Goal Assigns (file sequence.i, line 25) in 'no_calls':
 Prove: true.
 
 ------------------------------------------------------------
@@ -333,12 +333,12 @@ Prove: true.
 
 ------------------------------------------------------------
 
-Goal Assigns (file sequence.i, line 54) in 'sequence':
+Goal Assigns (file sequence.i, line 44) in 'sequence':
 Prove: true.
 
 ------------------------------------------------------------
 
-Goal Assigns (file sequence.i, line 54) in 'sequence':
+Goal Assigns (file sequence.i, line 44) in 'sequence':
 Prove: true.
 
 ------------------------------------------------------------
diff --git a/src/plugins/wp/tests/wp_plugin/oracle_qualif/fallback.res.oracle b/src/plugins/wp/tests/wp_plugin/oracle_qualif/fallback.res.oracle
index af751c1e16f..757ff0c0135 100644
--- a/src/plugins/wp/tests/wp_plugin/oracle_qualif/fallback.res.oracle
+++ b/src/plugins/wp/tests/wp_plugin/oracle_qualif/fallback.res.oracle
@@ -4,14 +4,11 @@
 [wp] [Valid] Goal job_exits (Cfg) (Unreachable)
 [wp] [Valid] Goal job_terminates (Cfg) (Trivial)
 [wp] Warning: Missing RTE guards
-[wp] Warning: Prover 'Alt-Ergo:1.2.0' not found, fallback to 'Alt-Ergo:2.5.3'
-[wp] 1 goal scheduled
-[wp] [Valid] typed_job_ensures (Alt-Ergo) (Cached)
-[wp] Proved goals:    3 / 3
-  Terminating:     1
-  Unreachable:     1
-  Alt-Ergo:        1
+[wp] User Error: Prover 'Alt-Ergo:1.2.0' not found in why3.conf
+[wp] Goal typed_job_ensures : not tried
 ------------------------------------------------------------
  Functions                 WP     Alt-Ergo  Total   Success
-  job                       -        1        1       100%
+  job                       -        -        1       0.0%
 ------------------------------------------------------------
+[wp] User Error: Deferred error message was emitted during execution. See above messages for more information.
+[kernel] Plug-in wp aborted: invalid user input.
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
deleted file mode 100644
index b8ae6b5a64a..00000000000
--- a/src/plugins/wp/tests/wp_plugin/oracle_qualif/math.1.res.oracle
+++ /dev/null
@@ -1,22 +0,0 @@
-# frama-c -wp -wp-steps 10 [...]
-[kernel] Parsing math.i (no preprocessing)
-[wp] Running WP plugin...
-[wp] [Valid] Goal ko_exits (Cfg) (Unreachable)
-[wp] Warning: Missing RTE guards
-[wp] 9 goals scheduled
-[wp] [Unsuccess] typed_ko_ensures_ko_sin_asin (Alt-Ergo) (Cached)
-[wp] [Unsuccess] typed_ko_ensures_ko_cos_acos (Alt-Ergo) (Cached)
-[wp] [Unsuccess] typed_ko_ensures_ko_asin_sin (Alt-Ergo) (Cached)
-[wp] [Unsuccess] typed_ko_ensures_ko_acos_cos (Alt-Ergo) (Cached)
-[wp] [Unsuccess] typed_ko_ensures_ko_atan_tan (Alt-Ergo) (Cached)
-[wp] [Unsuccess] typed_ko_ensures_ko_log_pow (Alt-Ergo) (Cached)
-[wp] [Unsuccess] typed_ko_ensures_ko_exp_log (Alt-Ergo) (Cached)
-[wp] [Unsuccess] typed_ko_ensures_ko_exp_log_add_mul (Alt-Ergo) (Cached)
-[wp] [Unsuccess] typed_ko_ensures_ko_sqrt_pos (Alt-Ergo) (Cached)
-[wp] Proved goals:    1 / 10
-  Unreachable:     1
-  Unsuccess:       9
-------------------------------------------------------------
- Functions                 WP     Alt-Ergo  Total   Success
-  ko                        -        -        9       0.0%
-------------------------------------------------------------
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.res.oracle
similarity index 100%
rename from src/plugins/wp/tests/wp_plugin/oracle_qualif/math.0.res.oracle
rename to src/plugins/wp/tests/wp_plugin/oracle_qualif/math.res.oracle
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
deleted file mode 100644
index 31de6fd9f89..00000000000
--- a/src/plugins/wp/tests/wp_plugin/oracle_qualif/sequence.0.res.oracle
+++ /dev/null
@@ -1,69 +0,0 @@
-# frama-c -wp -wp-model 'Typed (Caveat)' [...]
-[kernel] Parsing sequence.i (no preprocessing)
-[wp] Running WP plugin...
-[kernel:annot:missing-spec] sequence.i:23: Warning: 
-  Neither code nor explicit exits and terminates for function f,
-   generating default clauses. See -generated-spec-* options for more info
-[kernel:annot:missing-spec] sequence.i:29: Warning: 
-  Neither code nor explicit exits and terminates for function g,
-   generating default clauses. See -generated-spec-* options for more info
-[wp] Warning: Missing RTE guards
-[wp] [Valid] Goal no_calls_exits (Cfg) (Unreachable)
-[wp] [Valid] Goal no_calls_terminates (Cfg) (Trivial)
-[wp] 45 goals scheduled
-[wp] [Valid] typed_caveat_no_calls_ensures_ok_m1 (Qed)
-[wp] [Valid] typed_caveat_no_calls_ensures_ok_m2 (Alt-Ergo) (Cached)
-[wp] [Valid] typed_caveat_no_calls_ensures_ok_bug_why3_n1 (Qed)
-[wp] [Valid] typed_caveat_no_calls_ensures_ok_n2 (Alt-Ergo) (Cached)
-[wp] [Valid] typed_caveat_no_calls_ensures_ok_n3 (Alt-Ergo) (Cached)
-[wp] [Valid] typed_caveat_no_calls_ensures_ok_bug_why3_n5 (Alt-Ergo) (Cached)
-[wp] [Valid] typed_caveat_no_calls_ensures_ok_bug_why3_n6 (Qed)
-[wp] [Valid] typed_caveat_no_calls_ensures_ok_bug_why3_n5_ok (Alt-Ergo) (Cached)
-[wp] [Valid] typed_caveat_no_calls_ensures_ok_bug_why3_n6_ok (Qed)
-[wp] [Valid] typed_caveat_no_calls_assigns (Qed)
-[wp] [Valid] typed_caveat_sequence_terminates (Qed)
-[wp] [Valid] typed_caveat_sequence_exits (Qed)
-[wp] [Valid] typed_caveat_sequence_assigns_exit (Qed)
-[wp] [Valid] typed_caveat_sequence_assigns_normal (Qed)
-[wp] [Valid] typed_caveat_sequence_g_called_ensures_ok_o1 (Qed)
-[wp] [Valid] typed_caveat_sequence_g_called_ensures_ok_p1 (Qed)
-[wp] [Valid] typed_caveat_sequence_g_called_ensures_ok_p2 (Qed)
-[wp] [Valid] typed_caveat_sequence_g_called_ensures_ok_p3 (Alt-Ergo) (Cached)
-[wp] [Valid] typed_caveat_sequence_g_not_called_ensures_ok_o2 (Qed)
-[wp] [Valid] typed_caveat_sequence_g_not_called_ensures_ok_q1 (Qed)
-[wp] [Valid] typed_caveat_sequence_g_not_called_ensures_ok_q2 (Qed)
-[wp] [Valid] typed_caveat_sequence_g_not_called_ensures_ok_q3 (Alt-Ergo) (Cached)
-[wp] [Valid] typed_caveat_loops_terminates (Qed)
-[wp] [Valid] typed_caveat_loops_ensures_ok_first (Qed)
-[wp] [Valid] typed_caveat_loops_ensures_ok_last (Alt-Ergo) (Cached)
-[wp] [Valid] typed_caveat_loops_exits (Qed)
-[wp] [Valid] typed_caveat_loops_loop_invariant_ok_id_max_preserved (Qed)
-[wp] [Valid] typed_caveat_loops_loop_invariant_ok_id_max_established (Qed)
-[wp] [Valid] typed_caveat_loops_loop_invariant_ok_id_min_preserved (Qed)
-[wp] [Valid] typed_caveat_loops_loop_invariant_ok_id_min_established (Qed)
-[wp] [Valid] typed_caveat_loops_loop_invariant_ok_inv_preserved (Alt-Ergo) (Cached)
-[wp] [Valid] typed_caveat_loops_loop_invariant_ok_inv_established (Qed)
-[wp] [Valid] typed_caveat_loops_loop_assigns (Qed)
-[wp] [Valid] typed_caveat_loops_assigns_exit_part1 (Qed)
-[wp] [Valid] typed_caveat_loops_assigns_exit_part2 (Qed)
-[wp] [Valid] typed_caveat_loops_assigns_exit_part3 (Qed)
-[wp] [Valid] typed_caveat_loops_assigns_normal_part1 (Qed)
-[wp] [Valid] typed_caveat_loops_assigns_normal_part2 (Qed)
-[wp] [Valid] typed_caveat_loops_assigns_normal_part3 (Qed)
-[wp] [Valid] typed_caveat_loops_loop_variant_decrease (Qed)
-[wp] [Valid] typed_caveat_loops_loop_variant_positive (Qed)
-[wp] [Valid] typed_caveat_loops_g_called_ensures_ok_u1 (Qed)
-[wp] [Valid] typed_caveat_loops_g_called_ensures_ok_u2 (Qed)
-[wp] [Valid] typed_caveat_loops_g_not_called_ensures_ok_v1 (Alt-Ergo) (Cached)
-[wp] [Valid] typed_caveat_loops_g_not_called_ensures_ok_v2 (Alt-Ergo) (Cached)
-[wp] Proved goals:   47 / 47
-  Terminating:     1
-  Unreachable:     1
-  Qed:            34
-  Alt-Ergo:       11
-------------------------------------------------------------
- Functions                 WP     Alt-Ergo  Total   Success
-  no_calls                  5        5       10       100%
-  sequence                 10        2       12       100%
-  loops                    19        4       23       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
deleted file mode 100644
index ac58a64fe0f..00000000000
--- a/src/plugins/wp/tests/wp_plugin/oracle_qualif/sequence.1.res.oracle
+++ /dev/null
@@ -1,64 +0,0 @@
-# frama-c -wp -wp-model 'Typed (Caveat)' [...]
-[kernel] Parsing sequence.i (no preprocessing)
-[wp] Running WP plugin...
-[kernel:annot:missing-spec] sequence.i:23: Warning: 
-  Neither code nor explicit exits and terminates for function f,
-   generating default clauses. See -generated-spec-* options for more info
-[kernel:annot:missing-spec] sequence.i:29: Warning: 
-  Neither code nor explicit exits and terminates for function g,
-   generating default clauses. See -generated-spec-* options for more info
-[wp] Warning: Missing RTE guards
-[wp] [Valid] Goal no_calls_exits (Cfg) (Unreachable)
-[wp] [Valid] Goal no_calls_terminates (Cfg) (Trivial)
-[wp] 40 goals scheduled
-[wp] [Valid] typed_caveat_no_calls_ensures_ok_m1 (Qed)
-[wp] [Valid] typed_caveat_no_calls_ensures_ok_m2 (Alt-Ergo) (Cached)
-[wp] [Valid] typed_caveat_no_calls_ensures_ok_n2 (Alt-Ergo) (Cached)
-[wp] [Valid] typed_caveat_no_calls_ensures_ok_n3 (Alt-Ergo) (Cached)
-[wp] [Valid] typed_caveat_no_calls_assigns (Qed)
-[wp] [Valid] typed_caveat_sequence_terminates (Qed)
-[wp] [Valid] typed_caveat_sequence_exits (Qed)
-[wp] [Valid] typed_caveat_sequence_assigns_exit (Qed)
-[wp] [Valid] typed_caveat_sequence_assigns_normal (Qed)
-[wp] [Valid] typed_caveat_sequence_g_called_ensures_ok_o1 (Qed)
-[wp] [Valid] typed_caveat_sequence_g_called_ensures_ok_p1 (Qed)
-[wp] [Valid] typed_caveat_sequence_g_called_ensures_ok_p2 (Qed)
-[wp] [Valid] typed_caveat_sequence_g_called_ensures_ok_p3 (Alt-Ergo) (Cached)
-[wp] [Valid] typed_caveat_sequence_g_not_called_ensures_ok_o2 (Qed)
-[wp] [Valid] typed_caveat_sequence_g_not_called_ensures_ok_q1 (Qed)
-[wp] [Valid] typed_caveat_sequence_g_not_called_ensures_ok_q2 (Qed)
-[wp] [Valid] typed_caveat_sequence_g_not_called_ensures_ok_q3 (Alt-Ergo) (Cached)
-[wp] [Valid] typed_caveat_loops_terminates (Qed)
-[wp] [Valid] typed_caveat_loops_ensures_ok_first (Qed)
-[wp] [Valid] typed_caveat_loops_ensures_ok_last (Alt-Ergo) (Cached)
-[wp] [Valid] typed_caveat_loops_exits (Qed)
-[wp] [Valid] typed_caveat_loops_loop_invariant_ok_id_max_preserved (Qed)
-[wp] [Valid] typed_caveat_loops_loop_invariant_ok_id_max_established (Qed)
-[wp] [Valid] typed_caveat_loops_loop_invariant_ok_id_min_preserved (Qed)
-[wp] [Valid] typed_caveat_loops_loop_invariant_ok_id_min_established (Qed)
-[wp] [Valid] typed_caveat_loops_loop_invariant_ok_inv_preserved (Alt-Ergo) (Cached)
-[wp] [Valid] typed_caveat_loops_loop_invariant_ok_inv_established (Qed)
-[wp] [Valid] typed_caveat_loops_loop_assigns (Qed)
-[wp] [Valid] typed_caveat_loops_assigns_exit_part1 (Qed)
-[wp] [Valid] typed_caveat_loops_assigns_exit_part2 (Qed)
-[wp] [Valid] typed_caveat_loops_assigns_exit_part3 (Qed)
-[wp] [Valid] typed_caveat_loops_assigns_normal_part1 (Qed)
-[wp] [Valid] typed_caveat_loops_assigns_normal_part2 (Qed)
-[wp] [Valid] typed_caveat_loops_assigns_normal_part3 (Qed)
-[wp] [Valid] typed_caveat_loops_loop_variant_decrease (Qed)
-[wp] [Valid] typed_caveat_loops_loop_variant_positive (Qed)
-[wp] [Valid] typed_caveat_loops_g_called_ensures_ok_u1 (Qed)
-[wp] [Valid] typed_caveat_loops_g_called_ensures_ok_u2 (Qed)
-[wp] [Valid] typed_caveat_loops_g_not_called_ensures_ok_v1 (Alt-Ergo) (Cached)
-[wp] [Valid] typed_caveat_loops_g_not_called_ensures_ok_v2 (Alt-Ergo) (Cached)
-[wp] Proved goals:   42 / 42
-  Terminating:     1
-  Unreachable:     1
-  Qed:            31
-  Alt-Ergo:        9
-------------------------------------------------------------
- Functions                 WP     Alt-Ergo  Total   Success
-  no_calls                  2        3        5       100%
-  sequence                 10        2       12       100%
-  loops                    19        4       23       100%
-------------------------------------------------------------
diff --git a/src/plugins/wp/tests/wp_plugin/oracle_qualif/sequence.2.res.oracle b/src/plugins/wp/tests/wp_plugin/oracle_qualif/sequence.2.res.oracle
deleted file mode 100644
index 6a23c1a83b4..00000000000
--- a/src/plugins/wp/tests/wp_plugin/oracle_qualif/sequence.2.res.oracle
+++ /dev/null
@@ -1,6 +0,0 @@
-# frama-c -wp -wp-model 'Typed (Caveat)' -wp-steps 50 [...]
-[kernel] Parsing sequence.i (no preprocessing)
-[wp] Running WP plugin...
-[wp] Warning: Missing RTE guards
-[wp] Warning: No goal generated
-------------------------------------------------------------
diff --git a/src/plugins/wp/tests/wp_plugin/oracle_qualif/sequence.res.oracle b/src/plugins/wp/tests/wp_plugin/oracle_qualif/sequence.res.oracle
new file mode 100644
index 00000000000..15634da6162
--- /dev/null
+++ b/src/plugins/wp/tests/wp_plugin/oracle_qualif/sequence.res.oracle
@@ -0,0 +1,69 @@
+# frama-c -wp [...]
+[kernel] Parsing sequence.i (no preprocessing)
+[wp] Running WP plugin...
+[kernel:annot:missing-spec] sequence.i:13: Warning: 
+  Neither code nor explicit exits and terminates for function f,
+   generating default clauses. See -generated-spec-* options for more info
+[kernel:annot:missing-spec] sequence.i:19: Warning: 
+  Neither code nor explicit exits and terminates for function g,
+   generating default clauses. See -generated-spec-* options for more info
+[wp] Warning: Missing RTE guards
+[wp] [Valid] Goal no_calls_exits (Cfg) (Unreachable)
+[wp] [Valid] Goal no_calls_terminates (Cfg) (Trivial)
+[wp] 45 goals scheduled
+[wp] [Valid] typed_no_calls_ensures_ok_m1 (Qed)
+[wp] [Valid] typed_no_calls_ensures_ok_m2 (Alt-Ergo) (Cached)
+[wp] [Valid] typed_no_calls_ensures_ok_bug_why3_n1 (Qed)
+[wp] [Valid] typed_no_calls_ensures_ok_n2 (Alt-Ergo) (Cached)
+[wp] [Valid] typed_no_calls_ensures_ok_n3 (Alt-Ergo) (Cached)
+[wp] [Valid] typed_no_calls_ensures_ok_bug_why3_n5 (Alt-Ergo) (Cached)
+[wp] [Valid] typed_no_calls_ensures_ok_bug_why3_n6 (Qed)
+[wp] [Valid] typed_no_calls_ensures_ok_bug_why3_n5_ok (Alt-Ergo) (Cached)
+[wp] [Valid] typed_no_calls_ensures_ok_bug_why3_n6_ok (Qed)
+[wp] [Valid] typed_no_calls_assigns (Qed)
+[wp] [Valid] typed_sequence_terminates (Qed)
+[wp] [Valid] typed_sequence_exits (Qed)
+[wp] [Valid] typed_sequence_assigns_exit (Qed)
+[wp] [Valid] typed_sequence_assigns_normal (Qed)
+[wp] [Valid] typed_sequence_g_called_ensures_ok_o1 (Qed)
+[wp] [Valid] typed_sequence_g_called_ensures_ok_p1 (Qed)
+[wp] [Valid] typed_sequence_g_called_ensures_ok_p2 (Qed)
+[wp] [Valid] typed_sequence_g_called_ensures_ok_p3 (Alt-Ergo) (Cached)
+[wp] [Valid] typed_sequence_g_not_called_ensures_ok_o2 (Qed)
+[wp] [Valid] typed_sequence_g_not_called_ensures_ok_q1 (Qed)
+[wp] [Valid] typed_sequence_g_not_called_ensures_ok_q2 (Qed)
+[wp] [Valid] typed_sequence_g_not_called_ensures_ok_q3 (Alt-Ergo) (Cached)
+[wp] [Valid] typed_loops_terminates (Qed)
+[wp] [Valid] typed_loops_ensures_ok_first (Qed)
+[wp] [Valid] typed_loops_ensures_ok_last (Alt-Ergo) (Cached)
+[wp] [Valid] typed_loops_exits (Qed)
+[wp] [Valid] typed_loops_loop_invariant_ok_id_max_preserved (Qed)
+[wp] [Valid] typed_loops_loop_invariant_ok_id_max_established (Qed)
+[wp] [Valid] typed_loops_loop_invariant_ok_id_min_preserved (Qed)
+[wp] [Valid] typed_loops_loop_invariant_ok_id_min_established (Qed)
+[wp] [Valid] typed_loops_loop_invariant_ok_inv_preserved (Alt-Ergo) (Cached)
+[wp] [Valid] typed_loops_loop_invariant_ok_inv_established (Qed)
+[wp] [Valid] typed_loops_loop_assigns (Qed)
+[wp] [Valid] typed_loops_assigns_exit_part1 (Qed)
+[wp] [Valid] typed_loops_assigns_exit_part2 (Qed)
+[wp] [Valid] typed_loops_assigns_exit_part3 (Qed)
+[wp] [Valid] typed_loops_assigns_normal_part1 (Qed)
+[wp] [Valid] typed_loops_assigns_normal_part2 (Qed)
+[wp] [Valid] typed_loops_assigns_normal_part3 (Qed)
+[wp] [Valid] typed_loops_loop_variant_decrease (Qed)
+[wp] [Valid] typed_loops_loop_variant_positive (Qed)
+[wp] [Valid] typed_loops_g_called_ensures_ok_u1 (Qed)
+[wp] [Valid] typed_loops_g_called_ensures_ok_u2 (Qed)
+[wp] [Valid] typed_loops_g_not_called_ensures_ok_v1 (Alt-Ergo) (Cached)
+[wp] [Valid] typed_loops_g_not_called_ensures_ok_v2 (Alt-Ergo) (Cached)
+[wp] Proved goals:   47 / 47
+  Terminating:     1
+  Unreachable:     1
+  Qed:            34
+  Alt-Ergo:       11
+------------------------------------------------------------
+ Functions                 WP     Alt-Ergo  Total   Success
+  no_calls                  5        5       10       100%
+  sequence                 10        2       12       100%
+  loops                    19        4       23       100%
+------------------------------------------------------------
diff --git a/src/plugins/wp/tests/wp_plugin/sequence.i b/src/plugins/wp/tests/wp_plugin/sequence.i
index 6d79c4df6a6..f69ebca6068 100644
--- a/src/plugins/wp/tests/wp_plugin/sequence.i
+++ b/src/plugins/wp/tests/wp_plugin/sequence.i
@@ -1,13 +1,3 @@
-/* run.config
-   OPT: -wp-model Caveat
- */
-
-/* run.config_qualif
-   OPT: -wp -wp-model Caveat -wp-prover Alt-Ergo -wp-prop="-ko"
-   OPT: -wp -wp-model Caveat -wp-prover why3:Alt-Ergo -wp-prop="-ko,-bug_why3"
-   OPT: -wp -wp-model Caveat -wp-prover Alt-Ergo -wp-prop="ko" -wp-steps 50
-*/
-
 //@ ghost int call_seq;
 /*@ axiomatic Call {
   @   logic \list<integer> call_obs{L} reads call_seq ;
-- 
GitLab