aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar puech <puech@85f007b7-540e-0410-9357-904b9bb8a0f7>2011-07-29 14:24:58 +0000
committerGravatar puech <puech@85f007b7-540e-0410-9357-904b9bb8a0f7>2011-07-29 14:24:58 +0000
commitc2d365117bc779b77e43ad150e9db7189b76b3a8 (patch)
tree946e64802bf6d1144d4b37adc38cbc3cd119545b
parent13b78f7cad3cf38ff7c3083494e680a695a54d79 (diff)
Tactics: generic equality on constr replaced by eq_constr
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@14321 85f007b7-540e-0410-9357-904b9bb8a0f7
-rw-r--r--lib/util.ml7
-rw-r--r--lib/util.mli1
-rw-r--r--tactics/tactics.ml5
3 files changed, 11 insertions, 2 deletions
diff --git a/lib/util.ml b/lib/util.ml
index 76d9c6728..67ff2a501 100644
--- a/lib/util.ml
+++ b/lib/util.ml
@@ -399,6 +399,13 @@ let rec list_compare cmp l1 l2 =
| 0 -> list_compare cmp l1 l2
| c -> c)
+let rec list_equal cmp l1 l2 =
+ match l1, l2 with
+ | [], [] -> true
+ | x1 :: l1, x2 :: l2 ->
+ cmp x1 x2 && list_equal cmp l1 l2
+ | _ -> false
+
let list_intersect l1 l2 =
List.filter (fun x -> List.mem x l2) l1
diff --git a/lib/util.mli b/lib/util.mli
index baa116489..458eb1d05 100644
--- a/lib/util.mli
+++ b/lib/util.mli
@@ -116,6 +116,7 @@ val ascii_of_ident : string -> string
(** {6 Lists. } *)
val list_compare : ('a -> 'a -> int) -> 'a list -> 'a list -> int
+val list_equal : ('a -> 'a -> bool) -> 'a list -> 'a list -> bool
val list_add_set : 'a -> 'a list -> 'a list
val list_eq_set : 'a list -> 'a list -> bool
val list_intersect : 'a list -> 'a list -> 'a list
diff --git a/tactics/tactics.ml b/tactics/tactics.ml
index 6b67a6d60..3ad89c825 100644
--- a/tactics/tactics.ml
+++ b/tactics/tactics.ml
@@ -2710,8 +2710,9 @@ let compute_scheme_signature scheme names_info ind_type_guess =
let ccl_arg_ok = is_pred (p + scheme.nargs + 1) f = IndArg in
let ind_is_ok =
- list_lastn scheme.nargs indargs
- = extended_rel_list 0 scheme.args in
+ list_equal eq_constr
+ (list_lastn scheme.nargs indargs)
+ (extended_rel_list 0 scheme.args) in
if not (ccl_arg_ok & ind_is_ok) then
error_ind_scheme "the conclusion of";
[]