Coercionopstype cl_typ = | CL_SORT| CL_FUN| CL_SECVAR of Names.variable| CL_CONST of Names.Constant.t| CL_IND of Names.inductive| CL_PROJ of Names.Projection.Repr.tThis is the type of class kinds
val subst_cl_typ : Environ.env -> Mod_subst.substitution -> cl_typ -> cl_typtype coe_typ = Names.GlobRef.tThis is the type of coercion kinds
type coe_info_typ = {coe_value : Names.GlobRef.t;coe_local : bool;coe_reversible : bool;coe_is_identity : bool;coe_is_projection : Names.Projection.Repr.t option;coe_source : cl_typ;coe_target : cl_typ;coe_param : int;}This is the type of infos for declared coercions
type inheritance_path = coe_info_typ listThis is the type of paths from a class to another
val class_exists : cl_typ -> boolval class_nparams : cl_typ -> intval find_class_type :
Environ.env ->
Evd.evar_map ->
EConstr.types ->
cl_typ * EConstr.EInstance.t * EConstr.constr listfind_class_type env sigma c returns the head reference of c, its universe instance and its arguments
val find_class_glob_type : 'a Glob_term.glob_constr_g -> cl_typval class_of :
Environ.env ->
Evd.evar_map ->
EConstr.types ->
EConstr.types * cl_typraises Not_found if not convertible to a class
val class_args_of :
Environ.env ->
Evd.evar_map ->
EConstr.types ->
EConstr.constr listval subst_coercion : Mod_subst.substitution -> coe_info_typ -> coe_info_typval declare_coercion :
Environ.env ->
Evd.evar_map ->
?update:bool ->
coe_info_typ ->
unitSet update to update an already declared coercion (default false).
val coercion_exists : coe_typ -> boolAccess to coercions infos
val coercion_info : coe_typ -> coe_info_typval coercion_type :
Environ.env ->
Evd.evar_map ->
coe_info_typ EConstr.puniverses ->
EConstr.tgiven one (or two) types these function also return the class (classes) of the type and its class_args_of
val lookup_path_between_class : (cl_typ * cl_typ) -> inheritance_pathval lookup_path_between :
Environ.env ->
Evd.evar_map ->
src:EConstr.types ->
tgt:EConstr.types ->
inheritance_pathval lookup_path_to_fun_from :
Environ.env ->
Evd.evar_map ->
EConstr.types ->
inheritance_pathval lookup_path_to_sort_from :
Environ.env ->
Evd.evar_map ->
EConstr.types ->
inheritance_pathval lookup_pattern_path_between :
Environ.env ->
(Names.inductive * Names.inductive) ->
(Names.constructor * int) listval path_is_reversible : inheritance_path -> boolval string_of_class : cl_typ -> stringThis is for printing purpose
val inheritance_graph : unit -> ((cl_typ * cl_typ) * inheritance_path) listval classes : unit -> cl_typ listval coercions : unit -> coe_info_typ listval hide_coercion : coe_typ -> int optionhide_coercion returns the number of params to skip if the coercion must be hidden, None otherwise; it raises Not_found if not a coercion
val reachable_from : cl_typ -> ClTypSet.t