sig
type locality = Local | Global of string
type generator_arity =
Ga_zeroary
| Ga_unary
| Ga_binary
| Ga_listary
| Ga_mary of int
type generator_info = {
gi_type_name : string;
gi_type_params : string list;
gi_target_type : Parsetree.core_type;
gi_generator_name : string;
gi_locality : Check.locality;
gi_arity : Check.generator_arity;
gi_arg_types : Parsetree.core_type list;
gi_relations : Parsetree.relations;
gi_location : Location.t;
gi_priv_flag : Asttypes.private_flag;
}
type msg = string
type error =
Unknown_generator of Longident.t
| No_neutral_element of Longident.t
| Public_type_with_relations of string
| Cannot_find_module of Longident.t
| Not_supported of string
| Relation_already_declared of Location.t
| Incompatible_types of Longident.t * Longident.t
| Invalid_pattern
| Pattern_not_headed_by_correct_generator of Longident.t
| Illegal_relation of Longident.t
| Incompatible_relations of Longident.t * Parsetree.relation *
Parsetree.relation
| Unsound_ordering of Check.msg
exception Error of Location.t * Check.error
val raise_error : Location.t -> Check.error -> 'a
val report_error : Format.formatter -> Check.error -> unit
val is_local_info : Check.generator_info -> bool
val is_private_info : Check.generator_info -> bool
val is_listary_info : Check.generator_info -> bool
val arity_of_info : Check.generator_info -> int
val add_type_decls :
Check.locality -> (string * Parsetree.type_declaration) list -> unit
val is_generator_ident : Longident.t -> bool
val find_generator_ident_info : Longident.t -> Check.generator_info
val find_generator_name_info : string -> Check.generator_info
val is_type_ident : Longident.t -> bool
val find_type_ident_declaration : Longident.t -> Parsetree.type_declaration
val find_type_name_declaration : string -> Parsetree.type_declaration
val find_generator_info : Parsetree.generator -> Check.generator_info
val is_listary_generator : Parsetree.generator -> bool
val is_local_generator : Parsetree.generator -> bool
val is_private_generator : Parsetree.generator -> bool
val arity_of_generator : Parsetree.generator -> int
val get_arity_of_generator : Parsetree.generator -> Check.generator_arity
val is_truly_unary_generator : Parsetree.generator -> bool
val neutral_element_of_generator :
Parsetree.generator -> Parsetree.generator
end