#pragma CIVL ACSL /*@ @ requires x >= 0; @ ensures \result == x + 1; @ */ int add(int x) { return x + 1; } /*@ requires \valid(x + (0 .. 2)); @ ensures *x == \result - 1; @ ensures \valid(x); @*/ int incr(int * x) { int ret = *x; ret = add(ret); return ret; } int main() { incr((void *)-1); return 0; }