void abort() { }; extern int __VERIFIER_nondet_int(); /*@ requires ((0 != \old(cond))) && (cond != 0); ensures ((0 != \old(cond))) && (1); @*/ void __VERIFIER_assert(int cond) { if (!(cond)) { ERROR: {/*@ assert(0); */;abort();} } return; } int main() { unsigned int x = 5; /*@ loop invariant ((5 == (5 & x))); @*/ while (__VERIFIER_nondet_int()) { x += 8; } __VERIFIER_assert((x & 5) == 5); return 0; }