# frama-c -wp [...]
[kernel] Parsing FRAMAC_SHARE/libc/__fc_builtin_for_normalization.i (no preprocessing)
[kernel] Parsing tests/wp/sharing.c (with preprocessing)
[wp] Running WP plugin...
[wp] Loading driver 'share/wp.driver'
[wp] Collecting axiomatic usage
[wp] warning: Missing RTE guards
[wp] 1 goal scheduled
[wp:print-generated] (* ---------------------------------------------------------- *)
                     (* --- Post-condition (file tests/wp/sharing.c, line 8) in 'f' --- *)
                     (* ---------------------------------------------------------- *)
                     
                     goal f_post:
                       forall i_1,i : int.
                       forall t : int farray.
                       forall t_1 : (addr,int) farray.
                       forall a : addr.
                       let a_1 = shift_sint32(a, 0) : addr in
                       let a_2 = shift_sint32(a, i) : addr in
                       let m = t_1[a_1 <- t_1[a_2]] : (addr,int) farray in
                       let m_1 = m[shift_sint32(a, 1) <- m[a_2]] : (addr,int) farray in
                       let m_2 = m_1[shift_sint32(a, 2) <- m_1[a_2]] : (addr,int) farray in
                       let m_3 = m_2[shift_sint32(a, 3) <- m_2[a_2]] : (addr,int) farray in
                       (0 <= i) ->
                       (0 <= i_1) ->
                       (i <= 9) ->
                       (i_1 <= 9) ->
                       linked(t) ->
                       is_sint32(i) ->
                       (region(a.base) <= 0) ->
                       valid_rw(t, a_1, 10) ->
                       (forall i_2 : int. (0 <= i_2) -> (i_2 <= 9) ->
                        (0 <= t_1[shift_sint32(a, i_2)])) ->
                       (0 <= m_3[shift_sint32(a, 4) <- m_3[a_2]][shift_sint32(a, i_1)])
[wp] 1 goal generated
------------------------------------------------------------
  Function f
------------------------------------------------------------

Goal Post-condition (file tests/wp/sharing.c, line 8) in 'f':
Let a_0 = (shift_sint32 t_0 0).
Let a_1 = (shift_sint32 t_0 x_0).
Let m_0 = Mint_5[a_0->Mint_5[a_1]].
Let m_1 = m_0[(shift_sint32 t_0 1)->m_0[a_1]].
Let m_2 = m_1[(shift_sint32 t_0 2)->m_1[a_1]].
Let m_3 = m_2[(shift_sint32 t_0 3)->m_2[a_1]].
Assume {
  (* Domain *)
  Type: (is_sint32 x_0).
  (* Goal *)
  When: (0<=i_0) /\ (i_0<=9).
  (* Heap *)
  Have: (linked Malloc_0) /\ ((region (base t_0))<=0).
  (* Pre-condition (file tests/wp/sharing.c, line 5) in 'f' *)
  (* Pre-condition: *)
  Have: (valid_rw Malloc_0 a_0 10).
  (* Pre-condition (file tests/wp/sharing.c, line 6) in 'f' *)
  (* Pre-condition: *)
  Have: (0<=x_0) /\ (x_0<=9).
  (* Pre-condition (file tests/wp/sharing.c, line 7) in 'f' *)
  (* Pre-condition: *)
  Have: forall i_1:int.
        (0<=i_1) -> (i_1<=9) -> (0<=Mint_5[(shift_sint32 t_0 i_1)]).
}
Prove: 0<=m_3[(shift_sint32 t_0 4)->m_3[a_1]][(shift_sint32 t_0 i_0)].

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