void abort() { }; extern int __VERIFIER_nondet_int(); extern _Bool __VERIFIER_nondet_bool(); /*@ requires ((\old(cond) != 0)) && (cond != 0); ensures ((\old(cond) != 0)) && (1); @*/ void __VERIFIER_assert(int cond) { if (!cond) { /*@ assert(0); */; } } int main() { int x = __VERIFIER_nondet_int(); int y = __VERIFIER_nondet_int(); if (!(x == y && y >=0)) return 0; /*@ loop invariant (((0 <= x) && (y == x))); @*/ while (x!=0) { x--; y--; if (x<0 || y<0) break; } __VERIFIER_assert(y==0); return 0; }