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 -> expr
val ite : Bdd.t -> expr -> expr -> expr
val rename : ([> typ ], [> typdef ]) #db ->
expr -> (Var.t * Var.t) list -> expr
val substitute : ([> typ ], [> typdef ]) #db ->
expr -> (Var.t * expr) list -> expr
val exist : ([> typ ], [> typdef ]) #db ->
expr -> Var.t list -> expr
val forall : ([> typ ], [> typdef ]) #db ->
expr -> Var.t list -> expr
val cofactor : expr -> Bdd.t -> expr
val tdrestrict : expr -> Bdd.t -> expr
val support_cond : ([> typ ], [> typdef ]) #db -> expr -> Bdd.t
val vectorsupport_cond : ([> typ ], [> typdef ]) #db ->
expr array -> Bdd.t
val cube_of_bdd : ([> typ ], [> typdef ]) #db -> Bdd.t -> Bdd.t
Bdd.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) -> unit
val print_db : Format.formatter -> ([> typ ], [> typdef ]) #db -> unit
val print_typ : Format.formatter -> typ -> unit
val print_typdef : Format.formatter -> typdef -> unit
val print_expr : ([> typ ], [> typdef ]) #db ->
Format.formatter -> expr -> unit
val print_minterm : ([> typ ], [> typdef ]) #db ->
Format.formatter -> Manager.tbool array -> unit
val print_bdd : ([> typ ], [> typdef ]) #db ->
Format.formatter -> Bdd.t -> unit
val print_idd : ([> typ ], [> typdef ]) #db ->
(Format.formatter -> int -> unit) -> Format.formatter -> Idd.t -> unit
val print_idcondb : ([> typ ], [> typdef ]) #db ->
Format.formatter -> int * bool -> unit
val print_idcond : ([> typ ], [> typdef ]) #db ->
Format.formatter -> int -> unit
val print_info : Format.formatter -> info -> unit
info
val permutation_of_rename : ([> typ ], [> typdef ]) #db ->
(Var.t * Var.t) list -> int array
val composition_of_substitution : ([> typ ], [> typdef ]) #db ->
(Var.t * expr) list -> Bdd.t array
val bddsupport : ([> typ ], [> typdef ]) #db -> Var.t list -> Bdd.t
val permute : expr -> int array -> expr
val compose : expr -> Bdd.t array -> expr
val mem_id : ([> typ ], [> typdef ]) #db -> int -> bool
val varinfo_of_id : ([> typ ], [> typdef ]) #db ->
int -> Var.t * info
info
involved by the BDD indexval print_id : ([> typ ], [> typdef ]) #db ->
Format.formatter -> int -> unit
name
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 -> info
info
associated to the variable in db
val reg_of_expr : expr -> Bdd.t array
module Expr:sig
..end