Showing error 2140

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