sig
  type t
  val empty : Bogue.Selection.t
  val to_list : Bogue.Selection.t -> (int * int) list
  val of_list : (int * int) list -> Bogue.Selection.t
  val mem : Bogue.Selection.t -> int -> bool
  val toggle : Bogue.Selection.t -> int -> Bogue.Selection.t
  val remove : Bogue.Selection.t -> int -> Bogue.Selection.t
  val add : Bogue.Selection.t -> int -> Bogue.Selection.t
  val union : Bogue.Selection.t -> Bogue.Selection.t -> Bogue.Selection.t
  val intersect : Bogue.Selection.t -> Bogue.Selection.t -> Bogue.Selection.t
  val sprint : Bogue.Selection.t -> string
  val iter : (int -> unit) -> Bogue.Selection.t -> unit
end