aboutsummaryrefslogtreecommitdiffhomepage
path: root/pretyping/evarsolve.ml
diff options
context:
space:
mode:
authorGravatar Matthieu Sozeau <matthieu.sozeau@inria.fr>2014-10-01 23:32:12 +0200
committerGravatar Matthieu Sozeau <matthieu.sozeau@inria.fr>2014-10-02 00:07:10 +0200
commit68846802a7be637ec805a5e374655a426b5723a5 (patch)
treeeb9a170bb94c96f3a50203d8d941823a23743064 /pretyping/evarsolve.ml
parentcf36105854c9a42960ee4139c6afdaa75ec8f31a (diff)
Work around issues with FO unification trying to unify terms of
potentially different types, resulting in ill-typed terms due to eta. Projection expansion now fails gracefully on retyping errors. The proper fix to unification, checking that the heads for FO have unifiable types, is currently too strong, adding unnecessary universe constraints, so it is disabled for now. It might be quite expensive too also it's not noticeable on the stdlib.
Diffstat (limited to 'pretyping/evarsolve.ml')
-rw-r--r--pretyping/evarsolve.ml4
1 files changed, 4 insertions, 0 deletions
diff --git a/pretyping/evarsolve.ml b/pretyping/evarsolve.ml
index a41e0169a..94ec82029 100644
--- a/pretyping/evarsolve.ml
+++ b/pretyping/evarsolve.ml
@@ -101,6 +101,10 @@ let refresh_universes ?(inferred=false) ?(onlyalg=false) pbty env evd t =
in
if !modified then !evdref, t' else !evdref, t
+let get_type_of_refresh ?(polyprop=true) ?(lax=false) env sigma c =
+ let ty = Retyping.get_type_of ~polyprop ~lax env sigma c in
+ refresh_universes (Some false) env sigma ty
+
(************************)
(* Unification results *)
(************************)