|  | 
| 
 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. 
 |