diff options
author | 2011-07-29 14:24:58 +0000 | |
---|---|---|
committer | 2011-07-29 14:24:58 +0000 | |
commit | c2d365117bc779b77e43ad150e9db7189b76b3a8 (patch) | |
tree | 946e64802bf6d1144d4b37adc38cbc3cd119545b | |
parent | 13b78f7cad3cf38ff7c3083494e680a695a54d79 (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.ml | 7 | ||||
-rw-r--r-- | lib/util.mli | 1 | ||||
-rw-r--r-- | tactics/tactics.ml | 5 |
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"; [] |