void abort() { };
                                                                       
                                                  
                                                                             
                                                                   
                                                  
                                                                             
                                                                              
                                                                             

                        
                                                                                                                                                               
/*@ 
    requires ((cond != 0)) && (cond != 0);
    ensures ((cond != 0)) && (1);
@*/
void __VERIFIER_assert(int cond) { if(!(cond)) { ERROR: {/*@ assert(0); */;abort();} } }
int main() {
  int i = 0;
/*@
loop invariant (((i <= 4) && (0 <= i)));
@*/
  while (i < 4) {
    int j = 0;
/*@
loop invariant (((((j == 0) && (0 <= i)) && (i <= 3)) || ((((i <= ((long long) j + 3)) && (1 <= j)) && (j <= i)) && (j <= 4))));
@*/
    while (j < 4) {
      i++;
      j++;
      __VERIFIER_assert(0 <= j);
      __VERIFIER_assert(j <= i);
      __VERIFIER_assert(i <= j + 3);
      __VERIFIER_assert(j <= 4);
    }
    __VERIFIER_assert(0 <= j);
    __VERIFIER_assert(j <= i);
    __VERIFIER_assert(i <= j + 3);
    __VERIFIER_assert(j <= 4);
    i = i - j + 1;
  }
  return 0;
}