(************************************************************************) (* v * The Coq Proof Assistant / The Coq Development Team *) (* 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 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 is_instance : global_reference -> bool val is_method : constant -> 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 (* Use evar_extra for marking resolvable evars. *) val bool_in : bool -> Dyn.t val bool_out : Dyn.t -> bool val is_resolvable : evar_info -> bool val mark_unresolvable : evar_info -> evar_info 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 *)