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 t0 n a, nested_field_type t gfs = Tarray t0 n a -> lo <= hi <= n -> 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).