aboutsummaryrefslogtreecommitdiffhomepage
path: root/kernel/indtypes.ml
diff options
context:
space:
mode:
authorGravatar Matthieu Sozeau <matthieu.sozeau@inria.fr>2015-02-14 12:54:36 +0100
committerGravatar Matthieu Sozeau <matthieu.sozeau@inria.fr>2015-02-14 12:58:05 +0100
commitea083ac106f048e64c1b57ddd37ac717236b8ecd (patch)
tree497b4d44d8814614ed7f9e2c6ec8c328d62963c6 /kernel/indtypes.ml
parent7dc6dfee7eb641282f4268aea24c688da07470ee (diff)
Univs: When computing the level of an inductive including indices, lets
do not contribute. Fixes bug #3808.
Diffstat (limited to 'kernel/indtypes.ml')
-rw-r--r--kernel/indtypes.ml10
1 files changed, 6 insertions, 4 deletions
diff --git a/kernel/indtypes.ml b/kernel/indtypes.ml
index ea575e1e0..799471c68 100644
--- a/kernel/indtypes.ml
+++ b/kernel/indtypes.ml
@@ -164,10 +164,12 @@ let infer_constructor_packet env_ar_par ctx params lc =
(* If indices matter *)
let cumulate_arity_large_levels env sign =
fst (List.fold_right
- (fun (_,_,t as d) (lev,env) ->
- let tj = infer_type env t in
- let u = univ_of_sort tj.utj_type in
- (Universe.sup u lev, push_rel d env))
+ (fun (_,b,t as d) (lev,env) ->
+ if Option.is_empty b then
+ let tj = infer_type env t in
+ let u = univ_of_sort tj.utj_type in
+ (Universe.sup u lev, push_rel d env)
+ else lev, push_rel d env)
sign (Universe.type0m,env))
let is_impredicative env u =