Showing error 2032

User: Jiri Slaby
Error type: Reachable Error Location
Error type description: A specified error location is reachable in some program path
File location: product-lines/minepump_spec3_product62_safe.cil.c
Line in file: 50
Project: SV-COMP 2013
Project version: 2.6.28
Tools: Manual Work
Entered: 2013-01-17 16:57:54 UTC


Source:

   1extern int __VERIFIER_nondet_int(void);
   2extern int printf (__const char *__restrict __format, ...);
   3/* Generated by CIL v. 1.3.7 */
   4/* print_CIL_Input is true */
   5
   6#line 2 "libacc.c"
   7struct JoinPoint {
   8   void **(*fp)(struct JoinPoint * ) ;
   9   void **args ;
  10   int argsCount ;
  11   char const   **argsType ;
  12   void *(*arg)(int  , struct JoinPoint * ) ;
  13   char const   *(*argType)(int  , struct JoinPoint * ) ;
  14   void **retValue ;
  15   char const   *retType ;
  16   char const   *funcName ;
  17   char const   *targetName ;
  18   char const   *fileName ;
  19   char const   *kind ;
  20   void *excep_return ;
  21};
  22#line 18 "libacc.c"
  23struct __UTAC__CFLOW_FUNC {
  24   int (*func)(int  , int  ) ;
  25   int val ;
  26   struct __UTAC__CFLOW_FUNC *next ;
  27};
  28#line 18 "libacc.c"
  29struct __UTAC__EXCEPTION {
  30   void *jumpbuf ;
  31   unsigned long long prtValue ;
  32   int pops ;
  33   struct __UTAC__CFLOW_FUNC *cflowfuncs ;
  34};
  35#line 211 "/usr/lib/gcc/x86_64-linux-gnu/4.4.5/include/stddef.h"
  36typedef unsigned long size_t;
  37#line 76 "libacc.c"
  38struct __ACC__ERR {
  39   void *v ;
  40   struct __ACC__ERR *next ;
  41};
  42#line 1 "wsllib_check.o"
  43#pragma merger(0,"wsllib_check.i","")
  44#line 3 "wsllib_check.c"
  45void __automaton_fail(void) 
  46{ 
  47
  48  {
  49  goto ERROR;
  50  ERROR: ;
  51#line 53 "wsllib_check.c"
  52  return;
  53}
  54}
  55#line 1 "Specification3_spec.o"
  56#pragma merger(0,"Specification3_spec.i","")
  57#line 10 "MinePump.h"
  58int isPumpRunning(void) ;
  59#line 10 "Environment.h"
  60int isMethaneLevelCritical(void) ;
  61#line 12
  62int getWaterLevel(void) ;
  63#line 11 "Specification3_spec.c"
  64__inline void __utac_acc__Specification3_spec__1(void) 
  65{ int tmp ;
  66  int tmp___0 ;
  67  int tmp___1 ;
  68
  69  {
  70  {
  71#line 19
  72  tmp = isMethaneLevelCritical();
  73  }
  74#line 19
  75  if (tmp) {
  76
  77  } else {
  78    {
  79#line 19
  80    tmp___0 = getWaterLevel();
  81    }
  82#line 19
  83    if (tmp___0 == 2) {
  84      {
  85#line 19
  86      tmp___1 = isPumpRunning();
  87      }
  88#line 19
  89      if (tmp___1) {
  90
  91      } else {
  92        {
  93#line 16
  94        __automaton_fail();
  95        }
  96      }
  97    } else {
  98
  99    }
 100  }
 101#line 16
 102  return;
 103}
 104}
 105#line 1 "libacc.o"
 106#pragma merger(0,"libacc.i","")
 107#line 73 "/usr/include/assert.h"
 108extern  __attribute__((__nothrow__, __noreturn__)) void __assert_fail(char const   *__assertion ,
 109                                                                      char const   *__file ,
 110                                                                      unsigned int __line ,
 111                                                                      char const   *__function ) ;
 112#line 471 "/usr/include/stdlib.h"
 113extern  __attribute__((__nothrow__)) void *malloc(size_t __size )  __attribute__((__malloc__)) ;
 114#line 488
 115extern  __attribute__((__nothrow__)) void free(void *__ptr ) ;
 116#line 32 "libacc.c"
 117void __utac__exception__cf_handler_set(void *exception , int (*cflow_func)(int  ,
 118                                                                           int  ) ,
 119                                       int val ) 
 120{ struct __UTAC__EXCEPTION *excep ;
 121  struct __UTAC__CFLOW_FUNC *cf ;
 122  void *tmp ;
 123  unsigned long __cil_tmp7 ;
 124  unsigned long __cil_tmp8 ;
 125  unsigned long __cil_tmp9 ;
 126  unsigned long __cil_tmp10 ;
 127  unsigned long __cil_tmp11 ;
 128  unsigned long __cil_tmp12 ;
 129  unsigned long __cil_tmp13 ;
 130  unsigned long __cil_tmp14 ;
 131  int (**mem_15)(int  , int  ) ;
 132  int *mem_16 ;
 133  struct __UTAC__CFLOW_FUNC **mem_17 ;
 134  struct __UTAC__CFLOW_FUNC **mem_18 ;
 135  struct __UTAC__CFLOW_FUNC **mem_19 ;
 136
 137  {
 138  {
 139#line 33
 140  excep = (struct __UTAC__EXCEPTION *)exception;
 141#line 34
 142  tmp = malloc(24UL);
 143#line 34
 144  cf = (struct __UTAC__CFLOW_FUNC *)tmp;
 145#line 36
 146  mem_15 = (int (**)(int  , int  ))cf;
 147#line 36
 148  *mem_15 = cflow_func;
 149#line 37
 150  __cil_tmp7 = (unsigned long )cf;
 151#line 37
 152  __cil_tmp8 = __cil_tmp7 + 8;
 153#line 37
 154  mem_16 = (int *)__cil_tmp8;
 155#line 37
 156  *mem_16 = val;
 157#line 38
 158  __cil_tmp9 = (unsigned long )cf;
 159#line 38
 160  __cil_tmp10 = __cil_tmp9 + 16;
 161#line 38
 162  __cil_tmp11 = (unsigned long )excep;
 163#line 38
 164  __cil_tmp12 = __cil_tmp11 + 24;
 165#line 38
 166  mem_17 = (struct __UTAC__CFLOW_FUNC **)__cil_tmp10;
 167#line 38
 168  mem_18 = (struct __UTAC__CFLOW_FUNC **)__cil_tmp12;
 169#line 38
 170  *mem_17 = *mem_18;
 171#line 39
 172  __cil_tmp13 = (unsigned long )excep;
 173#line 39
 174  __cil_tmp14 = __cil_tmp13 + 24;
 175#line 39
 176  mem_19 = (struct __UTAC__CFLOW_FUNC **)__cil_tmp14;
 177#line 39
 178  *mem_19 = cf;
 179  }
 180#line 654 "libacc.c"
 181  return;
 182}
 183}
 184#line 44 "libacc.c"
 185void __utac__exception__cf_handler_free(void *exception ) 
 186{ struct __UTAC__EXCEPTION *excep ;
 187  struct __UTAC__CFLOW_FUNC *cf ;
 188  struct __UTAC__CFLOW_FUNC *tmp ;
 189  unsigned long __cil_tmp5 ;
 190  unsigned long __cil_tmp6 ;
 191  struct __UTAC__CFLOW_FUNC *__cil_tmp7 ;
 192  unsigned long __cil_tmp8 ;
 193  unsigned long __cil_tmp9 ;
 194  unsigned long __cil_tmp10 ;
 195  unsigned long __cil_tmp11 ;
 196  void *__cil_tmp12 ;
 197  unsigned long __cil_tmp13 ;
 198  unsigned long __cil_tmp14 ;
 199  struct __UTAC__CFLOW_FUNC **mem_15 ;
 200  struct __UTAC__CFLOW_FUNC **mem_16 ;
 201  struct __UTAC__CFLOW_FUNC **mem_17 ;
 202
 203  {
 204#line 45
 205  excep = (struct __UTAC__EXCEPTION *)exception;
 206#line 46
 207  __cil_tmp5 = (unsigned long )excep;
 208#line 46
 209  __cil_tmp6 = __cil_tmp5 + 24;
 210#line 46
 211  mem_15 = (struct __UTAC__CFLOW_FUNC **)__cil_tmp6;
 212#line 46
 213  cf = *mem_15;
 214  {
 215#line 49
 216  while (1) {
 217    while_0_continue: /* CIL Label */ ;
 218    {
 219#line 49
 220    __cil_tmp7 = (struct __UTAC__CFLOW_FUNC *)0;
 221#line 49
 222    __cil_tmp8 = (unsigned long )__cil_tmp7;
 223#line 49
 224    __cil_tmp9 = (unsigned long )cf;
 225#line 49
 226    if (__cil_tmp9 != __cil_tmp8) {
 227
 228    } else {
 229      goto while_0_break;
 230    }
 231    }
 232    {
 233#line 50
 234    tmp = cf;
 235#line 51
 236    __cil_tmp10 = (unsigned long )cf;
 237#line 51
 238    __cil_tmp11 = __cil_tmp10 + 16;
 239#line 51
 240    mem_16 = (struct __UTAC__CFLOW_FUNC **)__cil_tmp11;
 241#line 51
 242    cf = *mem_16;
 243#line 52
 244    __cil_tmp12 = (void *)tmp;
 245#line 52
 246    free(__cil_tmp12);
 247    }
 248  }
 249  while_0_break: /* CIL Label */ ;
 250  }
 251#line 55
 252  __cil_tmp13 = (unsigned long )excep;
 253#line 55
 254  __cil_tmp14 = __cil_tmp13 + 24;
 255#line 55
 256  mem_17 = (struct __UTAC__CFLOW_FUNC **)__cil_tmp14;
 257#line 55
 258  *mem_17 = (struct __UTAC__CFLOW_FUNC *)0;
 259#line 694 "libacc.c"
 260  return;
 261}
 262}
 263#line 59 "libacc.c"
 264void __utac__exception__cf_handler_reset(void *exception ) 
 265{ struct __UTAC__EXCEPTION *excep ;
 266  struct __UTAC__CFLOW_FUNC *cf ;
 267  unsigned long __cil_tmp5 ;
 268  unsigned long __cil_tmp6 ;
 269  struct __UTAC__CFLOW_FUNC *__cil_tmp7 ;
 270  unsigned long __cil_tmp8 ;
 271  unsigned long __cil_tmp9 ;
 272  int (*__cil_tmp10)(int  , int  ) ;
 273  unsigned long __cil_tmp11 ;
 274  unsigned long __cil_tmp12 ;
 275  int __cil_tmp13 ;
 276  unsigned long __cil_tmp14 ;
 277  unsigned long __cil_tmp15 ;
 278  struct __UTAC__CFLOW_FUNC **mem_16 ;
 279  int (**mem_17)(int  , int  ) ;
 280  int *mem_18 ;
 281  struct __UTAC__CFLOW_FUNC **mem_19 ;
 282
 283  {
 284#line 60
 285  excep = (struct __UTAC__EXCEPTION *)exception;
 286#line 61
 287  __cil_tmp5 = (unsigned long )excep;
 288#line 61
 289  __cil_tmp6 = __cil_tmp5 + 24;
 290#line 61
 291  mem_16 = (struct __UTAC__CFLOW_FUNC **)__cil_tmp6;
 292#line 61
 293  cf = *mem_16;
 294  {
 295#line 64
 296  while (1) {
 297    while_1_continue: /* CIL Label */ ;
 298    {
 299#line 64
 300    __cil_tmp7 = (struct __UTAC__CFLOW_FUNC *)0;
 301#line 64
 302    __cil_tmp8 = (unsigned long )__cil_tmp7;
 303#line 64
 304    __cil_tmp9 = (unsigned long )cf;
 305#line 64
 306    if (__cil_tmp9 != __cil_tmp8) {
 307
 308    } else {
 309      goto while_1_break;
 310    }
 311    }
 312    {
 313#line 65
 314    mem_17 = (int (**)(int  , int  ))cf;
 315#line 65
 316    __cil_tmp10 = *mem_17;
 317#line 65
 318    __cil_tmp11 = (unsigned long )cf;
 319#line 65
 320    __cil_tmp12 = __cil_tmp11 + 8;
 321#line 65
 322    mem_18 = (int *)__cil_tmp12;
 323#line 65
 324    __cil_tmp13 = *mem_18;
 325#line 65
 326    (*__cil_tmp10)(4, __cil_tmp13);
 327#line 66
 328    __cil_tmp14 = (unsigned long )cf;
 329#line 66
 330    __cil_tmp15 = __cil_tmp14 + 16;
 331#line 66
 332    mem_19 = (struct __UTAC__CFLOW_FUNC **)__cil_tmp15;
 333#line 66
 334    cf = *mem_19;
 335    }
 336  }
 337  while_1_break: /* CIL Label */ ;
 338  }
 339  {
 340#line 69
 341  __utac__exception__cf_handler_free(exception);
 342  }
 343#line 732 "libacc.c"
 344  return;
 345}
 346}
 347#line 80 "libacc.c"
 348void *__utac__error_stack_mgt(void *env , int mode , int count ) ;
 349#line 80 "libacc.c"
 350static struct __ACC__ERR *head  =    (struct __ACC__ERR *)0;
 351#line 79 "libacc.c"
 352void *__utac__error_stack_mgt(void *env , int mode , int count ) 
 353{ void *retValue_acc ;
 354  struct __ACC__ERR *new ;
 355  void *tmp ;
 356  struct __ACC__ERR *temp ;
 357  struct __ACC__ERR *next ;
 358  void *excep ;
 359  unsigned long __cil_tmp10 ;
 360  unsigned long __cil_tmp11 ;
 361  unsigned long __cil_tmp12 ;
 362  unsigned long __cil_tmp13 ;
 363  void *__cil_tmp14 ;
 364  unsigned long __cil_tmp15 ;
 365  unsigned long __cil_tmp16 ;
 366  void *__cil_tmp17 ;
 367  void **mem_18 ;
 368  struct __ACC__ERR **mem_19 ;
 369  struct __ACC__ERR **mem_20 ;
 370  void **mem_21 ;
 371  struct __ACC__ERR **mem_22 ;
 372  void **mem_23 ;
 373  void **mem_24 ;
 374
 375  {
 376#line 82 "libacc.c"
 377  if (count == 0) {
 378#line 758 "libacc.c"
 379    return (retValue_acc);
 380  } else {
 381
 382  }
 383#line 86 "libacc.c"
 384  if (mode == 0) {
 385    {
 386#line 87
 387    tmp = malloc(16UL);
 388#line 87
 389    new = (struct __ACC__ERR *)tmp;
 390#line 88
 391    mem_18 = (void **)new;
 392#line 88
 393    *mem_18 = env;
 394#line 89
 395    __cil_tmp10 = (unsigned long )new;
 396#line 89
 397    __cil_tmp11 = __cil_tmp10 + 8;
 398#line 89
 399    mem_19 = (struct __ACC__ERR **)__cil_tmp11;
 400#line 89
 401    *mem_19 = head;
 402#line 90
 403    head = new;
 404#line 776 "libacc.c"
 405    retValue_acc = (void *)new;
 406    }
 407#line 778
 408    return (retValue_acc);
 409  } else {
 410
 411  }
 412#line 94 "libacc.c"
 413  if (mode == 1) {
 414#line 95
 415    temp = head;
 416    {
 417#line 98
 418    while (1) {
 419      while_2_continue: /* CIL Label */ ;
 420#line 98
 421      if (count > 1) {
 422
 423      } else {
 424        goto while_2_break;
 425      }
 426      {
 427#line 99
 428      __cil_tmp12 = (unsigned long )temp;
 429#line 99
 430      __cil_tmp13 = __cil_tmp12 + 8;
 431#line 99
 432      mem_20 = (struct __ACC__ERR **)__cil_tmp13;
 433#line 99
 434      next = *mem_20;
 435#line 100
 436      mem_21 = (void **)temp;
 437#line 100
 438      excep = *mem_21;
 439#line 101
 440      __cil_tmp14 = (void *)temp;
 441#line 101
 442      free(__cil_tmp14);
 443#line 102
 444      __utac__exception__cf_handler_reset(excep);
 445#line 103
 446      temp = next;
 447#line 104
 448      count = count - 1;
 449      }
 450    }
 451    while_2_break: /* CIL Label */ ;
 452    }
 453    {
 454#line 107
 455    __cil_tmp15 = (unsigned long )temp;
 456#line 107
 457    __cil_tmp16 = __cil_tmp15 + 8;
 458#line 107
 459    mem_22 = (struct __ACC__ERR **)__cil_tmp16;
 460#line 107
 461    head = *mem_22;
 462#line 108
 463    mem_23 = (void **)temp;
 464#line 108
 465    excep = *mem_23;
 466#line 109
 467    __cil_tmp17 = (void *)temp;
 468#line 109
 469    free(__cil_tmp17);
 470#line 110
 471    __utac__exception__cf_handler_reset(excep);
 472#line 820 "libacc.c"
 473    retValue_acc = excep;
 474    }
 475#line 822
 476    return (retValue_acc);
 477  } else {
 478
 479  }
 480#line 114
 481  if (mode == 2) {
 482#line 118 "libacc.c"
 483    if (head) {
 484#line 831
 485      mem_24 = (void **)head;
 486#line 831
 487      retValue_acc = *mem_24;
 488#line 833
 489      return (retValue_acc);
 490    } else {
 491#line 837 "libacc.c"
 492      retValue_acc = (void *)0;
 493#line 839
 494      return (retValue_acc);
 495    }
 496  } else {
 497
 498  }
 499#line 846 "libacc.c"
 500  return (retValue_acc);
 501}
 502}
 503#line 122 "libacc.c"
 504void *__utac__get_this_arg(int i , struct JoinPoint *this ) 
 505{ void *retValue_acc ;
 506  unsigned long __cil_tmp4 ;
 507  unsigned long __cil_tmp5 ;
 508  int __cil_tmp6 ;
 509  int __cil_tmp7 ;
 510  unsigned long __cil_tmp8 ;
 511  unsigned long __cil_tmp9 ;
 512  void **__cil_tmp10 ;
 513  void **__cil_tmp11 ;
 514  int *mem_12 ;
 515  void ***mem_13 ;
 516
 517  {
 518#line 123
 519  if (i > 0) {
 520    {
 521#line 123
 522    __cil_tmp4 = (unsigned long )this;
 523#line 123
 524    __cil_tmp5 = __cil_tmp4 + 16;
 525#line 123
 526    mem_12 = (int *)__cil_tmp5;
 527#line 123
 528    __cil_tmp6 = *mem_12;
 529#line 123
 530    if (i <= __cil_tmp6) {
 531
 532    } else {
 533      {
 534#line 123
 535      __assert_fail("i > 0 && i <= this->argsCount", "libacc.c",
 536                    123U, "__utac__get_this_arg");
 537      }
 538    }
 539    }
 540  } else {
 541    {
 542#line 123
 543    __assert_fail("i > 0 && i <= this->argsCount", "libacc.c",
 544                  123U, "__utac__get_this_arg");
 545    }
 546  }
 547#line 870 "libacc.c"
 548  __cil_tmp7 = i - 1;
 549#line 870
 550  __cil_tmp8 = (unsigned long )this;
 551#line 870
 552  __cil_tmp9 = __cil_tmp8 + 8;
 553#line 870
 554  mem_13 = (void ***)__cil_tmp9;
 555#line 870
 556  __cil_tmp10 = *mem_13;
 557#line 870
 558  __cil_tmp11 = __cil_tmp10 + __cil_tmp7;
 559#line 870
 560  retValue_acc = *__cil_tmp11;
 561#line 872
 562  return (retValue_acc);
 563#line 879
 564  return (retValue_acc);
 565}
 566}
 567#line 129 "libacc.c"
 568char const   *__utac__get_this_argtype(int i , struct JoinPoint *this ) 
 569{ char const   *retValue_acc ;
 570  unsigned long __cil_tmp4 ;
 571  unsigned long __cil_tmp5 ;
 572  int __cil_tmp6 ;
 573  int __cil_tmp7 ;
 574  unsigned long __cil_tmp8 ;
 575  unsigned long __cil_tmp9 ;
 576  char const   **__cil_tmp10 ;
 577  char const   **__cil_tmp11 ;
 578  int *mem_12 ;
 579  char const   ***mem_13 ;
 580
 581  {
 582#line 131
 583  if (i > 0) {
 584    {
 585#line 131
 586    __cil_tmp4 = (unsigned long )this;
 587#line 131
 588    __cil_tmp5 = __cil_tmp4 + 16;
 589#line 131
 590    mem_12 = (int *)__cil_tmp5;
 591#line 131
 592    __cil_tmp6 = *mem_12;
 593#line 131
 594    if (i <= __cil_tmp6) {
 595
 596    } else {
 597      {
 598#line 131
 599      __assert_fail("i > 0 && i <= this->argsCount", "libacc.c",
 600                    131U, "__utac__get_this_argtype");
 601      }
 602    }
 603    }
 604  } else {
 605    {
 606#line 131
 607    __assert_fail("i > 0 && i <= this->argsCount", "libacc.c",
 608                  131U, "__utac__get_this_argtype");
 609    }
 610  }
 611#line 903 "libacc.c"
 612  __cil_tmp7 = i - 1;
 613#line 903
 614  __cil_tmp8 = (unsigned long )this;
 615#line 903
 616  __cil_tmp9 = __cil_tmp8 + 24;
 617#line 903
 618  mem_13 = (char const   ***)__cil_tmp9;
 619#line 903
 620  __cil_tmp10 = *mem_13;
 621#line 903
 622  __cil_tmp11 = __cil_tmp10 + __cil_tmp7;
 623#line 903
 624  retValue_acc = *__cil_tmp11;
 625#line 905
 626  return (retValue_acc);
 627#line 912
 628  return (retValue_acc);
 629}
 630}
 631#line 1 "Environment.o"
 632#pragma merger(0,"Environment.i","")
 633#line 4 "Environment.h"
 634void lowerWaterLevel(void) ;
 635#line 6
 636void waterRise(void) ;
 637#line 8
 638void changeMethaneLevel(void) ;
 639#line 15
 640void printEnvironment(void) ;
 641#line 16
 642int isHighWaterSensorDry(void) ;
 643#line 17
 644int isLowWaterSensorDry(void) ;
 645#line 9 "Environment.c"
 646int waterLevel  =    1;
 647#line 12 "Environment.c"
 648int methaneLevelCritical  =    0;
 649#line 15 "Environment.c"
 650void lowerWaterLevel(void) 
 651{ 
 652
 653  {
 654#line 19
 655  if (waterLevel > 0) {
 656#line 17
 657    waterLevel = waterLevel - 1;
 658  } else {
 659
 660  }
 661#line 85 "Environment.c"
 662  return;
 663}
 664}
 665#line 22 "Environment.c"
 666void waterRise(void) 
 667{ 
 668
 669  {
 670#line 26
 671  if (waterLevel < 2) {
 672#line 24
 673    waterLevel = waterLevel + 1;
 674  } else {
 675
 676  }
 677#line 108 "Environment.c"
 678  return;
 679}
 680}
 681#line 29 "Environment.c"
 682void changeMethaneLevel(void) 
 683{ 
 684
 685  {
 686#line 34
 687  if (methaneLevelCritical) {
 688#line 31
 689    methaneLevelCritical = 0;
 690  } else {
 691#line 33
 692    methaneLevelCritical = 1;
 693  }
 694#line 134 "Environment.c"
 695  return;
 696}
 697}
 698#line 38 "Environment.c"
 699int isMethaneLevelCritical(void) 
 700{ int retValue_acc ;
 701
 702  {
 703#line 152 "Environment.c"
 704  retValue_acc = methaneLevelCritical;
 705#line 154
 706  return (retValue_acc);
 707#line 161
 708  return (retValue_acc);
 709}
 710}
 711#line 45 "Environment.c"
 712#line 44 "Environment.c"
 713void printEnvironment(void) 
 714{ 
 715
 716  {
 717  {
 718#line 45
 719  printf("Env(Water:%i", waterLevel);
 720#line 46
 721  printf(",Meth:");
 722  }
 723#line 47
 724  if (methaneLevelCritical) {
 725    {
 726#line 48
 727    printf("CRIT");
 728    }
 729  } else {
 730    {
 731#line 49
 732    printf("OK");
 733    }
 734  }
 735  {
 736#line 51
 737  printf(")");
 738  }
 739#line 193 "Environment.c"
 740  return;
 741}
 742}
 743#line 55 "Environment.c"
 744int getWaterLevel(void) 
 745{ int retValue_acc ;
 746
 747  {
 748#line 211 "Environment.c"
 749  retValue_acc = waterLevel;
 750#line 213
 751  return (retValue_acc);
 752#line 220
 753  return (retValue_acc);
 754}
 755}
 756#line 58 "Environment.c"
 757int isHighWaterSensorDry(void) 
 758{ int retValue_acc ;
 759
 760  {
 761#line 65 "Environment.c"
 762  if (waterLevel < 2) {
 763#line 245
 764    retValue_acc = 1;
 765#line 247
 766    return (retValue_acc);
 767  } else {
 768#line 253 "Environment.c"
 769    retValue_acc = 0;
 770#line 255
 771    return (retValue_acc);
 772  }
 773#line 262 "Environment.c"
 774  return (retValue_acc);
 775}
 776}
 777#line 67 "Environment.c"
 778int isLowWaterSensorDry(void) 
 779{ int retValue_acc ;
 780
 781  {
 782#line 284 "Environment.c"
 783  retValue_acc = waterLevel == 0;
 784#line 286
 785  return (retValue_acc);
 786#line 293
 787  return (retValue_acc);
 788}
 789}
 790#line 1 "featureselect.o"
 791#pragma merger(0,"featureselect.i","")
 792#line 8 "featureselect.h"
 793int select_one(void) ;
 794#line 10
 795void select_features(void) ;
 796#line 12
 797void select_helpers(void) ;
 798#line 14
 799int valid_product(void) ;
 800#line 8 "featureselect.c"
 801int select_one(void) 
 802{ int retValue_acc ;
 803  int choice = __VERIFIER_nondet_int();
 804
 805  {
 806#line 62 "featureselect.c"
 807  retValue_acc = choice;
 808#line 64
 809  return (retValue_acc);
 810#line 71
 811  return (retValue_acc);
 812}
 813}
 814#line 14 "featureselect.c"
 815void select_features(void) 
 816{ 
 817
 818  {
 819#line 93 "featureselect.c"
 820  return;
 821}
 822}
 823#line 20 "featureselect.c"
 824void select_helpers(void) 
 825{ 
 826
 827  {
 828#line 111 "featureselect.c"
 829  return;
 830}
 831}
 832#line 25 "featureselect.c"
 833int valid_product(void) 
 834{ int retValue_acc ;
 835
 836  {
 837#line 129 "featureselect.c"
 838  retValue_acc = 1;
 839#line 131
 840  return (retValue_acc);
 841#line 138
 842  return (retValue_acc);
 843}
 844}
 845#line 1 "MinePump.o"
 846#pragma merger(0,"MinePump.i","")
 847#line 4 "MinePump.h"
 848void timeShift(void) ;
 849#line 6
 850void activatePump(void) ;
 851#line 8
 852void deactivatePump(void) ;
 853#line 13
 854void printPump(void) ;
 855#line 14
 856void startSystem(void) ;
 857#line 7 "MinePump.c"
 858int pumpRunning  =    0;
 859#line 9 "MinePump.c"
 860int systemActive  =    1;
 861#line 16
 862void processEnvironment(void) ;
 863#line 12 "MinePump.c"
 864void timeShift(void) 
 865{ 
 866
 867  {
 868#line 15
 869  if (pumpRunning) {
 870    {
 871#line 16
 872    lowerWaterLevel();
 873    }
 874  } else {
 875
 876  }
 877#line 15
 878  if (systemActive) {
 879    {
 880#line 16
 881    processEnvironment();
 882    }
 883  } else {
 884
 885  }
 886  {
 887#line 101 "MinePump.c"
 888  __utac_acc__Specification3_spec__1();
 889  }
 890#line 107
 891  return;
 892}
 893}
 894#line 19 "MinePump.c"
 895void processEnvironment__wrappee__base(void) 
 896{ 
 897
 898  {
 899#line 125 "MinePump.c"
 900  return;
 901}
 902}
 903#line 28 "MinePump.c"
 904int isHighWaterLevel(void) ;
 905#line 23 "MinePump.c"
 906void processEnvironment__wrappee__highWaterSensor(void) 
 907{ int tmp ;
 908
 909  {
 910#line 28
 911  if (! pumpRunning) {
 912    {
 913#line 28
 914    tmp = isHighWaterLevel();
 915    }
 916#line 28
 917    if (tmp) {
 918      {
 919#line 25
 920      activatePump();
 921      }
 922    } else {
 923      {
 924#line 27
 925      processEnvironment__wrappee__base();
 926      }
 927    }
 928  } else {
 929    {
 930#line 27
 931    processEnvironment__wrappee__base();
 932    }
 933  }
 934#line 151 "MinePump.c"
 935  return;
 936}
 937}
 938#line 36 "MinePump.c"
 939int isLowWaterLevel(void) ;
 940#line 31 "MinePump.c"
 941void processEnvironment__wrappee__methaneQuery(void) 
 942{ int tmp ;
 943
 944  {
 945#line 36
 946  if (pumpRunning) {
 947    {
 948#line 36
 949    tmp = isLowWaterLevel();
 950    }
 951#line 36
 952    if (tmp) {
 953      {
 954#line 33
 955      deactivatePump();
 956      }
 957    } else {
 958      {
 959#line 35
 960      processEnvironment__wrappee__highWaterSensor();
 961      }
 962    }
 963  } else {
 964    {
 965#line 35
 966    processEnvironment__wrappee__highWaterSensor();
 967    }
 968  }
 969#line 177 "MinePump.c"
 970  return;
 971}
 972}
 973#line 43 "MinePump.c"
 974int isMethaneAlarm(void) ;
 975#line 38 "MinePump.c"
 976void processEnvironment(void) 
 977{ int tmp ;
 978
 979  {
 980#line 43
 981  if (pumpRunning) {
 982    {
 983#line 43
 984    tmp = isMethaneAlarm();
 985    }
 986#line 43
 987    if (tmp) {
 988      {
 989#line 40
 990      deactivatePump();
 991      }
 992    } else {
 993      {
 994#line 42
 995      processEnvironment__wrappee__methaneQuery();
 996      }
 997    }
 998  } else {
 999    {
1000#line 42
1001    processEnvironment__wrappee__methaneQuery();
1002    }
1003  }
1004#line 203 "MinePump.c"
1005  return;
1006}
1007}
1008#line 47 "MinePump.c"
1009void activatePump__wrappee__lowWaterSensor(void) 
1010{ 
1011
1012  {
1013#line 48
1014  pumpRunning = 1;
1015#line 223 "MinePump.c"
1016  return;
1017}
1018}
1019#line 50 "MinePump.c"
1020void activatePump(void) 
1021{ int tmp ;
1022
1023  {
1024  {
1025#line 55
1026  tmp = isMethaneAlarm();
1027  }
1028#line 55
1029  if (tmp) {
1030
1031  } else {
1032    {
1033#line 52
1034    activatePump__wrappee__lowWaterSensor();
1035    }
1036  }
1037#line 247 "MinePump.c"
1038  return;
1039}
1040}
1041#line 59 "MinePump.c"
1042void deactivatePump(void) 
1043{ 
1044
1045  {
1046#line 60
1047  pumpRunning = 0;
1048#line 267 "MinePump.c"
1049  return;
1050}
1051}
1052#line 64 "MinePump.c"
1053int isMethaneAlarm(void) 
1054{ int retValue_acc ;
1055
1056  {
1057  {
1058#line 285 "MinePump.c"
1059  retValue_acc = isMethaneLevelCritical();
1060  }
1061#line 287
1062  return (retValue_acc);
1063#line 294
1064  return (retValue_acc);
1065}
1066}
1067#line 69 "MinePump.c"
1068int isPumpRunning(void) 
1069{ int retValue_acc ;
1070
1071  {
1072#line 316 "MinePump.c"
1073  retValue_acc = pumpRunning;
1074#line 318
1075  return (retValue_acc);
1076#line 325
1077  return (retValue_acc);
1078}
1079}
1080#line 74 "MinePump.c"
1081void printPump(void) 
1082{ 
1083
1084  {
1085  {
1086#line 75
1087  printf("Pump(System:");
1088  }
1089#line 76
1090  if (systemActive) {
1091    {
1092#line 77
1093    printf("On");
1094    }
1095  } else {
1096    {
1097#line 78
1098    printf("Off");
1099    }
1100  }
1101  {
1102#line 80
1103  printf(",Pump:");
1104  }
1105#line 81
1106  if (pumpRunning) {
1107    {
1108#line 82
1109    printf("On");
1110    }
1111  } else {
1112    {
1113#line 83
1114    printf("Off");
1115    }
1116  }
1117  {
1118#line 85
1119  printf(") ");
1120#line 86
1121  printEnvironment();
1122#line 87
1123  printf("\n");
1124  }
1125#line 365 "MinePump.c"
1126  return;
1127}
1128}
1129#line 89 "MinePump.c"
1130int isHighWaterLevel(void) 
1131{ int retValue_acc ;
1132  int tmp ;
1133  int tmp___0 ;
1134
1135  {
1136  {
1137#line 383 "MinePump.c"
1138  tmp = isHighWaterSensorDry();
1139  }
1140#line 383
1141  if (tmp) {
1142#line 383
1143    tmp___0 = 0;
1144  } else {
1145#line 383
1146    tmp___0 = 1;
1147  }
1148#line 383
1149  retValue_acc = tmp___0;
1150#line 385
1151  return (retValue_acc);
1152#line 392
1153  return (retValue_acc);
1154}
1155}
1156#line 92 "MinePump.c"
1157int isLowWaterLevel(void) 
1158{ int retValue_acc ;
1159  int tmp ;
1160  int tmp___0 ;
1161
1162  {
1163  {
1164#line 414 "MinePump.c"
1165  tmp = isLowWaterSensorDry();
1166  }
1167#line 414
1168  if (tmp) {
1169#line 414
1170    tmp___0 = 0;
1171  } else {
1172#line 414
1173    tmp___0 = 1;
1174  }
1175#line 414
1176  retValue_acc = tmp___0;
1177#line 416
1178  return (retValue_acc);
1179#line 423
1180  return (retValue_acc);
1181}
1182}
1183#line 95 "MinePump.c"
1184void startSystem(void) 
1185{ 
1186
1187  {
1188#line 97
1189  systemActive = 1;
1190#line 447 "MinePump.c"
1191  return;
1192}
1193}
1194#line 1 "scenario.o"
1195#pragma merger(0,"scenario.i","")
1196#line 7 "scenario.c"
1197#line 16
1198void cleanup(void) ;
1199#line 1 "scenario.c"
1200void test(void) 
1201{ int splverifierCounter ;
1202  int tmp ;
1203  int tmp___0 ;
1204  int tmp___1 ;
1205  int tmp___2 ;
1206
1207  {
1208#line 2
1209  splverifierCounter = 0;
1210  {
1211#line 3
1212  while (1) {
1213    while_3_continue: /* CIL Label */ ;
1214#line 3
1215    if (splverifierCounter < 4) {
1216
1217    } else {
1218      goto while_3_break;
1219    }
1220    {
1221#line 7
1222    tmp = __VERIFIER_nondet_int();
1223    }
1224#line 7
1225    if (tmp) {
1226      {
1227#line 5
1228      waterRise();
1229      }
1230    } else {
1231
1232    }
1233    {
1234#line 7
1235    tmp___0 = __VERIFIER_nondet_int();
1236    }
1237#line 7
1238    if (tmp___0) {
1239      {
1240#line 8
1241      changeMethaneLevel();
1242      }
1243    } else {
1244
1245    }
1246    {
1247#line 10
1248    tmp___2 = __VERIFIER_nondet_int();
1249    }
1250#line 10
1251    if (tmp___2) {
1252      {
1253#line 11
1254      startSystem();
1255      }
1256    } else {
1257      {
1258#line 12
1259      tmp___1 = __VERIFIER_nondet_int();
1260      }
1261#line 12
1262      if (tmp___1) {
1263
1264      } else {
1265
1266      }
1267    }
1268    {
1269#line 14
1270    timeShift();
1271    }
1272  }
1273  while_3_break: /* CIL Label */ ;
1274  }
1275  {
1276#line 16
1277  cleanup();
1278  }
1279#line 76 "scenario.c"
1280  return;
1281}
1282}
1283#line 1 "Test.o"
1284#pragma merger(0,"Test.i","")
1285#line 8 "Test.c"
1286int cleanupTimeShifts  =    4;
1287#line 11 "Test.c"
1288#line 17 "Test.c"
1289void cleanup(void) 
1290{ int i ;
1291  int __cil_tmp2 ;
1292
1293  {
1294  {
1295#line 20
1296  timeShift();
1297#line 22
1298  i = 0;
1299  }
1300  {
1301#line 22
1302  while (1) {
1303    while_4_continue: /* CIL Label */ ;
1304    {
1305#line 22
1306    __cil_tmp2 = cleanupTimeShifts - 1;
1307#line 22
1308    if (i < __cil_tmp2) {
1309
1310    } else {
1311      goto while_4_break;
1312    }
1313    }
1314    {
1315#line 23
1316    timeShift();
1317#line 22
1318    i = i + 1;
1319    }
1320  }
1321  while_4_break: /* CIL Label */ ;
1322  }
1323#line 1111 "Test.c"
1324  return;
1325}
1326}
1327#line 56 "Test.c"
1328void Specification2(void) 
1329{ 
1330
1331  {
1332  {
1333#line 57
1334  timeShift();
1335#line 57
1336  printPump();
1337#line 58
1338  timeShift();
1339#line 58
1340  printPump();
1341#line 59
1342  timeShift();
1343#line 59
1344  printPump();
1345#line 60
1346  waterRise();
1347#line 60
1348  printPump();
1349#line 61
1350  timeShift();
1351#line 61
1352  printPump();
1353#line 62
1354  changeMethaneLevel();
1355#line 62
1356  printPump();
1357#line 63
1358  timeShift();
1359#line 63
1360  printPump();
1361#line 64
1362  cleanup();
1363  }
1364#line 1159 "Test.c"
1365  return;
1366}
1367}
1368#line 67 "Test.c"
1369void setup(void) 
1370{ 
1371
1372  {
1373#line 1177 "Test.c"
1374  return;
1375}
1376}
1377#line 74 "Test.c"
1378void runTest(void) 
1379{ 
1380
1381  {
1382  {
1383#line 77
1384  test();
1385  }
1386#line 1197 "Test.c"
1387  return;
1388}
1389}
1390#line 82 "Test.c"
1391int main(void) 
1392{ int retValue_acc ;
1393  int tmp ;
1394
1395  {
1396  {
1397#line 83
1398  select_helpers();
1399#line 84
1400  select_features();
1401#line 85
1402  tmp = valid_product();
1403  }
1404#line 85
1405  if (tmp) {
1406    {
1407#line 86
1408    setup();
1409#line 87
1410    runTest();
1411    }
1412  } else {
1413
1414  }
1415#line 1226 "Test.c"
1416  retValue_acc = 0;
1417#line 1228
1418  return (retValue_acc);
1419#line 1235
1420  return (retValue_acc);
1421}
1422}