sig
  type 'a t
  val diff : 'St.t -> 'St.t -> 'St.t
  val empty : 'St.t
  val filter : ('-> bool) -> 'St.t -> 'St.t
  val insert : '-> 'St.t -> 'St.t
  val is_empty : 'St.t -> bool
  val mem : '-> 'St.t -> bool
  val fold : ('-> '-> 'b) -> '-> 'St.t -> 'b
  val remove : '-> 'St.t -> 'St.t
  val of_list : 'a list -> 'St.t
  val print_st :
    (Format.formatter -> '-> unit) -> Format.formatter -> 'St.t -> unit
  val singleton : '-> 'St.t
  val to_list : 'St.t -> 'a list
  val union : 'St.t -> 'St.t -> 'St.t
  val has_one : ('-> bool) -> 'St.t -> bool
  val find_by : ('-> bool) -> 'St.t -> 'a
  val remove_by : ('-> bool) -> 'St.t -> 'St.t
  val replace_by : ('-> bool) -> '-> 'St.t -> 'St.t
end