package mlcuddidl

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