From ea083ac106f048e64c1b57ddd37ac717236b8ecd Mon Sep 17 00:00:00 2001 From: Matthieu Sozeau Date: Sat, 14 Feb 2015 12:54:36 +0100 Subject: Univs: When computing the level of an inductive including indices, lets do not contribute. Fixes bug #3808. --- kernel/indtypes.ml | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) (limited to 'kernel') diff --git a/kernel/indtypes.ml b/kernel/indtypes.ml index ea575e1e0d..799471c68a 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 = -- cgit v1.2.3