sig
  type 'a atom =
      Tbool of 'a * bool
    | Tint of 'a * int list
    | Tenum of 'a * 'a list
  type 'a term =
      Tatom of 'Bdd.Expr0.O.Expr.atom
    | Texternal of (int * bool)
    | Tcst of bool
  val map_atom :
    ('-> 'b) -> 'Bdd.Expr0.O.Expr.atom -> 'Bdd.Expr0.O.Expr.atom
  val map_term :
    ('-> 'b) -> 'Bdd.Expr0.O.Expr.term -> 'Bdd.Expr0.O.Expr.term
  val term_of_vint :
    '-> 'Bdd.Int.t -> Bdd.Reg.Minterm.t -> 'Bdd.Expr0.O.Expr.term
  val term_of_venum :
    ('a, [> 'Bdd.Env.typ ], [> 'Bdd.Env.typdef ], 'd, 'e) Bdd.Env.O.t ->
    '-> 'Bdd.Enum.t -> Bdd.Reg.Minterm.t -> 'Bdd.Expr0.O.Expr.term
  val term_of_idcondb :
    ('a, [> 'Bdd.Env.typ ], [> 'Bdd.Env.typdef ], 'd, 'e) Bdd.Env.O.t ->
    int * bool -> 'Bdd.Expr0.O.Expr.term
  val bool_of_tbool : Cudd.Man.tbool -> bool
  val mand :
    'Bdd.Expr0.O.Expr.term list Pervasives.ref ->
    'Bdd.Expr0.O.Expr.term -> unit
  val conjunction_of_minterm :
    ('a, [> 'Bdd.Env.typ ], [> 'Bdd.Env.typdef ], 'd, 'e) Bdd.Env.O.t ->
    Cudd.Man.tbool array ->
    'Bdd.Expr0.O.Expr.term Bdd.Normalform.conjunction
  val dnf_of_bdd :
    ('a, [> 'Bdd.Env.typ ], [> 'Bdd.Env.typdef ], 'd, 'e) Bdd.Env.O.t ->
    'Cudd.Bdd.t -> 'Bdd.Expr0.O.Expr.term Bdd.Normalform.dnf
  val print_term :
    ?print_external_idcondb:(Format.formatter -> int * bool -> unit) ->
    ('a, [> 'Bdd.Env.typ ], [> 'Bdd.Env.typdef ], 'd, 'e) Bdd.Env.O.t ->
    Format.formatter -> 'Bdd.Expr0.O.Expr.term -> unit
  val print_conjunction :
    ?print_external_idcondb:(Format.formatter -> int * bool -> unit) ->
    ('a, [> 'Bdd.Env.typ ], [> 'Bdd.Env.typdef ], 'd, 'e) Bdd.Env.O.t ->
    Format.formatter ->
    'Bdd.Expr0.O.Expr.term Bdd.Normalform.conjunction -> unit
  val print_dnf :
    ?print_external_idcondb:(Format.formatter -> int * bool -> unit) ->
    ('a, [> 'Bdd.Env.typ ], [> 'Bdd.Env.typdef ], 'd, 'e) Bdd.Env.O.t ->
    Format.formatter -> 'Bdd.Expr0.O.Expr.term Bdd.Normalform.dnf -> unit
end