char * Tr_ImgMethodEnum2String( Tr_ImgMethod_e enumType )
Tr_ImgMethod_e Tr_ImgMethodString2Enum( char * string String to Analyze )
Ddi_Bdd_t * Tr_Img( Tr_Tr_t * TR, Partitioned TR Ddi_Bdd_t * from Input constrain )
Part_BddarrayMultiwayAndExist
Tr_Mgr_t * Tr_MgrInit( char * trName, Name of the FSM structure Ddi_Mgr_t * dd Decision Diagram Manager )
Ddi_MgrQuit
Fsm_MgrQuit
Trav_MgrQuit
int Tr_MgrOperation( Tr_Mgr_t * trMgr, TR Manager char * string, String Pdtutil_MgrOp_t operationFlag, Operation Flag void ** voidPointer, Generic Pointer Pdtutil_MgrRet_t * returnFlagP Type of the Pointer Returned )
CmdMgrOperation
CmdRegOperation
Fsm_MgrOperation
Trav_MgrOperation
int Tr_MgrPrintStats( Tr_Mgr_t * trMgr Tr manager )
void Tr_MgrQuit( Tr_Mgr_t * trMgr Tr manager )
Ddi_BddiMgrInit
int Tr_MgrReadClustThreshold( Tr_Mgr_t * trMgr Transition Relation Manager )
Ddi_Mgr_t * Tr_MgrReadDdiMgrDefault( Tr_Mgr_t * trMgr trersal manager )
Tr_ImgMethod_e Tr_MgrReadImgMethod( Tr_Mgr_t * trMgr Tr Manager )
Ddi_Vararray_t * Tr_MgrReadI( Tr_Mgr_t * trMgr tr manager )
int Tr_MgrReadMaxIter( Tr_Mgr_t * trMgr Transition Relation Manager )
Ddi_Vararray_t * Tr_MgrReadNS( Tr_Mgr_t * trMgr tr manager )
Ddi_Vararray_t * Tr_MgrReadPS( Tr_Mgr_t * trMgr tr manager )
int Tr_MgrReadPartThFrom( Tr_Mgr_t * trMgr Tr Manager )
int Tr_MgrReadPartThTr( Tr_Mgr_t * trMgr Tr Manager )
Part_Method_e Tr_MgrReadPartitionMethod( Tr_Mgr_t * trMgr Tr Manager )
Tr_Sort_e Tr_MgrReadSortMethod( Tr_Mgr_t * trMgr Transition Relation Manager )
double Tr_MgrReadSortW( Tr_Mgr_t * trMgr, Transition Relation Manager int i )
int Tr_MgrReadSquaringMethod( Tr_Mgr_t * trMgr Transition Relation Manager )
char * Tr_MgrReadTrName( Tr_Mgr_t * trMgr Transition Relation Manager )
Tr_Tr_t * Tr_MgrReadTr( Tr_Mgr_t * trMgr Transition Relation Manager )
Pdtutil_VerbLevel_e Tr_MgrReadVerbosity( Tr_Mgr_t * trMgr Transition Relation Manager )
void Tr_MgrSetAuxFuns( Tr_Mgr_t * trMgr, Transition Relation Manager Ddi_Bddarray_t * auxFuns Array of functions )
void Tr_MgrSetAuxVars( Tr_Mgr_t * trMgr, Transition Relation Manager Ddi_Vararray_t * auxVars Array of variables )
void Tr_MgrSetClustSmoothPi( Tr_Mgr_t * trMgr, Transition Relation Manager int val )
void Tr_MgrSetClustThreshold( Tr_Mgr_t * trMgr, Transition Relation Manager int ClustThreshold Threshold )
void Tr_MgrSetDdiMgrDefault( Tr_Mgr_t * trMgr, trersal manager Ddi_Mgr_t * mgr dd Manager )
void Tr_MgrSetImgMethod( Tr_Mgr_t * trMgr, Tr Manager Tr_ImgMethod_e imgMethod Image Method )
void Tr_MgrSetImgSmoothPi( Tr_Mgr_t * trMgr, Transition Relation Manager int val )
void Tr_MgrSetI( Tr_Mgr_t * trMgr, Transition Relation Manager Ddi_Vararray_t * i Array of variables )
void Tr_MgrSetMaxIter( Tr_Mgr_t * trMgr, Transition Relation Manager int maxIter max iterations )
void Tr_MgrSetNS( Tr_Mgr_t * trMgr, Transition Relation Manager Ddi_Vararray_t * ns Array of variables )
void Tr_MgrSetPS( Tr_Mgr_t * trMgr, Transition Relation Manager Ddi_Vararray_t * ps Array of Variables )
void Tr_MgrSetPartThFrom( Tr_Mgr_t * trMgr, Tr Manager int threshold Threshold value (-1 for no threshold) )
void Tr_MgrSetPartThTr( Tr_Mgr_t * trMgr, Tr Manager int threshold Threshold value (-1 for no threshold) )
void Tr_MgrSetPartitionMethod( Tr_Mgr_t * trMgr, Tr Manager Part_Method_e partitionMethod Partition Method )
void Tr_MgrSetSortMethod( Tr_Mgr_t * trMgr, Transition Relation Manager Tr_Sort_e sortMethod Method )
void Tr_MgrSetSortW( Tr_Mgr_t * trMgr, Transition Relation Manager int i, double SortW Weight )
void Tr_MgrSetSquaringMethod( Tr_Mgr_t * trMgr, Transition Relation Manager int method Method )
void Tr_MgrSetTrName( Tr_Mgr_t * trMgr, Transition Relation Manager char * trName Traversal Manager Name )
void Tr_MgrSetTr( Tr_Mgr_t * trMgr, Transition Relation Manager Tr_Tr_t * tr Transition Relation )
void Tr_MgrSetVerbosity( Tr_Mgr_t * trMgr, Transition Relation Manager Pdtutil_VerbLevel_e verbosity Verbosity )
void Tr_RemoveLambdaLatches( Tr_Tr_t * tr )
Trav_BuildClusteredTR
Ddi_Bdd_t * Tr_TrBdd( Tr_Tr_t * tr )
Tr_Tr_t * Tr_TrDup( Tr_Tr_t * old )
void Tr_TrFree( Tr_Tr_t * tr )
Tr_Tr_t * Tr_TrMakeFromExpr( Tr_Mgr_t * trMgr, Ddi_Expr_t * expr )
Tr_Tr_t * Tr_TrMakeFromRel( Tr_Mgr_t * trMgr, Ddi_Bdd_t * bdd )
Tr_Tr_t * Tr_TrMakePartConjFromFuns( Tr_Mgr_t * trMgr, Ddi_Bddarray_t * Fa, Ddi_Vararray_t * Va )
Tr_Mgr_t * Tr_TrMgr( Tr_Tr_t * tr )
Tr_Tr_t * Tr_TrReverseAcc( Tr_Tr_t * tr )
Tr_Tr_t * Tr_TrReverse( Tr_Tr_t * old )
Tr_Tr_t * Tr_TrSetClustered( Tr_Tr_t * tr )
Tr_Tr_t * Tr_TrSetMono( Tr_Tr_t * tr )
char * Tr_TrSortEnum2String( Tr_Sort_e enumType )
int Tr_TrSortIwls95( Tr_Tr_t * tr )
Tr_Sort_e Tr_TrSortString2Enum( char * string String to Analyze )
Tr_Tr_t * Tr_TransClosure( Tr_Tr_t * tr )
T(0)(s,y) = TR(s,y)
T(i+1)(s,y)= TR(s,y) + Exist(z) ( T(i)(s,z) * T(i)(z,y) )
The least fixed point is T* (transitive closure)
and the number of iterations required to compute T* is
logarithmic in the sequential depth of TR (the diameter of
the state transition graph represented by TR).
The transitive closure describes the pairs of states that are
connected by at least one path in the state graph of FSM.
This function is a shell to TrBuildTransClosure, where the
job is really done. Nothing is done here if the array of
"intermediate" z variables is not NULL, whereas
a temporary BDD manager is created (and destroyed when
the job is done) if z is NULL, to avoid
creating new variables in the original manager.
Primary input variables (NON quantifying and NON state
variables) are not taken into account. This means that they
are NOT duplicated at every step as in standart squaring.
They should (since they could) be quantifyed out from a
monolithic or disjunctively partitioned TR. Otherwise the
algorithm only closes paths with constant input values.
TrBuildTransClosure