aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorherbelin1999-12-02 22:58:48 +0000
committerherbelin1999-12-02 22:58:48 +0000
commit4318eefacae280fed3a159acfede35c568b2942b (patch)
treefcbec538a568a7cc75af45fec579e121f84e2c77
parent8404c8cd83aa8c802b628afe0c222b87bc7956ef (diff)
Modifs suite à intégration de class.ml
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@192 85f007b7-540e-0410-9357-904b9bb8a0f7
-rw-r--r--.depend151
-rw-r--r--Makefile2
-rw-r--r--dev/changements.txt3
-rw-r--r--library/declare.ml4
-rwxr-xr-xpretyping/classops.ml12
-rw-r--r--pretyping/classops.mli4
-rw-r--r--toplevel/vernacentries.ml10
7 files changed, 113 insertions, 73 deletions
diff --git a/.depend b/.depend
index ef0db9d925..83d08a63a6 100644
--- a/.depend
+++ b/.depend
@@ -33,8 +33,8 @@ kernel/univ.cmi: kernel/names.cmi lib/pp.cmi
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/sign.cmi kernel/term.cmi
+library/declare.cmi: kernel/constant.cmi kernel/environ.cmi \
+ kernel/inductive.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/safe_typing.cmi \
kernel/sign.cmi kernel/term.cmi kernel/univ.cmi
@@ -51,7 +51,8 @@ library/summary.cmi: kernel/names.cmi
parsing/ast.cmi: parsing/coqast.cmi lib/dyn.cmi kernel/names.cmi \
parsing/pcoq.cmi lib/pp.cmi
parsing/astterm.cmi: parsing/coqast.cmi kernel/environ.cmi kernel/evd.cmi \
- kernel/names.cmi pretyping/rawterm.cmi kernel/sign.cmi kernel/term.cmi
+ kernel/names.cmi pretyping/rawterm.cmi kernel/sign.cmi \
+ pretyping/tacred.cmi kernel/term.cmi
parsing/coqast.cmi: lib/dyn.cmi
parsing/egrammar.cmi: parsing/ast.cmi parsing/coqast.cmi parsing/extend.cmi \
parsing/pcoq.cmi
@@ -138,12 +139,15 @@ tactics/tacentries.cmi: proofs/proof_trees.cmi proofs/tacmach.cmi
tactics/tacticals.cmi: proofs/clenv.cmi kernel/names.cmi tactics/pattern.cmi \
proofs/proof_trees.cmi kernel/reduction.cmi kernel/sign.cmi \
proofs/tacmach.cmi kernel/term.cmi tactics/wcclausenv.cmi
-tactics/tactics.cmi: proofs/clenv.cmi kernel/evd.cmi kernel/names.cmi \
- proofs/proof_trees.cmi kernel/reduction.cmi proofs/tacmach.cmi \
- pretyping/tacred.cmi tactics/tacticals.cmi kernel/term.cmi
+tactics/tactics.cmi: proofs/clenv.cmi kernel/environ.cmi kernel/evd.cmi \
+ kernel/names.cmi proofs/proof_trees.cmi kernel/reduction.cmi \
+ proofs/tacmach.cmi pretyping/tacred.cmi tactics/tacticals.cmi \
+ kernel/term.cmi
tactics/termdn.cmi: tactics/dn.cmi kernel/generic.cmi kernel/term.cmi
tactics/wcclausenv.cmi: proofs/clenv.cmi kernel/evd.cmi kernel/names.cmi \
proofs/proof_trees.cmi kernel/sign.cmi proofs/tacmach.cmi kernel/term.cmi
+toplevel/class.cmi: pretyping/classops.cmi library/declare.cmi \
+ kernel/names.cmi kernel/term.cmi
toplevel/command.cmi: parsing/coqast.cmi library/declare.cmi kernel/names.cmi \
pretyping/tacred.cmi kernel/term.cmi
toplevel/errors.cmi: parsing/coqast.cmi lib/pp.cmi
@@ -152,6 +156,7 @@ toplevel/himsg.cmi: kernel/environ.cmi kernel/names.cmi lib/pp.cmi \
toplevel/metasyntax.cmi: parsing/coqast.cmi parsing/extend.cmi
toplevel/mltop.cmi: library/libobject.cmi
toplevel/protectedtoplevel.cmi: lib/pp.cmi
+toplevel/record.cmi: kernel/names.cmi kernel/term.cmi
toplevel/searchisos.cmi: library/libobject.cmi kernel/names.cmi \
kernel/term.cmi
toplevel/toplevel.cmi: parsing/pcoq.cmi lib/pp.cmi
@@ -288,18 +293,18 @@ lib/tlm.cmo: lib/gmap.cmi lib/gset.cmi lib/tlm.cmi
lib/tlm.cmx: lib/gmap.cmx lib/gset.cmx lib/tlm.cmi
lib/util.cmo: lib/pp.cmi lib/util.cmi
lib/util.cmx: lib/pp.cmx lib/util.cmi
-library/declare.cmo: kernel/constant.cmi kernel/evd.cmi kernel/generic.cmi \
- library/global.cmi library/impargs.cmi library/indrec.cmi \
- kernel/inductive.cmi library/lib.cmi library/libobject.cmi \
- kernel/names.cmi library/nametab.cmi kernel/reduction.cmi kernel/sign.cmi \
- library/summary.cmi kernel/term.cmi kernel/univ.cmi lib/util.cmi \
- library/declare.cmi
-library/declare.cmx: kernel/constant.cmx kernel/evd.cmx kernel/generic.cmx \
- library/global.cmx library/impargs.cmx library/indrec.cmx \
- kernel/inductive.cmx library/lib.cmx library/libobject.cmx \
- kernel/names.cmx library/nametab.cmx kernel/reduction.cmx kernel/sign.cmx \
- library/summary.cmx kernel/term.cmx kernel/univ.cmx lib/util.cmx \
- library/declare.cmi
+library/declare.cmo: kernel/constant.cmi kernel/environ.cmi kernel/evd.cmi \
+ kernel/generic.cmi library/global.cmi library/impargs.cmi \
+ library/indrec.cmi kernel/inductive.cmi library/lib.cmi \
+ library/libobject.cmi kernel/names.cmi library/nametab.cmi \
+ kernel/reduction.cmi kernel/sign.cmi library/summary.cmi kernel/term.cmi \
+ kernel/univ.cmi lib/util.cmi library/declare.cmi
+library/declare.cmx: kernel/constant.cmx kernel/environ.cmx kernel/evd.cmx \
+ kernel/generic.cmx library/global.cmx library/impargs.cmx \
+ library/indrec.cmx kernel/inductive.cmx library/lib.cmx \
+ library/libobject.cmx kernel/names.cmx library/nametab.cmx \
+ kernel/reduction.cmx kernel/sign.cmx library/summary.cmx kernel/term.cmx \
+ kernel/univ.cmx lib/util.cmx library/declare.cmi
library/global.cmo: kernel/environ.cmi kernel/generic.cmi \
kernel/inductive.cmi kernel/instantiate.cmi kernel/safe_typing.cmi \
kernel/sign.cmi library/summary.cmi kernel/term.cmi lib/util.cmi \
@@ -362,20 +367,22 @@ parsing/ast.cmo: parsing/coqast.cmi lib/dyn.cmi lib/hashcons.cmi \
kernel/names.cmi parsing/pcoq.cmi lib/pp.cmi lib/util.cmi parsing/ast.cmi
parsing/ast.cmx: parsing/coqast.cmx lib/dyn.cmx lib/hashcons.cmx \
kernel/names.cmx parsing/pcoq.cmi lib/pp.cmx lib/util.cmx parsing/ast.cmi
-parsing/astterm.cmo: parsing/ast.cmi toplevel/command.cmi parsing/coqast.cmi \
- library/declare.cmi kernel/environ.cmi pretyping/evarutil.cmi \
- kernel/evd.cmi kernel/generic.cmi library/global.cmi library/impargs.cmi \
- kernel/names.cmi parsing/pcoq.cmi lib/pp.cmi pretyping/pretyping.cmi \
+parsing/astterm.cmo: parsing/ast.cmi kernel/closure.cmi toplevel/command.cmi \
+ parsing/coqast.cmi library/declare.cmi kernel/environ.cmi \
+ pretyping/evarutil.cmi kernel/evd.cmi kernel/generic.cmi \
+ library/global.cmi library/impargs.cmi kernel/names.cmi \
+ library/nametab.cmi parsing/pcoq.cmi lib/pp.cmi pretyping/pretyping.cmi \
pretyping/rawterm.cmi kernel/reduction.cmi kernel/sign.cmi \
- pretyping/syntax_def.cmi kernel/term.cmi pretyping/typing.cmi \
- lib/util.cmi toplevel/vernac.cmi parsing/astterm.cmi
-parsing/astterm.cmx: parsing/ast.cmx toplevel/command.cmx parsing/coqast.cmx \
- library/declare.cmx kernel/environ.cmx pretyping/evarutil.cmx \
- kernel/evd.cmx kernel/generic.cmx library/global.cmx library/impargs.cmx \
- kernel/names.cmx parsing/pcoq.cmi lib/pp.cmx pretyping/pretyping.cmx \
+ pretyping/syntax_def.cmi pretyping/tacred.cmi kernel/term.cmi \
+ pretyping/typing.cmi lib/util.cmi toplevel/vernac.cmi parsing/astterm.cmi
+parsing/astterm.cmx: parsing/ast.cmx kernel/closure.cmx toplevel/command.cmx \
+ parsing/coqast.cmx library/declare.cmx kernel/environ.cmx \
+ pretyping/evarutil.cmx kernel/evd.cmx kernel/generic.cmx \
+ library/global.cmx library/impargs.cmx kernel/names.cmx \
+ library/nametab.cmx parsing/pcoq.cmi lib/pp.cmx pretyping/pretyping.cmx \
pretyping/rawterm.cmi kernel/reduction.cmx kernel/sign.cmx \
- pretyping/syntax_def.cmx kernel/term.cmx pretyping/typing.cmx \
- lib/util.cmx toplevel/vernac.cmx parsing/astterm.cmi
+ pretyping/syntax_def.cmx pretyping/tacred.cmx kernel/term.cmx \
+ pretyping/typing.cmx lib/util.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/egrammar.cmo: parsing/ast.cmi parsing/coqast.cmi parsing/extend.cmi \
@@ -592,18 +599,20 @@ proofs/tacinterp.cmo: parsing/ast.cmi parsing/coqast.cmi proofs/macros.cmi \
proofs/tacinterp.cmx: parsing/ast.cmx parsing/coqast.cmx proofs/macros.cmx \
kernel/names.cmx lib/pp.cmx proofs/proof_trees.cmx proofs/tacmach.cmx \
kernel/term.cmx lib/util.cmx proofs/tacinterp.cmi
-proofs/tacmach.cmo: parsing/ast.cmi parsing/astterm.cmi kernel/environ.cmi \
- proofs/evar_refiner.cmi kernel/evd.cmi kernel/generic.cmi \
- kernel/instantiate.cmi proofs/logic.cmi kernel/names.cmi lib/pp.cmi \
- parsing/printer.cmi proofs/proof_trees.cmi kernel/reduction.cmi \
- proofs/refiner.cmi kernel/sign.cmi lib/stamps.cmi pretyping/tacred.cmi \
- kernel/term.cmi pretyping/typing.cmi lib/util.cmi proofs/tacmach.cmi
-proofs/tacmach.cmx: parsing/ast.cmx parsing/astterm.cmx kernel/environ.cmx \
- proofs/evar_refiner.cmx kernel/evd.cmx kernel/generic.cmx \
- kernel/instantiate.cmx proofs/logic.cmx kernel/names.cmx lib/pp.cmx \
- parsing/printer.cmx proofs/proof_trees.cmx kernel/reduction.cmx \
- proofs/refiner.cmx kernel/sign.cmx lib/stamps.cmx pretyping/tacred.cmx \
- kernel/term.cmx pretyping/typing.cmx lib/util.cmx proofs/tacmach.cmi
+proofs/tacmach.cmo: parsing/ast.cmi parsing/astterm.cmi library/declare.cmi \
+ kernel/environ.cmi proofs/evar_refiner.cmi kernel/evd.cmi \
+ kernel/generic.cmi kernel/instantiate.cmi proofs/logic.cmi \
+ kernel/names.cmi lib/pp.cmi parsing/printer.cmi proofs/proof_trees.cmi \
+ kernel/reduction.cmi proofs/refiner.cmi kernel/sign.cmi lib/stamps.cmi \
+ pretyping/tacred.cmi kernel/term.cmi pretyping/typing.cmi lib/util.cmi \
+ proofs/tacmach.cmi
+proofs/tacmach.cmx: parsing/ast.cmx parsing/astterm.cmx library/declare.cmx \
+ kernel/environ.cmx proofs/evar_refiner.cmx kernel/evd.cmx \
+ kernel/generic.cmx kernel/instantiate.cmx proofs/logic.cmx \
+ kernel/names.cmx lib/pp.cmx parsing/printer.cmx proofs/proof_trees.cmx \
+ kernel/reduction.cmx proofs/refiner.cmx kernel/sign.cmx lib/stamps.cmx \
+ pretyping/tacred.cmx kernel/term.cmx pretyping/typing.cmx lib/util.cmx \
+ proofs/tacmach.cmi
tactics/auto.cmo: tactics/btermdn.cmi proofs/clenv.cmi library/declare.cmi \
tactics/dhyp.cmi kernel/evd.cmi kernel/generic.cmi library/global.cmi \
tactics/hiddentac.cmi kernel/inductive.cmi library/lib.cmi \
@@ -688,20 +697,22 @@ tactics/tacticals.cmx: proofs/clenv.cmx library/declare.cmx \
tactics/pattern.cmx lib/pp.cmx proofs/proof_trees.cmx \
kernel/reduction.cmx kernel/sign.cmx proofs/tacmach.cmx kernel/term.cmx \
lib/util.cmx tactics/wcclausenv.cmx tactics/tacticals.cmi
-tactics/tactics.cmo: proofs/clenv.cmi library/declare.cmi kernel/environ.cmi \
- kernel/evd.cmi kernel/generic.cmi library/global.cmi library/indrec.cmi \
- kernel/inductive.cmi proofs/logic.cmi kernel/names.cmi \
- tactics/pattern.cmi proofs/pfedit.cmi lib/pp.cmi proofs/proof_trees.cmi \
- kernel/reduction.cmi kernel/sign.cmi proofs/tacinterp.cmi \
- proofs/tacmach.cmi pretyping/tacred.cmi tactics/tacticals.cmi \
- kernel/term.cmi lib/util.cmi tactics/tactics.cmi
-tactics/tactics.cmx: proofs/clenv.cmx library/declare.cmx kernel/environ.cmx \
- kernel/evd.cmx kernel/generic.cmx library/global.cmx library/indrec.cmx \
- kernel/inductive.cmx proofs/logic.cmx kernel/names.cmx \
- tactics/pattern.cmx proofs/pfedit.cmx lib/pp.cmx proofs/proof_trees.cmx \
- kernel/reduction.cmx kernel/sign.cmx proofs/tacinterp.cmx \
- proofs/tacmach.cmx pretyping/tacred.cmx tactics/tacticals.cmx \
- kernel/term.cmx lib/util.cmx tactics/tactics.cmi
+tactics/tactics.cmo: parsing/ast.cmi parsing/astterm.cmi proofs/clenv.cmi \
+ library/declare.cmi kernel/environ.cmi kernel/evd.cmi kernel/generic.cmi \
+ library/global.cmi library/indrec.cmi kernel/inductive.cmi \
+ proofs/logic.cmi kernel/names.cmi tactics/pattern.cmi proofs/pfedit.cmi \
+ lib/pp.cmi proofs/proof_trees.cmi kernel/reduction.cmi kernel/sign.cmi \
+ lib/stamps.cmi proofs/tacinterp.cmi proofs/tacmach.cmi \
+ pretyping/tacred.cmi tactics/tacticals.cmi kernel/term.cmi lib/util.cmi \
+ tactics/tactics.cmi
+tactics/tactics.cmx: parsing/ast.cmx parsing/astterm.cmx proofs/clenv.cmx \
+ library/declare.cmx kernel/environ.cmx kernel/evd.cmx kernel/generic.cmx \
+ library/global.cmx library/indrec.cmx kernel/inductive.cmx \
+ proofs/logic.cmx kernel/names.cmx tactics/pattern.cmx proofs/pfedit.cmx \
+ lib/pp.cmx proofs/proof_trees.cmx kernel/reduction.cmx kernel/sign.cmx \
+ lib/stamps.cmx proofs/tacinterp.cmx proofs/tacmach.cmx \
+ pretyping/tacred.cmx tactics/tacticals.cmx kernel/term.cmx lib/util.cmx \
+ tactics/tactics.cmi
tactics/termdn.cmo: tactics/dn.cmi kernel/generic.cmi kernel/term.cmi \
lib/util.cmi tactics/termdn.cmi
tactics/termdn.cmx: tactics/dn.cmx kernel/generic.cmx kernel/term.cmx \
@@ -714,6 +725,18 @@ tactics/wcclausenv.cmx: proofs/clenv.cmx kernel/environ.cmx kernel/evd.cmx \
kernel/generic.cmx library/global.cmx proofs/logic.cmx kernel/names.cmx \
lib/pp.cmx proofs/proof_trees.cmx kernel/reduction.cmx kernel/sign.cmx \
proofs/tacmach.cmx kernel/term.cmx lib/util.cmx tactics/wcclausenv.cmi
+toplevel/class.cmo: pretyping/classops.cmi kernel/constant.cmi \
+ library/declare.cmi kernel/environ.cmi kernel/evd.cmi kernel/generic.cmi \
+ library/global.cmi kernel/inductive.cmi kernel/instantiate.cmi \
+ library/lib.cmi toplevel/metasyntax.cmi kernel/names.cmi parsing/pcoq.cmi \
+ lib/pp.cmi pretyping/retyping.cmi kernel/term.cmi pretyping/typing.cmi \
+ lib/util.cmi toplevel/class.cmi
+toplevel/class.cmx: pretyping/classops.cmx kernel/constant.cmx \
+ library/declare.cmx kernel/environ.cmx kernel/evd.cmx kernel/generic.cmx \
+ library/global.cmx kernel/inductive.cmx kernel/instantiate.cmx \
+ library/lib.cmx toplevel/metasyntax.cmx kernel/names.cmx parsing/pcoq.cmi \
+ lib/pp.cmx pretyping/retyping.cmx kernel/term.cmx pretyping/typing.cmx \
+ lib/util.cmx toplevel/class.cmi
toplevel/command.cmo: parsing/ast.cmi parsing/astterm.cmi kernel/constant.cmi \
parsing/coqast.cmi library/declare.cmi kernel/environ.cmi kernel/evd.cmi \
kernel/generic.cmi library/global.cmi library/indrec.cmi \
@@ -768,6 +791,10 @@ toplevel/protectedtoplevel.cmo: toplevel/errors.cmi parsing/pcoq.cmi \
toplevel/protectedtoplevel.cmx: toplevel/errors.cmx parsing/pcoq.cmi \
lib/pp.cmx toplevel/vernac.cmx toplevel/vernacinterp.cmx \
toplevel/protectedtoplevel.cmi
+toplevel/record.cmo: toplevel/class.cmi library/declare.cmi kernel/names.cmi \
+ kernel/term.cmi lib/util.cmi toplevel/record.cmi
+toplevel/record.cmx: toplevel/class.cmx library/declare.cmx kernel/names.cmx \
+ kernel/term.cmx lib/util.cmx toplevel/record.cmi
toplevel/toplevel.cmo: parsing/ast.cmi toplevel/errors.cmi toplevel/mltop.cmi \
lib/options.cmi parsing/pcoq.cmi proofs/pfedit.cmi lib/pp.cmi \
toplevel/protectedtoplevel.cmi lib/util.cmi toplevel/vernac.cmi \
@@ -793,9 +820,9 @@ toplevel/vernacentries.cmo: parsing/ast.cmi parsing/astterm.cmi \
lib/options.cmi parsing/pcoq.cmi proofs/pfedit.cmi lib/pp.cmi \
lib/pp_control.cmi parsing/pretty.cmi parsing/printer.cmi \
proofs/proof_trees.cmi kernel/reduction.cmi proofs/refiner.cmi \
- toplevel/searchisos.cmi lib/stamps.cmi library/states.cmi lib/system.cmi \
- proofs/tacmach.cmi kernel/term.cmi kernel/typeops.cmi lib/util.cmi \
- toplevel/vernacinterp.cmi toplevel/vernacentries.cmi
+ lib/stamps.cmi library/states.cmi lib/system.cmi proofs/tacmach.cmi \
+ kernel/term.cmi kernel/typeops.cmi lib/util.cmi toplevel/vernacinterp.cmi \
+ toplevel/vernacentries.cmi
toplevel/vernacentries.cmx: parsing/ast.cmx parsing/astterm.cmx \
toplevel/command.cmx parsing/coqast.cmx library/declare.cmx \
kernel/environ.cmx kernel/evd.cmx parsing/extend.cmi library/global.cmx \
@@ -805,9 +832,9 @@ toplevel/vernacentries.cmx: parsing/ast.cmx parsing/astterm.cmx \
lib/options.cmx parsing/pcoq.cmi proofs/pfedit.cmx lib/pp.cmx \
lib/pp_control.cmx parsing/pretty.cmx parsing/printer.cmx \
proofs/proof_trees.cmx kernel/reduction.cmx proofs/refiner.cmx \
- toplevel/searchisos.cmi lib/stamps.cmx library/states.cmx lib/system.cmx \
- proofs/tacmach.cmx kernel/term.cmx kernel/typeops.cmx lib/util.cmx \
- toplevel/vernacinterp.cmx toplevel/vernacentries.cmi
+ lib/stamps.cmx library/states.cmx lib/system.cmx proofs/tacmach.cmx \
+ kernel/term.cmx kernel/typeops.cmx lib/util.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 d7911a880e..3cefd64806 100644
--- a/Makefile
+++ b/Makefile
@@ -75,7 +75,7 @@ TACTICS=tactics/dn.cmo tactics/termdn.cmo tactics/btermdn.cmo \
tactics/tacentries.cmo tactics/hiddentac.cmo tactics/elim.cmo
TOPLEVEL=toplevel/himsg.cmo toplevel/errors.cmo toplevel/vernacinterp.cmo \
- toplevel/metasyntax.cmo toplevel/command.cmo \
+ toplevel/metasyntax.cmo toplevel/command.cmo pretyping/class.cmo \
toplevel/vernacentries.cmo toplevel/vernac.cmo toplevel/mltop.cmo \
toplevel/protectedtoplevel.cmo toplevel/toplevel.cmo
diff --git a/dev/changements.txt b/dev/changements.txt
index 80698a0be8..92251833f9 100644
--- a/dev/changements.txt
+++ b/dev/changements.txt
@@ -51,6 +51,9 @@ Changements dans les fonctions :
mis_arity -> instantiate_arity
mis_lc -> instantiate_lc
+ Ex-Environ
+ mind_path -> Global.lookup_mind
+
Printer
gentermpr -> gen_pr_term
diff --git a/library/declare.ml b/library/declare.ml
index 2305f31ffa..ed63983f71 100644
--- a/library/declare.ml
+++ b/library/declare.ml
@@ -243,7 +243,9 @@ let global_reference_imps kind id =
c, list_of_implicits (constructor_implicits ((sp,i),j))
| _ -> assert false
-let global env id = global_reference CCI id
+let global env id =
+ try let _ = lookup_glob id (Environ.context env) in VAR id
+ with Not_found -> global_reference CCI id
let is_global id =
try
diff --git a/pretyping/classops.ml b/pretyping/classops.ml
index b8a95a0bcf..d21e1ba813 100755
--- a/pretyping/classops.ml
+++ b/pretyping/classops.ml
@@ -16,13 +16,13 @@ open Generic
type cte_typ =
| NAM_Var of identifier
| NAM_SP of section_path
- | NAM_Construct of section_path*int*int
+ | NAM_Construct of constructor_path
let cte_of_constr = function
| DOPN(Const sp,_) -> NAM_SP sp
| DOPN(MutInd (sp,_),_) -> NAM_SP sp
| VAR id -> NAM_Var id
- | DOPN(MutConstruct ((sp,i),j) ,_) -> NAM_Construct (sp,i,j)
+ | DOPN(MutConstruct cstr_cp,_) -> NAM_Construct cstr_cp
| _ -> raise Not_found
type cl_typ =
@@ -119,6 +119,10 @@ let search_info x l =
let class_info cl = search_info cl (!cLASSES)
+let class_exists cl =
+ try let _ = class_info cl in true
+ with Not_found -> false
+
(* class_info_from_index : int -> cl_typ * cl_info_typ *)
let class_info_from_index i = List.assoc i (!cLASSES)
@@ -127,6 +131,10 @@ let class_info_from_index i = List.assoc i (!cLASSES)
let coercion_info coe = search_info coe (!cOERCIONS)
+let coercion_exists coe =
+ try let _ = coercion_info coe in true
+ with Not_found -> false
+
(* coercion_info_from_index : int -> coe_typ * coe_info_typ *)
let coercion_info_from_index i =
diff --git a/pretyping/classops.mli b/pretyping/classops.mli
index 26188c8535..a4bf0ee8fc 100644
--- a/pretyping/classops.mli
+++ b/pretyping/classops.mli
@@ -26,7 +26,7 @@ type cl_info_typ = {
type cte_typ =
| NAM_Var of identifier
| NAM_SP of section_path
- | NAM_Construct of section_path * int * int
+ | NAM_Construct of constructor_path
type coe_typ = cte_typ
@@ -45,7 +45,9 @@ val coercions : unit -> (int * (coe_typ * coe_info_typ)) list
val cte_of_constr : constr -> cte_typ
val class_info : cl_typ -> (int * cl_info_typ)
+val class_exists : cl_typ -> bool
val class_info_from_index : int -> cl_typ * cl_info_typ
+val coercion_exists : coe_typ -> bool
val coercion_info : coe_typ -> (int * coe_info_typ)
val coercion_info_from_index : int -> coe_typ * coe_info_typ
val constructor_at_head : constr -> cl_typ * int
diff --git a/toplevel/vernacentries.ml b/toplevel/vernacentries.ml
index 25e29d7032..20d0a40c12 100644
--- a/toplevel/vernacentries.ml
+++ b/toplevel/vernacentries.ml
@@ -735,11 +735,11 @@ let _ =
definition_body_red id stre c red_option;
message ((string_of_id id) ^ " is defined");
if coe then begin
- Class.try_add_new_coercion (Some id) stre None None false;
+ Class.try_add_new_coercion id stre;
message ((string_of_id id) ^ " is now a coercion")
end;
if idcoe then
- Class.try_add_new_coercion None stre (Some (Left id)) None true;
+ Class.try_add_new_coercion_subclass stre id;
if objdef then Recordobj.objdef_declare id
| _ -> bad_vernac_args "DEFINITION")
@@ -767,8 +767,7 @@ let _ =
hypothesis_def_var (refining()) (string_of_id s)
stre c;
if coe then
- Class.try_add_new_coercion (Some s)
- stre None None false;
+ Class.try_add_new_coercion s stre;
message ((string_of_id s) ^ " is assumed"))
sl)
slcl
@@ -1142,8 +1141,7 @@ let _ =
in
let isid = identity = "IDENTITY" in
fun () ->
- Class.try_add_new_coercion (Some id) stre (Some (Left ids))
- (Some idt) isid;
+ Class.try_add_new_coercion id stre ids idt isid;
message ((string_of_id id) ^ " is now a coercion")
| _ -> bad_vernac_args "COERCION")
***)