Definition array_at_ (sh: Share.t) (t: type) (gfs: list gfield) (lo hi: Z) : val -> mpred :=
 array_at sh t gfs lo hi (list_repeat (Z.to_nat (hi-lo)) (default_val _)).

Lemma field_at_Tarray: forall sh t gfs t0 n a v1 v2 p, legal_nested_field t gfs -> nested_field_type t gfs = Tarray t0 n a -> 0 <= n -> JMeq v1 v2 -> field_at sh t gfs v1 p = array_at sh t gfs 0 n v2 p.