diff options
| author | herbelin | 2010-09-17 16:02:50 +0000 |
|---|---|---|
| committer | herbelin | 2010-09-17 16:02:50 +0000 |
| commit | 84aaa74ff9537dfdfc214ab60f8acf42466878b1 (patch) | |
| tree | 6fe6ad11a592f51385f4f82c747c9e08b2929584 /tactics | |
| parent | 2a35022f6e0ed8b5a2b2fce5077104cfa6cea1b3 (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.ml | 4 | ||||
| -rw-r--r-- | tactics/rewrite.ml4 | 10 |
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' |
