/**Function******************************************************************** Synopsis [Approximates the conjunction of two BDDs f and g and simultaneously abstracts the variables in cube.] Description [Approximates the conjunction of two BDDs f and g and simultaneously abstracts the variables in cube. The variables are existentially abstracted. Returns a pointer to the resulting BDD if successful; NULL if the intermediate result blows up.] SideEffects [None] SeeAlso [Cudd_bddAndAbstract Cudd_bddClippingAnd] ******************************************************************************/ DdNode * Cudd_bddClippingAndAbstract( DdManager * dd /* manager */, DdNode * f /* first conjunct */, DdNode * g /* second conjunct */, DdNode * cube /* cube of variables to be abstracted */, int maxDepth /* maximum recursion depth */, int direction /* under (0) or over (1) approximation */) { DdNode *res; do { dd->reordered = 0; res = cuddBddClippingAndAbstract(dd,f,g,cube,maxDepth,direction); } while (dd->reordered == 1); return(res); } /* end of Cudd_bddClippingAndAbstract */
/** @brief Approximates the conjunction of two BDDs f and g and simultaneously abstracts the variables in cube. @details The variables are existentially abstracted. @return a pointer to the resulting %BDD if successful; NULL if the intermediate result blows up. @sideeffect None @see Cudd_bddAndAbstract Cudd_bddClippingAnd */ DdNode * Cudd_bddClippingAndAbstract( DdManager * dd /**< manager */, DdNode * f /**< first conjunct */, DdNode * g /**< second conjunct */, DdNode * cube /**< cube of variables to be abstracted */, int maxDepth /**< maximum recursion depth */, int direction /**< under (0) or over (1) approximation */) { DdNode *res; do { dd->reordered = 0; res = cuddBddClippingAndAbstract(dd,f,g,cube,maxDepth,direction); } while (dd->reordered == 1); if (dd->errorCode == CUDD_TIMEOUT_EXPIRED && dd->timeoutHandler) { dd->timeoutHandler(dd, dd->tohArg); } return(res); } /* end of Cudd_bddClippingAndAbstract */