sig
  type 'a t = 'Cudd.Bdd.t array
  type dt = Cudd.Man.d Bdd.Reg.t
  type vt = Cudd.Man.v Bdd.Reg.t
  val lnot : 'Bdd.Reg.t -> 'Bdd.Reg.t
  val shift_left :
    'Cudd.Man.t -> int -> 'Bdd.Reg.t -> 'Bdd.Reg.t * 'Cudd.Bdd.t
  val shift_right :
    'Cudd.Man.t -> int -> 'Bdd.Reg.t -> 'Bdd.Reg.t * 'Cudd.Bdd.t
  val shift_right_logical :
    'Cudd.Man.t -> int -> 'Bdd.Reg.t -> 'Bdd.Reg.t * 'Cudd.Bdd.t
  val extend :
    'Cudd.Man.t -> signed:bool -> int -> 'Bdd.Reg.t -> 'Bdd.Reg.t
  val succ : 'Cudd.Man.t -> 'Bdd.Reg.t -> 'Bdd.Reg.t * 'Cudd.Bdd.t
  val pred : 'Cudd.Man.t -> 'Bdd.Reg.t -> 'Bdd.Reg.t * 'Cudd.Bdd.t
  val add :
    'Cudd.Man.t ->
    'Bdd.Reg.t ->
    'Bdd.Reg.t -> 'Bdd.Reg.t * 'Cudd.Bdd.t * 'Cudd.Bdd.t
  val sub :
    'Cudd.Man.t ->
    'Bdd.Reg.t ->
    'Bdd.Reg.t -> 'Bdd.Reg.t * 'Cudd.Bdd.t * 'Cudd.Bdd.t
  val neg : 'Bdd.Reg.t -> 'Bdd.Reg.t
  val scale : int -> 'Bdd.Reg.t -> 'Bdd.Reg.t
  val mul : 'Bdd.Reg.t -> 'Bdd.Reg.t -> 'Bdd.Reg.t
  val ite : 'Cudd.Bdd.t -> 'Bdd.Reg.t -> 'Bdd.Reg.t -> 'Bdd.Reg.t
  val is_cst : 'Bdd.Reg.t -> bool
  val zero : 'Cudd.Man.t -> 'Bdd.Reg.t -> 'Cudd.Bdd.t
  val equal : 'Cudd.Man.t -> 'Bdd.Reg.t -> 'Bdd.Reg.t -> 'Cudd.Bdd.t
  val greatereq :
    'Cudd.Man.t -> 'Bdd.Reg.t -> 'Bdd.Reg.t -> 'Cudd.Bdd.t
  val greater :
    'Cudd.Man.t -> 'Bdd.Reg.t -> 'Bdd.Reg.t -> 'Cudd.Bdd.t
  val highereq :
    'Cudd.Man.t -> 'Bdd.Reg.t -> 'Bdd.Reg.t -> 'Cudd.Bdd.t
  val higher : 'Cudd.Man.t -> 'Bdd.Reg.t -> 'Bdd.Reg.t -> 'Cudd.Bdd.t
  val min_size : int -> int
  val of_int : 'Cudd.Man.t -> int -> int -> 'Bdd.Reg.t
  val to_int : signed:bool -> 'Bdd.Reg.t -> int
  val equal_int : 'Cudd.Man.t -> 'Bdd.Reg.t -> int -> 'Cudd.Bdd.t
  val greatereq_int : 'Cudd.Man.t -> 'Bdd.Reg.t -> int -> 'Cudd.Bdd.t
  val greater_int : 'Cudd.Man.t -> 'Bdd.Reg.t -> int -> 'Cudd.Bdd.t
  val highereq_int : 'Cudd.Man.t -> 'Bdd.Reg.t -> int -> 'Cudd.Bdd.t
  val higher_int : 'Cudd.Man.t -> 'Bdd.Reg.t -> int -> 'Cudd.Bdd.t
  module Minterm :
    sig
      type t = Cudd.Man.tbool array
      val is_indet : Bdd.Reg.Minterm.t -> bool
      val of_int : int -> int -> Bdd.Reg.Minterm.t
      val to_int : signed:bool -> Bdd.Reg.Minterm.t -> int
      val iter : (Bdd.Reg.Minterm.t -> unit) -> Bdd.Reg.Minterm.t -> unit
      val map : (Bdd.Reg.Minterm.t -> 'a) -> Bdd.Reg.Minterm.t -> 'a list
    end
  val guard_of_minterm :
    'Cudd.Man.t -> 'Bdd.Reg.t -> Bdd.Reg.Minterm.t -> 'Cudd.Bdd.t
  val guard_of_int : 'Cudd.Man.t -> 'Bdd.Reg.t -> int -> 'Cudd.Bdd.t
  val guardints :
    'Cudd.Man.t ->
    signed:bool -> 'Bdd.Reg.t -> ('Cudd.Bdd.t * int) list
  val cofactor : 'Bdd.Reg.t -> 'Cudd.Bdd.t -> 'Bdd.Reg.t
  val restrict : 'Bdd.Reg.t -> 'Cudd.Bdd.t -> 'Bdd.Reg.t
  val tdrestrict : 'Bdd.Reg.t -> 'Cudd.Bdd.t -> 'Bdd.Reg.t
  val print :
    (Format.formatter -> int -> unit) ->
    Format.formatter -> 'Bdd.Reg.t -> unit
  val print_minterm :
    signed:bool ->
    (Format.formatter -> 'Cudd.Bdd.t -> unit) ->
    Format.formatter -> 'Bdd.Reg.t -> unit
  val permute :
    ?memo:Cudd.Memo.t -> 'Bdd.Reg.t -> int array -> 'Bdd.Reg.t
  val varmap : 'Bdd.Reg.t -> 'Bdd.Reg.t
  val vectorcompose :
    ?memo:Cudd.Memo.t -> 'Cudd.Bdd.t array -> 'Bdd.Reg.t -> 'Bdd.Reg.t
end