Module hardware_alignof_facts: HARDWARE_ALIGNOF_FACTS.
End hardware_alignof_facts.
Export hardware_alignof_facts.
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.

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).