[kernel] Parsing FRAMAC_SHARE/libc/__fc_builtin_for_normalization.i (no preprocessing)
[kernel] Parsing tests/aorai/hoare_seq.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_hoare_seq0.i (no preprocessing)
/* Generated by Frama-C */
enum aorai_ListOper {
    op_f = 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 S0 = 1; */
/*@ ghost int Sf = 0; */
/*@ ghost int aorai_intermediate_state = 0; */
/*@ ghost int aorai_intermediate_state_0 = 0; */
/*@ ghost int aorai_intermediate_state_1 = 0; */
/*@ ghost int aorai_intermediate_state_2 = 0; */
/*@ ghost int aorai_reject = 0; */
/*@ ensures aorai_CurOpStatus ≡ aorai_Called;
    ensures aorai_CurOperation ≡ op_f;
    assigns aorai_CurOpStatus, aorai_CurOperation, S0, Sf,
            aorai_intermediate_state, aorai_intermediate_state_0,
            aorai_intermediate_state_1, aorai_intermediate_state_2,
            aorai_reject;
    
    behavior buch_state_S0_out:
      ensures 0 ≡ S0;
    
    behavior buch_state_Sf_out:
      ensures 0 ≡ Sf;
    
    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_aorai_intermediate_state_1_in:
      assumes 1 ≡ aorai_intermediate_state_0;
      ensures 1 ≡ aorai_intermediate_state_1;
    
    behavior buch_state_aorai_intermediate_state_1_out:
      assumes 0 ≡ aorai_intermediate_state_0;
      ensures 0 ≡ aorai_intermediate_state_1;
    
    behavior buch_state_aorai_intermediate_state_2_out:
      ensures 0 ≡ aorai_intermediate_state_2;
    
    behavior buch_state_aorai_reject_in:
      assumes 1 ≡ aorai_intermediate_state;
      ensures 1 ≡ aorai_reject;
    
    behavior buch_state_aorai_reject_out:
      assumes 0 ≡ aorai_intermediate_state;
      ensures 0 ≡ aorai_reject;
 */
extern void f_pre_func(void);

/*@ requires
      1 ≡ aorai_intermediate_state_1 ∧ 0 ≡ S0 ∧ 0 ≡ Sf ∧
      0 ≡ aorai_intermediate_state ∧ 0 ≡ aorai_intermediate_state_0 ∧
      0 ≡ aorai_intermediate_state_2;
    ensures aorai_CurOpStatus ≡ aorai_Terminated;
    ensures aorai_CurOperation ≡ op_f;
    assigns aorai_CurOpStatus, aorai_CurOperation, S0, Sf,
            aorai_intermediate_state, aorai_intermediate_state_0,
            aorai_intermediate_state_1, aorai_intermediate_state_2,
            aorai_reject;
    
    behavior buch_state_S0_out:
      ensures 0 ≡ S0;
    
    behavior buch_state_Sf_out:
      ensures 0 ≡ Sf;
    
    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_aorai_intermediate_state_1_out:
      ensures 0 ≡ aorai_intermediate_state_1;
    
    behavior buch_state_aorai_intermediate_state_2_in:
      assumes 1 ≡ aorai_intermediate_state_1;
      ensures 1 ≡ aorai_intermediate_state_2;
    
    behavior buch_state_aorai_intermediate_state_2_out:
      assumes 0 ≡ aorai_intermediate_state_1;
      ensures 0 ≡ aorai_intermediate_state_2;
    
    behavior buch_state_aorai_reject_in:
      assumes 1 ≡ aorai_reject;
      ensures 1 ≡ aorai_reject;
    
    behavior buch_state_aorai_reject_out:
      assumes 0 ≡ aorai_reject;
      ensures 0 ≡ aorai_reject;
 */
extern void f_post_func(void);

/*@ requires
      1 ≡ aorai_intermediate_state_0 ∧ 0 ≡ S0 ∧ 0 ≡ Sf ∧
      0 ≡ aorai_intermediate_state_1 ∧
      0 ≡ aorai_intermediate_state_2 ∧ 0 ≡ aorai_reject;
    requires
      1 ≡ aorai_intermediate_state_0 ∨ 0 ≡ aorai_intermediate_state_0;
    requires
      1 ≡ aorai_intermediate_state ∨ 0 ≡ aorai_intermediate_state;
    ensures 1 ≡ aorai_intermediate_state_2;
    
    behavior Buchi_behavior_in_0:
      assumes 1 ≡ aorai_intermediate_state_0;
      ensures 1 ≡ aorai_intermediate_state_2;
    
    behavior Buchi_behavior_in_1:
      assumes 1 ≡ aorai_intermediate_state;
      ensures 1 ≡ aorai_reject;
    
    behavior Buchi_behavior_out_0:
      ensures 0 ≡ S0;
    
    behavior Buchi_behavior_out_1:
      ensures 0 ≡ Sf;
    
    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 ≡ aorai_intermediate_state_1;
    
    behavior Buchi_behavior_out_5:
      assumes 0 ≡ aorai_intermediate_state_0;
      ensures 0 ≡ aorai_intermediate_state_2;
    
    behavior Buchi_behavior_out_6:
      assumes 0 ≡ aorai_intermediate_state;
      ensures 0 ≡ aorai_reject;
 */
void f(void)
{
  f_pre_func();
  f_post_func();
  return;
}

/*@ ensures aorai_CurOpStatus ≡ aorai_Called;
    ensures aorai_CurOperation ≡ op_main;
    assigns aorai_CurOpStatus, aorai_CurOperation, S0, Sf,
            aorai_intermediate_state, aorai_intermediate_state_0,
            aorai_intermediate_state_1, aorai_intermediate_state_2,
            aorai_reject;
    
    behavior buch_state_S0_out:
      ensures 0 ≡ S0;
    
    behavior buch_state_Sf_out:
      ensures 0 ≡ Sf;
    
    behavior buch_state_aorai_intermediate_state_in:
      assumes 1 ≡ S0 ∧ c > 0;
      ensures 1 ≡ aorai_intermediate_state;
    
    behavior buch_state_aorai_intermediate_state_out:
      assumes 0 ≡ S0 ∨ ¬(c > 0);
      ensures 0 ≡ aorai_intermediate_state;
    
    behavior buch_state_aorai_intermediate_state_0_in:
      assumes 1 ≡ S0 ∧ c ≤ 0;
      ensures 1 ≡ aorai_intermediate_state_0;
    
    behavior buch_state_aorai_intermediate_state_0_out:
      assumes 0 ≡ S0 ∨ ¬(c ≤ 0);
      ensures 0 ≡ aorai_intermediate_state_0;
    
    behavior buch_state_aorai_intermediate_state_1_out:
      ensures 0 ≡ aorai_intermediate_state_1;
    
    behavior buch_state_aorai_intermediate_state_2_out:
      ensures 0 ≡ aorai_intermediate_state_2;
    
    behavior buch_state_aorai_reject_out:
      ensures 0 ≡ aorai_reject;
 */
extern void main_pre_func(int c);

/*@ requires
      (1 ≡ aorai_intermediate_state ∨ 1 ≡ aorai_intermediate_state_0 ∨
       1 ≡ aorai_intermediate_state_2) ∧
      0 ≡ S0 ∧ 0 ≡ Sf ∧ 0 ≡ aorai_intermediate_state_1;
    requires 1 ≡ aorai_intermediate_state_2 ⇒ res ≡ 0 ∨ res ≢ 0;
    ensures aorai_CurOpStatus ≡ aorai_Terminated;
    ensures aorai_CurOperation ≡ op_main;
    assigns aorai_CurOpStatus, aorai_CurOperation, S0, Sf,
            aorai_intermediate_state, aorai_intermediate_state_0,
            aorai_intermediate_state_1, aorai_intermediate_state_2,
            aorai_reject;
    
    behavior buch_state_S0_out:
      ensures 0 ≡ S0;
    
    behavior buch_state_Sf_in:
      assumes
        (1 ≡ aorai_intermediate_state_2 ∧ res ≡ 0) ∨
        1 ≡ aorai_intermediate_state;
      ensures 1 ≡ Sf;
    
    behavior buch_state_Sf_out:
      assumes
        (0 ≡ aorai_intermediate_state_2 ∨ ¬(res ≡ 0)) ∧
        0 ≡ aorai_intermediate_state;
      ensures 0 ≡ Sf;
    
    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_aorai_intermediate_state_1_out:
      ensures 0 ≡ aorai_intermediate_state_1;
    
    behavior buch_state_aorai_intermediate_state_2_out:
      ensures 0 ≡ aorai_intermediate_state_2;
    
    behavior buch_state_aorai_reject_in:
      assumes
        1 ≡ aorai_reject ∨
        (1 ≡ aorai_intermediate_state_2 ∧ res ≢ 0) ∨
        1 ≡ aorai_intermediate_state_0;
      ensures 1 ≡ aorai_reject;
    
    behavior buch_state_aorai_reject_out:
      assumes
        0 ≡ aorai_reject ∧
        (0 ≡ aorai_intermediate_state_2 ∨ res ≡ 0) ∧
        0 ≡ aorai_intermediate_state_0;
      ensures 0 ≡ aorai_reject;
 */
extern void main_post_func(int res);

/*@ requires
      1 ≡ S0 ∧ 0 ≡ Sf ∧ 0 ≡ aorai_intermediate_state ∧
      0 ≡ aorai_intermediate_state_0 ∧
      0 ≡ aorai_intermediate_state_1 ∧
      0 ≡ aorai_intermediate_state_2 ∧ 0 ≡ aorai_reject;
    requires 1 ≡ S0 ⇒ c > 0 ∨ c ≤ 0;
    ensures 1 ≡ Sf;
    
    behavior bhv:
      assumes c > 0;
      ensures \result ≡ 0;
    
    behavior aorai_acceptance:
      ensures 1 ≡ Sf;
    
    behavior Buchi_property_behavior:
      ensures 1 ≡ Sf ∨ 0 ≡ Sf;
      ensures 1 ≡ aorai_reject ∨ 0 ≡ aorai_reject;
      ensures
        0 ≡ S0 ∧ 0 ≡ aorai_intermediate_state ∧
        0 ≡ aorai_intermediate_state_0 ∧
        0 ≡ aorai_intermediate_state_1 ∧ 0 ≡ aorai_intermediate_state_2;
      ensures 1 ≡ Sf ∨ 1 ≡ aorai_reject;
 */
int main(int c)
{
  int __retres;
  main_pre_func(c);
  if (c <= 0) f();
  __retres = 0;
  main_post_func(__retres);
  return __retres;
}


