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).