aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorfilliatr1999-11-26 08:40:18 +0000
committerfilliatr1999-11-26 08:40:18 +0000
commit45800868bf532be4348ab7025144e4caec5c3a83 (patch)
tree481a220a932c5fdec4e5135474148f7ef07a3743
parent07ce425ee676ccee0bc1309855ea8343279b63f0 (diff)
ajouts divers pour module Printer
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@145 85f007b7-540e-0410-9357-904b9bb8a0f7
-rw-r--r--.depend101
-rw-r--r--Makefile6
-rw-r--r--kernel/environ.ml2
-rw-r--r--kernel/evd.ml4
-rw-r--r--kernel/evd.mli2
-rw-r--r--kernel/sign.ml1
-rw-r--r--kernel/sign.mli2
-rw-r--r--kernel/term.ml4
-rw-r--r--kernel/term.mli2
-rw-r--r--lib/options.ml9
-rw-r--r--lib/options.mli4
-rw-r--r--library/declare.ml6
-rw-r--r--library/declare.mli2
-rw-r--r--library/global.ml4
-rw-r--r--library/global.mli4
15 files changed, 109 insertions, 44 deletions
diff --git a/.depend b/.depend
index 4e90f43227..a0f5d45d1e 100644
--- a/.depend
+++ b/.depend
@@ -34,7 +34,7 @@ lib/gmapl.cmi: lib/gmap.cmi
lib/pp.cmi: lib/pp_control.cmi
lib/util.cmi: lib/pp.cmi
library/declare.cmi: kernel/constant.cmi kernel/inductive.cmi \
- kernel/names.cmi kernel/term.cmi
+ kernel/names.cmi kernel/sign.cmi kernel/term.cmi
library/global.cmi: kernel/constant.cmi kernel/environ.cmi \
kernel/inductive.cmi kernel/names.cmi kernel/sign.cmi kernel/term.cmi \
kernel/typing.cmi kernel/univ.cmi
@@ -51,12 +51,17 @@ parsing/ast.cmi: parsing/coqast.cmi lib/dyn.cmi parsing/pcoq.cmi lib/pp.cmi
parsing/astterm.cmi: kernel/evd.cmi kernel/names.cmi pretyping/rawterm.cmi \
kernel/term.cmi
parsing/coqast.cmi: lib/dyn.cmi
+parsing/esyntax.cmi: parsing/ast.cmi parsing/coqast.cmi parsing/extend.cmi \
+ lib/pp.cmi
+parsing/extend.cmi: parsing/ast.cmi parsing/coqast.cmi parsing/pcoq.cmi \
+ lib/pp.cmi
parsing/g_minicoq.cmi: kernel/names.cmi lib/pp.cmi kernel/sign.cmi \
kernel/term.cmi
parsing/pcoq.cmi: parsing/coqast.cmi
parsing/printer.cmi: parsing/coqast.cmi kernel/names.cmi lib/pp.cmi \
+ kernel/sign.cmi kernel/term.cmi
+parsing/termast.cmi: parsing/coqast.cmi kernel/names.cmi kernel/sign.cmi \
kernel/term.cmi
-parsing/termast.cmi: parsing/coqast.cmi kernel/names.cmi kernel/term.cmi
pretyping/classops.cmi: library/declare.cmi kernel/environ.cmi kernel/evd.cmi \
library/libobject.cmi kernel/names.cmi lib/pp.cmi kernel/term.cmi
pretyping/coercion.cmi: kernel/environ.cmi pretyping/evarutil.cmi \
@@ -333,13 +338,27 @@ parsing/astterm.cmo: parsing/ast.cmi parsing/astterm.cmi kernel/environ.cmi \
parsing/astterm.cmi
parsing/astterm.cmx: parsing/ast.cmx parsing/astterm.cmx kernel/environ.cmx \
kernel/evd.cmx kernel/generic.cmx toplevel/himsg.cmx kernel/names.cmx \
- parsing/pcoq.cmi lib/pp.cmx parsing/printer.cmi pretyping/rawterm.cmi \
+ parsing/pcoq.cmi lib/pp.cmx parsing/printer.cmx pretyping/rawterm.cmi \
kernel/term.cmx parsing/termast.cmx toplevel/vernac.cmx \
parsing/astterm.cmi
parsing/coqast.cmo: lib/dyn.cmi lib/hashcons.cmi parsing/coqast.cmi
parsing/coqast.cmx: lib/dyn.cmx lib/hashcons.cmx parsing/coqast.cmi
+parsing/esyntax.cmo: parsing/ast.cmi parsing/coqast.cmi parsing/extend.cmi \
+ lib/gmap.cmi lib/gmapl.cmi lib/pp.cmi lib/util.cmi parsing/esyntax.cmi
+parsing/esyntax.cmx: parsing/ast.cmx parsing/coqast.cmx parsing/extend.cmi \
+ lib/gmap.cmx lib/gmapl.cmx lib/pp.cmx lib/util.cmx parsing/esyntax.cmi
parsing/lexer.cmo: lib/util.cmi parsing/lexer.cmi
parsing/lexer.cmx: lib/util.cmx parsing/lexer.cmi
+parsing/printer.cmo: parsing/ast.cmi parsing/coqast.cmi library/declare.cmi \
+ parsing/esyntax.cmi parsing/extend.cmi library/global.cmi \
+ kernel/names.cmi library/nametab.cmi lib/options.cmi lib/pp.cmi \
+ kernel/sign.cmi kernel/term.cmi parsing/termast.cmi lib/util.cmi \
+ parsing/printer.cmi
+parsing/printer.cmx: parsing/ast.cmx parsing/coqast.cmx library/declare.cmx \
+ parsing/esyntax.cmx parsing/extend.cmi library/global.cmx \
+ kernel/names.cmx library/nametab.cmx lib/options.cmx lib/pp.cmx \
+ kernel/sign.cmx kernel/term.cmx parsing/termast.cmx lib/util.cmx \
+ parsing/printer.cmi
parsing/termast.cmo: parsing/ast.cmi parsing/coqast.cmi kernel/environ.cmi \
kernel/generic.cmi kernel/names.cmi library/nametab.cmi lib/options.cmi \
lib/pp.cmi kernel/term.cmi lib/util.cmi parsing/termast.cmi
@@ -348,19 +367,19 @@ parsing/termast.cmx: parsing/ast.cmx parsing/coqast.cmx kernel/environ.cmx \
lib/pp.cmx kernel/term.cmx lib/util.cmx parsing/termast.cmi
pretyping/classops.cmo: kernel/environ.cmi kernel/generic.cmi library/lib.cmi \
library/libobject.cmi library/library.cmi kernel/names.cmi lib/pp.cmi \
- parsing/printer.cmi kernel/reduction.cmi kernel/term.cmi \
- pretyping/classops.cmi
+ kernel/reduction.cmi kernel/term.cmi lib/util.cmi pretyping/classops.cmi
pretyping/classops.cmx: kernel/environ.cmx kernel/generic.cmx library/lib.cmx \
library/libobject.cmx library/library.cmx kernel/names.cmx lib/pp.cmx \
- parsing/printer.cmi kernel/reduction.cmx kernel/term.cmx \
- pretyping/classops.cmi
-pretyping/coercion.cmo: pretyping/classops.cmi pretyping/evarconv.cmi \
- kernel/evd.cmi kernel/generic.cmi toplevel/himsg.cmi kernel/names.cmi \
+ kernel/reduction.cmx kernel/term.cmx lib/util.cmx pretyping/classops.cmi
+pretyping/coercion.cmo: pretyping/classops.cmi kernel/environ.cmi \
+ pretyping/evarconv.cmi kernel/evd.cmi kernel/generic.cmi kernel/names.cmi \
pretyping/recordops.cmi kernel/reduction.cmi kernel/term.cmi \
+ kernel/type_errors.cmi kernel/typeops.cmi lib/util.cmi \
pretyping/coercion.cmi
-pretyping/coercion.cmx: pretyping/classops.cmx pretyping/evarconv.cmx \
- kernel/evd.cmx kernel/generic.cmx toplevel/himsg.cmx kernel/names.cmx \
+pretyping/coercion.cmx: pretyping/classops.cmx kernel/environ.cmx \
+ pretyping/evarconv.cmx kernel/evd.cmx kernel/generic.cmx kernel/names.cmx \
pretyping/recordops.cmx kernel/reduction.cmx kernel/term.cmx \
+ kernel/type_errors.cmx kernel/typeops.cmx lib/util.cmx \
pretyping/coercion.cmi
pretyping/evarconv.cmo: pretyping/classops.cmi pretyping/evarutil.cmi \
kernel/generic.cmi kernel/names.cmi pretyping/recordops.cmi \
@@ -369,11 +388,11 @@ pretyping/evarconv.cmx: pretyping/classops.cmx pretyping/evarutil.cmx \
kernel/generic.cmx kernel/names.cmx pretyping/recordops.cmx \
kernel/reduction.cmx kernel/term.cmx lib/util.cmx pretyping/evarconv.cmi
pretyping/evarutil.cmo: kernel/environ.cmi kernel/evd.cmi kernel/generic.cmi \
- toplevel/himsg.cmi kernel/names.cmi lib/pp.cmi parsing/printer.cmi \
- kernel/reduction.cmi kernel/term.cmi pretyping/evarutil.cmi
+ kernel/names.cmi lib/pp.cmi parsing/printer.cmi kernel/reduction.cmi \
+ kernel/term.cmi lib/util.cmi pretyping/evarutil.cmi
pretyping/evarutil.cmx: kernel/environ.cmx kernel/evd.cmx kernel/generic.cmx \
- toplevel/himsg.cmx kernel/names.cmx lib/pp.cmx parsing/printer.cmi \
- kernel/reduction.cmx kernel/term.cmx pretyping/evarutil.cmi
+ kernel/names.cmx lib/pp.cmx parsing/printer.cmx kernel/reduction.cmx \
+ kernel/term.cmx lib/util.cmx pretyping/evarutil.cmi
pretyping/pretype_errors.cmo: pretyping/pretype_errors.cmi
pretyping/pretype_errors.cmx: pretyping/pretype_errors.cmi
pretyping/pretyping.cmo: parsing/ast.cmi pretyping/classops.cmi \
@@ -393,12 +412,12 @@ pretyping/pretyping.cmx: parsing/ast.cmx pretyping/classops.cmx \
kernel/term.cmx kernel/type_errors.cmx kernel/typeops.cmx lib/util.cmx \
pretyping/pretyping.cmi
pretyping/recordops.cmo: pretyping/classops.cmi kernel/generic.cmi \
- toplevel/himsg.cmi library/libobject.cmi library/library.cmi \
- kernel/names.cmi lib/pp.cmi lib/pp_control.cmi kernel/term.cmi \
+ library/libobject.cmi library/library.cmi kernel/names.cmi lib/pp.cmi \
+ lib/pp_control.cmi kernel/term.cmi kernel/typeops.cmi lib/util.cmi \
pretyping/recordops.cmi
pretyping/recordops.cmx: pretyping/classops.cmx kernel/generic.cmx \
- toplevel/himsg.cmx library/libobject.cmx library/library.cmx \
- kernel/names.cmx lib/pp.cmx lib/pp_control.cmx kernel/term.cmx \
+ library/libobject.cmx library/library.cmx kernel/names.cmx lib/pp.cmx \
+ lib/pp_control.cmx kernel/term.cmx kernel/typeops.cmx lib/util.cmx \
pretyping/recordops.cmi
proofs/clenv.cmo: kernel/environ.cmi kernel/evd.cmi kernel/generic.cmi \
kernel/instantiate.cmi proofs/logic.cmi kernel/names.cmi lib/pp.cmi \
@@ -436,10 +455,10 @@ proofs/macros.cmx: parsing/ast.cmx parsing/coqast.cmx library/lib.cmx \
kernel/term.cmx lib/util.cmx proofs/macros.cmi
proofs/proof_trees.cmo: parsing/coqast.cmi kernel/environ.cmi kernel/evd.cmi \
kernel/names.cmi kernel/sign.cmi lib/stamps.cmi kernel/term.cmi \
- lib/util.cmi proofs/proof_trees.cmi
+ proofs/typing_ev.cmi lib/util.cmi proofs/proof_trees.cmi
proofs/proof_trees.cmx: parsing/coqast.cmx kernel/environ.cmx kernel/evd.cmx \
kernel/names.cmx kernel/sign.cmx lib/stamps.cmx kernel/term.cmx \
- lib/util.cmx proofs/proof_trees.cmi
+ proofs/typing_ev.cmx lib/util.cmx proofs/proof_trees.cmi
proofs/refiner.cmo: kernel/environ.cmi kernel/evd.cmi kernel/generic.cmi \
kernel/instantiate.cmi proofs/logic.cmi lib/pp.cmi proofs/proof_trees.cmi \
kernel/reduction.cmi kernel/sign.cmi lib/stamps.cmi kernel/term.cmi \
@@ -594,12 +613,12 @@ toplevel/errors.cmo: parsing/ast.cmi lib/options.cmi lib/pp.cmi lib/util.cmi \
toplevel/errors.cmi
toplevel/errors.cmx: parsing/ast.cmx lib/options.cmx lib/pp.cmx lib/util.cmx \
toplevel/errors.cmi
-toplevel/himsg.cmo: parsing/ast.cmi kernel/environ.cmi kernel/generic.cmi \
- kernel/names.cmi lib/pp.cmi kernel/reduction.cmi kernel/sign.cmi \
- kernel/term.cmi kernel/type_errors.cmi lib/util.cmi toplevel/himsg.cmi
-toplevel/himsg.cmx: parsing/ast.cmx kernel/environ.cmx kernel/generic.cmx \
- kernel/names.cmx lib/pp.cmx kernel/reduction.cmx kernel/sign.cmx \
- kernel/term.cmx kernel/type_errors.cmx lib/util.cmx toplevel/himsg.cmi
+toplevel/himsg.cmo: kernel/environ.cmi kernel/generic.cmi kernel/names.cmi \
+ lib/pp.cmi kernel/reduction.cmi kernel/sign.cmi kernel/term.cmi \
+ kernel/type_errors.cmi lib/util.cmi toplevel/himsg.cmi
+toplevel/himsg.cmx: kernel/environ.cmx kernel/generic.cmx kernel/names.cmx \
+ lib/pp.cmx kernel/reduction.cmx kernel/sign.cmx kernel/term.cmx \
+ kernel/type_errors.cmx lib/util.cmx toplevel/himsg.cmi
toplevel/minicoq.cmo: kernel/constant.cmi parsing/g_minicoq.cmi \
kernel/generic.cmi toplevel/himsg.cmi kernel/inductive.cmi \
kernel/names.cmi lib/pp.cmi kernel/sign.cmi kernel/term.cmi \
@@ -638,22 +657,22 @@ toplevel/vernac.cmx: parsing/ast.cmx parsing/coqast.cmx library/library.cmx \
toplevel/vernac.cmi
toplevel/vernacentries.cmo: parsing/ast.cmi pretyping/class.cmi \
pretyping/classops.cmi parsing/coqast.cmi library/declare.cmi \
- kernel/environ.cmi kernel/evd.cmi library/libobject.cmi \
- library/library.cmi proofs/macros.cmi kernel/names.cmi \
- library/nametab.cmi lib/options.cmi parsing/pcoq.cmi proofs/pfedit.cmi \
- lib/pp.cmi lib/pp_control.cmi proofs/proof_trees.cmi kernel/reduction.cmi \
- proofs/refiner.cmi library/states.cmi lib/system.cmi proofs/tacmach.cmi \
- kernel/term.cmi kernel/typing.cmi toplevel/vernacinterp.cmi \
- toplevel/vernacentries.cmi
+ kernel/environ.cmi kernel/evd.cmi parsing/extend.cmi \
+ library/libobject.cmi library/library.cmi proofs/macros.cmi \
+ kernel/names.cmi library/nametab.cmi lib/options.cmi parsing/pcoq.cmi \
+ proofs/pfedit.cmi lib/pp.cmi lib/pp_control.cmi proofs/proof_trees.cmi \
+ kernel/reduction.cmi proofs/refiner.cmi library/states.cmi lib/system.cmi \
+ proofs/tacmach.cmi kernel/term.cmi kernel/typing.cmi \
+ toplevel/vernacinterp.cmi toplevel/vernacentries.cmi
toplevel/vernacentries.cmx: parsing/ast.cmx pretyping/class.cmi \
pretyping/classops.cmx parsing/coqast.cmx library/declare.cmx \
- kernel/environ.cmx kernel/evd.cmx library/libobject.cmx \
- library/library.cmx proofs/macros.cmx kernel/names.cmx \
- library/nametab.cmx lib/options.cmx parsing/pcoq.cmi proofs/pfedit.cmi \
- lib/pp.cmx lib/pp_control.cmx proofs/proof_trees.cmx kernel/reduction.cmx \
- proofs/refiner.cmx library/states.cmx lib/system.cmx proofs/tacmach.cmx \
- kernel/term.cmx kernel/typing.cmx toplevel/vernacinterp.cmx \
- toplevel/vernacentries.cmi
+ kernel/environ.cmx kernel/evd.cmx parsing/extend.cmi \
+ library/libobject.cmx library/library.cmx proofs/macros.cmx \
+ kernel/names.cmx library/nametab.cmx lib/options.cmx parsing/pcoq.cmi \
+ proofs/pfedit.cmi lib/pp.cmx lib/pp_control.cmx proofs/proof_trees.cmx \
+ kernel/reduction.cmx proofs/refiner.cmx library/states.cmx lib/system.cmx \
+ proofs/tacmach.cmx kernel/term.cmx kernel/typing.cmx \
+ toplevel/vernacinterp.cmx toplevel/vernacentries.cmi
toplevel/vernacinterp.cmo: parsing/ast.cmi parsing/coqast.cmi lib/dyn.cmi \
toplevel/himsg.cmi kernel/names.cmi lib/options.cmi lib/pp.cmi \
proofs/proof_trees.cmi proofs/tacinterp.cmi lib/util.cmi \
diff --git a/Makefile b/Makefile
index 9819598d03..35d04737de 100644
--- a/Makefile
+++ b/Makefile
@@ -175,6 +175,12 @@ parsing/g_%.cmo: parsing/g_%.ml4 parsing/grammar.cma
parsing/g_%.cmx: parsing/g_%.ml4 parsing/grammar.cma
$(OCAMLOPT) $(OPTFLAGS) -c -pp "$(CAMLP4GRAMMAR) -impl" -impl $<
+parsing/extend.cmo: parsing/extend.ml4 parsing/grammar.cma
+ $(OCAMLC) $(BYTEFLAGS) -c -pp "$(CAMLP4GRAMMAR) -impl" -impl $<
+
+parsing/extend.cmx: parsing/extend.ml4 parsing/grammar.cma
+ $(OCAMLOPT) $(OPTFLAGS) -c -pp "$(CAMLP4GRAMMAR) -impl" -impl $<
+
beforedepend:: $(GRAMMARCMO)
# Default rules
diff --git a/kernel/environ.ml b/kernel/environ.ml
index 34261e7355..b4aaed5f0b 100644
--- a/kernel/environ.ml
+++ b/kernel/environ.ml
@@ -130,6 +130,8 @@ let lowercase_first_char id = String.lowercase (first_char id)
let id_of_global env = function
| Const sp ->
basename sp
+ | Evar ev ->
+ id_of_existential ev
| MutInd (sp,tyi) ->
(* Does not work with extracted inductive types when the first
inductive is logic : if tyi=0 then basename sp else *)
diff --git a/kernel/evd.ml b/kernel/evd.ml
index 52e1a936eb..dd387ddfb4 100644
--- a/kernel/evd.ml
+++ b/kernel/evd.ml
@@ -66,3 +66,7 @@ let is_defined sigma ev =
not (info.evar_body = Evar_empty)
let evar_hyps ev = get_globals (context ev.evar_env)
+
+let id_of_existential ev =
+ id_of_string ("?" ^ string_of_int ev)
+
diff --git a/kernel/evd.mli b/kernel/evd.mli
index 2e55f578e9..6aba6f08d6 100644
--- a/kernel/evd.mli
+++ b/kernel/evd.mli
@@ -49,3 +49,5 @@ val is_evar : 'a evar_map -> evar -> bool
val is_defined : 'a evar_map -> evar -> bool
val evar_hyps : 'a evar_info -> typed_type signature
+
+val id_of_existential : evar -> identifier
diff --git a/kernel/sign.ml b/kernel/sign.ml
index 26dc2b6170..5d7d5309b0 100644
--- a/kernel/sign.ml
+++ b/kernel/sign.ml
@@ -220,6 +220,7 @@ let map_var_env f (ENVIRON((dom,rang),r)) =
(fun na x (doml,rangl) -> (na::doml,(f x)::rangl))
dom rang ([],[]),r)
+let unitize_env env = map_rel_env (fun _ -> ()) env
type ('b,'a) search_result =
| GLOBNAME of identifier * 'b
diff --git a/kernel/sign.mli b/kernel/sign.mli
index af8dbe086f..2a0a567dec 100644
--- a/kernel/sign.mli
+++ b/kernel/sign.mli
@@ -85,3 +85,5 @@ type 'b assumptions = (typed_type,'b) env
type context = (typed_type,typed_type) env
type var_context = typed_type signature
+val unitize_env : 'a assumptions -> unit assumptions
+
diff --git a/kernel/term.ml b/kernel/term.ml
index f7b7b607fd..33056e5ba6 100644
--- a/kernel/term.ml
+++ b/kernel/term.ml
@@ -294,6 +294,10 @@ let is_small = function
let iskind c = isprop c or is_Type c
+let is_existential_oper = function
+ | Evar _ -> true
+ | _ -> false
+
let same_kind c1 c2 = (isprop c1 & isprop c2) or (is_Type c1 & is_Type c2)
let rec contents_of_kind = function
diff --git a/kernel/term.mli b/kernel/term.mli
index 194681154a..b2ca8658ea 100644
--- a/kernel/term.mli
+++ b/kernel/term.mli
@@ -239,6 +239,8 @@ val isprop : constr -> bool
val is_Type : constr -> bool
val iskind : constr -> bool
+val is_existential_oper : sorts oper -> bool
+
val isType : sorts -> bool
val is_small : sorts -> bool (* true for \textsf{Prop} and \textsf{Set} *)
diff --git a/lib/options.ml b/lib/options.ml
index 4e8597aaf5..e0cebb1ebb 100644
--- a/lib/options.ml
+++ b/lib/options.ml
@@ -24,3 +24,12 @@ let silently f x =
with e -> begin
silent := oldsilent; raise e
end
+
+(* The number of printed hypothesis in a goal *)
+
+let print_hyps_limit = ref (None : int option)
+let set_print_hyps_limit n = print_hyps_limit := Some n
+let unset_print_hyps_limit () = print_hyps_limit := None
+let print_hyps_limit () = !print_hyps_limit
+
+
diff --git a/lib/options.mli b/lib/options.mli
index 2d2a566bf0..c159767aec 100644
--- a/lib/options.mli
+++ b/lib/options.mli
@@ -14,3 +14,7 @@ val make_silent : bool -> unit
val is_silent : unit -> bool
val silently : ('a -> 'b) -> 'a -> 'b
+val set_print_hyps_limit : int -> unit
+val unset_print_hyps_limit : unit -> unit
+val print_hyps_limit : unit -> int option
+
diff --git a/library/declare.ml b/library/declare.ml
index 6336c03c6f..aca22ebd2c 100644
--- a/library/declare.ml
+++ b/library/declare.ml
@@ -161,14 +161,14 @@ let mind_oper_of_id sp id mib =
let global_operator sp id =
try
- let _ = Global.lookup_constant sp in Const sp
+ let cb = Global.lookup_constant sp in Const sp, cb.const_hyps
with Not_found ->
let mib = Global.lookup_mind sp in
- mind_oper_of_id sp id mib
+ mind_oper_of_id sp id mib, mib.mind_hyps
let global_reference kind id =
let sp = Nametab.sp_of_id kind id in
- let oper = global_operator sp id in
+ let (oper,_) = global_operator sp id in
let hyps = get_globals (Global.context ()) in
let ids = ids_of_sign hyps in
DOPN(oper, Array.of_list (List.map (fun id -> VAR id) ids))
diff --git a/library/declare.mli b/library/declare.mli
index e833d0bb80..9b0f969820 100644
--- a/library/declare.mli
+++ b/library/declare.mli
@@ -4,6 +4,7 @@
(*i*)
open Names
open Term
+open Sign
open Constant
open Inductive
(*i*)
@@ -36,6 +37,7 @@ val declare_eliminations : section_path -> unit
then constructs the corresponding term, associated to the current
environment of variables. *)
+val global_operator : section_path -> identifier -> sorts oper * var_context
val global_reference : path_kind -> identifier -> constr
val is_global : identifier -> bool
diff --git a/library/global.ml b/library/global.ml
index e6c4008067..3525d38344 100644
--- a/library/global.ml
+++ b/library/global.ml
@@ -45,6 +45,10 @@ let lookup_mind_specif c = lookup_mind_specif c !global_env
let export s = export !global_env s
let import cenv = global_env := import cenv !global_env
+(* Some instanciations of functions from [Environ]. *)
+
+let id_of_global = id_of_global !global_env
+
(* Re-exported functions of [Inductive], composed with [lookup_mind_specif]. *)
open Inductive
diff --git a/library/global.mli b/library/global.mli
index 4e186d35b5..22623424bb 100644
--- a/library/global.mli
+++ b/library/global.mli
@@ -38,6 +38,10 @@ val lookup_mind_specif : constr -> mind_specif
val export : string -> compiled_env
val import : compiled_env -> unit
+(*s Some functions of [Environ] instanciated on the global environment. *)
+
+val id_of_global : sorts oper -> identifier
+
(*s Re-exported functions of [Inductive], composed with
[lookup_mind_specif]. *)