// verifast_options{disable_overflow_check target:ILP32} int SIZE = 50000001; int __VERIFIER_nondet_int(); //@ requires integer(&SIZE, ?veri_req_SIZE) &*& true; //@ ensures integer(&SIZE, ?veri_ens_SIZE) &*& true; extern void abort(void); //@ requires integer(&SIZE, ?veri_req_SIZE) &*& true; //@ ensures integer(&SIZE, ?veri_ens_SIZE) &*& true; void reach_error() //@ requires false; //@ ensures true; {}void assume_abort_if_not(int cond) //@ requires integer(&SIZE, ?veri_req_SIZE) &*& true; //@ ensures integer(&SIZE, ?veri_ens_SIZE) &*& true; { if(!cond) {abort();} } void __VERIFIER_assert(int cond) //@ requires integer(&SIZE, ?veri_req_SIZE) &*& (1 <= cond); //@ ensures integer(&SIZE, ?veri_ens_SIZE) &*& (1 <= cond); { if (!(cond)) { ERROR: {reach_error();abort();} } return; } int __VERIFIER_nondet_int(); int main() //@ requires module(loopv2__verifast_instrumented, true); //@ ensures junk(); { //@ open_module(); int n,i,j,k; n = __VERIFIER_nondet_int(); if (!(n <= SIZE)) return 0; i = 0; j=0; while(i<n) //@ invariant integer(&SIZE, ?veri_inv_SIZE) &*& (0 == (i % 2)); { i = i + 4; j = i +2; } k =i; while( (j%2) == 0) //@ invariant integer(&SIZE, ?veri_inv_SIZE) &*& ((k % 2) == 0); { j-=4; k -=4; } __VERIFIER_assert( (k%2) == 0 ); return 0; }