sig
val unification :
bool ->
Flx_types.symbol_table_t ->
(Flx_types.btypecode_t * Flx_types.btypecode_t) list ->
Flx_mtypes1.IntSet.t -> (int * Flx_types.btypecode_t) list
val maybe_unification :
Flx_types.symbol_table_t ->
(Flx_types.btypecode_t * Flx_types.btypecode_t) list ->
(int * Flx_types.btypecode_t) list option
val maybe_matches :
Flx_types.symbol_table_t ->
(Flx_types.btypecode_t * Flx_types.btypecode_t) list ->
(int * Flx_types.btypecode_t) list option
val maybe_specialisation :
Flx_types.symbol_table_t ->
(Flx_types.btypecode_t * Flx_types.btypecode_t) list ->
(int * Flx_types.btypecode_t) list option
val unifies :
Flx_types.symbol_table_t ->
Flx_types.btypecode_t -> Flx_types.btypecode_t -> bool
val compare_sigs :
Flx_types.symbol_table_t ->
Flx_types.btypecode_t ->
Flx_types.btypecode_t -> Flx_types.partial_order_result_t
val do_unify :
Flx_mtypes2.sym_state_t ->
Flx_types.btypecode_t -> Flx_types.btypecode_t -> bool
val type_eq :
Flx_types.symbol_table_t ->
Flx_types.btypecode_t -> Flx_types.btypecode_t -> bool
val type_match :
Flx_types.symbol_table_t ->
Flx_types.btypecode_t -> Flx_types.btypecode_t -> bool
val lstrip :
Flx_types.symbol_table_t ->
Flx_types.btypecode_t -> Flx_types.btypecode_t
val unfold :
Flx_types.symbol_table_t ->
Flx_types.btypecode_t -> Flx_types.btypecode_t
val fold :
Flx_types.symbol_table_t ->
Flx_types.btypecode_t -> Flx_types.btypecode_t
val minimise :
Flx_types.symbol_table_t ->
Flx_types.btypecode_t -> Flx_types.btypecode_t
val list_subst :
(int * Flx_types.btypecode_t) list ->
Flx_types.btypecode_t -> Flx_types.btypecode_t
val mk_varmap :
(string * int) list ->
Flx_types.btypecode_t list -> (int, Flx_types.btypecode_t) Hashtbl.t
val tsubst :
(string * int) list ->
Flx_types.btypecode_t list ->
Flx_types.btypecode_t -> Flx_types.btypecode_t
val varmap_subst :
(int, Flx_types.btypecode_t) Hashtbl.t ->
Flx_types.btypecode_t -> Flx_types.btypecode_t
val var_occurs : Flx_types.btypecode_t -> bool
val var_i_occurs : int -> Flx_types.btypecode_t -> bool
val var_list_occurs : int list -> Flx_types.btypecode_t -> bool
val normalise_type :
Flx_types.btypecode_t -> int list * Flx_types.btypecode_t
val check_recursion : Flx_types.btypecode_t -> unit
val dual : Flx_types.btypecode_t -> Flx_types.btypecode_t
end