sig
  exception Internal_error of string
  exception Not_implemented of string
  val fatal_error : string -> 'a
  val not_implemented : string -> 'a
  val warning : string -> unit
  val add_assoc : ('k * 'v) list -> 'k * 'v -> ('k * 'v) list
  val collect_assoc : ('a -> ('k * 'v) list) -> 'a list -> ('k * 'v) list
  val fold_left : ('a -> 'b -> 'a) -> 'b list -> 'a -> 'a
  val id : 'a -> 'a
  val list_split_at : int -> 'a list -> 'a list * 'a list
  val bit_size : int -> int
end