(* Hint Extern 2 (field_compatible0 (Tarray _ _ _) (ArraySubsc _ :: nil) _) => (eapply field_compatible0_Tarray_offset; [eassumption | omega | omega]) : field_compatible.  Hint Extern 2 (field_compatible0 (tarray _ _) (ArraySubsc _ :: nil) _) => (eapply field_compatible0_Tarray_offset; [eassumption | omega | omega]) : field_compatible. *)

Lemma split3_data_at_Tarray {cs: compspecs} sh t n n1 n2 v (v' v1 v2 v3: list (reptype t)) p:
naturally_aligned t ->
0 <= n1 <= n2 ->
n2 <= n <= Zlength v' ->
v = (sublist 0 n v') ->
v1 = (sublist 0 n1 v') ->
v2 = (sublist n1 n2 v') ->
v3 = (sublist n2 n v') ->
data_at sh (Tarray t n noattr) v p =
data_at sh (Tarray t n1 noattr) v1 p *
data_at sh (Tarray t (n2 - n1) noattr) v2 (field_address0 (Tarray t n noattr) (ArraySubsc n1::nil) p) *
data_at sh (Tarray t (n - n2) noattr) v3 (field_address0 (Tarray t n noattr) (ArraySubsc n2::nil) p).