# frama-c -wp [...]
[kernel] Parsing FRAMAC_SHARE/libc/__fc_builtin_for_normalization.i (no preprocessing)
[kernel] Parsing tests/wp_typed/user_injector.i (no preprocessing)
[wp] Running WP plugin...
[wp] Loading driver 'share/wp.driver'
[wp] Collecting axiomatic usage
[wp] warning: Missing RTE guards
tests/wp_typed/user_injector.i:61:[wp] warning: Validity of unsized array not implemented yet (considered valid).
tests/wp_typed/user_injector.i:60:[wp] warning: Validity of unsized array not implemented yet (considered valid).
------------------------------------------------------------
  Function job
------------------------------------------------------------

Goal Post-condition 'SEQ' in 'job':
Let x_0 = service_cpt_4-1.
Let x_1 = service_result_0[x_0].
Let m_0 = service_id_6[x_0->a_0].
Assume {
  (* Domain *)
  Type: (is_sint32 job_0) /\ (is_sint32 service_cpt_4)
        /\ (is_sint32 service_result_0[service_cpt_4])
        /\ (is_sint32 (service_cpt_4-2)) /\ (is_sint32 x_0)
        /\ (IsArray1_sint32 m_0) /\ (is_sint32 x_1)
        /\ (IsArray1_sint32 m_0[service_cpt_4->b_0]).
  (* Heap *)
  Have: (linked Malloc_0) /\ ((region (base error_5))<=0).
  (* tests/wp_typed/user_injector.i:66: Conditional *)
  If: 0!=x_1
  Then {
    (* tests/wp_typed/user_injector.i:66: Conditional *)
    If: 0!=service_result_0[service_cpt_4]
    Then { (* tests/wp_typed/user_injector.i:66: Assignment *) Have: 1=job_0.
    }
    Else { (* tests/wp_typed/user_injector.i:66: Assignment *) Have: 0=job_0.
    }
  }
  Else { (* tests/wp_typed/user_injector.i:66: Assignment *) Have: 0=job_0. }
}
Prove: true.

------------------------------------------------------------

Goal Post-condition 'ID1' in 'job':
Let x_0 = service_result_0[service_cpt_1].
Let m_0 = service_id_6[service_cpt_1->a_0].
Let x_1 = 1+service_cpt_1.
Assume {
  (* Domain *)
  Type: (is_sint32 job_0) /\ (is_sint32 service_cpt_1)
        /\ (IsArray1_sint32 m_0) /\ (is_sint32 x_0)
        /\ (is_sint32 (service_cpt_1-1)) /\ (is_sint32 x_1)
        /\ (IsArray1_sint32 m_0[x_1->b_0])
        /\ (is_sint32 service_result_0[x_1]).
  (* Heap *)
  Have: (linked Malloc_0) /\ ((region (base error_5))<=0).
  (* tests/wp_typed/user_injector.i:66: Conditional *)
  If: 0!=x_0
  Then {
    (* tests/wp_typed/user_injector.i:66: Conditional *)
    If: 0!=service_result_0[x_1]
    Then { (* tests/wp_typed/user_injector.i:66: Assignment *) Have: 1=job_0.
    }
    Else { (* tests/wp_typed/user_injector.i:66: Assignment *) Have: 0=job_0.
    }
  }
  Else { (* tests/wp_typed/user_injector.i:66: Assignment *) Have: 0=job_0. }
}
Prove: true.

------------------------------------------------------------

Goal Post-condition 'ID2' in 'job':
Let x_0 = service_result_0[service_cpt_1].
Let m_0 = service_id_6[service_cpt_1->a_0].
Let x_1 = 1+service_cpt_1.
Assume {
  (* Domain *)
  Type: (is_sint32 job_0) /\ (is_sint32 service_cpt_1)
        /\ (IsArray1_sint32 m_0) /\ (is_sint32 x_0)
        /\ (is_sint32 (service_cpt_1-1)) /\ (is_sint32 x_1)
        /\ (IsArray1_sint32 m_0[x_1->b_0])
        /\ (is_sint32 service_result_0[x_1]).
  (* Heap *)
  Have: (linked Malloc_0) /\ ((region (base error_5))<=0).
  (* tests/wp_typed/user_injector.i:66: Conditional *)
  If: 0!=x_0
  Then {
    (* tests/wp_typed/user_injector.i:66: Conditional *)
    If: 0!=service_result_0[x_1]
    Then { (* tests/wp_typed/user_injector.i:66: Assignment *) Have: 1=job_0.
    }
    Else { (* tests/wp_typed/user_injector.i:66: Assignment *) Have: 0=job_0.
    }
  }
  Else { (* tests/wp_typed/user_injector.i:66: Assignment *) Have: 0=job_0. }
}
Prove: true.

------------------------------------------------------------

Goal Post-condition 'R1' in 'job':
Let x_0 = service_result_0[service_cpt_4].
Let x_1 = service_cpt_4-1.
Let x_2 = service_result_0[x_1].
Let m_0 = service_id_6[x_1->a_0].
Assume {
  (* Domain *)
  Type: (is_sint32 service_cpt_4) /\ (is_sint32 x_0)
        /\ (is_sint32 (service_cpt_4-2)) /\ (is_sint32 x_1)
        /\ (IsArray1_sint32 m_0) /\ (is_sint32 x_2)
        /\ (IsArray1_sint32 m_0[service_cpt_4->b_0]).
  (* Heap *)
  Have: (linked Malloc_0) /\ ((region (base error_5))<=0).
  (* tests/wp_typed/user_injector.i:66: Conditional *)
  Have: 0!=x_2.
  (* tests/wp_typed/user_injector.i:66: Conditional *)
  Have: 0!=x_0.
}
Prove: true.

------------------------------------------------------------

Goal Post-condition 'R2' in 'job':
Let x_0 = service_result_0[service_cpt_4].
Let x_1 = service_cpt_4-1.
Let x_2 = service_result_0[x_1].
Let m_0 = service_id_6[x_1->a_0].
Assume {
  (* Domain *)
  Type: (is_sint32 service_cpt_4) /\ (is_sint32 x_0)
        /\ (is_sint32 (service_cpt_4-2)) /\ (is_sint32 x_1)
        /\ (IsArray1_sint32 m_0) /\ (is_sint32 x_2)
        /\ (IsArray1_sint32 m_0[service_cpt_4->b_0]).
  (* Heap *)
  Have: (linked Malloc_0) /\ ((region (base error_5))<=0).
  (* tests/wp_typed/user_injector.i:66: Conditional *)
  Have: 0!=x_2.
  (* tests/wp_typed/user_injector.i:66: Conditional *)
  Have: 0!=x_0.
}
Prove: true.

------------------------------------------------------------

Goal Post-condition 'R0' in 'job':
Assume { }
Prove: true.

------------------------------------------------------------

Goal Post-condition 'E1' in 'job':
Let x_0 = service_cpt_4-1.
Let m_0 = service_id_6[x_0->a_0].
Assume {
  (* Domain *)
  Type: (is_sint32 service_cpt_4)
        /\ (is_sint32 service_result_0[service_cpt_4])
        /\ (is_sint32 (service_cpt_4-2)) /\ (is_sint32 x_0)
        /\ (IsArray1_sint32 m_0) /\ (IsArray1_sint32 m_0[service_cpt_4->b_0]).
  (* Goal *)
  When: 0=service_result_0[x_0].
  (* Heap *)
  Have: (linked Malloc_0) /\ ((region (base error_0))<=0).
}
Prove: true.

------------------------------------------------------------

Goal Post-condition 'E2' in 'job':
Let x_0 = service_cpt_4-1.
Let x_1 = service_result_0[x_0].
Let m_0 = service_id_6[x_0->a_0].
Assume {
  (* Domain *)
  Type: (is_sint32 service_cpt_4) /\ (is_sint32 (service_cpt_4-2))
        /\ (is_sint32 x_0) /\ (IsArray1_sint32 m_0) /\ (is_sint32 x_1)
        /\ (IsArray1_sint32 m_0[service_cpt_4->b_0]).
  (* Goal *)
  When: (0=service_result_0[service_cpt_4]) /\ (0!=x_1).
  (* Heap *)
  Have: (linked Malloc_0) /\ ((region (base error_0))<=0).
}
Prove: true.

------------------------------------------------------------

Goal Assigns 'A' in 'job' (1/3):
Assume { }
Prove: true.

------------------------------------------------------------

Goal Assigns 'A' in 'job' (2/3):
Effect at line 58
Assume {
  (* Domain *)
  Type: (is_sint32 Mint_0[error_0]).
  (* Goal *)
  When: (valid_rd Malloc_0 error_0 1).
  (* Heap *)
  Have: (linked Malloc_0) /\ ((region (base error_0))<=0).
}
Prove: true.

------------------------------------------------------------

Goal Assigns 'A' in 'job' (3/3):
Call Result at line 60
Assume { (* Heap *) Have: (linked Malloc_0) /\ ((region (base error_5))<=0).
}
Prove: true.

------------------------------------------------------------

Goal Assigns 'A' in 'job' (1/9):
Assume { }
Prove: true.

------------------------------------------------------------

Goal Assigns 'A' in 'job' (2/9):
Effect at line 58
Assume {
  (* Domain *)
  Type: (is_sint32 Mint_0[error_0]).
  (* Goal *)
  When: (valid_rd Malloc_0 error_0 1).
  (* Heap *)
  Have: (linked Malloc_0) /\ ((region (base error_0))<=0).
}
Prove: true.

------------------------------------------------------------

Goal Assigns 'A' in 'job' (3/9):
Call Result at line 60
Assume { (* Heap *) Have: (linked Malloc_0) /\ ((region (base error_5))<=0).
}
Prove: true.

------------------------------------------------------------

Goal Assigns 'A' in 'job' (4/9):
Call Result at line 61
Assume { (* Heap *) Have: (linked Malloc_0) /\ ((region (base error_5))<=0).
}
Prove: true.

------------------------------------------------------------

Goal Assigns 'A' in 'job' (5/9):
Effect at line 63
Let x_0 = service_cpt_4-1.
Let m_0 = service_id_6[x_0->a_0].
Assume {
  (* Domain *)
  Type: (is_sint32 service_cpt_4) /\ (is_sint32 Mint_0[error_2])
        /\ (is_sint32 service_result_0[service_cpt_4])
        /\ (is_sint32 (service_cpt_4-2)) /\ (is_sint32 x_0)
        /\ (IsArray1_sint32 m_0) /\ (IsArray1_sint32 m_0[service_cpt_4->b_0]).
  (* Goal *)
  When: (valid_rd Malloc_0 error_2 1).
  (* Heap *)
  Have: (linked Malloc_0) /\ ((region (base error_2))<=0).
  (* tests/wp_typed/user_injector.i:60: Call 'service' *)
  Have: 0=service_result_0[x_0].
}
Prove: true.

------------------------------------------------------------

Goal Assigns 'A' in 'job' (6/9):
Effect at line 64
Let x_0 = service_cpt_4-1.
Let x_1 = service_result_0[x_0].
Let m_0 = service_id_6[x_0->a_0].
Assume {
  (* Domain *)
  Type: (is_sint32 service_cpt_4) /\ (is_sint32 Mint_0[error_4])
        /\ (is_sint32 (service_cpt_4-2)) /\ (is_sint32 x_0)
        /\ (IsArray1_sint32 m_0) /\ (is_sint32 x_1)
        /\ (IsArray1_sint32 m_0[service_cpt_4->b_0]).
  (* Goal *)
  When: (valid_rd Malloc_0 error_4 1).
  (* Heap *)
  Have: (linked Malloc_0) /\ ((region (base error_4))<=0).
  (* tests/wp_typed/user_injector.i:61: Call 'service' *)
  Have: 0=service_result_0[service_cpt_4].
  (* tests/wp_typed/user_injector.i:63: Else *)
  Have: 0!=x_1.
}
Prove: true.

------------------------------------------------------------

Goal Assigns 'A' in 'job' (7/9):
Effect at line 66
Let x_0 = service_result_0[service_cpt_4].
Let x_1 = service_cpt_4-1.
Let x_2 = service_result_0[x_1].
Let m_0 = service_id_6[x_1->a_0].
Assume {
  (* Domain *)
  Type: (is_sint32 service_cpt_4) /\ (is_sint32 x_0)
        /\ (is_sint32 (service_cpt_4-2)) /\ (is_sint32 x_1)
        /\ (IsArray1_sint32 m_0) /\ (is_sint32 x_2)
        /\ (IsArray1_sint32 m_0[service_cpt_4->b_0]).
  (* Heap *)
  Have: (linked Malloc_0) /\ ((region (base error_5))<=0).
  (* tests/wp_typed/user_injector.i:66: Then *)
  Have: 0!=x_2.
  (* tests/wp_typed/user_injector.i:66: Then *)
  Have: 0!=x_0.
}
Prove: true.

------------------------------------------------------------

Goal Assigns 'A' in 'job' (8/9):
Effect at line 66
Let x_0 = service_cpt_4-1.
Let x_1 = service_result_0[x_0].
Let m_0 = service_id_6[x_0->a_0].
Assume {
  (* Domain *)
  Type: (is_sint32 service_cpt_4) /\ (is_sint32 (service_cpt_4-2))
        /\ (is_sint32 x_0) /\ (IsArray1_sint32 m_0) /\ (is_sint32 x_1)
        /\ (IsArray1_sint32 m_0[service_cpt_4->b_0]).
  (* Heap *)
  Have: (linked Malloc_0) /\ ((region (base error_5))<=0).
  (* tests/wp_typed/user_injector.i:61: Call 'service' *)
  Have: 0=service_result_0[service_cpt_4].
  (* tests/wp_typed/user_injector.i:66: Then *)
  Have: 0!=x_1.
}
Prove: true.

------------------------------------------------------------

Goal Assigns 'A' in 'job' (9/9):
Effect at line 66
Let x_0 = service_cpt_4-1.
Let m_0 = service_id_6[x_0->a_0].
Assume {
  (* Domain *)
  Type: (is_sint32 service_cpt_4)
        /\ (is_sint32 service_result_0[service_cpt_4])
        /\ (is_sint32 (service_cpt_4-2)) /\ (is_sint32 x_0)
        /\ (IsArray1_sint32 m_0) /\ (IsArray1_sint32 m_0[service_cpt_4->b_0]).
  (* Heap *)
  Have: (linked Malloc_0) /\ ((region (base error_5))<=0).
  (* tests/wp_typed/user_injector.i:60: Call 'service' *)
  Have: 0=service_result_0[x_0].
}
Prove: true.

------------------------------------------------------------
