\contentsline {section}{\numberline {1}Introduction}{4}{section.1}
\contentsline {section}{\numberline {2}How to Get CUDD}{5}{section.2}
\contentsline {subsection}{\numberline {2.1}The CUDD Package}{5}{subsection.2.1}
\contentsline {subsection}{\numberline {2.2}CUDD Friends}{5}{subsection.2.2}
\contentsline {section}{\numberline {3}User's Manual}{6}{section.3}
\contentsline {subsection}{\numberline {3.1}Compiling and Linking}{6}{subsection.3.1}
\contentsline {subsection}{\numberline {3.2}Basic Data Structures}{6}{subsection.3.2}
\contentsline {subsubsection}{\numberline {3.2.1}Nodes}{6}{subsubsection.3.2.1}
\contentsline {subsubsection}{\numberline {3.2.2}The Manager}{7}{subsubsection.3.2.2}
\contentsline {subsubsection}{\numberline {3.2.3}Cache}{8}{subsubsection.3.2.3}
\contentsline {subsection}{\numberline {3.3}Initializing and Shutting Down a DdManager}{8}{subsection.3.3}
\contentsline {subsection}{\numberline {3.4}Setting Parameters}{9}{subsection.3.4}
\contentsline {subsection}{\numberline {3.5}Constant Functions}{9}{subsection.3.5}
\contentsline {subsubsection}{\numberline {3.5.1}One, Logic Zero, and Arithmetic Zero}{9}{subsubsection.3.5.1}
\contentsline {subsubsection}{\numberline {3.5.2}Predefined Constants}{10}{subsubsection.3.5.2}
\contentsline {subsubsection}{\numberline {3.5.3}Background}{10}{subsubsection.3.5.3}
\contentsline {subsubsection}{\numberline {3.5.4}New Constants}{11}{subsubsection.3.5.4}
\contentsline {subsection}{\numberline {3.6}Creating Variables}{11}{subsection.3.6}
\contentsline {subsubsection}{\numberline {3.6.1}New BDD and ADD Variables}{11}{subsubsection.3.6.1}
\contentsline {subsubsection}{\numberline {3.6.2}New ZDD Variables}{11}{subsubsection.3.6.2}
\contentsline {subsection}{\numberline {3.7}Basic BDD Manipulation}{12}{subsection.3.7}
\contentsline {subsection}{\numberline {3.8}Basic ADD Manipulation}{13}{subsection.3.8}
\contentsline {subsection}{\numberline {3.9}Basic ZDD Manipulation}{14}{subsection.3.9}
\contentsline {subsection}{\numberline {3.10}Converting ADDs to BDDs and Vice Versa}{15}{subsection.3.10}
\contentsline {subsection}{\numberline {3.11}Converting BDDs to ZDDs and Vice Versa}{15}{subsection.3.11}
\contentsline {subsection}{\numberline {3.12}Variable Reordering for BDDs and ADDs}{16}{subsection.3.12}
\contentsline {subsection}{\numberline {3.13}Grouping Variables}{19}{subsection.3.13}
\contentsline {subsection}{\numberline {3.14}Variable Reordering for ZDDs}{20}{subsection.3.14}
\contentsline {subsection}{\numberline {3.15}Keeping Consistent Variable Orders for BDDs and ZDDs}{21}{subsection.3.15}
\contentsline {subsection}{\numberline {3.16}Hooks}{21}{subsection.3.16}
\contentsline {subsection}{\numberline {3.17}Timeouts and Limits}{22}{subsection.3.17}
\contentsline {subsection}{\numberline {3.18}Writing Decision Diagrams to a File}{23}{subsection.3.18}
\contentsline {subsection}{\numberline {3.19}Saving and Restoring BDDs}{23}{subsection.3.19}
\contentsline {section}{\numberline {4}Programmer's Manual}{23}{section.4}
\contentsline {subsection}{\numberline {4.1}Compiling and Linking}{23}{subsection.4.1}
\contentsline {subsection}{\numberline {4.2}Reference Counts}{25}{subsection.4.2}
\contentsline {subsubsection}{\numberline {4.2.1}NULL Return Values}{26}{subsubsection.4.2.1}
\contentsline {subsubsection}{\numberline {4.2.2}\emph {Cudd\_RecursiveDeref} vs.\ \emph {Cudd\_Deref}}{26}{subsubsection.4.2.2}
\contentsline {subsubsection}{\numberline {4.2.3}When Increasing the Reference Count is Unnecessary}{26}{subsubsection.4.2.3}
\contentsline {subsubsection}{\numberline {4.2.4}Saturating Increments and Decrements}{27}{subsubsection.4.2.4}
\contentsline {subsection}{\numberline {4.3}Complement Arcs}{27}{subsection.4.3}
\contentsline {subsection}{\numberline {4.4}The Cache}{28}{subsection.4.4}
\contentsline {subsubsection}{\numberline {4.4.1}Cache Sizing}{29}{subsubsection.4.4.1}
\contentsline {subsubsection}{\numberline {4.4.2}Local Caches}{29}{subsubsection.4.4.2}
\contentsline {subsection}{\numberline {4.5}The Unique Table}{30}{subsection.4.5}
\contentsline {subsection}{\numberline {4.6}Allowing Asynchronous Reordering}{31}{subsection.4.6}
\contentsline {subsection}{\numberline {4.7}Debugging}{33}{subsection.4.7}
\contentsline {subsection}{\numberline {4.8}Gathering and Interpreting Statistics}{33}{subsection.4.8}
\contentsline {subsubsection}{\numberline {4.8.1}Non Modifiable Parameters}{34}{subsubsection.4.8.1}
\contentsline {subsubsection}{\numberline {4.8.2}Modifiable Parameters}{37}{subsubsection.4.8.2}
\contentsline {subsubsection}{\numberline {4.8.3}Extended Statistics and Reporting}{39}{subsubsection.4.8.3}
\contentsline {subsection}{\numberline {4.9}Guidelines for Documentation}{39}{subsection.4.9}
\contentsline {section}{\numberline {5}The C++ Interface}{40}{section.5}
\contentsline {subsection}{\numberline {5.1}Compiling and Linking}{40}{subsection.5.1}
\contentsline {subsection}{\numberline {5.2}Basic Manipulation}{40}{subsection.5.2}
\contentsline {section}{\numberline {6}Acknowledgments}{40}{section.6}
\contentsline {section}{\hbox to\@tempdima {\hfil }References}{41}{section*.2}
\contentsline {section}{\hbox to\@tempdima {\hfil }Index}{42}{section*.4}
