Showing error 2162

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