Module Structures.Structure
A structure S is a non recursive inductive type with a single constructor
type projection
=
{
proj_name : Names.Name.t;
field name
proj_true : bool;
false = projection for a defined field (letin)
proj_canonical : bool;
false = not to be used for CS inference
proj_body : Names.Constant.t option;
the projection function
}
A projection to a structure field
type t
=
{
name : Names.inductive;
projections : projection list;
nparams : int;
}
val make : Environ.env -> Names.inductive -> projection list -> t
val register : t -> unit
val subst : Mod_subst.substitution -> t -> t
val rebuild : Environ.env -> t -> t
refreshes nparams, e.g. after section discharging
val find : Names.inductive -> t
find isp
returns the Structure.t associated to the inductive pathisp
if it corresponds to a structure, otherwise it fails withNot_found
val find_from_projection : Names.Constant.t -> t
raise
Not_found
if not a structure projection
val find_projections : Names.inductive -> Names.Constant.t option list
lookup_projections isp
returns the projections associated to the inductive pathisp
if it corresponds to a structure, otherwise it fails withNot_found
val projection_nparams : Names.Constant.t -> int
raise
Not_found
if not a projection
val is_projection : Names.Constant.t -> bool