imgHybrid.c
Routines for hybrid image computation.
imgIwls95.c
Routines for image computation using component transition relation approach described in the proceedings of IWLS'95, (henceforth referred to Iwls95 technique).
imgLinear.c
Routines for image computation using Linear Arrangement published in TACAS02.
imgMlp.c
Routines for image computation using MLP(Minimal Lifetime Permutation) published in FMCAD00.
imgMonolithic.c
Routines for image computation using a monolithic transition relation.
imgTfm.c
Routines for image and preimage computations using transition function method.
imgTfmBwd.c
Routines for preimage computation using transition function method.
imgTfmCache.c
Routines for image cache in transition function method.
imgTfmFwd.c
Routines for image computation using transition function method.
imgTfmUtil.c
Routines for image computation using transition function method.
imgUtil.c
High-level routines to perform image computations.

imgHybrid.c

Routines for hybrid image computation.

By: In-Ho Moon

The hybrid image computation method combines transition function and relation methods, in other words, combines splitting and conjunction methods.

Img_PrintHybridOptions()
Prints the options for hybrid image computation.
ImgDecideSplitOrConjoin()
Decides whether to split or to conjoin.
ImgImageByHybrid()
Computes an image by transition relation.
ImgImageByHybridWithStaticSplit()
Computes an image by transition relation.
ImgPreImageByHybrid()
Computes a preimage by transition relation.
ImgPreImageByHybridWithStaticSplit()
Computes a preimage by transition relation.
ImgCheckEquivalence()
Checks whether a vector is equivalent to a relation array.
ImgCheckMatching()
Checks whether a vector corresponds to its relation array.
ComputeSupportLambda()
Computes variable lifetime lambda.

imgIwls95.c

Routines for image computation using component transition relation approach described in the proceedings of IWLS'95, (henceforth referred to Iwls95 technique).

By: Rajeev K. Ranjan, In-Ho Moon, Kavita Ravi

The initialization process performs following steps:

For forward and backward image computation the corresponding routines are called with appropriate ordering of clusters and early quantification schedule.

Note that, a cubic implementation of the above algorithm is straightforward. However, to obtain quadratic complexity requires significant amount of book-keeping. This is the reason for the complexity of the code in this file.

Img_MultiwayLinearAndSmooth()
Returns the result after existentially quantifying a set of variables after taking the product of the array of relations.
Img_PrintPartitionedTransitionRelation()
Prints info of the partitioned transition relation.
Img_ReorderPartitionedTransitionRelation()
Reorder partitioned transition relation.
Img_UpdateQuantificationSchedule()
Updates quantification schedule.
Img_ClusterRelationArray()
Clusters relation array and returns quantification schedule.
ImgMultiwayLinearAndSmooth()
Returns the result after existentially quantifying a set of variables after taking the product of the array of relations.
ImgMultiwayLinearAndSmoothWithFrom()
Returns the result after existentially quantifying a set of variables after taking the product of the array of relations.
ImgBddLinearAndSmooth()
Returns a BDD after taking the product of fromSet with the BDDs in the relationArray and quantifying out the variables using the schedule given in the arraySmoothVarBddArray.
ImgClusterRelationArray()
Clusters relation array and makes quantification schedule.
ImgGetQuantificationSchedule()
Returns quantification schedule for a given relation array.
ImgGetTrmOptions()
Allocates an option structure for transition relation method.
ImgFreeTrmOptions()
Frees the option structure for transition relation method.
ImgResetMethodDataLinearComputeRange()
Turn off option to apply linear based image computation by comsidering range of state variables
ImgSetMethodDataLinearComputeRange()
Turn on option to apply linear based image computation by comsidering range of state variables
Img_ImageGetUnreachableStates()
Get unreachable states
ImgImageInfoInitializeIwls95()
Initializes an image data structure for image computation using the Iwls95 technique.
ImgImageInfoComputeFwdIwls95()
Computes the forward image of a set of states.
ImgImageInfoComputeFwdWithDomainVarsIwls95()
Computes the forward image of a set of states in terms of domain variables.
ImgImageInfoComputeBwdIwls95()
Computes the backward image of domainSubset.
ImgImageInfoComputeBwdWithDomainVarsIwls95()
Computes the backward image of a set of states.
ImgImageInfoFreeIwls95()
Frees the memory associated with imageInfo.
ImgImageInfoPrintMethodParamsIwls95()
Prints information about the IWLS95 method.
ImgBddGetSupportIdTable()
Returns the st_table containing the bdd id of the support variables of the function.
ImgImageWasPartialIwls95()
Checks if the last image/preimage was partial.
ImgImageAllowPartialImageIwls95()
Sets the flag to allow partial images.
ImgRestoreTransitionRelationIwls95()
Restores original transition relation from saved.
ImgDuplicateTransitionRelationIwls95()
Duplicates transition relation.
ImgMinimizeTransitionRelationIwls95()
Minimizes transition relation with given set of constraints.
ImgAbstractTransitionRelationIwls95()
Abstracts out given variables from transition relation.
ImgApproximateTransitionRelationIwls95()
Approximate transition relation.
ImgGetTransitionRelationIwls95()
Returns current transition relation.
ImgUpdateTransitionRelationIwls95()
Overwrites transition relation with given.
ImgReplaceIthPartitionedTransitionRelationIwls95()
Replace ith partitioned transition relation.
ImgImageFreeClusteredTransitionRelationIwls95()
Frees current transition relation and associated quantification schedule for the given direction.
ImgImageConstrainAndClusterTransitionRelationIwls95OrMlp()
Constrains/Adds dont-cares to the bit relation and creates a new transition relation.
ImgPrintIntegerArray()
Prints integers from an array.
ImgPrintPartition()
Prints the given parition.
ImgPrintPartitionedTransitionRelation()
Prints info of the partitioned transition relation.
ImgTrmEliminateDependVars()
Eliminates dependent variables from transition relation.
ResetClusteredCofactoredRelationArray()
Reset the clusteredcofactoredrelationarray to the clusteredrelationarray.
FreeClusteredCofactoredRelationArray()
Frees the clusteredcofactoredrelationarray
TrmGetOptions()
Gets the necessary options for computing the image and returns in the option structure.
CreateBitRelationArray()
Creates the bit relations and the mdd id array for the quantifiable variables and stores it in the ImgIwls95 structure.
FreeBitRelationArray()
Frees bit relation array and the quantification variables.
OrderClusterOrder()
Takes an array of relations and does order, cluster, order on it according to the IWLS95 method. This forms a heuristically optimized clustered transition relation, plus a quantification schedule that goes with it.
CreateClusters()
Forms the clusters of relations based on BDD size heuristic.
OrderRelationArray()
Returns an array of ordered relations and an array of BDD cubes (array of BDDs).
RelationArraySmoothLocalVars()
This function takes an array of relations and quantifies out the quantify variables which are local to a particular relation.
OrderRelationArrayAux()
An auxiliary routine for orderRelationArray to order the clusters.
UpdateInfoArrays()
This function computes the set of variables which can be smoothed out once a particular cluster is chosen to be multiplied in the product.
CalculateBenefit()
Gets the necessary options for computing the image and returns in the option structure.
PrintOption()
Prints the option values used in IWLS95 techinique for image computation.
Iwls95InfoStructAlloc()
Allocates and initializes the info structure for IWLS95 technique.
CtrInfoStructAlloc()
Allocates and initializes memory for ctrInfoStruct.
CtrInfoStructFree()
Frees the memory associated with ctrInfoStruct.
VarInfoStructAlloc()
Allocates and initializes memory for varInfoStruct.
VarInfoStructFree()
Frees the memory associated with varInfoStruct.
CtrItemStructFree()
Frees the memory associated with CtrItemStruct
VarItemStructFree()
Frees the memory associated with VarItemStruct
CtrInfoMaxIndexCompare()
Compare function used to sort the ctrInfoStruct based on the maxSmoothVarIndex field.
PrintCtrInfoStruct()
Prints the CtrInfo_t data structure.
PrintVarInfoStruct()
Prints the VarInfo_t structure.
CheckQuantificationSchedule()
Given an array of BDD's representing the relations and another array of BDD cubes (in the form of array of bdd_t of variable) representing the quantification schedule, this function checks if the schedule is correct.
CheckCtrInfoArray()
Checks the validity of an array of CtrInfoStructs.
CheckCtrInfo()
Checks the validity of a CtrInfoStruct.
CheckVarInfoArray()
Checks the validity of an array of VarInfoStruct.
BddArrayDup()
Duplicates an array of BDDs.
BddLinearAndSmooth()
Returns a BDD after taking the product of fromSet with the BDDs in the relationArray and quantifying out the variables using the schedule given in the arraySmoothVarBddArray.
HashIdToBddTable()
Hashes bdd id to bdd in the table.
PrintSmoothIntroducedCount()
Prints information about the schedule of clusters and the the corresponding smooth cubes.
PrintBddIdFromBddArray()
Prints Ids of an array of BDDs.
PrintBddIdTable()
Prints the integers from a symbol table.
PartitionTraverseRecursively()
Traverses the partition recursively, creating the relations for the intermediate vertices.
PrintPartitionRecursively()
Prints the partition recursively.
RecomputeImageIfNecessary()
Recompute partial image by relaxing the parameters.
ComputeSubsetOfIntermediateProduct()
Approximate intermediate product according to method.
ComputeClippedAndAbstract()
Clipping and-abstract
CopyArrayBddArray()
Copy an array of bdd array.
PrintPartitionedTransitionRelation()
Prints info of the partitioned transition relation.
ReorderPartitionedTransitionRelation()
Reorder partitioned transition relation.
UpdateQuantificationSchedule()
Updates quantification schedule.
MakeSmoothVarCubeArray()
Returns array of cubes of smoothing variables.
TrmEliminateDependVars()
Eliminates dependent variables from transition relation.
TrmSignatureCompare()
Comparison function used by qsort.
SetupLazySifting()
Setups lazy sifting.
Img_IsTransitionRelationOptimized()
Check whether the given transition relation is optimized.
MddSizeCompare()
Compare the size of two MDDs.
Img_ForwardImageInfoRecoverFromWinningStrategy()
Restore original transition relations from restricted transition relations by conjoining with winning strategy
Img_ForwardImageInfoConjoinWithWinningStrategy()
Create restricted transition relations by conjoining with winning strategy

imgLinear.c

Routines for image computation using Linear Arrangement published in TACAS02.

By: HoonSang Jin

ImgLinearClusterRelationArray()
Cluster fine grain transition relation
ImgLinearRelationInit()
Initialize the data structure for linear arrangement and clustering.
ImgLinearGetSupportBddId()
Find support varaibles of bdd
ImgLinearExtractRelationArray()
Create relation array for image computation from Relation_t data structure
ImgLinearExtractRelationArrayT()
Create relation array for image computation from Relation_t data structure
ImgLinearOptimizeAll()
Function for optimizing state varaibles
ImgLinearPropagateConstant()
Propagate the constant to simply the transition relation
ImgLinearOptimizeStateVariables()
Remove corresponding current (next) state variables if the next (current state variables are eleminated aftetr clustering
ImgLinearOptimizeInternalVariables()
Remove intermediate variables after propagating constant.
ImgLinearRefineRelation()
Refine transition relation.
ImgLinearConjunctOrderMainCC()
Order the fine grain transition relation.
ImgLinearBuildConjunctArrayWithQuotientCC()
Order the each connected component
ImgLinearConnectedComponent()
Find the connected component from fine grain transition relation
ImgLinearFindConnectedComponent()
Find the connected component from fine grain transition relation
ImgLinearExtractSingletonCase()
Extract the relation contains only one next state varaible
ImgLinearAddConjunctIntoClusterArray()
Add Conjunct into Cluster Array
ImgLinearExtractNextStateCase()
Extract the relation that contains next state varaibles only
ImgLinearRelationQuit()
Free Relation_t data structure
ImgLinearClusteringIteratively()
Apply clustering iteratively
ImgLinearClusteringByConstraints()
Apply clustering with given priority function
ImgLinearInsertClusterCandidate()
Add candidates for clustering
ImgLinearClusteringSmooth()
Apply clustering while quantifying the variables that are isolated
ImgLinearClusterUsingHeap()
Apply clustering with priority queue
linearCheckRange()
compare function for checking range of cluster
ImgLinearClusteringPairSmooth()
Clustering pair of transition relation
ImgLinearBuildInitialCandidate()
Build data structure for clustering
ImgLinearInsertPairClusterCandidate()
Insert initial candidate set
ImgLinearPrintDebugInfo()
Print information of debug information
ImgLinearConjunctOrderMain()
Main function of linear arrangement
ImgLinearConjunctionOrder()
Generate linear arrangement with CAPO
ImgLinearCAPOInterfaceConjunctNodes()
Make interface files for CAPO
ImgLinearCAPOInterfaceConjunctNet()
Make interface files for CAPO
ImgLinearCAPOInterfaceConjunctScl()
Make interface files for CAPO
ImgLinearCAPOInterfaceConjunctPl()
Make interface files for CAPO
ImgLinearCAPOInterfaceAux()
Make interface files for CAPO
ImgLinearCAPORun()
Run batch job of CAPO
ImgLinearCAPOReadConjunctOrder()
Read result of CAPO
ImgLinearVariableOrder()
Make interface for variable ordering
ImgLinearCAPOInterfaceVariableNodes()
Make interface for CAPO
ImgLinearCAPOInterfaceVariableNet()
Make interface for CAPO
ImgLinearCAPOInterfaceVariableScl()
Make interface for CAPO
ImgLinearCAPOInterfaceVariablePl()
Make interface for CAPO
ImgLinearCAPOReadVariableOrder()
Read result of CAPO
ImgLinearPrintVariableProfile()
Print profile of variables
ImgLinearPrintMatrix()
Print matrix
ImgLinearPrintMatrixFull()
Print matrix
ImgLinearFreeSmoothArray()
Free smooth variable array
ImgLinearComputeLifeTime()
Compute life time of variables
ImgLinearPrintTransitionInfo()
Print transition relation info
ImgLinearMakeSmoothVarBdd()
Make the array of smooth variables
ImgLinearCompareVarEffFromSmall()
Priority function for clutering
ImgLinearCompareVarDummyLarge()
Priority function for clutering
ImgLinearCompareVarEffFromLarge()
Priority function for clutering
ImgLinearCompareVarId()
Priority function for clutering
ImgLinearCompareVarSize()
Priority function for clutering
ImgLinearCompareConjunctRangeMinusDomain()
Priority function for clutering
ImgLinearCompareConjunctDummy()
Priority function for clutering
ImgLinearCompareConjunctIndex()
Priority function for clutering
ImgLinearCompareConjunctSize()
Priority function for clutering
ImgLinearCompareVarIndex()
Priority function for clutering
ImgLinearCompareDeadAffinityLive()
Priority function for clutering
ImgLinearCompareDeadLiveAffinity()
Priority function for clutering
ImgLinearCompareAffinityDeadLive()
Priority function for clutering
ImgLinearCompareLiveAffinityDead()
Priority function for clutering
ImgLinearHeapCompareDeadAffinityLive()
Priority function for clutering
ImgLinearHeapCompareDeadLiveAffinity()
Priority function for clutering
ImgLinearHeapCompareAffinityDeadLive()
Priority function for clutering
ImgLinearHeapCompareLiveAffinityDead()
Priority function for clutering
ImgLinearVariableArrayInit()
Initialize variable array
ImgLinearUpdateVariableArrayWithId()
Update variable array with id of variable id
ImgLinearQuantifyVariablesFromConjunct()
Apply quantification with candidate variables
ImgLinearConjunctRefine()
Refine conjunction array to fill the empty slot.
ImgLinearConjunctArrayRefine()
Refine conjunction array to fill the empty slot.
ImgLinearSetEffectiveNumberOfStateVariable()
Get the number of state variables after applying optimization
ImgLinearAddSingletonCase()
Find the case that the relation contains only one next state varaible
ImgLinearExpandSameSupportSet()
Find transtion relations that have smae support set
ImgLinearClusterSameSupportSet()
Cluster the relation that has same support set
ImgLinearFindSameSupportConjuncts()
Find the conjuncts that have same support variables.
ImgLinearIsSameConjunct()
Check if given conjuncts have same support variables
ImgLinearAddConjunctIntoArray()
Add conjunct into array
ImgLinearConjunctQuit()
Free conjunct_t data structure
ImgLinearVariableArrayQuit()
Free variable array
ImgLinearVariableLifeQuit()
Free variable life array
ImgLinearClustering()
Main function of clustering
ImgCountOnsetDisjunctiveArray()
Count onset of relation array
ImgCheckRangeTestAndOverapproximate()
Check range of variables
ImgLinearAddNextStateCase()
Add singleton next state variable case into array

imgMlp.c

Routines for image computation using MLP(Minimal Lifetime Permutation) published in FMCAD00.

By: In-Ho Moon

Img_PrintMlpOptions()
Prints the options for MLP image computation.
ImgMlpMultiwayAndSmooth()
Performs multiway and_smooth using MLP.
ImgMlpClusterRelationArray()
Clusters relation array and makes quantification schedule.
ImgMlpOrderRelationArray()
Orders relation array and makes quantification schedule.
ImgMlpComputeLambda()
Compute variables lifetime using MLP.
ImgMlpGetQuantificationSchedule()
Makes a quantification schedule using MLP.
ImgMlpPrintDependenceMatrix()
Prints dependence matrix.
ImgMlpWriteClusterFile()
Writes cluster to a file.
ImgMlpReadClusterFile()
Reads cluster file.
SetupMlp()
Setups MLP.
MlpDecomposeScc()
Performs connected component decomposition.
SccSortListIncreasingWithVars()
Sorts connected components with the number of variables.
SccSortListDecreasingWithVars()
Sorts connected components with the number of variables.
SccSortListIncreasingWithArea()
Sorts connected components with area.
SccSortListDecreasingWithArea()
Sorts connected components with area.
SccSortListIncreasingWithRatio()
Sorts connected components with aspect ratio.
SccSortListDecreasingWithRatio()
Sorts connected components with aspect ratio.
SccSortRc()
Sorts rows or columns using connected component index.
FreeSccList()
Frees list of connected components.
NumOfSccs()
Returns the number of connected components in the list.
BlockLowerTriangle()
Makes dependence matrix block lower triangle.
MoveBestRows()
Finds and moves the best row iteratively.
MoveBestCols()
Finds and moves the best column iteratively.
MlpPostProcess()
Performs a postprocessing after MLP.
ComputeLambdaMlp()
Compute variable lifetime lambda.
FindAndMoveSingletonRows()
Finds and moves singleton rows.
MoveSingletonRow()
Moves a singleton row.
FindAndMoveSingletonCols()
Finds and moves singleton columns.
MoveSingletonCol()
Moves a singleton column.
MoveRowToTop()
Moves a row to the top of the active region.
MoveColToLeft()
Moves a column to the left of the active region.
MoveRowToBottom()
Moves a row to the bottom of the active region.
MoveColToRight()
Moves a column to the tight of the active region.
PrintMatrix()
Prints a maxtrix.
PrintMatrixWithCluster()
Prints a matrix with cluster information.
PrintClusterMatrix()
Prints cluster information.
CheckMatrix()
Checks a matrix for sanity.
CheckCluster()
Checks cluster for sanity.
WriteMatrix()
Writes a matrix to a file.
PrintRow()
Prints a row.
PrintCol()
Prints a column.
SortedListAlloc()
Allocates a list for sorting.
SortedListFree()
Frees a list used for sorting.
SortedListInsert()
Inserts a list to the sorting list.
SortedListDelete()
Deletes a list from the sorting list.
SortedListMove()
Moves a list in the sorting list.
CheckSortedList()
Checks the sorting list for sanity.
MlpCluster()
Clusters on the ordered bits.
MlpCountSupport()
Counts the number of supports of the list.
MlpSupportAffinity()
Computes the affinity of two lists.
RecursiveCluster()
Clusters recursively with affinity.
RemoveLocalVarsInCluster()
Removes local variables in a cluster.
MlpNumQuantifyVars()
Retuns the number of variables to be quantified in a list.
ClusterSortedListInsert()
Inserts a cluster in a sorting list.
CountClusterList()
Returns the number of lists in a cluster list.
CountClusterSortedList()
Returns the number of lists in a sorted cluster list.
CreateInitialCluster()
Creates an initial cluster using ARDC decomposition.
SortCol()
Updates matrix information properly.
UpdateDisapearingPsVars()
Finds disappearing present state variables in a row.
UpdateDisapearingPsVarsInCluster()
Finds disappearing present state variables in a cluster.
UpdateNonappearingNsVars()
Finds non-appearing next state variables.
WriteOrder()
Writes variable order in coulumn of the matrix.

imgMonolithic.c

Routines for image computation using a monolithic transition relation.

By: Rajeev K. Ranjan, Tom Shiple, Abelardo Pardo, In-Ho Moon

ImgImageInfoInitializeMono()
Initializes an image structure for image computation using a monolithic transition relation.
ImgImageInfoComputeFwdMono()
Computes the forward image of a set of states between fromLowerBound and fromUpperBound.
ImgImageInfoComputeFwdWithDomainVarsMono()
Computes the forward image on domain variables of a set of states between fromLowerBound and fromUpperBound.
ImgImageInfoComputeBwdMono()
Computes the backward image of a set of states between fromLowerBound and fromUpperBound.
ImgImageInfoComputeBwdWithDomainVarsMono()
Computes the backward image of a set of states between fromLowerBound and fromUpperBound.
ImgImageInfoFreeMono()
Frees the method data associated with the monolithic method.
ImgImageInfoPrintMethodParamsMono()
Prints information about the IWLS95 method.
ImgRestoreTransitionRelationMono()
Restores original transition relation from saved.
ImgDuplicateTransitionRelationMono()
Duplicates transition relation.
ImgMinimizeTransitionRelationMono()
Minimizes transition relation with given constraint.
ImgAddDontCareToTransitionRelationMono()
Add dont care to transition relation.
ImgAbstractTransitionRelationMono()
Abstracts out given variables from transition relation.
ImgApproximateTransitionRelationMono()
Approximates transition relation.
ImgImageConstrainAndClusterTransitionRelationMono()
Constrains/adds dont-cares to the bit relation and creates a new transition relation.
ImageComputeMonolithic()
A generic routine for computing the image.

imgTfm.c

Routines for image and preimage computations using transition function method.

By: In-Ho Moon

Transition function method is implemented as a part of the hybrid image computation (refer to "To Split or to Conjoin: The Question in Image Computation", In-Ho Moon et. al. in the proceedings of DAC00.) The hybrid method starts with transition function method based on splitting, then switches to transition relation method based on conjunctions. The decision is based on computing variable lifetimes from dependence matrix dynamically at every recursion. The transition function method itself also can be used as an image_method, however we do not recommend to use this method for general purpose. This method can be used for experimental purpose. However, this method performs quite well for most approximate reachability and some examples on exact reachability. There are two image computation methods in transition function method; input splitting (default) and output splitting. Also three preimage computation methods in transition function method are implemented; domain cofactoring (default), sequential substitution, and simultaneous substitution. The performance of transition function method is significantly depending on both the choice of splitting variable and the use of image cache. However, the hybrid method does not use image cache by default. Since the recursion depths are bounded (not so deep) in the hybrid method, the cache hit ratio is usually very low. The implementation of the transition function method and the hybrid method is very complicate since there are so many options. For details, try print_tfm_options and print_hybrid_options commands in vis, also more detailed descriptions for all options can be read by using help in vis for the two commands. The hybrid method can start with either only function vector or only transition relation, as well as with both function vector and transition relation. In case of starting with only the function vector, when we switch to conjoin, transition relation is built on demand. This method may consume less memory than the others, but it may take more time since it is a big overhead to build transition relation at every conjunction. To reduce this overhead, the hybrid method can start with both function vector and transition relation (default). In the presense of non-determinism, the hybrid mehtod also can start with only transition relation without the function vector.

See AlsoimgTfmFwd.c imgTfmBwd.c imgTfmUtil.c imgTfmCache.c

Img_TfmGetRecursionStatistics()
Gets the statistics of recursions of transition function method.
Img_TfmPrintStatistics()
Prints the statistics of image cache and recursions in in transition function method.
Img_TfmPrintRecursionStatistics()
Prints the statistics of recursions for transition function method.
Img_PrintTfmOptions()
Prints the options for image computation using transition function method.
ImgImageInfoInitializeTfm()
Initializes an image data structure for image computation using transition function method.
ImgImageInfoComputeFwdTfm()
Computes the forward image of a set of states.
ImgImageInfoComputeFwdWithDomainVarsTfm()
Computes the forward image of a set of states in terms of domain variables.
ImgImageInfoComputeBwdTfm()
Computes the backward image of domainSubset.
ImgImageInfoComputeBwdWithDomainVarsTfm()
Computes the backward image of a set of states.
ImgImageInfoFreeTfm()
Frees the memory associated with imageInfo.
ImgImageInfoPrintMethodParamsTfm()
Prints information about the transition function method.
ImgRestoreTransitionFunction()
Restores original transition function from saved.
ImgDuplicateTransitionFunction()
Duplicates transition function.
ImgMinimizeTransitionFunction()
Minimizes transition function with given set of constraints.
ImgAddDontCareToTransitionFunction()
Adds a dont care set to the transition function and relation.
ImgAbstractTransitionFunction()
Abstracts out given variables from transition function.
ImgApproximateTransitionFunction()
Approximate transition function.
ImgGetTransitionFunction()
Returns current transition function.
ImgUpdateTransitionFunction()
Overwrites transition function with given.
ImgReplaceIthTransitionFunction()
Replace ith transition function.
ImgTfmGetOptions()
Gets the necessary options for computing the image and returns in the option structure.
ImgImageFreeClusteredTransitionRelationTfm()
Frees current transition function vector and relation for the given direction.
ImgImageConstrainAndClusterTransitionRelationTfm()
Constrains the bit function and relation and creates a new transition function vector and relation.
ImgIsPartitionedTransitionRelationTfm()
Check whether transition relation is built in hybrid.
TfmInfoStructAlloc()
Allocates and initializes the info structure for transition function method.
CompareIndex()
Compares two variable indices of components.
HookInfoFunction()
Flushes cache entries in a list.
ChoosePartialVars()
Chooses variables for static splitting.
PrintRecursionStatistics()
Prints statistics of recursions for transition function method.
PrintFoundVariableStatistics()
Prints statistics of finding essential and dependent variables.
GetRecursionStatistics()
Returns the statistics of recursions of transition function method.
ReadSetIntValue()
Reads a set integer value.
ReadSetBooleanValue()
Reads a set Boolean value.
FindIntermediateVarsRecursively()
Traverses the partition recursively, creating the functions for the intermediate vertices.
GetIntermediateRelationsRecursively()
Traverses the partition recursively, creating the relations for the intermediate vertices.
CheckNondeterminism()
Checks whether the network is nondeterministic.
TfmCreateBitVector()
Creates function vector.
TfmCreateBitRelationArray()
Creates the bit relations.
TfmSetupPartialTransitionRelation()
Builds partial vector and relation array.
TfmBuildRelationArray()
Builds relation array from function vector or bit relation.
RebuildTransitionRelation()
Rebuilds transition relation from function vector.
MinimizeTransitionFunction()
Minimizes function vector or relation with given constraint.
AddDontCareToTransitionFunction()
Adds dont cares to function vector or relation.

imgTfmBwd.c

Routines for preimage computation using transition function method.

By: In-Ho Moon

ImgTfmPreImage()
Computes a preimage with transition function method.
PreImageByDomainCofactoring()
Computes preimage with domain cofactoring method.
PreImageByStaticDomainCofactoring()
Computes a preimage by static input splitting.
PreImageByConstraintCofactoring()
Computes preimage with constraint cofactoring method.
PreImageBySubstitution()
Computes a preimage by Filkorn's substitution.
PreImageMakeVectorCanonical()
Makes a vector canonical for preimage.
PreImageMakeRelationCanonical()
Makes transition relation canonical for preimage.
PreImageDeleteOneComponent()
Deletes a component in a vector.
PreImageChooseSplitVar()
Chooses a splitting variable for preimage.
DomainCofactoring()
Performs domain cofactoring on a vector and from set with respect to a variable.
CheckPreImageVector()
Checks sanity of a vector for preimage.

imgTfmCache.c

Routines for image cache in transition function method.

By: In-Ho Moon

See AlsoimgTfm.c imgTfmFwd.c imgTfmBwd.c imgTfmUtil.c

Img_TfmGetCacheStatistics()
Gets the statistics of image cache of transition function method.
Img_TfmCheckGlobalCache()
Checks whether a global cache is used for transition function method.
Img_TfmPrintCacheStatistics()
Prints the statistics of image cache of transition function method.
Img_TfmFlushCache()
Frees all cache contents of image computation using transition function method.
ImgCacheInitTable()
Initializes a cache table.
ImgCacheDestroyTable()
Destroys a cache table.
ImgCacheLookupTable()
Lookups cache table.
ImgCacheInsertTable()
Inserts an entry into cache table.
ImgFlushCache()
Flushes all cache entries.
ImgPrintCacheStatistics()
Prints cache statistics for transition function method.
CacheDestroyEntry()
Destroys a cache entry.
VectorHash()
Returns hash value of a vector.
VectorStHash()
Returns hash value of a vector for st_table.
KeyStHash()
Returns hash value of a key for st_table.
VectorCompare()
Compares two vectors.
VectorSortCompare()
Compares two vectors considering substitution.
VectorSortCompareWithConstraint()
Compares two vectors considering substitution.
ImageKeyCompare()
Compares two keys.
ImageKeySortCompare()
Compares two keys considering substitution.
PreImageKeyCompare()
Compares two keys for preimage.
SubstituteCacheResult()
Substitutes a cache result.
SubstituteCacheResultRecur()
Recursive procedure of SubstituteCacheResult.

imgTfmFwd.c

Routines for image computation using transition function method.

By: In-Ho Moon

ImgTfmImage()
Computes an image with transition function method.
ImgChooseTrSplitVar()
Chooses splitting variables for static splitting.
ImageByInputSplit()
Computes an image by input splitting.
ImageByStaticInputSplit()
Computes an image by static input splitting.
ImageByOutputSplit()
Computes an image by output splitting.
ImageDecomposeAndChooseSplitVar()
Try to decompose function vector and find a splitting variable for each decomposed block.
ImageFast2()
Fast image computation when function vector contains only two functions.
FindDecomposableVariable()
Finds a decomposable variable (articulation)
TfmCheckImageValidity()
Checks the support of image.
FindIntermediateSupport()
Finds all other fanin intermediate functions of a given intermediate function.
PrintVectorDecomposition()
Print the information of the decomposition.
CheckIfValidSplitOrGetNew()
Checks the splitting variable is valid and chooses new one if not valid.
ChooseInputSplittingVariable()
Finds a splitting variable for input splitting.
ChooseOutputSplittingVariable()
Finds a splitting variable for output splitting.

imgTfmUtil.c

Routines for image computation using transition function method.

By: In-Ho Moon

ImgVectorConstrain()
Constrains a function vector with respect to a constraint.
ImgVectorMinimize()
Minimizes a function vector and a from set with respect to an essential cube.
ImgVectorFree()
Frees a function vector.
ImgVectorFunctionSize()
Returns the number of functions in a vector.
ImgVectorBddSize()
Returns the shared BDD size of a vector.
ImgVectorCopy()
Copies a vector.
ImgComponentAlloc()
Allocates a component.
ImgComponentCopy()
Copies a component
ImgComponentFree()
Frees a component.
ImgComponentGetSupport()
Gets the supports of a component.
ImgSupportCopy()
Copies the supports of a component.
ImgSupportClear()
Clears a support array.
ImgSupportPrint()
Prints a support array.
ImgSupportCount()
Returns the number of support of a support array.
ImgGetConstrainedRelationArray()
Constrains a relation array with respect to a constraint.
ImgGetCofactoredRelationArray()
Cofactors a relation array with respect to a function.
ImgCofactorRelationArray()
Cofactors a relation array with respect to a function.
ImgGetAbstractedRelationArray()
Smoothes a relation array with respect to a cube.
ImgAbstractRelationArray()
Smoothes a relation array with respect to a cube.
ImgGetCofactoredAbstractedRelationArray()
Cofactors and smooths a relation array.
ImgGetAbstractedCofactoredRelationArray()
Smothes and cofactors a relation array.
ImgGetConstrainedVector()
Constrains a function vector with respect to a constraint.
ImgGetCofactoredVector()
Cofactors a function vector with respect to a function.
ImgCofactorVector()
Cofactors a function vector with respect to a function.
ImgTfmEliminateDependVars()
Eliminates dependent variables from transition function.
ImgExistConstIntermediateVar()
Checks whether there is a constant function of intermediate variables.
ImgGetComposedFunction()
Returns a function composed all intermediate variables.
ImgGetLatchComponent()
Returns the first latch component.
ImgComposeConstIntermediateVars()
Compose the constant intermediate variable functions.
ImgCountBddSupports()
Returns the number of BDD supports in a function.
ImgCheckConstConstrain()
Quick checking whether the results of constrain between two functions are constant.
ImgConstConstrain()
Checks whether the result of constrain is constant.
ImgPrintVectorDependency()
Prints vector dependencies with support.
ImgPercentVectorDependency()
Returns the percent of non-zero elements in dependency matrix.
ImgWriteSupportMatrix()
Writes a gnuplot file with support matrix.
SignatureCompare()
Comparison function used by qsort.
CompareBddPointer()
Compares two function BDD pointers of components.

imgUtil.c

High-level routines to perform image computations.

By: Rajeev Ranjan, Tom Shiple, Abelardo Pardo, In-Ho Moon, Kavita Ravi

This file provides the exported interface to the method-specific image computation routines.

Minimization of the transition relation can be done in three ways (for Iwls95, not so sure about monolithic and hybrid) (RB):

  1. You can call MinimizeTR. This way, you'll loose the old TR, though it could potentially reconstruct it from the bit relations. This is a good option for (overapproximate) reachability info, since the TR will remain valid.
  2. You can call the triplet Img_DupTransitionRelation to copy the TR, Img_MinimizeTransitionRelation to minimize the TR, and Img_RestoreTransitionRelation to discard the minimized TR and to restore the original.
  3. Finally, if you just want to minimize the TR for a single step, you can pass the care set to the (pre)image computation routine. This does unfortunately (and queerly) not work for image, but only for preimage. If you pas a care set, the TR gets minimized, and the minimized relation is kept and reused until you pass a different care set. Hence, minimizaiton is not done at every preimage computation, but only if you change the care set.

Img_Init()
Initialize the image package.
Img_End()
End the image package.
Img_UserSpecifiedMethod()
Return the image method preferred by the user.
Img_ImageInfoInitialize()
Initializes an imageInfo structure for the given method and direction.
Img_IsQuantifyCubeSame()
Check the given address of mdd_t is same as the functionData.quantifyCube.
Img_IsQuantifyArraySame()
Check the given address of array+t is same as the functionData.quantifyArray.
Img_ImageInfoUpdateVariables()
Updates present state and primary input variables.
Img_ImageAllowPartialImage()
Sets the flag to allow the next image computation to return a subset of the actual image.
Img_ImagePrintPartialImageOptions()
Prints partial image options.
Img_ImageWasPartial()
Queries whether the last image computation was partial.
Img_ImageInfoComputeImageWithDomainVars()
Computes the forward image of a set and expresses it in terms of domain variables.
Img_ImageInfoComputeFwdWithDomainVars()
Computes the forward image of a set and expresses it in terms of domain variables.
Img_ImageInfoComputeFwd()
Computes the forward image of a set.
Img_ImageInfoComputePreImageWithDomainVars()
Computes the backward image of a set expressed in terms of domain variables.
Img_ImageInfoComputeEXWithDomainVars()
Computes the backward image of a set expressed in terms of domain variables.
Img_ImageInfoComputeBwdWithDomainVars()
Computes the backward image of a set expressed in terms of domain variables.
Img_ImageInfoComputeBwd()
Computes the backward image of a set.
Img_ImageInfoFree()
Frees the memory associated with imageInfo.
Img_ImageInfoFreeFAFW()
Frees the memory associated with imageInfo.
Img_ImageInfoObtainMethodTypeAsString()
Returns a string giving the method type of an imageInfo.
Img_ImageInfoObtainMethodType()
Returns the method type of an imageInfo.
Img_ImageInfoObtainOptimizeType()
Returns the method type of an imageInfo.
Img_ImageInfoSetUseOptimizedRelationFlag()
set optimization relation flag .
Img_ImageInfoResetUseOptimizedRelationFlag()
reset optimization relation flag .
Img_ImageInfoResetLinearComputeRange()
Reset linear compute range flag.
Img_ImageInfoSetLinearComputeRange()
Set linear compute range flag.
Img_ImageInfoPrintMethodParams()
Prints information about the image technique currently used.
Img_ResetTrMinimizedFlag()
Resets the flag that transition relation is minimized.
Img_ReadMinimizeMethod()
Returns current method of minimizing transition relation.
Img_MinimizeTransitionRelation()
Minimizes transition relation with given constraint if it hasn't been minimized already.
Img_MinimizeImage()
Minimizes an image with given constraint.
Img_AddDontCareToImage()
Adds a dont care set to the given image.
Img_MinimizeImageArray()
Minimizes a single bdd with a set of constraint.
Img_SetPrintMinimizeStatus()
Sets the flag whether to print the status of minimizing transition relation.
Img_ReadPrintMinimizeStatus()
Reads the flag whether to print the status of minimizing transition relation.
Img_AbstractTransitionRelation()
Abstracts out given variables from transition relation.
Img_DupTransitionRelation()
Duplicates the transition relation for backup.
Img_RestoreTransitionRelation()
Restores original transition relation from saved.
Img_ApproximateTransitionRelation()
Approximate transition relation.
Img_ApproximateImage()
Approximate image.
Img_IsPartitionedTransitionRelation()
Returns 1 if partitioned transition relation is used.
Img_ResetNumberOfImageComputation()
Resets number of image/preimage computation.
Img_GetNumberOfImageComputation()
Returns number of image/preimage computation.
Img_GetPartitionedTransitionRelation()
Returns current partitioned transition relation.
Img_ReplaceIthPartitionedTransitionRelation()
Replace ith partitioned transition relation.
Img_ReplacePartitionedTransitionRelation()
Replace partitioned transition relation.
Img_ComposeIntermediateNodes()
Replace partitioned transition relation.
Img_ImageConstrainAndClusterTransitionRelation()
Constrains/adds dont-cares to the bit relations with the given constraint and creates a new transtion relation.
Img_GuidedSearchReadUnderApproxMinimizeMethod()
Returns the guided search minimize method of underapproximating the transition relation.
Img_GuidedSearchReadOverApproxMinimizeMethod()
Returns the guided search minimize method of overapproximating the transition relation.
Img_Substitute()
Substitutes variables between domain and range.
ImgMinimizeImageArrayWithCareSetArray()
Minimize array of bdds wrt a set of constraints
ImgMinimizeImageArrayWithCareSetArrayInSitu()
Minimize array of bdds wrt a set of constraints
ImgSubstitute()
Substitutes variables between domain and range.
ImgSubstituteArray()
Substitutes variables between domain and range.
ImgPrintPartialImageOptions()
Prints Partial Image options.
ImgGetPartialImageOptions()
Get partial image options.
ImgArrayBddArrayCheckValidity()
This function checks the validity of an array of array of BDD nodes.
ImgBddArrayCheckValidity()
This function checks the validity of array of BDD nodes.
ImgBddCheckValidity()
This function checks the validity of a BDD.
ImgPrintVarIdTable()
Prints the content of a table containing integers.
ImgCheckToCareSetArrayChanged()
Checks whether toCareSetArray changed.
CheckImageValidity()
Checks the validity of image

Last updated on 20050519 00h50