summaryrefslogtreecommitdiff
path: root/kernel/indtypes.ml
diff options
context:
space:
mode:
authorGravatar Stephane Glondu <steph@glondu.net>2011-12-25 13:19:42 +0100
committerGravatar Stephane Glondu <steph@glondu.net>2011-12-25 13:19:42 +0100
commit300293c119981054c95182a90c829058530a6b6f (patch)
treed7303613741c5796b58ced7db24ec7203327dbb2 /kernel/indtypes.ml
parent9d27ae09786866b6e3d7b79d1fa7667e5e2aa309 (diff)
Imported Upstream version 8.3.pl3upstream/8.3.pl3
Diffstat (limited to 'kernel/indtypes.ml')
-rw-r--r--kernel/indtypes.ml16
1 files changed, 12 insertions, 4 deletions
diff --git a/kernel/indtypes.ml b/kernel/indtypes.ml
index 91aec40c..9b1ddc31 100644
--- a/kernel/indtypes.ml
+++ b/kernel/indtypes.ml
@@ -1,12 +1,12 @@
(************************************************************************)
(* v * The Coq Proof Assistant / The Coq Development Team *)
-(* <O___,, * INRIA - CNRS - LIX - LRI - PPS - Copyright 1999-2010 *)
+(* <O___,, * INRIA - CNRS - LIX - LRI - PPS - Copyright 1999-2011 *)
(* \VV/ **************************************************************)
(* // * This file is distributed under the terms of the *)
(* * GNU Lesser General Public License Version 2.1 *)
(************************************************************************)
-(* $Id: indtypes.ml 13323 2010-07-24 15:57:30Z herbelin $ *)
+(* $Id: indtypes.ml 14641 2011-11-06 11:59:10Z herbelin $ *)
open Util
open Names
@@ -247,8 +247,16 @@ let typecheck_inductive env mie =
let param_ccls = List.fold_left (fun l (_,b,p) ->
if b = None then
let _,c = dest_prod_assum env p in
- let u = match kind_of_term c with Sort (Type u) -> Some u | _ -> None in
- u::l
+ (* Add Type levels to the ordered list of parameters contributing to *)
+ (* polymorphism unless there is aliasing (i.e. non distinct levels) *)
+ match kind_of_term c with
+ | Sort (Type u) ->
+ if List.mem (Some u) l then
+ None :: List.map (function Some v when u = v -> None | x -> x) l
+ else
+ Some u :: l
+ | _ ->
+ None :: l
else
l) [] params in