sig
  type t
  val make : unit -> t
  val merge : t -> t -> t
  type elt
  val add : elt -> t -> t
  val value : t -> elt list
  val lookup : elt -> t -> bool
  val remove : elt -> t -> t
end