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 gfield_array_type_nested_pred: forall {atom_pred: type -> bool}, (forall t n m a, 0 <= m -> atom_pred (Tarray t n a) = true -> atom_pred (Tarray t m (no_alignas_attr a)) = true) -> forall (t: type) lo hi, lo <= hi -> legal_field0 t (ArraySubsc lo) -> nested_pred atom_pred t = true -> nested_pred atom_pred (gfield_array_type t lo hi) = true.