void abort() { }; /*@ requires ((cond != 0)) && (cond != 0); ensures ((cond != 0)) && (1); @*/ void __VERIFIER_assert(int cond) { if(!(cond)) { ERROR: {/*@ assert(0); */;abort();} } } int main() { int i = 0; /*@ loop invariant (((0 < i) || (i == 0))); @*/ while (i < 4) { int j = 0; /*@ loop invariant (((((((j <= 4) && (2 <= j)) && (j == ((long long) i * 2))) || ((((((long long) i * 2) <= ((long long) j + 6)) && (j <= 4)) && (2 <= j)) && (((long long) j + 2) <= ((long long) i * 2)))) || (((j == 0) && (1 <= i)) && (i <= 3))) || ((j == 0) && (i == 0)))); @*/ while (j < 3) { i++; j += 2; __VERIFIER_assert(0 <= j); __VERIFIER_assert(j <= 2 * i); __VERIFIER_assert(2 * i <= j + 6); __VERIFIER_assert(j <= 4); } __VERIFIER_assert(0 <= j); __VERIFIER_assert(j <= 2 * i); __VERIFIER_assert(2 * i <= j + 6); __VERIFIER_assert(j <= 4); i = i - j / 2 + 1; } return 0; }