aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorherbelin2005-03-15 16:51:10 +0000
committerherbelin2005-03-15 16:51:10 +0000
commit4a3a43565c54c3d987b57ecc4a8062777937222b (patch)
tree34c43c6c0ca069f6c2e5a7008b2f846ac00f787d
parent5e034ee8d0e90e4b051de0e1aad889668b8e1ee2 (diff)
Backtrack sur la substitution combinée avec l'instanciation en réponse à l'inefficacité montrée dans le bug #932: suppression plutôt des Anonymous dans le contexte des evars (cf Evarutil)
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@6836 85f007b7-540e-0410-9357-904b9bb8a0f7
-rw-r--r--pretyping/pretyping.ml7
-rw-r--r--pretyping/reductionops.ml14
-rw-r--r--pretyping/reductionops.mli2
3 files changed, 3 insertions, 20 deletions
diff --git a/pretyping/pretyping.ml b/pretyping/pretyping.ml
index a56280ba83..098c3e0956 100644
--- a/pretyping/pretyping.ml
+++ b/pretyping/pretyping.ml
@@ -349,8 +349,7 @@ let rec pretype tycon env isevars lvar = function
let hj = pretype (mk_tycon c1) env isevars lvar c in
let newresj =
{ uj_val = applist (j_val resj, [j_val hj]);
- uj_type = subst1_nf_evar (evars_of !isevars)
- hj.uj_val c2 } in
+ uj_type = subst1 hj.uj_val c2 } in
apply_rec env (n+1) newresj rest
| _ ->
@@ -365,7 +364,7 @@ let rec pretype tycon env isevars lvar = function
let (dom,rng) = split_tycon floc env isevars tycon in
let cj = pretype dom env isevars lvar c in
let rng_tycon =
- option_app (subst1_nf_evar (evars_of !isevars) cj.uj_val) rng in
+ option_app (subst1 cj.uj_val) rng in
let argloc = loc_of_rawconstr c in
(join_loc floc argloc,rng_tycon,(argloc,cj)::jl) in
let _,_,jl =
@@ -400,7 +399,7 @@ let rec pretype tycon env isevars lvar = function
let tycon = option_app (lift 1) tycon in
let j' = pretype tycon (push_rel var env) isevars lvar c2 in
{ uj_val = mkLetIn (name, j.uj_val, t, j'.uj_val) ;
- uj_type = subst1_nf_evar (evars_of !isevars) j.uj_val j'.uj_type }
+ uj_type = subst1 j.uj_val j'.uj_type }
| RLetTuple (loc,nal,(na,po),c,d) ->
let cj = pretype empty_tycon env isevars lvar c in
diff --git a/pretyping/reductionops.ml b/pretyping/reductionops.ml
index 6ed5f2468a..a7573f5343 100644
--- a/pretyping/reductionops.ml
+++ b/pretyping/reductionops.ml
@@ -433,20 +433,6 @@ let rec whd_evar sigma c =
let nf_evar sigma =
local_strong (whd_evar sigma)
-let subst1_nf_evar sigma v =
- let rec substrec depth c = match kind_of_term c with
- | Rel k ->
- if k <= depth then c
- else if k = depth+1 then lift depth v
- else mkRel (k-1)
- | Evar (ev,args as evar) ->
- (try substrec depth (Evd.existential_value sigma evar)
- with Evd.NotInstantiatedEvar ->
- mkEvar (ev, Array.map (substrec depth) args))
- | _ -> map_constr_with_binders succ substrec depth c
- in
- substrec 0
-
(* lazy reduction functions. The infos must be created for each term *)
let clos_norm_flags flgs env sigma t =
norm_val (create_clos_infos flgs env) (inject (nf_evar sigma t))
diff --git a/pretyping/reductionops.mli b/pretyping/reductionops.mli
index f8baac5ea4..29a28f0f74 100644
--- a/pretyping/reductionops.mli
+++ b/pretyping/reductionops.mli
@@ -120,8 +120,6 @@ val hnf_lam_app : env -> evar_map -> constr -> constr -> constr
val hnf_lam_appvect : env -> evar_map -> constr -> constr array -> constr
val hnf_lam_applist : env -> evar_map -> constr -> constr list -> constr
-val subst1_nf_evar : evar_map -> constr -> constr -> constr
-
val splay_prod : env -> evar_map -> constr -> (name * constr) list * constr
val splay_lambda : env -> evar_map -> constr -> (name * constr) list * constr
val splay_arity : env -> evar_map -> constr -> (name * constr) list * sorts