sig
  type d
  type v
  type 'a t
  type reorder =
      REORDER_SAME
    | REORDER_NONE
    | REORDER_RANDOM
    | REORDER_RANDOM_PIVOT
    | REORDER_SIFT
    | REORDER_SIFT_CONVERGE
    | REORDER_SYMM_SIFT
    | REORDER_SYMM_SIFT_CONV
    | REORDER_WINDOW2
    | REORDER_WINDOW3
    | REORDER_WINDOW4
    | REORDER_WINDOW2_CONV
    | REORDER_WINDOW3_CONV
    | REORDER_WINDOW4_CONV
    | REORDER_GROUP_SIFT
    | REORDER_GROUP_SIFT_CONV
    | REORDER_ANNEALING
    | REORDER_GENETIC
    | REORDER_LINEAR
    | REORDER_LINEAR_CONVERGE
    | REORDER_LAZY_SIFT
    | REORDER_EXACT
  type aggregation =
      NO_CHECK
    | GROUP_CHECK
    | GROUP_CHECK2
    | GROUP_CHECK3
    | GROUP_CHECK4
    | GROUP_CHECK5
    | GROUP_CHECK6
    | GROUP_CHECK7
    | GROUP_CHECK8
    | GROUP_CHECK9
  type lazygroup =
      LAZY_NONE
    | LAZY_SOFT_GROUP
    | LAZY_HARD_GROUP
    | LAZY_UNGROUP
  type vartype = VAR_PRIMARY_INPUT | VAR_PRESENT_STATE | VAR_NEXT_STATE
  type mtr = MTR_DEFAULT | MTR_FIXED
  type error =
      NO_ERROR
    | MEMORY_OUT
    | TOO_MANY_NODES
    | MAX_MEM_EXCEEDED
    | INVALID_ARG
    | INTERNAL_ERROR
  type dt = Cudd.Man.d Cudd.Man.t
  type vt = Cudd.Man.v Cudd.Man.t
  type tbool = False | True | Top
  val string_of_reorder : Cudd.Man.reorder -> string
  val string_of_error : Cudd.Man.error -> string
  val print_limit : int Pervasives.ref
  external set_gc : int -> (unit -> unit) -> (unit -> unit) -> unit
    = "camlidl_cudd_set_gc"
  external srandom : int -> unit = "camlidl_cudd_man_srandom"
  external _make : bool -> int -> int -> int -> int -> int -> 'Cudd.Man.t
    = "camlidl_cudd_man__make_bytecode" "camlidl_cudd_man__make"
  val make_d :
    ?numVars:int ->
    ?numVarsZ:int ->
    ?numSlots:int ->
    ?cacheSize:int -> ?maxMemory:int -> unit -> Cudd.Man.d Cudd.Man.t
  val make_v :
    ?numVars:int ->
    ?numVarsZ:int ->
    ?numSlots:int ->
    ?cacheSize:int -> ?maxMemory:int -> unit -> Cudd.Man.v Cudd.Man.t
  external debugcheck : 'Cudd.Man.t -> bool = "camlidl_cudd_man_debugcheck"
  external check_keys : 'Cudd.Man.t -> int = "camlidl_cudd_man_check_keys"
  external copy_shr : '-> 'a = "camlidl_cudd_custom_copy_shr"
  external level_of_var : 'Cudd.Man.t -> int -> int
    = "camlidl_cudd_man_level_of_var"
  external var_of_level : 'Cudd.Man.t -> int -> int
    = "camlidl_cudd_man_var_of_level"
  external reduce_heap : 'Cudd.Man.t -> Cudd.Man.reorder -> int -> unit
    = "camlidl_cudd_man_reduce_heap"
  external shuffle_heap : 'Cudd.Man.t -> int array -> unit
    = "camlidl_cudd_man_shuffle_heap"
  external garbage_collect : 'Cudd.Man.t -> int
    = "camlidl_cudd_man_garbage_collect"
  external flush : 'Cudd.Man.t -> unit = "camlidl_cudd_man_cache_flush"
  external enable_autodyn : 'Cudd.Man.t -> Cudd.Man.reorder -> unit
    = "camlidl_cudd_man_enable_autodyn"
  external disable_autodyn : 'Cudd.Man.t -> unit
    = "camlidl_cudd_man_disable_autodyn"
  external autodyn_status : 'Cudd.Man.t -> Cudd.Man.reorder option
    = "camlidl_cudd_man_autodyn_status"
  external group : 'Cudd.Man.t -> int -> int -> Cudd.Man.mtr -> unit
    = "camlidl_cudd_man_group"
  external ungroupall : 'Cudd.Man.t -> unit = "camlidl_cudd_man_ungroupall"
  external set_varmap : 'Cudd.Man.t -> int array -> unit
    = "camlidl_cudd_man_set_varmap"
  external get_background : Cudd.Man.dt -> float
    = "camlidl_cudd_man_get_background"
  external set_background : Cudd.Man.dt -> float -> unit
    = "camlidl_cudd_man_set_background"
  external get_epsilon : Cudd.Man.dt -> float
    = "camlidl_cudd_man_get_epsilon"
  external set_epsilon : Cudd.Man.dt -> float -> unit
    = "camlidl_cudd_man_set_epsilon"
  external get_min_hit : 'Cudd.Man.t -> int
    = "camlidl_cudd_man_get_min_hit"
  external set_min_hit : 'Cudd.Man.t -> int -> unit
    = "camlidl_cudd_man_set_min_hit"
  external get_max_cache_hard : 'Cudd.Man.t -> int
    = "camlidl_cudd_man_get_max_cache_hard"
  external set_max_cache_hard : 'Cudd.Man.t -> int -> unit
    = "camlidl_cudd_man_set_max_cache_hard"
  external get_looseupto : 'Cudd.Man.t -> int
    = "camlidl_cudd_man_get_looseupto"
  external set_looseupto : 'Cudd.Man.t -> int -> unit
    = "camlidl_cudd_man_set_looseupto"
  external get_max_live : 'Cudd.Man.t -> int
    = "camlidl_cudd_man_get_max_live"
  external set_max_live : 'Cudd.Man.t -> int -> unit
    = "camlidl_cudd_man_set_max_live"
  external get_max_mem : 'Cudd.Man.t -> int
    = "camlidl_cudd_man_get_max_mem"
  external set_max_mem : 'Cudd.Man.t -> int -> unit
    = "camlidl_cudd_man_set_max_mem"
  external get_sift_max_swap : 'Cudd.Man.t -> int
    = "camlidl_cudd_man_get_sift_max_swap"
  external set_sift_max_swap : 'Cudd.Man.t -> int -> unit
    = "camlidl_cudd_man_set_sift_max_swap"
  external get_sift_max_var : 'Cudd.Man.t -> int
    = "camlidl_cudd_man_get_sift_max_var"
  external set_sift_max_var : 'Cudd.Man.t -> int -> unit
    = "camlidl_cudd_man_set_sift_max_var"
  external get_groupcheck : 'Cudd.Man.t -> Cudd.Man.aggregation
    = "camlidl_cudd_man_get_groupcheck"
  external set_groupcheck : 'Cudd.Man.t -> Cudd.Man.aggregation -> unit
    = "camlidl_cudd_man_set_groupcheck"
  external get_arcviolation : 'Cudd.Man.t -> int
    = "camlidl_cudd_man_get_arcviolation"
  external set_arcviolation : 'Cudd.Man.t -> int -> unit
    = "camlidl_cudd_man_set_arcviolation"
  external get_crossovers : 'Cudd.Man.t -> int
    = "camlidl_cudd_man_get_crossovers"
  external set_crossovers : 'Cudd.Man.t -> int -> unit
    = "camlidl_cudd_man_set_crossovers"
  external get_population : 'Cudd.Man.t -> int
    = "camlidl_cudd_man_get_population"
  external set_population : 'Cudd.Man.t -> int -> unit
    = "camlidl_cudd_man_set_population"
  external get_recomb : 'Cudd.Man.t -> int = "camlidl_cudd_man_get_recomb"
  external set_recomb : 'Cudd.Man.t -> int -> unit
    = "camlidl_cudd_man_set_recomb"
  external get_symmviolation : 'Cudd.Man.t -> int
    = "camlidl_cudd_man_get_symmviolation"
  external set_symmviolation : 'Cudd.Man.t -> int -> unit
    = "camlidl_cudd_man_set_symmviolation"
  external get_max_growth : 'Cudd.Man.t -> float
    = "camlidl_cudd_man_get_max_growth"
  external set_max_growth : 'Cudd.Man.t -> int -> unit
    = "camlidl_cudd_man_set_max_growth"
  external get_max_growth_alt : 'Cudd.Man.t -> float
    = "camlidl_cudd_man_get_max_growth_alt"
  external set_max_growth_alt : 'Cudd.Man.t -> float -> unit
    = "camlidl_cudd_man_set_max_growth_alt"
  external get_reordering_cycle : 'Cudd.Man.t -> int
    = "camlidl_cudd_man_get_reordering_cycle"
  external set_reordering_cycle : 'Cudd.Man.t -> int -> unit
    = "camlidl_cudd_man_set_reordering_cycle"
  external get_next_autodyn : 'Cudd.Man.t -> int
    = "camlidl_cudd_man_get_next_autodyn"
  external set_next_autodyn : 'Cudd.Man.t -> int -> unit
    = "camlidl_cudd_man_set_next_autodyn"
  external get_cache_hits : 'Cudd.Man.t -> float
    = "camlidl_cudd_man_get_cache_hits"
  external get_cache_lookups : 'Cudd.Man.t -> float
    = "camlidl_cudd_man_get_cache_lookups"
  external get_cache_slots : 'Cudd.Man.t -> int
    = "camlidl_cudd_man_get_cache_slots"
  external get_cache_used_slots : 'Cudd.Man.t -> float
    = "camlidl_cudd_man_get_cache_used_slots"
  external get_dead : 'Cudd.Man.t -> int = "camlidl_cudd_man_get_dead"
  external get_error : 'Cudd.Man.t -> Cudd.Man.error
    = "camlidl_cudd_man_get_error"
  external get_gc_time : 'Cudd.Man.t -> int
    = "camlidl_cudd_man_get_gc_time"
  external get_gc_nb : 'Cudd.Man.t -> int = "camlidl_cudd_man_get_gc_nb"
  external get_keys : 'Cudd.Man.t -> int = "camlidl_cudd_man_get_keys"
  external get_linear : 'Cudd.Man.t -> int -> int -> int
    = "camlidl_cudd_man_get_linear"
  external get_max_cache : 'Cudd.Man.t -> int
    = "camlidl_cudd_man_get_max_cache"
  external get_min_dead : 'Cudd.Man.t -> int
    = "camlidl_cudd_man_get_min_dead"
  external get_node_count : 'Cudd.Man.t -> int
    = "camlidl_cudd_man_get_node_count"
  external get_node_count_peak : 'Cudd.Man.t -> int
    = "camlidl_cudd_man_get_node_count_peak"
  external get_reordering_time : 'Cudd.Man.t -> int
    = "camlidl_cudd_man_get_reordering_time"
  external get_reordering_nb : 'Cudd.Man.t -> int
    = "camlidl_cudd_man_get_reordering_nb"
  external get_bddvar_nb : 'Cudd.Man.t -> int
    = "camlidl_cudd_man_get_bddvar_nb"
  external get_zddvar_nb : 'Cudd.Man.t -> int
    = "camlidl_cudd_man_get_zddvar_nb"
  external get_slots : 'Cudd.Man.t -> int = "camlidl_cudd_man_get_slots"
  external get_used_slots : 'Cudd.Man.t -> float
    = "camlidl_cudd_man_get_used_slots"
  external get_swap_nb : 'Cudd.Man.t -> float
    = "camlidl_cudd_man_get_swap_nb"
  external print_info : 'Cudd.Man.t -> unit = "camlidl_cudd_man_print_info"
end