sig
  type subs
  val empty : Subs.subs
  val is_empty : Subs.subs -> bool
  val subs : Var.var -> Term.term -> Subs.subs
  val add : Var.var -> Term.term -> Subs.subs -> Subs.subs
  val check_add : Var.var -> Term.term -> Subs.subs -> Subs.subs
  val find : Var.var -> Subs.subs -> Term.term
  val mem : Var.var -> Subs.subs -> bool
  val map : (Term.term -> Term.term) -> Subs.subs -> Subs.subs
  val apply : Subs.subs -> Term.term -> Term.term
  val domain : Subs.subs -> Var.VarSet.t
  val restrict : Subs.subs -> Var.VarSet.t -> Subs.subs
  val comp : Subs.subs -> Subs.subs -> Subs.subs
  val comp_res : Subs.subs -> Subs.subs -> Subs.subs
  val inverse : Subs.subs -> Subs.subs
  val fprintf : Format.formatter -> Subs.subs -> unit
end