// verifast_options{disable_overflow_check target:ILP32} extern void abort(void); //@ requires true; //@ ensures true; extern int __VERIFIER_nondet_int(); //@ requires true; //@ ensures true; extern bool __VERIFIER_nondet_bool(); //@ requires true; //@ ensures true; extern char __VERIFIER_nondet_char(); //@ requires true; //@ ensures true; extern double __VERIFIER_nondet_double(); //@ requires true; //@ ensures true; extern float __VERIFIER_nondet_float(); //@ requires true; //@ ensures true; extern unsigned long __VERIFIER_nondet_ulong(); //@ requires true; //@ ensures true; extern unsigned long long __VERIFIER_nondet_ulonglong(); //@ requires true; //@ ensures true; extern unsigned int __VERIFIER_nondet_uint(); //@ requires true; //@ ensures true; void reach_error() //@ requires false; //@ ensures true; {} void __VERIFIER_assert(int cond) //@ requires (cond != 0); //@ ensures (cond != 0); { if (!(cond)) { ERROR: {reach_error();abort();} } return; } unsigned int __VERIFIER_nondet_uint(); _Bool __VERIFIER_nondet_bool(); int main() //@ requires module(trex03_2_abstracted__verifast_instrumented, true); //@ ensures junk(); { //@ open_module(); unsigned int x1=__VERIFIER_nondet_uint(), x2=__VERIFIER_nondet_uint(), x3=__VERIFIER_nondet_uint(); unsigned int d1=1, d2=1, d3=1; bool c1=__VERIFIER_nondet_bool(), c2=__VERIFIER_nondet_bool(); // START HAVOCABSTRACTION if ((x3 > (0)) & ((x2 > (0)) & (x1 > (0)))) { x3 = __VERIFIER_nondet_uint(); x2 = __VERIFIER_nondet_uint(); x1 = __VERIFIER_nondet_uint(); c2 = __VERIFIER_nondet_bool(); c1 = __VERIFIER_nondet_bool(); } if ((x3 > (0)) & ((x2 > (0)) & (x1 > (0)))) abort(); // END HAVOCABSTRACTION __VERIFIER_assert(x1==0 || x2==0 || x3==0); return 0; }