aboutsummaryrefslogtreecommitdiff
path: root/pretyping
diff options
context:
space:
mode:
authorHugo Herbelin2018-08-21 14:59:23 +0200
committerHugo Herbelin2018-09-06 16:38:45 +0200
commite8ccf6120f3765e04c527bca8b2b1fffc6df08ca (patch)
treecd10f52c37700b01b5efa4bcf70a85994f8b221f /pretyping
parent579f30a53809f9cf73aa3d7c69960b50fc51c7fc (diff)
Fixing #8270 (cbn was calling zeta even when not asked for).
Diffstat (limited to 'pretyping')
-rw-r--r--pretyping/reductionops.ml12
-rw-r--r--pretyping/reductionops.mli3
2 files changed, 15 insertions, 0 deletions
diff --git a/pretyping/reductionops.ml b/pretyping/reductionops.ml
index ba40262815..f133eb9963 100644
--- a/pretyping/reductionops.ml
+++ b/pretyping/reductionops.ml
@@ -628,6 +628,18 @@ let safe_meta_value sigma ev =
try Some (Evd.meta_value sigma ev)
with Not_found -> None
+let strong_with_flags whdfun flags env sigma t =
+ let push_rel_check_zeta d env =
+ let open CClosure.RedFlags in
+ let d = match d with
+ | LocalDef (na,c,t) when not (red_set flags fZETA) -> LocalAssum (na,t)
+ | d -> d in
+ push_rel d env in
+ let rec strongrec env t =
+ map_constr_with_full_binders sigma
+ push_rel_check_zeta strongrec env (whdfun flags env sigma t) in
+ strongrec env t
+
let strong whdfun env sigma t =
let rec strongrec env t =
map_constr_with_full_binders sigma push_rel strongrec env (whdfun env sigma t) in
diff --git a/pretyping/reductionops.mli b/pretyping/reductionops.mli
index 07eeec9276..dd3cd26f0f 100644
--- a/pretyping/reductionops.mli
+++ b/pretyping/reductionops.mli
@@ -144,6 +144,9 @@ val pr_state : state -> Pp.t
(** {6 Reduction Function Operators } *)
+val strong_with_flags :
+ (CClosure.RedFlags.reds -> reduction_function) ->
+ (CClosure.RedFlags.reds -> reduction_function)
val strong : reduction_function -> reduction_function
val local_strong : local_reduction_function -> local_reduction_function
val strong_prodspine : local_reduction_function -> local_reduction_function