diff options
-rw-r--r-- | pretyping/vnorm.ml | 5 | ||||
-rw-r--r-- | pretyping/vnorm.mli | 4 | ||||
-rw-r--r-- | proofs/redexpr.ml | 7 |
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" |