module Bddleaf:sig
..end
type ('a, 'b)
elt = {
|
guard : |
|
leaf : |
type('a, 'b)
t =('a, 'b) elt list
val fold2 : ('a -> 'b -> 'c -> 'a) -> 'a -> 'b list -> 'c list -> 'a
val iter2 : ('a -> 'b -> unit) -> 'a list -> 'b list -> unit
(elt1,elt2)
with elt1
in
list1
and elt2
in list2
. Iterates first of the first
list, then on the second.val check_unicity : is_equal:('b -> 'b -> bool) -> ('a, 'b) elt list -> bool
Failure
if problem, returns
true
otherwise.
Checks that
val check_disjointness : ('a, 'b) elt list -> bool
Failure
if problem, returns
true
otherwise. Checks that the guards are exclusive.val cons_unique : is_equal:('b -> 'b -> bool) ->
('a, 'b) elt ->
('a, 'b) elt list -> ('a, 'b) elt list
Assuming that the list argument satisfies the unicity
property, ensures it in the result
val append_unique : is_equal:('b -> 'b -> bool) ->
('a, 'b) elt list ->
('a, 'b) elt list -> ('a, 'b) elt list
Assuming that the first list argument satisfies the
unicity property, ensures it in the result
val cons_disjoint : is_equal:('b -> 'b -> bool) ->
merge:('b -> 'b -> 'b) ->
('a, 'b) elt ->
('a, 'b) elt list -> ('a, 'b) elt list
Assuming that the list argument satisfies the disjointness
(and unicity) property, ensures it in the result
val append_disjoint : is_equal:('b -> 'b -> bool) ->
merge:('b -> 'b -> 'b) ->
('a, 'b) elt list ->
('a, 'b) elt list -> ('a, 'b) elt list
Assuming that the first list argument satisfies the
disjointness (and unicity) property, ensures it in the
result
val cons : is_equal:('b -> 'b -> bool) ->
merge:('b -> 'b -> 'b) ->
unique:bool ->
disjoint:bool ->
('a, 'b) elt ->
('a, 'b) elt list -> ('a, 'b) elt list
val append : is_equal:('b -> 'b -> bool) ->
merge:('b -> 'b -> 'b) ->
unique:bool ->
disjoint:bool ->
('a, 'b) elt list ->
('a, 'b) elt list -> ('a, 'b) elt list
val make_unique : is_equal:('b -> 'b -> bool) ->
merge:('b -> 'b -> 'b) ->
disjoint:bool ->
('a, 'b) elt list -> ('a, 'b) elt list
val guard : cudd:'a Cudd.Man.t -> ('a, 'b) t -> 'a Cudd.Bdd.t
Return the union of guards in the list