module type BIDIR =sig..end
type t
type left
type right
val empty : t
val is_empty : t -> bool
val add : t ->
left -> right -> t val remove : t ->
left -> right -> t val cardinal_left : t -> intval cardinal_right : t -> intval remove_left : t -> left -> t val remove_right : t -> right -> t val mem_left : t -> left -> boolval mem_right : t -> right -> boolval find_left : t ->
left -> right CCMultiMap.sequence val find_right : t ->
right -> left CCMultiMap.sequence val find1_left : t -> left -> right optionCCMultiMap.BIDIR.find_left but returns at most one valueval find1_right : t -> right -> left optionCCMultiMap.BIDIR.find_right but returns at most one valueval fold : ('a -> left -> right -> 'a) ->
'a -> t -> 'aval pairs : t ->
(left * right) CCMultiMap.sequence val add_pairs : t ->
(left * right) CCMultiMap.sequence ->
t val seq_left : t -> left CCMultiMap.sequence
val seq_right : t -> right CCMultiMap.sequence