aboutsummaryrefslogtreecommitdiff
path: root/pretyping
diff options
context:
space:
mode:
authorbarras2001-06-29 08:16:09 +0000
committerbarras2001-06-29 08:16:09 +0000
commit1b20fdfdf7f9ab6a92494c413c919635101e7f34 (patch)
treeaf7414e8df67d28ab52f914627d12f91f8af5707 /pretyping
parent9816d0201e8c72fb469706dd8739bec424a8ba5c (diff)
traitement du let dans red_product (tactique Red)
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@1815 85f007b7-540e-0410-9357-904b9bb8a0f7
Diffstat (limited to 'pretyping')
-rw-r--r--pretyping/tacred.ml8
1 files changed, 5 insertions, 3 deletions
diff --git a/pretyping/tacred.ml b/pretyping/tacred.ml
index f3f010e5e7..8523752d29 100644
--- a/pretyping/tacred.ml
+++ b/pretyping/tacred.ml
@@ -403,17 +403,19 @@ and construct_const env sigma =
(* Red reduction tactic: reduction to a product *)
let internal_red_product env sigma c =
+ let simpfun = clos_norm_flags (UNIFORM,betaiotazeta_red) env sigma in
let rec redrec env x =
match kind_of_term x with
- | IsApp (f,l) -> appvect (redrec env f, l)
+ | IsApp (f,l) -> simpfun (appvect (redrec env f, l))
| IsCast (c,_) -> redrec env c
| IsProd (x,a,b) -> mkProd (x, a, redrec (push_rel_assum (x,a) env) b)
+ | IsLetIn (x,a,b,t) -> redrec env (subst1 a t)
| _ when isEvalRef x ->
(match reference_opt_value sigma env (destEvalRef x) with
| None -> raise Redelimination
- | Some c -> c)
+ | Some c -> simpfun c)
| _ -> raise Redelimination
- in nf_betaiota (redrec env c)
+ in redrec env c
let red_product env sigma c =
try internal_red_product env sigma c