functor (T : TermInner.REPR->
  sig
    exception Fail of (T.t * T.t) list * string
    val unify_exn : T.t -> T.t -> unit
    type meta_vars_set = T.t MetaVar.t ID.Map.t
    val free_meta_vars :
      ?init:TypeUnify.Make.meta_vars_set ->
      T.t -> TypeUnify.Make.meta_vars_set
  end