20 lemma mono_Un: "mono A \<Longrightarrow> (\<Union>i\<le>n. A i) = A n" |
20 lemma mono_Un: "mono A \<Longrightarrow> (\<Union>i\<le>n. A i) = A n" |
21 unfolding mono_def by auto |
21 unfolding mono_def by auto |
22 |
22 |
23 subsection \<open>Set of Disjoint Sets\<close> |
23 subsection \<open>Set of Disjoint Sets\<close> |
24 |
24 |
25 definition "disjoint A \<longleftrightarrow> (\<forall>a\<in>A. \<forall>b\<in>A. a \<noteq> b \<longrightarrow> a \<inter> b = {})" |
25 abbreviation disjoint :: "'a set set \<Rightarrow> bool" where "disjoint \<equiv> pairwise disjnt" |
|
26 |
|
27 lemma disjoint_def: "disjoint A \<longleftrightarrow> (\<forall>a\<in>A. \<forall>b\<in>A. a \<noteq> b \<longrightarrow> a \<inter> b = {})" |
|
28 unfolding pairwise_def disjnt_def by auto |
26 |
29 |
27 lemma disjointI: |
30 lemma disjointI: |
28 "(\<And>a b. a \<in> A \<Longrightarrow> b \<in> A \<Longrightarrow> a \<noteq> b \<Longrightarrow> a \<inter> b = {}) \<Longrightarrow> disjoint A" |
31 "(\<And>a b. a \<in> A \<Longrightarrow> b \<in> A \<Longrightarrow> a \<noteq> b \<Longrightarrow> a \<inter> b = {}) \<Longrightarrow> disjoint A" |
29 unfolding disjoint_def by auto |
32 unfolding disjoint_def by auto |
30 |
33 |
31 lemma disjointD: |
34 lemma disjointD: |
32 "disjoint A \<Longrightarrow> a \<in> A \<Longrightarrow> b \<in> A \<Longrightarrow> a \<noteq> b \<Longrightarrow> a \<inter> b = {}" |
35 "disjoint A \<Longrightarrow> a \<in> A \<Longrightarrow> b \<in> A \<Longrightarrow> a \<noteq> b \<Longrightarrow> a \<inter> b = {}" |
33 unfolding disjoint_def by auto |
36 unfolding disjoint_def by auto |
34 |
|
35 lemma disjoint_empty[iff]: "disjoint {}" |
|
36 by (auto simp: disjoint_def) |
|
37 |
37 |
38 lemma disjoint_INT: |
38 lemma disjoint_INT: |
39 assumes *: "\<And>i. i \<in> I \<Longrightarrow> disjoint (F i)" |
39 assumes *: "\<And>i. i \<in> I \<Longrightarrow> disjoint (F i)" |
40 shows "disjoint {\<Inter>i\<in>I. X i | X. \<forall>i\<in>I. X i \<in> F i}" |
40 shows "disjoint {\<Inter>i\<in>I. X i | X. \<forall>i\<in>I. X i \<in> F i}" |
41 proof (safe intro!: disjointI del: equalityI) |
41 proof (safe intro!: disjointI del: equalityI) |
45 moreover assume "\<forall>i\<in>I. A i \<in> F i" "\<forall>i\<in>I. B i \<in> F i" |
45 moreover assume "\<forall>i\<in>I. A i \<in> F i" "\<forall>i\<in>I. B i \<in> F i" |
46 ultimately show "(\<Inter>i\<in>I. A i) \<inter> (\<Inter>i\<in>I. B i) = {}" |
46 ultimately show "(\<Inter>i\<in>I. A i) \<inter> (\<Inter>i\<in>I. B i) = {}" |
47 using *[OF \<open>i\<in>I\<close>, THEN disjointD, of "A i" "B i"] |
47 using *[OF \<open>i\<in>I\<close>, THEN disjointD, of "A i" "B i"] |
48 by (auto simp: INT_Int_distrib[symmetric]) |
48 by (auto simp: INT_Int_distrib[symmetric]) |
49 qed |
49 qed |
50 |
|
51 lemma disjoint_singleton[simp]: "disjoint {A}" |
|
52 by(simp add: disjoint_def) |
|
53 |
50 |
54 subsubsection "Family of Disjoint Sets" |
51 subsubsection "Family of Disjoint Sets" |
55 |
52 |
56 definition disjoint_family_on :: "('i \<Rightarrow> 'a set) \<Rightarrow> 'i set \<Rightarrow> bool" where |
53 definition disjoint_family_on :: "('i \<Rightarrow> 'a set) \<Rightarrow> 'i set \<Rightarrow> bool" where |
57 "disjoint_family_on A S \<longleftrightarrow> (\<forall>m\<in>S. \<forall>n\<in>S. m \<noteq> n \<longrightarrow> A m \<inter> A n = {})" |
54 "disjoint_family_on A S \<longleftrightarrow> (\<forall>m\<in>S. \<forall>n\<in>S. m \<noteq> n \<longrightarrow> A m \<inter> A n = {})" |