The dddmp package: files

`dddmp.h`
  External header file
`dddmpInt.h`
  Internal header file
`dddmpBinary.c`
  Input and output BDD codes and integers from/to file
`dddmpConvert.c`
  Conversion between ASCII and binary formats
`dddmpDbg.c`
  Functions to display BDD files
`dddmpDdNodeBdd.c`
  Functions to handle BDD node infos and numbering
`dddmpDdNodeCnf.c`
  Functions to handle BDD node infos and numbering while storing a CNF formula from a BDD or an array of BDDs
`dddmpLoad.c`
  Functions to read in bdds to file
`dddmpLoadCnf.c`
  Functions to read in CNF from file as BDDs.
`dddmpNodeAdd.c`
  Functions to handle ADD node infos and numbering
`dddmpNodeBdd.c`
  Functions to handle BDD node infos and numbering
`dddmpNodeCnf.c`
  Functions to handle BDD node infos and numbering while storing a CNF formula from a BDD or an array of BDDs
`dddmpStoreAdd.c`
  Functions to write ADDs to file.
`dddmpStoreBdd.c`
  Functions to write BDDs to file.
`dddmpStoreCnf.c`
  Functions to write out BDDs to file in a CNF format
`dddmpStoreMisc.c`
  Functions to write out bdds to file in prefixed and in Blif form.
`dddmpUtil.c`
  Util Functions for the dddmp package

# dddmp.h

External header file

By: Gianpiero Cabodi and Stefano Quer

`()`
  Checks for fatal bugs
`()`
  Checks for Warnings: If expr==1 it prints out the warning on stderr.
`()`
  Checks for fatal bugs and return the DDDMP_FAILURE flag.
`()`
  Checks for fatal bugs and go to the label to deal with the error.

# dddmpInt.h

Internal header file

By: Gianpiero Cabodi and Stefano Quer

`()`
  Memory Allocation Macro for DDDMP
`()`
  Memory Free Macro for DDDMP

# dddmpBinary.c

Input and output BDD codes and integers from/to file

By: Gianpiero Cabodi and Stefano Quer

Input and output BDD codes and integers from/to file in binary mode. DD node codes are written as one byte. Integers of any length are written as sequences of "linked" bytes. For each byte 7 bits are used for data and one (MSBit) as link with a further byte (MSB = 1 means one more byte). Low level read/write of bytes filter , and with escape sequences.

`DddmpWriteCode()`
  Writes 1 byte node code
`DddmpReadCode()`
  Reads a 1 byte node code
`DddmpWriteInt()`
  Writes a "packed integer"
`DddmpReadInt()`
  Reads a "packed integer"
`WriteByteBinary()`
  Writes a byte to file filtering , and
`ReadByteBinary()`
  Reads a byte from file with escaped , and

# dddmpConvert.c

Conversion between ASCII and binary formats

By: Gianpiero Cabodi and Stefano Quer

Conversion between ASCII and binary formats is presently supported by loading a BDD in the source format and storing it in the target one. We plan to introduce ad hoc procedures avoiding explicit BDD node generation.

`Dddmp_Text2Bin()`
  Converts from ASCII to binary format
`Dddmp_Bin2Text()`
  Converts from binary to ASCII format

# dddmpDbg.c

Functions to display BDD files

By: Gianpiero Cabodi and Stefano Quer

Functions to display BDD files in binary format

`Dddmp_cuddBddDisplayBinary()`
  Display a binary dump file in a text file

# dddmpDdNodeBdd.c

Functions to handle BDD node infos and numbering

By: Gianpiero Cabodi and Stefano Quer

Functions to handle BDD node infos and numbering.

`DddmpNumberDdNodes()`
  Removes nodes from unique table and number them
`DddmpUnnumberDdNodes()`
  Restores nodes in unique table, loosing numbering
`DddmpWriteNodeIndex()`
  Write index to node
`DddmpReadNodeIndex()`
  Reads the index of a node
`DddmpVisited()`
  Returns true if node is visited
`DddmpSetVisited()`
  Marks a node as visited
`DddmpClearVisited()`
  Marks a node as not visited
`NumberNodeRecur()`
  Number nodes recursively in post-order
`RemoveFromUniqueRecur()`
  Removes a node from unique table
`RestoreInUniqueRecur()`
  Restores a node in unique table

# dddmpDdNodeCnf.c

Functions to handle BDD node infos and numbering while storing a CNF formula from a BDD or an array of BDDs

By: Gianpiero Cabodi and Stefano Quer

Functions to handle BDD node infos and numbering while storing a CNF formula from a BDD or an array of BDDs.

`DddmpNumberDdNodesCnf()`
  Removes nodes from unique table and numbers them
`DddmpDdNodesCountEdgesAndNumber()`
  Removes nodes from unique table and numbers each node according to the number of its incoming BDD edges.
`DddmpUnnumberDdNodesCnf()`
  Restores nodes in unique table, loosing numbering
`DddmpPrintBddAndNext()`
  Prints debug information
`DddmpWriteNodeIndexCnfBis()`
  Write index to node
`DddmpWriteNodeIndexCnf()`
  Write index to node
`DddmpReadNodeIndexCnf()`
  Reads the index of a node
`DddmpClearVisitedCnfRecur()`
  Mark ALL nodes as not visited
`DddmpVisitedCnf()`
  Returns true if node is visited
`DddmpSetVisitedCnf()`
  Marks a node as visited
`DddmpClearVisitedCnf()`
  Marks a node as not visited
`NumberNodeRecurCnf()`
  Number nodes recursively in post-order
`DddmpDdNodesCheckIncomingAndScanPath()`
  Number nodes recursively in post-order
`DddmpDdNodesNumberEdgesRecur()`
  Number nodes recursively in post-order
`DddmpDdNodesResetCountRecur()`
  Resets counter and visited flag for ALL nodes of a BDD
`DddmpDdNodesCountEdgesRecur()`
  Counts the number of incoming edges for each node of a BDD
`RemoveFromUniqueRecurCnf()`
  Removes a node from unique table
`RestoreInUniqueRecurCnf()`
  Restores a node in unique table
`DddmpPrintBddAndNextRecur()`
  Prints debug info

# dddmpLoad.c

Functions to read in bdds to file

By: Gianpiero Cabodi and Stefano Quer

Functions to read in bdds to file. BDDs are represended on file either in text or binary format under the following rules. A file contains a forest of BDDs (a vector of Boolean functions). BDD nodes are numbered with contiguous numbers, from 1 to NNodes (total number of nodes on a file). 0 is not used to allow negative node indexes for complemented edges. A file contains a header, including information about variables and roots to BDD functions, followed by the list of nodes. BDD nodes are listed according to their numbering, and in the present implementation numbering follows a post-order strategy, in such a way that a node is never listed before its Then/Else children.

`Dddmp_cuddBddLoad()`
  Reads a dump file representing the argument BDD.
`Dddmp_cuddBddArrayLoad()`
  Reads a dump file representing the argument BDDs.
`Dddmp_cuddAddLoad()`
  Reads a dump file representing the argument ADD.
`Dddmp_cuddAddArrayLoad()`
  Reads a dump file representing the argument ADDs.
`Dddmp_cuddHeaderLoad()`
  Reads the header of a dump file representing the argument BDDs
`DddmpCuddDdArrayLoad()`
  Reads a dump file representing the argument BDDs.
`DddmpBddReadHeader()`
  Reads a the header of a dump file representing the argument BDDs.
`DddmpFreeHeader()`
  Frees the internal header structure.

# dddmpLoadCnf.c

Functions to read in CNF from file as BDDs.

By: Gianpiero Cabodi and Stefano Quer

Functions to read in CNF from file as BDDs.

`Dddmp_cuddBddLoadCnf()`
  Reads a dump file in a CNF format.
`Dddmp_cuddBddArrayLoadCnf()`
  Reads a dump file in a CNF format.
`Dddmp_cuddHeaderLoadCnf()`
  Reads the header of a dump file representing the argument BDDs
`DddmpCuddDdArrayLoadCnf()`
  Reads a dump file representing the argument BDDs in CNF format.
`DddmpBddReadHeaderCnf()`
  Reads a the header of a dump file representing the argument BDDs.
`DddmpFreeHeaderCnf()`
  Frees the internal header structure.
`DddmpReadCnfClauses()`
  Read the CNF clauses from the file in the standard DIMACS format.
`DddmpCnfClauses2Bdd()`
  Transforms CNF clauses into BDDs.

# dddmpNodeAdd.c

Functions to handle ADD node infos and numbering

By: Gianpiero Cabodi and Stefano Quer

Functions to handle ADD node infos and numbering.

`DddmpNumberAddNodes()`
  Removes nodes from unique table and number them
`DddmpUnnumberAddNodes()`
  Restores nodes in unique table, loosing numbering
`DddmpWriteNodeIndexAdd()`
  Write index to node
`DddmpReadNodeIndexAdd()`
  Reads the index of a node
`DddmpVisitedAdd()`
  Returns true if node is visited
`DddmpSetVisitedAdd()`
  Marks a node as visited
`DddmpClearVisitedAdd()`
  Marks a node as not visited
`NumberNodeRecurAdd()`
  Number nodes recursively in post-order
`RemoveFromUniqueRecurAdd()`
  Removes a node from unique table
`RestoreInUniqueRecurAdd()`
  Restores a node in unique table

# dddmpNodeBdd.c

Functions to handle BDD node infos and numbering

By: Gianpiero Cabodi and Stefano Quer

Functions to handle BDD node infos and numbering.

`DddmpNumberBddNodes()`
  Removes nodes from unique table and number them
`DddmpUnnumberBddNodes()`
  Restores nodes in unique table, loosing numbering
`DddmpWriteNodeIndexBdd()`
  Write index to node
`DddmpReadNodeIndexBdd()`
  Reads the index of a node
`DddmpVisitedBdd()`
  Returns true if node is visited
`DddmpSetVisitedBdd()`
  Marks a node as visited
`DddmpClearVisitedBdd()`
  Marks a node as not visited
`NumberNodeRecurBdd()`
  Number nodes recursively in post-order
`RemoveFromUniqueRecurBdd()`
  Removes a node from unique table
`RestoreInUniqueRecurBdd()`
  Restores a node in unique table

# dddmpNodeCnf.c

Functions to handle BDD node infos and numbering while storing a CNF formula from a BDD or an array of BDDs

By: Gianpiero Cabodi and Stefano Quer

Functions to handle BDD node infos and numbering while storing a CNF formula from a BDD or an array of BDDs.

`DddmpNumberDdNodesCnf()`
  Removes nodes from unique table and numbers them
`DddmpDdNodesCountEdgesAndNumber()`
  Removes nodes from unique table and numbers each node according to the number of its incoming BDD edges.
`DddmpUnnumberDdNodesCnf()`
  Restores nodes in unique table, loosing numbering
`DddmpPrintBddAndNext()`
  Prints debug information
`DddmpWriteNodeIndexCnf()`
  Write index to node
`DddmpVisitedCnf()`
  Returns true if node is visited
`DddmpSetVisitedCnf()`
  Marks a node as visited
`DddmpReadNodeIndexCnf()`
  Reads the index of a node
`DddmpWriteNodeIndexCnfWithTerminalCheck()`
  Write index to node
`DddmpClearVisitedCnfRecur()`
  Mark ALL nodes as not visited
`DddmpClearVisitedCnf()`
  Marks a node as not visited
`NumberNodeRecurCnf()`
  Number nodes recursively in post-order
`DddmpDdNodesCheckIncomingAndScanPath()`
  Number nodes recursively in post-order
`DddmpDdNodesNumberEdgesRecur()`
  Number nodes recursively in post-order
`DddmpDdNodesResetCountRecur()`
  Resets counter and visited flag for ALL nodes of a BDD
`DddmpDdNodesCountEdgesRecur()`
  Counts the number of incoming edges for each node of a BDD
`RemoveFromUniqueRecurCnf()`
  Removes a node from unique table
`RestoreInUniqueRecurCnf()`
  Restores a node in unique table
`DddmpPrintBddAndNextRecur()`
  Prints debug info

# dddmpStoreAdd.c

Functions to write ADDs to file.

By: Gianpiero Cabodi and Stefano Quer

Functions to write ADDs to file. ADDs are represended on file either in text or binary format under the following rules. A file contains a forest of ADDs (a vector of Boolean functions). ADD nodes are numbered with contiguous numbers, from 1 to NNodes (total number of nodes on a file). 0 is not used to allow negative node indexes for complemented edges. A file contains a header, including information about variables and roots to ADD functions, followed by the list of nodes. ADD nodes are listed according to their numbering, and in the present implementation numbering follows a post-order strategy, in such a way that a node is never listed before its Then/Else children.

`Dddmp_cuddAddStore()`
  Writes a dump file representing the argument ADD.
`Dddmp_cuddAddArrayStore()`
  Writes a dump file representing the argument Array of ADDs.
`DddmpCuddDdArrayStoreBdd()`
  Writes a dump file representing the argument Array of BDDs/ADDs.
`NodeStoreRecurAdd()`
  Performs the recursive step of Dddmp_bddStore.
`NodeTextStoreAdd()`
  Store One Single Node in Text Format.

# dddmpStoreBdd.c

Functions to write BDDs to file.

By: Gianpiero Cabodi and Stefano Quer

Functions to write BDDs to file. BDDs are represended on file either in text or binary format under the following rules. A file contains a forest of BDDs (a vector of Boolean functions). BDD nodes are numbered with contiguous numbers, from 1 to NNodes (total number of nodes on a file). 0 is not used to allow negative node indexes for complemented edges. A file contains a header, including information about variables and roots to BDD functions, followed by the list of nodes. BDD nodes are listed according to their numbering, and in the present implementation numbering follows a post-order strategy, in such a way that a node is never listed before its Then/Else children.

`Dddmp_cuddBddStore()`
  Writes a dump file representing the argument BDD.
`Dddmp_cuddBddArrayStore()`
  Writes a dump file representing the argument Array of BDDs.
`DddmpCuddBddArrayStore()`
  Writes a dump file representing the argument Array of BDDs.
`NodeStoreRecurBdd()`
  Performs the recursive step of Dddmp_bddStore.
`NodeTextStoreBdd()`
  Store One Single Node in Text Format.
`NodeBinaryStoreBdd()`
  Store One Single Node in Binary Format.

# dddmpStoreCnf.c

Functions to write out BDDs to file in a CNF format

By: Gianpiero Cabodi and Stefano Quer

Functions to write out BDDs to file in a CNF format.

`Dddmp_cuddBddStoreCnf()`
  Writes a dump file representing the argument BDD in a CNF format.
`Dddmp_cuddBddArrayStoreCnf()`
  Writes a dump file representing the argument array of BDDs in CNF format.
`DddmpCuddBddArrayStoreCnf()`
  Writes a dump file representing the argument Array of BDDs in the CNF standard format.
`StoreCnfNodeByNode()`
  Store the BDD as CNF clauses.
`StoreCnfNodeByNodeRecur()`
  Performs the recursive step of Dddmp_bddStore.
`StoreCnfOneNode()`
  Store One Single BDD Node.
`StoreCnfMaxtermByMaxterm()`
  Prints a disjoint sum of products.
`StoreCnfBest()`
  Prints a disjoint sum of products with intermediate cutting points.
`StoreCnfMaxtermByMaxtermRecur()`
  Performs the recursive step of Print Maxterm.
`StoreCnfBestNotSharedRecur()`
  Performs the recursive step of Print Best on Not Shared sub-BDDs.
`StoreCnfBestSharedRecur()`
  Performs the recursive step of Print Best on Shared sub-BDDs.
`printCubeCnf()`
  Print One Cube in CNF Format.

# dddmpStoreMisc.c

Functions to write out bdds to file in prefixed and in Blif form.

By: Gianpiero Cabodi and Stefano Quer

Functions to write out bdds to file. BDDs are represended on file in text format. Each node is stored as a multiplexer in a prefix notation format for the prefix notation file or in PLA format for the blif file.

`Dddmp_cuddBddStorePrefix()`
  Writes a dump file representing the argument BDD in a prefix notation.
`Dddmp_cuddBddArrayStorePrefix()`
  Writes a dump file representing the argument BDD in a prefix notation.
`Dddmp_cuddBddStoreBlif()`
  Writes a dump file representing the argument BDD in a Blif/Exlif notation.
`Dddmp_cuddBddArrayStoreBlif()`
  Writes a dump file representing the argument BDD in a Blif/Exlif notation.
`Dddmp_cuddBddStoreSmv()`
  Writes a dump file representing the argument BDD in a prefix notation.
`Dddmp_cuddBddArrayStoreSmv()`
  Writes a dump file representing the argument BDD in a prefix notation.
`DddmpCuddDdArrayStorePrefix()`
  Internal function to writes a dump file representing the argument BDD in a prefix notation.
`DddmpCuddDdArrayStorePrefixBody()`
  Internal function to writes a dump file representing the argument BDD in a prefix notation. Writes the body of the file.
`DddmpCuddDdArrayStorePrefixStep()`
  Performs the recursive step of DddmpCuddDdArrayStorePrefixBody.
`DddmpCuddDdArrayStoreBlif()`
  Writes a blif file representing the argument BDDs.
`DddmpCuddDdArrayStoreBlifBody()`
  Writes a blif body representing the argument BDDs.
`DddmpCuddDdArrayStoreBlifStep()`
  Performs the recursive step of DddmpCuddDdArrayStoreBlif.
`DddmpCuddDdArrayStoreSmv()`
  Internal function to writes a dump file representing the argument BDD in a SMV notation.
`DddmpCuddDdArrayStoreSmvBody()`
  Internal function to writes a dump file representing the argument BDD in a SMV notation. Writes the body of the file.
`DddmpCuddDdArrayStoreSmvStep()`
  Performs the recursive step of DddmpCuddDdArrayStoreSmvBody.

# dddmpUtil.c

Util Functions for the dddmp package

By: Gianpiero Cabodi and Stefano Quer

Functions to manipulate arrays.

`QsortStrcmp()`
  String compare for qsort
`FindVarname()`
  Performs binary search of a name within a sorted array
`DddmpStrDup()`
  Duplicates a string
`DddmpStrArrayDup()`
  Duplicates an array of strings
`DddmpStrArrayRead()`
  Inputs an array of strings
`DddmpStrArrayWrite()`
  Outputs an array of strings
`DddmpStrArrayFree()`
  Frees an array of strings
`DddmpIntArrayDup()`
  Duplicates an array of ints
`DddmpIntArrayRead()`
  Inputs an array of ints
`DddmpIntArrayWrite()`
  Outputs an array of ints

Last updated on 1040218 17h14