proposition: Lemma list_repr_disjoint_union : forall E F LE LF, E \# F -> list_repr E LE -> list_repr F LF -> list_repr (E \u F) (LE ++ LF).
proof: Proof. Proof using. introv D (HE&QE) (HF&QF). split. applys~ noduplicates_app. intros x ? ?. applys* @disjoint_inv x. typeclass. rewrite~ <- QE. rewrite~ <- QF. intros x. rewrite mem_app_eq. rewrite in_union_eq. rewrite <- QE. rewrite* <- QF. Qed.
imports: Coq.Classes.Morphisms TLC(LibTactics LibLogic LibReflect LibList LibOperation LibMonoid LibInt LibNat LibEpsilon LibRelation LibMin)