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 alignof_gfield_type_divide_alignof: forall t gf, legal_alignas_type t = true -> (alignof (gfield_type t gf) | alignof t).  Lemma alignof_gfield_array_type_eq: forall t lo hi i, legal_alignas_type t = true -> legal_field0 t (ArraySubsc lo) -> alignof (gfield_array_type t lo hi) = alignof (gfield_type t (ArraySubsc i)).  Lemma alignof_nested_field_type_divide_alignof: forall t gfs, legal_alignas_type t = true -> legal_nested_field t gfs -> (alignof (nested_field_type t gfs) | alignof t).  Lemma alignof_nested_field_type_divide_alignof': forall t gfs, legal_alignas_type t = true -> legal_nested_field0 t gfs -> (alignof (nested_field_type t gfs) | alignof t).  Lemma alignof_nested_field_array_type_eq: forall t gfs lo hi i, legal_alignas_type t = true -> legal_nested_field0 t (ArraySubsc lo :: gfs) -> alignof (nested_field_array_type t gfs lo hi) = alignof (nested_field_type t (ArraySubsc i :: gfs)).  Lemma alignof_nested_field_array_type_divide_alignof: forall t gfs lo hi, legal_alignas_type t = true -> legal_nested_field0 t (ArraySubsc lo :: gfs) -> (alignof (nested_field_array_type t gfs lo hi) | alignof t).  Lemma gfield_offset_type_divide: forall gf t, legal_alignas_type t = true -> (alignof (gfield_type t gf) | gfield_offset t gf). *)
Lemma legal_nested_field0_field:
forall t gfs, legal_nested_field t gfs -> legal_nested_field0 t gfs.