Section legal_alignas.
Context (cenv: composite_env) (ha_env: PTree.t Z).

Lemma aux2:
(type_func.Env
(fun t : type =>
(hardware_alignof ha_env t <=? alignof cenv t) &&
match access_mode t with
| By_value _ => true
| By_reference => false
| By_copy => false
| By_nothing => false
end)
(fun (la : bool) (t : type) (n : Z) (a0 : attr) =>
(hardware_alignof ha_env (Tarray t n a0) <=? alignof cenv (Tarray t n a0)) && ((sizeof cenv t mod alignof cenv t =? 0) && la))
(fun (la : bool) (id : ident) (a0 : attr) =>
(hardware_alignof ha_env (Tstruct id a0) <=? alignof cenv (Tstruct id a0)) && la)
(fun (la : bool) (id : ident) (a0 : attr) =>
(hardware_alignof ha_env (Tunion id a0) <=? alignof cenv (Tunion id a0)) && la)
(fun _ : struct_or_union =>
fix fm (l : list (ident * type * bool)) : bool :=
match l with
| nil => true
| (_, _, la) :: l' => la && fm l'
end) (composite_reorder.rebuild_composite_elements cenv)) =
legal_alignas_env cenv ha_env.