[kernel] Parsing FRAMAC_SHARE/libc/__fc_builtin_for_normalization.i (no preprocessing)
[kernel] Parsing tests/aorai/bts1289.i (no preprocessing)
[aorai] Welcome to the Aorai plugin
[kernel] Parsing FRAMAC_SHARE/libc/__fc_builtin_for_normalization.i (no preprocessing)
[kernel] Parsing /tmp/aorai_bts12891.i (no preprocessing)
/* Generated by Frama-C */
enum aorai_ListOper {
    op_a = 1,
    op_main = 0
};
enum aorai_OpStatusList {
    aorai_Terminated = 1,
    aorai_Called = 0
};
/*@ ghost enum aorai_ListOper aorai_CurOperation = op_main; */
/*@ ghost enum aorai_OpStatusList aorai_CurOpStatus = aorai_Called; */
/*@ ghost int S = 0; */
/*@ ghost int T = 0; */
/*@ ghost int aorai_intermediate_state = 0; */
/*@ ghost int aorai_intermediate_state_0 = 0; */
/*@ ghost int init = 1; */
/*@ ensures aorai_CurOpStatus ≡ aorai_Called;
    ensures aorai_CurOperation ≡ op_a;
    assigns aorai_CurOpStatus, aorai_CurOperation, S, T,
            aorai_intermediate_state, aorai_intermediate_state_0, init;
    
    behavior buch_state_S_out:
      ensures 0 ≡ S;
    
    behavior buch_state_T_out:
      ensures 0 ≡ T;
    
    behavior buch_state_aorai_intermediate_state_in:
      assumes 1 ≡ S;
      ensures 1 ≡ aorai_intermediate_state;
    
    behavior buch_state_aorai_intermediate_state_out:
      assumes 0 ≡ S;
      ensures 0 ≡ aorai_intermediate_state;
    
    behavior buch_state_aorai_intermediate_state_0_in:
      assumes 1 ≡ T;
      ensures 1 ≡ aorai_intermediate_state_0;
    
    behavior buch_state_aorai_intermediate_state_0_out:
      assumes 0 ≡ T;
      ensures 0 ≡ aorai_intermediate_state_0;
    
    behavior buch_state_init_out:
      ensures 0 ≡ init;
 */
extern void a_pre_func(void);

/*@ requires
      (1 ≡ aorai_intermediate_state ∨ 1 ≡ aorai_intermediate_state_0) ∧
      0 ≡ S ∧ 0 ≡ T ∧ 0 ≡ init;
    ensures aorai_CurOpStatus ≡ aorai_Terminated;
    ensures aorai_CurOperation ≡ op_a;
    assigns aorai_CurOpStatus, aorai_CurOperation, S, T,
            aorai_intermediate_state, aorai_intermediate_state_0, init;
    
    behavior buch_state_S_in:
      assumes 1 ≡ aorai_intermediate_state_0;
      ensures 1 ≡ S;
    
    behavior buch_state_S_out:
      assumes 0 ≡ aorai_intermediate_state_0;
      ensures 0 ≡ S;
    
    behavior buch_state_T_in:
      assumes 1 ≡ aorai_intermediate_state;
      ensures 1 ≡ T;
    
    behavior buch_state_T_out:
      assumes 0 ≡ aorai_intermediate_state;
      ensures 0 ≡ T;
    
    behavior buch_state_aorai_intermediate_state_out:
      ensures 0 ≡ aorai_intermediate_state;
    
    behavior buch_state_aorai_intermediate_state_0_out:
      ensures 0 ≡ aorai_intermediate_state_0;
    
    behavior buch_state_init_out:
      ensures 0 ≡ init;
 */
extern void a_post_func(void);

/*@ requires
      (1 ≡ S ∨ 1 ≡ T) ∧ 0 ≡ aorai_intermediate_state ∧
      0 ≡ aorai_intermediate_state_0 ∧ 0 ≡ init;
    requires 1 ≡ T ∨ 0 ≡ T;
    requires 1 ≡ S ∨ 0 ≡ S;
    
    behavior Buchi_behavior_in_0:
      assumes 1 ≡ S;
      ensures 1 ≡ T;
    
    behavior Buchi_behavior_in_1:
      assumes 1 ≡ T;
      ensures 1 ≡ S;
    
    behavior Buchi_behavior_out_0:
      assumes 0 ≡ T;
      ensures 0 ≡ S;
    
    behavior Buchi_behavior_out_1:
      assumes 0 ≡ S;
      ensures 0 ≡ T;
    
    behavior Buchi_behavior_out_2:
      ensures 0 ≡ aorai_intermediate_state;
    
    behavior Buchi_behavior_out_3:
      ensures 0 ≡ aorai_intermediate_state_0;
    
    behavior Buchi_behavior_out_4:
      ensures 0 ≡ init;
 */
void a(void)
{
  a_pre_func();
  a_post_func();
  return;
}

/*@ ensures aorai_CurOpStatus ≡ aorai_Called;
    ensures aorai_CurOperation ≡ op_main;
    assigns aorai_CurOpStatus, aorai_CurOperation, S, T,
            aorai_intermediate_state, aorai_intermediate_state_0, init;
    
    behavior buch_state_S_in:
      assumes 1 ≡ init;
      ensures 1 ≡ S;
    
    behavior buch_state_S_out:
      assumes 0 ≡ init;
      ensures 0 ≡ S;
    
    behavior buch_state_T_out:
      ensures 0 ≡ T;
    
    behavior buch_state_aorai_intermediate_state_out:
      ensures 0 ≡ aorai_intermediate_state;
    
    behavior buch_state_aorai_intermediate_state_0_out:
      ensures 0 ≡ aorai_intermediate_state_0;
    
    behavior buch_state_init_out:
      ensures 0 ≡ init;
 */
extern void main_pre_func(void);

/*@ requires
      1 ≡ S ∧ 0 ≡ T ∧ 0 ≡ aorai_intermediate_state ∧
      0 ≡ aorai_intermediate_state_0 ∧ 0 ≡ init;
    ensures aorai_CurOpStatus ≡ aorai_Terminated;
    ensures aorai_CurOperation ≡ op_main;
    assigns aorai_CurOpStatus, aorai_CurOperation, S, T,
            aorai_intermediate_state, aorai_intermediate_state_0, init;
    
    behavior buch_state_S_in:
      assumes 1 ≡ S;
      ensures 1 ≡ S;
    
    behavior buch_state_S_out:
      assumes 0 ≡ S;
      ensures 0 ≡ S;
    
    behavior buch_state_T_out:
      ensures 0 ≡ T;
    
    behavior buch_state_aorai_intermediate_state_out:
      ensures 0 ≡ aorai_intermediate_state;
    
    behavior buch_state_aorai_intermediate_state_0_out:
      ensures 0 ≡ aorai_intermediate_state_0;
    
    behavior buch_state_init_out:
      ensures 0 ≡ init;
 */
extern void main_post_func(void);

/*@ requires
      1 ≡ init ∧ 0 ≡ S ∧ 0 ≡ T ∧
      0 ≡ aorai_intermediate_state ∧ 0 ≡ aorai_intermediate_state_0;
    
    behavior Buchi_property_behavior:
      ensures
        0 ≡ T ∧ 0 ≡ aorai_intermediate_state ∧
        0 ≡ aorai_intermediate_state_0 ∧ 0 ≡ init;
      ensures 1 ≡ S;
 */
void main(void)
{
  int aorai_Loop_Init_16;
  int i;
  main_pre_func();
  i = 0;
  /*@ ghost aorai_Loop_Init_16 = 1; */
  aorai_loop_16:
    /*@ loop invariant Aorai: 1 ≡ S ∨ 0 ≡ S;
        loop invariant Aorai: 1 ≡ T ∨ 0 ≡ T;
        loop invariant Aorai: 0 ≡ aorai_intermediate_state;
        loop invariant Aorai: 0 ≡ aorai_intermediate_state_0;
        loop invariant Aorai: 0 ≡ init;
        loop invariant Aorai: 1 ≡ S ∨ 1 ≡ T;
        loop invariant
          Aorai: aorai_Loop_Init_16 ≢ 0 ⇒ \at(1 ≡ init,Pre) ⇒ 0 ≡ T;
        loop assigns i, aorai_Loop_Init_16, aorai_CurOpStatus,
                     aorai_CurOperation, S, T, aorai_intermediate_state,
                     aorai_intermediate_state_0, init;
        loop assigns aorai_Loop_Init_16 \from \nothing;
    */
    while (1) {
      if (! (i < 10)) goto while_0_break;
      /*@ ghost aorai_Loop_Init_16 = 0; */
      a();
      i ++;
    }
  while_0_break: ;
  main_post_func();
  return;
}


