sig
  type ('base, 'set) t = private
      Base of 'base
    | Set of 'set
    | Union of ('base, 'set) Set_lang.Raw.t * ('base, 'set) Set_lang.Raw.t
    | Inter of ('base, 'set) Set_lang.Raw.t * ('base, 'set) Set_lang.Raw.t
    | Diff of ('base, 'set) Set_lang.Raw.t * ('base, 'set) Set_lang.Raw.t
  val compare :
    ('base -> 'base -> int) ->
    ('set -> 'set -> int) ->
    ('base, 'set) Set_lang.Raw.t -> ('base, 'set) Set_lang.Raw.t -> int
end