I am stuck on the operation on BDD of CUDD (C interface), I don't know if we can remove some variables when doing compute image (from a state to another state of BDDs) and how to travel the result BDD (final BDD) to get all the variable, could anybody please tell me if we can do that by CUDD?. Cheers
Asked
Active
Viewed 718 times
1 Answers
3
I've never used CUDD but the list of variables used in a BDD is usually called its support. Removing variables from a BDD is usually done via existential quantification.
Grepping the source code, I've found
/**Function********************************************************************
Synopsis [Finds the variables on which a DD depends.]
Description [Finds the variables on which a DD depends.
Returns a BDD consisting of the product of the variables if
successful; NULL otherwise.]
SideEffects [None]
SeeAlso [Cudd_VectorSupport Cudd_ClassifySupport]
******************************************************************************/
DdNode *
Cudd_Support(
DdManager * dd /* manager */,
DdNode * f /* DD whose support is sought */)
and
/**Function********************************************************************
Synopsis [Existentially abstracts all the variables in cube from f.]
Description [Existentially abstracts all the variables in cube from f.
Returns the abstracted BDD if successful; NULL otherwise.]
SideEffects [None]
SeeAlso [Cudd_bddUnivAbstract Cudd_addExistAbstract]
******************************************************************************/
DdNode *
Cudd_bddExistAbstract(
DdManager * manager,
DdNode * f,
DdNode * cube)

adl
- 15,627
- 6
- 51
- 65
-
Lovely, thank you, I will try it, besides, could you please tell me what exactly the word "abstract" meaning here? I really don't get it, cheers. – Trúc Nguyễn Lâm Jul 04 '12 at 09:53
-
`a&b` is an _abstraction_ of `a&b&c` where you don't care about `c`. Conversely `a&b&c` is a _refinement_ of `a&b`. – adl Jul 04 '12 at 20:21
-
Existential quantification cannot be used to count variables in BDD. For example, take simple XOR between two variables. If you make existential quantification using top variable you will lost both variables, i.e. the number of needed existential quantifications is not the same as the number of variables. Indeed, CUDD is reporting correct result but it is not using existential quantification. – meolic Jul 29 '15 at 16:28