package mlcuddidl

  1. Overview
  2. Docs
type pid
and mlvalue
type common = {
  1. pid : pid;
  2. arity : int;
  3. memo : Memo.t;
}
type (!'a, !'b) op1 = {
  1. common1 : common;
  2. closure1 : 'a -> 'b;
}
type (!'a, !'b, !'c) 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;
}
type (!'a, !'b) 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;
}
type (!'a, !'b, !'c, !'d) 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;
}
type (!'a, !'b) opN = {
  1. commonN : common;
  2. arityNbdd : int;
  3. closureN : Bdd.vt array -> 'a Vdd.t array -> 'b Vdd.t option;
}
type (!'a, !'b) 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;
}
type !'a exist = {
  1. commonexist : common;
  2. combineexist : ('a, 'a, 'a) op2;
}
type !'a existand = {
  1. commonexistand : common;
  2. combineexistand : ('a, 'a, 'a) op2;
  3. bottomexistand : 'a;
}
type (!'a, !'b) existop1 = {
  1. commonexistop1 : common;
  2. combineexistop1 : ('b, 'b, 'b) op2;
  3. existop1 : ('a, 'b) op1;
}
type (!'a, !'b) existandop1 = {
  1. commonexistandop1 : common;
  2. combineexistandop1 : ('b, 'b, 'b) op2;
  3. existandop1 : ('a, 'b) op1;
  4. bottomexistandop1 : 'b;
}
val newpid : unit -> pid
val apply_op1 : ('a, 'b) op1 -> 'a Vdd.t -> 'b Vdd.t
val apply_op2 : ('a, 'b, 'c) op2 -> 'a Vdd.t -> 'b Vdd.t -> 'c Vdd.t
val apply_test2 : ('a, 'b) test2 -> 'a Vdd.t -> 'b Vdd.t -> bool
val apply_op3 : ('a, 'b, 'c, 'd) op3 -> 'a Vdd.t -> 'b Vdd.t -> 'c Vdd.t -> 'd Vdd.t
val apply_opN : ('a, 'b) opN -> Bdd.vt array -> 'a Vdd.t array -> 'b Vdd.t
val apply_opG : ('a, 'b) opG -> Bdd.vt array -> 'a Vdd.t array -> 'b Vdd.t
val _apply_exist : 'a exist -> Bdd.vt -> 'a Vdd.t -> 'a Vdd.t
val _apply_existand : 'a existand -> Bdd.vt -> Bdd.vt -> 'a Vdd.t -> 'a Vdd.t
val _apply_existop1 : ('a, 'b) existop1 -> Bdd.vt -> 'a Vdd.t -> 'b Vdd.t
val _apply_existandop1 : ('a, 'b) existandop1 -> Bdd.vt -> Bdd.vt -> 'a Vdd.t -> 'b Vdd.t