Ltac solve_ptr_derives :=
  repeat rewrite isptr_offset_val;
  apply derives_refl.

Lemma array_at_data_at': forall sh t gfs lo hi v p, lo <= hi -> field_compatible0 t (ArraySubsc lo :: gfs) p -> field_compatible0 t (ArraySubsc hi :: gfs) p -> array_at sh t gfs lo hi v p = data_at sh (nested_field_array_type t gfs lo hi) v (field_address0 t (ArraySubsc lo::gfs) p).