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, j; i = __VERIFIER_nondet_int(); j = __VERIFIER_nondet_int(); if (!(i >= 0 && i <= 1000000)) return 0; if (!(j >= 0)) return 0; int x = i; int y = j; int z = 0; /*@ loop invariant (((((long long) i + z) + y) == ((long long) j + x))); @*/ while(x != 0) { x --; y -= 2; z ++; } if (i == j) { __VERIFIER_assert(y == -z); } return 0; }