void abort() { }; void assume_abort_if_not(int cond) { if(!cond) {abort();} } /*@ requires ((\old(cond) != 0)) && (cond != 0); ensures ((\old(cond) != 0)) && (1); @*/ void __VERIFIER_assert(int cond) { if (!(cond)) { ERROR: {/*@ assert(0); */;abort();} } return; } int __VERIFIER_nondet_int(); int main() { int i,j,k; i = 1; j = 1; k = __VERIFIER_nondet_int(); if (!(0 <= k && k <= 1)) return 0; /*@ loop invariant (((((2 <= i) && (((long long) i + k) <= 2)) && (1 <= ((long long) i + k))) || (((0 <= k) && (k <= 1)) && (i == 1)))); @*/ while (i < 1000000) { i = i + 1; j = j + k; k = k - 1; __VERIFIER_assert(1 <= i + k && i + k <= 2 && i >= 1); } return 0; }