Changes between Version 13 and Version 14 of ContractReduction
- Timestamp:
- 07/21/14 11:57:24 (12 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
ContractReduction
v13 v14 42 42 * holds if any memory unit in the list may be read by `p` at some point now or in the future. 43 43 44 Default: if there is no `$depends` clause present :45 * if the body of the function is not provided, i.e., the function is a system function, the verifier will assume that execution of the function may read and/or modify any memory unit that it can reach, and decide on the partial order reduction appropriately 44 Default: if there is no `$depends` clause present, the dependency information will be obtained from Java code in the library enabler. If the library enabler does not specify anything for this function, the default rules will be used, which are sound: 45 * if the body of the function is not provided, i.e., the function is a system function, the verifier will assume that execution of the function may read and/or modify any memory unit that it can reach, and decide on the partial order reduction appropriately, else 46 46 * if the body of the function is present, the statements comprising the body may be analyzed to further restrict the reduction. 47 47 … … 49 49 50 50 Both `$atomic` and `$atom` may be used as function specifiers. They designate that any call to the function is to be treated atomically or atom-ly, respectively. 51 52 == Guards == 53 54 The following construct is used to specify a guard for a function. The function may be a system or ordinary function. It maybe used in conjunction with `$atom` or `$atomic`. 55 Grammatically, it is a contract clause, though it is not really part of the contract. 56 57 {{{ 58 $guard <bool-expr> ; 59 }}} 60 61 If missing, the default is to go the library enabler for the guard. If the library enabler does not specify a guard, it defaults to `$true`. 51 62 52 63 == Examples ==
