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 @@ -88,6 +88,7 @@ install_printer Top_printers.ppqconstraints
8888install_printer Top_printers.ppuniverseconstraints
8989install_printer Top_printers.ppuniverse_context_future
9090install_printer Top_printers.ppuniverses
91+ install_printer Top_printers.ppqualities
9192install_printer Top_printers.pp_partialfsubst
9293install_printer Top_printers.pp_partialsubst
9394install_printer Top_printers.ppnamedcontextval
Original file line number Diff line number Diff line change @@ -295,6 +295,7 @@ let ppuniverse_context_future c =
295295 let ctx = Future. force c in
296296 ppuniverse_context ctx
297297let ppuniverses u = pp (UGraph. pr_universes Level. raw_pr (UGraph. repr u))
298+ let ppqualities q = pp (QGraph. pr_qualities Quality. raw_pr q)
298299let ppnamedcontextval e =
299300 let env = Global. env () in
300301 let sigma = Evd. from_env env in
Original file line number Diff line number Diff line change @@ -167,6 +167,7 @@ val ppqconstraints : Sorts.ElimConstraints.t -> unit
167167val ppuniverseconstraints : UnivProblem.Set .t -> unit
168168val ppuniverse_context_future : UVars.UContext .t Future .computation -> unit
169169val ppuniverses : UGraph .t -> unit
170+ val ppqualities : QGraph .t -> unit
170171
171172val pp_partialfsubst : (CClosure .fconstr , Sorts.Quality .t , Univ.Universe .t ) Partial_subst .t -> unit
172173val pp_partialsubst : (EConstr .constr , Sorts.Quality .t , Univ.Universe .t ) Partial_subst .t -> unit
Original file line number Diff line number Diff line change @@ -494,7 +494,7 @@ let push_qualities qs env =
494494 (fun v -> QGraph. add_quality (Sorts.Quality. QVar v)) qs env.env_qualities in
495495 set_qualities g env
496496
497- let set_qualities qs env =
497+ let set_qvars qs env =
498498 let g = QGraph. initial_graph in
499499 let g = Sorts.QVar.Set. fold (fun v -> QGraph. add_quality (Sorts.Quality. QVar v)) qs g in
500500 { 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 @@ -1392,7 +1392,7 @@ let end_module l restype senv =
13921392 let mbids = List. rev_map fst params in
13931393 let mb = build_module_body params restype senv in
13941394 let newenv = Environ. set_universes (Environ. universes senv.env) oldsenv.env in
1395- let newenv = Environ. set_qualities (Environ. qvars senv.env) newenv in
1395+ let newenv = Environ. set_qualities (Environ. qualities senv.env) newenv in
13961396 let newenv = if Environ. rewrite_rules_allowed senv.env then Environ. allow_rewrite_rules newenv else newenv in
13971397 let newenv = Environ. set_vm_library (Environ. vm_library senv.env) newenv in
13981398 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 @@ -251,7 +251,7 @@ let explain_elim_arity env sigma ind c okinds =
251251 if ppunivs then Flags. with_option Constrextern. print_universes pp ()
252252 else pp ()
253253 in
254- let env = Environ. set_qualities (QGraph. qvar_domain @@ Evd. elim_graph sigma) env in
254+ let env = Environ. set_qualities (Evd. elim_graph sigma) env in
255255 let squash = Option. get (Inductive. is_squashed env (specif, snd ind)) in
256256 match squash with
257257 | SquashToSet ->
You can’t perform that action at this time.
0 commit comments