1265 by (simp add: Diff_Int_distrib closure_of_subtopology_open frontier_of_def interior_of_subtopology_open) |
1269 by (simp add: Diff_Int_distrib closure_of_subtopology_open frontier_of_def interior_of_subtopology_open) |
1266 |
1270 |
1267 lemma discrete_topology_frontier_of [simp]: |
1271 lemma discrete_topology_frontier_of [simp]: |
1268 "(discrete_topology U) frontier_of S = {}" |
1272 "(discrete_topology U) frontier_of S = {}" |
1269 by (simp add: Diff_eq discrete_topology_closure_of frontier_of_closures) |
1273 by (simp add: Diff_eq discrete_topology_closure_of frontier_of_closures) |
|
1274 |
|
1275 |
|
1276 subsection\<open>Locally finite collections\<close> |
|
1277 |
|
1278 definition locally_finite_in |
|
1279 where |
|
1280 "locally_finite_in X \<A> \<longleftrightarrow> |
|
1281 (\<Union>\<A> \<subseteq> topspace X) \<and> |
|
1282 (\<forall>x \<in> topspace X. \<exists>V. openin X V \<and> x \<in> V \<and> finite {U \<in> \<A>. U \<inter> V \<noteq> {}})" |
|
1283 |
|
1284 lemma finite_imp_locally_finite_in: |
|
1285 "\<lbrakk>finite \<A>; \<Union>\<A> \<subseteq> topspace X\<rbrakk> \<Longrightarrow> locally_finite_in X \<A>" |
|
1286 by (auto simp: locally_finite_in_def) |
|
1287 |
|
1288 lemma locally_finite_in_subset: |
|
1289 assumes "locally_finite_in X \<A>" "\<B> \<subseteq> \<A>" |
|
1290 shows "locally_finite_in X \<B>" |
|
1291 proof - |
|
1292 have "finite {U \<in> \<A>. U \<inter> V \<noteq> {}} \<Longrightarrow> finite {U \<in> \<B>. U \<inter> V \<noteq> {}}" for V |
|
1293 apply (erule rev_finite_subset) using \<open>\<B> \<subseteq> \<A>\<close> by blast |
|
1294 then show ?thesis |
|
1295 using assms unfolding locally_finite_in_def by (fastforce simp add:) |
|
1296 qed |
|
1297 |
|
1298 lemma locally_finite_in_refinement: |
|
1299 assumes \<A>: "locally_finite_in X \<A>" and f: "\<And>S. S \<in> \<A> \<Longrightarrow> f S \<subseteq> S" |
|
1300 shows "locally_finite_in X (f ` \<A>)" |
|
1301 proof - |
|
1302 show ?thesis |
|
1303 unfolding locally_finite_in_def |
|
1304 proof safe |
|
1305 fix x |
|
1306 assume "x \<in> topspace X" |
|
1307 then obtain V where "openin X V" "x \<in> V" "finite {U \<in> \<A>. U \<inter> V \<noteq> {}}" |
|
1308 using \<A> unfolding locally_finite_in_def by blast |
|
1309 moreover have "{U \<in> \<A>. f U \<inter> V \<noteq> {}} \<subseteq> {U \<in> \<A>. U \<inter> V \<noteq> {}}" for V |
|
1310 using f by blast |
|
1311 ultimately have "finite {U \<in> \<A>. f U \<inter> V \<noteq> {}}" |
|
1312 using finite_subset by blast |
|
1313 moreover have "f ` {U \<in> \<A>. f U \<inter> V \<noteq> {}} = {U \<in> f ` \<A>. U \<inter> V \<noteq> {}}" |
|
1314 by blast |
|
1315 ultimately have "finite {U \<in> f ` \<A>. U \<inter> V \<noteq> {}}" |
|
1316 by (metis (no_types, lifting) finite_imageI) |
|
1317 then show "\<exists>V. openin X V \<and> x \<in> V \<and> finite {U \<in> f ` \<A>. U \<inter> V \<noteq> {}}" |
|
1318 using \<open>openin X V\<close> \<open>x \<in> V\<close> by blast |
|
1319 next |
|
1320 show "\<And>x xa. \<lbrakk>xa \<in> \<A>; x \<in> f xa\<rbrakk> \<Longrightarrow> x \<in> topspace X" |
|
1321 by (meson Sup_upper \<A> f locally_finite_in_def subset_iff) |
|
1322 qed |
|
1323 qed |
|
1324 |
|
1325 lemma locally_finite_in_subtopology: |
|
1326 assumes \<A>: "locally_finite_in X \<A>" "\<Union>\<A> \<subseteq> S" |
|
1327 shows "locally_finite_in (subtopology X S) \<A>" |
|
1328 unfolding locally_finite_in_def |
|
1329 proof safe |
|
1330 fix x |
|
1331 assume x: "x \<in> topspace (subtopology X S)" |
|
1332 then obtain V where "openin X V" "x \<in> V" and fin: "finite {U \<in> \<A>. U \<inter> V \<noteq> {}}" |
|
1333 using \<A> unfolding locally_finite_in_def topspace_subtopology by blast |
|
1334 show "\<exists>V. openin (subtopology X S) V \<and> x \<in> V \<and> finite {U \<in> \<A>. U \<inter> V \<noteq> {}}" |
|
1335 proof (intro exI conjI) |
|
1336 show "openin (subtopology X S) (S \<inter> V)" |
|
1337 by (simp add: \<open>openin X V\<close> openin_subtopology_Int2) |
|
1338 have "{U \<in> \<A>. U \<inter> (S \<inter> V) \<noteq> {}} \<subseteq> {U \<in> \<A>. U \<inter> V \<noteq> {}}" |
|
1339 by auto |
|
1340 with fin show "finite {U \<in> \<A>. U \<inter> (S \<inter> V) \<noteq> {}}" |
|
1341 using finite_subset by auto |
|
1342 show "x \<in> S \<inter> V" |
|
1343 using x \<open>x \<in> V\<close> by (simp add: topspace_subtopology) |
|
1344 qed |
|
1345 next |
|
1346 show "\<And>x A. \<lbrakk>x \<in> A; A \<in> \<A>\<rbrakk> \<Longrightarrow> x \<in> topspace (subtopology X S)" |
|
1347 using assms unfolding locally_finite_in_def topspace_subtopology by blast |
|
1348 qed |
|
1349 |
|
1350 |
|
1351 lemma closedin_locally_finite_Union: |
|
1352 assumes clo: "\<And>S. S \<in> \<A> \<Longrightarrow> closedin X S" and \<A>: "locally_finite_in X \<A>" |
|
1353 shows "closedin X (\<Union>\<A>)" |
|
1354 using \<A> unfolding locally_finite_in_def closedin_def |
|
1355 proof clarify |
|
1356 show "openin X (topspace X - \<Union>\<A>)" |
|
1357 proof (subst openin_subopen, clarify) |
|
1358 fix x |
|
1359 assume "x \<in> topspace X" and "x \<notin> \<Union>\<A>" |
|
1360 then obtain V where "openin X V" "x \<in> V" and fin: "finite {U \<in> \<A>. U \<inter> V \<noteq> {}}" |
|
1361 using \<A> unfolding locally_finite_in_def by blast |
|
1362 let ?T = "V - \<Union>{S \<in> \<A>. S \<inter> V \<noteq> {}}" |
|
1363 show "\<exists>T. openin X T \<and> x \<in> T \<and> T \<subseteq> topspace X - \<Union>\<A>" |
|
1364 proof (intro exI conjI) |
|
1365 show "openin X ?T" |
|
1366 by (metis (no_types, lifting) fin \<open>openin X V\<close> clo closedin_Union mem_Collect_eq openin_diff) |
|
1367 show "x \<in> ?T" |
|
1368 using \<open>x \<notin> \<Union>\<A>\<close> \<open>x \<in> V\<close> by auto |
|
1369 show "?T \<subseteq> topspace X - \<Union>\<A>" |
|
1370 using \<open>openin X V\<close> openin_subset by auto |
|
1371 qed |
|
1372 qed |
|
1373 qed |
|
1374 |
|
1375 lemma locally_finite_in_closure: |
|
1376 assumes \<A>: "locally_finite_in X \<A>" |
|
1377 shows "locally_finite_in X ((\<lambda>S. X closure_of S) ` \<A>)" |
|
1378 using \<A> unfolding locally_finite_in_def |
|
1379 proof (intro conjI; clarsimp) |
|
1380 fix x A |
|
1381 assume "x \<in> X closure_of A" |
|
1382 then show "x \<in> topspace X" |
|
1383 by (meson in_closure_of) |
|
1384 next |
|
1385 fix x |
|
1386 assume "x \<in> topspace X" and "\<Union>\<A> \<subseteq> topspace X" |
|
1387 then obtain V where V: "openin X V" "x \<in> V" and fin: "finite {U \<in> \<A>. U \<inter> V \<noteq> {}}" |
|
1388 using \<A> unfolding locally_finite_in_def by blast |
|
1389 have eq: "{y \<in> f ` \<A>. Q y} = f ` {x. x \<in> \<A> \<and> Q(f x)}" for f Q |
|
1390 by blast |
|
1391 have eq2: "{A \<in> \<A>. X closure_of A \<inter> V \<noteq> {}} = {A \<in> \<A>. A \<inter> V \<noteq> {}}" |
|
1392 using openin_Int_closure_of_eq_empty V by blast |
|
1393 have "finite {U \<in> (closure_of) X ` \<A>. U \<inter> V \<noteq> {}}" |
|
1394 by (simp add: eq eq2 fin) |
|
1395 with V show "\<exists>V. openin X V \<and> x \<in> V \<and> finite {U \<in> (closure_of) X ` \<A>. U \<inter> V \<noteq> {}}" |
|
1396 by blast |
|
1397 qed |
|
1398 |
|
1399 lemma closedin_Union_locally_finite_closure: |
|
1400 "locally_finite_in X \<A> \<Longrightarrow> closedin X (\<Union>((\<lambda>S. X closure_of S) ` \<A>))" |
|
1401 by (metis (mono_tags) closedin_closure_of closedin_locally_finite_Union imageE locally_finite_in_closure) |
|
1402 |
|
1403 lemma closure_of_Union_subset: "\<Union>((\<lambda>S. X closure_of S) ` \<A>) \<subseteq> X closure_of (\<Union>\<A>)" |
|
1404 by clarify (meson Union_upper closure_of_mono subsetD) |
|
1405 |
|
1406 lemma closure_of_locally_finite_Union: |
|
1407 "locally_finite_in X \<A> \<Longrightarrow> X closure_of (\<Union>\<A>) = \<Union>((\<lambda>S. X closure_of S) ` \<A>)" |
|
1408 apply (rule closure_of_unique) |
|
1409 apply (simp add: SUP_upper2 Sup_le_iff closure_of_subset locally_finite_in_def) |
|
1410 apply (simp add: closedin_Union_locally_finite_closure) |
|
1411 by (simp add: Sup_le_iff closure_of_minimal) |
1270 |
1412 |
1271 |
1413 |
1272 subsection\<open>Continuous maps\<close> |
1414 subsection\<open>Continuous maps\<close> |
1273 |
1415 |
1274 definition continuous_map where |
1416 definition continuous_map where |