void abort() { }; /*@ requires ((cond != 0)) && (cond != 0); ensures ((cond != 0)) && (1); @*/ void __VERIFIER_assert(int cond) { if(!(cond)) { ERROR: {/*@ assert(0); */;abort();} } } extern _Bool __VERIFIER_nondet_bool(); int main() { int x = 0; /*@ loop invariant (((0 <= x) && (x <= 40))); @*/ while (__VERIFIER_nondet_bool() == 0) { __VERIFIER_assert(0 <= x); __VERIFIER_assert(x <= 40); if (__VERIFIER_nondet_bool() == 0) { x++; if (x > 40) x = 0; } } return 0; }