aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthieu Sozeau2016-10-26 18:31:03 +0200
committerMatthieu Sozeau2016-11-03 16:26:39 +0100
commitb57c7005d81b35b2ae6c45e6ac3088a73b3c43b2 (patch)
treef62902bf21e7b59a4a544baa0ce990fb16223807
parentd6fe6773c959493ed97108e1032b1bd8c1e78081 (diff)
Fix Typeclasses eauto := bfs.
-rw-r--r--ltac/g_class.ml413
-rw-r--r--tactics/class_tactics.ml6
-rw-r--r--tactics/class_tactics.mli4
3 files changed, 22 insertions, 1 deletions
diff --git a/ltac/g_class.ml4 b/ltac/g_class.ml4
index 18df596eb8..1adf197d6b 100644
--- a/ltac/g_class.ml4
+++ b/ltac/g_class.ml4
@@ -44,11 +44,22 @@ ARGUMENT EXTEND debug TYPED AS bool PRINTED BY pr_debug
| [ ] -> [ false ]
END
+let pr_search_strategy _prc _prlc _prt = function
+ | Dfs -> Pp.str "dfs"
+ | Bfs -> Pp.str "bfs"
+
+ARGUMENT EXTEND eauto_search_strategy PRINTED BY pr_search_strategy
+| [ "bfs" ] -> [ Bfs ]
+| [ "dfs" ] -> [ Dfs ]
+| [ ] -> [ Dfs ]
+END
+
(* true = All transparent, false = Opaque if possible *)
VERNAC COMMAND EXTEND Typeclasses_Settings CLASSIFIED AS SIDEFF
- | [ "Typeclasses" "eauto" ":=" debug(d) int_opt(depth) ] -> [
+ | [ "Typeclasses" "eauto" ":=" debug(d) eauto_search_strategy(s) int_opt(depth) ] -> [
set_typeclasses_debug d;
+ set_typeclasses_strategy s;
set_typeclasses_depth depth
]
END
diff --git a/tactics/class_tactics.ml b/tactics/class_tactics.ml
index da91674f5d..c1ba645beb 100644
--- a/tactics/class_tactics.ml
+++ b/tactics/class_tactics.ml
@@ -181,6 +181,12 @@ let set_typeclasses_depth =
optread = get_typeclasses_depth;
optwrite = set_typeclasses_depth; }
+type search_strategy = Dfs | Bfs
+
+let set_typeclasses_strategy = function
+ | Dfs -> set_typeclasses_iterative_deepening true
+ | Bfs -> set_typeclasses_iterative_deepening false
+
let pr_ev evs ev =
Printer.pr_constr_env (Goal.V82.env evs ev) evs
(Evarutil.nf_evar evs (Goal.V82.concl evs ev))
diff --git a/tactics/class_tactics.mli b/tactics/class_tactics.mli
index 8db264ad95..565415a95e 100644
--- a/tactics/class_tactics.mli
+++ b/tactics/class_tactics.mli
@@ -20,6 +20,10 @@ val get_typeclasses_debug : unit -> bool
val set_typeclasses_depth : int option -> unit
val get_typeclasses_depth : unit -> int option
+type search_strategy = Dfs | Bfs
+
+val set_typeclasses_strategy : search_strategy -> unit
+
val typeclasses_eauto : ?only_classes:bool -> ?st:transparent_state ->
depth:(Int.t option) ->
Hints.hint_db_name list -> unit Proofview.tactic