Changes between Version 5 and Version 6 of ContractReduction


Ignore:
Timestamp:
07/01/14 22:30:31 (12 years ago)
Author:
siegel
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • ContractReduction

    v5 v6  
    33The following contractual clause may appear in a function contract in the same places that `$ensures` or `$requires` clauses can appear:
    44{{{
    5 $depends expr ;
     5$depends e ;
    66}}}
    7 where `expr` is an expression of type function-from-`$proc`-to-boolean.  This expression will usually be specified as a lambda expression:
    8 {{{
    9 $depends $lambda($proc p) e ;
    10 }}}
    11 where `e` is a boolean expression, usually involving `p`.
     7where `e` is an expression of boolean type.   For each process `p`, the `e` can be evaluated in the context of `p`.   If `e` evaluates to `true`, then `p` must be included in an ample set containing a call to this function.
    128
    139The following boolean expressions may be used as constituents in the boolean expression `e`:
    1410
    15 - `$reach($proc p, void * obj)`
    16     returns true iff the memory unit pointed to by `obj` is reachable from process `p`.  This means there is a path from the variables on the call stack of `p` to the memory unit, following following array elements, struct members, and pointer dereferences.
    17 
    18 - `$reach_rec($proc p, void * obj)`
    19     returns true iff any of the memory units reachable from the object pointed to by obj (including the object pointed to by `obj` itself) is reachable from process `p'`.
    20 
    21 - `$write($proc p, void * obj)`
    22     returns true iff the memory unit pointed to by `obj` is not only reachable from `p` but if it is possible that `p` (or a process spawned by `p`) could write to that memory unit at some point now or in the future.
    23 
    24 - `$write_rec($proc p, void * obj)`
    25     like above but true if any of the memory units in the reachable region specified by `obj` may be written to
     11* `$reach(void * obj)`
     12 * holds iff the memory unit pointed to by `obj` is reachable from `p`.  This means there is a path from the variables on the call stack of `p` to the memory unit, following following array elements, struct members, and pointer dereferences.
     13* `$reach_rec(void * obj)`
     14 * holds iff any of the memory units reachable from the object pointed to by `obj` (including the object pointed to by `obj` itself) is reachable from`p`
     15* `$write(void * obj)`
     16 * holds iff the memory unit pointed to by `obj` is not only reachable from `p` but if it is possible that `p` (or a process spawned by `p`) could write to that memory unit at some point now or in the future.
     17* `$write_rec(void * obj)`
     18 * like above but true if any of the memory units in the reachable region specified by `obj` may be written to
    2619
    2720