aboutsummaryrefslogtreecommitdiff
path: root/pretyping/reductionops.ml
diff options
context:
space:
mode:
Diffstat (limited to 'pretyping/reductionops.ml')
-rw-r--r--pretyping/reductionops.ml121
1 files changed, 0 insertions, 121 deletions
diff --git a/pretyping/reductionops.ml b/pretyping/reductionops.ml
index ac3c51ae3d..035435c2b0 100644
--- a/pretyping/reductionops.ml
+++ b/pretyping/reductionops.ml
@@ -889,72 +889,6 @@ let nf_betaiotazeta = clos_norm_flags Closure.betaiotazeta empty_env
let nf_betadeltaiota env sigma =
clos_norm_flags Closure.betadeltaiota env sigma
-
-(* Attention reduire un beta-redexe avec un argument qui n'est pas
- une variable, peut changer enormement le temps de conversion lors
- du type checking :
- (fun x => x + x) M
-*)
-let whd_betaiota_preserving_vm_cast env sigma t =
- let rec stacklam_var subst t stack =
- match (Stack.decomp stack,kind_of_term t) with
- | Some (h,stacktl), Lambda (_,_,c) ->
- begin match kind_of_term h with
- | Rel i when not (evaluable_rel i env) ->
- stacklam_var (h::subst) c stacktl
- | Var id when not (evaluable_named id env)->
- stacklam_var (h::subst) c stacktl
- | _ -> whrec (substl subst t, stack)
- end
- | _ -> whrec (substl subst t, stack)
- and whrec (x, stack as s) =
- match kind_of_term x with
- | Evar ev ->
- (match safe_evar_value sigma ev with
- | Some body -> whrec (body, stack)
- | None -> s)
- | Cast (c,VMcast,t) ->
- let c = Stack.zip (whrec (c,Stack.empty)) in
- let t = Stack.zip (whrec (t,Stack.empty)) in
- (mkCast(c,VMcast,t),stack)
- | Cast (c,NATIVEcast,t) ->
- let c = Stack.zip (whrec (c,Stack.empty)) in
- let t = Stack.zip (whrec (t,Stack.empty)) in
- (mkCast(c,NATIVEcast,t),stack)
- | Cast (c,DEFAULTcast,_) ->
- whrec (c, stack)
- | App (f,cl) -> whrec (f, Stack.append_app cl stack)
- | Lambda (na,t,c) ->
- (match Stack.decomp stack with
- | Some (a,m) -> stacklam_var [a] c m
- | _ -> s)
- | Case (ci,p,d,lf) ->
- whrec (d, Stack.Case (ci,p,lf,None) :: stack)
-
- | Construct (ind,c) -> begin
- match Stack.strip_app stack with
- |args, (Stack.Case(ci, _, lf,_)::s') ->
- whrec (lf.(c-1), (Stack.tail ci.ci_npar args) @ s')
- |args, (Stack.Fix (f,s',cst)::s'') ->
- let x' = Stack.zip(x,args) in
- whrec (contract_fix f cst,s' @ (Stack.append_app [|x'|] s''))
- |_ -> s
- end
-
- | CoFix cofix -> begin
- match Stack.strip_app stack with
- |args, (Stack.Case(ci, _, lf,_)::s') ->
- whrec (contract_cofix cofix None, stack)
- |_ -> s
- end
-
- | x -> s
- in
- Stack.zip (whrec (t,Stack.empty))
-
-let nf_betaiota_preserving_vm_cast =
- strong whd_betaiota_preserving_vm_cast
-
(********************************************************************)
(* Conversion *)
(********************************************************************)
@@ -1200,61 +1134,6 @@ let whd_betaiota_deltazeta_for_iota_state ts env sigma csts s =
|_ -> s,csts'
in whrec csts s
-(* A reduction function like whd_betaiota but which keeps casts
- * and does not reduce redexes containing existential variables.
- * Used in Correctness.
- * Added by JCF, 29/1/98. *)
-
-let whd_programs_stack env sigma =
- let rec whrec (x, stack as s) =
- match kind_of_term x with
- | App (f,cl) ->
- let n = Array.length cl - 1 in
- let c = cl.(n) in
- if occur_existential c then
- s
- else
- whrec (mkApp (f, Array.sub cl 0 n), Stack.append_app [|c|] stack)
- | LetIn (_,b,_,c) ->
- if occur_existential b then
- s
- else
- stacklam whrec [b] c stack
- | Lambda (_,_,c) ->
- (match Stack.decomp stack with
- | None -> s
- | Some (a,m) -> stacklam whrec [a] c m)
- | Case (ci,p,d,lf) ->
- if occur_existential d then
- s
- else
- whrec (d, Stack.Case (ci,p,lf,None) :: stack)
- | Fix ((ri,n),_ as f) ->
- (match Stack.strip_n_app ri.(n) stack with
- |None -> s
- |Some (bef,arg,s') -> whrec (arg, Stack.Fix(f,bef,None)::s'))
- | Construct (ind,c) -> begin
- match Stack.strip_app stack with
- |args, (Stack.Case(ci, _, lf,_)::s') ->
- whrec (lf.(c-1), (Stack.tail ci.ci_npar args) @ s')
- |args, (Stack.Fix (f,s',cst)::s'') ->
- let x' = Stack.zip(x,args) in
- whrec (contract_fix f cst,s' @ (Stack.append_app [|x'|] s''))
- |_ -> s
- end
- | CoFix cofix -> begin
- match Stack.strip_app stack with
- |args, (Stack.Case(ci, _, lf,_)::s') ->
- whrec (contract_cofix cofix None, stack)
- |_ -> s
- end
- | _ -> s
- in
- whrec
-
-let whd_programs env sigma x =
- Stack.zip (whd_programs_stack env sigma (x, Stack.empty))
-
let find_conclusion env sigma =
let rec decrec env c =
let t = whd_betadeltaiota env sigma c in