The dddmp package

    int
    Dddmp_Bin2Text(
      char * filein, IN: name of binary file
      char * fileout IN: name of ASCII file
    )

  Converts from binary to ASCII format. A BDD array is loaded and and stored to the target file.

  Side Effects None

  See Also `Dddmp_Text2Bin()`

    int
    Dddmp_Text2Bin(
      char * filein, IN: name of ASCII file
      char * fileout IN: name of binary file
    )

  Converts from ASCII to binary format. A BDD array is loaded and and stored to the target file.

  Side Effects None

  See Also `Dddmp_Bin2Text()`

    int
    Dddmp_cuddAddArrayLoad(
      DdManager * ddMgr, IN: DD Manager
      Dddmp_RootMatchType  rootMatchMode, IN: storing mode selector
      char ** rootmatchnames, IN: sorted names for loaded roots
      Dddmp_VarMatchType  varMatchMode, IN: storing mode selector
      char ** varmatchnames, IN: array of variable names, by ids
      int * varmatchauxids, IN: array of variable auxids, by ids
      int * varcomposeids, IN: array of new ids, by ids
      int  mode, IN: requested input file format
      char * file, IN: file name
      FILE * fp, IN: file pointer
      DdNode *** pproots OUT: array of returned BDD roots
    )

  Reads a dump file representing the argument ADDs. See BDD load functions for detailed explanation.

  Side Effects A vector of pointers to DD nodes is allocated and freed.

  See Also `Dddmp_cuddBddArrayStore`

    int
    Dddmp_cuddAddArrayStore(
      DdManager * ddMgr, IN: DD Manager
      char * ddname, IN: DD name (or NULL)
      int  nRoots, IN: number of output BDD roots to be stored
      DdNode ** f, IN: array of ADD roots to be stored
      char ** rootnames, IN: array of root names (or NULL)
      char ** varnames, IN: array of variable names (or NULL)
      int * auxids, IN: array of converted var IDs
      int  mode, IN: storing mode selector
      Dddmp_VarInfoType  varinfo, IN: extra info for variables in text mode
      char * fname, IN: File name
      FILE * fp IN: File pointer to the store file
    )

  Dumps the argument array of ADDs to file. Dumping is either in text or binary form. see the corresponding BDD dump function for further details.

  Side Effects Nodes are temporarily removed from the unique hash table. They are re-linked after the store operation in a modified order.

  See Also `Dddmp_cuddAddStore Dddmp_cuddAddLoad Dddmp_cuddAddArrayLoad`

    DdNode *
    Dddmp_cuddAddLoad(
      DdManager * ddMgr, IN: Manager
      Dddmp_VarMatchType  varMatchMode, IN: storing mode selector
      char ** varmatchnames, IN: array of variable names by IDs
      int * varmatchauxids, IN: array of variable auxids by IDs
      int * varcomposeids, IN: array of new ids by IDs
      int  mode, IN: requested input file format
      char * file, IN: file name
      FILE * fp IN: file pointer
    )

  Reads a dump file representing the argument ADD. Dddmp_cuddAddArrayLoad is used through a dummy array.

  Side Effects A vector of pointers to DD nodes is allocated and freed.

  See Also `Dddmp_cuddAddStore Dddmp_cuddAddArrayLoad`

    int
    Dddmp_cuddAddStore(
      DdManager * ddMgr, IN: DD Manager
      char * ddname, IN: DD name (or NULL)
      DdNode * f, IN: ADD root to be stored
      char ** varnames, IN: array of variable names (or NULL)
      int * auxids, IN: array of converted var ids
      int  mode, IN: storing mode selector
      Dddmp_VarInfoType  varinfo, IN: extra info for variables in text mode
      char * fname, IN: File name
      FILE * fp IN: File pointer to the store file
    )

  Dumps the argument ADD to file. Dumping is done through Dddmp_cuddAddArrayStore, And a dummy array of 1 ADD root is used for this purpose.

  Side Effects Nodes are temporarily removed from unique hash. They are re-linked after the store operation in a modified order.

  See Also `Dddmp_cuddAddLoad Dddmp_cuddAddArrayLoad`

    int
    Dddmp_cuddBddArrayLoadCnf(
      DdManager * ddMgr, IN: DD Manager
      Dddmp_RootMatchType  rootmatchmode, IN: storing mode selector
      char ** rootmatchnames, IN: sorted names for loaded roots
      Dddmp_VarMatchType  varmatchmode, IN: storing mode selector
      char ** varmatchnames, IN: array of variable names, by IDs
      int * varmatchauxids, IN: array of variable auxids, by IDs
      int * varcomposeids, IN: array of new ids, by IDs
      int  mode, IN: computation Mode
      char * file, IN: file name
      FILE * fp, IN: file pointer
      DdNode *** rootsPtrPtr, OUT: array of returned BDD roots
      int * nRoots OUT: number of BDDs returned
    )

  Reads a dump file representing the argument BDD in a CNF formula.

  Side Effects A vector of pointers to DD nodes is allocated and freed.

  See Also `Dddmp_cuddBddArrayLoad`

    int
    Dddmp_cuddBddArrayLoad(
      DdManager * ddMgr, IN: DD Manager
      Dddmp_RootMatchType  rootMatchMode, IN: storing mode selector
      char ** rootmatchnames, IN: sorted names for loaded roots
      Dddmp_VarMatchType  varMatchMode, IN: storing mode selector
      char ** varmatchnames, IN: array of variable names, by ids
      int * varmatchauxids, IN: array of variable auxids, by ids
      int * varcomposeids, IN: array of new ids, by ids
      int  mode, IN: requested input file format
      char * file, IN: file name
      FILE * fp, IN: file pointer
      DdNode *** pproots OUT: array of returned BDD roots
    )

  Reads a dump file representing the argument BDDs. The header is common to both text and binary mode. The node list is either in text or binary format. A dynamic vector of DD pointers is allocated to support conversion from DD indexes to pointers. Several criteria are supported for variable match between file and dd manager. Several changes/permutations/compositions are allowed for variables while loading DDs. Variable of the dd manager are allowed to match with variables on file on ids, permids, varnames, varauxids; also direct composition between ids and composeids is supported. More in detail:
  1. varMatchMode=DDDMP_VAR_MATCHIDS

     allows the loading of a DD keeping variable IDs unchanged (regardless of the variable ordering of the reading manager); this is useful, for example, when swapping DDs to file and restoring them later from file, after possible variable reordering activations.

  2. varMatchMode=DDDMP_VAR_MATCHPERMIDS

     is used to allow variable match according to the position in the ordering.

  3. varMatchMode=DDDMP_VAR_MATCHNAMES

     requires a non NULL varmatchnames parameter; this is a vector of strings in one-to-one correspondence with variable IDs of the reading manager. Variables in the DD file read are matched with manager variables according to their name (a non NULL varnames parameter was required while storing the DD file).

  4. varMatchMode=DDDMP_VAR_MATCHIDS

     has a meaning similar to DDDMP_VAR_MATCHNAMES, but integer auxiliary IDs are used instead of strings; the additional non NULL varmatchauxids parameter is needed.

  5. varMatchMode=DDDMP_VAR_COMPOSEIDS

     uses the additional varcomposeids parameter is used as array of variable ids to be composed with ids stored in file.

  In the present implementation, the array varnames (3), varauxids (4) and composeids (5) need to have one entry for each variable in the DD manager (NULL pointers are allowed for unused variables in varnames). Hence variables need to be already present in the manager. All arrays are sorted according to IDs. All the loaded BDDs are referenced before returning them.

  Side Effects A vector of pointers to DD nodes is allocated and freed.

  See Also `Dddmp_cuddBddArrayStore`

    int
    Dddmp_cuddBddArrayStoreBlif(
      DdManager * ddMgr, IN: DD Manager
      int  nroots, IN: number of output BDD roots to be stored
      DdNode ** f, IN: array of BDD roots to be stored
      char ** inputNames, IN: array of variable names (or NULL)
      char ** outputNames, IN: array of root names (or NULL)
      char * modelName, IN: Model Name
      char * fname, IN: File name
      FILE * fp IN: File pointer to the store file
    )

  Dumps the argument BDD to file. Dumping is done through Dddmp_cuddBddArrayStoreBLif. A dummy array of 1 BDD root is used for this purpose.

  See Also `Dddmp_cuddBddArrayStorePrefix`

    int
    Dddmp_cuddBddArrayStoreCnf(
      DdManager * ddMgr, IN: DD Manager
      DdNode ** f, IN: array of BDD roots to be stored
      int  rootN, IN: # output BDD roots to be stored
      Dddmp_DecompCnfStoreType  mode, IN: format selection
      int  noHeader, IN: do not store header iff 1
      char ** varNames, IN: array of variable names (or NULL)
      int * bddIds, IN: array of converted var IDs
      int * bddAuxIds, IN: array of BDD node Auxiliary Ids
      int * cnfIds, IN: array of converted var IDs
      int  idInitial, IN: starting id for cutting variables
      int  edgeInTh, IN: Max # Incoming Edges
      int  pathLengthTh, IN: Max Path Length
      char * fname, IN: file name
      FILE * fp, IN: pointer to the store file
      int * clauseNPtr, OUT: number of clause stored
      int * varNewNPtr OUT: number of new variable created
    )

  Dumps the argument array of BDDs to file.

  Side Effects Nodes are temporarily removed from the unique hash table. They are re-linked after the store operation in a modified order. Three methods are allowed: * NodeByNode method: Insert a cut-point for each BDD node (but the terminal nodes) * MaxtermByMaxterm method: Insert no cut-points, i.e. the off-set of trhe function is stored * Best method: Tradeoff between the previous two methods. Auxiliary variables, i.e., cut points are inserted following these criterias: * edgeInTh indicates the maximum number of incoming edges up to which no cut point (auxiliary variable) is inserted. If edgeInTh: * is equal to -1 no cut point due to incoming edges are inserted (MaxtermByMaxterm method.) * is equal to 0 a cut point is inserted for each node with a single incoming edge, i.e., each node, (NodeByNode method). * is equal to n a cut point is inserted for each node with (n+1) incoming edges. * pathLengthTh indicates the maximum length path up to which no cut points (auxiliary variable) is inserted. If the path length between two nodes exceeds this value, a cut point is inserted. If pathLengthTh: * is equal to -1 no cut point due path length are inserted (MaxtermByMaxterm method.) * is equal to 0 a cut point is inserted for each node (NodeByNode method). * is equal to n a cut point is inserted on path whose length is equal to (n+1). Notice that the maximum number of literals in a clause is equal to (pathLengthTh + 2), i.e., for each path we have to keep into account a CNF variable for each node plus 2 added variables for the bottom and top-path cut points. The stored file can contain a file header or not depending on the noHeader parameter (IFF 0, usual setting, the header is usually stored. This option can be useful in storing multiple BDDs, as separate BDDs, on the same file leaving the opening of the file to the caller.

    int
    Dddmp_cuddBddArrayStorePrefix(
      DdManager * ddMgr, IN: DD Manager
      int  nroots, IN: number of output BDD roots to be stored
      DdNode ** f, IN: array of BDD roots to be stored
      char ** inputNames, IN: array of variable names (or NULL)
      char ** outputNames, IN: array of root names (or NULL)
      char * modelName, IN: Model Name
      char * fname, IN: File name
      FILE * fp IN: File pointer to the store file
    )

  Dumps the argument BDD to file. Dumping is done through Dddmp_cuddBddArrayStorePrefix. A dummy array of 1 BDD root is used for this purpose.

  See Also `Dddmp_cuddBddArrayStore`

    int
    Dddmp_cuddBddArrayStoreSmv(
      DdManager * ddMgr, IN: DD Manager
      int  nroots, IN: number of output BDD roots to be stored
      DdNode ** f, IN: array of BDD roots to be stored
      char ** inputNames, IN: array of variable names (or NULL)
      char ** outputNames, IN: array of root names (or NULL)
      char * modelName, IN: Model Name
      char * fname, IN: File name
      FILE * fp IN: File pointer to the store file
    )

  Dumps the argument BDD to file. Dumping is done through Dddmp_cuddBddArrayStorePrefix. A dummy array of 1 BDD root is used for this purpose.

  See Also `Dddmp_cuddBddArrayStore`

    int
    Dddmp_cuddBddArrayStore(
      DdManager * ddMgr, IN: DD Manager
      char * ddname, IN: dd name (or NULL)
      int  nRoots, IN: number of output BDD roots to be stored
      DdNode ** f, IN: array of BDD roots to be stored
      char ** rootnames, IN: array of root names (or NULL)
      char ** varnames, IN: array of variable names (or NULL)
      int * auxids, IN: array of converted var IDs
      int  mode, IN: storing mode selector
      Dddmp_VarInfoType  varinfo, IN: extra info for variables in text mode
      char * fname, IN: File name
      FILE * fp IN: File pointer to the store file
    )

  Dumps the argument array of BDDs to file. Dumping is either in text or binary form. BDDs are stored to the fp (already open) file if not NULL. Otherwise the file whose name is fname is opened in write mode. The header has the same format for both textual and binary dump. Names are allowed for input variables (vnames) and for represented functions (rnames). For sake of generality and because of dynamic variable ordering both variable IDs and permuted IDs are included. New IDs are also supported (auxids). Variables are identified with incremental numbers. according with their positiom in the support set. In text mode, an extra info may be added, chosen among the following options: name, ID, PermID, or an auxiliary id. Since conversion from DD pointers to integers is required, DD nodes are temporarily removed from the unique hash table. This allows the use of the next field to store node IDs.

  Side Effects Nodes are temporarily removed from the unique hash table. They are re-linked after the store operation in a modified order.

  See Also `Dddmp_cuddBddStore Dddmp_cuddBddLoad Dddmp_cuddBddArrayLoad`

    int
    Dddmp_cuddBddDisplayBinary(
      char * fileIn, IN: name of binary file
      char * fileOut IN: name of text file
    )

  Display a binary dump file in a text file

  Side Effects None

  See Also `Dddmp_cuddBddStore Dddmp_cuddBddLoad`

    int
    Dddmp_cuddBddLoadCnf(
      DdManager * ddMgr, IN: DD Manager
      Dddmp_VarMatchType  varmatchmode, IN: storing mode selector
      char ** varmatchnames, IN: array of variable names, by IDs
      int * varmatchauxids, IN: array of variable auxids, by IDs
      int * varcomposeids, IN: array of new ids accessed, by IDs
      int  mode, IN: computation mode
      char * file, IN: file name
      FILE * fp, IN: file pointer
      DdNode *** rootsPtrPtr, OUT: array of returned BDD roots
      int * nRoots OUT: number of BDDs returned
    )

  Reads a dump file representing the argument BDD in a CNF formula. Dddmp_cuddBddArrayLoadCnf is used through a dummy array. The results is returned in different formats depending on the mode selection: IFF mode == 0 Return the Clauses without Conjunction IFF mode == 1 Return the sets of BDDs without Quantification IFF mode == 2 Return the sets of BDDs AFTER Existential Quantification

  Side Effects A vector of pointers to DD nodes is allocated and freed.

  See Also `Dddmp_cuddBddLoad Dddmp_cuddBddArrayLoad`

    DdNode *
    Dddmp_cuddBddLoad(
      DdManager * ddMgr, IN: DD Manager
      Dddmp_VarMatchType  varMatchMode, IN: storing mode selector
      char ** varmatchnames, IN: array of variable names - by IDs
      int * varmatchauxids, IN: array of variable auxids - by IDs
      int * varcomposeids, IN: array of new ids accessed - by IDs
      int  mode, IN: requested input file format
      char * file, IN: file name
      FILE * fp IN: file pointer
    )

  Reads a dump file representing the argument BDD. Dddmp_cuddBddArrayLoad is used through a dummy array (see this function's description for more details). Mode, the requested input file format, is checked against the file format. The loaded BDDs is referenced before returning it.

  Side Effects A vector of pointers to DD nodes is allocated and freed.

  See Also `Dddmp_cuddBddStore Dddmp_cuddBddArrayLoad`

    int
    Dddmp_cuddBddStoreBlif(
      DdManager * ddMgr, IN: DD Manager
      int  nRoots, IN: Number of BDD roots
      DdNode * f, IN: BDD root to be stored
      char ** inputNames, IN: Array of variable names
      char ** outputNames, IN: Array of root names
      char * modelName, IN: Model Name
      char * fileName, IN: File name
      FILE * fp IN: File pointer to the store file
    )

  Dumps the argument BDD to file. Dumping is done through Dddmp_cuddBddArrayStoreBlif. A dummy array of 1 BDD root is used for this purpose.

  See Also `Dddmp_cuddBddStorePrefix`

    int
    Dddmp_cuddBddStoreCnf(
      DdManager * ddMgr, IN: DD Manager
      DdNode * f, IN: BDD root to be stored
      Dddmp_DecompCnfStoreType  mode, IN: format selection
      int  noHeader, IN: do not store header iff 1
      char ** varNames, IN: array of variable names (or NULL)
      int * bddIds, IN: array of var ids
      int * bddAuxIds, IN: array of BDD node Auxiliary Ids
      int * cnfIds, IN: array of CNF var ids
      int  idInitial, IN: starting id for cutting variables
      int  edgeInTh, IN: Max # Incoming Edges
      int  pathLengthTh, IN: Max Path Length
      char * fname, IN: file name
      FILE * fp, IN: pointer to the store file
      int * clauseNPtr, OUT: number of clause stored
      int * varNewNPtr OUT: number of new variable created
    )

  Dumps the argument BDD to file. This task is performed by calling the function Dddmp_cuddBddArrayStoreCnf.

  Side Effects Nodes are temporarily removed from unique hash. They are re-linked after the store operation in a modified order.

  See Also `Dddmp_cuddBddArrayStoreCnf`

    int
    Dddmp_cuddBddStorePrefix(
      DdManager * ddMgr, IN: DD Manager
      int  nRoots, IN: Number of BDD roots
      DdNode * f, IN: BDD root to be stored
      char ** inputNames, IN: Array of variable names
      char ** outputNames, IN: Array of root names
      char * modelName, IN: Model Name
      char * fileName, IN: File name
      FILE * fp IN: File pointer to the store file
    )

  Dumps the argument BDD to file. Dumping is done through Dddmp_cuddBddArrayStorePrefix. A dummy array of 1 BDD root is used for this purpose.

  See Also `Dddmp_cuddBddStore`

    int
    Dddmp_cuddBddStoreSmv(
      DdManager * ddMgr, IN: DD Manager
      int  nRoots, IN: Number of BDD roots
      DdNode * f, IN: BDD root to be stored
      char ** inputNames, IN: Array of variable names
      char ** outputNames, IN: Array of root names
      char * modelName, IN: Model Name
      char * fileName, IN: File name
      FILE * fp IN: File pointer to the store file
    )

  Dumps the argument BDD to file. Dumping is done through Dddmp_cuddBddArrayStorePrefix. A dummy array of 1 BDD root is used for this purpose.

  See Also `Dddmp_cuddBddStore`

    int
    Dddmp_cuddBddStore(
      DdManager * ddMgr, IN: DD Manager
      char * ddname, IN: DD name (or NULL)
      DdNode * f, IN: BDD root to be stored
      char ** varnames, IN: array of variable names (or NULL)
      int * auxids, IN: array of converted var ids
      int  mode, IN: storing mode selector
      Dddmp_VarInfoType  varinfo, IN: extra info for variables in text mode
      char * fname, IN: File name
      FILE * fp IN: File pointer to the store file
    )

  Dumps the argument BDD to file. Dumping is done through Dddmp_cuddBddArrayStore. A dummy array of 1 BDD root is used for this purpose.

  Side Effects Nodes are temporarily removed from unique hash. They are re-linked after the store operation in a modified order.

  See Also `Dddmp_cuddBddLoad Dddmp_cuddBddArrayLoad`

    int
    Dddmp_cuddHeaderLoadCnf(
      int * nVars, OUT: number of DD variables
      int * nsuppvars, OUT: number of support variables
      char *** suppVarNames, OUT: array of support variable names
      char *** orderedVarNames, OUT: array of variable names
      int ** varIds, OUT: array of variable ids
      int ** varComposeIds, OUT: array of permids ids
      int ** varAuxIds, OUT: array of variable aux ids
      int * nRoots, OUT: number of root in the file
      char * file, IN: file name
      FILE * fp IN: file pointer
    )

  Reads the header of a dump file representing the argument BDDs. Returns main information regarding DD type stored in the file, the variable ordering used, the number of variables, etc. It reads only the header of the file NOT the BDD/ADD section.

  See Also `Dddmp_cuddBddArrayLoad`

    int
    Dddmp_cuddHeaderLoad(
      Dddmp_DecompType * ddType, OUT: selects the proper decomp type
      int * nVars, OUT: number of DD variables
      int * nsuppvars, OUT: number of support variables
      char *** suppVarNames, OUT: array of support variable names
      char *** orderedVarNames, OUT: array of variable names
      int ** varIds, OUT: array of variable ids
      int ** varComposeIds, OUT: array of permids ids
      int ** varAuxIds, OUT: array of variable aux ids
      int * nRoots, OUT: number of root in the file
      char * file, IN: file name
      FILE * fp IN: file pointer
    )

  Reads the header of a dump file representing the argument BDDs. Returns main information regarding DD type stored in the file, the variable ordering used, the number of variables, etc. It reads only the header of the file NOT the BDD/ADD section.

  See Also `Dddmp_cuddBddArrayLoad`

Last updated on 1040218 17h14