int 
Ddi_BddArrayOperation(
  Ddi_DdMgr * defaultDdMgr, Default BDD Manager
  Ddi_DdArray_t ** bddArrayP, BDD Array Pointer to manipulate
  char * string, String
  Pdtutil_MgrOp_t  operationFlag, Operation Flag
  void ** voidPointer, Generic Pointer
  Pdtutil_MgrRet_t * returnFlag Type of the Pointer Returned
)


int 
Ddi_BddOperation(
  Ddi_DdMgr * defaultDdMgr, Default DD Manager
  Ddi_Dd_t ** bddP, BDD Pointer to manipulate
  char * string, String
  Pdtutil_MgrOp_t  operationFlag, Operation Flag
  void ** voidPointer, Generic Pointer
  Pdtutil_MgrRet_t * returnFlag Type of the Pointer Returned
)


Ddi_Dd_t * 
Ddi_DdAddCpart(
  Ddi_Dd_t * f, input function
  Ddi_Dd_t * new new partition
)
Adds conjoined partition

Side Effects None


Ddi_Dd_t * 
Ddi_DdAddDpart(
  Ddi_Dd_t * f, input function
  Ddi_Dd_t * new new partition
)
Adds disjoined partition

Side Effects None


Ddi_Dd_t * 
Ddi_DdAndExist(
  Ddi_Dd_t * f, 
  Ddi_Dd_t * g, 
  Ddi_VarSet_t * supp 
)
Computes the AND-Abstract of two BDDs

Side Effects none


Ddi_Dd_t * 
Ddi_DdAnd(
  Ddi_Dd_t * f, 
  Ddi_Dd_t * g 
)
Computes the AND of two BDDs

Side Effects none


Ddi_DdArray_t * 
Ddi_DdArrayAlloc(
  int  length array length
)
The function returns a pointer to a newly created DD array of the required length. The new array is initialized with NULL elements. NULL is returned in case of failure.

Side Effects none

See Also Ddi_DdArrayFree

void 
Ddi_DdArrayAndIthToN(
  Ddi_DdArray_t * array, BDDs' array
  Ddi_Dd_t * c, Constrain
  int  i0, First index of BDDs' array
  int  n Length of array
)
The function compute the logic AND between C and each element of array from i0-th position to last position. Afterwards, the element of array are replaced with the result.

Side Effects none

See Also Ddi_DdArrayAnd

void 
Ddi_DdArrayAnd(
  Ddi_DdArray_t * array, array
  Ddi_Dd_t * C constrain
)
The function compute the logic AND between C and each element of array. Afterwards, the element of array are replaced with the result.

Side Effects none

See Also Ddi_DdArrayAndIthToN

int 
Ddi_DdArrayAppend(
  Ddi_DdArray_t * array1, first array
  Ddi_DdArray_t * array2 array to be appended
)
The function appends the elements of array2 after the last element of array1. The function returns 1 if successfully appended, 0 otherwise.

Side Effects none

See Also Ddi_DdArrayJoin

void 
Ddi_DdArrayConstrainIthToN(
  Ddi_DdArray_t * array, BDDs'array
  Ddi_Dd_t * C, constrain
  int  i0, first index of BDD to be constrained
  int  n length of array
)
The function compute the constrain operator between C and each element of array from i0-th position to last position. Afterwards, the element of array are replaced with the result.

Side Effects none

See Also Ddi_DdArrayConstrain

void 
Ddi_DdArrayConstrain(
  Ddi_DdArray_t * array, BDDs'array
  Ddi_Dd_t * C constrain
)
The function computes the constrain operator between C and each element of array. Afterwards, the element of array are replaced with the result.

Side Effects none

See Also Ddi_DdArrayConstrainIthToN

Ddi_DdArray_t * 
Ddi_DdArrayCopy(
  Ddi_DdMgr * dd2, destination manager
  Ddi_DdArray_t * F array to be duplicated
)
Copy a BDD array to a destination manager.

Side Effects none


Ddi_DdArray_t * 
Ddi_DdArrayDup(
  Ddi_DdArray_t * old array to be duplicated
)
The function duplicates an array. The unused room of the first array is not copied. On error, it returns NULL.

Side Effects none


void 
Ddi_DdArrayExistIthToN(
  Ddi_DdArray_t * array, BDDs'array
  Ddi_VarSet_t * V, smoothing varset
  int  i0, first index of BDDs'array
  int  n length of array
)
The function abstracts existentially the variables belonging to the smoothing varset from each element of array from i0-th position to the last. Afterwards, the element of array are replaced with the result.

Side Effects none

See Also Ddi_DdArrayAnd

void 
Ddi_DdArrayExist(
  Ddi_DdArray_t * array, array
  Ddi_VarSet_t * V smoothing varset
)
The function abstracts existentially the variables belonging to the smoothing varset from each element of array from i0-th position to the last. Afterwards, the element of array are replaced with the result.

Side Effects none

See Also Ddi_DdArrayAndIthToN

Ddi_Dd_t * 
Ddi_DdArrayExtract(
  Ddi_DdArray_t * array, BDDs' array
  int  i index
)
The function returns the pointer to the BDD at the i-th position of the array, and replaces it with a NULL element. The BDD is thus removed from the array. If it fails, then returns NULL.

Side Effects none


Ddi_Dd_t * 
Ddi_DdArrayFetchLast(
  Ddi_DdArray_t * array 
)
The function returns the pointer to the BDD at the last position of the array.

Side Effects none

See Also Ddi_DdArrayFetch

Ddi_Dd_t * 
Ddi_DdArrayFetch(
  Ddi_DdArray_t * array, BDDs' array
  int  i index
)
The function returns the pointer to the BDD at the i-th position of the array. NULL is returned on failure.

Side Effects none


void 
Ddi_DdArrayFree(
  Ddi_DdArray_t * array array to be freed
)
Frees all BDDs in the array and the dynamic memory allocated.

Side Effects none

See Also Ddi_DdArrayAlloc

Ddi_DdArray_t * 
Ddi_DdArrayFromCU(
  Ddi_DdMgr * dd, 
  DdNode ** array, 
  int  n 
)
The function converts a BDD array (Ddi_DdArray_t *) into a BDDs'array (Ddi_Dd_t **).
In case of error, it returns NULL.

Side Effects none


int 
Ddi_DdArrayInclude(
  Ddi_DdArray_t * array, array of BDDs
  int  idx, position of new element
  Ddi_Dd_t * f BDD to be included
)
The BDD f is assigned to the idx position of the array and it is referenced. All BDDs with higher indexes are moved upward. The function returns 1 for success, 0 otherwise

Side Effects none

See Also Ddi_DdArrayInsert

int 
Ddi_DdArrayInsertLast(
  Ddi_DdArray_t * array, BDDs'array
  Ddi_Dd_t * f element to be inserted
)
The function inserts the BDD f after the last BDD inserted in the array. The function returns 1 if successfully inserted, 0 otherwise.

Side Effects none

See Also Ddi_DdArrayInsert

int 
Ddi_DdArrayInsert(
  Ddi_DdArray_t * array, array of BDDs
  int  idx, position of new element
  Ddi_Dd_t * f BDD to be inserted
)
The function inserts the BDD f in the idx position of the array. The inserted inserted BDD is duplicated (referenced).
If the i-th array slot already contained a BDD, it is NOT freed, this should be done explicitely. The function returns 1 for success, 0 for failure.

Side Effects none

See Also Ddi_DdArrayInclude

Ddi_DdArray_t * 
Ddi_DdArrayJoin(
  Ddi_DdArray_t * array1, first array
  Ddi_DdArray_t * array2 second array
)
The function returns the pointer of the new array if successfully joined, NULL otherwise

Side Effects none

See Also Ddi_DdArrayAppend

Ddi_DdArray_t * 
Ddi_DdArrayLoad(
  Ddi_DdMgr * dd, dd manager
  char ** vnames, variable names
  int * vauxids, variable auxids
  int  mode, storing mode selector
  char * file, name file
  FILE * fp file pointer
)
This function loads a BDDs'array.
The BDD on file must be in the DDDMP format. The parameter "mode" can be DDDMP_MODE_TEXT, DDDMP_MODE_COMPRESSED or DDDMP_MODE_AUTOMATIC.
The function returns the pointer of array if succefully loaded, NULL otherwise.

Side Effects none

See Also Dddmp_cuddBddLoad Ddi_DdLoad

Ddi_DdArray_t * 
Ddi_DdArrayOrDdArray(
  Ddi_DdArray_t * array1, first array
  Ddi_DdArray_t * array2 second array
)
The function, for all elements of the two arrays, computes logic OR between the i-th element of first array and the i-th element of second array.
The function returns the pointer of new array. Be careful! The two arrays must be same length.

Side Effects none


void 
Ddi_DdArrayPrintStats(
  Ddi_DdArray_t * array 
)
Prints Statistics of a BDD

Side Effects none


void 
Ddi_DdArrayPrint(
  Ddi_DdArray_t * array array to be printed
)
prints the BDDs'array

Side Effects none


Ddi_Dd_t ** 
Ddi_DdArrayReadData(
  Ddi_DdArray_t * array 
)
The function converts a DD array (Ddi_DdArray_t *) into an array of BDDs (Ddi_Dd_t **).
In case of error, it returns NULL.

Side Effects none


void 
Ddi_DdArrayRestrictIthToN(
  Ddi_DdArray_t * array, 
  Ddi_Dd_t * C, 
  int  i0, 
  int  n length of array
)
The function compute the restrict operator between C and each element of array from i0-th position to last position. Afterwards, the element of array are replaced with the result.

Side Effects none

See Also Ddi_DdArrayRestrict

void 
Ddi_DdArrayRestrict(
  Ddi_DdArray_t * array, BDDs'array
  Ddi_Dd_t * C constrain
)
The function compute the restrict operator between C and each element of array. Afterwards, the element of array are replaced with the result.

Side Effects none

See Also Ddi_DdArrayRestrictIthToN

int 
Ddi_DdArraySize(
  Ddi_DdArray_t * array 
)
Counts the numbers of nodes in an array of BDDs. Shared nodes are counted only once.

Side Effects none


int 
Ddi_DdArrayStore(
  Ddi_DdArray_t * array, array to be stored
  char * ddname, dd name (or NULL)
  char ** vnames, array of variable names (or NULL)
  char ** rnames, array of root names (or NULL)
  int * auxids, array of aux var ids (or NULL)
  int  mode, storing mode selector
  char * fname, file name
  FILE * fp pointer to the store file
)
This function stores a BDDs'array. The BDD is stored in the DDDMP format. The parameter "mode" can be DDDMP_MODE_TEXT, DDDMP_MODE_COMPRESSED or DDDMP_MODE_AUTOMATIC.
The function returns 1 if succefully stored, 0 otherwise.

Side Effects none

See Also Dddmp_cuddBddStore Ddi_DdStore

Ddi_VarSet_t ** 
Ddi_DdArraySupportArray(
  Ddi_DdArray_t * fArray array of function
)
The function return a pointer of an array of Ddi_VarSet_t * , or NULL if it fails

Side Effects none

See Also Ddi_DdArraySupport

Ddi_VarSet_t * 
Ddi_DdArraySupportIthToN(
  Ddi_DdArray_t * array, BDDs'array
  int  i0 position of first BDD
)
The function computes the support of all BDDs from the i-th to last BDD of array.
The function return the support as a varset type.

Side Effects none

See Also Ddi_DdArraySupport

Ddi_VarSet_t * 
Ddi_DdArraySupport(
  Ddi_DdArray_t * array BDDs'array
)
The function returns a var-set representing the set of variables (=support) of all the BDDs in the array

Side Effects none

See Also Ddi_DdArraySupportArray

DdNode ** 
Ddi_DdArrayToCU(
  Ddi_DdArray_t * array 
)
The function converts a BDD array (Ddi_DdArray_t *) into a BDDs'array (Ddi_Dd_t **).
In case of error, it returns NULL.

Side Effects none


int 
Ddi_DdArray_n(
  Ddi_DdArray_t * array 
)
Returns the number of elements of the array

Side Effects none


Ddi_Dd_t * 
Ddi_DdComplLiteral(
  Ddi_DdMgr * dd, 
  Ddi_Var_t * v 
)
Returns a complemented literal from a variable

Side Effects none


Ddi_Dd_t * 
Ddi_DdConstrain(
  Ddi_Dd_t * f, 
  Ddi_Dd_t * c 
)
Computes the constrain cofactor between F and C

Side Effects none


Ddi_Dd_t * 
Ddi_DdCopyWithAuxMgr(
  Ddi_DdMgr * dd2, Destination Manager
  Ddi_Dd_t * f, BDD to be Copied
  Ddi_DdMgr * ddAux Auxiliary Temporary Manager
)
Copies a BDD to a destination dd manager using a third manager

Side Effects none


Ddi_Dd_t * 
Ddi_DdCopy(
  Ddi_DdMgr * dd2, destination manager
  Ddi_Dd_t * f BDD to be copied
)
Copies a BDD to a destination dd manager

Side Effects none


Ddi_Dd_t * 
Ddi_DdCreateFromCU(
  Ddi_DdMgr * mgr, 
  DdNode * f 
)
Builds the Ddi_Dd_t structure from manager and node. The reference count of the node is increased.


Ddi_Dd_t * 
Ddi_DdDenseSet(
  Ddi_DenseMethod_e  method, Operation Code
  Ddi_Dd_t * f, Operand
  int  threshold, 
  int  safe, 
  int  quality, 
  double  hardlimit 
)
Computes the Dense Super or Subset of a Boolean functions

Side Effects none


Ddi_Dd_t * 
Ddi_DdDup(
  Ddi_Dd_t * f BDD to be duplicated
)
Returns the input BDD after increasing its reference count.

Side Effects none


int 
Ddi_DdEqual(
  Ddi_Dd_t * f1, first dd
  Ddi_Dd_t * f2 second dd
)
The function returns 1 if the two DDs are equal

Side Effects none


Ddi_Dd_t * 
Ddi_DdEvalFree(
  Ddi_Dd_t * f, expression
  Ddi_Dd_t * g function to be freed
)
Useful when computing a new value for a variable and the old value must be freed. Avoids using temporary variables. Since the f expression is evalued before passing actual parameters, freing of g occurs as last operation.

Side Effects none


Ddi_Dd_t * 
Ddi_DdExist(
  Ddi_Dd_t * f, 
  Ddi_VarSet_t * supp 
)
Computes the existential abstraction of a BDD with respect to a support

Side Effects none


void 
Ddi_DdFree(
  Ddi_Dd_t * f BDD to be freed
)
Calls Cudd_RecursiveDeref. Used to free a BDD that is no longer needed.

Side Effects none


int 
Ddi_DdIsOne(
  Ddi_Dd_t * f 
)
The function returns 1 if the DD f is the one constant.

Side Effects none


int 
Ddi_DdIsZero(
  Ddi_Dd_t * f 
)
The function returns 1 if the DD f is the zero constant.

Side Effects none


Ddi_Dd_t * 
Ddi_DdIte(
  Ddi_Dd_t * f, 
  Ddi_Dd_t * g, 
  Ddi_Dd_t * h 
)
ITE operator

Side Effects none


Ddi_Dd_t * 
Ddi_DdLiteral(
  Ddi_DdMgr * dd, 
  Ddi_Var_t * v 
)
Returns a literal from a variable

Side Effects none


Ddi_Dd_t * 
Ddi_DdLoad(
  Ddi_DdMgr * dd, dd manager
  int  varmatchmode, variable matching mode
  char  mode, loading mode
  char * filename, file name
  FILE * fp file pointer
)
This function loads only a BDD. If the file contain a BDDs' array, then will be load only the first BDD.
The BDD on file must be in the DDDMP format. The parameter "mode" can be DDDMP_MODE_TEXT, DDDMP_MODE_BINARY or DDDMP_MODE_DEFAULT.
The function returns the pointer of BDD root if succefully loaded, NULL otherwise.

Side Effects None

See Also Ddi_DdStore Dddmp_cuddBddLoad

Ddi_Var_t * 
Ddi_DdNewVarAtLevel(
  Ddi_DdMgr * dd, 
  int  lev 
)
Returns a new variable at a given level in the order

Side Effects none


Ddi_Var_t * 
Ddi_DdNewVar(
  Ddi_DdMgr * dd 
)
Returns a new variable

Side Effects none


void 
Ddi_DdNodeClearVisited(
  DdNode * f 
)
Clears visited flag

Side Effects None


Ddi_DdNode * 
Ddi_DdNodeElse(
  Ddi_DdNode * f 
)
Returns Else branch of f (complemented if f compl.

Side Effects none


Ddi_DdNode * 
Ddi_DdNodeFromCU(
  DdNode * n 
)
Converts a Cudd node into a Dd node

Side Effects None


int 
Ddi_DdNodeIsVisited(
  DdNode * f 
)
Returns true if node is visited

Side Effects None


int 
Ddi_DdNodeReadIndex(
  Ddi_DdNode * f 
)
Returns variable index of f

Side Effects none


void 
Ddi_DdNodeSetVisited(
  DdNode * f 
)
Marks a node as visited

Side Effects None


Ddi_DdNode * 
Ddi_DdNodeThen(
  Ddi_DdNode * f 
)
Returns Then branch of f (complemented if f compl.

Side Effects none


DdNode * 
Ddi_DdNodeToCU(
  Ddi_DdNode * n 
)
Converts into a Cudd node

Side Effects None


Ddi_Dd_t * 
Ddi_DdNot(
  Ddi_Dd_t * f 
)
calls Cudd_Not. Result automatically referenced by conversion function Ddi_DdCreateFromCU

Side Effects none


Ddi_Dd_t * 
Ddi_DdOr(
  Ddi_Dd_t * f, 
  Ddi_Dd_t * g 
)
Computes the OR of two BDDs

Side Effects none


Ddi_Dd_t * 
Ddi_DdPart2Mono(
  Ddi_Dd_t * f input function
)
Creates a monolithic BDD from a partitioned one

Side Effects None


Ddi_Dd_t * 
Ddi_DdPartFromArray(
  Ddi_DdArray_t * array, input array
  int  code code: disj/conj
)
Builds a partitioned function

Side Effects None


void 
Ddi_DdPrintStats(
  Ddi_Dd_t * f 
)
Prints Statistics of a BDD

Side Effects none


void 
Ddi_DdPrint(
  Ddi_Dd_t * f 
)
Calls cuddP. Used to free a BDD that is no longer needed.

Side Effects none


int 
Ddi_DdReadCode(
  Ddi_Dd_t * f 
)
Reads the code.


Ddi_Dd_t * 
Ddi_DdReadIthPart(
  Ddi_Dd_t * f, 
  int  i 
)
Reads the i-th partition of the boolean function f.


Ddi_DdMgr * 
Ddi_DdReadMgr(
  Ddi_Dd_t * f 
)
Reads the DD Manager of the boolean function f.


int 
Ddi_DdReadPartNum(
  Ddi_Dd_t * f 
)
Reads the number of partitions of the boolean function f.


Ddi_DdArray_t * 
Ddi_DdReadPart(
  Ddi_Dd_t * f 
)
Reads the array of partitions of the boolean function f.


Ddi_Dd_t * 
Ddi_DdRemPart(
  Ddi_Dd_t * f, input function
  int  pi partition index
)
Removes a partition

Side Effects None


void 
Ddi_DdReplaceIthPart(
  Ddi_Dd_t * f, input function
  int  i, index
  Ddi_Dd_t * p new partition
)
Replaces i-th partition with a new one

Side Effects None


Ddi_Dd_t * 
Ddi_DdRestrict(
  Ddi_Dd_t * f, 
  Ddi_Dd_t * c 
)
Computes the restrict cofactor between F and C

Side Effects none


Ddi_DdNode * 
Ddi_DdRootNode(
  Ddi_Dd_t * f 
)
Returns the root node of the BDD

Side Effects none


void 
Ddi_DdSetCode(
  Ddi_Dd_t * f, 
  int  code 
)
Sets the code of the boolean function.


void 
Ddi_DdSetMgr(
  Ddi_Dd_t * f, 
  Ddi_DdMgr * dd 
)
Sets the DD Manager of the boolean function f.


void 
Ddi_DdSetPart(
  Ddi_Dd_t * f, 
  Ddi_DdArray_t * p 
)
Sets the array of partitions of the boolean function f.


int 
Ddi_DdSize(
  Ddi_Dd_t * f 
)
Gets the size of a BDD

Side Effects none


int 
Ddi_DdStore(
  Ddi_Dd_t * f, BDD
  char * ddname, dd name (or NULL)
  char  mode, storing mode
  char * filename, file name
  FILE * fp pointer to the store file
)
This function stores only a BDD (not a BDDs'array). The BDD is stored in the DDDMP format. The parameter "mode" can be DDDMP_MODE_TEXT, DDDMP_MODE_BINARY or DDDMP_MODE_DEFAULT.
The function returns 1 if succefully stored, 0 otherwise.

Side Effects None

See Also Ddi_DdLoad Dddmp_cuddBddStore

void 
Ddi_DdSupportPrint(
  Ddi_Dd_t * f 
)
Calls cuddP. Used to free a BDD that is no longer needed.

Side Effects none


Ddi_VarSet_t * 
Ddi_DdSupport(
  Ddi_Dd_t * f BDD
)
The support of a BDD is a cube where each node corresponds to a variable.

Side Effects none


Ddi_Dd_t * 
Ddi_DdSwapVariablesWithAuxMgr(
  Ddi_Dd_t * f, input function
  Ddi_VarArray_t * src, source array of variables
  Ddi_VarArray_t * dst, dest array of variables
  Ddi_DdMgr * ddAux Auxiliary Temporary Manager
)
Copies a BDD to a destination dd manager using a third manager

Side Effects none


Ddi_Dd_t * 
Ddi_DdSwapVariables(
  Ddi_Dd_t * f, input function
  Ddi_VarArray_t * x, 1-st array of variables
  Ddi_VarArray_t * y 2-nd array of variables
)
Returns a new function with the variables swapped (x replaces y and viceversa.

Side Effects none


Ddi_DdNode * 
Ddi_DdToCU(
  Ddi_Dd_t * f 
)
Converts a DD into the correspondent Cudd Node

Side Effects None


int 
Ddi_DdTopvarIndex(
  Ddi_Dd_t * f 
)
Returns the variable index

Side Effects none


Ddi_Dd_t * 
Ddi_DdXnor(
  Ddi_Dd_t * f, 
  Ddi_Dd_t * g 
)
Computes the XNOR of two BDDs

Side Effects none


Ddi_Dd_t * 
Ddi_DdXor(
  Ddi_Dd_t * f, 
  Ddi_Dd_t * g 
)
Computes the XOR of two BDDs

Side Effects none


void 
Ddi_DdiMgrQuit(
  Ddi_DdMgr * dd dd manager
)
Closes a DdManager.

Side Effects none

See Also Ddi_MgrInit

char * 
Ddi_DenseMethodEnum2String(
  Ddi_DenseMethod_e  enumType 
)
Given an Enumerated type Returns a string

Side Effects none


Ddi_DenseMethod_e 
Ddi_DenseMethodString2Enum(
  char * string String to Analyze
)
It receives a string; to facilitate the user that string can be an easy-to-remember predefined code or an integer number (interpreted as a string). It returns the dense method type.

Side Effects none


Ddi_Var_t * 
Ddi_IthVar(
  Ddi_DdMgr * dd, 
  int  index 
)
Returns the variable of a given index

Side Effects none


void 
Ddi_MgrAlign(
  Ddi_DdMgr * dd, dd manager to be aligned
  Ddi_DdMgr * ddRef reference dd manager
)
Aligns the order of two managers.

Side Effects none


void 
Ddi_MgrAutodynResume(
  Ddi_DdMgr * dd dd manager
)
Resume autodyn if suspended.

Side Effects none

See Also Ddi_MgrInit

void 
Ddi_MgrAutodynSuspend(
  Ddi_DdMgr * dd dd manager
)
Suspend autodyn if active.

Side Effects none

See Also Ddi_MgrInit

void 
Ddi_MgrCreateGroups2(
  Ddi_DdMgr * dd, manager
  Ddi_VarArray_t * vfix, first array
  Ddi_VarArray_t * vmov first array
)
Create groups of 2 variables: variables of corresponding indexes in vfix and vmov are coupled. If vmov[i

Side Effects none


Ddi_DdMgr * 
Ddi_MgrDup(
  Ddi_DdMgr * dd source dd manager
)
Creates a copy of a DdManager.

Side Effects none

See Also Ddi_DdiMgrQuit

Ddi_DdMgr * 
Ddi_MgrInit(
  char * ddiName, Name of the DDI structure
  DdManager * CUMgr, Input CD manager. Created if NULL
  unsigned int  nvar, Initial Number of Variables
  unsigned int  numSlots, Initial Size of Unique Table
  unsigned int  cacheSize, Initial Size of Computed Table (cache)
  unsigned long  memorySizeMax Max size of Memory
)
Creates a DdManager.

Side Effects none

See Also Ddi_DdiMgrQuit

int 
Ddi_MgrOperation(
  Ddi_DdMgr ** ddMgrP, DD Manager Pointer
  char * string, String
  Pdtutil_MgrOp_t  operationFlag, Operation Flag
  void ** voidPointer, Generic Pointer
  Pdtutil_MgrRet_t * returnFlagP Type of the Pointer Returned
)

Side Effects To be congruent operationFlag should be a Pdtutil_MgrOp_t type, and returnFlag of Pdtutil_MgrRet_t type.


void 
Ddi_MgrPrintStats(
  Ddi_DdMgr * dd source dd manager
)
Prints on standard outputs statistics on a DD manager

Side Effects none


int 
Ddi_MgrReadDdNum(
  Ddi_DdMgr * dd source dd manager
)
Reads the counter of Dd Handles

Side Effects none


unsigned int 
Ddi_MgrReadDynordThresh(
  Ddi_DdMgr * dd source dd manager
)
Returns the threshold for the next dynamic reordering.

Side Effects none


DdManager * 
Ddi_MgrReadMgrCU(
  Ddi_DdMgr * dd source dd manager
)
Reads the Cudd Manager

Side Effects none


Ddi_Dd_t * 
Ddi_MgrReadOne(
  Ddi_DdMgr * dd source dd manager
)
Reads one constant

Side Effects none


int 
Ddi_MgrReadOrdNamesAuxids(
  Ddi_DdMgr * dd, Manager
  char * filename, File Name
  FILE * fp Pointer to the Store File
)
This function reads the variable ordering of a dd manager. Existing variables with names in the ordering are shuffled to match the ordering.

Side Effects None


int * 
Ddi_MgrReadVarauxids(
  Ddi_DdMgr * dd source dd manager
)
Reads the variable auxiliary ids

Side Effects none


char** 
Ddi_MgrReadVarnames(
  Ddi_DdMgr * dd source dd manager
)
Reads the variable names

Side Effects none


Pdtutil_VerbLevel_e 
Ddi_MgrReadVerbosity(
  Ddi_DdMgr * ddiMgr Decision Diagram Interface Manager
)
Read verbosity

Side Effects none


Ddi_Dd_t * 
Ddi_MgrReadZero(
  Ddi_DdMgr * dd source dd manager
)
Reads zero constant

Side Effects none


void 
Ddi_MgrSetDynordThresh(
  Ddi_DdMgr * dd, source dd manager
  unsigned int  th threshold
)
Returns the threshold for the next dynamic reordering.

Side Effects none


void 
Ddi_MgrSetMgrCU(
  Ddi_DdMgr * dd, source dd manager
  DdManager * m CUDD manager
)
Sets the CUDD manager

Side Effects none


void 
Ddi_MgrSetOne(
  Ddi_DdMgr * dd, source dd manager
  Ddi_Dd_t * one one constant
)
Sets the one constant

Side Effects none


void 
Ddi_MgrSetVarauxids(
  Ddi_DdMgr * dd, source dd manager
  int * va auxiliary variable ids
)
Sets the auxiliary variable ids

Side Effects none


void 
Ddi_MgrSetVarnames(
  Ddi_DdMgr * dd, source dd manager
  char ** vn names of variables
)
Sets the names of variables

Side Effects none


void 
Ddi_MgrSetVerbosity(
  Ddi_DdMgr * ddiMgr, Decision Diagram Interface Manager
  Pdtutil_VerbLevel_e  verbosity Verbosity Level
)
Set verbosity

Side Effects none


void 
Ddi_MgrSetZero(
  Ddi_DdMgr * dd, source dd manager
  Ddi_Dd_t * zero zero constant
)
Sets the zero constant

Side Effects none


void 
Ddi_MgrShuffle(
  Ddi_DdMgr * dd, dd Manager to be Alligned
  int * sortedIds, Array of sorted ids
  int  nids Number of ids
)
Reorders all DDs in a manager according to the input order. The input specification may be partial, i.e. it may include only a subset of variables.

Side Effects none


int 
Ddi_MgrWriteOrd(
  Ddi_DdMgr * dd, Decision Diagram Manager
  char * filename, File Name
  FILE * fp, Pointer to the Store File
  Pdtutil_VariableOrderFormat_e  fileFormat File Format
)
This function stores the variable ordering of a dd manager. Variable names and aux ids are used.

Side Effects None


void 
Ddi_MulvarInterleave(
  Ddi_Dd_t * f, first input function
  Ddi_Dd_t * g second input function
)
generates a common ordering given 2 input BDDs

Side Effects None


void 
Ddi_PrintDdArray(
  Ddi_DdArray_t * array 
)
Prints the size of each function in a DdArray

Side Effects None

See Also Ddi_PrintVarArray

void 
Ddi_PrintVarArray(
  Ddi_VarArray_t * array 
)
Prints the indices of a VarArray

Side Effects None

See Also Ddi_PrintDdArray

void 
Ddi_PrintVersion(
  FILE * fp 
)
Returns the version of CUDD package

Side Effects none


char * 
Ddi_ProfileHeuristicEnum2String(
  Cuplus_PruneHeuristic_e  enumType 
)
Given an Enumerated type Returns a string

Side Effects none


Cuplus_PruneHeuristic_e 
Ddi_ProfileHeuristicString2Enum(
  char * string String to Analyze
)
It receives a string; to facilitate the user that string can be an easy-to-remember predefined code or an integer number (interpreted as a string). It returns the dense method type.

Side Effects none


void 
Ddi_ProfileInfoFree(
  Ddi_Dd_t * f input function
)

Side Effects None


void 
Ddi_ProfileInfoInit(
  Ddi_Dd_t * f, input function
  cuplus_profile_info_t * profileInfo, profile info
  unsigned char  dac99_compatible enabled for settings of paper
)

Side Effects None


void 
Ddi_ProfileInfoPrint(
  Ddi_Dd_t * f input function
)

Side Effects None


Ddi_Dd_t * 
Ddi_PruneProfiled(
  Ddi_Dd_t * f, input function
  Cuplus_PruneHeuristic_e  prune_heuristic, 
  int  threshold 
)

Side Effects None


double 
Ddi_ReadCacheHits(
  Ddi_DdMgr * dd dd manager
)
Returns the number of cache hits.

Side Effects none


double 
Ddi_ReadCacheLookUps(
  Ddi_DdMgr * dd dd manager
)
Returns the number of cache look-ups.

Side Effects none


unsigned int 
Ddi_ReadCacheSlots(
  Ddi_DdMgr * dd source dd manager
)
Reads the number of slots in the cache.

Side Effects none


Ddi_Dd_t * 
Ddi_ReadCube(
  Ddi_DdMgr * dd, 
  FILE * fp, 
  int  idOrName 
)
The user can make a cube typing the index of variables

Side Effects none


char * 
Ddi_ReadDdiName(
  Ddi_DdMgr * dd source dd manager
)
Returns the threshold for the next dynamic reordering.

Side Effects none


unsigned int 
Ddi_ReadMaxCacheHard(
  Ddi_DdMgr * dd dd manager
)
Reads the maxCacheHard parameter of the manager.

Side Effects none


unsigned int 
Ddi_ReadMaxCache(
  Ddi_DdMgr* dd dd manager
)
Returns the soft limit for the cache size.

Side Effects none


unsigned int 
Ddi_ReadMinHit(
  Ddi_DdMgr * dd dd manager
)
Reads the hit ratio that causes resizing of the computed table.

Side Effects none


Ddi_VarSet_t * 
Ddi_ReadVarSet(
  Ddi_DdMgr * dd, 
  FILE * fp, 
  int  idOrName 
)
The user can make a cube typing the index of variables

Side Effects none


char * 
Ddi_ReorderingMethodEnum2String(
  Cudd_ReorderingType  enumType 
)
Given an Enumerated type Returns a string

Side Effects none


Cudd_ReorderingType 
Ddi_ReorderingMethodString2Enum(
  char * string String to Analyze
)
It receives a string; to facilitate the user that string can be an easy-to-remember predefined code or an integer number (interpreted as a string). It returns the dense method type.

Side Effects none


void 
Ddi_SetDdiName(
  Ddi_DdMgr * dd, source dd manager
  char * ddiName 
)
Returns the threshold for the next dynamic reordering.

Side Effects none


Ddi_VarArray_t * 
Ddi_VarArrayAlloc(
  int  size array length
)
The function returns the pointer to the new array or NULL on error

Side Effects none

See Also Ddi_VarArrayFree

int true or false
Ddi_VarArrayAppend(
  Ddi_VarArray_t * array1, first array
  Ddi_VarArray_t * array2 array to be appended
)
The function returns 1 if successfully appended, otherwise 0

Side Effects none

See Also Ddi_VarArrayJoin

Ddi_VarArray_t * 
Ddi_VarArrayCopy(
  Ddi_DdMgr * ddAux, dd Manager
  Ddi_VarArray_t * vars array of variables
)
The function returns the pointer to the new array or NULL if it fails

Side Effects none


Ddi_VarArray_t * 
Ddi_VarArrayDup(
  Ddi_VarArray_t * old array to be duplicated
)
The function returns the pointer to the new array or NULL if it fails

Side Effects none


Ddi_Var_t * 
Ddi_VarArrayFetch(
  Ddi_VarArray_t * array, variables'array
  int  i position of variable
)
The function returns NULL if the index is out of range

Side Effects none

See Also Ddi_VarArrayInsert

void 
Ddi_VarArrayFree(
  Ddi_VarArray_t * array 
)
Frees an array of variables

Side Effects none

See Also Ddi_VarArrayAlloc

Ddi_VarArray_t * 
Ddi_VarArrayFromCU(
  DdNode ** array, 
  int  n 
)
Generates a variable array from CU vars

Side Effects none


int index of variable
Ddi_VarArrayIndex(
  Ddi_VarArray_t * array, array of variables
  int  i position of variable
)
The function is equivalent at the call of the instruction below:
Ddi_VarIndex( Ddi_VarArrayFetch(array,i) );
If the index i is out of bounds, then return -1

Side Effects none

See Also Ddi_VarArrayFetch Ddi_VarIndex

int true or false
Ddi_VarArrayInsert(
  Ddi_VarArray_t * array, array of variables
  int  pos, position of new element
  Ddi_Var_t * var variable to be inserted
)
Returns 1 on success, 0 on failure. If the position is greater than the array, the array is resized

Side Effects none

See Also Ddi_VarArrayFetch

Ddi_VarArray_t * new array
Ddi_VarArrayJoin(
  Ddi_VarArray_t * array1, 
  Ddi_VarArray_t * array2 second array
)
Returns a pointer of the new array or NULL if it fails

Side Effects none

See Also Ddi_VarArrayAppend

DdNode ** 
Ddi_VarArrayToCU(
  Ddi_VarArray_t * array 
)
The VarArray type is a struct pointing to the array of variables whose length can be read using Ddi_VarArray_n()

Side Effects none


int * array of integer
Ddi_VarArrayToInt(
  Ddi_VarArray_t * array array of variables
)
The function returns a pointer to an array of integers, where each element is the index of a variable in VarArray. If it fails, then return NULL.

Side Effects none

See Also Ddi_VarArrayToVarSet

Ddi_VarSet_t * set of variables
Ddi_VarArrayToVarSet(
  Ddi_DdMgr * dd, dd manager
  Ddi_VarArray_t * array array of variables
)
The function returns a pointer to a set of variables. From array to set of variables the information about ordering is lost.

Side Effects none

See Also Ddi_VarArrayToInt

int number of elements
Ddi_VarArray_n(
  Ddi_VarArray_t * array 
)
Returns the number of elements in a variable array

Side Effects none


int 
Ddi_VarAuxid2Id(
  Ddi_DdMgr * dd, 
  int  auxid 
)
Still a linear search !

Side Effects none


int 
Ddi_VarAuxid(
  Ddi_DdMgr * dd, 
  Ddi_Var_t * var 
)
Returns the variable auxid

Side Effects none


Ddi_Var_t * 
Ddi_VarCopy(
  Ddi_DdMgr * dd2, destination manager
  Ddi_Var_t * v variable to be copied
)
Finds the variable corresponding to v in the destination manager. Variable correspondence is for now limited to index matching.

Side Effects none


int 
Ddi_VarCurrPos(
  Ddi_DdMgr * dd, 
  Ddi_Var_t * var 
)
Returns the current position of the variable in the order

Side Effects none


Ddi_Var_t * 
Ddi_VarFromCU(
  DdNode * v 
)
Converts a Cudd node into a variable

Side Effects none


int 
Ddi_VarId2Auxid(
  Ddi_DdMgr * dd, 
  int  index 
)
Returns the variable auxid given the index

Side Effects none


char * 
Ddi_VarId2Name(
  Ddi_DdMgr * dd, 
  int  index 
)
Returns the variable name given the index

Side Effects none


int 
Ddi_VarIndex(
  Ddi_Var_t * var 
)
Returns the variable index

Side Effects none


void 
Ddi_VarMakeGroup(
  Ddi_DdMgr * dd, 
  Ddi_Var_t * v, 
  int  grpSize 
)
A group of variables is created for group sifting

Side Effects none


int 
Ddi_VarName2Id(
  Ddi_DdMgr * dd, 
  char * name 
)
Still a linear search !

Side Effects none


char * 
Ddi_VarName(
  Ddi_DdMgr * dd, 
  Ddi_Var_t * var 
)
Returns the variable name given the index

Side Effects none


Ddi_VarSet_t * 
Ddi_VarSetAdd(
  Ddi_VarSet_t * varset, var-set
  Ddi_Var_t * var the new variable added to var-set
)
The function return the pointer to the new var-set

Side Effects none

See Also Ddi_VarSetRemove

void 
Ddi_VarSetAuxid(
  Ddi_DdMgr * dd, 
  Ddi_Var_t * var, 
  int  auxid 
)
Returns the variable name given the index

Side Effects none


Ddi_Var_t * 
Ddi_VarSetBottom(
  Ddi_VarSet_t * varset var-set
)
Returns the bottom variable in the ordering

Side Effects none


Ddi_VarSet_t * 
Ddi_VarSetCopy(
  Ddi_DdMgr * dd2, destination manager
  Ddi_VarSet_t * src var-set to be copied
)
Copies a var-set to another manager

Side Effects none


Ddi_VarSet_t * 
Ddi_VarSetDifference(
  Ddi_VarSet_t * varset, var-set
  Ddi_VarSet_t * vars excluded variables
)
The difference of two var-sets is defined as the union of first var-set with the negate of second.
It is equivalent to exclude a group of variable from var-set.

Side Effects none

See Also Ddi_VarSetIntersect Ddi_VarSetUnion

Ddi_VarSet_t * 
Ddi_VarSetDup(
  Ddi_VarSet_t * src var-set to be copied
)
The function returns the new pointer of the var-set

Side Effects none


int 
Ddi_VarSetEqual(
  Ddi_VarSet_t * varset1, first var-set
  Ddi_VarSet_t * varset2 second var-set
)
The function returns 1 if the two var-sets are equal

Side Effects none


Ddi_VarSet_t * 
Ddi_VarSetEvalFree(
  Ddi_VarSet_t * f, expression
  Ddi_VarSet_t * g varset to be freed
)
Evaluates an expression and frees first argument

Side Effects none


void 
Ddi_VarSetFree(
  Ddi_VarSet_t * src varset to be freed
)
Frees a var-set, dereferencing all BDD nodes

Side Effects none

See Also Ddi_VarSetNew

Ddi_VarSet_t * 
Ddi_VarSetIntersect(
  Ddi_VarSet_t * varset1, first var-set
  Ddi_VarSet_t * varset2 second var-set
)
The function return the new pointer of intersection of two var-sets

Side Effects none

See Also Ddi_VarSetUnion Ddi_VarSetDifference

int 
Ddi_VarSetIsVoid(
  Ddi_VarSet_t * varset 
)
The function returns 1 if the var-set is empty

Side Effects none


void 
Ddi_VarSetName(
  Ddi_DdMgr * dd, 
  Ddi_Var_t * var, 
  char * name 
)
Returns the variable name given the index

Side Effects none


Ddi_VarSet_t * 
Ddi_VarSetNext(
  Ddi_VarSet_t * varset 
)
The function returns a var-set excluding the top variable

Side Effects none


void 
Ddi_VarSetPrint(
  Ddi_VarSet_t * vars varset
)
Prints the varset

Side Effects none


Ddi_VarSet_t * 
Ddi_VarSetRemove(
  Ddi_VarSet_t * varset, var-set
  Ddi_Var_t * var variable to be removed
)
The function return a new pointer of var-set without the removed variables

Side Effects none

See Also Ddi_VarSetAdd

Ddi_VarSet_t * 
Ddi_VarSetSwapVariables(
  Ddi_VarSet_t * f, input varset
  Ddi_VarArray_t * x, 1-st array of variables
  Ddi_VarArray_t * y 2-nd array of variables
)
Returns a new varset with the variables swapped (x replaces y and viceversa.

Side Effects none


Ddi_DdNode * 
Ddi_VarSetToCU(
  Ddi_VarSet_t * v 
)
Converts a varset into the correspondent Cudd Node

Side Effects None


Ddi_Var_t * 
Ddi_VarSetTop(
  Ddi_VarSet_t * varset var-set
)
Returns the top variable in the ordering

Side Effects none


Ddi_VarSet_t * 
Ddi_VarSetUnion(
  Ddi_VarSet_t * v1, first var-set
  Ddi_VarSet_t * v2 second var-set
)
The function returns the pointer to the union of two var-sets

Side Effects none

See Also Ddi_VarSetIntersect Ddi_VarSetDifference

Ddi_VarSet_t * 
Ddi_VarSetVoid(
  Ddi_DdMgr * dd dd manager
)
Returns a pointer to an empty var-set

Side Effects none

See Also Ddi_VarSetFree

int 
Ddi_VarSet_n(
  Ddi_VarSet_t * vars varset
)
Returns the number of variables in the varset

Side Effects none


Ddi_Dd_t * 
Ddi_VarSubst(
  Ddi_Dd_t * f, BDD
  Ddi_VarArray_t * x, first array of variables
  Ddi_VarArray_t * y second array of variables
)
The function returns the pointer to a new function with the variables swapped (x replace y), or NULL otherwise.

Side Effects none


DdNode * 
Ddi_VarToCU(
  Ddi_Var_t * v 
)
Converts a variable into a Cudd node

Side Effects none


Last updated on 990617 11h53