sig
  type t = Sl_term.t Sl_term.Map.t
  type var = Sl_term.t
  type var_container = Sl_term.Set.t
  val empty : t
  val singleton : var -> var -> t
  val of_list : (var * var) list -> t
  val avoid : var_container -> var_container -> t
  val pp : Format.formatter -> t -> unit
  val to_string : t -> string
  val apply : t -> var -> var
  val partition : t -> t * t
  val strip : t -> t
  val mk_free_subst : var_container -> var_container -> t
  val mk_ex_subst : var_container -> var_container -> t
end