aboutsummaryrefslogtreecommitdiff
path: root/tactics
diff options
context:
space:
mode:
authorherbelin2010-09-17 16:02:50 +0000
committerherbelin2010-09-17 16:02:50 +0000
commit84aaa74ff9537dfdfc214ab60f8acf42466878b1 (patch)
tree6fe6ad11a592f51385f4f82c747c9e08b2929584 /tactics
parent2a35022f6e0ed8b5a2b2fce5077104cfa6cea1b3 (diff)
In the computation of missing arguments for apply, accept that the
user either gives all missing arguments not dependent in the concl or all missing arguments not *recursively* dependent in the concl (as introduced by commit 13367). In practice, this means that "apply f_equal with A" remains allowed even though the new, recursive, analysis detects that all arguments of f_equal are inferable, including the first type argument (which is inferable from the knowledge of the function). Sized the opportunity to better explain the behavior of clenv_dependent. Also made minor code simplification. git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@13426 85f007b7-540e-0410-9357-904b9bb8a0f7
Diffstat (limited to 'tactics')
-rw-r--r--tactics/equality.ml4
-rw-r--r--tactics/rewrite.ml410
2 files changed, 3 insertions, 11 deletions
diff --git a/tactics/equality.ml b/tactics/equality.ml
index 9e716aae51..a4e2b510fd 100644
--- a/tactics/equality.ml
+++ b/tactics/equality.ml
@@ -103,9 +103,7 @@ let instantiate_lemma_all env sigma gl c ty l l2r concl =
| _ -> error "The term provided is not an applied relation." in
let others,(c1,c2) = split_last_two args in
let try_occ (evd', c') =
- let cl' = {eqclause with evd = evd'} in
- let mvs = clenv_dependent false cl' in
- clenv_pose_metas_as_evars cl' mvs
+ clenv_pose_dependent_evars true {eqclause with evd = evd'}
in
let occs =
Unification.w_unify_to_subterm_all ~flags:rewrite_unif_flags env
diff --git a/tactics/rewrite.ml4 b/tactics/rewrite.ml4
index 0e9281a21d..4524cf0dae 100644
--- a/tactics/rewrite.ml4
+++ b/tactics/rewrite.ml4
@@ -349,10 +349,7 @@ let unify_eqn env sigma hypinfo t =
(* For Ring essentially, only when doing setoid_rewrite *)
clenv_unify allowK ~flags:rewrite2_unif_flags CONV left t cl
in
- let env' =
- let mvs = clenv_dependent false env' in
- clenv_pose_metas_as_evars env' mvs
- in
+ let env' = Clenvtac.clenv_pose_dependent_evars true env' in
let evd' = Typeclasses.resolve_typeclasses ~fail:true env'.env env'.evd in
let env' = { env' with evd = evd' } in
let nf c = Evarutil.nf_evar evd' (Clenv.clenv_nf_meta env' c) in
@@ -1552,10 +1549,7 @@ let unification_rewrite l2r c1 c2 cl car rel but gl =
in
let evd' = Typeclasses.resolve_typeclasses ~fail:false env evd' in
let cl' = {cl with evd = evd'} in
- let cl' =
- let mvs = clenv_dependent false cl' in
- clenv_pose_metas_as_evars cl' mvs
- in
+ let cl' = Clenvtac.clenv_pose_dependent_evars true cl' in
let nf c = Evarutil.nf_evar ( cl'.evd) (Clenv.clenv_nf_meta cl' c) in
let c1 = if l2r then nf c' else nf c1
and c2 = if l2r then nf c2 else nf c'