Section soundness.
Context (cenv: composite_env)
(ha_env: PTree.t Z)
(la_env: PTree.t bool)
(CENV_CONSI: composite_env_consistent cenv)
(CENV_COSU: composite_env_complete_legal_cosu_type cenv)
(HA_ENV_CONSI: hardware_alignof_env_consistent cenv ha_env)
(HA_ENV_COMPL: hardware_alignof_env_complete cenv ha_env)
(LA_ENV_CONSI: legal_alignas_env_consistent cenv ha_env la_env)
(LA_ENV_COMPL: legal_alignas_env_complete cenv la_env).

(* Specifications: *)
Lemma legal_alignas_type_divide: forall t,
legal_alignas_type cenv ha_env la_env t = true ->
(hardware_alignof ha_env t | alignof cenv t).
Lemma by_value_sound:
forall t ofs,
is_aligned cenv ha_env la_env t ofs = true ->
(exists ch, access_mode t = By_value ch) ->
align_compatible_rec cenv t ofs.
Theorem legal_alignas_soundness:
legal_alignas_env_sound cenv ha_env la_env.
Lemma by_value_sound:
forall t ofs,
is_aligned cenv ha_env la_env t ofs = true ->
(exists ch, access_mode t = By_value ch) ->
align_compatible_rec cenv t ofs.
Theorem legal_alignas_soundness:
legal_alignas_env_sound cenv ha_env la_env.