sig
  type prefix = Bitpath.t
  type 'a t
  val empty : 'Bitpath_cover_map.Poly.t
  val is_empty : 'Bitpath_cover_map.Poly.t -> bool
  val const : '-> 'Bitpath_cover_map.Poly.t
  val is_const : 'Bitpath_cover_map.Poly.t -> bool
  val to_const : 'Bitpath_cover_map.Poly.t -> 'a
  val picki_first :
    'Bitpath_cover_map.Poly.t -> Bitpath_cover_map.Poly.prefix * 'a
  val picki_random :
    'Bitpath_cover_map.Poly.t -> Bitpath_cover_map.Poly.prefix * 'a
  val lower_half : 'Bitpath_cover_map.Poly.t -> 'Bitpath_cover_map.Poly.t
  val upper_half : 'Bitpath_cover_map.Poly.t -> 'Bitpath_cover_map.Poly.t
  val unzoom :
    Bitpath_cover_map.Poly.prefix ->
    'Bitpath_cover_map.Poly.t -> 'Bitpath_cover_map.Poly.t
  val zoom :
    Bitpath_cover_map.Poly.prefix ->
    'Bitpath_cover_map.Poly.t -> 'Bitpath_cover_map.Poly.t
  val cover_find :
    Bitpath_cover_map.Poly.prefix ->
    'Bitpath_cover_map.Poly.t -> Bitpath_cover_map.Poly.prefix
  val remove :
    Bitpath_cover_map.Poly.prefix ->
    'Bitpath_cover_map.Poly.t -> 'Bitpath_cover_map.Poly.t
  val intersect :
    Bitpath_cover_map.Poly.prefix ->
    'Bitpath_cover_map.Poly.t -> 'Bitpath_cover_map.Poly.t
  val cover_card : 'Bitpath_cover_map.Poly.t -> int
  val fold : ('-> '-> 'b) -> 'Bitpath_cover_map.Poly.t -> '-> 'b
  val foldi :
    (Bitpath_cover_map.Poly.prefix -> '-> '-> 'b) ->
    'Bitpath_cover_map.Poly.t -> '-> 'b
  val iter : ('-> unit) -> 'Bitpath_cover_map.Poly.t -> unit
  val iteri :
    (Bitpath_cover_map.Poly.prefix -> '-> unit) ->
    'Bitpath_cover_map.Poly.t -> unit
end