proposition: Lemma disjoint_flat_map_l : forall A B, forall f : A -> list B, forall l1 : list A, forall l2 : list B, disjoint (flat_map f l1) l2 <=> (forall x, LIn x l1 -> disjoint (f x) l2).
proof: Proof. induction l1; simpl; sp. split; sp. trw disjoint_app_l. trw IHl1. split; sp; subst; sp. Qed.
imports: UsefulTypes bin_rels Omega