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* array_at sh t gfs ml mr (sublist (ml-lo) (mr-lo) v) p * array_at sh t gfs mr hi (sublist (mr-lo) (hi-lo) v) p.