sig
  type 'a t = 'Package.Set.t
  val empty : 'a t
  val is_empty : 'a t -> bool
  val add : 'Package.Name.t -> 'a t -> 'a t
  val from_list : 'Package.Name.t list -> 'a t
  val mem : 'Package.Name.t -> 'a t -> bool
  val exists : ('Package.Name.t -> bool) -> 'a t -> bool
  val iter : ('Package.Name.t -> unit) -> 'a t -> unit
  val cardinal : 'a t -> int
  val elements : 'a t -> 'Package.Name.t list
  val fold : ('Package.Name.t -> '-> 'b) -> 'a t -> '-> 'b
  val filter : ('Package.Name.t -> bool) -> 'a t -> 'a t
end