(* 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_tuchar {cs: compspecs} sh n n1 n2 (v: list val) p:
0 <= n1 <= n2 ->
n2 <= n ->
Zlength v = n ->
data_at sh (Tarray tuchar n noattr) v p =
data_at sh (Tarray tuchar n1 noattr) (sublist 0 n1 v) p *
data_at sh (Tarray tuchar (n2 - n1) noattr) (sublist n1 n2 v) (field_address0 (Tarray tuchar n noattr) (ArraySubsc n1::nil) p) *
data_at sh (Tarray tuchar (n - n2) noattr) (sublist n2 n v) (field_address0 (Tarray tuchar n noattr) (ArraySubsc n2::nil) p).