static int BddSizeCompare( const void * s1, const void * s2 )
Tr_DdArraySort()
trSort.c
static int MaxMinVSupportCompare( const void * s1, const void * s2 )
Tr_DdArraySort()
trSort.c
static void SetSortWeights( Tr_Mgr_t * trMgr, Traversal Manager char * weights Weights )
trMgr.c
static char * ShowSortWeights( Tr_Mgr_t * trMgr Traversal Manager )
trMgr.c
Ddi_Dd_t * TrBuildTransClosure( Tr_Mgr_t * trMgr, TR manager Ddi_Dd_t * TR, Transition Relation Ddi_VarArray_t * s, Present state vars Ddi_VarArray_t * y, Next state vars Ddi_VarArray_t * z Intermediate state vars )
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.
TrCompose
trClosure.c
static Ddi_Dd_t * TrCompose( Tr_Mgr_t * trMgr, Tr Manager Ddi_Dd_t * f, first function Ddi_Dd_t * g, second function Ddi_VarArray_t * s, array of s variables Ddi_VarArray_t * y, array of y variables Ddi_VarArray_t * z, array of z variables Ddi_VarSet_t * suppZ z variables as a set )
trClosure.c
Ddi_Dd_t * Tr_BuildClusteredTR( Tr_Mgr_t * trMgr, Tr manager Ddi_Dd_t * tr, Input partitioned/clustered relation Ddi_VarSet_t * svars, Set of smoothing variables Ddi_VarSet_t * qvars, Set of quantifying variables Ddi_VarSet_t * rvars, Set of range variables int threshold Threshold for creating clusters )
Trav_BuildPartTranRel
trBuild.c
Ddi_Dd_t * Tr_BuildMonoTR( Tr_Mgr_t * trMgr, TR manager Ddi_Dd_t * tr, Input partitioned/clustered relation Ddi_VarSet_t * svars, Set of smoothing variables Ddi_VarSet_t * qvars, Set of quantifying variables Ddi_VarSet_t * rvars Set of range variables )
Trav_BuildClusteredTR
trBuild.c
Ddi_Dd_t * Tr_BuildPartTR( Ddi_DdArray_t * delta, array of state function Ddi_VarArray_t * y array of next state variables )
Trav_BuildClusteredTR
trBuild.c
Ddi_Dd_t * Tr_BuildTransClosure( Tr_Mgr_t * trMgr, Tr manager Ddi_Dd_t * TR, Transition Relation Ddi_VarArray_t * s, present state vars Ddi_VarArray_t * y, next state vars Ddi_VarArray_t * z intermediate state vars )
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
trClosure.c
int Tr_DdSortPartitions( Tr_Mgr_t * trMgr, Tr manager Ddi_Dd_t * F, Partitioned TR Ddi_VarSet_t * svars, Set of smoothing variables Ddi_VarSet_t * qvars, Set of quantifying variables Ddi_VarSet_t * rvars, Set of range variables Tr_Sort_e method Sorting method )
trSort.c
Tr_Mgr_t * Tr_MgrInit( char * trName, Name of the FSM structure Ddi_DdMgr * dd Decision Diagram Manager )
Ddi_DdiMgrQuit
trMgr.c
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
trMgr.c
int Tr_MgrPrintStats( Tr_Mgr_t * trMgr Tr manager )
trMgr.c
void Tr_MgrQuit( Tr_Mgr_t * trMgr Tr manager )
Ddi_DdiMgrInit
trMgr.c
int Tr_MgrReadClustThreshold( Tr_Mgr_t * trMgr Transition Relation Manager )
trMgr.c
Ddi_DdMgr * Tr_MgrReadDdiMgrDefault( Tr_Mgr_t * trMgr trersal manager )
trMgr.c
Ddi_VarArray_t * Tr_MgrReadI( Tr_Mgr_t * trMgr tr manager )
trMgr.c
int Tr_MgrReadMaxIter( Tr_Mgr_t * trMgr Transition Relation Manager )
trMgr.c
Ddi_VarArray_t * Tr_MgrReadNS( Tr_Mgr_t * trMgr tr manager )
trMgr.c
Ddi_VarArray_t * Tr_MgrReadPS( Tr_Mgr_t * trMgr tr manager )
trMgr.c
Tr_Sort_e Tr_MgrReadSortMethod( Tr_Mgr_t * trMgr Transition Relation Manager )
trMgr.c
double Tr_MgrReadSortW( Tr_Mgr_t * trMgr, Transition Relation Manager int i )
trMgr.c
int Tr_MgrReadSquaringMethod( Tr_Mgr_t * trMgr Transition Relation Manager )
trMgr.c
char * Tr_MgrReadTrName( Tr_Mgr_t * trMgr Transition Relation Manager )
trMgr.c
Ddi_Dd_t * Tr_MgrReadTr( Tr_Mgr_t * trMgr Transition Relation Manager )
trMgr.c
Pdtutil_VerbLevel_e Tr_MgrReadVerbosity( Tr_Mgr_t * trMgr Transition Relation Manager )
trMgr.c
void Tr_MgrSetClustThreshold( Tr_Mgr_t * trMgr, Transition Relation Manager int ClustThreshold Threshold )
trMgr.c
void Tr_MgrSetDdiMgrDefault( Tr_Mgr_t * trMgr, trersal manager Ddi_DdMgr * mgr dd Manager )
trMgr.c
void Tr_MgrSetI( Tr_Mgr_t * trMgr, Transition Relation Manager Ddi_VarArray_t * i Array of variables )
trMgr.c
void Tr_MgrSetMaxIter( Tr_Mgr_t * trMgr, Transition Relation Manager int maxIter max iterations )
trMgr.c
void Tr_MgrSetNS( Tr_Mgr_t * trMgr, Transition Relation Manager Ddi_VarArray_t * ns Array of variables )
trMgr.c
void Tr_MgrSetPS( Tr_Mgr_t * trMgr, Transition Relation Manager Ddi_VarArray_t * ps Array of Variables )
trMgr.c
void Tr_MgrSetSortMethod( Tr_Mgr_t * trMgr, Transition Relation Manager Tr_Sort_e sortMethod Method )
trMgr.c
void Tr_MgrSetSortW( Tr_Mgr_t * trMgr, Transition Relation Manager int i, double SortW Weight )
trMgr.c
void Tr_MgrSetSquaringMethod( Tr_Mgr_t * trMgr, Transition Relation Manager int method Method )
trMgr.c
void Tr_MgrSetTrName( Tr_Mgr_t * trMgr, Transition Relation Manager char * trName Traversal Manager Name )
trMgr.c
void Tr_MgrSetTr( Tr_Mgr_t * trMgr, Transition Relation Manager Ddi_Dd_t * tr Transition Relation )
trMgr.c
void Tr_MgrSetVerbosity( Tr_Mgr_t * trMgr, Transition Relation Manager Pdtutil_VerbLevel_e verbosity Verbosity )
trMgr.c
void Tr_RemoveLambdaLatches( Tr_Mgr_t * trMgr TR manager )
Trav_BuildClusteredTR
trBuild.c
char * Tr_TrSortEnum2String( Tr_Sort_e enumType )
trUtil.c
Tr_Sort_e Tr_TrSortString2Enum( char * string String to Analyze )
trUtil.c
static int WeightedSort( Tr_Mgr_t * trMgr, Tr manager Ddi_DdMgr * dd, dd manager PartitionInfo_t ** FSa, array of Partition Infos int nPart, number of partitions Tr_Sort_e method sorting method )
Tr_DdArraySort()
trSort.c