// 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;
}