Ltac solve_ptr_derives :=
  repeat rewrite isptr_offset_val;
  apply derives_refl.

Lemma split3_array_at: forall sh t gfs lo mid hi v v0 p, lo <= mid < hi -> Zlength v = hi-lo -> JMeq v0 (Znth (mid-lo) v) -> array_at sh t gfs lo hi v p = array_at sh t gfs lo mid (sublist 0 (mid-lo) v) p * field_at sh t (ArraySubsc mid :: gfs) v0 p * array_at sh t gfs (mid + 1) hi (sublist (mid+1-lo) (hi-lo) v) p.