[kernel] Parsing FRAMAC_SHARE/libc/__fc_builtin_for_normalization.i (no preprocessing)
[kernel] Parsing tests/aorai/test_boucle.c (with preprocessing)
tests/aorai/test_boucle.c:17:[kernel] warning: Calling undeclared function call_to_an_undefined_function. Old style K&R code?
[aorai] Welcome to the Aorai plugin
[kernel] Parsing FRAMAC_SHARE/libc/__fc_builtin_for_normalization.i (no preprocessing)
[kernel] Parsing /tmp/aorai_test_boucle0.i (no preprocessing)
/* Generated by Frama-C */
enum aorai_ListOper {
    op_a = 2,
    op_b = 1,
    op_main = 0
};
enum aorai_OpStatusList {
    aorai_Terminated = 1,
    aorai_Called = 0
};
extern int call_to_an_undefined_function();

/*@ ghost enum aorai_ListOper aorai_CurOperation = op_main; */
/*@ ghost enum aorai_OpStatusList aorai_CurOpStatus = aorai_Called; */
/*@ ghost int T0_S2 = 0; */
/*@ ghost int T0_init = 1; */
/*@ ghost int accept_S1 = 0; */
/*@ ensures aorai_CurOpStatus ≡ aorai_Called;
    ensures aorai_CurOperation ≡ op_a;
    assigns aorai_CurOpStatus, aorai_CurOperation, T0_S2, T0_init, accept_S1;
    
    behavior buch_state_T0_S2_out:
      ensures 0 ≡ T0_S2;
    
    behavior buch_state_T0_init_out:
      ensures 0 ≡ T0_init;
    
    behavior buch_state_accept_S1_in:
      assumes 1 ≡ accept_S1 ∨ 1 ≡ T0_S2;
      ensures 1 ≡ accept_S1;
    
    behavior buch_state_accept_S1_out:
      assumes 0 ≡ accept_S1 ∧ 0 ≡ T0_S2;
      ensures 0 ≡ accept_S1;
 */
extern void a_pre_func(void);

/*@ requires 1 ≡ accept_S1 ∧ 0 ≡ T0_S2 ∧ 0 ≡ T0_init;
    ensures aorai_CurOpStatus ≡ aorai_Terminated;
    ensures aorai_CurOperation ≡ op_a;
    assigns aorai_CurOpStatus, aorai_CurOperation, T0_S2, T0_init, accept_S1;
    
    behavior buch_state_T0_S2_out:
      ensures 0 ≡ T0_S2;
    
    behavior buch_state_T0_init_out:
      ensures 0 ≡ T0_init;
    
    behavior buch_state_accept_S1_in:
      assumes 1 ≡ accept_S1;
      ensures 1 ≡ accept_S1;
    
    behavior buch_state_accept_S1_out:
      assumes 0 ≡ accept_S1;
      ensures 0 ≡ accept_S1;
 */
extern void a_post_func(int res);

/*@ requires (1 ≡ T0_S2 ∨ 1 ≡ accept_S1) ∧ 0 ≡ T0_init;
    requires 1 ≡ accept_S1 ∨ 0 ≡ accept_S1;
    requires 1 ≡ T0_S2 ∨ 0 ≡ T0_S2;
    requires \true;
    ensures 0 ≤ \result ≤ 1;
    
    behavior Buchi_property_behavior:
      ensures 0 ≡ T0_S2 ∧ 0 ≡ T0_init;
      ensures 1 ≡ accept_S1;
 */
int a(void)
{
  int __retres;
  a_pre_func();
  __retres = 1;
  a_post_func(__retres);
  return __retres;
}

/*@ ensures aorai_CurOpStatus ≡ aorai_Called;
    ensures aorai_CurOperation ≡ op_b;
    assigns aorai_CurOpStatus, aorai_CurOperation, T0_S2, T0_init, accept_S1;
    
    behavior buch_state_T0_S2_in:
      assumes 1 ≡ accept_S1 ∨ 1 ≡ T0_S2;
      ensures 1 ≡ T0_S2;
    
    behavior buch_state_T0_S2_out:
      assumes 0 ≡ accept_S1 ∧ 0 ≡ T0_S2;
      ensures 0 ≡ T0_S2;
    
    behavior buch_state_T0_init_out:
      ensures 0 ≡ T0_init;
    
    behavior buch_state_accept_S1_out:
      ensures 0 ≡ accept_S1;
 */
extern void b_pre_func(void);

/*@ requires 1 ≡ T0_S2 ∧ 0 ≡ T0_init ∧ 0 ≡ accept_S1;
    ensures aorai_CurOpStatus ≡ aorai_Terminated;
    ensures aorai_CurOperation ≡ op_b;
    assigns aorai_CurOpStatus, aorai_CurOperation, T0_S2, T0_init, accept_S1;
    
    behavior buch_state_T0_S2_in:
      assumes 1 ≡ T0_S2;
      ensures 1 ≡ T0_S2;
    
    behavior buch_state_T0_S2_out:
      assumes 0 ≡ T0_S2;
      ensures 0 ≡ T0_S2;
    
    behavior buch_state_T0_init_out:
      ensures 0 ≡ T0_init;
    
    behavior buch_state_accept_S1_out:
      ensures 0 ≡ accept_S1;
 */
extern void b_post_func(int res);

/*@ requires (1 ≡ T0_S2 ∨ 1 ≡ accept_S1) ∧ 0 ≡ T0_init;
    requires 1 ≡ accept_S1 ∨ 0 ≡ accept_S1;
    requires 1 ≡ T0_S2 ∨ 0 ≡ T0_S2;
    requires \true;
    ensures 1 ≤ \result ≤ 2;
    
    behavior Buchi_property_behavior:
      ensures 0 ≡ T0_init ∧ 0 ≡ accept_S1;
      ensures 1 ≡ T0_S2;
 */
int b(void)
{
  int __retres;
  b_pre_func();
  call_to_an_undefined_function();
  __retres = 2;
  b_post_func(__retres);
  return __retres;
}

/*@ ensures aorai_CurOpStatus ≡ aorai_Called;
    ensures aorai_CurOperation ≡ op_main;
    assigns aorai_CurOpStatus, aorai_CurOperation, T0_S2, T0_init, accept_S1;
    
    behavior buch_state_T0_S2_out:
      ensures 0 ≡ T0_S2;
    
    behavior buch_state_T0_init_out:
      ensures 0 ≡ T0_init;
    
    behavior buch_state_accept_S1_in:
      assumes 1 ≡ T0_init;
      ensures 1 ≡ accept_S1;
    
    behavior buch_state_accept_S1_out:
      assumes 0 ≡ T0_init;
      ensures 0 ≡ accept_S1;
 */
extern void main_pre_func(void);

/*@ requires 1 ≡ accept_S1 ∧ 0 ≡ T0_S2 ∧ 0 ≡ T0_init;
    ensures aorai_CurOpStatus ≡ aorai_Terminated;
    ensures aorai_CurOperation ≡ op_main;
    assigns aorai_CurOpStatus, aorai_CurOperation, T0_S2, T0_init, accept_S1;
    
    behavior buch_state_T0_S2_out:
      ensures 0 ≡ T0_S2;
    
    behavior buch_state_T0_init_out:
      ensures 0 ≡ T0_init;
    
    behavior buch_state_accept_S1_in:
      assumes 1 ≡ accept_S1;
      ensures 1 ≡ accept_S1;
    
    behavior buch_state_accept_S1_out:
      assumes 0 ≡ accept_S1;
      ensures 0 ≡ accept_S1;
 */
extern void main_post_func(int res);

/*@ requires 1 ≡ T0_init ∧ 0 ≡ T0_S2 ∧ 0 ≡ accept_S1;
    requires \true;
    ensures 0 ≤ \result ≤ 1;
    
    behavior aorai_acceptance:
      ensures 1 ≡ accept_S1;
    
    behavior Buchi_property_behavior:
      ensures 0 ≡ T0_S2 ∧ 0 ≡ T0_init;
      ensures 1 ≡ accept_S1;
 */
int main(void)
{
  int aorai_Loop_Init_26;
  int x;
  int tmp_1;
  main_pre_func();
  x = a();
  /*@ ghost aorai_Loop_Init_26 = 1; */
  aorai_loop_26:
    /*@ loop invariant i: 0 ≤ x ≤ 11;
        loop invariant Aorai: 1 ≡ T0_S2 ∨ 0 ≡ T0_S2;
        loop invariant Aorai: 0 ≡ T0_init;
        loop invariant Aorai: 1 ≡ accept_S1 ∨ 0 ≡ accept_S1;
        loop invariant Aorai: 1 ≡ T0_S2 ∨ 1 ≡ accept_S1;
        loop invariant
          Aorai:
            aorai_Loop_Init_26 ≢ 0 ⇒
            \at(1 ≡ T0_init,Pre) ⇒ 0 ≡ T0_S2;
        loop invariant Aorai: aorai_Loop_Init_26 ≡ 0 ⇒ 0 ≡ accept_S1;
    */
    while (1) {
      if (! (x < 10)) goto while_0_break;
      /*@ ghost aorai_Loop_Init_26 = 0; */
      {
        int tmp_0;
        tmp_0 = b();
        x += tmp_0;
      }
    }
  while_0_break: ;
  tmp_1 = a();
  main_post_func(tmp_1);
  return tmp_1;
}


