aboutsummaryrefslogtreecommitdiff
path: root/kernel/inductive.ml
diff options
context:
space:
mode:
authormohring2005-11-28 16:50:54 +0000
committermohring2005-11-28 16:50:54 +0000
commite54a26a004a1b94346db136f284c6153765d0cda (patch)
tree980f79eed02c3c43e2cdd6f260184a5301b11ccf /kernel/inductive.ml
parent87f9dc0eb4e1e3a3d092ba35e6bcd9cf62607f0e (diff)
parametres inductifs
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@7620 85f007b7-540e-0410-9357-904b9bb8a0f7
Diffstat (limited to 'kernel/inductive.ml')
-rw-r--r--kernel/inductive.ml14
1 files changed, 11 insertions, 3 deletions
diff --git a/kernel/inductive.ml b/kernel/inductive.ml
index 235c82b1a8..b5d825e843 100644
--- a/kernel/inductive.ml
+++ b/kernel/inductive.ml
@@ -152,11 +152,16 @@ let get_arity mib mip params =
let arity = mip.mind_nf_arity in
destArity (full_inductive_instantiate mib params arity)
+let rel_list n m =
+ let rec reln l p =
+ if p>m then l else reln (mkRel(n+p)::l) (p+1)
+ in
+ reln [] 1
+
let build_dependent_inductive ind mib mip params =
- let arsign,_ = get_arity mib mip params in
let nrealargs = mip.mind_nrealargs in
applist
- (mkInd ind, (List.map (lift nrealargs) params)@(local_rels arsign))
+ (mkInd ind, (List.map (lift nrealargs) params)@(rel_list 0 nrealargs))
(* This exception is local *)
@@ -166,6 +171,7 @@ let is_correct_arity env c pj ind mib mip params =
let kelim = mip.mind_kelim in
let arsign,s = get_arity mib mip params in
let nodep_ar = it_mkProd_or_LetIn (mkSort s) arsign in
+ let nrealargs = mip.mind_nrealargs in
let rec srec env pt t u =
let pt' = whd_betadeltaiota env pt in
let t' = whd_betadeltaiota env t in
@@ -180,7 +186,9 @@ let is_correct_arity env c pj ind mib mip params =
let ksort = match kind_of_term k with
| Sort s -> family_of_sort s
| _ -> raise (LocalArity None) in
- let dep_ind = build_dependent_inductive ind mib mip params in
+
+ let dep_ind = build_dependent_inductive ind mib mip params
+ in
let univ =
try conv env a1 dep_ind
with NotConvertible -> raise (LocalArity None) in