sig   type key = pred   type 'a t   val is_empty : 'a t -> bool   val empty : 'a t   val add : key -> '-> 'a t -> 'a t   val mem : key -> 'a t -> bool   val find : key -> 'a t -> 'a   val remove : key -> 'a t -> 'a t   val compare : ('-> '-> int) -> 'a t -> 'a t -> int   val equal : ('-> '-> bool) -> 'a t -> 'a t -> bool   val iter : (key -> '-> unit) -> 'a t -> unit   val map : (key -> '-> 'b) -> 'a t -> 'b t   val mapf : (key -> '-> 'b option) -> 'a t -> 'b t   val mapq : (key -> '-> 'a option) -> 'a t -> 'a t   val filter : (key -> '-> bool) -> 'a t -> 'a t   val partition : (key -> '-> bool) -> 'a t -> 'a t * 'a t   val fold : (key -> '-> '-> 'b) -> 'a t -> '-> 'b   val union : (key -> '-> '-> 'a) -> 'a t -> 'a t -> 'a t   val inter : (key -> '-> '-> 'c) -> 'a t -> 'b t -> 'c t   val interf : (key -> '-> '-> 'c option) -> 'a t -> 'b t -> 'c t   val interq : (key -> '-> '-> 'a option) -> 'a t -> 'a t -> 'a t   val diffq : (key -> '-> '-> 'a option) -> 'a t -> 'a t -> 'a t   val merge :     (key -> 'a option -> 'b option -> 'c option) -> 'a t -> 'b t -> 'c t   val insert : (key -> '-> '-> 'a) -> key -> '-> 'a t -> 'a t   val change :     (key -> '-> 'a option -> 'a option) -> key -> '-> 'a t -> 'a t end