# HG changeset patch # User haftmann # Date 1311281233 -7200 # Node ID e6928fc2332a5b7bd27e629b7ac9220f5d0b9473 # Parent 3406cd754dd28a783d3a3c867312ae417e4a3ef5 moved some lemmas diff -r 3406cd754dd2 -r e6928fc2332a src/HOL/Complete_Lattice.thy --- a/src/HOL/Complete_Lattice.thy Thu Jul 21 21:56:24 2011 +0200 +++ b/src/HOL/Complete_Lattice.thy Thu Jul 21 22:47:13 2011 +0200 @@ -356,6 +356,24 @@ "(\x\A. B x) = \ \ (\x\A. B x = \)" by (auto simp add: SUP_def Sup_bot_conv) +lemma less_INF_D: + assumes "y < (\i\A. f i)" "i \ A" shows "y < f i" +proof - + note `y < (\i\A. f i)` + also have "(\i\A. f i) \ f i" using `i \ A` + by (rule INF_leI) + finally show "y < f i" . +qed + +lemma SUP_lessD: + assumes "(\i\A. f i) < y" "i \ A" shows "f i < y" +proof - + have "f i \ (\i\A. f i)" using `i \ A` + by (rule le_SUP_I) + also note `(\i\A. f i) < y` + finally show "f i < y" . +qed + lemma INF_UNIV_range: "(\x. f x) = \range f" by (fact INF_def) @@ -377,6 +395,10 @@ class complete_boolean_algebra = boolean_algebra + complete_lattice begin +lemma dual_complete_boolean_algebra: + "class.complete_boolean_algebra Sup Inf (op \) (op >) sup inf \ \ (\x y. x \ - y) uminus" + by (rule class.complete_boolean_algebra.intro, rule dual_complete_lattice, rule dual_boolean_algebra) + lemma uminus_Inf: "- (\A) = \(uminus ` A)" proof (rule antisym) @@ -404,6 +426,10 @@ class complete_linorder = linorder + complete_lattice begin +lemma dual_complete_linorder: + "class.complete_linorder Sup Inf (op \) (op >) sup inf \ \" + by (rule class.complete_linorder.intro, rule dual_complete_lattice, rule dual_linorder) + lemma Inf_less_iff: "\S \ a \ (\x\S. x \ a)" unfolding not_le [symmetric] le_Inf_iff by auto @@ -420,6 +446,36 @@ "a \ (\i\A. f i) \ (\x\A. a \ f x)" unfolding SUP_def less_Sup_iff by auto +lemma Sup_eq_top_iff: + "\A = \ \ (\x<\. \i\A. x < i)" +proof + assume *: "\A = \" + show "(\x<\. \i\A. x < i)" unfolding * [symmetric] + proof (intro allI impI) + fix x assume "x < \A" then show "\i\A. x < i" + unfolding less_Sup_iff by auto + qed +next + assume *: "\x<\. \i\A. x < i" + show "\A = \" + proof (rule ccontr) + assume "\A \ \" + with top_greatest [of "\A"] + have "\A < \" unfolding le_less by auto + then have "\A < \A" + using * unfolding less_Sup_iff by auto + then show False by auto + qed +qed + +lemma Inf_eq_bot_iff: + "\A = \ \ (\x>\. \i\A. i < x)" +proof - + interpret dual: complete_linorder Sup Inf "op \" "op >" sup inf \ \ + by (fact dual_complete_linorder) + from dual.Sup_eq_top_iff show ?thesis . +qed + end @@ -1039,6 +1095,17 @@ "\A P. (\(\x\A. P x)) \ (\x\A. \ P x)" by auto +lemma (in complete_linorder) INF_eq_bot_iff: + fixes f :: "'b \ 'a" + shows "(\i\A. f i) = \ \ (\x>\. \i\A. f i < x)" + unfolding INF_def Inf_eq_bot_iff by auto + +lemma (in complete_linorder) SUP_eq_top_iff: + fixes f :: "'b \ 'a" + shows "(\i\A. f i) = \ \ (\x<\. \i\A. x < f i)" + unfolding SUP_def Sup_eq_top_iff by auto + + text {* \medskip Maxiscoping: pulling out big Unions and Intersections. *} lemma UN_extend_simps: @@ -1075,6 +1142,7 @@ lemmas (in complete_lattice) le_SUPI = le_SUP_I lemmas (in complete_lattice) le_SUPI2 = le_SUP_I2 lemmas (in complete_lattice) le_INFI = le_INF_I +lemmas (in complete_lattice) less_INFD = less_INF_D lemma (in complete_lattice) INF_subset: "B \ A \ INFI A f \ INFI B f" diff -r 3406cd754dd2 -r e6928fc2332a src/HOL/Library/Extended_Real.thy --- a/src/HOL/Library/Extended_Real.thy Thu Jul 21 21:56:24 2011 +0200 +++ b/src/HOL/Library/Extended_Real.thy Thu Jul 21 22:47:13 2011 +0200 @@ -1338,33 +1338,6 @@ by (cases e) auto qed -lemma (in complete_linorder) Sup_eq_top_iff: -- "FIXME move" - "Sup A = top \ (\xi\A. x < i)" -proof - assume *: "Sup A = top" - show "(\xi\A. x < i)" unfolding * [symmetric] - proof (intro allI impI) - fix x assume "x < Sup A" then show "\i\A. x < i" - unfolding less_Sup_iff by auto - qed -next - assume *: "\xi\A. x < i" - show "Sup A = top" - proof (rule ccontr) - assume "Sup A \ top" - with top_greatest [of "Sup A"] - have "Sup A < top" unfolding le_less by auto - then have "Sup A < Sup A" - using * unfolding less_Sup_iff by auto - then show False by auto - qed -qed - -lemma (in complete_linorder) SUP_eq_top_iff: -- "FIXME move" - fixes f :: "'b \ 'a" - shows "(SUP i:A. f i) = top \ (\xi\A. x < f i)" - unfolding SUPR_def Sup_eq_top_iff by auto - lemma SUP_nat_Infty: "(SUP i::nat. ereal (real i)) = \" proof - { fix x ::ereal assume "x \ \" @@ -2374,14 +2347,6 @@ abbreviation "limsup \ Limsup sequentially" -lemma (in complete_lattice) less_INFD: - assumes "y < INFI A f"" i \ A" shows "y < f i" -proof - - note `y < INFI A f` - also have "INFI A f \ f i" using `i \ A` by (rule INF_leI) - finally show "y < f i" . -qed - lemma liminf_SUPR_INFI: fixes f :: "nat \ ereal" shows "liminf f = (SUP n. INF m:{n..}. f m)"