src/HOL/Complete_Lattice.thy
changeset 44067 5feac96f0e78
parent 44041 01d6ab227069
child 44068 dc0a73004c94
equal deleted inserted replaced
44066:d74182c93f04 44067:5feac96f0e78
   140 
   140 
   141 lemma Inf_empty [simp]:
   141 lemma Inf_empty [simp]:
   142   "\<Sqinter>{} = \<top>"
   142   "\<Sqinter>{} = \<top>"
   143   by (auto intro: antisym Inf_greatest)
   143   by (auto intro: antisym Inf_greatest)
   144 
   144 
   145 lemma INF_empty: "(\<Sqinter>x\<in>{}. f x) = \<top>"
   145 lemma INF_empty [simp]: "(\<Sqinter>x\<in>{}. f x) = \<top>"
   146   by (simp add: INF_def)
   146   by (simp add: INF_def)
   147 
   147 
   148 lemma Sup_empty [simp]:
   148 lemma Sup_empty [simp]:
   149   "\<Squnion>{} = \<bottom>"
   149   "\<Squnion>{} = \<bottom>"
   150   by (auto intro: antisym Sup_least)
   150   by (auto intro: antisym Sup_least)
   151 
   151 
   152 lemma SUP_empty: "(\<Squnion>x\<in>{}. f x) = \<bottom>"
   152 lemma SUP_empty [simp]: "(\<Squnion>x\<in>{}. f x) = \<bottom>"
   153   by (simp add: SUP_def)
   153   by (simp add: SUP_def)
   154 
   154 
   155 lemma Inf_UNIV [simp]:
   155 lemma Inf_UNIV [simp]:
   156   "\<Sqinter>UNIV = \<bottom>"
   156   "\<Sqinter>UNIV = \<bottom>"
   157   by (auto intro!: antisym Inf_lower)
   157   by (auto intro!: antisym Inf_lower)
   698   by (fact Inf_greatest)
   698   by (fact Inf_greatest)
   699 
   699 
   700 lemma Int_eq_Inter: "A \<inter> B = \<Inter>{A, B}"
   700 lemma Int_eq_Inter: "A \<inter> B = \<Inter>{A, B}"
   701   by (fact Inf_binary [symmetric])
   701   by (fact Inf_binary [symmetric])
   702 
   702 
   703 lemma Inter_empty [simp]: "\<Inter>{} = UNIV"
   703 lemma Inter_empty: "\<Inter>{} = UNIV"
   704   by (fact Inf_empty)
   704   by (fact Inf_empty) (* already simp *)
   705 
   705 
   706 lemma Inter_UNIV [simp]: "\<Inter>UNIV = {}"
   706 lemma Inter_UNIV: "\<Inter>UNIV = {}"
   707   by (fact Inf_UNIV)
   707   by (fact Inf_UNIV) (* already simp *)
   708 
   708 
   709 lemma Inter_insert [simp]: "\<Inter>(insert a B) = a \<inter> \<Inter>B"
   709 lemma Inter_insert [simp]: "\<Inter>(insert a B) = a \<inter> \<Inter>B"
   710   by (fact Inf_insert)
   710   by (fact Inf_insert)
   711 
   711 
   712 lemma Inter_Un_subset: "\<Inter>A \<union> \<Inter>B \<subseteq> \<Inter>(A \<inter> B)"
   712 lemma Inter_Un_subset: "\<Inter>A \<union> \<Inter>B \<subseteq> \<Inter>(A \<inter> B)"
   799   by (fact INF_leI)
   799   by (fact INF_leI)
   800 
   800 
   801 lemma INT_greatest: "(\<And>x. x \<in> A \<Longrightarrow> C \<subseteq> B x) \<Longrightarrow> C \<subseteq> (\<Inter>x\<in>A. B x)"
   801 lemma INT_greatest: "(\<And>x. x \<in> A \<Longrightarrow> C \<subseteq> B x) \<Longrightarrow> C \<subseteq> (\<Inter>x\<in>A. B x)"
   802   by (fact le_INF_I)
   802   by (fact le_INF_I)
   803 
   803 
   804 lemma INT_empty [simp]: "(\<Inter>x\<in>{}. B x) = UNIV"
   804 lemma INT_empty: "(\<Inter>x\<in>{}. B x) = UNIV"
   805   by (fact INF_empty)
   805   by (fact INF_empty) (* already simp *)
   806 
   806 
   807 lemma INT_absorb: "k \<in> I \<Longrightarrow> A k \<inter> (\<Inter>i\<in>I. A i) = (\<Inter>i\<in>I. A i)"
   807 lemma INT_absorb: "k \<in> I \<Longrightarrow> A k \<inter> (\<Inter>i\<in>I. A i) = (\<Inter>i\<in>I. A i)"
   808   by (fact INF_absorb)
   808   by (fact INF_absorb)
   809 
   809 
   810 lemma INT_subset_iff: "B \<subseteq> (\<Inter>i\<in>I. A i) \<longleftrightarrow> (\<forall>i\<in>I. B \<subseteq> A i)"
   810 lemma INT_subset_iff: "B \<subseteq> (\<Inter>i\<in>I. A i) \<longleftrightarrow> (\<forall>i\<in>I. B \<subseteq> A i)"
  1008   by blast
  1008   by blast
  1009 
  1009 
  1010 lemma UN_insert_distrib: "u \<in> A \<Longrightarrow> (\<Union>x\<in>A. insert a (B x)) = insert a (\<Union>x\<in>A. B x)"
  1010 lemma UN_insert_distrib: "u \<in> A \<Longrightarrow> (\<Union>x\<in>A. insert a (B x)) = insert a (\<Union>x\<in>A. B x)"
  1011   by blast
  1011   by blast
  1012 
  1012 
  1013 lemma UN_empty [simp, no_atp]: "(\<Union>x\<in>{}. B x) = {}"
  1013 lemma UN_empty [no_atp]: "(\<Union>x\<in>{}. B x) = {}"
  1014   by (fact SUP_empty)
  1014   by (fact SUP_empty) (* already simp *)
  1015 
  1015 
  1016 lemma UN_empty2 [simp]: "(\<Union>x\<in>A. {}) = {}"
  1016 lemma UN_empty2 [simp]: "(\<Union>x\<in>A. {}) = {}"
  1017   by (fact SUP_bot)
  1017   by (fact SUP_bot)
  1018 
  1018 
  1019 lemma UN_singleton [simp]: "(\<Union>x\<in>A. {x}) = A"
  1019 lemma UN_singleton [simp]: "(\<Union>x\<in>A. {x}) = A"