Showing error 2030

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