File tree Expand file tree Collapse file tree 10 files changed +37
-4
lines changed
Expand file tree Collapse file tree 10 files changed +37
-4
lines changed Original file line number Diff line number Diff line change @@ -89,6 +89,7 @@ install_printer Top_printers.ppqconstraints
8989install_printer Top_printers.ppuniverseconstraints
9090install_printer Top_printers.ppuniverse_context_future
9191install_printer Top_printers.ppuniverses
92+ install_printer Top_printers.ppqualities
9293install_printer Top_printers.pp_partialfsubst
9394install_printer Top_printers.pp_partialsubst
9495install_printer Top_printers.ppnamedcontextval
Original file line number Diff line number Diff line change @@ -297,6 +297,7 @@ let ppuniverse_context_future c =
297297 let ctx = Future. force c in
298298 ppuniverse_context ctx
299299let ppuniverses u = pp (UGraph. pr_universes Level. raw_pr (UGraph. repr u))
300+ let ppqualities q = pp (QGraph. pr_qualities Quality. raw_pr q)
300301let ppnamedcontextval e =
301302 let env = Global. env () in
302303 let sigma = Evd. from_env env in
Original file line number Diff line number Diff line change @@ -168,6 +168,7 @@ val ppqconstraints : Sorts.ElimConstraints.t -> unit
168168val ppuniverseconstraints : UnivProblem.Set .t -> unit
169169val ppuniverse_context_future : UVars.UContext .t Future .computation -> unit
170170val ppuniverses : UGraph .t -> unit
171+ val ppqualities : QGraph .t -> unit
171172
172173val pp_partialfsubst : (CClosure .fconstr , Sorts.Quality .t , Univ.Universe .t ) Partial_subst .t -> unit
173174val pp_partialsubst : (EConstr .constr , Sorts.Quality .t , Univ.Universe .t ) Partial_subst .t -> unit
Original file line number Diff line number Diff line change @@ -489,7 +489,7 @@ let push_qualities qs env =
489489 (fun v -> QGraph. add_quality (Sorts.Quality. QVar v)) qs env.env_qualities in
490490 set_qualities g env
491491
492- let set_qualities qs env =
492+ let set_qvars qs env =
493493 let g = QGraph. initial_graph in
494494 let g = Sorts.QVar.Set. fold (fun v -> QGraph. add_quality (Sorts.Quality. QVar v)) qs g in
495495 { env with env_qualities = g }
Original file line number Diff line number Diff line change @@ -74,10 +74,11 @@ val named_context : env -> Constr.named_context
7474val named_context_val : env -> named_context_val
7575
7676val set_universes : UGraph .t -> env -> env
77+ val set_qualities : QGraph .t -> env -> env
78+ val set_qvars : Sorts.QVar.Set .t -> env -> env
7779
7880val qualities : env -> QGraph .t
7981val qvars : env -> Sorts.QVar.Set .t
80- val set_qualities : Sorts.QVar.Set .t -> env -> env
8182
8283val typing_flags : env -> typing_flags
8384val is_impredicative_set : env -> bool
Original file line number Diff line number Diff line change @@ -275,6 +275,32 @@ let qvar_domain g =
275275
276276let is_empty g = QVar.Set. is_empty (qvar_domain g)
277277
278+ (* Pretty printing *)
279+
280+ let pr_pmap sep pr map =
281+ let cmp (u ,_ ) (v ,_ ) = Quality. compare u v in
282+ Pp. prlist_with_sep sep pr (List. sort cmp (Quality.Map. bindings map))
283+
284+ let pr_arc prq =
285+ let open Pp in
286+ function
287+ | u , G. Node ltle ->
288+ if Quality.Map. is_empty ltle then mt ()
289+ else
290+ prq u ++ str " " ++
291+ v 0
292+ (pr_pmap spc (fun (v , strict ) ->
293+ (if strict then str " < " else str " <= " ) ++ prq v)
294+ ltle) ++
295+ fnl ()
296+ | u , G. Alias v ->
297+ prq u ++ str " = " ++ prq v ++ fnl ()
298+
299+
300+ let repr g = G. repr g.graph
301+
302+ let pr_qualities prq g = pr_pmap Pp. mt (pr_arc prq) (repr g)
303+
278304let explain_quality_inconsistency prv r =
279305 let open Pp in
280306 let pr_cst = function
Original file line number Diff line number Diff line change @@ -99,4 +99,6 @@ val qvar_domain : t -> QVar.Set.t
9999
100100val is_empty : t -> bool
101101
102+ val pr_qualities : (Quality .t -> Pp .t ) -> t -> Pp .t
103+
102104val explain_quality_inconsistency : (QVar .t -> Pp .t ) -> explanation option -> Pp .t
Original file line number Diff line number Diff line change @@ -1378,7 +1378,7 @@ let end_module l restype senv =
13781378 let mbids = List. rev_map fst params in
13791379 let mb = build_module_body params restype senv in
13801380 let newenv = Environ. set_universes (Environ. universes senv.env) oldsenv.env in
1381- let newenv = Environ. set_qualities (Environ. qvars senv.env) newenv in
1381+ let newenv = Environ. set_qualities (Environ. qualities senv.env) newenv in
13821382 let newenv = if Environ. rewrite_rules_allowed senv.env then Environ. allow_rewrite_rules newenv else newenv in
13831383 let newenv = Environ. set_vm_library (Environ. vm_library senv.env) newenv in
13841384 let senv' = propagate_loads { senv with env = newenv } in
Original file line number Diff line number Diff line change @@ -1336,6 +1336,7 @@ let infer_conv_gen conv_fun ?(catch_incon=true) ?(pb=Conversion.CUMUL)
13361336 | None ->
13371337 let x = EConstr.Unsafe. to_constr x in
13381338 let y = EConstr.Unsafe. to_constr y in
1339+ let env = Environ. set_qualities (Evd. elim_graph sigma) env in
13391340 let env = Environ. set_universes (Evd. universes sigma) env in
13401341 (* First try conversion with postponed universe problems as a kind of FO
13411342 approximation. This may result in unsatisfiable constraints even if
Original file line number Diff line number Diff line change @@ -246,7 +246,7 @@ let explain_elim_arity env sigma ind c okinds =
246246 if ppunivs then Flags. with_option Constrextern. print_universes pp ()
247247 else pp ()
248248 in
249- let env = Environ. set_qualities (QGraph. qvar_domain @@ Evd. elim_graph sigma) env in
249+ let env = Environ. set_qualities (Evd. elim_graph sigma) env in
250250 let squash = Option. get (Inductive. is_squashed env (specif, snd ind)) in
251251 match squash with
252252 | SquashToSet ->
You can’t perform that action at this time.
0 commit comments