module Bddvar:BDDs and discrete variablessig..end
typeexpr =[ `Benum of Bddenum.t | `Bint of Bddint.t | `Bool of Bdd.t ]
typetypdef =[ `Benum of Var.t array | `Bint of bool * int ]
typetyp =[ `Benum of Var.t | `Bint of bool * int | `Bool ]
type info = {
|
tid : |
(* | (Sorted) array of involved BDD indices. | *) |
|
var : |
(* | Expression representing the literal | *) |
class type[[[> typ ], [> typdef ]]]db =object..end
class[[[> typ ], [> typdef ]]]make_db :Manager.t ->[[[> typ ] as 'a, [> typdef ] as 'b]]db
val typ_of_expr : expr -> [> typ ]val var : ([> typ ], [> typdef ]) #db -> Var.t -> exprval ite : Bdd.t -> expr -> expr -> exprval rename : ([> typ ], [> typdef ]) #db ->
expr -> (Var.t * Var.t) list -> exprval substitute : ([> typ ], [> typdef ]) #db ->
expr -> (Var.t * expr) list -> exprval exist : ([> typ ], [> typdef ]) #db ->
expr -> Var.t list -> exprval forall : ([> typ ], [> typdef ]) #db ->
expr -> Var.t list -> exprval cofactor : expr -> Bdd.t -> exprval tdrestrict : expr -> Bdd.t -> exprval support_cond : ([> typ ], [> typdef ]) #db -> expr -> Bdd.tval vectorsupport_cond : ([> typ ], [> typdef ]) #db ->
expr array -> Bdd.tval cube_of_bdd : ([> typ ], [> typdef ]) #db -> Bdd.t -> Bdd.tBdd.cube_of_bdd, but keep only the
the values of variables having a determinated value.
Example: the classical Bdd.cube_of_bdd could return
b and (x=1 or x=3), whereas cube_of_bdd will return only b in
such a case.
val iter_ordered : ([> typ ], [> typdef ]) #db ->
(Var.t -> info -> unit) -> unitval print_db : Format.formatter -> ([> typ ], [> typdef ]) #db -> unitval print_typ : Format.formatter -> typ -> unitval print_typdef : Format.formatter -> typdef -> unitval print_expr : ([> typ ], [> typdef ]) #db ->
Format.formatter -> expr -> unitval print_minterm : ([> typ ], [> typdef ]) #db ->
Format.formatter -> Manager.tbool array -> unitval print_bdd : ([> typ ], [> typdef ]) #db ->
Format.formatter -> Bdd.t -> unitval print_idd : ([> typ ], [> typdef ]) #db ->
(Format.formatter -> int -> unit) -> Format.formatter -> Idd.t -> unitval print_idcondb : ([> typ ], [> typdef ]) #db ->
Format.formatter -> int * bool -> unitval print_idcond : ([> typ ], [> typdef ]) #db ->
Format.formatter -> int -> unitval print_info : Format.formatter -> info -> unitinfoval permutation_of_rename : ([> typ ], [> typdef ]) #db ->
(Var.t * Var.t) list -> int arrayval composition_of_substitution : ([> typ ], [> typdef ]) #db ->
(Var.t * expr) list -> Bdd.t arrayval bddsupport : ([> typ ], [> typdef ]) #db -> Var.t list -> Bdd.tval permute : expr -> int array -> exprval compose : expr -> Bdd.t array -> exprval mem_id : ([> typ ], [> typdef ]) #db -> int -> boolval varinfo_of_id : ([> typ ], [> typdef ]) #db ->
int -> Var.t * infoinfo involved by the BDD indexval print_id : ([> typ ], [> typdef ]) #db ->
Format.formatter -> int -> unitname is the
name of the associated variable, and I the rank of the argument in the
register, then it printsname in case of a Boolean variablenameI otherwise.val info_of_var : ([> typ ], [> typdef ]) #db -> Var.t -> infoinfo associated to the variable in dbval reg_of_expr : expr -> Bdd.t arraymodule Expr:sig..end