Hint Resolve alignof_two_p: align.
Hint Resolve align_chunk_two_p: align.
Hint Extern 10 (exists n: nat, hardware_alignof _ _ = two_power_nat n) => (eapply hardware_alignof_two_p; eassumption): align.
Hint Extern 10 (exists n: nat, hardware_alignof_composite _ _ = two_power_nat n) => (eapply hardware_alignof_composite_two_p; eassumption): align.

(* Specifications: *)
Lemma hardware_alignof_by_value: forall ha_env t ch,
access_mode t = By_value ch ->
hardware_alignof ha_env t = align_chunk ch.
Lemma align_compatible_rec_hardware_alignof_divide: forall cenv ha_env t z1 z2,
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 | z1 - z2) ->
(align_compatible_rec cenv t z1 <-> align_compatible_rec cenv t z2).
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.