@@ -261,18 +261,27 @@ let universe_decl : UState.universe_decl API.Conversion.t =
261261 ]
262262} |> API.ContextualConversion. (! < )
263263
264- (* type universe_decl_cumul = ((Univ.Level.t * UVars.Variance .t option) list * bool) * (Univ.Constraints.t * bool)
265- let universe_decl_cumul : universe_decl_cumul API.Conversion.t =
266- let open API.Conversion in let open API.BuiltInData in let open API.AlgebraicData in let open Elpi.Builtin in declare {
264+ let universe_decl_cumul : UState.universe_decl API.Conversion .t =
265+ let open API.Conversion in let open API.BuiltInData in let open API.AlgebraicData in let open Elpi.Builtin in
266+ let open UState in declare {
267267 ty = TyName " upoly-decl-cumul" ;
268268 doc = " Constraints for a cumulative declaration. Boolean tt means loose (e.g. the '+' in f@{u v + | u < v +})" ;
269269 pp = (fun fmt _ -> Format. fprintf fmt " <todo>" );
270270 constructors = [
271271 K (" upoly-decl-cumul" ," " ,A (list universe_variance,A (bool ,A (list universe_constraint,A (bool ,N )))),
272- B (fun x sx y sy -> ((x,sx),(Univ.Constraints.of_list y,sy))),
273- M (fun ~ok ~ko:_ ((x,sx),(y,sy)) -> ok x sx (Univ.Constraints.elements y) sy))
272+ B (fun x sx y sy ->
273+ { univdecl_qualities = [] ; univdecl_extensible_qualities = false ;
274+ univdecl_instance = List. map fst x; univdecl_extensible_instance = sx;
275+ univdecl_variances = Some (Array. of_list (List. map snd x));
276+ univdecl_constraints = Univ.Constraints. of_list y;
277+ univdecl_extensible_constraints = sy }),
278+ M (fun ~ok ~ko :_ x ->
279+ ok (List. map2 (fun x y -> x, y) x.univdecl_instance (Array. to_list (Option. get x.univdecl_variances)))
280+ x.univdecl_extensible_instance
281+ (Univ.Constraints. elements x.univdecl_constraints)
282+ x.univdecl_extensible_constraints))
274283 ]
275- } |> API.ContextualConversion.(!<) *)
284+ } |> API.ContextualConversion. (! < )
276285
277286let collapse_to_type_sigma sigma s =
278287 match s with
@@ -1310,7 +1319,7 @@ let get_options ~depth hyps state =
13101319 | None , None -> NotUniversePolymorphic
13111320 | Some _ , Some _ -> err Pp. (str" Conflicting attributes: @udecl! and @udecl-cumul! (or @univpoly! and @univpoly-cumul!)" )
13121321 | Some (t ,depth ), None ->
1313- let _, ud, gl = universe_decl .Elpi.API.Conversion. readback ~depth state t in
1322+ let _, ud, gl = universe_decl_cumul .Elpi.API.Conversion. readback ~depth state t in
13141323 assert (gl = [] );
13151324 Cumulative ud
13161325 | None , Some (t ,depth ) ->
@@ -2958,7 +2967,7 @@ let restricted_sigma_of s state =
29582967 let sigma = get_sigma state in
29592968 let ustate = Evd. evar_universe_context sigma in
29602969 let ustate = UState. restrict_even_binders ustate s in
2961- let ustate = UState. fix_undefined_variables ustate in
2970+ (* let ustate = UState.fix_undefined_variables ustate in *)
29622971 let ustate = UState. collapse_sort_variables ustate in
29632972 let sigma = Evd. set_universe_context sigma ustate in
29642973 sigma
@@ -3560,7 +3569,7 @@ let upoly_decl_of ~depth state ~loose_udecl mie =
35603569 state, (fun i -> E. mkApp uideclc i [up]), gls
35613570 | Some (Check_variances variance ) ->
35623571 let udecl = udecl_of_entry (Array. to_list vars) csts (Some variance) loose_udecl in
3563- let state, up, gls = universe_decl .API.Conversion. embed ~depth state udecl in
3572+ let state, up, gls = universe_decl_cumul .API.Conversion. embed ~depth state udecl in
35643573 state, (fun i -> E. mkApp uideclc i [up]), gls
35653574 end
35663575 | Monomorphic_ind_entry -> state, (fun i -> E. mkApp ideclc i [] ), []
0 commit comments