sig
type 'a symbol_table
and item = int
val create :
('a -> 'a -> bool) * ('a -> string) -> 'a SymbolTable.symbol_table
val mem : 'a SymbolTable.symbol_table -> 'a -> bool
val add_symbol : 'a SymbolTable.symbol_table -> 'a -> unit
val rm_symbol : 'a SymbolTable.symbol_table -> 'a -> unit
val lookup : 'a SymbolTable.symbol_table -> 'a -> SymbolTable.item
val get_symbol : 'a SymbolTable.symbol_table -> SymbolTable.item -> 'a
val get_index : 'a SymbolTable.symbol_table -> 'a -> SymbolTable.item
val iter : ('a -> int -> unit) -> 'a SymbolTable.symbol_table -> unit
val eq : 'a SymbolTable.symbol_table -> 'a -> 'a -> bool
val to_string : 'a SymbolTable.symbol_table -> 'a -> string
end