End LINK_LIST.
(** List linking commutes with program transformations, provided the transformation commutes with simple (binary) linking. *)
Section LINK_LIST_MATCH.
Context {A B: Type} {LA: Linker A} {LB: Linker B} (prog_match: A -> B -> Prop) {TL: TransfLink prog_match}.

Theorem link_list_match:
forall al bl, nlist_forall2 prog_match al bl ->
forall a, link_list al = Some a ->
exists b, link_list bl = Some b /\ prog_match a b.