Skip to content

Commit d64406b

Browse files
committed
Have a more useful Environ.set_qualities
1 parent b1098e5 commit d64406b

File tree

10 files changed

+37
-4
lines changed

10 files changed

+37
-4
lines changed

dev/top_printers.dbg

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,7 @@ install_printer Top_printers.ppqconstraints
8888
install_printer Top_printers.ppuniverseconstraints
8989
install_printer Top_printers.ppuniverse_context_future
9090
install_printer Top_printers.ppuniverses
91+
install_printer Top_printers.ppqualities
9192
install_printer Top_printers.pp_partialfsubst
9293
install_printer Top_printers.pp_partialsubst
9394
install_printer Top_printers.ppnamedcontextval

dev/top_printers.ml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -295,6 +295,7 @@ let ppuniverse_context_future c =
295295
let ctx = Future.force c in
296296
ppuniverse_context ctx
297297
let ppuniverses u = pp (UGraph.pr_universes Level.raw_pr (UGraph.repr u))
298+
let ppqualities q = pp (QGraph.pr_qualities Quality.raw_pr q)
298299
let ppnamedcontextval e =
299300
let env = Global.env () in
300301
let sigma = Evd.from_env env in

dev/top_printers.mli

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -167,6 +167,7 @@ val ppqconstraints : Sorts.ElimConstraints.t -> unit
167167
val ppuniverseconstraints : UnivProblem.Set.t -> unit
168168
val ppuniverse_context_future : UVars.UContext.t Future.computation -> unit
169169
val ppuniverses : UGraph.t -> unit
170+
val ppqualities : QGraph.t -> unit
170171

171172
val pp_partialfsubst : (CClosure.fconstr, Sorts.Quality.t, Univ.Universe.t) Partial_subst.t -> unit
172173
val pp_partialsubst : (EConstr.constr, Sorts.Quality.t, Univ.Universe.t) Partial_subst.t -> unit

kernel/environ.ml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff 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 }

kernel/environ.mli

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,10 +74,11 @@ val named_context : env -> Constr.named_context
7474
val named_context_val : env -> named_context_val
7575

7676
val 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

7880
val qualities : env -> QGraph.t
7981
val qvars : env -> Sorts.QVar.Set.t
80-
val set_qualities : Sorts.QVar.Set.t -> env -> env
8182

8283
val typing_flags : env -> typing_flags
8384
val is_impredicative_set : env -> bool

kernel/qGraph.ml

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -275,6 +275,32 @@ let qvar_domain g =
275275

276276
let 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+
278304
let explain_quality_inconsistency prv r =
279305
let open Pp in
280306
let pr_cst = function

kernel/qGraph.mli

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,4 +99,6 @@ val qvar_domain : t -> QVar.Set.t
9999

100100
val is_empty : t -> bool
101101

102+
val pr_qualities : (Quality.t -> Pp.t) -> t -> Pp.t
103+
102104
val explain_quality_inconsistency : (QVar.t -> Pp.t) -> explanation option -> Pp.t

kernel/safe_typing.ml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff 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

pretyping/reductionops.ml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff 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

vernac/himsg.ml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff 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 ->

0 commit comments

Comments
 (0)