src/HOL/Topological_Spaces.thy
changeset 56166 9a241bc276cd
parent 56020 f92479477c52
child 56231 b98813774a63
--- a/src/HOL/Topological_Spaces.thy	Sat Mar 15 16:54:32 2014 +0100
+++ b/src/HOL/Topological_Spaces.thy	Sun Mar 16 18:09:04 2014 +0100
@@ -31,13 +31,13 @@
   using open_Union [of "{S, T}"] by simp
 
 lemma open_UN [intro]: "\<forall>x\<in>A. open (B x) \<Longrightarrow> open (\<Union>x\<in>A. B x)"
-  unfolding SUP_def by (rule open_Union) auto
+  using open_Union [of "B ` A"] by simp
 
 lemma open_Inter [intro]: "finite S \<Longrightarrow> \<forall>T\<in>S. open T \<Longrightarrow> open (\<Inter>S)"
   by (induct set: finite) auto
 
 lemma open_INT [intro]: "finite A \<Longrightarrow> \<forall>x\<in>A. open (B x) \<Longrightarrow> open (\<Inter>x\<in>A. B x)"
-  unfolding INF_def by (rule open_Inter) auto
+  using open_Inter [of "B ` A"] by simp
 
 lemma openI:
   assumes "\<And>x. x \<in> S \<Longrightarrow> \<exists>T. open T \<and> x \<in> T \<and> T \<subseteq> S"
@@ -70,7 +70,7 @@
   by (induct set: finite) auto
 
 lemma closed_UN [intro]: "finite A \<Longrightarrow> \<forall>x\<in>A. closed (B x) \<Longrightarrow> closed (\<Union>x\<in>A. B x)"
-  unfolding SUP_def by (rule closed_Union) auto
+  using closed_Union [of "B ` A"] by simp
 
 lemma open_closed: "open S \<longleftrightarrow> closed (- S)"
   unfolding closed_def by simp
@@ -169,7 +169,7 @@
 
 lemma generate_topology_Union: 
   "(\<And>k. k \<in> I \<Longrightarrow> generate_topology S (K k)) \<Longrightarrow> generate_topology S (\<Union>k\<in>I. K k)"
-  unfolding SUP_def by (intro generate_topology.UN) auto
+  using generate_topology.UN [of "K ` I"] by auto
 
 lemma topological_space_generate_topology:
   "class.topological_space (generate_topology S)"
@@ -1952,10 +1952,25 @@
   unfolding compact_fip by auto
 
 lemma compact_imp_fip_image:
-  "compact s \<Longrightarrow> (\<And>i. i \<in> I \<Longrightarrow> closed (f i)) \<Longrightarrow> (\<And>I'. finite I' \<Longrightarrow> I' \<subseteq> I \<Longrightarrow> (s \<inter> (\<Inter>i\<in>I'. f i) \<noteq> {})) \<Longrightarrow>
-    s \<inter> (\<Inter>i\<in>I. f i) \<noteq> {}"
-  using finite_subset_image[of _ f I] compact_imp_fip[of s "f`I"] unfolding ball_simps[symmetric] INF_def
-  by (metis image_iff)
+  assumes "compact s"
+    and P: "\<And>i. i \<in> I \<Longrightarrow> closed (f i)"
+    and Q: "\<And>I'. finite I' \<Longrightarrow> I' \<subseteq> I \<Longrightarrow> (s \<inter> (\<Inter>i\<in>I'. f i) \<noteq> {})"
+  shows "s \<inter> (\<Inter>i\<in>I. f i) \<noteq> {}"
+proof -
+  note `compact s`
+  moreover from P have "\<forall>i \<in> f ` I. closed i" by blast
+  moreover have "\<forall>A. finite A \<and> A \<subseteq> f ` I \<longrightarrow> (s \<inter> (\<Inter>A) \<noteq> {})"
+  proof (rule, rule, erule conjE)
+    fix A :: "'a set set"
+    assume "finite A"
+    moreover assume "A \<subseteq> f ` I"
+    ultimately obtain B where "B \<subseteq> I" and "finite B" and "A = f ` B"
+      using finite_subset_image [of A f I] by blast
+    with Q [of B] show "s \<inter> \<Inter>A \<noteq> {}" by simp
+  qed
+  ultimately have "s \<inter> (\<Inter>(f ` I)) \<noteq> {}" by (rule compact_imp_fip)
+  then show ?thesis by simp
+qed
 
 end