Section Consistency_Induction_Step.
Context (cenv: composite_env)
(env: PTree.t A)
(l: list (positive * composite))
(i0: positive)
(co0: composite).
Hypothesis NOT_IN_LIST: ~ In i0 (map fst l).
Hypothesis RDT_list: Forall (relative_defined_type l) (map snd (co_members co0)).
Hypothesis CENV0: PTree.get i0 cenv = Some co0.
Hypothesis IH_In_equiv: forall i, In i (map fst l) <-> In i (map fst (PTree.elements env)).
Hypothesis IH_RDT:
forall i co a,
PTree.get i cenv = Some co ->
PTree.get i env = Some a ->
Forall (relative_defined_type (PTree.elements env)) (map snd (co_members co)).
Hypothesis IH_main:
Consistent cenv env.
End Consistency_Induction_Step.
End type_func.
End type_func.

Corollary composite_reorder_consistent {A: Type}:
forall cenv f_default f_array f_struct f_union f_members,
composite_env_consistent cenv ->
type_func.Consistent f_default f_array f_struct f_union f_members cenv (@type_func.Env A f_default f_array f_struct f_union f_members (composite_reorder.rebuild_composite_elements cenv)).