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 (((i <= 4) && (0 <= i))); @*/ while (i < 4) { int j = 0; /*@ loop invariant (((((j == 0) && (0 <= i)) && (i <= 3)) || ((((i <= ((long long) j + 3)) && (1 <= j)) && (j <= i)) && (j <= 4)))); @*/ while (j < 4) { i++; j++; __VERIFIER_assert(0 <= j); __VERIFIER_assert(j <= i); __VERIFIER_assert(i <= j + 3); __VERIFIER_assert(j <= 4); } __VERIFIER_assert(0 <= j); __VERIFIER_assert(j <= i); __VERIFIER_assert(i <= j + 3); __VERIFIER_assert(j <= 4); i = i - j + 1; } return 0; }