sig
  type category
  type warn_category
  val verbose_atleast : int -> bool
  val debug_atleast : int -> bool
  val printf :
    ?level:int ->
    ?dkey:category ->
    ?current:bool ->
    ?source:Filepath.position ->
    ?append:(Format.formatter -> unit) ->
    ?header:(Format.formatter -> unit) ->
    ('a, Format.formatter, unit) format -> 'a
  val result : ?level:int -> ?dkey:category -> 'Log.pretty_printer
  val feedback :
    ?ontty:Log.ontty -> ?level:int -> ?dkey:category -> 'Log.pretty_printer
  val debug : ?level:int -> ?dkey:category -> 'Log.pretty_printer
  val warning : ?wkey:warn_category -> 'Log.pretty_printer
  val error : 'Log.pretty_printer
  val abort : ('a, 'b) Log.pretty_aborter
  val failure : 'Log.pretty_printer
  val fatal : ('a, 'b) Log.pretty_aborter
  val verify : bool -> ('a, bool) Log.pretty_aborter
  val not_yet_implemented :
    ?current:bool ->
    ?source:Filepath.position ->
    ('a, Format.formatter, unit, 'b) format4 -> 'a
  val deprecated : string -> now:string -> ('-> 'b) -> '-> 'b
  val with_result : (Log.event option -> 'b) -> ('a, 'b) Log.pretty_aborter
  val with_warning : (Log.event option -> 'b) -> ('a, 'b) Log.pretty_aborter
  val with_error : (Log.event option -> 'b) -> ('a, 'b) Log.pretty_aborter
  val with_failure : (Log.event option -> 'b) -> ('a, 'b) Log.pretty_aborter
  val log :
    ?kind:Log.kind -> ?verbose:int -> ?debug:int -> 'Log.pretty_printer
  val logwith :
    (Log.event option -> 'b) ->
    ?wkey:warn_category ->
    ?emitwith:(Log.event -> unit) ->
    ?once:bool -> ('a, 'b) Log.pretty_aborter
  val register : Log.kind -> (Log.event -> unit) -> unit
  val register_tag_handlers : (string -> string) * (string -> string) -> unit
  val register_category : string -> category
  val pp_category : Format.formatter -> category -> unit
  val dkey_name : category -> string
  val is_registered_category : string -> bool
  val get_category : string -> category option
  val get_all_categories : unit -> category list
  val add_debug_keys : category -> unit
  val del_debug_keys : category -> unit
  val get_debug_keys : unit -> category list
  val is_debug_key_enabled : category -> bool
  val get_debug_keyset : unit -> category list
  val register_warn_category : string -> warn_category
  val is_warn_category : string -> bool
  val pp_warn_category : Format.formatter -> warn_category -> unit
  val pp_all_warn_categories_status : unit -> unit
  val wkey_name : warn_category -> string
  val get_warn_category : string -> warn_category option
  val get_all_warn_categories : unit -> warn_category list
  val get_all_warn_categories_status :
    unit -> (warn_category * Log.warn_status) list
  val set_warn_status : warn_category -> Log.warn_status -> unit
  val get_warn_status : warn_category -> Log.warn_status
  val add_group : ?memo:bool -> string -> Cmdline.Group.t
  module Help : Parameter_sig.Bool
  module Verbose : Parameter_sig.Int
  module Debug : Parameter_sig.Int
  module Share : Parameter_sig.Specific_dir
  module Session : Parameter_sig.Specific_dir
  module Config : Parameter_sig.Specific_dir
  val help : Cmdline.Group.t
  val messages : Cmdline.Group.t
  val add_plugin_output_aliases :
    ?visible:bool -> ?deprecated:bool -> string list -> unit
  module type Varinfo_set =
    sig
      type t = Cil_datatype.Varinfo.Set.t
      val set : t -> unit
      val add_set_hook : (t -> t -> unit) -> unit
      val add_update_hook : (t -> t -> unit) -> unit
      val get : unit -> t
      val clear : unit -> unit
      val is_default : unit -> bool
      val option_name : string
      val print_help : Format.formatter -> unit
      val self : State.t
      val name : string
      val mark_as_computed : ?project:Project.t -> unit -> unit
      val is_computed : ?project:Project.t -> unit -> bool
      module Datatype : Datatype.S
      val add_hook_on_update : (Datatype.t -> unit) -> unit
      val howto_marshal : (Datatype.t -> 'a) -> ('-> Datatype.t) -> unit
      val equal : t -> t -> bool
      val add_aliases :
        ?visible:bool -> ?deprecated:bool -> string list -> unit
      val is_set : unit -> bool
      val unsafe_set : t -> unit
      val parameter : Typed_parameter.t
      type elt = Cil_types.varinfo
      val is_empty : unit -> bool
      val iter : (elt -> unit) -> unit
      val fold : (elt -> '-> 'a) -> '-> 'a
      val add : elt -> unit
      module As_string : Parameter_sig.String
      module Category :
        sig
          type elt = elt
          type t = elt Parameter_category.t
          val none : t
          val default : unit -> t
          val all : unit -> t
          val set_default : t -> unit
          val add :
            string -> State.t list -> elt Parameter_category.accessor -> t
          val enable_all :
            State.t list -> elt Parameter_category.accessor -> t
          val enable_all_as : t -> unit
        end
      val mem : elt -> bool
      val exists : (elt -> bool) -> bool
    end
  module OutputDot : Parameter_sig.Filepath
  module OutputJson : Parameter_sig.Filepath
  module DepthLimit : Parameter_sig.Int
  module FromFunctionAlarms : Parameter_sig.Kernel_function_set
  module FromBases : Varinfo_set
  module UnfoldedBases : Varinfo_set
  module HiddenBases : Varinfo_set
end