// verifast_options{disable_overflow_check target:ILP32} extern void abort(void); //@ requires true; //@ ensures true; void reach_error() //@ requires false; //@ ensures true; {}void assume_abort_if_not(int cond) //@ requires true; //@ ensures true; { if(!cond) {abort();} } void __VERIFIER_assert(int cond) //@ requires (cond != 0); //@ ensures (cond != 0); { if (!(cond)) { ERROR: {reach_error();abort();} } return; } int __VERIFIER_nondet_int(); //@ requires true; //@ ensures true; int main() //@ requires module(jm2006__verifast_instrumented, true); //@ ensures junk(); { //@ open_module(); int i, j; i = __VERIFIER_nondet_int(); j = __VERIFIER_nondet_int(); if (!(i >= 0 && j >= 0)) return 0; int x = i; int y = j; while(x != 0) //@ invariant ((i + y) == (j + x)); { x--; y--; } if (i == j) { __VERIFIER_assert(y == 0); } return 0; }