From 6342c4822b2bc435995bfcec6b82e3762d84c331 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Loi=CC=88c=20Correnson?= <loic.correnson@cea.fr> Date: Tue, 6 Oct 2020 15:05:24 +0200 Subject: [PATCH] [wp/gui] filter mainstream provers --- src/plugins/wp/GuiConfig.ml | 27 ++++++++++++++++++++------- src/plugins/wp/Why3Provers.ml | 1 + src/plugins/wp/Why3Provers.mli | 1 + 3 files changed, 22 insertions(+), 7 deletions(-) diff --git a/src/plugins/wp/GuiConfig.ml b/src/plugins/wp/GuiConfig.ml index 3a286db188b..4e28f2e8957 100644 --- a/src/plugins/wp/GuiConfig.ml +++ b/src/plugins/wp/GuiConfig.ml @@ -34,13 +34,17 @@ class provers = initializer begin (** select automatically the provers set on the command line *) - let cmdline = Wp_parameters.Provers.get () in + let cmdline = + match Wp_parameters.Provers.get () with + | [] -> [ "alt-ergo" ] + | prvs -> prvs + in let selection = List.fold_left (fun acc e -> match Why3Provers.find_opt e with | None -> acc | Some p -> S.add p acc) - S.empty cmdline + S.empty cmdline in self#set selection ; end @@ -62,13 +66,14 @@ class dp_chooser let array = new Wpane.warray () in object(self) + val mutable mainstream = true val mutable selected = M.empty method private enable dp e = selected <- M.add dp e selected method private lookup dp = - M.find dp selected + try M.find dp selected with Not_found -> false method private entry dp = let text = Why3Provers.title dp in @@ -91,9 +96,15 @@ class dp_chooser array#update () ; end - method private detect () = + method private provers = + let filter p = + self#lookup p || not mainstream || Why3Provers.is_mainstream p + in S.filter filter (Why3Provers.provers_set ()) + + method private filter () = begin - self#configure (Why3Provers.provers_set ()); + mainstream <- not mainstream ; + self#configure self#provers ; end method private apply () = @@ -105,7 +116,8 @@ class dp_chooser selected) method run () = - let dps = Why3Provers.provers_set () in + selected <- M.empty ; + let dps = self#provers in let sel = provers#get in selected <- M.merge (fun _ avail enab -> @@ -119,7 +131,8 @@ class dp_chooser initializer begin - dialog#button ~action:(`ACTION self#detect) ~label:"Detect Provers" () ; + dialog#button ~action:(`ACTION self#filter) ~label:"Filter" + ~tooltip:"Switch to main stream / alternative solvers" () ; dialog#button ~action:(`CANCEL) ~label:"Cancel" () ; dialog#button ~action:(`APPLY) ~label:"Apply" () ; array#set_entry self#entry ; diff --git a/src/plugins/wp/Why3Provers.ml b/src/plugins/wp/Why3Provers.ml index 46a1f714ab5..215d8912e50 100644 --- a/src/plugins/wp/Why3Provers.ml +++ b/src/plugins/wp/Why3Provers.ml @@ -94,6 +94,7 @@ let print_wp s = let title p = Pretty_utils.sfprintf "%a" Why3.Whyconf.print_prover p let name p = p.Why3.Whyconf.prover_name let compare = Why3.Whyconf.Prover.compare +let is_mainstream p = p.Why3.Whyconf.prover_altern = "" let provers () = Why3.Whyconf.Mprover.keys (Why3.Whyconf.get_provers (config ())) diff --git a/src/plugins/wp/Why3Provers.mli b/src/plugins/wp/Why3Provers.mli index 4875dbcc97b..1098dc55906 100644 --- a/src/plugins/wp/Why3Provers.mli +++ b/src/plugins/wp/Why3Provers.mli @@ -41,6 +41,7 @@ val compare : t -> t -> int val provers : unit -> t list val provers_set : unit -> Why3.Whyconf.Sprover.t val is_available : t -> bool +val is_mainstream : t -> bool val has_shortcut : t -> string -> bool (**************************************************************************) -- GitLab