sig
type unique = int
type t = private Bottom | Top | Node of Zdd.unique * int * Zdd.t * Zdd.t
val bottom : Zdd.t
val top : Zdd.t
val construct : int -> Zdd.t -> Zdd.t -> Zdd.t
val unique : Zdd.t -> int
module S :
sig
type elt = int
type t
val empty : t
val is_empty : t -> bool
val mem : elt -> t -> bool
val add : elt -> t -> t
val singleton : elt -> t
val remove : elt -> t -> t
val union : t -> t -> t
val inter : t -> t -> t
val diff : t -> t -> t
val compare : t -> t -> int
val equal : t -> t -> bool
val subset : t -> t -> bool
val iter : (elt -> unit) -> t -> unit
val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
val for_all : (elt -> bool) -> t -> bool
val exists : (elt -> bool) -> t -> bool
val filter : (elt -> bool) -> t -> t
val partition : (elt -> bool) -> t -> t * t
val cardinal : t -> int
val elements : t -> elt list
val min_elt : t -> elt
val max_elt : t -> elt
val choose : t -> elt
val split : elt -> t -> t * bool * t
end
type elt = Zdd.S.t
val empty : Zdd.t
val is_empty : Zdd.t -> bool
val mem : Zdd.elt -> Zdd.t -> bool
val add : Zdd.elt -> Zdd.t -> Zdd.t
val singleton : Zdd.elt -> Zdd.t
val remove : Zdd.elt -> Zdd.t -> Zdd.t
val union : Zdd.t -> Zdd.t -> Zdd.t
val inter : Zdd.t -> Zdd.t -> Zdd.t
val diff : Zdd.t -> Zdd.t -> Zdd.t
val compare : Zdd.t -> Zdd.t -> int
val equal : Zdd.t -> Zdd.t -> bool
val subset : Zdd.t -> Zdd.t -> bool
val iter : (Zdd.elt -> unit) -> Zdd.t -> unit
val fold : (Zdd.elt -> 'a -> 'a) -> Zdd.t -> 'a -> 'a
val for_all : (Zdd.elt -> bool) -> Zdd.t -> bool
val exists : (Zdd.elt -> bool) -> Zdd.t -> bool
val filter : (Zdd.elt -> bool) -> Zdd.t -> Zdd.t
val partition : (Zdd.elt -> bool) -> Zdd.t -> Zdd.t * Zdd.t
val cardinal : Zdd.t -> int
val elements : Zdd.t -> Zdd.elt list
val min_elt : Zdd.t -> Zdd.elt
val max_elt : Zdd.t -> Zdd.elt
val choose : Zdd.t -> Zdd.elt
val split : Zdd.elt -> Zdd.t -> Zdd.t * bool * Zdd.t
val choose_list : Zdd.t -> int list
val iter_list : (int list -> unit) -> Zdd.t -> unit
val memo_rec1 : ((Zdd.t -> 'a) -> Zdd.t -> 'a) -> Zdd.t -> 'a
val memo_rec2 :
((Zdd.t * Zdd.t -> 'a) -> Zdd.t * Zdd.t -> 'a) -> Zdd.t * Zdd.t -> 'a
module type ARITH =
sig
type t
val zero : Zdd.ARITH.t
val one : Zdd.ARITH.t
val add : Zdd.ARITH.t -> Zdd.ARITH.t -> Zdd.ARITH.t
end
module Cardinal :
functor (A : ARITH) -> sig val cardinal : Zdd.t -> A.t end
val size : Zdd.t -> int
val print : Format.formatter -> Zdd.t -> unit
val print_to_dot : Format.formatter -> Zdd.t -> unit
val print_to_dot_file : string -> Zdd.t -> unit
val stat : unit -> int
end