sig
  type bool_function =
      Fun of string * string list
    | PosVar of string * string
    | NegVar of string * string
    | Not of BoolFunction.bool_function
    | And of BoolFunction.bool_function list
    | Or of BoolFunction.bool_function list
    | Ex of (string * string) list * BoolFunction.bool_function
  type bool_def =
      string * bool * (string * string) list * BoolFunction.bool_function
  val print : BoolFunction.bool_function -> unit
  val sprint : BoolFunction.bool_function -> string
  val str : BoolFunction.bool_function -> string
  val fprint : Format.formatter -> BoolFunction.bool_function -> unit
  val print_def : ?print_bool:bool -> BoolFunction.bool_def -> unit
  val sprint_def : ?print_bool:bool -> BoolFunction.bool_def -> string
  val str_def : ?print_bool:bool -> BoolFunction.bool_def -> string
  val fprint_def :
    ?print_bool:bool -> Format.formatter -> BoolFunction.bool_def -> unit
  val print_defs :
    ?print_bool:bool ->
    (string * string list) list * BoolFunction.bool_def list -> unit
  val sprint_defs :
    ?print_bool:bool ->
    (string * string list) list * BoolFunction.bool_def list -> string
  val str_defs :
    ?print_bool:bool ->
    (string * string list) list * BoolFunction.bool_def list -> string
  val fprint_defs :
    ?print_bool:bool ->
    Format.formatter ->
    (string * string list) list * BoolFunction.bool_def list -> unit
  val size : ?acc:int -> BoolFunction.bool_function -> int
  val flatten : BoolFunction.bool_function -> BoolFunction.bool_function
  val triv_simp : BoolFunction.bool_function -> BoolFunction.bool_function
  val triv_simp_defs :
    BoolFunction.bool_def list -> BoolFunction.bool_def list
  val subst_mod_vars :
    (string * string) list ->
    BoolFunction.bool_function -> BoolFunction.bool_function
  val apply_defs :
    BoolFunction.bool_def list ->
    BoolFunction.bool_function -> BoolFunction.bool_function
  val inline_defs : BoolFunction.bool_def list -> BoolFunction.bool_def list
  val dnf :
    ?tm:float ->
    (string * string list) list ->
    BoolFunction.bool_function -> BoolFunction.bool_function option
  val solve_lfp :
    ?nf:int ->
    (string * string list) list ->
    BoolFunction.bool_def list -> BoolFunction.bool_def list
end