aboutsummaryrefslogtreecommitdiff
path: root/kernel/reduction.ml
diff options
context:
space:
mode:
authorherbelin2000-11-27 10:26:35 +0000
committerherbelin2000-11-27 10:26:35 +0000
commitd9dc86a6f7194c2e7ea704c95495955ca4f4b08d (patch)
tree6b113a93fa17e0383d72a9c88b5bce270bab3754 /kernel/reduction.ml
parentf08382bf7efb1195e8bbdf3602a910bd0bc6ea96 (diff)
Ajout map_constr_with_full_binders et strong pour Simpl
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@973 85f007b7-540e-0410-9357-904b9bb8a0f7
Diffstat (limited to 'kernel/reduction.ml')
-rw-r--r--kernel/reduction.ml12
1 files changed, 5 insertions, 7 deletions
diff --git a/kernel/reduction.ml b/kernel/reduction.ml
index d496a9e49a..a5f9114a8a 100644
--- a/kernel/reduction.ml
+++ b/kernel/reduction.ml
@@ -108,10 +108,10 @@ let stack_reduction_of_reduction red_fun env sigma s =
let t = red_fun env sigma (app_stack s) in
whd_stack t
-(* BUGGE : NE PREND PAS EN COMPTE LES DEFS LOCALES *)
-let strong whdfun env sigma =
- let rec strongrec t = map_constr strongrec (whdfun env sigma t) in
- strongrec
+let strong whdfun env sigma t =
+ let rec strongrec env t =
+ map_constr_with_full_binders push_rel strongrec env (whdfun env sigma t) in
+ strongrec env t
let local_strong whdfun =
let rec strongrec t = map_constr strongrec (whdfun t) in
@@ -270,7 +270,6 @@ let reduce_fix whdfun fix stack =
let whd_state_gen flags env sigma =
let rec whrec (x, stack as s) =
match kind_of_term x with
-(*
| IsRel n when red_delta flags ->
(match lookup_rel_value n env with
| Some body -> whrec (lift n body, stack)
@@ -279,7 +278,6 @@ let whd_state_gen flags env sigma =
(match lookup_named_value id env with
| Some body -> whrec (body, stack)
| None -> s)
-*)
| IsEvar ev when red_evar flags ->
(match existential_opt_value sigma ev with
| Some body -> whrec (body, stack)
@@ -331,7 +329,7 @@ let whd_state_gen flags env sigma =
let local_whd_state_gen flags =
let rec whrec (x, stack as s) =
match kind_of_term x with
- | IsLetIn (_,b,_,c) when red_delta flags -> stacklam whrec [b] c stack
+ | IsLetIn (_,b,_,c) when red_letin flags -> stacklam whrec [b] c stack
| IsCast (c,_) -> whrec (c, stack)
| IsApp (f,cl) -> whrec (f, append_stack cl stack)
| IsLambda (_,_,c) ->