void abort() { }; void assume_abort_if_not(int cond) { if(!cond) {abort();} } extern unsigned int __VERIFIER_nondet_uint(); /*@ requires ((\old(cond) != 0)) && (cond != 0); ensures ((\old(cond) != 0)) && (1); @*/ void __VERIFIER_assert(int cond) { if (!(cond)) { ERROR: {/*@ assert(0); */;abort();} } return; } int main() { unsigned int x = 1; unsigned int y = __VERIFIER_nondet_uint(); if (!(y > 0)) return 0; /*@ loop invariant (((x == 1) && (1 <= y))); @*/ while (x < y) { if (x < y / x) { x *= x; } else { x++; } } __VERIFIER_assert(x == y); }