void abort() { }; /*@ requires ((1 <= cond)) && (cond != 0); ensures ((1 <= cond)) && (1); @*/ void __VERIFIER_assert(int cond) { if (!(cond)) { ERROR: {/*@ assert(0); */;abort();} } return; } /*@ requires (1); ensures ((((z % 2) != 0) || ((\result % 2) == 0))); @*/ unsigned int f(unsigned int z) { return z + 2; } int main() { unsigned int x = 0; /*@ loop invariant (((x % 2) == 0)); @*/ while (x < 0x0fffffff) { x = f(x); } __VERIFIER_assert(!(x % 2)); }