[kernel] Parsing FRAMAC_SHARE/libc/__fc_builtin_for_normalization.i (no preprocessing)
[kernel] Parsing tests/aorai/test_boucle2.c (with preprocessing)
[aorai] Welcome to the Aorai plugin
[kernel] Parsing FRAMAC_SHARE/libc/__fc_builtin_for_normalization.i (no preprocessing)
[kernel] Parsing /tmp/aorai_test_boucle20.i (no preprocessing)
/* Generated by Frama-C */
enum aorai_ListOper {
    op_main = 2,
    op_opa = 1,
    op_opb = 0
};
enum aorai_OpStatusList {
    aorai_Terminated = 1,
    aorai_Called = 0
};
int status = 0;
int rr = 1;
/*@ global invariant inv: 0 ≤ rr ≤ 50;
 */
/*@ 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_S3 = 0; */
/*@ ghost int accept_S4 = 0; */
/*@ ghost int accept_S5 = 0; */
/*@ ghost int accept_all = 0; */
/*@ ensures aorai_CurOpStatus ≡ aorai_Called;
    ensures aorai_CurOperation ≡ op_opa;
    assigns aorai_CurOpStatus, aorai_CurOperation, T0_S2, T0_init, accept_S3,
            accept_S4, accept_S5, accept_all;
    
    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_S3_out:
      ensures 0 ≡ accept_S3;
    
    behavior buch_state_accept_S4_out:
      ensures 0 ≡ accept_S4;
    
    behavior buch_state_accept_S5_out:
      ensures 0 ≡ accept_S5;
    
    behavior buch_state_accept_all_out:
      ensures 0 ≡ accept_all;
 */
extern void opa_pre_func(void);

/*@ requires
      1 ≡ T0_S2 ∧ 0 ≡ T0_init ∧ 0 ≡ accept_S3 ∧
      0 ≡ accept_S4 ∧ 0 ≡ accept_S5 ∧ 0 ≡ accept_all;
    ensures aorai_CurOpStatus ≡ aorai_Terminated;
    ensures aorai_CurOperation ≡ op_opa;
    assigns aorai_CurOpStatus, aorai_CurOperation, T0_S2, T0_init, accept_S3,
            accept_S4, accept_S5, accept_all;
    
    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_S3_in:
      assumes 1 ≡ T0_S2 ∧ rr ≡ 51;
      ensures 1 ≡ accept_S3;
    
    behavior buch_state_accept_S3_out:
      assumes 0 ≡ T0_S2 ∨ ¬(rr ≡ 51);
      ensures 0 ≡ accept_S3;
    
    behavior buch_state_accept_S4_out:
      ensures 0 ≡ accept_S4;
    
    behavior buch_state_accept_S5_out:
      ensures 0 ≡ accept_S5;
    
    behavior buch_state_accept_all_out:
      ensures 0 ≡ accept_all;
 */
extern void opa_post_func(void);

/*@ requires
      1 ≡ T0_S2 ∧ 0 ≡ T0_init ∧ 0 ≡ accept_S3 ∧
      0 ≡ accept_S4 ∧ 0 ≡ accept_S5 ∧ 0 ≡ accept_all;
    requires rr < 50;
    
    behavior j:
      ensures rr < 51;
    
    behavior Buchi_property_behavior:
      ensures 1 ≡ accept_S3 ⇒ rr ≡ 51;
      ensures 1 ≡ T0_S2 ∨ 0 ≡ T0_S2;
      ensures 1 ≡ accept_S3 ∨ 0 ≡ accept_S3;
      ensures
        0 ≡ T0_init ∧ 0 ≡ accept_S4 ∧ 0 ≡ accept_S5 ∧
        0 ≡ accept_all;
      ensures 1 ≡ T0_S2 ∨ 1 ≡ accept_S3;
 */
void opa(void)
{
  opa_pre_func();
  rr ++;
  opa_post_func();
  return;
}

/*@ ensures aorai_CurOpStatus ≡ aorai_Called;
    ensures aorai_CurOperation ≡ op_opb;
    assigns aorai_CurOpStatus, aorai_CurOperation, T0_S2, T0_init, accept_S3,
            accept_S4, accept_S5, accept_all;
    
    behavior buch_state_T0_S2_out:
      ensures 0 ≡ T0_S2;
    
    behavior buch_state_T0_init_out:
      ensures 0 ≡ T0_init;
    
    behavior buch_state_accept_S3_out:
      ensures 0 ≡ accept_S3;
    
    behavior buch_state_accept_S4_in:
      assumes 1 ≡ accept_S3;
      ensures 1 ≡ accept_S4;
    
    behavior buch_state_accept_S4_out:
      assumes 0 ≡ accept_S3;
      ensures 0 ≡ accept_S4;
    
    behavior buch_state_accept_S5_out:
      ensures 0 ≡ accept_S5;
    
    behavior buch_state_accept_all_out:
      ensures 0 ≡ accept_all;
 */
extern void opb_pre_func(void);

/*@ requires
      1 ≡ accept_S4 ∧ 0 ≡ T0_S2 ∧ 0 ≡ T0_init ∧
      0 ≡ accept_S3 ∧ 0 ≡ accept_S5 ∧ 0 ≡ accept_all;
    ensures aorai_CurOpStatus ≡ aorai_Terminated;
    ensures aorai_CurOperation ≡ op_opb;
    assigns aorai_CurOpStatus, aorai_CurOperation, T0_S2, T0_init, accept_S3,
            accept_S4, accept_S5, accept_all;
    
    behavior buch_state_T0_S2_out:
      ensures 0 ≡ T0_S2;
    
    behavior buch_state_T0_init_out:
      ensures 0 ≡ T0_init;
    
    behavior buch_state_accept_S3_out:
      ensures 0 ≡ accept_S3;
    
    behavior buch_state_accept_S4_out:
      ensures 0 ≡ accept_S4;
    
    behavior buch_state_accept_S5_in:
      assumes 1 ≡ accept_S4;
      ensures 1 ≡ accept_S5;
    
    behavior buch_state_accept_S5_out:
      assumes 0 ≡ accept_S4;
      ensures 0 ≡ accept_S5;
    
    behavior buch_state_accept_all_out:
      ensures 0 ≡ accept_all;
 */
extern void opb_post_func(void);

/*@ requires
      1 ≡ accept_S3 ∧ 0 ≡ T0_S2 ∧ 0 ≡ T0_init ∧
      0 ≡ accept_S4 ∧ 0 ≡ accept_S5 ∧ 0 ≡ accept_all;
    
    behavior Buchi_property_behavior:
      ensures
        0 ≡ T0_S2 ∧ 0 ≡ T0_init ∧ 0 ≡ accept_S3 ∧
        0 ≡ accept_S4 ∧ 0 ≡ accept_all;
      ensures 1 ≡ accept_S5;
 */
void opb(void)
{
  opb_pre_func();
  status = 1;
  opb_post_func();
  return;
}

/*@ ensures aorai_CurOpStatus ≡ aorai_Called;
    ensures aorai_CurOperation ≡ op_main;
    assigns aorai_CurOpStatus, aorai_CurOperation, T0_S2, T0_init, accept_S3,
            accept_S4, accept_S5, accept_all;
    
    behavior buch_state_T0_S2_in:
      assumes 1 ≡ T0_init;
      ensures 1 ≡ T0_S2;
    
    behavior buch_state_T0_S2_out:
      assumes 0 ≡ T0_init;
      ensures 0 ≡ T0_S2;
    
    behavior buch_state_T0_init_out:
      ensures 0 ≡ T0_init;
    
    behavior buch_state_accept_S3_out:
      ensures 0 ≡ accept_S3;
    
    behavior buch_state_accept_S4_out:
      ensures 0 ≡ accept_S4;
    
    behavior buch_state_accept_S5_out:
      ensures 0 ≡ accept_S5;
    
    behavior buch_state_accept_all_out:
      ensures 0 ≡ accept_all;
 */
extern void main_pre_func(void);

/*@ requires
      1 ≡ accept_S5 ∧ 0 ≡ T0_S2 ∧ 0 ≡ T0_init ∧
      0 ≡ accept_S3 ∧ 0 ≡ accept_S4 ∧ 0 ≡ accept_all;
    ensures aorai_CurOpStatus ≡ aorai_Terminated;
    ensures aorai_CurOperation ≡ op_main;
    assigns aorai_CurOpStatus, aorai_CurOperation, T0_S2, T0_init, accept_S3,
            accept_S4, accept_S5, accept_all;
    
    behavior buch_state_T0_S2_out:
      ensures 0 ≡ T0_S2;
    
    behavior buch_state_T0_init_out:
      ensures 0 ≡ T0_init;
    
    behavior buch_state_accept_S3_out:
      ensures 0 ≡ accept_S3;
    
    behavior buch_state_accept_S4_out:
      ensures 0 ≡ accept_S4;
    
    behavior buch_state_accept_S5_out:
      ensures 0 ≡ accept_S5;
    
    behavior buch_state_accept_all_in:
      assumes 1 ≡ accept_S5;
      ensures 1 ≡ accept_all;
    
    behavior buch_state_accept_all_out:
      assumes 0 ≡ accept_S5;
      ensures 0 ≡ accept_all;
 */
extern void main_post_func(int res);

/*@ requires
      1 ≡ T0_init ∧ 0 ≡ T0_S2 ∧ 0 ≡ accept_S3 ∧
      0 ≡ accept_S4 ∧ 0 ≡ accept_S5 ∧ 0 ≡ accept_all;
    
    behavior aorai_acceptance:
      ensures
        1 ≡ accept_S3 ∨ 1 ≡ accept_S4 ∨ 1 ≡ accept_S5 ∨
        1 ≡ accept_all;
    
    behavior Buchi_property_behavior:
      ensures
        0 ≡ T0_S2 ∧ 0 ≡ T0_init ∧ 0 ≡ accept_S3 ∧
        0 ≡ accept_S4 ∧ 0 ≡ accept_S5;
      ensures 1 ≡ accept_all;
 */
int main(void)
{
  int aorai_Loop_Init_26;
  int __retres;
  /*@ ghost int tmp; */
  main_pre_func();
  /*@ ghost aorai_Loop_Init_26 = 1; */
  aorai_loop_26:
    /*@ loop invariant 0 ≤ rr ≤ 50;
        loop invariant Aorai: 1 ≡ T0_S2 ∨ 0 ≡ T0_S2;
        loop invariant Aorai: 0 ≡ T0_init;
        loop invariant Aorai: 1 ≡ accept_S3 ∨ 0 ≡ accept_S3;
        loop invariant Aorai: 0 ≡ accept_S4;
        loop invariant Aorai: 0 ≡ accept_S5;
        loop invariant Aorai: 0 ≡ accept_all;
        loop invariant Aorai: 1 ≡ T0_S2 ∨ 1 ≡ accept_S3;
        loop invariant
          Aorai:
            aorai_Loop_Init_26 ≢ 0 ⇒
            \at(1 ≡ T0_init,Pre) ⇒ 0 ≡ accept_S3;
    */
    while (1) {
      if (! (rr < 50)) goto while_0_break;
      /*@ ghost aorai_Loop_Init_26 = 0; */
      opa();
    }
  while_0_break: ;
  opb();
  /*@ ghost tmp = 1; */
  /*@ ghost tmp = 0; */
  __retres = 1;
  main_post_func(__retres);
  return __retres;
}


