aboutsummaryrefslogtreecommitdiff
path: root/kernel/typeops.ml
diff options
context:
space:
mode:
authorherbelin2001-07-03 16:25:27 +0000
committerherbelin2001-07-03 16:25:27 +0000
commitc155881b687667746474f5f2b13be2c4f347838d (patch)
tree1333564c7a1f4651eec11465722df3daa6a9b9db /kernel/typeops.ml
parentca9b228384584e125a146b68157180d229a5914e (diff)
Depliage des let-in dans le test de garde
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@1822 85f007b7-540e-0410-9357-904b9bb8a0f7
Diffstat (limited to 'kernel/typeops.ml')
-rw-r--r--kernel/typeops.ml14
1 files changed, 3 insertions, 11 deletions
diff --git a/kernel/typeops.ml b/kernel/typeops.ml
index 63d4ed069b..3eef05bf0a 100644
--- a/kernel/typeops.ml
+++ b/kernel/typeops.ml
@@ -590,7 +590,7 @@ let rec check_subterm_rec_meta env sigma vectn k def =
(* n gives the index of the recursive variable *)
(noccur_with_meta (n+k+1) nfi t) or
(* no recursive call in the term *)
- (let f,l = whd_betaiota_stack t in
+ (let f,l = whd_betaiotazeta_stack t in
match kind_of_term f with
| IsRel p ->
if n+k+1 <= p & p < n+k+nfi+1 then
@@ -675,16 +675,8 @@ let rec check_subterm_rec_meta env sigma vectn k def =
(n+1) (map_lift_fst lst) b) &&
(List.for_all (check_rec_call env n lst) l)
- | IsLetIn (x,a,b,c) as cst ->
- (try
- (check_rec_call env n lst a) &&
- (check_rec_call env n lst b) &&
- (check_rec_call (push_rel_def (x,a, b) env)
- (n+1) (map_lift_fst lst) c) &&
- (List.for_all (check_rec_call env n lst) l)
- with (FixGuardError NotEnoughArgumentsForFixCall) as e
- -> check_rec_call env n lst (whd_betadeltaiota env sigma t)
- )
+ | IsLetIn (x,a,b,c) ->
+ anomaly "check_rec_call: should have been reduced"
| IsMutInd (_,la) ->
(array_for_all (check_rec_call env n lst) la) &&