functor (O : Immutable_types.Comparable->
  sig
    type t
    val make : unit -> t
    val merge : t -> t -> t
    type elt = O.t
    val add : elt -> t -> t
    val value : t -> elt list
    val lookup : elt -> t -> bool
    val remove : elt -> t -> t
  end