Program Instance Linker_composite_defs : Linker (list composite_definition) := {
  link := link_composite_defs;
  linkorder := @List.incl composite_definition
}.

(* Specifications: *)
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''.
Lemma composite_eq: forall su1 m1 a1 sz1 al1 r1 pos1 al2p1 szal1 su2 m2 a2 sz2 al2 r2 pos2 al2p2 szal2, su1 = su2 -> m1 = m2 -> a1 = a2 -> sz1 = sz2 -> al1 = al2 -> r1 = r2 -> Build_composite su1 m1 a1 sz1 al1 r1 pos1 al2p1 szal1 = Build_composite su2 m2 a2 sz2 al2 r2 pos2 al2p2 szal2.
Lemma composite_consistent_unique: forall env co1 co2, composite_consistent env co1 -> composite_consistent env co2 -> co_su co1 = co_su co2 -> co_members co1 = co_members co2 -> co_attr co1 = co_attr co2 -> co1 = co2.