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