aboutsummaryrefslogtreecommitdiffhomepage
path: root/pretyping/coercion.ml
diff options
context:
space:
mode:
authorGravatar herbelin <herbelin@85f007b7-540e-0410-9357-904b9bb8a0f7>2001-09-14 12:49:07 +0000
committerGravatar herbelin <herbelin@85f007b7-540e-0410-9357-904b9bb8a0f7>2001-09-14 12:49:07 +0000
commitb3b2bbf7a7650ef6b800b6629a1202520d95b9d4 (patch)
tree01dee32be937f6626d23fdd0175180fd0daed200 /pretyping/coercion.ml
parent8875457d54bf5867723d85a6ffb451c4fbc4f188 (diff)
L'instantiation des evars quand un produit ou une sorte étaient attendus n'était pas fait
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@1966 85f007b7-540e-0410-9357-904b9bb8a0f7
Diffstat (limited to 'pretyping/coercion.ml')
-rw-r--r--pretyping/coercion.ml8
1 files changed, 8 insertions, 0 deletions
diff --git a/pretyping/coercion.ml b/pretyping/coercion.ml
index 5bbd39348..84a648341 100644
--- a/pretyping/coercion.ml
+++ b/pretyping/coercion.ml
@@ -66,6 +66,10 @@ let inh_app_fun env isevars j =
let t = whd_betadeltaiota env (evars_of isevars) j.uj_type in
match kind_of_term t with
| IsProd (_,_,_) -> j
+ | IsEvar ev when not (is_defined_evar isevars ev) ->
+ let (sigma',t) = define_evar_as_arrow (evars_of isevars) ev in
+ evars_reset_evd sigma' isevars;
+ { uj_val = j.uj_val; uj_type = t }
| _ ->
(try
let t,i1 = class_of1 env (evars_of isevars) j.uj_type in
@@ -85,6 +89,10 @@ let inh_coerce_to_sort env isevars j =
let typ = whd_betadeltaiota env (evars_of isevars) j.uj_type in
match kind_of_term typ with
| IsSort s -> { utj_val = j.uj_val; utj_type = s }
+ | IsEvar ev when not (is_defined_evar isevars ev) ->
+ let (sigma', s) = define_evar_as_sort (evars_of isevars) ev in
+ evars_reset_evd sigma' isevars;
+ { utj_val = j.uj_val; utj_type = s }
| _ ->
let j1 = inh_tosort_force env isevars j in
type_judgment env (evars_of isevars) j1