aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorherbelin2011-03-05 16:42:16 +0000
committerherbelin2011-03-05 16:42:16 +0000
commit627a69094f6126aeb1d959b6f610e865ebde8a73 (patch)
treea6c0b3dbf4dfc6617f99638805f0d9a2f1423a2e
parente93656966d0ba1598f0a6d8b8e21a43c1ec73371 (diff)
Instantiate evar by a lambda when "?n args" has to unify with Prod
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@13880 85f007b7-540e-0410-9357-904b9bb8a0f7
-rw-r--r--pretyping/evarutil.ml5
1 files changed, 4 insertions, 1 deletions
diff --git a/pretyping/evarutil.ml b/pretyping/evarutil.ml
index 098d0d587a..0da6c39bee 100644
--- a/pretyping/evarutil.ml
+++ b/pretyping/evarutil.ml
@@ -1532,10 +1532,13 @@ let split_tycon loc env evd tycon =
let t = whd_betadeltaiota env evd c in
match kind_of_term t with
| Prod (na,dom,rng) -> evd, (na, dom, rng)
- | Evar ev when not (Evd.is_defined_evar evd ev) ->
+ | Evar ev (* ev is undefined because of whd_betadeltaiota *) ->
let (evd',prod) = define_evar_as_product evd ev in
let (_,dom,rng) = destProd prod in
evd',(Anonymous, dom, rng)
+ | App (c,args) when isEvar c ->
+ let (evd',lam) = define_evar_as_lambda evd (destEvar c) in
+ real_split evd' (mkApp (lam,args))
| _ -> error_not_product_loc loc env evd c
in
match tycon with