sig
type 'a t
val empty : unit -> 'a Worklist.t
val clear : 'a Worklist.t -> unit
val is_empty : 'a Worklist.t -> bool
val mem : 'a Worklist.t -> 'a -> bool
val choose : 'a Worklist.t -> 'a
val remove : 'a Worklist.t -> 'a -> unit
val add : 'a Worklist.t -> 'a list -> unit
val extract : 'a Worklist.t -> 'a
val single : 'a -> 'a Worklist.t
val union : 'a Worklist.t -> 'a Worklist.t -> unit
end