[kernel] Parsing FRAMAC_SHARE/libc/__fc_builtin_for_normalization.i (no preprocessing)
[kernel] Parsing tests/aorai/test_struct.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_struct0.i (no preprocessing)
/* Generated by Frama-C */
struct People {
   int Age ;
   char Gender ;
};
enum aorai_ListOper {
    op_increment = 1,
    op_main = 0
};
enum aorai_OpStatusList {
    aorai_Terminated = 1,
    aorai_Called = 0
};
struct People nobody;
int myAge = 0;
/*@ ghost enum aorai_ListOper aorai_CurOperation = op_main; */
/*@ ghost enum aorai_OpStatusList aorai_CurOpStatus = aorai_Called; */
/*@ ghost int S1 = 0; */
/*@ ghost int main_0 = 1; */
/*@ ensures aorai_CurOpStatus ≡ aorai_Called;
    ensures aorai_CurOperation ≡ op_increment;
    assigns aorai_CurOpStatus, aorai_CurOperation, S1, main_0;
    
    behavior buch_state_S1_in:
      assumes 1 ≡ S1 ∧ nobody.Age ≡ 1;
      ensures 1 ≡ S1;
    
    behavior buch_state_S1_out:
      assumes 0 ≡ S1 ∨ ¬(nobody.Age ≡ 1);
      ensures 0 ≡ S1;
    
    behavior buch_state_main_0_out:
      ensures 0 ≡ main_0;
 */
extern void increment_pre_func(void);

/*@ requires 1 ≡ S1 ∧ 0 ≡ main_0;
    requires 1 ≡ S1 ⇒ nobody.Age ≡ 1;
    ensures aorai_CurOpStatus ≡ aorai_Terminated;
    ensures aorai_CurOperation ≡ op_increment;
    assigns aorai_CurOpStatus, aorai_CurOperation, S1, main_0;
    
    behavior buch_state_S1_in:
      assumes 1 ≡ S1 ∧ nobody.Age ≡ 1;
      ensures 1 ≡ S1;
    
    behavior buch_state_S1_out:
      assumes 0 ≡ S1 ∨ ¬(nobody.Age ≡ 1);
      ensures 0 ≡ S1;
    
    behavior buch_state_main_0_out:
      ensures 0 ≡ main_0;
 */
extern void increment_post_func(void);

/*@ requires 1 ≡ S1 ∧ 0 ≡ main_0;
    requires 1 ≡ S1 ⇒ nobody.Age ≡ 1;
    
    behavior Buchi_property_behavior:
      ensures 1 ≡ S1 ⇒ nobody.Age ≡ 1;
      ensures 0 ≡ main_0;
      ensures 1 ≡ S1;
 */
void increment(void)
{
  increment_pre_func();
  (nobody.Age) ++;
  myAge ++;
  increment_post_func();
  return;
}

/*@ ensures aorai_CurOpStatus ≡ aorai_Called;
    ensures aorai_CurOperation ≡ op_main;
    assigns aorai_CurOpStatus, aorai_CurOperation, S1, main_0;
    
    behavior buch_state_S1_in:
      assumes 1 ≡ main_0 ∧ nobody.Age ≡ 0;
      ensures 1 ≡ S1;
    
    behavior buch_state_S1_out:
      assumes 0 ≡ main_0 ∨ ¬(nobody.Age ≡ 0);
      ensures 0 ≡ S1;
    
    behavior buch_state_main_0_out:
      ensures 0 ≡ main_0;
 */
extern void main_pre_func(void);

/*@ requires 1 ≡ S1 ∧ 0 ≡ main_0;
    requires 1 ≡ S1 ⇒ nobody.Age ≡ 1;
    ensures aorai_CurOpStatus ≡ aorai_Terminated;
    ensures aorai_CurOperation ≡ op_main;
    assigns aorai_CurOpStatus, aorai_CurOperation, S1, main_0;
    
    behavior buch_state_S1_in:
      assumes 1 ≡ S1 ∧ nobody.Age ≡ 1;
      ensures 1 ≡ S1;
    
    behavior buch_state_S1_out:
      assumes 0 ≡ S1 ∨ ¬(nobody.Age ≡ 1);
      ensures 0 ≡ S1;
    
    behavior buch_state_main_0_out:
      ensures 0 ≡ main_0;
 */
extern void main_post_func(int res);

/*@ requires 1 ≡ main_0 ∧ 0 ≡ S1;
    requires 1 ≡ main_0 ⇒ nobody.Age ≡ 0;
    
    behavior aorai_acceptance:
      ensures 1 ≡ S1 ∨ 1 ≡ main_0;
    
    behavior Buchi_property_behavior:
      ensures 1 ≡ S1 ⇒ nobody.Age ≡ 1;
      ensures 0 ≡ main_0;
      ensures 1 ≡ S1;
 */
int main(void)
{
  int __retres;
  main_pre_func();
  nobody.Age = 0;
  increment();
  __retres = 0;
  main_post_func(__retres);
  return __retres;
}


