diff -r 0efb482beb84 -r d81fb5b46a5c src/HOL/Library/Disjoint_Sets.thy --- a/src/HOL/Library/Disjoint_Sets.thy Wed Sep 21 14:20:07 2016 +0100 +++ b/src/HOL/Library/Disjoint_Sets.thy Wed Sep 21 16:59:51 2016 +0100 @@ -65,6 +65,26 @@ abbreviation "disjoint_family A \ disjoint_family_on A UNIV" +lemma disjoint_family_elem_disjnt: + assumes "infinite A" "finite C" + and df: "disjoint_family_on B A" + obtains x where "x \ A" "disjnt C (B x)" +proof - + have "False" if *: "\x \ A. \y. y \ C \ y \ B x" + proof - + obtain g where g: "\x \ A. g x \ C \ g x \ B x" + using * by metis + with df have "inj_on g A" + by (fastforce simp add: inj_on_def disjoint_family_on_def) + then have "infinite (g ` A)" + using \infinite A\ finite_image_iff by blast + then show False + by (meson \finite C\ finite_subset g image_subset_iff) + qed + then show ?thesis + by (force simp: disjnt_iff intro: that) +qed + lemma disjoint_family_onD: "disjoint_family_on A I \ i \ I \ j \ I \ i \ j \ A i \ A j = {}" by (auto simp: disjoint_family_on_def)