diff options
author | 2009-06-11 00:51:32 +0000 | |
---|---|---|
committer | 2009-06-11 00:51:32 +0000 | |
commit | ec26ef7bdee30f93b53d53171fc881f8413cb7c1 (patch) | |
tree | 37087c44f2d371f34157c64d9da5bd00f5272db8 /tactics/class_tactics.ml4 | |
parent | b86677ef8d05114a48f0d7fa53e36a71c71fa4b3 (diff) |
When typing a non-dependent arrow, do not put the (anonymous) variable
in the context to avoid it being abstracted over in potential evars
occuring in the codomain, which can prevent unifications.
Add [intro] to the typeclasses eauto and fix [make_resolve_hyp] to
properly normalize types w.r.t. evars before searching for a class in an
hypothesis.
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@12182 85f007b7-540e-0410-9357-904b9bb8a0f7
Diffstat (limited to 'tactics/class_tactics.ml4')
-rw-r--r-- | tactics/class_tactics.ml4 | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/tactics/class_tactics.ml4 b/tactics/class_tactics.ml4 index 6fdd8c282..8f548210b 100644 --- a/tactics/class_tactics.ml4 +++ b/tactics/class_tactics.ml4 @@ -335,6 +335,7 @@ let is_transparent_gr (ids, csts) = function | IndRef _ | ConstructRef _ -> false let make_resolve_hyp env sigma st flags pri (id, _, cty) = + let cty = Evarutil.nf_evar sigma cty in let ctx, ar = decompose_prod cty in let keep = match kind_of_term (fst (decompose_app ar)) with @@ -379,7 +380,7 @@ let eauto hints g = {it = List.map fst goals; sigma = s}, valid s let real_eauto st hints p evd = - let tac = fix (hints_tac hints) in + let tac = fix (or_tac intro_tac (hints_tac hints)) in let rec aux evd = match run_on_evars ~st p evd tac with | None -> evd |