cudd  3.0.0
The University of Colorado Decision Diagram Package
Functions
cuddBddAbs.c File Reference

Quantification functions for BDDs. More...

#include "util.h"
#include "cuddInt.h"
Include dependency graph for cuddBddAbs.c:

Functions

DdNodeCudd_bddExistAbstract (DdManager *manager, DdNode *f, DdNode *cube)
 Existentially abstracts all the variables in cube from f. More...
 
DdNodeCudd_bddExistAbstractLimit (DdManager *manager, DdNode *f, DdNode *cube, unsigned int limit)
 Existentially abstracts all the variables in cube from f. More...
 
DdNodeCudd_bddXorExistAbstract (DdManager *manager, DdNode *f, DdNode *g, DdNode *cube)
 Takes the exclusive OR of two BDDs and simultaneously abstracts the variables in cube. More...
 
DdNodeCudd_bddUnivAbstract (DdManager *manager, DdNode *f, DdNode *cube)
 Universally abstracts all the variables in cube from f. More...
 
DdNodeCudd_bddBooleanDiff (DdManager *manager, DdNode *f, int x)
 Computes the boolean difference of f with respect to x. More...
 
int Cudd_bddVarIsDependent (DdManager *dd, DdNode *f, DdNode *var)
 Checks whether a variable is dependent on others in a function. More...
 
DdNodecuddBddExistAbstractRecur (DdManager *manager, DdNode *f, DdNode *cube)
 Performs the recursive steps of Cudd_bddExistAbstract. More...
 
DdNodecuddBddXorExistAbstractRecur (DdManager *manager, DdNode *f, DdNode *g, DdNode *cube)
 Takes the exclusive OR of two BDDs and simultaneously abstracts the variables in cube. More...
 
DdNodecuddBddBooleanDiffRecur (DdManager *manager, DdNode *f, DdNode *var)
 Performs the recursive steps of Cudd_bddBoleanDiff. More...
 
static int bddCheckPositiveCube (DdManager *manager, DdNode *cube)
 Checks whether cube is a BDD representing the product of positive literals. More...
 

Detailed Description

Quantification functions for BDDs.

Author
Fabio Somenzi

Function Documentation

◆ bddCheckPositiveCube()

static int bddCheckPositiveCube ( DdManager manager,
DdNode cube 
)
static

Checks whether cube is a BDD representing the product of positive literals.

Returns
1 in case of success; 0 otherwise.
Side effects None

◆ Cudd_bddBooleanDiff()

DdNode* Cudd_bddBooleanDiff ( DdManager manager,
DdNode f,
int  x 
)

Computes the boolean difference of f with respect to x.

Computes the boolean difference of f with respect to the variable with index x.

Returns
the BDD of the boolean difference if successful; NULL otherwise.
Side effects None

◆ Cudd_bddExistAbstract()

DdNode* Cudd_bddExistAbstract ( DdManager manager,
DdNode f,
DdNode cube 
)

Existentially abstracts all the variables in cube from f.

Returns
the abstracted BDD if successful; NULL otherwise.
Side effects None
See also
Cudd_bddUnivAbstract Cudd_addExistAbstract

◆ Cudd_bddExistAbstractLimit()

DdNode* Cudd_bddExistAbstractLimit ( DdManager manager,
DdNode f,
DdNode cube,
unsigned int  limit 
)

Existentially abstracts all the variables in cube from f.

Returns
the abstracted BDD if successful; NULL if the intermediate result blows up or more new nodes than limit are required.
Side effects None
See also
Cudd_bddExistAbstract

◆ Cudd_bddUnivAbstract()

DdNode* Cudd_bddUnivAbstract ( DdManager manager,
DdNode f,
DdNode cube 
)

Universally abstracts all the variables in cube from f.

Returns
the abstracted BDD if successful; NULL otherwise.
Side effects None
See also
Cudd_bddExistAbstract Cudd_addUnivAbstract

◆ Cudd_bddVarIsDependent()

int Cudd_bddVarIsDependent ( DdManager dd,
DdNode f,
DdNode var 
)

Checks whether a variable is dependent on others in a function.

No new nodes are created.

Returns
1 if the variable is dependent; 0 otherwise.
Side effects None
Parameters
ddmanager
ffunction
varvariable

◆ Cudd_bddXorExistAbstract()

DdNode* Cudd_bddXorExistAbstract ( DdManager manager,
DdNode f,
DdNode g,
DdNode cube 
)

Takes the exclusive OR of two BDDs and simultaneously abstracts the variables in cube.

The variables are existentially abstracted.

Returns
a pointer to the result is successful; NULL otherwise.
Side effects None
See also
Cudd_bddUnivAbstract Cudd_bddExistAbstract Cudd_bddAndAbstract

◆ cuddBddBooleanDiffRecur()

DdNode* cuddBddBooleanDiffRecur ( DdManager manager,
DdNode f,
DdNode var 
)

Performs the recursive steps of Cudd_bddBoleanDiff.

Exploits the fact that dF/dx = dF'/dx.

Returns
the BDD obtained by XORing the cofactors of f with respect to var if successful; NULL otherwise.
Side effects None

◆ cuddBddExistAbstractRecur()

DdNode* cuddBddExistAbstractRecur ( DdManager manager,
DdNode f,
DdNode cube 
)

Performs the recursive steps of Cudd_bddExistAbstract.

It is also used by Cudd_bddUnivAbstract.

Returns
the BDD obtained by abstracting the variables of cube from f if successful; NULL otherwise.
Side effects None
See also
Cudd_bddExistAbstract Cudd_bddUnivAbstract

◆ cuddBddXorExistAbstractRecur()

DdNode* cuddBddXorExistAbstractRecur ( DdManager manager,
DdNode f,
DdNode g,
DdNode cube 
)

Takes the exclusive OR of two BDDs and simultaneously abstracts the variables in cube.

The variables are existentially abstracted.

Returns
a pointer to the result is successful; NULL otherwise.
Side effects None
See also
Cudd_bddAndAbstract