Definition field_address t gfs p :=
if (field_compatible_dec t gfs p)
then offset_val (nested_field_offset t gfs) p
else Vundef.
Definition field_address0 t gfs p :=
if (field_compatible0_dec t gfs p)
then offset_val (nested_field_offset t gfs) p
else Vundef.

Lemma field_compatible_field_compatible0':
forall (t : type) (i : Z) (gfs : list gfield) (p : val),
field_compatible t (ArraySubsc i :: gfs) p <->
field_compatible0 t (ArraySubsc i :: gfs) p /\
field_compatible0 t (ArraySubsc (i + 1) :: gfs) p.