Search code examples
variablescudd

Remove variable from the manager in CUDD manager?


I am looking to remove a variable from the manager in the CUDD library. This question was asked 8 years ago in this thread without a satisfying answer. Does somebody know now?


Solution

  • Looking at the CUDD source code, it seems as if such a function does not exist.

    Note that this is not surprising. There are few cases in which such a function would be needed. If all BDDs of a manager do not use a variable, then there is little to gain from removing a variable: variable reordering may be a tiny bit faster without the variable, and there is the unique node representing the variable itself takes up some memory. That's hardly worth it in many cases. If however a variable is currently used in a BDD, the meaning of removing a variable is not well-defined.

    Also, removing variables is quite complicated -- it means that all BDD nodes have the be changed to keep the variable numbers continuous (which is an invariant needed for the permutation table). If a program using BDDs uses the variable numbers elsewhere, changing variable numbers is a source for bugs. In contrast, adding a new variable is easy as the new variable is simply attached at the end of the current variable list.