Showing error 2114

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