diff options
| author | herbelin | 2011-03-05 16:42:16 +0000 |
|---|---|---|
| committer | herbelin | 2011-03-05 16:42:16 +0000 |
| commit | 627a69094f6126aeb1d959b6f610e865ebde8a73 (patch) | |
| tree | a6c0b3dbf4dfc6617f99638805f0d9a2f1423a2e | |
| parent | e93656966d0ba1598f0a6d8b8e21a43c1ec73371 (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.ml | 5 |
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 |
