diff options
author | herbelin <herbelin@85f007b7-540e-0410-9357-904b9bb8a0f7> | 2008-02-13 10:37:11 +0000 |
---|---|---|
committer | herbelin <herbelin@85f007b7-540e-0410-9357-904b9bb8a0f7> | 2008-02-13 10:37:11 +0000 |
commit | cc12224f791a011a9e495cb3dbd35956abb7ed0d (patch) | |
tree | 97ed84679a662452e3faf9b6407cd0947b29326c /pretyping | |
parent | a252a5d44a7793ae8ed9accf582a27dcdbd1721d (diff) |
Correction de ce qui semble être un petit bug dans la gestion de la
marge de manoeuvre vis a vis de eta dans l'unification : la convention
est qu'on donne la forme eta-reduite avec l'indication du nombre
d'expansions autorisées mais ce nombre était incorrect pour
l'unification pattern de w_unify.
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@10556 85f007b7-540e-0410-9357-904b9bb8a0f7
Diffstat (limited to 'pretyping')
-rw-r--r-- | pretyping/unification.ml | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/pretyping/unification.ml b/pretyping/unification.ml index cac80301f..74024779a 100644 --- a/pretyping/unification.ml +++ b/pretyping/unification.ml @@ -87,8 +87,10 @@ let rec subst_meta_instances bl c = let solve_pattern_eqn_array env f l c (metasubst,evarsubst) = match kind_of_term f with | Meta k -> - let pb = (ConvUpToEta (Array.length l),TypeNotProcessed) in - (k,solve_pattern_eqn env (Array.to_list l) c,pb)::metasubst,evarsubst + let c = solve_pattern_eqn env (Array.to_list l) c in + let n = Array.length l - List.length (fst (decompose_lam c)) in + let pb = (ConvUpToEta n,TypeNotProcessed) in + (k,c,pb)::metasubst,evarsubst | Evar ev -> (* Currently unused: incompatible with eauto/eassumption backtracking *) metasubst,(ev,solve_pattern_eqn env (Array.to_list l) c)::evarsubst |