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