diff options
| author | barras | 2006-05-09 21:15:07 +0000 |
|---|---|---|
| committer | barras | 2006-05-09 21:15:07 +0000 |
| commit | 3b03eb1015f14e04e505b11c27fb38b7db6ebe87 (patch) | |
| tree | 1e12d205f485cddf9be29284fdb07bcbfc2c9ff2 /kernel/term.ml | |
| parent | 61e0c695e763271361a2d68e11f02a4b4ea614b4 (diff) | |
subst. explicites avec vecteurs
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@8799 85f007b7-540e-0410-9357-904b9bb8a0f7
Diffstat (limited to 'kernel/term.ml')
| -rw-r--r-- | kernel/term.ml | 22 |
1 files changed, 10 insertions, 12 deletions
diff --git a/kernel/term.ml b/kernel/term.ml index b082c091ef..87c319a1bf 100644 --- a/kernel/term.ml +++ b/kernel/term.ml @@ -752,19 +752,17 @@ let rec lift_substituend depth s = let make_substituend c = { sinfo=Unknown; sit=c } -let substn_many lamv n = +let substn_many lamv n c = let lv = Array.length lamv in - let rec substrec depth c = match kind_of_term c with - | Rel k -> - if k<=depth then - c - else if k-depth <= lv then - lift_substituend depth lamv.(k-depth-1) - else - mkRel (k-lv) - | _ -> map_constr_with_binders succ substrec depth c - in - substrec n + if lv = 0 then c + else + let rec substrec depth c = match kind_of_term c with + | Rel k -> + if k<=depth then c + else if k-depth <= lv then lift_substituend depth lamv.(k-depth-1) + else mkRel (k-lv) + | _ -> map_constr_with_binders succ substrec depth c in + substrec n c (* let substkey = Profile.declare_profile "substn_many";; |
