Changes between Version 13 and Version 14 of ContractReduction


Ignore:
Timestamp:
07/21/14 11:57:24 (12 years ago)
Author:
siegel
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • ContractReduction

    v13 v14  
    4242 * holds if any memory unit in the list may be read by `p` at some point now or in the future.
    4343
    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
     44Default: 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
    4646* if the body of the function is present, the statements comprising the body may be analyzed to further restrict the reduction.
    4747
     
    4949
    5050Both `$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
     54The 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`.
     55Grammatically, it is a contract clause, though it is not really part of the contract. 
     56
     57{{{
     58$guard <bool-expr> ;
     59}}}
     60
     61If 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`.
    5162
    5263==  Examples ==