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 : ('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 : string list -> unit
  val dkey_alpha : category
  val dkey_alpha_undo : category
  val dkey_asm_contracts : category
  val dkey_ast : category
  val dkey_check : category
  val dkey_constfold : category
  val dkey_comments : category
  val dkey_compilation_db : category
  val dkey_dataflow : category
  val dkey_dataflow_scc : category
  val dkey_dominators : category
  val dkey_emitter : category
  val dkey_emitter_clear : category
  val dkey_exn_flow : category
  val dkey_file_transform : category
  val dkey_file_print_one : category
  val dkey_file_annot : category
  val dkey_filter : category
  val dkey_globals : category
  val dkey_kf_blocks : category
  val dkey_linker : category
  val dkey_linker_find : category
  val dkey_loops : category
  val dkey_parser : category
  val dkey_pp : category
  val dkey_print_attrs : category
  val dkey_print_bitfields : category
  val dkey_print_builtins : category
  val dkey_print_logic_coercions : category
  val dkey_print_logic_types : category
  val dkey_print_sid : category
  val dkey_print_unspecified : category
  val dkey_print_vid : category
  val dkey_prop_status : category
  val dkey_prop_status_emit : category
  val dkey_prop_status_merge : category
  val dkey_prop_status_graph : category
  val dkey_prop_status_reg : category
  val dkey_rmtmps : category
  val dkey_referenced : category
  val dkey_task : category
  val dkey_typing_global : category
  val dkey_typing_init : category
  val dkey_typing_chunk : category
  val dkey_typing_cast : category
  val dkey_typing_pragma : category
  val dkey_ulevel : category
  val dkey_visitor : category
  val wkey_annot_error : warn_category
  val wkey_ghost_already_ghost : warn_category
  val wkey_ghost_bad_use : warn_category
  val wkey_acsl_float_compare : warn_category
  val wkey_drop_unused : warn_category
  val wkey_implicit_conv_void_ptr : warn_category
  val wkey_incompatible_types_call : warn_category
  val wkey_incompatible_pointer_types : warn_category
  val wkey_int_conversion : warn_category
  val wkey_cert_exp_46 : warn_category
  val wkey_cert_msc_38 : warn_category
  val wkey_cert_exp_10 : warn_category
  val wkey_check_volatile : warn_category
  val wkey_jcdb : warn_category
  val wkey_implicit_function_declaration : warn_category
  val wkey_no_proto : warn_category
  val wkey_missing_spec : warn_category
  val wkey_decimal_float : warn_category
  val wkey_acsl_extension : warn_category
  val wkey_cmdline : warn_category
  module type Input_with_arg =
    sig
      val option_name : string
      val help : string
      val arg_name : string
      val module_name : string
    end
  module Kernel_function_set :
    functor (X : Input_with_arg-> Parameter_sig.Kernel_function_set
  val inout_source : Cmdline.Group.t
  val saveload : Cmdline.Group.t
  val parsing : Cmdline.Group.t
  val normalisation : Cmdline.Group.t
  val analysis_options : Cmdline.Group.t
  val seq : Cmdline.Group.t
  val project : Cmdline.Group.t
  val checks : Cmdline.Group.t
  module PrintConfig : Parameter_sig.Bool
  module PrintVersion : Parameter_sig.Bool
  module PrintShare : Parameter_sig.Bool
  module PrintLib : Parameter_sig.Bool
  module PrintPluginPath : Parameter_sig.Bool
  module GeneralVerbose : Parameter_sig.Int
  module GeneralDebug : Parameter_sig.Int
  module Quiet : Parameter_sig.Bool
  module Unicode :
    sig
      type t = bool
      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 : string list -> unit
      val is_set : unit -> bool
      val unsafe_set : t -> unit
      val parameter : Typed_parameter.t
      val on : unit -> unit
      val off : unit -> unit
      val without_unicode : ('-> 'b) -> '-> 'b
    end
  module UseUnicode : Parameter_sig.Bool
  module Time : Parameter_sig.String
  module PrintCode : Parameter_sig.Bool
  module PrintMachdep : Parameter_sig.Bool
  module PrintLibc : Parameter_sig.Bool
  module PrintComments : Parameter_sig.Bool
  module PrintReturn : Parameter_sig.Bool
  module CodeOutput :
    sig
      type t = string
      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 : string list -> unit
      val is_set : unit -> bool
      val unsafe_set : t -> unit
      val parameter : Typed_parameter.t
      val set_possible_values : string list -> unit
      val get_possible_values : unit -> string list
      val get_function_name : unit -> string
      val get_plain_string : unit -> string
      val output : (Format.formatter -> unit) -> unit
    end
  module SymbolicPath : Parameter_sig.String_set
  module FloatNormal : Parameter_sig.Bool
  module FloatRelative : Parameter_sig.Bool
  module FloatHex : Parameter_sig.Bool
  module BigIntsHex : Parameter_sig.Int
  module SaveState : Parameter_sig.String
  module LoadState : Parameter_sig.Filepath
  module LoadModule : Parameter_sig.String_list
  module AutoLoadPlugins : Parameter_sig.Bool
  module Journal :
    sig
      module Enable : Parameter_sig.Bool
      module Name : Parameter_sig.String
    end
  module Session_dir : Parameter_sig.String
  module Config_dir : Parameter_sig.String
  module Set_project_as_default : Parameter_sig.Bool
  module UnrollingLevel : Parameter_sig.Int
  module UnrollingForce : Parameter_sig.Bool
  module Machdep : Parameter_sig.String
  module LogicalOperators : Parameter_sig.Bool
  module Enums : Parameter_sig.String
  module CppCommand : Parameter_sig.String
  module CppExtraArgs : Parameter_sig.String_list
  module CppExtraArgsPerFile :
    sig
      type key = Datatype.Filepath.t
      type value = string
      type 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 : string list -> unit
      val is_set : unit -> bool
      val unsafe_set : t -> unit
      val parameter : Typed_parameter.t
      type elt = key * value option
      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 find : key -> value
      val mem : key -> bool
    end
  module CppGnuLike : Parameter_sig.Bool
  module FramaCStdLib : Parameter_sig.Bool
  module ReadAnnot : Parameter_sig.Bool
  module PreprocessAnnot : Parameter_sig.Bool
  module ContinueOnAnnotError : Parameter_sig.Bool
  module SimplifyCfg : Parameter_sig.Bool
  module KeepSwitch : Parameter_sig.Bool
  module Keep_unused_specified_functions : Parameter_sig.Bool
  module Keep_unused_types : Parameter_sig.Bool
  module SimplifyTrivialLoops : Parameter_sig.Bool
  module Constfold : Parameter_sig.Bool
  module InitializedPaddingLocals : Parameter_sig.Bool
  module AggressiveMerging : Parameter_sig.Bool
  module AsmContractsGenerate : Parameter_sig.Bool
  module AsmContractsAutoValidate : Parameter_sig.Bool
  module RemoveExn : Parameter_sig.Bool
  module Files : Parameter_sig.Filepath_list
  module Orig_name : Parameter_sig.Bool
  val normalization_parameters : unit -> Typed_parameter.t list
  module WarnDecimalFloat : Parameter_sig.String
  module ImplicitFunctionDeclaration : Parameter_sig.String
  module C11 : Parameter_sig.Bool
  module JsonCompilationDatabase : Parameter_sig.String
  module AllowDuplication : Parameter_sig.Bool
  module DoCollapseCallCast : Parameter_sig.Bool
  module MainFunction :
    sig
      type t = string
      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 : string list -> unit
      val is_set : unit -> bool
      val parameter : Typed_parameter.t
      val set_possible_values : string list -> unit
      val get_possible_values : unit -> string list
      val get_function_name : unit -> string
      val get_plain_string : unit -> string
      val unsafe_set : t -> unit
    end
  module LibEntry :
    sig
      type t = bool
      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 : string list -> unit
      val is_set : unit -> bool
      val parameter : Typed_parameter.t
      val on : unit -> unit
      val off : unit -> unit
      val unsafe_set : t -> unit
    end
  module UnspecifiedAccess : Parameter_sig.Bool
  module SafeArrays : Parameter_sig.Bool
  module SignedOverflow : Parameter_sig.Bool
  module UnsignedOverflow : Parameter_sig.Bool
  module LeftShiftNegative : Parameter_sig.Bool
  module RightShiftNegative : Parameter_sig.Bool
  module SignedDowncast : Parameter_sig.Bool
  module UnsignedDowncast : Parameter_sig.Bool
  module PointerDowncast : Parameter_sig.Bool
  module SpecialFloat : Parameter_sig.String
  module InvalidBool : Parameter_sig.Bool
  module InvalidPointer : Parameter_sig.Bool
  module AbsoluteValidRange : Parameter_sig.String
  module Check : Parameter_sig.Bool
  module Copy : Parameter_sig.Bool
  module TypeCheck : Parameter_sig.Bool
end