aboutsummaryrefslogtreecommitdiff
path: root/kernel/indtypes.ml
diff options
context:
space:
mode:
authormohring2005-11-28 16:50:54 +0000
committermohring2005-11-28 16:50:54 +0000
commite54a26a004a1b94346db136f284c6153765d0cda (patch)
tree980f79eed02c3c43e2cdd6f260184a5301b11ccf /kernel/indtypes.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/indtypes.ml')
-rw-r--r--kernel/indtypes.ml20
1 files changed, 11 insertions, 9 deletions
diff --git a/kernel/indtypes.ml b/kernel/indtypes.ml
index 67a0f850cc..218d7f8228 100644
--- a/kernel/indtypes.ml
+++ b/kernel/indtypes.ml
@@ -353,7 +353,8 @@ let array_min nmr a = if nmr = 0 then 0 else
(* The recursive function that checks positivity and builds the list
of recursive arguments *)
let check_positivity_one (env, _,ntypes,_ as ienv) hyps i indlc =
- let nparams = rel_context_length hyps in
+ let lparams = rel_context_length hyps in
+ let nmr = rel_context_nhyps hyps in
(* check the inductive types occur positively in [c] *)
let rec check_pos (env, n, ntypes, ra_env as ienv) nmr c =
let x,largs = decompose_app (whd_betadeltaiota env c) in
@@ -453,31 +454,32 @@ let check_positivity_one (env, _,ntypes,_ as ienv) hyps i indlc =
Array.map
(fun c ->
let c = body_of_type c in
- let sign, rawc = mind_extract_params nparams c in
+ let sign, rawc = mind_extract_params lparams c in
try
- check_constructors ienv true nparams rawc
+ check_constructors ienv true nmr rawc
with IllFormedInd err ->
- explain_ind_err (ntypes-i) env nparams c err)
+ explain_ind_err (ntypes-i) env lparams c err)
indlc
in
let irecargs = Array.map snd irecargs_nmr
- and nmr' = array_min nparams irecargs_nmr
+ and nmr' = array_min nmr irecargs_nmr
in (nmr', mk_paths (Mrec i) irecargs)
let check_positivity env_ar params inds =
let ntypes = Array.length inds in
let lra_ind =
List.rev (list_tabulate (fun j -> (Mrec j, Rtree.mk_param j)) ntypes) in
- let nparams = rel_context_length params in
+ let lparams = rel_context_length params in
+ let nmr = rel_context_nhyps params in
let check_one i (_,_,_,_,_,lc) =
let ra_env =
- list_tabulate (fun _ -> (Norec,mk_norec)) nparams @ lra_ind in
- let ienv = (env_ar, 1+nparams, ntypes, ra_env) in
+ list_tabulate (fun _ -> (Norec,mk_norec)) lparams @ lra_ind in
+ let ienv = (env_ar, 1+lparams, ntypes, ra_env) in
check_positivity_one ienv params i lc
in
let irecargs_nmr = Array.mapi check_one inds in
let irecargs = Array.map snd irecargs_nmr
- and nmr' = array_min nparams irecargs_nmr
+ and nmr' = array_min nmr irecargs_nmr
in (nmr',Rtree.mk_rec irecargs)