// S : tags sym inf c big $TAGS // S : expect --result valid // S : cc -o test.bc $CC_OPT $file // S : verify --symbolic --solver $solver --sequential -o nofail:malloc $V_OPT test.bc #include extern unsigned int __VERIFIER_nondet_uint(void); extern bool __VERIFIER_nondet_bool(void); extern void __VERIFIER_assert(int); int main() { 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(); while(x1>0 && x2>0 && x3>0) { if (c1) x1=x1-d1; else if (c2) x2=x2-d2; else x3=x3-d3; c1=__VERIFIER_nondet_bool(); c2=__VERIFIER_nondet_bool(); } __VERIFIER_assert(x1==0 || x2==0 || x3==0); return 0; }