aboutsummaryrefslogtreecommitdiffhomepage
path: root/proofs/logic.ml
diff options
context:
space:
mode:
authorGravatar letouzey <letouzey@85f007b7-540e-0410-9357-904b9bb8a0f7>2010-12-10 23:03:34 +0000
committerGravatar letouzey <letouzey@85f007b7-540e-0410-9357-904b9bb8a0f7>2010-12-10 23:03:34 +0000
commit398ac6536c4d4bd73105bc24c24f31e90cbe34d9 (patch)
treeb86d2a236870f75dddfcc7955edd40685332ba9d /proofs/logic.ml
parent05085e80668a4d1dedc522c6af343168870cc648 (diff)
Attempt to preserve casts during a refine, especially VMcast
placed by vm_cast_no_check git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@13703 85f007b7-540e-0410-9357-904b9bb8a0f7
Diffstat (limited to 'proofs/logic.ml')
-rw-r--r--proofs/logic.ml12
1 files changed, 10 insertions, 2 deletions
diff --git a/proofs/logic.ml b/proofs/logic.ml
index 5b55e1c02..2835eb542 100644
--- a/proofs/logic.ml
+++ b/proofs/logic.ml
@@ -337,10 +337,18 @@ let rec mk_refgoals sigma goal goalacc conclty trm =
let (gl,ev,sigma) = mk_goal hyps conclty in
gl::goalacc, conclty, sigma, ev
- | Cast (t,_, ty) ->
+ | Cast (t,k, ty) ->
check_typability env sigma ty;
check_conv_leq_goal env sigma trm ty conclty;
- mk_refgoals sigma goal goalacc ty t
+ let res = mk_refgoals sigma goal goalacc ty t in
+ (** we keep the casts (in particular VMcast) except
+ when they are annotating metas *)
+ if isMeta t then begin
+ assert (k <> VMcast);
+ res
+ end else
+ let (gls,cty,sigma,trm) = res in
+ (gls,cty,sigma,mkCast(trm,k,ty))
| App (f,l) ->
let (acc',hdty,sigma,applicand) =