Module Class

val try_add_new_coercion_with_target : Names.GlobRef.t -> local:bool -> poly:bool -> source:Classops.cl_typ -> target:Classops.cl_typ -> unit

try_add_new_coercion_with_target ref s src tg declares ref as a coercion from src to tg

val try_add_new_coercion : Names.GlobRef.t -> local:bool -> poly:bool -> unit

try_add_new_coercion ref s declares ref, assumed to be of type (x1:T1)...(xn:Tn)src->tg, as a coercion from src to tg

val try_add_new_coercion_subclass : Classops.cl_typ -> local:bool -> poly:bool -> unit

try_add_new_coercion_subclass cst s expects that cst denotes a transparent constant which unfolds to some class tg; it declares an identity coercion from cst to tg, named something like "Id_cst_tg"

val try_add_new_coercion_with_source : Names.GlobRef.t -> local:bool -> poly:bool -> source:Classops.cl_typ -> unit

try_add_new_coercion_with_source ref s src declares ref as a coercion from src to tg where the target is inferred from the type of ref

val try_add_new_identity_coercion : Names.Id.t -> local:bool -> poly:bool -> source:Classops.cl_typ -> target:Classops.cl_typ -> unit

try_add_new_identity_coercion id s src tg enriches the environment with a new definition of name id declared as an identity coercion from src to tg

val add_coercion_hook : poly:bool -> DeclareDef.Hook.t
val add_subclass_hook : poly:bool -> DeclareDef.Hook.t
val class_of_global : Names.GlobRef.t -> Classops.cl_typ