Functor TypeUnify.Make

module Make (T : TermInner.REPR) : sig .. end
Parameters:
T : TermInner.REPR

exception Fail of (T.t * T.t) list * string
Raised when unification fails. The list of pairs of types is the unification stack (with the innermost types first)
val unify_exn : T.t -> T.t -> unit
Unify the two types, modifying their binding in place.
Raises Fail if the types are not unifiable
type meta_vars_set = T.t MetaVar.t ID.Map.t 
val free_meta_vars : ?init:meta_vars_set -> T.t -> meta_vars_set
Compute the set of free meta variables that can be bound, mapped to their meta-variable