aboutsummaryrefslogtreecommitdiffhomepage
path: root/pretyping/typeclasses.mli
diff options
context:
space:
mode:
authorGravatar msozeau <msozeau@85f007b7-540e-0410-9357-904b9bb8a0f7>2008-06-21 17:10:28 +0000
committerGravatar msozeau <msozeau@85f007b7-540e-0410-9357-904b9bb8a0f7>2008-06-21 17:10:28 +0000
commit8874a5916bc43acde325f67a73544a4beb65c781 (patch)
treedc87ed564b07fd3901d33f3e570d42df501654f7 /pretyping/typeclasses.mli
parent15682aeca70802dba6f7e13b66521d4ab9e13af9 (diff)
Code cleanup in typeclasses, remove dead and duplicated code.
Change from named_context to rel_context for class params and fields. git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@11163 85f007b7-540e-0410-9357-904b9bb8a0f7
Diffstat (limited to 'pretyping/typeclasses.mli')
-rw-r--r--pretyping/typeclasses.mli50
1 files changed, 15 insertions, 35 deletions
diff --git a/pretyping/typeclasses.mli b/pretyping/typeclasses.mli
index 412b99e57..09f6a7696 100644
--- a/pretyping/typeclasses.mli
+++ b/pretyping/typeclasses.mli
@@ -30,12 +30,12 @@ type typeclass = {
(* Context in which the definitions are typed. Includes both typeclass parameters and superclasses.
The boolean indicates if the typeclass argument is a direct superclass. *)
- cl_context : ((global_reference * bool) option * named_declaration) list;
+ cl_context : ((global_reference * bool) option * rel_declaration) list;
cl_params : int; (* This is the length of the suffix of the context which should be considered explicit parameters. *)
(* Context of definitions and properties on defs, will not be shared *)
- cl_props : named_context;
+ cl_props : rel_context;
(* The methods implementations of the typeclass as projections. *)
cl_projs : (identifier * constant) list;
@@ -43,33 +43,31 @@ type typeclass = {
type instance
-val instance_impl : instance -> constant
-
-val new_instance : typeclass -> int option -> bool -> constant -> instance
-
val instances : global_reference -> instance list
val typeclasses : unit -> typeclass list
+
val add_class : typeclass -> unit
-val add_instance : instance -> unit
-val register_add_instance_hint : (constant -> int option -> unit) -> unit
-val add_instance_hint : constant -> int option -> unit
+val new_instance : typeclass -> int option -> bool -> constant -> instance
+val add_instance : instance -> unit
val class_info : global_reference -> typeclass (* raises a UserError if not a class *)
-val is_class : global_reference -> bool
+
val class_of_constr : constr -> typeclass option
val dest_class_app : constr -> typeclass * constr array (* raises a UserError if not a class *)
+val instance_impl : instance -> constant
+
+val is_class : global_reference -> bool
val is_instance : global_reference -> bool
val is_method : constant -> bool
+val is_implicit_arg : hole_kind -> bool
+
(* Returns the term and type for the given instance of the parameters and fields
of the type class. *)
-val instance_constructor : typeclass -> constr list -> constr * types
-val resolve_one_typeclass : env -> types -> types (* Raises Not_found *)
-val resolve_one_typeclass_evd : env -> evar_defs ref -> types -> types (* Raises Not_found *)
-val resolve_typeclass : env -> evar -> evar_info -> evar_defs * bool -> evar_defs * bool
+val instance_constructor : typeclass -> constr list -> constr * types
(* Use evar_extra for marking resolvable evars. *)
val bool_in : bool -> Dyn.t
@@ -81,25 +79,7 @@ val mark_unresolvables : evar_map -> evar_map
val resolve_typeclasses : ?onlyargs:bool -> ?split:bool -> ?fail:bool -> env -> evar_defs -> evar_defs
-val solve_instanciation_problem : (env -> evar_defs -> existential_key -> evar_info -> evar_defs * bool) ref
-val solve_instanciations_problem : (env -> evar_defs -> bool -> bool -> bool -> evar_defs) ref
-
-type substitution = (identifier * constr) list
-
-val substitution_of_named_context :
- evar_defs ref -> env -> identifier -> int ->
- substitution -> named_context -> substitution
-
-val nf_substitution : evar_map -> substitution -> substitution
-
-val is_implicit_arg : hole_kind -> bool
-
-(* debug *)
-
-(* val subst : *)
-(* 'a * Mod_subst.substitution * *)
-(* ((Libnames.global_reference, typeclass) Gmap.t * 'b * *)
-(* ('c, instance list) Gmap.t) -> *)
-(* (Libnames.global_reference, typeclass) Gmap.t * 'b * *)
-(* ('c, instance list) Gmap.t *)
+val register_add_instance_hint : (constant -> int option -> unit) -> unit
+val add_instance_hint : constant -> int option -> unit
+val solve_instanciations_problem : (env -> evar_defs -> bool -> bool -> bool -> evar_defs) ref