Showing error 1958

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_spec2_product53_safe.cil.c
Line in file: 50
Project: SV-COMP 2013
Project version: 2.6.28
Tools: Manual Work
Entered: 2013-01-17 16:57:54 UTC


Source:

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