sig
  val split :
    ('a -> 'a -> int) -> 'a -> 'a Sette.t -> 'a Sette.t * bool * 'a Sette.t
  val add : ('a -> 'a -> int) -> 'a -> 'a Sette.t -> 'a Sette.t
  val mem : ('a -> 'a -> int) -> 'a -> 'a Sette.t -> bool
  val remove : ('a -> 'a -> int) -> 'a -> 'a Sette.t -> 'a Sette.t
  val union : ('a -> 'a -> int) -> 'a Sette.t -> 'a Sette.t -> 'a Sette.t
  val inter : ('a -> 'a -> int) -> 'a Sette.t -> 'a Sette.t -> 'a Sette.t
  val diff : ('a -> 'a -> int) -> 'a Sette.t -> 'a Sette.t -> 'a Sette.t
  val equal : ('a -> 'a -> int) -> 'a Sette.t -> 'a Sette.t -> bool
  val compare : ('a -> 'a -> int) -> 'a Sette.t -> 'a Sette.t -> int
  val subset : ('a -> 'a -> int) -> 'a Sette.t -> 'a Sette.t -> bool
  val filter : ('a -> 'a -> int) -> ('a -> bool) -> 'a Sette.t -> 'a Sette.t
  val partition :
    ('a -> 'a -> int) ->
    ('a -> bool) -> 'a Sette.t -> 'a Sette.t * 'a Sette.t
end