|
Defines |
#define | SIZEOF_DBMLIST(DIM) (sizeof(DBMList_t) + (DIM)*(DIM)*sizeof(raw_t)) |
#define | dbmf_CHECKDIM(FACTORY, DIM) |
| Assertion to check that requested DBMs have their dim <= max dim of the factory.
|
#define | dbmf_checkFactory(F) assert(dbmf_internCheckFactory(F)) |
| Check a factory -- for debugging.
|
#define | dbmf_allocate(F) dbmf_internAllocate(F) |
#define | dbmf_deallocate(F, D) dbmf_internDeallocate(F,D) |
#define | dbmf_deallocateList(F, L) dbmf_internDeallocateList(F,L) |
#define | APPLY_TO_FEDERATION(FED, OPERATION) |
| Apply the same operation to all DBMs of a federation.
|
Typedefs |
typedef dbmlist_s | DBMList_t |
| DBM Federation type: such federations have one dimension and several DBMs of the same dimension.
|
Functions |
static void | dbmf_initFactory (DBMAllocator_t *factory, cindex_t dim) |
| Initialize a factory.
|
BOOL | dbmf_internCheckFactory (const DBMAllocator_t *factory) |
DBMList_t * | dbmf_internAllocate (DBMAllocator_t *factory) |
| Allocate DBMs with the factory.
|
static void | dbmf_internDeallocate (DBMAllocator_t *factory, DBMList_t *dbm) |
| Give back ONE DBM to its factory.
|
void | dbmf_internDeallocateList (DBMAllocator_t *factory, DBMList_t *dbmList) |
| Give back a LIST of DBMs to its factory.
|
static void | dbmf_deallocateFederation (DBMAllocator_t *factory, DBMFederation_t *fed) |
| Same as deallocateList but for a federation.
|
void | dbmf_clearFactory (DBMAllocator_t *factory) |
| Clear a factory.
|
static void | dbmf_initFederation (DBMFederation_t *fed, cindex_t dim) |
| Initialize a federation.
|
static void | dbmf_addDBM (DBMList_t *dbm, DBMFederation_t *fed) |
| Add a DBM in the federation (at the beginning of the list).
|
void | dbmf_cleanUp (DBMFederation_t *fed, DBMAllocator_t *factory) |
| Clean up the federation from empty DBMs.
|
static void | dbmf_appendList (DBMList_t *dbmList, DBMList_t *endList) |
| Append a list to another.
|
BOOL | dbmf_hasDBM (const DBMList_t *fed, const raw_t *dbm, cindex_t dim) |
| Test if a federation has a particular DBM.
|
static BOOL | dbmf_federationHasDBM (const DBMFederation_t fed, const raw_t *dbm) |
| Wrapper for DBMFederation_t.
|
size_t | dbmf_getSize (const DBMList_t *dbmList) |
| Size of a federation.
|
int | dbmf_copy (DBMFederation_t *dst, const DBMFederation_t src, DBMAllocator_t *factory) |
| Copy a federation.
|
DBMFederation_t | dbmf_copyDBM (const raw_t *dbm, cindex_t dim, DBMAllocator_t *factory) |
| Copy a DBM to a federation.
|
DBMList_t * | dbmf_copyDBM2List (const raw_t *dbm, cindex_t dim, DBMAllocator_t *factory) |
| Copy a DBM to a DBMList_t.
|
DBMList_t * | dbmf_copyDBMList (const DBMList_t *dbmList, cindex_t dim, BOOL *valid, DBMAllocator_t *factory) |
| Copy a list of DBMs.
|
static DBMFederation_t | dbmf_copyFederation (const DBMFederation_t fed, BOOL *valid, DBMAllocator_t *factory) |
| Similar to dbmf_copyDBMList: wrapper for federations.
|
static int | dbmf_addCopy (DBMFederation_t *fed, const DBMList_t *dbmList, DBMAllocator_t *factory) |
| Copy a list of DBMs and append the result to a federation.
|
int | dbmf_addZero (DBMFederation_t *fed, DBMAllocator_t *factory) |
| Add to the federation 1 DBM that contains only 0.
|
int | dbmf_addInit (DBMFederation_t *fed, DBMAllocator_t *factory) |
| Add to the federation 1 DBM that is not constrained (all clocks >= 0, that's all).
|
BOOL | dbmf_union (DBMFederation_t *fed, DBMList_t *dbmList, DBMAllocator_t *factory) |
| Union of a list of DBMs and a federation: add DBMs to the federation.
|
BOOL | dbmf_unionWithCopy (DBMFederation_t *fed, const DBMList_t *dbmList, DBMAllocator_t *factory, BOOL *valid) |
| Union of a list of DBMs and a federation: add DBMs to the federation.
|
void | dbmf_convexUnion (raw_t *dbm, cindex_t dim, const DBMList_t *dbmList) |
| Computes the convex hull union between one DBM and a list of DBMs: dbm = dbm + list of dbm.
|
static void | dbmf_convexUnionWithFederation (raw_t *dbm, const DBMFederation_t fed) |
| Computes the convex hull union between one DBM and a federation: dbm = dbm + federation.
|
void | dbmf_convexUnionWithSelf (DBMFederation_t *fed, DBMAllocator_t *factory) |
| Computes the convex hull union from all the DBMs of a federation.
|
DBMList_t * | dbmf_intersection (const raw_t *dbm, cindex_t dim, const DBMList_t *dbmList, BOOL *valid, DBMAllocator_t *factory) |
| Computes the intersection between one DBM and a list of DBMs = dbm intersec list of dbm.
|
DBMList_t * | dbmf_intersectionWithFederation (const DBMList_t *fed1, const DBMList_t *fed2, cindex_t dim, BOOL *valid, DBMAllocator_t *factory) |
| Computes the intersection between 2 federations.
|
BOOL | dbmf_intersectsDBM (DBMFederation_t *fed, const raw_t *dbm, DBMAllocator_t *factory) |
| Computes the intersection between one DBM and a federation.
|
int | dbmf_intersectsFederation (DBMFederation_t *fed1, const DBMList_t *fed2, DBMAllocator_t *factory) |
| Computes the intersection between one federation and a federation.
|
BOOL | dbmf_DBMsHaveIntersection (const DBMList_t *dbmList, const raw_t *dbm, cindex_t dim) |
| Test if a list of DBMs and a DBM have an intersection.
|
static BOOL | dbmf_federationHasIntersection (const DBMFederation_t fed, const raw_t *dbm) |
| Test if a federation and a DBM have an intersection.
|
static BOOL | dbmf_federationsHaveIntersection (const DBMFederation_t fed1, const DBMFederation_t fed2) |
| Test if 2 federations have an intersection.
|
void | dbmf_constrainN (DBMFederation_t *fed, const constraint_t *constraints, size_t n, DBMAllocator_t *factory) |
| Constrain a federation with several constraints.
|
void | dbmf_constrainIndexedN (DBMFederation_t *fed, const cindex_t *indexTable, const constraint_t *constraints, size_t n, DBMAllocator_t *factory) |
| Constrain a federation with several constraints using an index table to translate constraint indices to DBM indices.
|
void | dbmf_constrain1 (DBMFederation_t *fed, cindex_t i, cindex_t j, raw_t constraint, DBMAllocator_t *factory) |
| Constrain a federation with one constraint constraint1 once is cheaper than constrainN with 1 constraintN with n > 1 is cheaper than constrain1 n times.
|
void | dbmf_up (DBMFederation_t fed) |
| Up/delay operation (strongest post-condition).
|
void | dbmf_down (DBMFederation_t fed) |
| Down operation (weakest pre-condition).
|
void | dbmf_reduce (DBMFederation_t *fed, DBMAllocator_t *factory) |
| Reduce a federation: remove DBMs that are included in other DBMs of the same federation.
|
int | dbmf_expensiveReduce (DBMFederation_t *fed, DBMAllocator_t *factory) |
| Reduce a federation: remove DBMs that are redundant.
|
void | dbmf_freeClock (DBMFederation_t fed, cindex_t clock) |
| Free operation: remove all constraints for a given clock.
|
void | dbmf_updateValue (DBMFederation_t fed, cindex_t clock, int32_t value) |
| Update a clock value: x := value.
|
void | dbmf_updateClock (DBMFederation_t fed, cindex_t x, cindex_t y) |
| Copy a clock: x := y.
|
void | dbmf_updateIncrement (DBMFederation_t fed, cindex_t clock, int32_t value) |
| Increment a clock: x += value.
|
void | dbmf_update (DBMFederation_t fed, cindex_t x, cindex_t y, int32_t value) |
| General update: x := x + value.
|
BOOL | dbmf_satisfies (const DBMFederation_t fed, cindex_t i, cindex_t j, raw_t constraint) |
| Check if a federation satisfies a constraint.
|
static BOOL | dbmf_isEmpty (const DBMFederation_t fed) |
| Test for emptiness.
|
BOOL | dbmf_isUnbounded (const DBMFederation_t fed) |
| Test if a federation is unbounded, ie, if one of its DBM is unbounded.
|
relation_t | dbmf_partialRelation (const raw_t *dbm, const DBMFederation_t fed) |
| Partial relation between one DBM and a federation: apply the relation to all the DBMs of a federation.
|
relation_t | dbmf_relation (const raw_t *dbm, const DBMFederation_t fed, BOOL *valid, DBMAllocator_t *factory) |
| Relation between one DBM and a federation.
|
BOOL | dbmf_removePartialIncluded (DBMFederation_t *fed, const DBMList_t *arg, DBMAllocator_t *factory) |
| Remove DBMs of fed that are (partially) included in arg.
|
BOOL | dbmf_isIncludedIn (const raw_t *dbm, const DBMList_t *dbmList, cindex_t dim) |
| Test if a DBM is included in a list of DBMs.
|
static BOOL | dbmf_isReallyIncludedIn (const raw_t *dbm, const DBMFederation_t fed, BOOL *valid, DBMAllocator_t *factory) |
| Test if a DBM is really included in a federation semantically.
|
BOOL | dbmf_areDBMsIncludedIn (const DBMList_t *l1, const DBMList_t *l2, cindex_t dim) |
| Test if all the DBMs of l1 are included in some DBMs of l2.
|
BOOL | dbmf_areDBMsReallyIncludedIn (const DBMList_t *l1, const DBMFederation_t l2, BOOL *valid, DBMAllocator_t *factory) |
| Test if all the DBMs of l1 are included semantically in l2.
|
void | dbmf_stretchUp (DBMFederation_t fed) |
| Stretch-up operation for approximation.
|
void | dbmf_stretchDown (DBMFederation_t fed, cindex_t clock) |
| Stretch-down operation for approximation.
|
void | dbmf_microDelay (DBMFederation_t fed) |
| Smallest possible delay.
|
BOOL | dbmf_areEqual (const DBMFederation_t fed1, const DBMFederation_t fed2, BOOL *valid, DBMAllocator_t *factory) |
| Test semantic equality.
|
BOOL | dbmf_isPointIncluded (const int32_t *pt, const DBMFederation_t fed) |
| Check if a discrete point is included in a federation.
|
BOOL | dbmf_isRealPointIncluded (const double *pt, const DBMFederation_t fed) |
| Check if a real point is included in a federation.
|
DBMList_t * | dbmf_substractFederationFromDBM (const raw_t *dbm, const DBMFederation_t fed, BOOL *valid, DBMAllocator_t *factory) |
| Substraction operation: computes C = A - B.
|
DBMList_t * | dbmf_substractDBMFromDBM (const raw_t *dbm1, const raw_t *dbm2, cindex_t dim, BOOL *valid, DBMAllocator_t *factory) |
| Substraction operation: computes C = A - B.
|
DBMFederation_t | dbmf_substractDBMFromFederation (const DBMFederation_t fed, const raw_t *dbm, BOOL *valid, DBMAllocator_t *factory) |
| Substraction operation: computes C = A - B.
|
DBMFederation_t | dbmf_substractFederationFromFederation (const DBMFederation_t fed1, const DBMFederation_t fed2, BOOL *valid, DBMAllocator_t *factory) |
| Substraction operation: computes C = A - B.
|
int | dbmf_substractDBM (DBMFederation_t *fed, const raw_t *dbm, DBMAllocator_t *factory) |
| Substraction operation: computes A = A - B.
|
int | dbmf_substractFederation (DBMFederation_t *fed1, const DBMList_t *fed2, DBMAllocator_t *factory) |
| Substraction operation: computes A = A - B.
|
int | dbmf_predt (DBMFederation_t *fed, DBMFederation_t *bad, DBMAllocator_t *factory) |
| Operation similar to down but constrained: predecessors of fed avoiding the states that could reach bad.
|
void | dbmf_shrinkExpand (DBMFederation_t *fed, const uint32_t *bitSrc, const uint32_t *bitDst, size_t bitSize, cindex_t *table, DBMAllocator_t *factory) |
| Similarly, on federations.
|
void | dbmf_extrapolateMaxBounds (DBMFederation_t fed, const int32_t *max) |
| Classical extrapolation based on maximal bounds, formerly called k-normalization.
|
void | dbmf_diagonalExtrapolateMaxBounds (DBMFederation_t fed, const int32_t *max) |
| Diagonal extrapolation based on maximal bounds.
|
void | dbmf_extrapolateLUBounds (DBMFederation_t fed, const int32_t *lower, const int32_t *upper) |
| Extrapolation based on lower-upper bounds.
|
void | dbmf_diagonalExtrapolateLUBounds (DBMFederation_t fed, const int32_t *lower, const int32_t *upper) |
| Diagonal extrapolation based on lower-upper bounds.
|
void | dbm_printFederation (FILE *out, const DBMList_t *dbmList, cindex_t dim) |
| Pretty print of a federation.
|
std::ostream & | dbm_cppPrintFederation (std::ostream &out, const DBMList_t *dbmList, cindex_t dim) |
| Pretty print of a DBM federation.
|