Fixpoint hardware_alignof_composite (ha_env: PTree.t Z) (m: members): Z :=
  match m with
  | nil => 1
  | (_, t) :: m' => Z.max (hardware_alignof ha_env t) (hardware_alignof_composite ha_env m')
  end.Definition hardware_alignof_env (cenv: composite_env): PTree.t Z :=
  let l := composite_reorder.rebuild_composite_elements cenv in
  fold_right (fun (ic: positive * composite) (T0: PTree.t Z) => let (i, co) := ic in let T := T0 in PTree.set i (hardware_alignof_composite T (co_members co)) T) (PTree.empty _) l.

Lemma align_compatible_rec_hardware_1: forall cenv ha_env t z, composite_env_consistent cenv -> composite_env_complete_legal_cosu_type cenv -> hardware_alignof_env_consistent cenv ha_env -> hardware_alignof_env_complete cenv ha_env -> complete_legal_cosu_type cenv t = true -> hardware_alignof ha_env t = 1 -> align_compatible_rec cenv t z.