void Img_AbstractTransitionRelation( Img_ImageInfo_t * imageInfo, array_t * abstractVars, mdd_t * abstractCube, Img_DirectionType directionType )
mdd_t * Img_AddDontCareToImage( mdd_t * image, mdd_t * constraint, Img_MinimizeType method )
mdd_t * Img_ApproximateImage( mdd_manager * mgr, mdd_t * image, bdd_approx_dir_t approxDir, bdd_approx_type_t approxMethod, int approxThreshold, double approxQuality, double approxQualityBias, mdd_t * bias )
int Img_ApproximateTransitionRelation( Img_ImageInfo_t * imageInfo, bdd_approx_dir_t approxDir, bdd_approx_type_t approxMethod, int approxThreshold, double approxQuality, double approxQualityBias, Img_DirectionType directionType, mdd_t * bias )
void Img_ClusterRelationArray( mdd_manager * mddManager, Img_MethodType method, Img_DirectionType direction, array_t * relationArray, array_t * domainVarMddIdArray, array_t * rangeVarMddIdArray, array_t * quantifyVarMddIdArray, array_t ** clusteredRelationArray, array_t ** arraySmoothVarBddArray, array_t ** smoothVarCubeArray, boolean freeRelationArray )
mdd_t * Img_ComposeIntermediateNodes( graph_t * partition, mdd_t * node, array_t * psVars, array_t * nsVars, array_t * inputVars )
void Img_DupTransitionRelation( Img_ImageInfo_t * imageInfo, Img_DirectionType directionType )
void
Img_End(
)
Img_Init
void Img_ForwardImageInfoConjoinWithWinningStrategy( Img_ImageInfo_t * imageInfo, mdd_t * winningStrategy )
void Img_ForwardImageInfoRecoverFromWinningStrategy( Img_ImageInfo_t * imageInfo )
int Img_GetNumberOfImageComputation( Img_DirectionType imgDir )
array_t * Img_GetPartitionedTransitionRelation( Img_ImageInfo_t * imageInfo, Img_DirectionType directionType )
Img_MinimizeType
Img_GuidedSearchReadOverApproxMinimizeMethod(
)
Img_MinimizeType
Img_GuidedSearchReadUnderApproxMinimizeMethod(
)
void Img_ImageAllowPartialImage( Img_ImageInfo_t * info, boolean value )
Img_ImageWasPartialImage
void Img_ImageConstrainAndClusterTransitionRelation( Img_ImageInfo_t * imageInfo, Img_DirectionType direction, mdd_t * constrain, Img_MinimizeType minimizeMethod, boolean underApprox, boolean cleanUp, boolean forceReorder, int printStatus )
Img_GuidedSearchReadUnderApproxMinimizeMethod
Img_GuidedSearchReadOverApproxMinimizeMethod
mdd_t * Img_ImageGetUnreachableStates( Img_ImageInfo_t * imageInfo )
mdd_t * Img_ImageInfoComputeBwdWithDomainVars( Img_ImageInfo_t * imageInfo, mdd_t * fromLowerBound, mdd_t * fromUpperBound, mdd_t * toCareSet )
Img_ImageInfoComputeBwd
mdd_t * Img_ImageInfoComputeBwd( Img_ImageInfo_t * imageInfo, mdd_t * fromLowerBound, mdd_t * fromUpperBound, array_t * toCareSetArray )
Img_ImageInfoInitialize
Img_ImageInfoComputeFwd
Img_ImageInfoFree
Img_ImageInfoComputeBwdWithDomainVars
mdd_t * Img_ImageInfoComputeEXWithDomainVars( Img_ImageInfo_t * imageInfo, mdd_t * fromLowerBound, mdd_t * fromUpperBound, array_t * toCareSetArray )
Img_ImageInfoComputeBwd
mdd_t * Img_ImageInfoComputeFwdWithDomainVars( Img_ImageInfo_t * imageInfo, mdd_t * fromLowerBound, mdd_t * fromUpperBound, mdd_t * toCareSet )
Img_ImageInfoComputeFwd
mdd_t * Img_ImageInfoComputeFwd( Img_ImageInfo_t * imageInfo, mdd_t * fromLowerBound, mdd_t * fromUpperBound, array_t * toCareSetArray )
Img_ImageInfoInitialize
Img_ImageInfoComputeBwd
Img_ImageInfoFree
Img_ImageInfoComputeFwdWithDomainVars
mdd_t * Img_ImageInfoComputeImageWithDomainVars( Img_ImageInfo_t * imageInfo, mdd_t * fromLowerBound, mdd_t * fromUpperBound, array_t * toCareSetArray )
Img_ImageInfoComputeFwd
mdd_t * Img_ImageInfoComputePreImageWithDomainVars( Img_ImageInfo_t * imageInfo, mdd_t * fromLowerBound, mdd_t * fromUpperBound, array_t * toCareSetArray )
Img_ImageInfoComputeBwd
void Img_ImageInfoFreeFAFW( Img_ImageInfo_t * imageInfo )
Img_ImageInfoInitialize
Img_ImageInfoComputeFwd
Img_ImageInfoComputeBwd
void Img_ImageInfoFree( Img_ImageInfo_t * imageInfo )
Img_ImageInfoInitialize
Img_ImageInfoComputeFwd
Img_ImageInfoComputeBwd
Img_ImageInfo_t * Img_ImageInfoInitialize( Img_ImageInfo_t * imageInfo, graph_t * mddNetwork, array_t * roots, array_t * domainVars, array_t * rangeVars, array_t * quantifyVars, mdd_t * domainCube, mdd_t * rangeCube, mdd_t * quantifyCube, Ntk_Network_t * network, Img_MethodType methodType, Img_DirectionType directionType, int FAFWFlag, mdd_t * Winning )
MddNetwork is a graph representing the functions to be used. Each vertex of the graph contains a multi-valued function (MVF) and an MDD id. The MVF gives the function of the vertex in terms of the MDD ids of the immediate fanins of the vertex.
Roots is an array of char* specifying the vertices of the graph which represent those functions for which we want to compute the image (it must not be empty); for example, for an FSM, roots represent the next state functions. DomainVars is an array of mddIds; for an FSM, these are the present state variables. Subsets of the domain are defined over these variables. RangeVars is an array of mddIds over which the range is expressed; for an FSM, these are the next state variables. This array must be in one-to-one correspondence with the array of roots. QuantifyVars is an array of mddIds, representing variables to be quantified from results of backward images; for an FSM, these are the input variables. This array may be empty. No copies are made of any of the input parameters, and thus it is the application's responsibility to free this data *after* the returned Img_ImageInfo_t is freed.
Img_ImageInfoComputeFwd
Img_ImageInfoComputeBwd
Img_ImageInfoFree
char * Img_ImageInfoObtainMethodTypeAsString( Img_ImageInfo_t * imageInfo )
Img_ImageInfoInitialize
Img_MethodType Img_ImageInfoObtainMethodType( Img_ImageInfo_t * imageInfo )
Img_ImageInfoInitialize
Img_OptimizeType Img_ImageInfoObtainOptimizeType( Img_ImageInfo_t * imageInfo )
Img_ImageInfoInitialize
void Img_ImageInfoPrintMethodParams( Img_ImageInfo_t * imageInfo, FILE * fp )
void Img_ImageInfoResetLinearComputeRange( Img_ImageInfo_t * imageInfo )
Img_ImageInfoInitialize
void Img_ImageInfoResetUseOptimizedRelationFlag( Img_ImageInfo_t * imageInfo )
Img_ImageInfoInitialize
void Img_ImageInfoSetLinearComputeRange( Img_ImageInfo_t * imageInfo )
Img_ImageInfoInitialize
void Img_ImageInfoSetUseOptimizedRelationFlag( Img_ImageInfo_t * imageInfo )
Img_ImageInfoInitialize
void Img_ImageInfoUpdateVariables( Img_ImageInfo_t * imageInfo, graph_t * mddNetwork, array_t * domainVars, array_t * quantifyVars, mdd_t * domainCube, mdd_t * quantifyCube )
Img_ImageInfoInitialize
void
Img_ImagePrintPartialImageOptions(
)
boolean Img_ImageWasPartial( Img_ImageInfo_t * info )
Img_ImageAllowPartialImage
void
Img_Init(
)
Img_End
int Img_IsPartitionedTransitionRelation( Img_ImageInfo_t * imageInfo )
int Img_IsQuantifyArraySame( Img_ImageInfo_t * imageInfo, array_t * quantifyArray )
Img_ImageInfoInitialize
int Img_IsQuantifyCubeSame( Img_ImageInfo_t * imageInfo, mdd_t * quantifyCube )
Img_ImageInfoInitialize
int Img_IsTransitionRelationOptimized( Img_ImageInfo_t * imageInfo )
mdd_t * Img_MinimizeImageArray( mdd_t * image, array_t * constraintArray, Img_MinimizeType method, boolean underapprox )
mdd_t * Img_MinimizeImage( mdd_t * image, mdd_t * constraint, Img_MinimizeType method, boolean underapprox )
If underapprox is 1, the the bdds are underapproximated. If it is 0, they are overapproximated, and the minimizeMethod has to be either ornot or squeeze.
void Img_MinimizeTransitionRelation( Img_ImageInfo_t * imageInfo, array_t * constrainArray, Img_MinimizeType minimizeMethod, Img_DirectionType directionType, boolean reorderIwls95Clusters )
The boolean reorderIwls95Clusters is only relevant to the iwls95 image method. It causes the clusters to be ordered again after minimization.
The conjuncts have to be in terms of present-state variables or inputs. Next-state variables are not allowed.
For the hybrid and tfm methods, for image, we can only minimize wrt a set that includes any possible argument. For preimage, the result is only correct for as far as it lies within the set that the TR is minimized with. That means that reachability info can be usefully applied here.
For the other methods, we can also minimize wrt different sets. The edges in the TR that are outgoing from states not in this set may then get removed.
mdd_t* Img_MultiwayLinearAndSmooth( mdd_manager * mddManager, array_t * relationArray, array_t * smoothVarMddIdArray, array_t * introducedVarMddIdArray, Img_MethodType method, Img_DirectionType direction )
void
Img_PrintHybridOptions(
)
void
Img_PrintMlpOptions(
)
void Img_PrintPartitionedTransitionRelation( mdd_manager * mddManager, Img_ImageInfo_t * imageInfo, Img_DirectionType directionType )
void
Img_PrintTfmOptions(
)
Img_MinimizeType
Img_ReadMinimizeMethod(
)
int Img_ReadPrintMinimizeStatus( Img_ImageInfo_t * imageInfo )
void Img_ReorderPartitionedTransitionRelation( Img_ImageInfo_t * imageInfo, Img_DirectionType directionType )
void Img_ReplaceIthPartitionedTransitionRelation( Img_ImageInfo_t * imageInfo, int i, mdd_t * relation, Img_DirectionType directionType )
void Img_ReplacePartitionedTransitionRelation( Img_ImageInfo_t * imageInfo, array_t * relationArray, Img_DirectionType directionType )
void Img_ResetNumberOfImageComputation( Img_DirectionType imgDir )
void Img_ResetTrMinimizedFlag( Img_ImageInfo_t * imageInfo, Img_DirectionType directionType )
void Img_RestoreTransitionRelation( Img_ImageInfo_t * imageInfo, Img_DirectionType directionType )
void Img_SetPrintMinimizeStatus( Img_ImageInfo_t * imageInfo, int status )
mdd_t * Img_Substitute( Img_ImageInfo_t * imageInfo, mdd_t * f, Img_SubstituteDir dir )
int Img_TfmCheckGlobalCache( int preFlag )
void Img_TfmFlushCache( Img_ImageInfo_t * imageInfo, int preFlag )
int Img_TfmGetCacheStatistics( Img_ImageInfo_t * imageInfo, int preFlag, double * inserts, double * lookups, double * hits, double * entries, int * nSlots, int * maxChainLength )
int Img_TfmGetRecursionStatistics( Img_ImageInfo_t * imageInfo, int preFlag, int * nRecurs, int * nLeaves, int * nTurns, float * averageDepth, int * maxDepth, int * nDecomps, int * topDecomp, int * maxDecomp, float * averageDecomp )
void Img_TfmPrintCacheStatistics( Img_ImageInfo_t * imageInfo, int preFlag )
void Img_TfmPrintRecursionStatistics( Img_ImageInfo_t * imageInfo, int preFlag )
void Img_TfmPrintStatistics( Img_ImageInfo_t * imageInfo, Img_DirectionType dir )
void Img_UpdateQuantificationSchedule( Img_ImageInfo_t * imageInfo, Img_DirectionType directionType )
Img_MethodType
Img_UserSpecifiedMethod(
)
Img_ImageInfoIninitialize