| 11 | | ensures: 'Ensures' e ';' ; |
| 12 | | assumes: 'Assumes' e ';' ; |
| 13 | | assigns: 'Assigns' e (',' e)* ';' ; |
| 14 | | reads: 'Reads' e (',' e)* ';' ; |
| 15 | | depends: 'Depends' e (',' e)* ';' ; |
| | 11 | ensures: 'ensures' e ';' ; |
| | 12 | assumes: 'assumes' e ';' ; |
| | 13 | assigns: 'assigns' e (',' e)* ';' ; |
| | 14 | reads: 'reads' e (',' e)* ';' ; |
| | 15 | depends: 'depends' e (',' e)* ';' ; |
| 50 | | * `Requires e;`: precondition, `e` has `Bool` type and should hold at the entry of the function |
| 51 | | * `Terminates e;`: `e` has `Bool` type and if `e` holds then the function should terminate eventually |
| 52 | | * `Decreases e ;` or `Decreases e for r`;: decreases clause, where `e` is an expression of type `T` and `r` is an relation over `T` |
| | 50 | * `requires e;`: precondition, `e` has `Bool` type and should hold at the entry of the function |
| | 51 | * `terminates e;`: `e` has `Bool` type and if `e` holds then the function should terminate eventually |
| | 52 | * `decreases e ;` or `decreases e for r`;: decreases clause, where `e` is an expression of type `T` and `r` is an relation over `T` |
| 54 | | * `Ensures e;`: postcondition, `e` has `Bool` type and should hold when the function terminates |
| 55 | | * `Assumes e;`: assumption, `e` has `Bool` type |
| 56 | | * `Assigns e0, e1, ...;`: side-effects, `e0, e1, ...` have `Mem` type |
| | 54 | * `ensures e;`: postcondition, `e` has `Bool` type and should hold when the function terminates |
| | 55 | * `assumes e;`: assumption, `e` has `Bool` type |
| | 56 | * `assigns e0, e1, ...;`: side-effects, `e0, e1, ...` have `Mem` type |
| 58 | | * `Assigns nothing`: means that the function has no side-effects |
| 59 | | * `Allocates e0, e1, ...;`: memory units allocated by the function, `e0, e1, ...` have `Mem` type |
| 60 | | * `Frees e0, e1, ...;`: memory units deallocated by the function, `e0, e1, ...` have `Mem` type |
| 61 | | * `Guards e;`: guard of the function, where `e` has `Bool` type |
| 62 | | * `Reads e0, e1, ...;`: memory access, where `e0, e1, ...` have `Mem` type |
| 63 | | * similar to `Assigns` |
| | 58 | * `assigns nothing`: means that the function has no side-effects |
| | 59 | * `allocates e0, e1, ...;`: memory units allocated by the function, `e0, e1, ...` have `Mem` type |
| | 60 | * `frees e0, e1, ...;`: memory units deallocated by the function, `e0, e1, ...` have `Mem` type |
| | 61 | * `guards e;`: guard of the function, where `e` has `Bool` type |
| | 62 | * `reads e0, e1, ...;`: memory access, where `e0, e1, ...` have `Mem` type |
| | 63 | * similar to `assigns` |
| 65 | | * `Reads nothing`: means that the function does NOT read the memory |
| 66 | | * `Depends e0, e1, ...;`: dependency relation, where `e0, e1, ...` have `Mem` type |
| 67 | | * Note: `Guards`, `Depends` and `Reads` are CIVL extension for ACSL |
| | 65 | * `reads nothing`: means that the function does NOT read the memory |
| | 66 | * `depends e0, e1, ...;`: dependency relation, where `e0, e1, ...` have `Mem` type |
| | 67 | * Note: `guards`, `depends` and `reads` are CIVL extension for ACSL |