sig
type ('a, 'b) elt = { guard : 'a Cudd.Bdd.t; leaf : 'b; }
type ('a, 'b) t = ('a, 'b) Bddapron.Bddleaf.elt list
val fold2 : ('a -> 'b -> 'c -> 'a) -> 'a -> 'b list -> 'c list -> 'a
val iter2 : ('a -> 'b -> unit) -> 'a list -> 'b list -> unit
val check_unicity :
is_equal:('b -> 'b -> bool) -> ('a, 'b) Bddapron.Bddleaf.elt list -> bool
val check_disjointness : ('a, 'b) Bddapron.Bddleaf.elt list -> bool
val cons_unique :
is_equal:('b -> 'b -> bool) ->
('a, 'b) Bddapron.Bddleaf.elt ->
('a, 'b) Bddapron.Bddleaf.elt list -> ('a, 'b) Bddapron.Bddleaf.elt list
val append_unique :
is_equal:('b -> 'b -> bool) ->
('a, 'b) Bddapron.Bddleaf.elt list ->
('a, 'b) Bddapron.Bddleaf.elt list -> ('a, 'b) Bddapron.Bddleaf.elt list
val cons_disjoint :
is_equal:('b -> 'b -> bool) ->
merge:('b -> 'b -> 'b) ->
('a, 'b) Bddapron.Bddleaf.elt ->
('a, 'b) Bddapron.Bddleaf.elt list -> ('a, 'b) Bddapron.Bddleaf.elt list
val append_disjoint :
is_equal:('b -> 'b -> bool) ->
merge:('b -> 'b -> 'b) ->
('a, 'b) Bddapron.Bddleaf.elt list ->
('a, 'b) Bddapron.Bddleaf.elt list -> ('a, 'b) Bddapron.Bddleaf.elt list
val cons :
is_equal:('b -> 'b -> bool) ->
merge:('b -> 'b -> 'b) ->
unique:bool ->
disjoint:bool ->
('a, 'b) Bddapron.Bddleaf.elt ->
('a, 'b) Bddapron.Bddleaf.elt list -> ('a, 'b) Bddapron.Bddleaf.elt list
val append :
is_equal:('b -> 'b -> bool) ->
merge:('b -> 'b -> 'b) ->
unique:bool ->
disjoint:bool ->
('a, 'b) Bddapron.Bddleaf.elt list ->
('a, 'b) Bddapron.Bddleaf.elt list -> ('a, 'b) Bddapron.Bddleaf.elt list
val make_unique :
is_equal:('b -> 'b -> bool) ->
merge:('b -> 'b -> 'b) ->
disjoint:bool ->
('a, 'b) Bddapron.Bddleaf.elt list -> ('a, 'b) Bddapron.Bddleaf.elt list
val guard :
cudd:'a Cudd.Man.t -> ('a, 'b) Bddapron.Bddleaf.t -> 'a Cudd.Bdd.t
end