src/HOL/Complete_Lattice.thy
changeset 35629 57f1a5e93b6b
parent 35115 446c5063e4fd
child 35828 46cfc4b8112e
equal deleted inserted replaced
35609:0f2c634c8ab7 35629:57f1a5e93b6b
    79   by (simp add: Sup_Inf Sup_empty [symmetric])
    79   by (simp add: Sup_Inf Sup_empty [symmetric])
    80 
    80 
    81 lemma Sup_UNIV:
    81 lemma Sup_UNIV:
    82   "\<Squnion>UNIV = top"
    82   "\<Squnion>UNIV = top"
    83   by (simp add: Inf_Sup Inf_empty [symmetric])
    83   by (simp add: Inf_Sup Inf_empty [symmetric])
       
    84 
       
    85 lemma Sup_le_iff: "Sup A \<sqsubseteq> b \<longleftrightarrow> (\<forall>a\<in>A. a \<sqsubseteq> b)"
       
    86   by (auto intro: Sup_least dest: Sup_upper)
       
    87 
       
    88 lemma le_Inf_iff: "b \<sqsubseteq> Inf A \<longleftrightarrow> (\<forall>a\<in>A. b \<sqsubseteq> a)"
       
    89   by (auto intro: Inf_greatest dest: Inf_lower)
    84 
    90 
    85 definition SUPR :: "'b set \<Rightarrow> ('b \<Rightarrow> 'a) \<Rightarrow> 'a" where
    91 definition SUPR :: "'b set \<Rightarrow> ('b \<Rightarrow> 'a) \<Rightarrow> 'a" where
    86   "SUPR A f = \<Squnion> (f ` A)"
    92   "SUPR A f = \<Squnion> (f ` A)"
    87 
    93 
    88 definition INFI :: "'b set \<Rightarrow> ('b \<Rightarrow> 'a) \<Rightarrow> 'a" where
    94 definition INFI :: "'b set \<Rightarrow> ('b \<Rightarrow> 'a) \<Rightarrow> 'a" where
   123 lemma INF_leI: "i : A \<Longrightarrow> (INF i:A. M i) \<sqsubseteq> M i"
   129 lemma INF_leI: "i : A \<Longrightarrow> (INF i:A. M i) \<sqsubseteq> M i"
   124   by (auto simp add: INFI_def intro: Inf_lower)
   130   by (auto simp add: INFI_def intro: Inf_lower)
   125 
   131 
   126 lemma le_INFI: "(\<And>i. i : A \<Longrightarrow> u \<sqsubseteq> M i) \<Longrightarrow> u \<sqsubseteq> (INF i:A. M i)"
   132 lemma le_INFI: "(\<And>i. i : A \<Longrightarrow> u \<sqsubseteq> M i) \<Longrightarrow> u \<sqsubseteq> (INF i:A. M i)"
   127   by (auto simp add: INFI_def intro: Inf_greatest)
   133   by (auto simp add: INFI_def intro: Inf_greatest)
       
   134 
       
   135 lemma SUP_le_iff: "(SUP i:A. M i) \<sqsubseteq> u \<longleftrightarrow> (\<forall>i \<in> A. M i \<sqsubseteq> u)"
       
   136   unfolding SUPR_def by (auto simp add: Sup_le_iff)
       
   137 
       
   138 lemma le_INF_iff: "u \<sqsubseteq> (INF i:A. M i) \<longleftrightarrow> (\<forall>i \<in> A. u \<sqsubseteq> M i)"
       
   139   unfolding INFI_def by (auto simp add: le_Inf_iff)
   128 
   140 
   129 lemma SUP_const[simp]: "A \<noteq> {} \<Longrightarrow> (SUP i:A. M) = M"
   141 lemma SUP_const[simp]: "A \<noteq> {} \<Longrightarrow> (SUP i:A. M) = M"
   130   by (auto intro: antisym SUP_leI le_SUPI)
   142   by (auto intro: antisym SUP_leI le_SUPI)
   131 
   143 
   132 lemma INF_const[simp]: "A \<noteq> {} \<Longrightarrow> (INF i:A. M) = M"
   144 lemma INF_const[simp]: "A \<noteq> {} \<Longrightarrow> (INF i:A. M) = M"
   382 
   394 
   383 lemma UN_UN_flatten: "(\<Union>x \<in> (\<Union>y\<in>A. B y). C x) = (\<Union>y\<in>A. \<Union>x\<in>B y. C x)"
   395 lemma UN_UN_flatten: "(\<Union>x \<in> (\<Union>y\<in>A. B y). C x) = (\<Union>y\<in>A. \<Union>x\<in>B y. C x)"
   384   by blast
   396   by blast
   385 
   397 
   386 lemma UN_subset_iff: "((\<Union>i\<in>I. A i) \<subseteq> B) = (\<forall>i\<in>I. A i \<subseteq> B)"
   398 lemma UN_subset_iff: "((\<Union>i\<in>I. A i) \<subseteq> B) = (\<forall>i\<in>I. A i \<subseteq> B)"
   387   by blast
   399   by (fact SUP_le_iff)
   388 
   400 
   389 lemma image_Union: "f ` \<Union>S = (\<Union>x\<in>S. f ` x)"
   401 lemma image_Union: "f ` \<Union>S = (\<Union>x\<in>S. f ` x)"
   390   by blast
   402   by blast
   391 
   403 
   392 lemma UN_constant [simp]: "(\<Union>y\<in>A. c) = (if A = {} then {} else c)"
   404 lemma UN_constant [simp]: "(\<Union>y\<in>A. c) = (if A = {} then {} else c)"
   589 
   601 
   590 lemma INT_absorb: "k \<in> I ==> A k \<inter> (\<Inter>i\<in>I. A i) = (\<Inter>i\<in>I. A i)"
   602 lemma INT_absorb: "k \<in> I ==> A k \<inter> (\<Inter>i\<in>I. A i) = (\<Inter>i\<in>I. A i)"
   591   by blast
   603   by blast
   592 
   604 
   593 lemma INT_subset_iff: "(B \<subseteq> (\<Inter>i\<in>I. A i)) = (\<forall>i\<in>I. B \<subseteq> A i)"
   605 lemma INT_subset_iff: "(B \<subseteq> (\<Inter>i\<in>I. A i)) = (\<forall>i\<in>I. B \<subseteq> A i)"
   594   by blast
   606   by (fact le_INF_iff)
   595 
   607 
   596 lemma INT_insert [simp]: "(\<Inter>x \<in> insert a A. B x) = B a \<inter> INTER A B"
   608 lemma INT_insert [simp]: "(\<Inter>x \<in> insert a A. B x) = B a \<inter> INTER A B"
   597   by blast
   609   by blast
   598 
   610 
   599 lemma INT_Un: "(\<Inter>i \<in> A \<union> B. M i) = (\<Inter>i \<in> A. M i) \<inter> (\<Inter>i\<in>B. M i)"
   611 lemma INT_Un: "(\<Inter>i \<in> A \<union> B. M i) = (\<Inter>i \<in> A. M i) \<inter> (\<Inter>i\<in>B. M i)"