Fun_ctx.Bidirectional_map
include sig ... end
module M : sig ... end
module M_rev : sig ... end
type t = Soteria.Soteria_std.Z.t M.t * Symbol_std.t M_rev.t
val empty : 'a M.t * 'b M_rev.t
val is_empty : ('a M.t * 'b) -> bool
val cardinal : ('a M.t * 'b) -> int
val bindings : ('a M.t * 'b) -> (M.key * 'a) list
val bindings_rev : ('a * 'b M_rev.t) -> (M_rev.key * 'b) list
val add : M.key -> M_rev.key -> (M_rev.key M.t * M.key M_rev.t) -> M_rev.key M.t * M.key M_rev.t
val remove_l : M.key -> (M_rev.key M.t * 'a M_rev.t) -> M_rev.key M.t * 'a M_rev.t
val remove_r : M_rev.key -> ('a M.t * M.key M_rev.t) -> 'a M.t * M.key M_rev.t
val mem_l : M.key -> ('a M.t * 'b) -> bool
val mem_r : M_rev.key -> ('a * 'b M_rev.t) -> bool
val find_l : M.key -> ('a M.t * 'b) -> 'a option
val find_r : M_rev.key -> ('a * 'b M_rev.t) -> 'b option
val has_sym : M.key -> ('a M.t * 'b) -> bool
val get_loc_id : M.key -> ('a M.t * 'b) -> 'a option
val get_sym : M_rev.key -> ('a * 'b M_rev.t) -> 'b option