sig
type kind = t
type t
val ty : t Type.t
val empty : t
val is_empty : t -> bool
val add : kind -> how -> t -> t
val singleton : kind -> how -> t
val remove : kind -> t -> t
val iter : (kind -> how -> unit) -> t -> unit
val fold : (kind -> how -> 'a -> 'a) -> t -> 'a -> 'a
end