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 && x >= 0)) return 0; /*@ loop invariant (((0 <= y) && (x <= y))); @*/ while (x > 0) { x--; y--; } __VERIFIER_assert(y>=0); return 0; }