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

Functions to find irredundant SOP covers as ZDDs from BDDs. More...

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

Functions

DdNodeCudd_zddIsop (DdManager *dd, DdNode *L, DdNode *U, DdNode **zdd_I)
 Computes an ISOP in ZDD form from BDDs. More...
 
DdNodeCudd_bddIsop (DdManager *dd, DdNode *L, DdNode *U)
 Computes a BDD in the interval between L and U with a simple sum-of-product cover. More...
 
DdNodeCudd_MakeBddFromZddCover (DdManager *dd, DdNode *node)
 Converts a ZDD cover to a BDD. More...
 
DdNodecuddZddIsop (DdManager *dd, DdNode *L, DdNode *U, DdNode **zdd_I)
 Performs the recursive step of Cudd_zddIsop. More...
 
DdNodecuddBddIsop (DdManager *dd, DdNode *L, DdNode *U)
 Performs the recursive step of Cudd_bddIsop. More...
 
DdNodecuddMakeBddFromZddCover (DdManager *dd, DdNode *node)
 Converts a ZDD cover to a BDD. More...
 

Detailed Description

Functions to find irredundant SOP covers as ZDDs from BDDs.

Author
In-Ho Moon

Function Documentation

◆ Cudd_bddIsop()

DdNode* Cudd_bddIsop ( DdManager dd,
DdNode L,
DdNode U 
)

Computes a BDD in the interval between L and U with a simple sum-of-product cover.

This procedure is similar to Cudd_zddIsop, but it does not return the ZDD for the cover.

Returns
a pointer to the BDD if successful; NULL otherwise.
Side effects None
See also
Cudd_zddIsop

◆ Cudd_MakeBddFromZddCover()

DdNode* Cudd_MakeBddFromZddCover ( DdManager dd,
DdNode node 
)

Converts a ZDD cover to a BDD.

Converts a ZDD cover to a BDD for the function represented by the cover.

Returns
a BDD node if successful; otherwise it returns NULL.
See also
Cudd_zddIsop

◆ Cudd_zddIsop()

DdNode* Cudd_zddIsop ( DdManager dd,
DdNode L,
DdNode U,
DdNode **  zdd_I 
)

Computes an ISOP in ZDD form from BDDs.

Computes an irredundant sum of products (ISOP) in ZDD form from BDDs. The two BDDs L and U represent the lower bound and the upper bound, respectively, of the function. The ISOP uses two ZDD variables for each BDD variable: One for the positive literal, and one for the negative literal. These two variables should be adjacent in the ZDD order. The two ZDD variables corresponding to BDD variable i should have indices 2i and 2i+1. The result of this procedure depends on the variable order. If successful, Cudd_zddIsop returns the BDD for the function chosen from the interval. The ZDD representing the irredundant cover is returned as a side effect in zdd_I. In case of failure, NULL is returned.

Returns
the BDD for the chosen function if successful; NULL otherwise.
Side effects zdd_I holds the pointer to the ZDD for the ISOP on
successful return.
See also
Cudd_bddIsop Cudd_zddVarsFromBddVars

◆ cuddBddIsop()

DdNode* cuddBddIsop ( DdManager dd,
DdNode L,
DdNode U 
)

Performs the recursive step of Cudd_bddIsop.

Side effects None
See also
Cudd_bddIsop

◆ cuddMakeBddFromZddCover()

DdNode* cuddMakeBddFromZddCover ( DdManager dd,
DdNode node 
)

Converts a ZDD cover to a BDD.

It is a recursive algorithm that works as follows. First it computes 3 cofactors of a ZDD cover: f1, f0 and fd. Second, it compute BDDs (b1, b0 and bd) of f1, f0 and fd. Third, it computes T=b1+bd and E=b0+bd. Fourth, it computes ITE(v,T,E) where v is the variable which has the index of the top node of the ZDD cover. In this case, since the index of v can be larger than either the one of T or the one of E, cuddUniqueInterIVO is called, where IVO stands for independent from variable ordering.

Returns
a BDD node if successful; otherwise it returns NULL.
See also
Cudd_MakeBddFromZddCover

◆ cuddZddIsop()

DdNode* cuddZddIsop ( DdManager dd,
DdNode L,
DdNode U,
DdNode **  zdd_I 
)

Performs the recursive step of Cudd_zddIsop.

Side effects None
See also
Cudd_zddIsop