sig
  val default_of_type : Type.t -> Term.t
  type feature = Q | UF | A | IA | RA | LA | NA
  module FeatureSet :
    sig
      type elt = feature
      type t
      val empty : t
      val is_empty : t -> bool
      val mem : elt -> t -> bool
      val add : elt -> t -> t
      val singleton : elt -> t
      val remove : elt -> t -> t
      val union : t -> t -> t
      val inter : t -> t -> t
      val diff : t -> t -> t
      val compare : t -> t -> int
      val equal : t -> t -> bool
      val subset : t -> t -> bool
      val iter : (elt -> unit) -> t -> unit
      val map : (elt -> elt) -> t -> t
      val fold : (elt -> '-> 'a) -> t -> '-> 'a
      val for_all : (elt -> bool) -> t -> bool
      val exists : (elt -> bool) -> t -> bool
      val filter : (elt -> bool) -> t -> t
      val partition : (elt -> bool) -> t -> t * t
      val cardinal : t -> int
      val elements : t -> elt list
      val min_elt : t -> elt
      val max_elt : t -> elt
      val choose : t -> elt
      val split : elt -> t -> t * bool * t
      val find : elt -> t -> elt
      val of_list : elt list -> t
    end
  type features = TermLib.FeatureSet.t
  val sup_logics : TermLib.features list -> TermLib.features
  val logic_of_term : Term.t -> TermLib.features
  val logic_of_sort : Type.t -> TermLib.features
  type logic =
      [ `Inferred of TermLib.features | `None | `SMTLogic of string ]
  val pp_print_logic : Format.formatter -> TermLib.logic -> unit
  val string_of_logic : TermLib.logic -> string
  val logic_allow_arrays : TermLib.logic -> bool
  module Signals :
    sig
      val pp_print_signals : Format.formatter -> unit -> unit
      val ignore_sigalrm : unit -> unit
      val ignoring_sigalrm : (unit -> 'a) -> 'a
      val ignore_sigint : unit -> unit
      val ignore_sigquit : unit -> unit
      val ignore_sigterm : unit -> unit
      val ignore_sigpipe : unit -> unit
      val set_sigalrm_timeout : unit -> unit
      val set_sigalrm_exn : unit -> unit
      val set_sigint : unit -> unit
      val set_sigquit : unit -> unit
      val set_sigterm : unit -> unit
      val set_sigpipe : unit -> unit
      val set_timeout : float -> unit
      val set_sigalrm_timeout_from_flag : unit -> unit
      val unset_timeout : unit -> unit
      val catch_break : bool -> unit
    end
end