| author | wenzelm | 
| Fri, 14 Mar 2025 23:03:58 +0100 | |
| changeset 82276 | d22e9c5b5dc6 | 
| parent 82137 | 7281e57085ab | 
| child 82518 | da14e77a48b2 | 
| permissions | -rw-r--r-- | 
| 79857 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 1 | theory Sparse_In | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 2 | imports Homotopy | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 3 | |
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 4 | begin | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 5 | |
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 6 | (*TODO: can we remove the definition isolated_points_of from | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 7 | HOL-Complex_Analysis.Complex_Singularities?*) | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 8 | (*TODO: more lemmas between sparse_in and discrete?*) | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 9 | |
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 10 | subsection \<open>A set of points sparse in another set\<close> | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 11 | |
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 12 | definition sparse_in:: "'a :: topological_space set \<Rightarrow> 'a set \<Rightarrow> bool" | 
| 80914 
d97fdabd9e2b
standardize mixfix annotations via "isabelle update -a -u mixfix_cartouches" --- to simplify systematic editing;
 wenzelm parents: 
80768diff
changeset | 13 | (infixl \<open>(sparse'_in)\<close> 50) | 
| 79857 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 14 | where | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 15 | "pts sparse_in A = (\<forall>x\<in>A. \<exists>B. x\<in>B \<and> open B \<and> (\<forall>y\<in>B. \<not> y islimpt pts))" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 16 | |
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 17 | lemma sparse_in_empty[simp]: "{} sparse_in A"
 | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 18 | by (meson UNIV_I empty_iff islimpt_def open_UNIV sparse_in_def) | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 19 | |
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 20 | lemma finite_imp_sparse: | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 21 | fixes pts::"'a:: t1_space set" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 22 | shows "finite pts \<Longrightarrow> pts sparse_in S" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 23 | by (meson UNIV_I islimpt_finite open_UNIV sparse_in_def) | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 24 | |
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 25 | lemma sparse_in_singleton[simp]: "{x} sparse_in (A::'a:: t1_space set)"
 | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 26 | by (rule finite_imp_sparse) auto | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 27 | |
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 28 | lemma sparse_in_ball_def: | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 29 | "pts sparse_in D \<longleftrightarrow> (\<forall>x\<in>D. \<exists>e>0. \<forall>y\<in>ball x e. \<not> y islimpt pts)" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 30 | unfolding sparse_in_def | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 31 | by (meson Elementary_Metric_Spaces.open_ball open_contains_ball_eq subset_eq) | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 32 | |
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 33 | lemma get_sparse_in_cover: | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 34 | assumes "pts sparse_in A" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 35 | obtains B where "open B" "A \<subseteq> B" "\<forall>y\<in>B. \<not> y islimpt pts" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 36 | proof - | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 37 | obtain getB where getB:"x\<in>getB x" "open (getB x)" "\<forall>y\<in>getB x. \<not> y islimpt pts" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 38 | if "x\<in>A" for x | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 39 | using assms(1) unfolding sparse_in_def by metis | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 40 | define B where "B = Union (getB ` A)" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 41 | have "open B" unfolding B_def using getB(2) by blast | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 42 | moreover have "A \<subseteq> B" unfolding B_def using getB(1) by auto | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 43 | moreover have "\<forall>y\<in>B. \<not> y islimpt pts" unfolding B_def by (meson UN_iff getB(3)) | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 44 | ultimately show ?thesis using that by blast | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 45 | qed | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 46 | |
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 47 | lemma sparse_in_open: | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 48 | assumes "open A" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 49 | shows "pts sparse_in A \<longleftrightarrow> (\<forall>y\<in>A. \<not>y islimpt pts)" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 50 | using assms unfolding sparse_in_def by auto | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 51 | |
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 52 | lemma sparse_in_not_in: | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 53 | assumes "pts sparse_in A" "x\<in>A" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 54 | obtains B where "open B" "x\<in>B" "\<forall>y\<in>B. y\<noteq>x \<longrightarrow> y\<notin>pts" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 55 | using assms unfolding sparse_in_def | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 56 | by (metis islimptI) | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 57 | |
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 58 | lemma sparse_in_subset: | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 59 | assumes "pts sparse_in A" "B \<subseteq> A" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 60 | shows "pts sparse_in B" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 61 | using assms unfolding sparse_in_def by auto | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 62 | |
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 63 | lemma sparse_in_subset2: | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 64 | assumes "pts1 sparse_in D" "pts2 \<subseteq> pts1" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 65 | shows "pts2 sparse_in D" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 66 | by (meson assms(1) assms(2) islimpt_subset sparse_in_def) | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 67 | |
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 68 | lemma sparse_in_union: | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 69 | assumes "pts1 sparse_in D1" "pts2 sparse_in D1" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 70 | shows "(pts1 \<union> pts2) sparse_in (D1 \<inter> D2)" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 71 | using assms unfolding sparse_in_def islimpt_Un | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 72 | by (metis Int_iff open_Int) | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 73 | |
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 74 | lemma sparse_in_compact_finite: | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 75 | assumes "pts sparse_in A" "compact A" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 76 | shows "finite (A \<inter> pts)" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 77 | apply (rule finite_not_islimpt_in_compact[OF \<open>compact A\<close>]) | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 78 | using assms unfolding sparse_in_def by blast | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 79 | |
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 80 | lemma sparse_imp_closedin_pts: | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 81 | assumes "pts sparse_in D" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 82 | shows "closedin (top_of_set D) (D \<inter> pts)" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 83 | using assms islimpt_subset unfolding closedin_limpt sparse_in_def | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 84 | by fastforce | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 85 | |
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 86 | lemma open_diff_sparse_pts: | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 87 | assumes "open D" "pts sparse_in D" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 88 | shows "open (D - pts)" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 89 | using assms sparse_imp_closedin_pts | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 90 | by (metis Diff_Diff_Int Diff_cancel Diff_eq_empty_iff Diff_subset | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 91 | closedin_def double_diff openin_open_eq topspace_euclidean_subtopology) | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 92 | |
| 82137 | 93 | lemma sparse_in_UNIV_imp_closed: "X sparse_in UNIV \<Longrightarrow> closed X" | 
| 94 | by (simp add: Compl_eq_Diff_UNIV closed_open open_diff_sparse_pts) | |
| 95 | ||
| 96 | ||
| 79857 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 97 | lemma sparse_imp_countable: | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 98 | fixes D::"'a ::euclidean_space set" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 99 | assumes "open D" "pts sparse_in D" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 100 | shows "countable (D \<inter> pts)" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 101 | proof - | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 102 | obtain K :: "nat \<Rightarrow> 'a ::euclidean_space set" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 103 | where K: "D = (\<Union>n. K n)" "\<And>n. compact (K n)" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 104 | using assms by (metis open_Union_compact_subsets) | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 105 | then have "D\<inter> pts = (\<Union>n. K n \<inter> pts)" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 106 | by blast | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 107 | moreover have "\<And>n. finite (K n \<inter> pts)" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 108 | by (metis K(1) K(2) Union_iff assms(2) rangeI | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 109 | sparse_in_compact_finite sparse_in_subset subsetI) | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 110 | ultimately show ?thesis | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 111 | by (metis countableI_type countable_UN countable_finite) | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 112 | qed | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 113 | |
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 114 | lemma sparse_imp_connected: | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 115 | fixes D::"'a ::euclidean_space set" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 116 |   assumes  "2 \<le> DIM ('a)"  "connected D" "open D" "pts sparse_in D"
 | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 117 | shows "connected (D - pts)" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 118 | using assms | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 119 | by (metis Diff_Compl Diff_Diff_Int Diff_eq connected_open_diff_countable | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 120 | sparse_imp_countable) | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 121 | |
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 122 | lemma sparse_in_eventually_iff: | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 123 | assumes "open A" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 124 | shows "pts sparse_in A \<longleftrightarrow> (\<forall>y\<in>A. (\<forall>\<^sub>F y in at y. y \<notin> pts))" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 125 | unfolding sparse_in_open[OF \<open>open A\<close>] islimpt_iff_eventually | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 126 | by simp | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 127 | |
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 128 | lemma get_sparse_from_eventually: | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 129 | fixes A::"'a::topological_space set" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 130 | assumes "\<forall>x\<in>A. \<forall>\<^sub>F z in at x. P z" "open A" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 131 | obtains pts where "pts sparse_in A" "\<forall>x\<in>A - pts. P x" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 132 | proof - | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 133 |   define pts::"'a set" where "pts={x. \<not>P x}"
 | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 134 | have "pts sparse_in A" "\<forall>x\<in>A - pts. P x" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 135 | unfolding sparse_in_eventually_iff[OF \<open>open A\<close>] pts_def | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 136 | using assms(1) by simp_all | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 137 | then show ?thesis using that by blast | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 138 | qed | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 139 | |
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 140 | lemma sparse_disjoint: | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 141 |   assumes "pts \<inter> A = {}" "open A"
 | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 142 | shows "pts sparse_in A" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 143 | using assms unfolding sparse_in_eventually_iff[OF \<open>open A\<close>] | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 144 | eventually_at_topological | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 145 | by blast | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 146 | |
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 147 | |
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 148 | subsection \<open>Co-sparseness filter\<close> | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 149 | |
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 150 | text \<open> | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 151 | The co-sparseness filter allows us to talk about properties that hold on a given set except | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 152 | for an ``insignificant'' number of points that are sparse in that set. | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 153 | \<close> | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 154 | lemma is_filter_cosparse: "is_filter (\<lambda>P. {x. \<not>P x} sparse_in A)"
 | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 155 | proof (standard, goal_cases) | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 156 | case 1 | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 157 | thus ?case by auto | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 158 | next | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 159 | case (2 P Q) | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 160 | from sparse_in_union[OF this, of UNIV] show ?case | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 161 | by (auto simp: Un_def) | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 162 | next | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 163 | case (3 P Q) | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 164 | from 3(2) show ?case | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 165 | by (rule sparse_in_subset2) (use 3(1) in auto) | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 166 | qed | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 167 | |
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 168 | definition cosparse :: "'a set \<Rightarrow> 'a :: topological_space filter" where | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 169 |  "cosparse A = Abs_filter (\<lambda>P. {x. \<not>P x} sparse_in A)"
 | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 170 | |
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 171 | syntax | 
| 81097 | 172 | "_eventually_cosparse" :: "pttrn => 'a set => bool => bool" (\<open>(\<open>indent=3 notation=\<open>binder \<forall>\<approx>\<close>\<close>\<forall>\<^sub>\<approx>_\<in>_./ _)\<close> [0, 0, 10] 10) | 
| 80768 | 173 | syntax_consts | 
| 174 | "_eventually_cosparse" == eventually | |
| 79857 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 175 | translations | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 176 | "\<forall>\<^sub>\<approx>x\<in>A. P" == "CONST eventually (\<lambda>x. P) (CONST cosparse A)" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 177 | |
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 178 | syntax | 
| 81097 | 179 | "_qeventually_cosparse" :: "pttrn \<Rightarrow> bool \<Rightarrow> 'a \<Rightarrow> 'a" (\<open>(\<open>indent=3 notation=\<open>binder \<forall>\<approx>\<close>\<close>\<forall>\<^sub>\<approx>_ | (_)./ _)\<close> [0, 0, 10] 10) | 
| 80768 | 180 | syntax_consts | 
| 181 | "_qeventually_cosparse" == eventually | |
| 79857 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 182 | translations | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 183 |   "\<forall>\<^sub>\<approx>x|P. t" => "CONST eventually (\<lambda>x. t) (CONST cosparse {x. P})"
 | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 184 | print_translation \<open> | 
| 81150 | 185 | [(\<^const_syntax>\<open>eventually\<close>, K (Collect_binder_tr' \<^syntax_const>\<open>_qeventually_cosparse\<close>))] | 
| 79857 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 186 | \<close> | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 187 | |
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 188 | lemma eventually_cosparse: "eventually P (cosparse A) \<longleftrightarrow> {x. \<not>P x} sparse_in A"
 | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 189 | unfolding cosparse_def by (rule eventually_Abs_filter[OF is_filter_cosparse]) | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 190 | |
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 191 | lemma eventually_not_in_cosparse: | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 192 | assumes "X sparse_in A" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 193 | shows "eventually (\<lambda>x. x \<notin> X) (cosparse A)" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 194 | using assms by (auto simp: eventually_cosparse) | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 195 | |
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 196 | lemma eventually_cosparse_open_eq: | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 197 | "open A \<Longrightarrow> eventually P (cosparse A) \<longleftrightarrow> (\<forall>x\<in>A. eventually P (at x))" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 198 | unfolding eventually_cosparse | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 199 | by (subst sparse_in_open) (auto simp: islimpt_conv_frequently_at frequently_def) | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 200 | |
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 201 | lemma eventually_cosparse_imp_eventually_at: | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 202 | "eventually P (cosparse A) \<Longrightarrow> x \<in> A \<Longrightarrow> eventually P (at x within B)" | 
| 82137 | 203 | unfolding eventually_cosparse sparse_in_def islimpt_def eventually_at_topological | 
| 204 | by fastforce | |
| 79857 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 205 | |
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 206 | lemma eventually_in_cosparse: | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 207 | assumes "A \<subseteq> X" "open A" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 208 | shows "eventually (\<lambda>x. x \<in> X) (cosparse A)" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 209 | proof - | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 210 | have "eventually (\<lambda>x. x \<in> A) (cosparse A)" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 211 | using assms by (auto simp: eventually_cosparse_open_eq intro: eventually_at_in_open') | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 212 | thus ?thesis | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 213 | by eventually_elim (use assms(1) in blast) | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 214 | qed | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 215 | |
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 216 | lemma cosparse_eq_bot_iff: "cosparse A = bot \<longleftrightarrow> (\<forall>x\<in>A. open {x})"
 | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 217 | proof - | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 218 | have "cosparse A = bot \<longleftrightarrow> eventually (\<lambda>_. False) (cosparse A)" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 219 | by (simp add: trivial_limit_def) | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 220 |   also have "\<dots> \<longleftrightarrow> (\<forall>x\<in>A. open {x})"
 | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 221 | unfolding eventually_cosparse sparse_in_def | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 222 | by (auto simp: islimpt_UNIV_iff) | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 223 | finally show ?thesis . | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 224 | qed | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 225 | |
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 226 | lemma cosparse_empty [simp]: "cosparse {} = bot"
 | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 227 | by (rule filter_eqI) (auto simp: eventually_cosparse sparse_in_def) | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 228 | |
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 229 | lemma cosparse_eq_bot_iff' [simp]: "cosparse (A :: 'a :: perfect_space set) = bot \<longleftrightarrow> A = {}"
 | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 230 | by (auto simp: cosparse_eq_bot_iff not_open_singleton) | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 231 | |
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 232 | end |