Program Instance Linker_composite_defs : Linker (list composite_definition) := {
link := link_composite_defs;
linkorder := @List.incl composite_definition
}.
Next Obligation.
apply incl_refl.
Defined.
Next Obligation.
red; intros; eauto.
Defined.
Next Obligation.
apply link_composite_def_inv in H; destruct H as (A & B & C).
split; red; intros; apply C; auto.
Defined.
(** Connections with [build_composite_env]. *)

Lemma add_composite_definitions_append:
forall l1 l2 env env'',
add_composite_definitions env (l1 ++ l2) = OK env'' <->
exists env', add_composite_definitions env l1 = OK env' /\ add_composite_definitions env' l2 = OK env''.