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

Boolean equation solver and related functions. More...

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

Functions

DdNodeCudd_SolveEqn (DdManager *bdd, DdNode *F, DdNode *Y, DdNode **G, int **yIndex, int n)
 Implements the solution of F(x,y) = 0. More...
 
DdNodeCudd_VerifySol (DdManager *bdd, DdNode *F, DdNode **G, int *yIndex, int n)
 Checks the solution of F(x,y) = 0. More...
 
DdNodecuddSolveEqnRecur (DdManager *bdd, DdNode *F, DdNode *Y, DdNode **G, int n, int *yIndex, int i)
 Implements the recursive step of Cudd_SolveEqn. More...
 
DdNodecuddVerifySol (DdManager *bdd, DdNode *F, DdNode **G, int *yIndex, int n)
 Implements the recursive step of Cudd_VerifySol. More...
 

Detailed Description

Boolean equation solver and related functions.

Author
Balakrishna Kumthekar

Function Documentation

◆ Cudd_SolveEqn()

DdNode* Cudd_SolveEqn ( DdManager bdd,
DdNode F,
DdNode Y,
DdNode **  G,
int **  yIndex,
int  n 
)

Implements the solution of F(x,y) = 0.

The return value is the consistency condition. The y variables are the unknowns and the remaining variables are the parameters. Cudd_SolveEqn allocates an array and fills it with the indices of the unknowns. This array is used by Cudd_VerifySol.

Returns
the consistency condition if successful; NULL otherwise.
Side effects The solution is returned in G; the indices of the y
variables are returned in yIndex.
See also
Cudd_VerifySol
Parameters
bddCUDD manager
Fthe left-hand side of the equation
Ythe cube of the y variables
Gthe array of solutions (return parameter)
yIndexindex of y variables
nnumbers of unknowns

◆ Cudd_VerifySol()

DdNode* Cudd_VerifySol ( DdManager bdd,
DdNode F,
DdNode **  G,
int *  yIndex,
int  n 
)

Checks the solution of F(x,y) = 0.

This procedure substitutes the solution components for the unknowns of F and returns the resulting BDD for F.

Side effects Frees the memory pointed by yIndex.
See also
Cudd_SolveEqn
Parameters
bddCUDD manager
Fthe left-hand side of the equation
Gthe array of solutions
yIndexindex of y variables
nnumbers of unknowns

◆ cuddSolveEqnRecur()

DdNode* cuddSolveEqnRecur ( DdManager bdd,
DdNode F,
DdNode Y,
DdNode **  G,
int  n,
int *  yIndex,
int  i 
)

Implements the recursive step of Cudd_SolveEqn.

Returns
NULL if the intermediate solution blows up or reordering occurs.
Side effects The parametric solutions are stored in the array G.
See also
Cudd_SolveEqn, Cudd_VerifySol
Parameters
bddCUDD manager
Fthe left-hand side of the equation
Ythe cube of remaining y variables
Gthe array of solutions
nnumber of unknowns
yIndexarray holding the y variable indices
ilevel of recursion

◆ cuddVerifySol()

DdNode* cuddVerifySol ( DdManager bdd,
DdNode F,
DdNode **  G,
int *  yIndex,
int  n 
)

Implements the recursive step of Cudd_VerifySol.

Side effects none
See also
Cudd_VerifySol
Parameters
bddCUDD manager
Fthe left-hand side of the equation
Gthe array of solutions
yIndexarray holding the y variable indices
nnumber of unknowns