module SymbolPairIndex: Lm_index.LmIndex with type key = symbol * symbol
type key
type 'a t
val empty : 'a t
val is_empty : 'a t -> bool
val mem : 'a t -> key -> bool
val find : 'a t -> key -> 'a t * 'a
val find_index : 'a t -> key -> 'a t
val find_data : 'a t -> key -> 'a
val mem_list : 'a t -> key list -> bool
val find_list : 'a t ->
key list -> 'a t * 'a
val find_list_index : 'a t -> key list -> 'a t
val find_list_data : 'a t -> key list -> 'a
val add : 'a t -> key -> 'a -> 'a t
val add_i : 'a t ->
key -> 'a t * 'a -> 'a t
val remove : 'a t -> key -> 'a t
val add_list : 'a t ->
key list -> 'a list -> 'a t
val add_list_i : 'a t ->
key list ->
('a t * 'a) list -> 'a t
val add_entry : 'a t ->
key list -> 'a -> 'a t
val add_entry_i : 'a t ->
key list ->
'a t * 'a -> 'a t
val remove_entry : 'a t -> key list -> 'a t
val filter_add : 'a t ->
key -> ('a option -> 'a) -> 'a t
val filter_add_i : 'a t ->
key ->
(('a t * 'a) option -> 'a t * 'a) ->
'a t
val filter_remove : 'a t ->
key -> ('a -> 'a option) -> 'a t
val filter_remove_i : 'a t ->
key ->
('a t * 'a -> ('a t * 'a) option) ->
'a t
val filter_add_list : 'a t ->
key list -> ('a option -> 'a) list -> 'a t
val filter_add_list_i : 'a t ->
key list ->
(('a t * 'a) option -> 'a t * 'a) list ->
'a t
val filter_add_entry : 'a t ->
key list -> ('a option -> 'a) -> 'a t
val filter_add_entry_i : 'a t ->
key list ->
(('a t * 'a) option -> 'a t * 'a) ->
'a t
val filter_remove_entry : 'a t ->
key list -> ('a -> 'a option) -> 'a t
val filter_remove_entry_i : 'a t ->
key list ->
('a t * 'a -> ('a t * 'a) option) ->
'a t
val iter : (key -> 'a t * 'a -> unit) ->
'a t -> unit
val map : ('a t * 'a -> 'b t * 'b) ->
'a t -> 'b t
val mapi : (key ->
'a t * 'a -> 'b t * 'b) ->
'a t -> 'b t
val fold : ('a -> key -> 'b t * 'b -> 'a) ->
'a -> 'b t -> 'a
val fold_map : ('a ->
key ->
'b t * 'b -> 'a * ('c t * 'c)) ->
'a -> 'b t -> 'a * 'c t
val iter_all : (key list -> 'a -> unit) -> 'a t -> unit
val map_all : ('a -> 'b) -> 'a t -> 'b t
val mapi_all : (key list -> 'a -> 'b) ->
'a t -> 'b t
val fold_all : ('a -> key list -> 'b -> 'a) ->
'a -> 'b t -> 'a
val fold_map_all : ('a -> key list -> 'b -> 'a * 'c) ->
'a -> 'b t -> 'a * 'c t