sig
type pid
and mlvalue
type common = { pid : Cudd.Custom.pid; arity : int; memo : Cudd.Memo.t; }
type ('a, 'b) op1 = { common1 : Cudd.Custom.common; closure1 : 'a -> 'b; }
type ('a, 'b, 'c) op2 = {
common2 : Cudd.Custom.common;
closure2 : 'a -> 'b -> 'c;
ospecial2 :
('a Cudd.Vdd.t -> 'b Cudd.Vdd.t -> 'c Cudd.Vdd.t option) option;
commutative : bool;
idempotent : bool;
}
type ('a, 'b) test2 = {
common2t : Cudd.Custom.common;
closure2t : 'a -> 'b -> bool;
ospecial2t : ('a Cudd.Vdd.t -> 'b Cudd.Vdd.t -> bool option) option;
symetric : bool;
reflexive : bool;
}
type ('a, 'b, 'c, 'd) op3 = {
common3 : Cudd.Custom.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;
}
type ('a, 'b) opN = {
commonN : Cudd.Custom.common;
arityNbdd : int;
closureN :
Cudd.Bdd.vt array -> 'a Cudd.Vdd.t array -> 'b Cudd.Vdd.t option;
}
type ('a, 'b) opG = {
commonG : Cudd.Custom.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;
}
type 'a exist = {
commonexist : Cudd.Custom.common;
combineexist : ('a, 'a, 'a) Cudd.Custom.op2;
}
type 'a existand = {
commonexistand : Cudd.Custom.common;
combineexistand : ('a, 'a, 'a) Cudd.Custom.op2;
bottomexistand : 'a;
}
type ('a, 'b) existop1 = {
commonexistop1 : Cudd.Custom.common;
combineexistop1 : ('b, 'b, 'b) Cudd.Custom.op2;
existop1 : ('a, 'b) Cudd.Custom.op1;
}
type ('a, 'b) existandop1 = {
commonexistandop1 : Cudd.Custom.common;
combineexistandop1 : ('b, 'b, 'b) Cudd.Custom.op2;
existandop1 : ('a, 'b) Cudd.Custom.op1;
bottomexistandop1 : 'b;
}
external newpid : unit -> Cudd.Custom.pid = "camlidl_custom_newpid"
external apply_op1 :
('a, 'b) Cudd.Custom.op1 -> 'a Cudd.Vdd.t -> 'b Cudd.Vdd.t
= "camlidl_custom_apply_op1"
external apply_op2 :
('a, 'b, 'c) Cudd.Custom.op2 ->
'a Cudd.Vdd.t -> 'b Cudd.Vdd.t -> 'c Cudd.Vdd.t
= "camlidl_custom_apply_op2"
external apply_test2 :
('a, 'b) Cudd.Custom.test2 -> 'a Cudd.Vdd.t -> 'b Cudd.Vdd.t -> bool
= "camlidl_custom_apply_test2"
external apply_op3 :
('a, 'b, 'c, 'd) Cudd.Custom.op3 ->
'a Cudd.Vdd.t -> 'b Cudd.Vdd.t -> 'c Cudd.Vdd.t -> 'd Cudd.Vdd.t
= "camlidl_custom_apply_op3"
external apply_opN :
('a, 'b) Cudd.Custom.opN ->
Cudd.Bdd.vt array -> 'a Cudd.Vdd.t array -> 'b Cudd.Vdd.t
= "camlidl_cudd_apply_opN"
external apply_opG :
('a, 'b) Cudd.Custom.opG ->
Cudd.Bdd.vt array -> 'a Cudd.Vdd.t array -> 'b Cudd.Vdd.t
= "camlidl_cudd_apply_opG"
external _apply_exist :
'a Cudd.Custom.exist -> Cudd.Bdd.vt -> 'a Cudd.Vdd.t -> 'a Cudd.Vdd.t
= "camlidl_custom__apply_exist"
external _apply_existand :
'a Cudd.Custom.existand ->
Cudd.Bdd.vt -> Cudd.Bdd.vt -> 'a Cudd.Vdd.t -> 'a Cudd.Vdd.t
= "camlidl_custom__apply_existand"
external _apply_existop1 :
('a, 'b) Cudd.Custom.existop1 ->
Cudd.Bdd.vt -> 'a Cudd.Vdd.t -> 'b Cudd.Vdd.t
= "camlidl_custom__apply_existop1"
external _apply_existandop1 :
('a, 'b) Cudd.Custom.existandop1 ->
Cudd.Bdd.vt -> Cudd.Bdd.vt -> 'a Cudd.Vdd.t -> 'b Cudd.Vdd.t
= "camlidl_custom__apply_existandop1"
end