sig
  type t
  val compare : t -> t -> int
  val equal : t -> t -> bool
  val hash : t -> int
  val to_string : t -> string
  val pp : Format.formatter -> t -> unit
  val parse : (Sl_tpair.t, 'a) MParser.parser
  val to_melt : t -> Latex.t
  val to_string_list : t -> string list
  val empty : t
  val is_empty : t -> bool
  val find : Sl_term.t -> t -> Sl_term.t
  val add : Sl_tpair.t -> t -> t
  val union : t -> t -> t
  val fold : (Sl_term.t -> Sl_term.t -> '-> 'a) -> t -> '-> 'a
  val for_all : (Sl_term.t -> Sl_term.t -> bool) -> t -> bool
  val diff : t -> t -> t
  val bindings : t -> Sl_tpair.t list
  val of_list : Sl_tpair.t list -> t
  val subst : Sl_subst.t -> t -> t
  val subst_subsumed : t -> Sl_unify.Unidirectional.continuation
  val terms : t -> Sl_term.Set.t
  val vars : t -> Sl_term.Set.t
  val equates : t -> Sl_term.t -> Sl_term.t -> bool
  val subsumed : t -> t -> bool
  val unify_partial :
    ?inverse:bool ->
    ?update_check:Sl_unify.Unidirectional.update_check ->
    t Sl_unify.Unidirectional.unifier
  val biunify_partial :
    ?update_check:Sl_unify.Bidirectional.update_check ->
    t Sl_unify.Bidirectional.unifier
  val remove : Sl_term.t -> t -> t
end