sig
val fst3 : 'a * 'b * 'c -> 'a
val snd3 : 'a * 'b * 'c -> 'b
val thd3 : 'a * 'b * 'c -> 'c
val ( !! ) : TypeCore.typ -> TypeCore.var
val ( !!= ) : TypeCore.typ -> TypeCore.var
val ( !* ) : 'a Lazy.t -> 'a
val ( >>= ) : 'a option -> ('a -> 'b option) -> 'b option
val ( ||| ) : 'a option -> 'a option -> 'a option
val ( ^=> ) : bool -> bool -> bool
val ( |> ) : 'a -> ('a -> 'b) -> 'b
val ty_unit : TypeCore.typ
val ty_tuple : TypeCore.typ list -> TypeCore.typ
val ( @-> ) : TypeCore.typ -> TypeCore.typ -> TypeCore.typ
val ty_bar : TypeCore.typ -> TypeCore.typ -> TypeCore.typ
val ty_app : TypeCore.typ -> TypeCore.typ list -> TypeCore.typ
val ty_equals : TypeCore.var -> TypeCore.typ
val bind_datacon_parameters :
TypeCore.env ->
Kind.kind ->
TypeCore.unresolved_branch list ->
TypeCore.env * TypeCore.var list * TypeCore.unresolved_branch list
val instantiate_type : TypeCore.typ -> TypeCore.typ list -> TypeCore.typ
val instantiate_branch :
TypeCore.unresolved_branch ->
TypeCore.typ list -> TypeCore.unresolved_branch
val find_and_instantiate_branch :
TypeCore.env ->
TypeCore.var ->
Datacon.name -> TypeCore.typ list -> TypeCore.resolved_branch
val resolve_branch :
TypeCore.var -> TypeCore.unresolved_branch -> TypeCore.resolved_branch
val flatten_star : TypeCore.env -> TypeCore.typ -> TypeCore.typ list
val fold_star : TypeCore.typ list -> TypeCore.typ
val strip_forall :
TypeCore.typ ->
(TypeCore.type_binding * TypeCore.flavor) list * TypeCore.typ
val fold_forall :
(TypeCore.type_binding * TypeCore.flavor) list ->
TypeCore.typ -> TypeCore.typ
val fold_exists :
TypeCore.type_binding list -> TypeCore.typ -> TypeCore.typ
val expand_if_one_branch : TypeCore.env -> TypeCore.typ -> TypeCore.typ
val get_location : TypeCore.env -> TypeCore.var -> TypeCore.location
val get_adopts_clause : TypeCore.env -> TypeCore.var -> TypeCore.typ
val get_branches :
TypeCore.env -> TypeCore.var -> TypeCore.unresolved_branch list
val get_arity : TypeCore.env -> TypeCore.var -> int
val get_kind_for_type : TypeCore.env -> TypeCore.typ -> Kind.kind
val get_variance : TypeCore.env -> TypeCore.var -> TypeCore.variance list
val def_for_datacon :
TypeCore.env -> TypeCore.resolved_datacon -> TypeCore.data_type_def
val def_for_branch :
TypeCore.env -> TypeCore.resolved_branch -> TypeCore.data_type_def
val flavor_for_branch :
TypeCore.env -> TypeCore.resolved_branch -> DataTypeFlavor.flavor
val variance : TypeCore.env -> TypeCore.var -> int -> TypeCore.variance
val is_tyapp : TypeCore.typ -> (TypeCore.var * TypeCore.typ list) option
val is_term : TypeCore.env -> TypeCore.var -> bool
val is_perm : TypeCore.env -> TypeCore.var -> bool
val is_type : TypeCore.env -> TypeCore.var -> bool
val is_user : TypeCore.name -> bool
val fresh_auto_var : string -> TypeCore.name
val find_type_by_name :
TypeCore.env -> ?mname:string -> string -> TypeCore.typ
val make_datacon_letters :
TypeCore.env -> Kind.kind -> bool -> TypeCore.env * TypeCore.var list
module TypePrinter :
sig
val pdoc : Buffer.t -> ('env -> MzPprint.document) * 'env -> unit
val print_var : TypeCore.env -> TypeCore.name -> MzPprint.document
val pvar : Buffer.t -> TypeCore.env * TypeCore.name -> unit
val print_datacon : Datacon.name -> MzPprint.document
val print_field_name : TypeCore.Field.name -> MzPprint.document
val print_field : SurfaceSyntax.field -> MzPprint.document
val p_kind : Buffer.t -> Kind.kind -> unit
val print_names :
TypeCore.env -> TypeCore.name list -> MzPprint.document
val pnames : Buffer.t -> TypeCore.env * TypeCore.name list -> unit
val pname : Buffer.t -> TypeCore.env * TypeCore.var -> unit
val print_exports : TypeCore.env * Module.name -> PPrintEngine.document
val pexports : Buffer.t -> TypeCore.env * Module.name -> unit
val print_quantified :
TypeCore.env ->
string ->
TypeCore.name -> Kind.kind -> TypeCore.typ -> MzPprint.document
val print_point : TypeCore.env -> TypeCore.var -> MzPprint.document
val print_type : TypeCore.env -> TypeCore.typ -> MzPprint.document
val print_constraint :
TypeCore.env -> TypeCore.mode_constraint -> MzPprint.document
val print_data_field_def :
TypeCore.env -> TypeCore.data_field_def -> MzPprint.document
val print_unresolved_branch :
TypeCore.env -> TypeCore.unresolved_branch -> MzPprint.document
val pfact : Buffer.t -> Fact.fact -> unit
val print_facts : TypeCore.env -> MzPprint.document
val print_permission_list :
TypeCore.env * TypeCore.typ list -> MzPprint.document
val ppermission_list : Buffer.t -> TypeCore.env * TypeCore.var -> unit
val print_permissions : TypeCore.env -> MzPprint.document
val ppermissions : Buffer.t -> TypeCore.env -> unit
val ptype : Buffer.t -> TypeCore.env * TypeCore.typ -> unit
val penv : Buffer.t -> TypeCore.env -> unit
val pconstraint :
Buffer.t -> TypeCore.env * TypeCore.mode_constraint -> unit
val print_binders : TypeCore.env -> MzPprint.document
end
end