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