sig
type pid = Cudd.Custom.pid
type common =
Cudd.Custom.common = {
pid : Cudd.User.pid;
arity : int;
memo : Cudd.Memo.t;
}
val newpid : unit -> Cudd.Custom.pid
val make_common : ?memo:Cudd.Memo.t -> int -> Cudd.User.common
type ('a, 'b) op1 =
('a, 'b) Cudd.Custom.op1 = private {
common1 : Cudd.User.common;
closure1 : 'a -> 'b;
}
val make_op1 : ?memo:Cudd.Memo.t -> ('a -> 'b) -> ('a, 'b) Cudd.User.op1
val apply_op1 : ('a, 'b) Cudd.User.op1 -> 'a Cudd.Vdd.t -> 'b Cudd.Vdd.t
type ('a, 'b, 'c) op2 =
('a, 'b, 'c) Cudd.Custom.op2 = private {
common2 : Cudd.User.common;
closure2 : 'a -> 'b -> 'c;
ospecial2 :
('a Cudd.Vdd.t -> 'b Cudd.Vdd.t -> 'c Cudd.Vdd.t option) option;
commutative : bool;
idempotent : bool;
}
val make_op2 :
?memo:Cudd.Memo.t ->
?commutative:bool ->
?idempotent:bool ->
?special:('a Cudd.Vdd.t -> 'b Cudd.Vdd.t -> 'c Cudd.Vdd.t option) ->
('a -> 'b -> 'c) -> ('a, 'b, 'c) Cudd.User.op2
val apply_op2 :
('a, 'b, 'c) Cudd.User.op2 ->
'a Cudd.Vdd.t -> 'b Cudd.Vdd.t -> 'c Cudd.Vdd.t
type ('a, 'b, 'c, 'd) op3 =
('a, 'b, 'c, 'd) Cudd.Custom.op3 = private {
common3 : Cudd.User.common;
closure3 : 'a -> 'b -> 'c -> 'd;
ospecial3 :
('a Cudd.Vdd.t ->
'b Cudd.Vdd.t -> 'c Cudd.Vdd.t -> 'd Cudd.Vdd.t option)
option;
}
val make_op3 :
?memo:Cudd.Memo.t ->
?special:('a Cudd.Vdd.t ->
'b Cudd.Vdd.t -> 'c Cudd.Vdd.t -> 'd Cudd.Vdd.t option) ->
('a -> 'b -> 'c -> 'd) -> ('a, 'b, 'c, 'd) Cudd.User.op3
val apply_op3 :
('a, 'b, 'c, 'd) Cudd.User.op3 ->
'a Cudd.Vdd.t -> 'b Cudd.Vdd.t -> 'c Cudd.Vdd.t -> 'd Cudd.Vdd.t
type ('a, 'b) opN =
('a, 'b) Cudd.Custom.opN = private {
commonN : Cudd.User.common;
arityNbdd : int;
closureN :
Cudd.Bdd.vt array -> 'a Cudd.Vdd.t array -> 'b Cudd.Vdd.t option;
}
val make_opN :
?memo:Cudd.Memo.t ->
int ->
int ->
(Cudd.Bdd.vt array -> 'a Cudd.Vdd.t array -> 'b Cudd.Vdd.t option) ->
('a, 'b) Cudd.User.opN
val apply_opN :
('a, 'b) Cudd.User.opN ->
Cudd.Bdd.vt array -> 'a Cudd.Vdd.t array -> 'b Cudd.Vdd.t
type ('a, 'b) opG =
('a, 'b) Cudd.Custom.opG = private {
commonG : Cudd.User.common;
arityGbdd : int;
closureG :
Cudd.Bdd.vt array -> 'a Cudd.Vdd.t array -> 'b Cudd.Vdd.t option;
oclosureBeforeRec :
(int * bool ->
Cudd.Bdd.vt array ->
'a Cudd.Vdd.t array -> Cudd.Bdd.vt array * 'a Cudd.Vdd.t array)
option;
oclosureIte :
(int -> 'b Cudd.Vdd.t -> 'b Cudd.Vdd.t -> 'b Cudd.Vdd.t) option;
}
val make_opG :
?memo:Cudd.Memo.t ->
?beforeRec:(int * bool ->
Cudd.Bdd.vt array ->
'a Cudd.Vdd.t array ->
Cudd.Bdd.vt array * 'a Cudd.Vdd.t array) ->
?ite:(int -> 'b Cudd.Vdd.t -> 'b Cudd.Vdd.t -> 'b Cudd.Vdd.t) ->
int ->
int ->
(Cudd.Bdd.vt array -> 'a Cudd.Vdd.t array -> 'b Cudd.Vdd.t option) ->
('a, 'b) Cudd.User.opG
val apply_opG :
('a, 'b) Cudd.User.opG ->
Cudd.Bdd.vt array -> 'a Cudd.Vdd.t array -> 'b Cudd.Vdd.t
type ('a, 'b) test2 =
('a, 'b) Cudd.Custom.test2 = private {
common2t : Cudd.User.common;
closure2t : 'a -> 'b -> bool;
ospecial2t : ('a Cudd.Vdd.t -> 'b Cudd.Vdd.t -> bool option) option;
symetric : bool;
reflexive : bool;
}
val make_test2 :
?memo:Cudd.Memo.t ->
?symetric:bool ->
?reflexive:bool ->
?special:('a Cudd.Vdd.t -> 'b Cudd.Vdd.t -> bool option) ->
('a -> 'b -> bool) -> ('a, 'b) Cudd.User.test2
val apply_test2 :
('a, 'b) Cudd.User.test2 -> 'a Cudd.Vdd.t -> 'b Cudd.Vdd.t -> bool
type 'a exist =
'a Cudd.Custom.exist = private {
commonexist : Cudd.User.common;
combineexist : ('a, 'a, 'a) Cudd.User.op2;
}
val make_exist :
?memo:Cudd.Memo.t -> ('a, 'a, 'a) Cudd.User.op2 -> 'a Cudd.User.exist
val apply_exist :
'a Cudd.User.exist -> supp:Cudd.Bdd.vt -> 'a Cudd.Vdd.t -> 'a Cudd.Vdd.t
type 'a existand =
'a Cudd.Custom.existand = private {
commonexistand : Cudd.User.common;
combineexistand : ('a, 'a, 'a) Cudd.User.op2;
bottomexistand : 'a;
}
val make_existand :
?memo:Cudd.Memo.t ->
bottom:'a -> ('a, 'a, 'a) Cudd.User.op2 -> 'a Cudd.User.existand
val apply_existand :
'a Cudd.User.existand ->
supp:Cudd.Bdd.vt -> Cudd.Bdd.vt -> 'a Cudd.Vdd.t -> 'a Cudd.Vdd.t
type ('a, 'b) existop1 =
('a, 'b) Cudd.Custom.existop1 = private {
commonexistop1 : Cudd.User.common;
combineexistop1 : ('b, 'b, 'b) Cudd.User.op2;
existop1 : ('a, 'b) Cudd.User.op1;
}
val make_existop1 :
?memo:Cudd.Memo.t ->
op1:('a, 'b) Cudd.User.op1 ->
('b, 'b, 'b) Cudd.User.op2 -> ('a, 'b) Cudd.User.existop1
val apply_existop1 :
('a, 'b) Cudd.User.existop1 ->
supp:Cudd.Bdd.vt -> 'a Cudd.Vdd.t -> 'b Cudd.Vdd.t
type ('a, 'b) existandop1 =
('a, 'b) Cudd.Custom.existandop1 = private {
commonexistandop1 : Cudd.User.common;
combineexistandop1 : ('b, 'b, 'b) Cudd.User.op2;
existandop1 : ('a, 'b) Cudd.User.op1;
bottomexistandop1 : 'b;
}
val make_existandop1 :
?memo:Cudd.Memo.t ->
op1:('a, 'b) Cudd.User.op1 ->
bottom:'b -> ('b, 'b, 'b) Cudd.User.op2 -> ('a, 'b) Cudd.User.existandop1
val apply_existandop1 :
('a, 'b) Cudd.User.existandop1 ->
supp:Cudd.Bdd.vt -> Cudd.Bdd.vt -> 'a Cudd.Vdd.t -> 'b Cudd.Vdd.t
val clear_common : Cudd.User.common -> unit
val clear_op1 : ('a, 'b) Cudd.User.op1 -> unit
val clear_op2 : ('a, 'b, 'c) Cudd.User.op2 -> unit
val clear_op3 : ('a, 'b, 'c, 'd) Cudd.User.op3 -> unit
val clear_opN : ('a, 'b) Cudd.User.opN -> unit
val clear_opG : ('a, 'b) Cudd.User.opG -> unit
val clear_test2 : ('a, 'b) Cudd.User.test2 -> unit
val clear_exist : 'a Cudd.User.exist -> unit
val clear_existand : 'a Cudd.User.existand -> unit
val clear_existop1 : ('a, 'b) Cudd.User.existop1 -> unit
val clear_existandop1 : ('a, 'b) Cudd.User.existandop1 -> unit
val map_op1 :
?memo:Cudd.Memo.t -> ('a -> 'b) -> 'a Cudd.Vdd.t -> 'b Cudd.Vdd.t
val map_op2 :
?memo:Cudd.Memo.t ->
?commutative:bool ->
?idempotent:bool ->
?special:('a Cudd.Vdd.t -> 'b Cudd.Vdd.t -> 'c Cudd.Vdd.t option) ->
('a -> 'b -> 'c) -> 'a Cudd.Vdd.t -> 'b Cudd.Vdd.t -> 'c Cudd.Vdd.t
val map_op3 :
?memo:Cudd.Memo.t ->
?special:('a Cudd.Vdd.t ->
'b Cudd.Vdd.t -> 'c Cudd.Vdd.t -> 'd Cudd.Vdd.t option) ->
('a -> 'b -> 'c -> 'd) ->
'a Cudd.Vdd.t -> 'b Cudd.Vdd.t -> 'c Cudd.Vdd.t -> 'd Cudd.Vdd.t
val map_opN :
?memo:Cudd.Memo.t ->
(Cudd.Bdd.vt array -> 'a Cudd.Vdd.t array -> 'b Cudd.Vdd.t option) ->
Cudd.Bdd.vt array -> 'a Cudd.Vdd.t array -> 'b Cudd.Vdd.t
val map_test2 :
?memo:Cudd.Memo.t ->
?symetric:bool ->
?reflexive:bool ->
?special:('a Cudd.Vdd.t -> 'b Cudd.Vdd.t -> bool option) ->
('a -> 'b -> bool) -> 'a Cudd.Vdd.t -> 'b Cudd.Vdd.t -> bool
end