author | haftmann |
Thu, 19 Jun 2025 17:15:40 +0200 | |
changeset 82734 | 89347c0cc6a3 |
parent 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:
80768
diff
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 |
|
82518
da14e77a48b2
lots of lemmas for HOL, HOL-{Complex_}Analysis, HOL-Number_Theory
Manuel Eberl <manuel@pruvisto.org>
parents:
82137
diff
changeset
|
74 |
lemma sparse_in_union': "A sparse_in C \<Longrightarrow> B sparse_in C \<Longrightarrow> A \<union> B sparse_in C" |
da14e77a48b2
lots of lemmas for HOL, HOL-{Complex_}Analysis, HOL-Number_Theory
Manuel Eberl <manuel@pruvisto.org>
parents:
82137
diff
changeset
|
75 |
using sparse_in_union[of A C B C] by simp |
da14e77a48b2
lots of lemmas for HOL, HOL-{Complex_}Analysis, HOL-Number_Theory
Manuel Eberl <manuel@pruvisto.org>
parents:
82137
diff
changeset
|
76 |
|
da14e77a48b2
lots of lemmas for HOL, HOL-{Complex_}Analysis, HOL-Number_Theory
Manuel Eberl <manuel@pruvisto.org>
parents:
82137
diff
changeset
|
77 |
lemma sparse_in_Union_finite: |
da14e77a48b2
lots of lemmas for HOL, HOL-{Complex_}Analysis, HOL-Number_Theory
Manuel Eberl <manuel@pruvisto.org>
parents:
82137
diff
changeset
|
78 |
assumes "(\<And>A'. A' \<in> A \<Longrightarrow> A' sparse_in B)" "finite A" |
da14e77a48b2
lots of lemmas for HOL, HOL-{Complex_}Analysis, HOL-Number_Theory
Manuel Eberl <manuel@pruvisto.org>
parents:
82137
diff
changeset
|
79 |
shows "\<Union>A sparse_in B" |
da14e77a48b2
lots of lemmas for HOL, HOL-{Complex_}Analysis, HOL-Number_Theory
Manuel Eberl <manuel@pruvisto.org>
parents:
82137
diff
changeset
|
80 |
using assms(2,1) by (induction rule: finite_induct) (auto intro!: sparse_in_union') |
da14e77a48b2
lots of lemmas for HOL, HOL-{Complex_}Analysis, HOL-Number_Theory
Manuel Eberl <manuel@pruvisto.org>
parents:
82137
diff
changeset
|
81 |
|
da14e77a48b2
lots of lemmas for HOL, HOL-{Complex_}Analysis, HOL-Number_Theory
Manuel Eberl <manuel@pruvisto.org>
parents:
82137
diff
changeset
|
82 |
lemma sparse_in_UN_finite: |
da14e77a48b2
lots of lemmas for HOL, HOL-{Complex_}Analysis, HOL-Number_Theory
Manuel Eberl <manuel@pruvisto.org>
parents:
82137
diff
changeset
|
83 |
assumes "(\<And>x. x \<in> A \<Longrightarrow> f x sparse_in B)" "finite A" |
da14e77a48b2
lots of lemmas for HOL, HOL-{Complex_}Analysis, HOL-Number_Theory
Manuel Eberl <manuel@pruvisto.org>
parents:
82137
diff
changeset
|
84 |
shows "(\<Union>x\<in>A. f x) sparse_in B" |
da14e77a48b2
lots of lemmas for HOL, HOL-{Complex_}Analysis, HOL-Number_Theory
Manuel Eberl <manuel@pruvisto.org>
parents:
82137
diff
changeset
|
85 |
by (rule sparse_in_Union_finite) (use assms in auto) |
da14e77a48b2
lots of lemmas for HOL, HOL-{Complex_}Analysis, HOL-Number_Theory
Manuel Eberl <manuel@pruvisto.org>
parents:
82137
diff
changeset
|
86 |
|
79857
819c28a7280f
New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
87 |
lemma sparse_in_compact_finite: |
819c28a7280f
New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
88 |
assumes "pts sparse_in A" "compact A" |
819c28a7280f
New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
89 |
shows "finite (A \<inter> pts)" |
819c28a7280f
New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
90 |
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
|
91 |
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
|
92 |
|
819c28a7280f
New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
93 |
lemma sparse_imp_closedin_pts: |
819c28a7280f
New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
94 |
assumes "pts sparse_in D" |
819c28a7280f
New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
95 |
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
|
96 |
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
|
97 |
by fastforce |
819c28a7280f
New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
98 |
|
819c28a7280f
New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
99 |
lemma open_diff_sparse_pts: |
819c28a7280f
New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
100 |
assumes "open D" "pts sparse_in D" |
819c28a7280f
New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
101 |
shows "open (D - pts)" |
819c28a7280f
New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
102 |
using assms sparse_imp_closedin_pts |
819c28a7280f
New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
103 |
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
|
104 |
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
|
105 |
|
82137 | 106 |
lemma sparse_in_UNIV_imp_closed: "X sparse_in UNIV \<Longrightarrow> closed X" |
107 |
by (simp add: Compl_eq_Diff_UNIV closed_open open_diff_sparse_pts) |
|
108 |
||
109 |
||
79857
819c28a7280f
New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
110 |
lemma sparse_imp_countable: |
819c28a7280f
New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
111 |
fixes D::"'a ::euclidean_space set" |
819c28a7280f
New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
112 |
assumes "open D" "pts sparse_in D" |
819c28a7280f
New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
113 |
shows "countable (D \<inter> pts)" |
819c28a7280f
New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
114 |
proof - |
819c28a7280f
New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
115 |
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
|
116 |
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
|
117 |
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
|
118 |
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
|
119 |
by blast |
819c28a7280f
New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
120 |
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
|
121 |
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
|
122 |
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
|
123 |
ultimately show ?thesis |
819c28a7280f
New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
124 |
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
|
125 |
qed |
819c28a7280f
New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
126 |
|
819c28a7280f
New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
127 |
lemma sparse_imp_connected: |
819c28a7280f
New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
128 |
fixes D::"'a ::euclidean_space set" |
819c28a7280f
New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
129 |
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
|
130 |
shows "connected (D - pts)" |
819c28a7280f
New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
131 |
using assms |
819c28a7280f
New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
132 |
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
|
133 |
sparse_imp_countable) |
819c28a7280f
New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
134 |
|
819c28a7280f
New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
135 |
lemma sparse_in_eventually_iff: |
819c28a7280f
New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
136 |
assumes "open A" |
819c28a7280f
New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
137 |
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
|
138 |
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
|
139 |
by simp |
819c28a7280f
New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
140 |
|
819c28a7280f
New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
141 |
lemma get_sparse_from_eventually: |
819c28a7280f
New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
142 |
fixes A::"'a::topological_space set" |
819c28a7280f
New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
143 |
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
|
144 |
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
|
145 |
proof - |
819c28a7280f
New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
146 |
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
|
147 |
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
|
148 |
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
|
149 |
using assms(1) by simp_all |
819c28a7280f
New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
150 |
then show ?thesis using that by blast |
819c28a7280f
New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
151 |
qed |
819c28a7280f
New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
152 |
|
819c28a7280f
New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
153 |
lemma sparse_disjoint: |
819c28a7280f
New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
154 |
assumes "pts \<inter> A = {}" "open A" |
819c28a7280f
New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
155 |
shows "pts sparse_in A" |
819c28a7280f
New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
156 |
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
|
157 |
eventually_at_topological |
819c28a7280f
New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
158 |
by blast |
819c28a7280f
New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
159 |
|
82518
da14e77a48b2
lots of lemmas for HOL, HOL-{Complex_}Analysis, HOL-Number_Theory
Manuel Eberl <manuel@pruvisto.org>
parents:
82137
diff
changeset
|
160 |
lemma sparse_in_translate: |
da14e77a48b2
lots of lemmas for HOL, HOL-{Complex_}Analysis, HOL-Number_Theory
Manuel Eberl <manuel@pruvisto.org>
parents:
82137
diff
changeset
|
161 |
fixes A B :: "'a :: real_normed_vector set" |
da14e77a48b2
lots of lemmas for HOL, HOL-{Complex_}Analysis, HOL-Number_Theory
Manuel Eberl <manuel@pruvisto.org>
parents:
82137
diff
changeset
|
162 |
assumes "A sparse_in B" |
da14e77a48b2
lots of lemmas for HOL, HOL-{Complex_}Analysis, HOL-Number_Theory
Manuel Eberl <manuel@pruvisto.org>
parents:
82137
diff
changeset
|
163 |
shows "(+) c ` A sparse_in (+) c ` B" |
da14e77a48b2
lots of lemmas for HOL, HOL-{Complex_}Analysis, HOL-Number_Theory
Manuel Eberl <manuel@pruvisto.org>
parents:
82137
diff
changeset
|
164 |
unfolding sparse_in_def |
da14e77a48b2
lots of lemmas for HOL, HOL-{Complex_}Analysis, HOL-Number_Theory
Manuel Eberl <manuel@pruvisto.org>
parents:
82137
diff
changeset
|
165 |
proof safe |
da14e77a48b2
lots of lemmas for HOL, HOL-{Complex_}Analysis, HOL-Number_Theory
Manuel Eberl <manuel@pruvisto.org>
parents:
82137
diff
changeset
|
166 |
fix x assume "x \<in> B" |
da14e77a48b2
lots of lemmas for HOL, HOL-{Complex_}Analysis, HOL-Number_Theory
Manuel Eberl <manuel@pruvisto.org>
parents:
82137
diff
changeset
|
167 |
from get_sparse_in_cover[OF assms] obtain B' where B': "open B'" "B \<subseteq> B'" "\<forall>y\<in>B'. \<not>y islimpt A" |
da14e77a48b2
lots of lemmas for HOL, HOL-{Complex_}Analysis, HOL-Number_Theory
Manuel Eberl <manuel@pruvisto.org>
parents:
82137
diff
changeset
|
168 |
by blast |
da14e77a48b2
lots of lemmas for HOL, HOL-{Complex_}Analysis, HOL-Number_Theory
Manuel Eberl <manuel@pruvisto.org>
parents:
82137
diff
changeset
|
169 |
have "c + x \<in> (+) c ` B'" "open ((+) c ` B')" |
da14e77a48b2
lots of lemmas for HOL, HOL-{Complex_}Analysis, HOL-Number_Theory
Manuel Eberl <manuel@pruvisto.org>
parents:
82137
diff
changeset
|
170 |
using B' \<open>x \<in> B\<close> by (auto intro: open_translation) |
da14e77a48b2
lots of lemmas for HOL, HOL-{Complex_}Analysis, HOL-Number_Theory
Manuel Eberl <manuel@pruvisto.org>
parents:
82137
diff
changeset
|
171 |
moreover have "\<forall>y\<in>(+) c ` B'. \<not>y islimpt ((+) c ` A)" |
da14e77a48b2
lots of lemmas for HOL, HOL-{Complex_}Analysis, HOL-Number_Theory
Manuel Eberl <manuel@pruvisto.org>
parents:
82137
diff
changeset
|
172 |
proof safe |
da14e77a48b2
lots of lemmas for HOL, HOL-{Complex_}Analysis, HOL-Number_Theory
Manuel Eberl <manuel@pruvisto.org>
parents:
82137
diff
changeset
|
173 |
fix y assume y: "y \<in> B'" "c + y islimpt (+) c ` A" |
da14e77a48b2
lots of lemmas for HOL, HOL-{Complex_}Analysis, HOL-Number_Theory
Manuel Eberl <manuel@pruvisto.org>
parents:
82137
diff
changeset
|
174 |
have "(-c) + (c + y) islimpt (+) (-c) ` (+) c ` A" |
da14e77a48b2
lots of lemmas for HOL, HOL-{Complex_}Analysis, HOL-Number_Theory
Manuel Eberl <manuel@pruvisto.org>
parents:
82137
diff
changeset
|
175 |
by (intro islimpt_isCont_image[OF y(2)] continuous_intros) |
da14e77a48b2
lots of lemmas for HOL, HOL-{Complex_}Analysis, HOL-Number_Theory
Manuel Eberl <manuel@pruvisto.org>
parents:
82137
diff
changeset
|
176 |
(auto simp: algebra_simps eventually_at_topological) |
da14e77a48b2
lots of lemmas for HOL, HOL-{Complex_}Analysis, HOL-Number_Theory
Manuel Eberl <manuel@pruvisto.org>
parents:
82137
diff
changeset
|
177 |
hence "y islimpt A" |
da14e77a48b2
lots of lemmas for HOL, HOL-{Complex_}Analysis, HOL-Number_Theory
Manuel Eberl <manuel@pruvisto.org>
parents:
82137
diff
changeset
|
178 |
by (simp add: image_image) |
da14e77a48b2
lots of lemmas for HOL, HOL-{Complex_}Analysis, HOL-Number_Theory
Manuel Eberl <manuel@pruvisto.org>
parents:
82137
diff
changeset
|
179 |
with y(1) B' show False |
da14e77a48b2
lots of lemmas for HOL, HOL-{Complex_}Analysis, HOL-Number_Theory
Manuel Eberl <manuel@pruvisto.org>
parents:
82137
diff
changeset
|
180 |
by blast |
da14e77a48b2
lots of lemmas for HOL, HOL-{Complex_}Analysis, HOL-Number_Theory
Manuel Eberl <manuel@pruvisto.org>
parents:
82137
diff
changeset
|
181 |
qed |
da14e77a48b2
lots of lemmas for HOL, HOL-{Complex_}Analysis, HOL-Number_Theory
Manuel Eberl <manuel@pruvisto.org>
parents:
82137
diff
changeset
|
182 |
ultimately show "\<exists>B. c + x \<in> B \<and> open B \<and> (\<forall>y\<in>B. \<not> y islimpt (+) c ` A)" |
da14e77a48b2
lots of lemmas for HOL, HOL-{Complex_}Analysis, HOL-Number_Theory
Manuel Eberl <manuel@pruvisto.org>
parents:
82137
diff
changeset
|
183 |
by metis |
da14e77a48b2
lots of lemmas for HOL, HOL-{Complex_}Analysis, HOL-Number_Theory
Manuel Eberl <manuel@pruvisto.org>
parents:
82137
diff
changeset
|
184 |
qed |
da14e77a48b2
lots of lemmas for HOL, HOL-{Complex_}Analysis, HOL-Number_Theory
Manuel Eberl <manuel@pruvisto.org>
parents:
82137
diff
changeset
|
185 |
|
da14e77a48b2
lots of lemmas for HOL, HOL-{Complex_}Analysis, HOL-Number_Theory
Manuel Eberl <manuel@pruvisto.org>
parents:
82137
diff
changeset
|
186 |
lemma sparse_in_translate': |
da14e77a48b2
lots of lemmas for HOL, HOL-{Complex_}Analysis, HOL-Number_Theory
Manuel Eberl <manuel@pruvisto.org>
parents:
82137
diff
changeset
|
187 |
fixes A B :: "'a :: real_normed_vector set" |
da14e77a48b2
lots of lemmas for HOL, HOL-{Complex_}Analysis, HOL-Number_Theory
Manuel Eberl <manuel@pruvisto.org>
parents:
82137
diff
changeset
|
188 |
assumes "A sparse_in B" "C \<subseteq> (+) c ` B" |
da14e77a48b2
lots of lemmas for HOL, HOL-{Complex_}Analysis, HOL-Number_Theory
Manuel Eberl <manuel@pruvisto.org>
parents:
82137
diff
changeset
|
189 |
shows "(+) c ` A sparse_in C" |
da14e77a48b2
lots of lemmas for HOL, HOL-{Complex_}Analysis, HOL-Number_Theory
Manuel Eberl <manuel@pruvisto.org>
parents:
82137
diff
changeset
|
190 |
using sparse_in_translate[OF assms(1)] assms(2) by (rule sparse_in_subset) |
da14e77a48b2
lots of lemmas for HOL, HOL-{Complex_}Analysis, HOL-Number_Theory
Manuel Eberl <manuel@pruvisto.org>
parents:
82137
diff
changeset
|
191 |
|
da14e77a48b2
lots of lemmas for HOL, HOL-{Complex_}Analysis, HOL-Number_Theory
Manuel Eberl <manuel@pruvisto.org>
parents:
82137
diff
changeset
|
192 |
lemma sparse_in_translate_UNIV: |
da14e77a48b2
lots of lemmas for HOL, HOL-{Complex_}Analysis, HOL-Number_Theory
Manuel Eberl <manuel@pruvisto.org>
parents:
82137
diff
changeset
|
193 |
fixes A B :: "'a :: real_normed_vector set" |
da14e77a48b2
lots of lemmas for HOL, HOL-{Complex_}Analysis, HOL-Number_Theory
Manuel Eberl <manuel@pruvisto.org>
parents:
82137
diff
changeset
|
194 |
assumes "A sparse_in UNIV" |
da14e77a48b2
lots of lemmas for HOL, HOL-{Complex_}Analysis, HOL-Number_Theory
Manuel Eberl <manuel@pruvisto.org>
parents:
82137
diff
changeset
|
195 |
shows "(+) c ` A sparse_in UNIV" |
da14e77a48b2
lots of lemmas for HOL, HOL-{Complex_}Analysis, HOL-Number_Theory
Manuel Eberl <manuel@pruvisto.org>
parents:
82137
diff
changeset
|
196 |
using assms by (rule sparse_in_translate') auto |
da14e77a48b2
lots of lemmas for HOL, HOL-{Complex_}Analysis, HOL-Number_Theory
Manuel Eberl <manuel@pruvisto.org>
parents:
82137
diff
changeset
|
197 |
|
79857
819c28a7280f
New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
198 |
|
819c28a7280f
New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
199 |
subsection \<open>Co-sparseness filter\<close> |
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 |
text \<open> |
819c28a7280f
New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
202 |
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
|
203 |
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
|
204 |
\<close> |
819c28a7280f
New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
205 |
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
|
206 |
proof (standard, goal_cases) |
819c28a7280f
New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
207 |
case 1 |
819c28a7280f
New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
208 |
thus ?case by auto |
819c28a7280f
New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
209 |
next |
819c28a7280f
New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
210 |
case (2 P Q) |
819c28a7280f
New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
211 |
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
|
212 |
by (auto simp: Un_def) |
819c28a7280f
New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
213 |
next |
819c28a7280f
New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
214 |
case (3 P Q) |
819c28a7280f
New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
215 |
from 3(2) show ?case |
819c28a7280f
New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
216 |
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
|
217 |
qed |
819c28a7280f
New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
218 |
|
819c28a7280f
New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
219 |
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
|
220 |
"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
|
221 |
|
819c28a7280f
New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
222 |
syntax |
81097 | 223 |
"_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 | 224 |
syntax_consts |
225 |
"_eventually_cosparse" == eventually |
|
79857
819c28a7280f
New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
226 |
translations |
819c28a7280f
New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
227 |
"\<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
|
228 |
|
819c28a7280f
New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
229 |
syntax |
82518
da14e77a48b2
lots of lemmas for HOL, HOL-{Complex_}Analysis, HOL-Number_Theory
Manuel Eberl <manuel@pruvisto.org>
parents:
82137
diff
changeset
|
230 |
"_eventually_cosparse_UNIV" :: "pttrn => bool => bool" (\<open>(\<open>indent=3 notation=\<open>binder \<forall>\<approx>\<close>\<close>\<forall>\<^sub>\<approx>_./ _)\<close> [0, 10] 10) |
da14e77a48b2
lots of lemmas for HOL, HOL-{Complex_}Analysis, HOL-Number_Theory
Manuel Eberl <manuel@pruvisto.org>
parents:
82137
diff
changeset
|
231 |
syntax_consts |
da14e77a48b2
lots of lemmas for HOL, HOL-{Complex_}Analysis, HOL-Number_Theory
Manuel Eberl <manuel@pruvisto.org>
parents:
82137
diff
changeset
|
232 |
"_eventually_cosparse_UNIV" == eventually |
da14e77a48b2
lots of lemmas for HOL, HOL-{Complex_}Analysis, HOL-Number_Theory
Manuel Eberl <manuel@pruvisto.org>
parents:
82137
diff
changeset
|
233 |
translations |
da14e77a48b2
lots of lemmas for HOL, HOL-{Complex_}Analysis, HOL-Number_Theory
Manuel Eberl <manuel@pruvisto.org>
parents:
82137
diff
changeset
|
234 |
"\<forall>\<^sub>\<approx>x. P" == "CONST eventually (\<lambda>x. P) (CONST cosparse CONST UNIV)" |
da14e77a48b2
lots of lemmas for HOL, HOL-{Complex_}Analysis, HOL-Number_Theory
Manuel Eberl <manuel@pruvisto.org>
parents:
82137
diff
changeset
|
235 |
|
da14e77a48b2
lots of lemmas for HOL, HOL-{Complex_}Analysis, HOL-Number_Theory
Manuel Eberl <manuel@pruvisto.org>
parents:
82137
diff
changeset
|
236 |
syntax |
81097 | 237 |
"_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 | 238 |
syntax_consts |
239 |
"_qeventually_cosparse" == eventually |
|
79857
819c28a7280f
New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
240 |
translations |
819c28a7280f
New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
241 |
"\<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
|
242 |
print_translation \<open> |
81150 | 243 |
[(\<^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
|
244 |
\<close> |
819c28a7280f
New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
245 |
|
819c28a7280f
New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
246 |
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
|
247 |
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
|
248 |
|
819c28a7280f
New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
249 |
lemma eventually_not_in_cosparse: |
819c28a7280f
New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
250 |
assumes "X sparse_in A" |
819c28a7280f
New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
251 |
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
|
252 |
using assms by (auto simp: eventually_cosparse) |
819c28a7280f
New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
253 |
|
819c28a7280f
New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
254 |
lemma eventually_cosparse_open_eq: |
819c28a7280f
New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
255 |
"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
|
256 |
unfolding eventually_cosparse |
819c28a7280f
New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
257 |
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
|
258 |
|
819c28a7280f
New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
259 |
lemma eventually_cosparse_imp_eventually_at: |
819c28a7280f
New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
260 |
"eventually P (cosparse A) \<Longrightarrow> x \<in> A \<Longrightarrow> eventually P (at x within B)" |
82137 | 261 |
unfolding eventually_cosparse sparse_in_def islimpt_def eventually_at_topological |
262 |
by fastforce |
|
79857
819c28a7280f
New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
263 |
|
819c28a7280f
New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
264 |
lemma eventually_in_cosparse: |
819c28a7280f
New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
265 |
assumes "A \<subseteq> X" "open A" |
819c28a7280f
New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
266 |
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
|
267 |
proof - |
819c28a7280f
New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
268 |
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
|
269 |
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
|
270 |
thus ?thesis |
819c28a7280f
New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
271 |
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
|
272 |
qed |
819c28a7280f
New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
273 |
|
819c28a7280f
New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
274 |
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
|
275 |
proof - |
819c28a7280f
New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
276 |
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
|
277 |
by (simp add: trivial_limit_def) |
819c28a7280f
New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
278 |
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
|
279 |
unfolding eventually_cosparse sparse_in_def |
819c28a7280f
New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
280 |
by (auto simp: islimpt_UNIV_iff) |
819c28a7280f
New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
281 |
finally show ?thesis . |
819c28a7280f
New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
282 |
qed |
819c28a7280f
New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
283 |
|
819c28a7280f
New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
284 |
lemma cosparse_empty [simp]: "cosparse {} = bot" |
819c28a7280f
New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
285 |
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
|
286 |
|
819c28a7280f
New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
287 |
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
|
288 |
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
|
289 |
|
819c28a7280f
New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
290 |
end |