author paulson Wed, 26 Apr 2017 16:58:31 +0100 changeset 65585 a043de9ad41e parent 65584 1d9a96750a40 child 65586 91e451bc0f1f
Some fixes related to compactE_image
```--- a/src/HOL/Analysis/Brouwer_Fixpoint.thy	Wed Apr 26 15:57:16 2017 +0100
+++ b/src/HOL/Analysis/Brouwer_Fixpoint.thy	Wed Apr 26 16:58:31 2017 +0100
@@ -3604,7 +3604,7 @@
obtains V where "openin (subtopology euclidean U) V" "(S \<union> T) retract_of V"
proof (cases "S = {} \<or> T = {}")
case True with assms that show ?thesis
-    by (auto simp: intro: ANR_imp_neighbourhood_retract)
+    by (metis ANR_imp_neighbourhood_retract Un_commute inf_bot_right sup_inf_absorb)
next
case False
then have [simp]: "S \<noteq> {}" "T \<noteq> {}" by auto```
```--- a/src/HOL/Analysis/Complex_Transcendental.thy	Wed Apr 26 15:57:16 2017 +0100
+++ b/src/HOL/Analysis/Complex_Transcendental.thy	Wed Apr 26 16:58:31 2017 +0100
@@ -1017,6 +1017,7 @@
definition ln_complex :: "complex \<Rightarrow> complex"
where "ln_complex \<equiv> \<lambda>z. THE w. exp w = z & -pi < Im(w) & Im(w) \<le> pi"

+text\<open>NOTE: within this scope, the constant Ln is not yet available!\<close>
lemma
assumes "z \<noteq> 0"
shows exp_Ln [simp]:  "exp(ln z) = z"
@@ -1046,9 +1047,6 @@
apply auto
done

-lemma Ln_eq_zero_iff [simp]: "x \<notin> \<real>\<^sub>\<le>\<^sub>0 \<Longrightarrow> Ln x = 0 \<longleftrightarrow> x = 1"
-  by auto (metis exp_Ln exp_zero nonpos_Reals_zero_I)
-
subsection\<open>Relation to Real Logarithm\<close>

lemma Ln_of_real:
@@ -1073,14 +1071,18 @@
lemma cmod_Ln_Reals [simp]: "z \<in> \<real> \<Longrightarrow> 0 < Re z \<Longrightarrow> cmod (ln z) = norm (ln (Re z))"
using Ln_of_real by force

-lemma Ln_1: "ln 1 = (0::complex)"
+lemma Ln_1 [simp]: "ln 1 = (0::complex)"
proof -
have "ln (exp 0) = (0::complex)"
by (metis (mono_tags, hide_lams) Ln_of_real exp_zero ln_one of_real_0 of_real_1 zero_less_one)
then show ?thesis
-    by simp
+    by simp
qed

+
+lemma Ln_eq_zero_iff [simp]: "x \<notin> \<real>\<^sub>\<le>\<^sub>0 \<Longrightarrow> ln x = 0 \<longleftrightarrow> x = 1" for x::complex
+  by auto (metis exp_Ln exp_zero nonpos_Reals_zero_I)
+
instance
by intro_classes (rule ln_complex_def Ln_1)
```
```--- a/src/HOL/Analysis/Lebesgue_Measure.thy	Wed Apr 26 15:57:16 2017 +0100
+++ b/src/HOL/Analysis/Lebesgue_Measure.thy	Wed Apr 26 16:58:31 2017 +0100
@@ -220,7 +220,7 @@
proof (rule compactE_image)
show "compact {a'..b}"
by (rule compact_Icc)
-      show "\<forall>i \<in> S'. open ({l i<..<r i + delta i})" by auto
+      show "\<And>i. i \<in> S' \<Longrightarrow> open ({l i<..<r i + delta i})" by auto
have "{a'..b} \<subseteq> {a <.. b}"
by auto
also have "{a <.. b} = (\<Union>i\<in>S'. {l i<..r i})"```
```--- a/src/HOL/Analysis/Topology_Euclidean_Space.thy	Wed Apr 26 15:57:16 2017 +0100
+++ b/src/HOL/Analysis/Topology_Euclidean_Space.thy	Wed Apr 26 16:58:31 2017 +0100
@@ -4538,7 +4538,7 @@
have "compact U" "\<forall>x\<in>U. open (ball x 1)" "U \<subseteq> (\<Union>x\<in>U. ball x 1)"
using assms by auto
then obtain D where D: "D \<subseteq> U" "finite D" "U \<subseteq> (\<Union>x\<in>D. ball x 1)"
-    by (rule compactE_image)
+    by (metis compactE_image)
from \<open>finite D\<close> have "bounded (\<Union>x\<in>D. ball x 1)"
then show "bounded U" using \<open>U \<subseteq> (\<Union>x\<in>D. ball x 1)\<close>
@@ -7717,14 +7717,14 @@
and c: "\<And>y. y \<in> t \<Longrightarrow> c y \<in> C \<and> open (a y) \<and> open (b y) \<and> x \<in> a y \<and> y \<in> b y \<and> a y \<times> b y \<subseteq> c y"
by metis
then have "\<forall>y\<in>t. open (b y)" "t \<subseteq> (\<Union>y\<in>t. b y)" by auto
-    from compactE_image[OF \<open>compact t\<close> this] obtain D where D: "D \<subseteq> t" "finite D" "t \<subseteq> (\<Union>y\<in>D. b y)"
-      by auto
+    with compactE_image[OF \<open>compact t\<close>] obtain D where D: "D \<subseteq> t" "finite D" "t \<subseteq> (\<Union>y\<in>D. b y)"
+      by metis
moreover from D c have "(\<Inter>y\<in>D. a y) \<times> t \<subseteq> (\<Union>y\<in>D. c y)"
by (fastforce simp: subset_eq)
ultimately show "\<exists>a. open a \<and> x \<in> a \<and> (\<exists>d\<subseteq>C. finite d \<and> a \<times> t \<subseteq> \<Union>d)"
using c by (intro exI[of _ "c`D"] exI[of _ "\<Inter>(a`D)"] conjI) (auto intro!: open_INT)
qed
-  then obtain a d where a: "\<forall>x\<in>s. open (a x)" "s \<subseteq> (\<Union>x\<in>s. a x)"
+  then obtain a d where a: "\<And>x. x\<in>s \<Longrightarrow> open (a x)" "s \<subseteq> (\<Union>x\<in>s. a x)"
and d: "\<And>x. x \<in> s \<Longrightarrow> d x \<subseteq> C \<and> finite (d x) \<and> a x \<times> t \<subseteq> \<Union>d x"
unfolding subset_eq UN_iff by metis
moreover```
```--- a/src/HOL/Analysis/Weierstrass_Theorems.thy	Wed Apr 26 15:57:16 2017 +0100
+++ b/src/HOL/Analysis/Weierstrass_Theorems.thy	Wed Apr 26 16:58:31 2017 +0100
@@ -261,7 +261,7 @@
then have *: "S-U \<subseteq> (\<Union>x \<in> S-U. Uf x)"
by blast
obtain subU where subU: "subU \<subseteq> S - U" "finite subU" "S - U \<subseteq> (\<Union>x \<in> subU. Uf x)"
-    by (blast intro: that open_Uf compactE_image [OF com_sU _ *])
+    by (blast intro: that compactE_image [OF com_sU open_Uf *])
then have [simp]: "subU \<noteq> {}"
using t1 by auto
then have cardp: "card subU > 0" using subU
@@ -401,7 +401,7 @@
have NN0: "(1/(k*\<delta>)) ^ (NN e) < e" if "e>0" for e
proof -
have "0 < ln (real k) + ln \<delta>"
-      using \<delta>01(1) \<open>0 < k\<close> k\<delta>(1) ln_gt_zero by fastforce
+      using \<delta>01(1) \<open>0 < k\<close> k\<delta>(1) ln_gt_zero ln_mult by fastforce
then have "real (NN e) * ln (1 / (real k * \<delta>)) < ln e"
using k\<delta>(1) NN(2) [of e] that by (simp add: ln_div divide_simps)
then have "exp (real (NN e) * ln (1 / (real k * \<delta>))) < e"
@@ -459,7 +459,7 @@
have com_A: "compact A" using A
by (metis compact compact_Int_closed inf.absorb_iff2)
obtain subA where subA: "subA \<subseteq> A" "finite subA" "A \<subseteq> (\<Union>x \<in> subA. Vf x)"
-    by (blast intro: that open_Vf compactE_image [OF com_A _ sum_max_0])
+    by (blast intro: that compactE_image [OF com_A open_Vf sum_max_0])
then have [simp]: "subA \<noteq> {}"
using \<open>a \<in> A\<close> by auto
then have cardp: "card subA > 0" using subA```