Ltac solve_field_offset_type i m :=
  let H := fresh "H" in
  let Hty := fresh "H" in
  let Hofs := fresh "H" in
  let t := fresh "t" in
  let ofs := fresh "ofs" in
  pose proof field_offset_field_type_match cenv_cs i m;
  destruct (Ctypes.field_offset cenv_cs i m) as [ofs|?] eqn:Hofs, (Ctypes.field_type i m) as [t|?] eqn:Hty;
    [clear H | inversion H | inversion H | clear H].

Lemma neq_field_offset_next_rec_cons: forall env i i0 t0 i1 t1 m z sz, i <> i0 -> field_offset_next_rec env i ((i0, t0) :: (i1, t1) :: m) z sz = field_offset_next_rec env i ((i1, t1) :: m) (align (z + sizeof t0) (alignof t1)) sz.