diff options
author | Matthieu Sozeau <matthieu.sozeau@inria.fr> | 2015-02-14 12:54:36 +0100 |
---|---|---|
committer | Matthieu Sozeau <matthieu.sozeau@inria.fr> | 2015-02-14 12:58:05 +0100 |
commit | ea083ac106f048e64c1b57ddd37ac717236b8ecd (patch) | |
tree | 497b4d44d8814614ed7f9e2c6ec8c328d62963c6 /kernel/indtypes.ml | |
parent | 7dc6dfee7eb641282f4268aea24c688da07470ee (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.ml | 10 |
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 = |