aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--pretyping/vnorm.ml5
-rw-r--r--pretyping/vnorm.mli4
-rw-r--r--proofs/redexpr.ml7
3 files changed, 9 insertions, 7 deletions
diff --git a/pretyping/vnorm.ml b/pretyping/vnorm.ml
index 8c3de7cfd..60f99fd3d 100644
--- a/pretyping/vnorm.ml
+++ b/pretyping/vnorm.ml
@@ -352,6 +352,11 @@ and nf_cofix env sigma cf =
mkCoFix (init,(name,cft,cfb))
let cbv_vm env sigma c t =
+ if Termops.occur_meta_or_existential sigma c then
+ CErrors.error "vm_compute does not support existential variables.";
+ (** This evar-normalizes terms beforehand *)
+ let c = EConstr.to_constr sigma c in
+ let t = EConstr.to_constr sigma t in
let v = Vconv.val_of_constr env c in
nf_val env sigma v t
diff --git a/pretyping/vnorm.mli b/pretyping/vnorm.mli
index bc6eec851..650f3f291 100644
--- a/pretyping/vnorm.mli
+++ b/pretyping/vnorm.mli
@@ -6,8 +6,8 @@
(* * GNU Lesser General Public License Version 2.1 *)
(************************************************************************)
-open Term
+open EConstr
open Environ
(** {6 Reduction functions } *)
-val cbv_vm : env -> Evd.evar_map -> constr -> types -> constr
+val cbv_vm : env -> Evd.evar_map -> constr -> types -> Constr.t
diff --git a/proofs/redexpr.ml b/proofs/redexpr.ml
index 40a8077a7..348cd1bcb 100644
--- a/proofs/redexpr.ml
+++ b/proofs/redexpr.ml
@@ -24,11 +24,8 @@ open Misctypes
(* call by value normalisation function using the virtual machine *)
let cbv_vm env sigma c =
- let c = EConstr.Unsafe.to_constr c in
- let ctyp = Retyping.get_type_of env sigma c in
- if Termops.occur_meta_or_existential sigma (EConstr.of_constr c) then
- error "vm_compute does not support existential variables.";
- Vnorm.cbv_vm env sigma c ctyp
+ let ctyp = Retyping.get_type_of env sigma (EConstr.Unsafe.to_constr c) in
+ Vnorm.cbv_vm env sigma c (EConstr.of_constr ctyp)
let warn_native_compute_disabled =
CWarnings.create ~name:"native-compute-disabled" ~category:"native-compiler"