Showing error 2100

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