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 expand_if_one_branch : TypeCore.env -> TypeCore.typ -> TypeCore.typ
val collect : TypeCore.typ -> TypeCore.typ * TypeCore.typ list
val branches_for_branch :
TypeCore.env -> TypeCore.branch -> TypeCore.typ list
val branches_for_datacon :
TypeCore.env -> TypeCore.resolved_datacon -> TypeCore.typ list
val branch_for_datacon :
TypeCore.env -> TypeCore.resolved_datacon -> TypeCore.typ
val fields_for_datacon :
TypeCore.env -> TypeCore.resolved_datacon -> TypeCore.Field.name list
val flavor_for_datacon :
TypeCore.env -> TypeCore.resolved_datacon -> DataTypeFlavor.flavor
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 ty_open : TypeCore.var -> TypeCore.typ
val is_tyapp : TypeCore.typ -> (TypeCore.var * TypeCore.typ list) option
val is_star : TypeCore.env -> TypeCore.typ -> bool
val is_concrete : TypeCore.typ -> bool
val assert_concrete : TypeCore.typ -> TypeCore.branch
val is_tyopen : TypeCore.typ -> bool
val is_abbrev : TypeCore.env -> TypeCore.var -> bool
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 flatten_star : TypeCore.env -> TypeCore.typ -> TypeCore.typ list
val fold_star : TypeCore.typ list -> TypeCore.typ
val fold_forall :
(TypeCore.type_binding * TypeCore.flavor) list ->
TypeCore.typ -> TypeCore.typ
val fold_exists :
(TypeCore.type_binding * TypeCore.flavor) list ->
TypeCore.typ -> TypeCore.typ
val mark_reachable : TypeCore.env -> TypeCore.typ -> TypeCore.env
val bind_datacon_parameters :
TypeCore.env ->
Kind.kind ->
TypeCore.typ list -> TypeCore.env * TypeCore.var list * TypeCore.typ list
val instantiate_type : TypeCore.typ -> TypeCore.typ list -> TypeCore.typ
val find_and_instantiate_branch :
TypeCore.env ->
TypeCore.var -> Datacon.name -> TypeCore.typ list -> TypeCore.typ
val get_location : TypeCore.env -> TypeCore.var -> TypeCore.location
val get_adopts_clause : TypeCore.env -> TypeCore.var -> TypeCore.typ
val get_arity : TypeCore.env -> TypeCore.var -> int
val get_kind_for_type : TypeCore.env -> TypeCore.typ -> Kind.kind
val variance : TypeCore.env -> TypeCore.var -> int -> TypeCore.variance
val fresh_auto_name : string -> TypeCore.name
val make_datacon_letters :
TypeCore.env -> Kind.kind -> bool -> TypeCore.env * TypeCore.var list
module TypePrinter :
sig
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_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_branch : TypeCore.env -> TypeCore.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