Ltac solve_ptr_derives :=
  repeat rewrite isptr_offset_val;
  apply derives_refl.

Lemma split3seg_array_at': forall sh t gfs lo ml mr hi v p, lo <= ml -> ml <= mr -> mr <= hi -> Zlength v = hi-lo -> array_at sh t gfs lo hi v p = array_at sh t gfs lo ml (sublist 0 (ml-lo) v) p* data_at sh (nested_field_array_type t gfs ml mr) (sublist (ml-lo) (mr-lo) v) (field_address0 t (ArraySubsc ml::gfs) p) * array_at sh t gfs mr hi (sublist (mr-lo) (hi-lo) v) p.