sig
  type 'a t = { signed : bool; reg : 'Cudd.Bdd.t array; }
  type dt = Cudd.Man.d Bdd.Int.t
  type vt = Cudd.Man.v Bdd.Int.t
  exception Typing of string
  val extend : 'Cudd.Man.t -> int -> 'Bdd.Int.t -> 'Bdd.Int.t
  val neg : 'Bdd.Int.t -> 'Bdd.Int.t
  val succ : 'Bdd.Int.t -> 'Bdd.Int.t
  val pred : 'Bdd.Int.t -> 'Bdd.Int.t
  val add : 'Bdd.Int.t -> 'Bdd.Int.t -> 'Bdd.Int.t
  val sub : 'Bdd.Int.t -> 'Bdd.Int.t -> 'Bdd.Int.t
  val mul : 'Bdd.Int.t -> 'Bdd.Int.t -> 'Bdd.Int.t
  val shift_left : int -> 'Bdd.Int.t -> 'Bdd.Int.t
  val shift_right : int -> 'Bdd.Int.t -> 'Bdd.Int.t
  val scale : int -> 'Bdd.Int.t -> 'Bdd.Int.t
  val ite : 'Cudd.Bdd.t -> 'Bdd.Int.t -> 'Bdd.Int.t -> 'Bdd.Int.t
  val is_cst : 'Bdd.Int.t -> bool
  val zero : 'Cudd.Man.t -> 'Bdd.Int.t -> 'Cudd.Bdd.t
  val equal : 'Cudd.Man.t -> 'Bdd.Int.t -> 'Bdd.Int.t -> 'Cudd.Bdd.t
  val greatereq :
    'Cudd.Man.t -> 'Bdd.Int.t -> 'Bdd.Int.t -> 'Cudd.Bdd.t
  val greater :
    'Cudd.Man.t -> 'Bdd.Int.t -> 'Bdd.Int.t -> 'Cudd.Bdd.t
  val of_int : 'Cudd.Man.t -> bool -> int -> int -> 'Bdd.Int.t
  val to_int : 'Bdd.Int.t -> int
  val equal_int : 'Cudd.Man.t -> 'Bdd.Int.t -> int -> 'Cudd.Bdd.t
  val greatereq_int : 'Cudd.Man.t -> 'Bdd.Int.t -> int -> 'Cudd.Bdd.t
  val greater_int : 'Cudd.Man.t -> 'Bdd.Int.t -> int -> 'Cudd.Bdd.t
  module Minterm :
    sig
      val iter : signed:bool -> (int -> unit) -> Bdd.Reg.Minterm.t -> unit
      val map : signed:bool -> (int -> 'a) -> Bdd.Reg.Minterm.t -> 'a list
    end
  val guard_of_int : 'Cudd.Man.t -> 'Bdd.Int.t -> int -> 'Cudd.Bdd.t
  val guardints : 'Cudd.Man.t -> 'Bdd.Int.t -> ('Cudd.Bdd.t * int) list
  val cofactor : 'Bdd.Int.t -> 'Cudd.Bdd.t -> 'Bdd.Int.t
  val restrict : 'Bdd.Int.t -> 'Cudd.Bdd.t -> 'Bdd.Int.t
  val tdrestrict : 'Bdd.Int.t -> 'Cudd.Bdd.t -> 'Bdd.Int.t
  val print :
    (Format.formatter -> int -> unit) ->
    Format.formatter -> 'Bdd.Int.t -> unit
  val print_minterm :
    (Format.formatter -> 'Cudd.Bdd.t -> unit) ->
    Format.formatter -> 'Bdd.Int.t -> unit
  val permute :
    ?memo:Cudd.Memo.t -> 'Bdd.Int.t -> int array -> 'Bdd.Int.t
  val varmap : 'Bdd.Int.t -> 'Bdd.Int.t
  val vectorcompose :
    ?memo:Cudd.Memo.t -> 'Cudd.Bdd.t array -> 'Bdd.Int.t -> 'Bdd.Int.t
end