sig
  type 'a def
  type def_e = Def : 'Logs.Tag.def -> Logs.Tag.def_e
  val def :
    ?doc:string ->
    string -> (Stdlib.Format.formatter -> '-> unit) -> 'Logs.Tag.def
  val name : 'Logs.Tag.def -> string
  val doc : 'Logs.Tag.def -> string
  val printer : 'Logs.Tag.def -> Stdlib.Format.formatter -> '-> unit
  val pp_def : Stdlib.Format.formatter -> 'Logs.Tag.def -> unit
  val list : unit -> Logs.Tag.def_e list
  type t = V : 'Logs.Tag.def * '-> Logs.Tag.t
  val pp : Stdlib.Format.formatter -> Logs.Tag.t -> unit
  type set
  val empty : Logs.Tag.set
  val is_empty : Logs.Tag.set -> bool
  val mem : 'Logs.Tag.def -> Logs.Tag.set -> bool
  val add : 'Logs.Tag.def -> '-> Logs.Tag.set -> Logs.Tag.set
  val rem : 'Logs.Tag.def -> Logs.Tag.set -> Logs.Tag.set
  val find : 'Logs.Tag.def -> Logs.Tag.set -> 'a option
  val get : 'Logs.Tag.def -> Logs.Tag.set -> 'a
  val fold : (Logs.Tag.t -> '-> 'a) -> Logs.Tag.set -> '-> 'a
  val pp_set : Stdlib.Format.formatter -> Logs.Tag.set -> unit
end