author | nipkow |
Tue, 05 Nov 2019 13:56:22 +0100 | |
changeset 71031 | 66c025383422 |
parent 70643 | 93a7a85de312 |
child 71172 | 575b3a818de5 |
permissions | -rw-r--r-- |
70642
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1 |
section \<open>Absolute Retracts, Absolute Neighbourhood Retracts and Euclidean Neighbourhood Retracts\<close> |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
3 |
theory Retracts |
71031 | 4 |
imports |
5 |
Brouwer_Fixpoint |
|
6 |
Continuous_Extension |
|
7 |
Ordered_Euclidean_Space |
|
70642
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
8 |
begin |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
9 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
10 |
text \<open>Absolute retracts (AR), absolute neighbourhood retracts (ANR) and also Euclidean neighbourhood |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
11 |
retracts (ENR). We define AR and ANR by specializing the standard definitions for a set to embedding |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
12 |
in spaces of higher dimension. |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
13 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
14 |
John Harrison writes: "This turns out to be sufficient (since any set in \<open>\<real>\<^sup>n\<close> can be |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
15 |
embedded as a closed subset of a convex subset of \<open>\<real>\<^sup>n\<^sup>+\<^sup>1\<close>) to derive the usual |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
16 |
definitions, but we need to split them into two implications because of the lack of type |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
17 |
quantifiers. Then ENR turns out to be equivalent to ANR plus local compactness."\<close> |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
18 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
19 |
definition\<^marker>\<open>tag important\<close> AR :: "'a::topological_space set \<Rightarrow> bool" where |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
20 |
"AR S \<equiv> \<forall>U. \<forall>S'::('a * real) set. |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
21 |
S homeomorphic S' \<and> closedin (top_of_set U) S' \<longrightarrow> S' retract_of U" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
22 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
23 |
definition\<^marker>\<open>tag important\<close> ANR :: "'a::topological_space set \<Rightarrow> bool" where |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
24 |
"ANR S \<equiv> \<forall>U. \<forall>S'::('a * real) set. |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
25 |
S homeomorphic S' \<and> closedin (top_of_set U) S' |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
26 |
\<longrightarrow> (\<exists>T. openin (top_of_set U) T \<and> S' retract_of T)" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
27 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
28 |
definition\<^marker>\<open>tag important\<close> ENR :: "'a::topological_space set \<Rightarrow> bool" where |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
29 |
"ENR S \<equiv> \<exists>U. open U \<and> S retract_of U" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
30 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
31 |
text \<open>First, show that we do indeed get the "usual" properties of ARs and ANRs.\<close> |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
32 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
33 |
lemma AR_imp_absolute_extensor: |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
34 |
fixes f :: "'a::euclidean_space \<Rightarrow> 'b::euclidean_space" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
35 |
assumes "AR S" and contf: "continuous_on T f" and "f ` T \<subseteq> S" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
36 |
and cloUT: "closedin (top_of_set U) T" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
37 |
obtains g where "continuous_on U g" "g ` U \<subseteq> S" "\<And>x. x \<in> T \<Longrightarrow> g x = f x" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
38 |
proof - |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
39 |
have "aff_dim S < int (DIM('b \<times> real))" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
40 |
using aff_dim_le_DIM [of S] by simp |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
41 |
then obtain C and S' :: "('b * real) set" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
42 |
where C: "convex C" "C \<noteq> {}" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
43 |
and cloCS: "closedin (top_of_set C) S'" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
44 |
and hom: "S homeomorphic S'" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
45 |
by (metis that homeomorphic_closedin_convex) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
46 |
then have "S' retract_of C" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
47 |
using \<open>AR S\<close> by (simp add: AR_def) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
48 |
then obtain r where "S' \<subseteq> C" and contr: "continuous_on C r" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
49 |
and "r ` C \<subseteq> S'" and rid: "\<And>x. x\<in>S' \<Longrightarrow> r x = x" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
50 |
by (auto simp: retraction_def retract_of_def) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
51 |
obtain g h where "homeomorphism S S' g h" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
52 |
using hom by (force simp: homeomorphic_def) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
53 |
then have "continuous_on (f ` T) g" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
54 |
by (meson \<open>f ` T \<subseteq> S\<close> continuous_on_subset homeomorphism_def) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
55 |
then have contgf: "continuous_on T (g \<circ> f)" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
56 |
by (metis continuous_on_compose contf) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
57 |
have gfTC: "(g \<circ> f) ` T \<subseteq> C" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
58 |
proof - |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
59 |
have "g ` S = S'" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
60 |
by (metis (no_types) \<open>homeomorphism S S' g h\<close> homeomorphism_def) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
61 |
with \<open>S' \<subseteq> C\<close> \<open>f ` T \<subseteq> S\<close> show ?thesis by force |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
62 |
qed |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
63 |
obtain f' where f': "continuous_on U f'" "f' ` U \<subseteq> C" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
64 |
"\<And>x. x \<in> T \<Longrightarrow> f' x = (g \<circ> f) x" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
65 |
by (metis Dugundji [OF C cloUT contgf gfTC]) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
66 |
show ?thesis |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
67 |
proof (rule_tac g = "h \<circ> r \<circ> f'" in that) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
68 |
show "continuous_on U (h \<circ> r \<circ> f')" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
69 |
apply (intro continuous_on_compose f') |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
70 |
using continuous_on_subset contr f' apply blast |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
71 |
by (meson \<open>homeomorphism S S' g h\<close> \<open>r ` C \<subseteq> S'\<close> continuous_on_subset \<open>f' ` U \<subseteq> C\<close> homeomorphism_def image_mono) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
72 |
show "(h \<circ> r \<circ> f') ` U \<subseteq> S" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
73 |
using \<open>homeomorphism S S' g h\<close> \<open>r ` C \<subseteq> S'\<close> \<open>f' ` U \<subseteq> C\<close> |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
74 |
by (fastforce simp: homeomorphism_def) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
75 |
show "\<And>x. x \<in> T \<Longrightarrow> (h \<circ> r \<circ> f') x = f x" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
76 |
using \<open>homeomorphism S S' g h\<close> \<open>f ` T \<subseteq> S\<close> f' |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
77 |
by (auto simp: rid homeomorphism_def) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
78 |
qed |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
79 |
qed |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
80 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
81 |
lemma AR_imp_absolute_retract: |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
82 |
fixes S :: "'a::euclidean_space set" and S' :: "'b::euclidean_space set" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
83 |
assumes "AR S" "S homeomorphic S'" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
84 |
and clo: "closedin (top_of_set U) S'" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
85 |
shows "S' retract_of U" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
86 |
proof - |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
87 |
obtain g h where hom: "homeomorphism S S' g h" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
88 |
using assms by (force simp: homeomorphic_def) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
89 |
have h: "continuous_on S' h" " h ` S' \<subseteq> S" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
90 |
using hom homeomorphism_def apply blast |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
91 |
apply (metis hom equalityE homeomorphism_def) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
92 |
done |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
93 |
obtain h' where h': "continuous_on U h'" "h' ` U \<subseteq> S" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
94 |
and h'h: "\<And>x. x \<in> S' \<Longrightarrow> h' x = h x" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
95 |
by (blast intro: AR_imp_absolute_extensor [OF \<open>AR S\<close> h clo]) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
96 |
have [simp]: "S' \<subseteq> U" using clo closedin_limpt by blast |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
97 |
show ?thesis |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
98 |
proof (simp add: retraction_def retract_of_def, intro exI conjI) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
99 |
show "continuous_on U (g \<circ> h')" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
100 |
apply (intro continuous_on_compose h') |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
101 |
apply (meson hom continuous_on_subset h' homeomorphism_cont1) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
102 |
done |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
103 |
show "(g \<circ> h') ` U \<subseteq> S'" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
104 |
using h' by clarsimp (metis hom subsetD homeomorphism_def imageI) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
105 |
show "\<forall>x\<in>S'. (g \<circ> h') x = x" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
106 |
by clarsimp (metis h'h hom homeomorphism_def) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
107 |
qed |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
108 |
qed |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
109 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
110 |
lemma AR_imp_absolute_retract_UNIV: |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
111 |
fixes S :: "'a::euclidean_space set" and S' :: "'b::euclidean_space set" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
112 |
assumes "AR S" and hom: "S homeomorphic S'" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
113 |
and clo: "closed S'" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
114 |
shows "S' retract_of UNIV" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
115 |
apply (rule AR_imp_absolute_retract [OF \<open>AR S\<close> hom]) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
116 |
using clo closed_closedin by auto |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
117 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
118 |
lemma absolute_extensor_imp_AR: |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
119 |
fixes S :: "'a::euclidean_space set" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
120 |
assumes "\<And>f :: 'a * real \<Rightarrow> 'a. |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
121 |
\<And>U T. \<lbrakk>continuous_on T f; f ` T \<subseteq> S; |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
122 |
closedin (top_of_set U) T\<rbrakk> |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
123 |
\<Longrightarrow> \<exists>g. continuous_on U g \<and> g ` U \<subseteq> S \<and> (\<forall>x \<in> T. g x = f x)" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
124 |
shows "AR S" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
125 |
proof (clarsimp simp: AR_def) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
126 |
fix U and T :: "('a * real) set" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
127 |
assume "S homeomorphic T" and clo: "closedin (top_of_set U) T" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
128 |
then obtain g h where hom: "homeomorphism S T g h" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
129 |
by (force simp: homeomorphic_def) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
130 |
have h: "continuous_on T h" " h ` T \<subseteq> S" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
131 |
using hom homeomorphism_def apply blast |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
132 |
apply (metis hom equalityE homeomorphism_def) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
133 |
done |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
134 |
obtain h' where h': "continuous_on U h'" "h' ` U \<subseteq> S" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
135 |
and h'h: "\<forall>x\<in>T. h' x = h x" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
136 |
using assms [OF h clo] by blast |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
137 |
have [simp]: "T \<subseteq> U" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
138 |
using clo closedin_imp_subset by auto |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
139 |
show "T retract_of U" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
140 |
proof (simp add: retraction_def retract_of_def, intro exI conjI) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
141 |
show "continuous_on U (g \<circ> h')" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
142 |
apply (intro continuous_on_compose h') |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
143 |
apply (meson hom continuous_on_subset h' homeomorphism_cont1) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
144 |
done |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
145 |
show "(g \<circ> h') ` U \<subseteq> T" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
146 |
using h' by clarsimp (metis hom subsetD homeomorphism_def imageI) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
147 |
show "\<forall>x\<in>T. (g \<circ> h') x = x" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
148 |
by clarsimp (metis h'h hom homeomorphism_def) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
149 |
qed |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
150 |
qed |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
151 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
152 |
lemma AR_eq_absolute_extensor: |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
153 |
fixes S :: "'a::euclidean_space set" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
154 |
shows "AR S \<longleftrightarrow> |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
155 |
(\<forall>f :: 'a * real \<Rightarrow> 'a. |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
156 |
\<forall>U T. continuous_on T f \<longrightarrow> f ` T \<subseteq> S \<longrightarrow> |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
157 |
closedin (top_of_set U) T \<longrightarrow> |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
158 |
(\<exists>g. continuous_on U g \<and> g ` U \<subseteq> S \<and> (\<forall>x \<in> T. g x = f x)))" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
159 |
apply (rule iffI) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
160 |
apply (metis AR_imp_absolute_extensor) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
161 |
apply (simp add: absolute_extensor_imp_AR) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
162 |
done |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
163 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
164 |
lemma AR_imp_retract: |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
165 |
fixes S :: "'a::euclidean_space set" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
166 |
assumes "AR S \<and> closedin (top_of_set U) S" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
167 |
shows "S retract_of U" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
168 |
using AR_imp_absolute_retract assms homeomorphic_refl by blast |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
169 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
170 |
lemma AR_homeomorphic_AR: |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
171 |
fixes S :: "'a::euclidean_space set" and T :: "'b::euclidean_space set" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
172 |
assumes "AR T" "S homeomorphic T" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
173 |
shows "AR S" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
174 |
unfolding AR_def |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
175 |
by (metis assms AR_imp_absolute_retract homeomorphic_trans [of _ S] homeomorphic_sym) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
176 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
177 |
lemma homeomorphic_AR_iff_AR: |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
178 |
fixes S :: "'a::euclidean_space set" and T :: "'b::euclidean_space set" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
179 |
shows "S homeomorphic T \<Longrightarrow> AR S \<longleftrightarrow> AR T" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
180 |
by (metis AR_homeomorphic_AR homeomorphic_sym) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
181 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
182 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
183 |
lemma ANR_imp_absolute_neighbourhood_extensor: |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
184 |
fixes f :: "'a::euclidean_space \<Rightarrow> 'b::euclidean_space" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
185 |
assumes "ANR S" and contf: "continuous_on T f" and "f ` T \<subseteq> S" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
186 |
and cloUT: "closedin (top_of_set U) T" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
187 |
obtains V g where "T \<subseteq> V" "openin (top_of_set U) V" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
188 |
"continuous_on V g" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
189 |
"g ` V \<subseteq> S" "\<And>x. x \<in> T \<Longrightarrow> g x = f x" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
190 |
proof - |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
191 |
have "aff_dim S < int (DIM('b \<times> real))" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
192 |
using aff_dim_le_DIM [of S] by simp |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
193 |
then obtain C and S' :: "('b * real) set" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
194 |
where C: "convex C" "C \<noteq> {}" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
195 |
and cloCS: "closedin (top_of_set C) S'" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
196 |
and hom: "S homeomorphic S'" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
197 |
by (metis that homeomorphic_closedin_convex) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
198 |
then obtain D where opD: "openin (top_of_set C) D" and "S' retract_of D" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
199 |
using \<open>ANR S\<close> by (auto simp: ANR_def) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
200 |
then obtain r where "S' \<subseteq> D" and contr: "continuous_on D r" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
201 |
and "r ` D \<subseteq> S'" and rid: "\<And>x. x \<in> S' \<Longrightarrow> r x = x" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
202 |
by (auto simp: retraction_def retract_of_def) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
203 |
obtain g h where homgh: "homeomorphism S S' g h" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
204 |
using hom by (force simp: homeomorphic_def) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
205 |
have "continuous_on (f ` T) g" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
206 |
by (meson \<open>f ` T \<subseteq> S\<close> continuous_on_subset homeomorphism_def homgh) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
207 |
then have contgf: "continuous_on T (g \<circ> f)" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
208 |
by (intro continuous_on_compose contf) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
209 |
have gfTC: "(g \<circ> f) ` T \<subseteq> C" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
210 |
proof - |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
211 |
have "g ` S = S'" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
212 |
by (metis (no_types) homeomorphism_def homgh) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
213 |
then show ?thesis |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
214 |
by (metis (no_types) assms(3) cloCS closedin_def image_comp image_mono order.trans topspace_euclidean_subtopology) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
215 |
qed |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
216 |
obtain f' where contf': "continuous_on U f'" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
217 |
and "f' ` U \<subseteq> C" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
218 |
and eq: "\<And>x. x \<in> T \<Longrightarrow> f' x = (g \<circ> f) x" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
219 |
by (metis Dugundji [OF C cloUT contgf gfTC]) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
220 |
show ?thesis |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
221 |
proof (rule_tac V = "U \<inter> f' -` D" and g = "h \<circ> r \<circ> f'" in that) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
222 |
show "T \<subseteq> U \<inter> f' -` D" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
223 |
using cloUT closedin_imp_subset \<open>S' \<subseteq> D\<close> \<open>f ` T \<subseteq> S\<close> eq homeomorphism_image1 homgh |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
224 |
by fastforce |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
225 |
show ope: "openin (top_of_set U) (U \<inter> f' -` D)" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
226 |
using \<open>f' ` U \<subseteq> C\<close> by (auto simp: opD contf' continuous_openin_preimage) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
227 |
have conth: "continuous_on (r ` f' ` (U \<inter> f' -` D)) h" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
228 |
apply (rule continuous_on_subset [of S']) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
229 |
using homeomorphism_def homgh apply blast |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
230 |
using \<open>r ` D \<subseteq> S'\<close> by blast |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
231 |
show "continuous_on (U \<inter> f' -` D) (h \<circ> r \<circ> f')" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
232 |
apply (intro continuous_on_compose conth |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
233 |
continuous_on_subset [OF contr] continuous_on_subset [OF contf'], auto) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
234 |
done |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
235 |
show "(h \<circ> r \<circ> f') ` (U \<inter> f' -` D) \<subseteq> S" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
236 |
using \<open>homeomorphism S S' g h\<close> \<open>f' ` U \<subseteq> C\<close> \<open>r ` D \<subseteq> S'\<close> |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
237 |
by (auto simp: homeomorphism_def) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
238 |
show "\<And>x. x \<in> T \<Longrightarrow> (h \<circ> r \<circ> f') x = f x" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
239 |
using \<open>homeomorphism S S' g h\<close> \<open>f ` T \<subseteq> S\<close> eq |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
240 |
by (auto simp: rid homeomorphism_def) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
241 |
qed |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
242 |
qed |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
243 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
244 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
245 |
corollary ANR_imp_absolute_neighbourhood_retract: |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
246 |
fixes S :: "'a::euclidean_space set" and S' :: "'b::euclidean_space set" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
247 |
assumes "ANR S" "S homeomorphic S'" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
248 |
and clo: "closedin (top_of_set U) S'" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
249 |
obtains V where "openin (top_of_set U) V" "S' retract_of V" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
250 |
proof - |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
251 |
obtain g h where hom: "homeomorphism S S' g h" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
252 |
using assms by (force simp: homeomorphic_def) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
253 |
have h: "continuous_on S' h" " h ` S' \<subseteq> S" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
254 |
using hom homeomorphism_def apply blast |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
255 |
apply (metis hom equalityE homeomorphism_def) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
256 |
done |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
257 |
from ANR_imp_absolute_neighbourhood_extensor [OF \<open>ANR S\<close> h clo] |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
258 |
obtain V h' where "S' \<subseteq> V" and opUV: "openin (top_of_set U) V" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
259 |
and h': "continuous_on V h'" "h' ` V \<subseteq> S" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
260 |
and h'h:"\<And>x. x \<in> S' \<Longrightarrow> h' x = h x" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
261 |
by (blast intro: ANR_imp_absolute_neighbourhood_extensor [OF \<open>ANR S\<close> h clo]) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
262 |
have "S' retract_of V" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
263 |
proof (simp add: retraction_def retract_of_def, intro exI conjI \<open>S' \<subseteq> V\<close>) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
264 |
show "continuous_on V (g \<circ> h')" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
265 |
apply (intro continuous_on_compose h') |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
266 |
apply (meson hom continuous_on_subset h' homeomorphism_cont1) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
267 |
done |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
268 |
show "(g \<circ> h') ` V \<subseteq> S'" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
269 |
using h' by clarsimp (metis hom subsetD homeomorphism_def imageI) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
270 |
show "\<forall>x\<in>S'. (g \<circ> h') x = x" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
271 |
by clarsimp (metis h'h hom homeomorphism_def) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
272 |
qed |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
273 |
then show ?thesis |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
274 |
by (rule that [OF opUV]) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
275 |
qed |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
276 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
277 |
corollary ANR_imp_absolute_neighbourhood_retract_UNIV: |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
278 |
fixes S :: "'a::euclidean_space set" and S' :: "'b::euclidean_space set" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
279 |
assumes "ANR S" and hom: "S homeomorphic S'" and clo: "closed S'" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
280 |
obtains V where "open V" "S' retract_of V" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
281 |
using ANR_imp_absolute_neighbourhood_retract [OF \<open>ANR S\<close> hom] |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
282 |
by (metis clo closed_closedin open_openin subtopology_UNIV) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
283 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
284 |
corollary neighbourhood_extension_into_ANR: |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
285 |
fixes f :: "'a::euclidean_space \<Rightarrow> 'b::euclidean_space" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
286 |
assumes contf: "continuous_on S f" and fim: "f ` S \<subseteq> T" and "ANR T" "closed S" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
287 |
obtains V g where "S \<subseteq> V" "open V" "continuous_on V g" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
288 |
"g ` V \<subseteq> T" "\<And>x. x \<in> S \<Longrightarrow> g x = f x" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
289 |
using ANR_imp_absolute_neighbourhood_extensor [OF \<open>ANR T\<close> contf fim] |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
290 |
by (metis \<open>closed S\<close> closed_closedin open_openin subtopology_UNIV) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
291 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
292 |
lemma absolute_neighbourhood_extensor_imp_ANR: |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
293 |
fixes S :: "'a::euclidean_space set" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
294 |
assumes "\<And>f :: 'a * real \<Rightarrow> 'a. |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
295 |
\<And>U T. \<lbrakk>continuous_on T f; f ` T \<subseteq> S; |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
296 |
closedin (top_of_set U) T\<rbrakk> |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
297 |
\<Longrightarrow> \<exists>V g. T \<subseteq> V \<and> openin (top_of_set U) V \<and> |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
298 |
continuous_on V g \<and> g ` V \<subseteq> S \<and> (\<forall>x \<in> T. g x = f x)" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
299 |
shows "ANR S" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
300 |
proof (clarsimp simp: ANR_def) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
301 |
fix U and T :: "('a * real) set" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
302 |
assume "S homeomorphic T" and clo: "closedin (top_of_set U) T" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
303 |
then obtain g h where hom: "homeomorphism S T g h" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
304 |
by (force simp: homeomorphic_def) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
305 |
have h: "continuous_on T h" " h ` T \<subseteq> S" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
306 |
using hom homeomorphism_def apply blast |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
307 |
apply (metis hom equalityE homeomorphism_def) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
308 |
done |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
309 |
obtain V h' where "T \<subseteq> V" and opV: "openin (top_of_set U) V" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
310 |
and h': "continuous_on V h'" "h' ` V \<subseteq> S" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
311 |
and h'h: "\<forall>x\<in>T. h' x = h x" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
312 |
using assms [OF h clo] by blast |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
313 |
have [simp]: "T \<subseteq> U" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
314 |
using clo closedin_imp_subset by auto |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
315 |
have "T retract_of V" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
316 |
proof (simp add: retraction_def retract_of_def, intro exI conjI \<open>T \<subseteq> V\<close>) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
317 |
show "continuous_on V (g \<circ> h')" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
318 |
apply (intro continuous_on_compose h') |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
319 |
apply (meson hom continuous_on_subset h' homeomorphism_cont1) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
320 |
done |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
321 |
show "(g \<circ> h') ` V \<subseteq> T" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
322 |
using h' by clarsimp (metis hom subsetD homeomorphism_def imageI) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
323 |
show "\<forall>x\<in>T. (g \<circ> h') x = x" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
324 |
by clarsimp (metis h'h hom homeomorphism_def) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
325 |
qed |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
326 |
then show "\<exists>V. openin (top_of_set U) V \<and> T retract_of V" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
327 |
using opV by blast |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
328 |
qed |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
329 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
330 |
lemma ANR_eq_absolute_neighbourhood_extensor: |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
331 |
fixes S :: "'a::euclidean_space set" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
332 |
shows "ANR S \<longleftrightarrow> |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
333 |
(\<forall>f :: 'a * real \<Rightarrow> 'a. |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
334 |
\<forall>U T. continuous_on T f \<longrightarrow> f ` T \<subseteq> S \<longrightarrow> |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
335 |
closedin (top_of_set U) T \<longrightarrow> |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
336 |
(\<exists>V g. T \<subseteq> V \<and> openin (top_of_set U) V \<and> |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
337 |
continuous_on V g \<and> g ` V \<subseteq> S \<and> (\<forall>x \<in> T. g x = f x)))" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
338 |
apply (rule iffI) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
339 |
apply (metis ANR_imp_absolute_neighbourhood_extensor) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
340 |
apply (simp add: absolute_neighbourhood_extensor_imp_ANR) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
341 |
done |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
342 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
343 |
lemma ANR_imp_neighbourhood_retract: |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
344 |
fixes S :: "'a::euclidean_space set" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
345 |
assumes "ANR S" "closedin (top_of_set U) S" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
346 |
obtains V where "openin (top_of_set U) V" "S retract_of V" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
347 |
using ANR_imp_absolute_neighbourhood_retract assms homeomorphic_refl by blast |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
348 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
349 |
lemma ANR_imp_absolute_closed_neighbourhood_retract: |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
350 |
fixes S :: "'a::euclidean_space set" and S' :: "'b::euclidean_space set" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
351 |
assumes "ANR S" "S homeomorphic S'" and US': "closedin (top_of_set U) S'" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
352 |
obtains V W |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
353 |
where "openin (top_of_set U) V" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
354 |
"closedin (top_of_set U) W" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
355 |
"S' \<subseteq> V" "V \<subseteq> W" "S' retract_of W" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
356 |
proof - |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
357 |
obtain Z where "openin (top_of_set U) Z" and S'Z: "S' retract_of Z" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
358 |
by (blast intro: assms ANR_imp_absolute_neighbourhood_retract) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
359 |
then have UUZ: "closedin (top_of_set U) (U - Z)" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
360 |
by auto |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
361 |
have "S' \<inter> (U - Z) = {}" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
362 |
using \<open>S' retract_of Z\<close> closedin_retract closedin_subtopology by fastforce |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
363 |
then obtain V W |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
364 |
where "openin (top_of_set U) V" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
365 |
and "openin (top_of_set U) W" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
366 |
and "S' \<subseteq> V" "U - Z \<subseteq> W" "V \<inter> W = {}" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
367 |
using separation_normal_local [OF US' UUZ] by auto |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
368 |
moreover have "S' retract_of U - W" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
369 |
apply (rule retract_of_subset [OF S'Z]) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
370 |
using US' \<open>S' \<subseteq> V\<close> \<open>V \<inter> W = {}\<close> closedin_subset apply fastforce |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
371 |
using Diff_subset_conv \<open>U - Z \<subseteq> W\<close> by blast |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
372 |
ultimately show ?thesis |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
373 |
apply (rule_tac V=V and W = "U-W" in that) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
374 |
using openin_imp_subset apply force+ |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
375 |
done |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
376 |
qed |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
377 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
378 |
lemma ANR_imp_closed_neighbourhood_retract: |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
379 |
fixes S :: "'a::euclidean_space set" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
380 |
assumes "ANR S" "closedin (top_of_set U) S" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
381 |
obtains V W where "openin (top_of_set U) V" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
382 |
"closedin (top_of_set U) W" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
383 |
"S \<subseteq> V" "V \<subseteq> W" "S retract_of W" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
384 |
by (meson ANR_imp_absolute_closed_neighbourhood_retract assms homeomorphic_refl) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
385 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
386 |
lemma ANR_homeomorphic_ANR: |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
387 |
fixes S :: "'a::euclidean_space set" and T :: "'b::euclidean_space set" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
388 |
assumes "ANR T" "S homeomorphic T" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
389 |
shows "ANR S" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
390 |
unfolding ANR_def |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
391 |
by (metis assms ANR_imp_absolute_neighbourhood_retract homeomorphic_trans [of _ S] homeomorphic_sym) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
392 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
393 |
lemma homeomorphic_ANR_iff_ANR: |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
394 |
fixes S :: "'a::euclidean_space set" and T :: "'b::euclidean_space set" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
395 |
shows "S homeomorphic T \<Longrightarrow> ANR S \<longleftrightarrow> ANR T" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
396 |
by (metis ANR_homeomorphic_ANR homeomorphic_sym) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
397 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
398 |
subsection \<open>Analogous properties of ENRs\<close> |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
399 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
400 |
lemma ENR_imp_absolute_neighbourhood_retract: |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
401 |
fixes S :: "'a::euclidean_space set" and S' :: "'b::euclidean_space set" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
402 |
assumes "ENR S" and hom: "S homeomorphic S'" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
403 |
and "S' \<subseteq> U" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
404 |
obtains V where "openin (top_of_set U) V" "S' retract_of V" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
405 |
proof - |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
406 |
obtain X where "open X" "S retract_of X" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
407 |
using \<open>ENR S\<close> by (auto simp: ENR_def) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
408 |
then obtain r where "retraction X S r" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
409 |
by (auto simp: retract_of_def) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
410 |
have "locally compact S'" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
411 |
using retract_of_locally_compact open_imp_locally_compact |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
412 |
homeomorphic_local_compactness \<open>S retract_of X\<close> \<open>open X\<close> hom by blast |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
413 |
then obtain W where UW: "openin (top_of_set U) W" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
414 |
and WS': "closedin (top_of_set W) S'" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
415 |
apply (rule locally_compact_closedin_open) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
416 |
apply (rename_tac W) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
417 |
apply (rule_tac W = "U \<inter> W" in that, blast) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
418 |
by (simp add: \<open>S' \<subseteq> U\<close> closedin_limpt) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
419 |
obtain f g where hom: "homeomorphism S S' f g" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
420 |
using assms by (force simp: homeomorphic_def) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
421 |
have contg: "continuous_on S' g" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
422 |
using hom homeomorphism_def by blast |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
423 |
moreover have "g ` S' \<subseteq> S" by (metis hom equalityE homeomorphism_def) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
424 |
ultimately obtain h where conth: "continuous_on W h" and hg: "\<And>x. x \<in> S' \<Longrightarrow> h x = g x" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
425 |
using Tietze_unbounded [of S' g W] WS' by blast |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
426 |
have "W \<subseteq> U" using UW openin_open by auto |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
427 |
have "S' \<subseteq> W" using WS' closedin_closed by auto |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
428 |
have him: "\<And>x. x \<in> S' \<Longrightarrow> h x \<in> X" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
429 |
by (metis (no_types) \<open>S retract_of X\<close> hg hom homeomorphism_def image_insert insert_absorb insert_iff retract_of_imp_subset subset_eq) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
430 |
have "S' retract_of (W \<inter> h -` X)" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
431 |
proof (simp add: retraction_def retract_of_def, intro exI conjI) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
432 |
show "S' \<subseteq> W" "S' \<subseteq> h -` X" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
433 |
using him WS' closedin_imp_subset by blast+ |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
434 |
show "continuous_on (W \<inter> h -` X) (f \<circ> r \<circ> h)" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
435 |
proof (intro continuous_on_compose) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
436 |
show "continuous_on (W \<inter> h -` X) h" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
437 |
by (meson conth continuous_on_subset inf_le1) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
438 |
show "continuous_on (h ` (W \<inter> h -` X)) r" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
439 |
proof - |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
440 |
have "h ` (W \<inter> h -` X) \<subseteq> X" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
441 |
by blast |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
442 |
then show "continuous_on (h ` (W \<inter> h -` X)) r" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
443 |
by (meson \<open>retraction X S r\<close> continuous_on_subset retraction) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
444 |
qed |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
445 |
show "continuous_on (r ` h ` (W \<inter> h -` X)) f" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
446 |
apply (rule continuous_on_subset [of S]) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
447 |
using hom homeomorphism_def apply blast |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
448 |
apply clarify |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
449 |
apply (meson \<open>retraction X S r\<close> subsetD imageI retraction_def) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
450 |
done |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
451 |
qed |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
452 |
show "(f \<circ> r \<circ> h) ` (W \<inter> h -` X) \<subseteq> S'" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
453 |
using \<open>retraction X S r\<close> hom |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
454 |
by (auto simp: retraction_def homeomorphism_def) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
455 |
show "\<forall>x\<in>S'. (f \<circ> r \<circ> h) x = x" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
456 |
using \<open>retraction X S r\<close> hom by (auto simp: retraction_def homeomorphism_def hg) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
457 |
qed |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
458 |
then show ?thesis |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
459 |
apply (rule_tac V = "W \<inter> h -` X" in that) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
460 |
apply (rule openin_trans [OF _ UW]) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
461 |
using \<open>continuous_on W h\<close> \<open>open X\<close> continuous_openin_preimage_eq apply blast+ |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
462 |
done |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
463 |
qed |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
464 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
465 |
corollary ENR_imp_absolute_neighbourhood_retract_UNIV: |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
466 |
fixes S :: "'a::euclidean_space set" and S' :: "'b::euclidean_space set" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
467 |
assumes "ENR S" "S homeomorphic S'" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
468 |
obtains T' where "open T'" "S' retract_of T'" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
469 |
by (metis ENR_imp_absolute_neighbourhood_retract UNIV_I assms(1) assms(2) open_openin subsetI subtopology_UNIV) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
470 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
471 |
lemma ENR_homeomorphic_ENR: |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
472 |
fixes S :: "'a::euclidean_space set" and T :: "'b::euclidean_space set" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
473 |
assumes "ENR T" "S homeomorphic T" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
474 |
shows "ENR S" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
475 |
unfolding ENR_def |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
476 |
by (meson ENR_imp_absolute_neighbourhood_retract_UNIV assms homeomorphic_sym) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
477 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
478 |
lemma homeomorphic_ENR_iff_ENR: |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
479 |
fixes S :: "'a::euclidean_space set" and T :: "'b::euclidean_space set" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
480 |
assumes "S homeomorphic T" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
481 |
shows "ENR S \<longleftrightarrow> ENR T" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
482 |
by (meson ENR_homeomorphic_ENR assms homeomorphic_sym) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
483 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
484 |
lemma ENR_translation: |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
485 |
fixes S :: "'a::euclidean_space set" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
486 |
shows "ENR(image (\<lambda>x. a + x) S) \<longleftrightarrow> ENR S" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
487 |
by (meson homeomorphic_sym homeomorphic_translation homeomorphic_ENR_iff_ENR) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
488 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
489 |
lemma ENR_linear_image_eq: |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
490 |
fixes f :: "'a::euclidean_space \<Rightarrow> 'b::euclidean_space" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
491 |
assumes "linear f" "inj f" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
492 |
shows "ENR (image f S) \<longleftrightarrow> ENR S" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
493 |
apply (rule homeomorphic_ENR_iff_ENR) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
494 |
using assms homeomorphic_sym linear_homeomorphic_image by auto |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
495 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
496 |
text \<open>Some relations among the concepts. We also relate AR to being a retract of UNIV, which is |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
497 |
often a more convenient proxy in the closed case.\<close> |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
498 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
499 |
lemma AR_imp_ANR: "AR S \<Longrightarrow> ANR S" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
500 |
using ANR_def AR_def by fastforce |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
501 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
502 |
lemma ENR_imp_ANR: |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
503 |
fixes S :: "'a::euclidean_space set" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
504 |
shows "ENR S \<Longrightarrow> ANR S" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
505 |
apply (simp add: ANR_def) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
506 |
by (metis ENR_imp_absolute_neighbourhood_retract closedin_imp_subset) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
507 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
508 |
lemma ENR_ANR: |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
509 |
fixes S :: "'a::euclidean_space set" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
510 |
shows "ENR S \<longleftrightarrow> ANR S \<and> locally compact S" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
511 |
proof |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
512 |
assume "ENR S" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
513 |
then have "locally compact S" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
514 |
using ENR_def open_imp_locally_compact retract_of_locally_compact by auto |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
515 |
then show "ANR S \<and> locally compact S" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
516 |
using ENR_imp_ANR \<open>ENR S\<close> by blast |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
517 |
next |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
518 |
assume "ANR S \<and> locally compact S" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
519 |
then have "ANR S" "locally compact S" by auto |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
520 |
then obtain T :: "('a * real) set" where "closed T" "S homeomorphic T" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
521 |
using locally_compact_homeomorphic_closed |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
522 |
by (metis DIM_prod DIM_real Suc_eq_plus1 lessI) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
523 |
then show "ENR S" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
524 |
using \<open>ANR S\<close> |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
525 |
apply (simp add: ANR_def) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
526 |
apply (drule_tac x=UNIV in spec) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
527 |
apply (drule_tac x=T in spec, clarsimp) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
528 |
apply (meson ENR_def ENR_homeomorphic_ENR open_openin) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
529 |
done |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
530 |
qed |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
531 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
532 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
533 |
lemma AR_ANR: |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
534 |
fixes S :: "'a::euclidean_space set" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
535 |
shows "AR S \<longleftrightarrow> ANR S \<and> contractible S \<and> S \<noteq> {}" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
536 |
(is "?lhs = ?rhs") |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
537 |
proof |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
538 |
assume ?lhs |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
539 |
obtain C and S' :: "('a * real) set" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
540 |
where "convex C" "C \<noteq> {}" "closedin (top_of_set C) S'" "S homeomorphic S'" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
541 |
apply (rule homeomorphic_closedin_convex [of S, where 'n = "'a * real"]) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
542 |
using aff_dim_le_DIM [of S] by auto |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
543 |
with \<open>AR S\<close> have "contractible S" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
544 |
apply (simp add: AR_def) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
545 |
apply (drule_tac x=C in spec) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
546 |
apply (drule_tac x="S'" in spec, simp) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
547 |
using convex_imp_contractible homeomorphic_contractible_eq retract_of_contractible by fastforce |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
548 |
with \<open>AR S\<close> show ?rhs |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
549 |
apply (auto simp: AR_imp_ANR) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
550 |
apply (force simp: AR_def) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
551 |
done |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
552 |
next |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
553 |
assume ?rhs |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
554 |
then obtain a and h:: "real \<times> 'a \<Rightarrow> 'a" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
555 |
where conth: "continuous_on ({0..1} \<times> S) h" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
556 |
and hS: "h ` ({0..1} \<times> S) \<subseteq> S" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
557 |
and [simp]: "\<And>x. h(0, x) = x" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
558 |
and [simp]: "\<And>x. h(1, x) = a" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
559 |
and "ANR S" "S \<noteq> {}" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
560 |
by (auto simp: contractible_def homotopic_with_def) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
561 |
then have "a \<in> S" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
562 |
by (metis all_not_in_conv atLeastAtMost_iff image_subset_iff mem_Sigma_iff order_refl zero_le_one) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
563 |
have "\<exists>g. continuous_on W g \<and> g ` W \<subseteq> S \<and> (\<forall>x\<in>T. g x = f x)" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
564 |
if f: "continuous_on T f" "f ` T \<subseteq> S" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
565 |
and WT: "closedin (top_of_set W) T" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
566 |
for W T and f :: "'a \<times> real \<Rightarrow> 'a" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
567 |
proof - |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
568 |
obtain U g |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
569 |
where "T \<subseteq> U" and WU: "openin (top_of_set W) U" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
570 |
and contg: "continuous_on U g" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
571 |
and "g ` U \<subseteq> S" and gf: "\<And>x. x \<in> T \<Longrightarrow> g x = f x" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
572 |
using iffD1 [OF ANR_eq_absolute_neighbourhood_extensor \<open>ANR S\<close>, rule_format, OF f WT] |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
573 |
by auto |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
574 |
have WWU: "closedin (top_of_set W) (W - U)" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
575 |
using WU closedin_diff by fastforce |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
576 |
moreover have "(W - U) \<inter> T = {}" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
577 |
using \<open>T \<subseteq> U\<close> by auto |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
578 |
ultimately obtain V V' |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
579 |
where WV': "openin (top_of_set W) V'" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
580 |
and WV: "openin (top_of_set W) V" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
581 |
and "W - U \<subseteq> V'" "T \<subseteq> V" "V' \<inter> V = {}" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
582 |
using separation_normal_local [of W "W-U" T] WT by blast |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
583 |
then have WVT: "T \<inter> (W - V) = {}" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
584 |
by auto |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
585 |
have WWV: "closedin (top_of_set W) (W - V)" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
586 |
using WV closedin_diff by fastforce |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
587 |
obtain j :: " 'a \<times> real \<Rightarrow> real" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
588 |
where contj: "continuous_on W j" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
589 |
and j: "\<And>x. x \<in> W \<Longrightarrow> j x \<in> {0..1}" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
590 |
and j0: "\<And>x. x \<in> W - V \<Longrightarrow> j x = 1" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
591 |
and j1: "\<And>x. x \<in> T \<Longrightarrow> j x = 0" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
592 |
by (rule Urysohn_local [OF WT WWV WVT, of 0 "1::real"]) (auto simp: in_segment) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
593 |
have Weq: "W = (W - V) \<union> (W - V')" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
594 |
using \<open>V' \<inter> V = {}\<close> by force |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
595 |
show ?thesis |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
596 |
proof (intro conjI exI) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
597 |
have *: "continuous_on (W - V') (\<lambda>x. h (j x, g x))" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
598 |
apply (rule continuous_on_compose2 [OF conth continuous_on_Pair]) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
599 |
apply (rule continuous_on_subset [OF contj Diff_subset]) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
600 |
apply (rule continuous_on_subset [OF contg]) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
601 |
apply (metis Diff_subset_conv Un_commute \<open>W - U \<subseteq> V'\<close>) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
602 |
using j \<open>g ` U \<subseteq> S\<close> \<open>W - U \<subseteq> V'\<close> apply fastforce |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
603 |
done |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
604 |
show "continuous_on W (\<lambda>x. if x \<in> W - V then a else h (j x, g x))" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
605 |
apply (subst Weq) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
606 |
apply (rule continuous_on_cases_local) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
607 |
apply (simp_all add: Weq [symmetric] WWV continuous_on_const *) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
608 |
using WV' closedin_diff apply fastforce |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
609 |
apply (auto simp: j0 j1) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
610 |
done |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
611 |
next |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
612 |
have "h (j (x, y), g (x, y)) \<in> S" if "(x, y) \<in> W" "(x, y) \<in> V" for x y |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
613 |
proof - |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
614 |
have "j(x, y) \<in> {0..1}" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
615 |
using j that by blast |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
616 |
moreover have "g(x, y) \<in> S" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
617 |
using \<open>V' \<inter> V = {}\<close> \<open>W - U \<subseteq> V'\<close> \<open>g ` U \<subseteq> S\<close> that by fastforce |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
618 |
ultimately show ?thesis |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
619 |
using hS by blast |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
620 |
qed |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
621 |
with \<open>a \<in> S\<close> \<open>g ` U \<subseteq> S\<close> |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
622 |
show "(\<lambda>x. if x \<in> W - V then a else h (j x, g x)) ` W \<subseteq> S" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
623 |
by auto |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
624 |
next |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
625 |
show "\<forall>x\<in>T. (if x \<in> W - V then a else h (j x, g x)) = f x" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
626 |
using \<open>T \<subseteq> V\<close> by (auto simp: j0 j1 gf) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
627 |
qed |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
628 |
qed |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
629 |
then show ?lhs |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
630 |
by (simp add: AR_eq_absolute_extensor) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
631 |
qed |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
632 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
633 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
634 |
lemma ANR_retract_of_ANR: |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
635 |
fixes S :: "'a::euclidean_space set" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
636 |
assumes "ANR T" "S retract_of T" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
637 |
shows "ANR S" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
638 |
using assms |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
639 |
apply (simp add: ANR_eq_absolute_neighbourhood_extensor retract_of_def retraction_def) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
640 |
apply (clarsimp elim!: all_forward) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
641 |
apply (erule impCE, metis subset_trans) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
642 |
apply (clarsimp elim!: ex_forward) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
643 |
apply (rule_tac x="r \<circ> g" in exI) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
644 |
by (metis comp_apply continuous_on_compose continuous_on_subset subsetD imageI image_comp image_mono subset_trans) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
645 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
646 |
lemma AR_retract_of_AR: |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
647 |
fixes S :: "'a::euclidean_space set" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
648 |
shows "\<lbrakk>AR T; S retract_of T\<rbrakk> \<Longrightarrow> AR S" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
649 |
using ANR_retract_of_ANR AR_ANR retract_of_contractible by fastforce |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
650 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
651 |
lemma ENR_retract_of_ENR: |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
652 |
"\<lbrakk>ENR T; S retract_of T\<rbrakk> \<Longrightarrow> ENR S" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
653 |
by (meson ENR_def retract_of_trans) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
654 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
655 |
lemma retract_of_UNIV: |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
656 |
fixes S :: "'a::euclidean_space set" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
657 |
shows "S retract_of UNIV \<longleftrightarrow> AR S \<and> closed S" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
658 |
by (metis AR_ANR AR_imp_retract ENR_def ENR_imp_ANR closed_UNIV closed_closedin contractible_UNIV empty_not_UNIV open_UNIV retract_of_closed retract_of_contractible retract_of_empty(1) subtopology_UNIV) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
659 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
660 |
lemma compact_AR: |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
661 |
fixes S :: "'a::euclidean_space set" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
662 |
shows "compact S \<and> AR S \<longleftrightarrow> compact S \<and> S retract_of UNIV" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
663 |
using compact_imp_closed retract_of_UNIV by blast |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
664 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
665 |
text \<open>More properties of ARs, ANRs and ENRs\<close> |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
666 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
667 |
lemma not_AR_empty [simp]: "\<not> AR({})" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
668 |
by (auto simp: AR_def) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
669 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
670 |
lemma ENR_empty [simp]: "ENR {}" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
671 |
by (simp add: ENR_def) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
672 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
673 |
lemma ANR_empty [simp]: "ANR ({} :: 'a::euclidean_space set)" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
674 |
by (simp add: ENR_imp_ANR) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
675 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
676 |
lemma convex_imp_AR: |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
677 |
fixes S :: "'a::euclidean_space set" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
678 |
shows "\<lbrakk>convex S; S \<noteq> {}\<rbrakk> \<Longrightarrow> AR S" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
679 |
apply (rule absolute_extensor_imp_AR) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
680 |
apply (rule Dugundji, assumption+) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
681 |
by blast |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
682 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
683 |
lemma convex_imp_ANR: |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
684 |
fixes S :: "'a::euclidean_space set" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
685 |
shows "convex S \<Longrightarrow> ANR S" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
686 |
using ANR_empty AR_imp_ANR convex_imp_AR by blast |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
687 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
688 |
lemma ENR_convex_closed: |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
689 |
fixes S :: "'a::euclidean_space set" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
690 |
shows "\<lbrakk>closed S; convex S\<rbrakk> \<Longrightarrow> ENR S" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
691 |
using ENR_def ENR_empty convex_imp_AR retract_of_UNIV by blast |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
692 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
693 |
lemma AR_UNIV [simp]: "AR (UNIV :: 'a::euclidean_space set)" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
694 |
using retract_of_UNIV by auto |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
695 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
696 |
lemma ANR_UNIV [simp]: "ANR (UNIV :: 'a::euclidean_space set)" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
697 |
by (simp add: AR_imp_ANR) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
698 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
699 |
lemma ENR_UNIV [simp]:"ENR UNIV" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
700 |
using ENR_def by blast |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
701 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
702 |
lemma AR_singleton: |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
703 |
fixes a :: "'a::euclidean_space" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
704 |
shows "AR {a}" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
705 |
using retract_of_UNIV by blast |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
706 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
707 |
lemma ANR_singleton: |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
708 |
fixes a :: "'a::euclidean_space" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
709 |
shows "ANR {a}" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
710 |
by (simp add: AR_imp_ANR AR_singleton) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
711 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
712 |
lemma ENR_singleton: "ENR {a}" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
713 |
using ENR_def by blast |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
714 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
715 |
text \<open>ARs closed under union\<close> |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
716 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
717 |
lemma AR_closed_Un_local_aux: |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
718 |
fixes U :: "'a::euclidean_space set" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
719 |
assumes "closedin (top_of_set U) S" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
720 |
"closedin (top_of_set U) T" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
721 |
"AR S" "AR T" "AR(S \<inter> T)" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
722 |
shows "(S \<union> T) retract_of U" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
723 |
proof - |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
724 |
have "S \<inter> T \<noteq> {}" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
725 |
using assms AR_def by fastforce |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
726 |
have "S \<subseteq> U" "T \<subseteq> U" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
727 |
using assms by (auto simp: closedin_imp_subset) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
728 |
define S' where "S' \<equiv> {x \<in> U. setdist {x} S \<le> setdist {x} T}" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
729 |
define T' where "T' \<equiv> {x \<in> U. setdist {x} T \<le> setdist {x} S}" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
730 |
define W where "W \<equiv> {x \<in> U. setdist {x} S = setdist {x} T}" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
731 |
have US': "closedin (top_of_set U) S'" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
732 |
using continuous_closedin_preimage [of U "\<lambda>x. setdist {x} S - setdist {x} T" "{..0}"] |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
733 |
by (simp add: S'_def vimage_def Collect_conj_eq continuous_on_diff continuous_on_setdist) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
734 |
have UT': "closedin (top_of_set U) T'" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
735 |
using continuous_closedin_preimage [of U "\<lambda>x. setdist {x} T - setdist {x} S" "{..0}"] |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
736 |
by (simp add: T'_def vimage_def Collect_conj_eq continuous_on_diff continuous_on_setdist) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
737 |
have "S \<subseteq> S'" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
738 |
using S'_def \<open>S \<subseteq> U\<close> setdist_sing_in_set by fastforce |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
739 |
have "T \<subseteq> T'" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
740 |
using T'_def \<open>T \<subseteq> U\<close> setdist_sing_in_set by fastforce |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
741 |
have "S \<inter> T \<subseteq> W" "W \<subseteq> U" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
742 |
using \<open>S \<subseteq> U\<close> by (auto simp: W_def setdist_sing_in_set) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
743 |
have "(S \<inter> T) retract_of W" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
744 |
apply (rule AR_imp_absolute_retract [OF \<open>AR(S \<inter> T)\<close>]) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
745 |
apply (simp add: homeomorphic_refl) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
746 |
apply (rule closedin_subset_trans [of U]) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
747 |
apply (simp_all add: assms closedin_Int \<open>S \<inter> T \<subseteq> W\<close> \<open>W \<subseteq> U\<close>) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
748 |
done |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
749 |
then obtain r0 |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
750 |
where "S \<inter> T \<subseteq> W" and contr0: "continuous_on W r0" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
751 |
and "r0 ` W \<subseteq> S \<inter> T" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
752 |
and r0 [simp]: "\<And>x. x \<in> S \<inter> T \<Longrightarrow> r0 x = x" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
753 |
by (auto simp: retract_of_def retraction_def) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
754 |
have ST: "x \<in> W \<Longrightarrow> x \<in> S \<longleftrightarrow> x \<in> T" for x |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
755 |
using setdist_eq_0_closedin \<open>S \<inter> T \<noteq> {}\<close> assms |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
756 |
by (force simp: W_def setdist_sing_in_set) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
757 |
have "S' \<inter> T' = W" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
758 |
by (auto simp: S'_def T'_def W_def) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
759 |
then have cloUW: "closedin (top_of_set U) W" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
760 |
using closedin_Int US' UT' by blast |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
761 |
define r where "r \<equiv> \<lambda>x. if x \<in> W then r0 x else x" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
762 |
have "r ` (W \<union> S) \<subseteq> S" "r ` (W \<union> T) \<subseteq> T" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
763 |
using \<open>r0 ` W \<subseteq> S \<inter> T\<close> r_def by auto |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
764 |
have contr: "continuous_on (W \<union> (S \<union> T)) r" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
765 |
unfolding r_def |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
766 |
proof (rule continuous_on_cases_local [OF _ _ contr0 continuous_on_id]) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
767 |
show "closedin (top_of_set (W \<union> (S \<union> T))) W" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
768 |
using \<open>S \<subseteq> U\<close> \<open>T \<subseteq> U\<close> \<open>W \<subseteq> U\<close> \<open>closedin (top_of_set U) W\<close> closedin_subset_trans by fastforce |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
769 |
show "closedin (top_of_set (W \<union> (S \<union> T))) (S \<union> T)" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
770 |
by (meson \<open>S \<subseteq> U\<close> \<open>T \<subseteq> U\<close> \<open>W \<subseteq> U\<close> assms closedin_Un closedin_subset_trans sup.bounded_iff sup.cobounded2) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
771 |
show "\<And>x. x \<in> W \<and> x \<notin> W \<or> x \<in> S \<union> T \<and> x \<in> W \<Longrightarrow> r0 x = x" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
772 |
by (auto simp: ST) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
773 |
qed |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
774 |
have cloUWS: "closedin (top_of_set U) (W \<union> S)" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
775 |
by (simp add: cloUW assms closedin_Un) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
776 |
obtain g where contg: "continuous_on U g" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
777 |
and "g ` U \<subseteq> S" and geqr: "\<And>x. x \<in> W \<union> S \<Longrightarrow> g x = r x" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
778 |
apply (rule AR_imp_absolute_extensor [OF \<open>AR S\<close> _ _ cloUWS]) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
779 |
apply (rule continuous_on_subset [OF contr]) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
780 |
using \<open>r ` (W \<union> S) \<subseteq> S\<close> apply auto |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
781 |
done |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
782 |
have cloUWT: "closedin (top_of_set U) (W \<union> T)" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
783 |
by (simp add: cloUW assms closedin_Un) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
784 |
obtain h where conth: "continuous_on U h" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
785 |
and "h ` U \<subseteq> T" and heqr: "\<And>x. x \<in> W \<union> T \<Longrightarrow> h x = r x" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
786 |
apply (rule AR_imp_absolute_extensor [OF \<open>AR T\<close> _ _ cloUWT]) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
787 |
apply (rule continuous_on_subset [OF contr]) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
788 |
using \<open>r ` (W \<union> T) \<subseteq> T\<close> apply auto |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
789 |
done |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
790 |
have "U = S' \<union> T'" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
791 |
by (force simp: S'_def T'_def) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
792 |
then have cont: "continuous_on U (\<lambda>x. if x \<in> S' then g x else h x)" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
793 |
apply (rule ssubst) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
794 |
apply (rule continuous_on_cases_local) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
795 |
using US' UT' \<open>S' \<inter> T' = W\<close> \<open>U = S' \<union> T'\<close> |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
796 |
contg conth continuous_on_subset geqr heqr apply auto |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
797 |
done |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
798 |
have UST: "(\<lambda>x. if x \<in> S' then g x else h x) ` U \<subseteq> S \<union> T" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
799 |
using \<open>g ` U \<subseteq> S\<close> \<open>h ` U \<subseteq> T\<close> by auto |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
800 |
show ?thesis |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
801 |
apply (simp add: retract_of_def retraction_def \<open>S \<subseteq> U\<close> \<open>T \<subseteq> U\<close>) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
802 |
apply (rule_tac x="\<lambda>x. if x \<in> S' then g x else h x" in exI) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
803 |
apply (intro conjI cont UST) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
804 |
by (metis IntI ST Un_iff \<open>S \<subseteq> S'\<close> \<open>S' \<inter> T' = W\<close> \<open>T \<subseteq> T'\<close> subsetD geqr heqr r0 r_def) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
805 |
qed |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
806 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
807 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
808 |
lemma AR_closed_Un_local: |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
809 |
fixes S :: "'a::euclidean_space set" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
810 |
assumes STS: "closedin (top_of_set (S \<union> T)) S" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
811 |
and STT: "closedin (top_of_set (S \<union> T)) T" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
812 |
and "AR S" "AR T" "AR(S \<inter> T)" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
813 |
shows "AR(S \<union> T)" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
814 |
proof - |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
815 |
have "C retract_of U" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
816 |
if hom: "S \<union> T homeomorphic C" and UC: "closedin (top_of_set U) C" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
817 |
for U and C :: "('a * real) set" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
818 |
proof - |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
819 |
obtain f g where hom: "homeomorphism (S \<union> T) C f g" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
820 |
using hom by (force simp: homeomorphic_def) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
821 |
have US: "closedin (top_of_set U) (C \<inter> g -` S)" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
822 |
apply (rule closedin_trans [OF _ UC]) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
823 |
apply (rule continuous_closedin_preimage_gen [OF _ _ STS]) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
824 |
using hom homeomorphism_def apply blast |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
825 |
apply (metis hom homeomorphism_def set_eq_subset) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
826 |
done |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
827 |
have UT: "closedin (top_of_set U) (C \<inter> g -` T)" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
828 |
apply (rule closedin_trans [OF _ UC]) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
829 |
apply (rule continuous_closedin_preimage_gen [OF _ _ STT]) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
830 |
using hom homeomorphism_def apply blast |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
831 |
apply (metis hom homeomorphism_def set_eq_subset) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
832 |
done |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
833 |
have ARS: "AR (C \<inter> g -` S)" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
834 |
apply (rule AR_homeomorphic_AR [OF \<open>AR S\<close>]) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
835 |
apply (simp add: homeomorphic_def) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
836 |
apply (rule_tac x=g in exI) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
837 |
apply (rule_tac x=f in exI) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
838 |
using hom apply (auto simp: homeomorphism_def elim!: continuous_on_subset) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
839 |
apply (rule_tac x="f x" in image_eqI, auto) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
840 |
done |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
841 |
have ART: "AR (C \<inter> g -` T)" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
842 |
apply (rule AR_homeomorphic_AR [OF \<open>AR T\<close>]) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
843 |
apply (simp add: homeomorphic_def) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
844 |
apply (rule_tac x=g in exI) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
845 |
apply (rule_tac x=f in exI) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
846 |
using hom apply (auto simp: homeomorphism_def elim!: continuous_on_subset) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
847 |
apply (rule_tac x="f x" in image_eqI, auto) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
848 |
done |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
849 |
have ARI: "AR ((C \<inter> g -` S) \<inter> (C \<inter> g -` T))" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
850 |
apply (rule AR_homeomorphic_AR [OF \<open>AR (S \<inter> T)\<close>]) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
851 |
apply (simp add: homeomorphic_def) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
852 |
apply (rule_tac x=g in exI) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
853 |
apply (rule_tac x=f in exI) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
854 |
using hom |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
855 |
apply (auto simp: homeomorphism_def elim!: continuous_on_subset) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
856 |
apply (rule_tac x="f x" in image_eqI, auto) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
857 |
done |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
858 |
have "C = (C \<inter> g -` S) \<union> (C \<inter> g -` T)" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
859 |
using hom by (auto simp: homeomorphism_def) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
860 |
then show ?thesis |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
861 |
by (metis AR_closed_Un_local_aux [OF US UT ARS ART ARI]) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
862 |
qed |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
863 |
then show ?thesis |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
864 |
by (force simp: AR_def) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
865 |
qed |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
866 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
867 |
corollary AR_closed_Un: |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
868 |
fixes S :: "'a::euclidean_space set" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
869 |
shows "\<lbrakk>closed S; closed T; AR S; AR T; AR (S \<inter> T)\<rbrakk> \<Longrightarrow> AR (S \<union> T)" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
870 |
by (metis AR_closed_Un_local_aux closed_closedin retract_of_UNIV subtopology_UNIV) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
871 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
872 |
text \<open>ANRs closed under union\<close> |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
873 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
874 |
lemma ANR_closed_Un_local_aux: |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
875 |
fixes U :: "'a::euclidean_space set" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
876 |
assumes US: "closedin (top_of_set U) S" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
877 |
and UT: "closedin (top_of_set U) T" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
878 |
and "ANR S" "ANR T" "ANR(S \<inter> T)" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
879 |
obtains V where "openin (top_of_set U) V" "(S \<union> T) retract_of V" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
880 |
proof (cases "S = {} \<or> T = {}") |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
881 |
case True with assms that show ?thesis |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
882 |
by (metis ANR_imp_neighbourhood_retract Un_commute inf_bot_right sup_inf_absorb) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
883 |
next |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
884 |
case False |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
885 |
then have [simp]: "S \<noteq> {}" "T \<noteq> {}" by auto |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
886 |
have "S \<subseteq> U" "T \<subseteq> U" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
887 |
using assms by (auto simp: closedin_imp_subset) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
888 |
define S' where "S' \<equiv> {x \<in> U. setdist {x} S \<le> setdist {x} T}" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
889 |
define T' where "T' \<equiv> {x \<in> U. setdist {x} T \<le> setdist {x} S}" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
890 |
define W where "W \<equiv> {x \<in> U. setdist {x} S = setdist {x} T}" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
891 |
have cloUS': "closedin (top_of_set U) S'" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
892 |
using continuous_closedin_preimage [of U "\<lambda>x. setdist {x} S - setdist {x} T" "{..0}"] |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
893 |
by (simp add: S'_def vimage_def Collect_conj_eq continuous_on_diff continuous_on_setdist) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
894 |
have cloUT': "closedin (top_of_set U) T'" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
895 |
using continuous_closedin_preimage [of U "\<lambda>x. setdist {x} T - setdist {x} S" "{..0}"] |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
896 |
by (simp add: T'_def vimage_def Collect_conj_eq continuous_on_diff continuous_on_setdist) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
897 |
have "S \<subseteq> S'" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
898 |
using S'_def \<open>S \<subseteq> U\<close> setdist_sing_in_set by fastforce |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
899 |
have "T \<subseteq> T'" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
900 |
using T'_def \<open>T \<subseteq> U\<close> setdist_sing_in_set by fastforce |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
901 |
have "S' \<union> T' = U" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
902 |
by (auto simp: S'_def T'_def) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
903 |
have "W \<subseteq> S'" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
904 |
by (simp add: Collect_mono S'_def W_def) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
905 |
have "W \<subseteq> T'" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
906 |
by (simp add: Collect_mono T'_def W_def) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
907 |
have ST_W: "S \<inter> T \<subseteq> W" and "W \<subseteq> U" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
908 |
using \<open>S \<subseteq> U\<close> by (force simp: W_def setdist_sing_in_set)+ |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
909 |
have "S' \<inter> T' = W" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
910 |
by (auto simp: S'_def T'_def W_def) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
911 |
then have cloUW: "closedin (top_of_set U) W" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
912 |
using closedin_Int cloUS' cloUT' by blast |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
913 |
obtain W' W0 where "openin (top_of_set W) W'" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
914 |
and cloWW0: "closedin (top_of_set W) W0" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
915 |
and "S \<inter> T \<subseteq> W'" "W' \<subseteq> W0" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
916 |
and ret: "(S \<inter> T) retract_of W0" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
917 |
apply (rule ANR_imp_closed_neighbourhood_retract [OF \<open>ANR(S \<inter> T)\<close>]) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
918 |
apply (rule closedin_subset_trans [of U, OF _ ST_W \<open>W \<subseteq> U\<close>]) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
919 |
apply (blast intro: assms)+ |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
920 |
done |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
921 |
then obtain U0 where opeUU0: "openin (top_of_set U) U0" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
922 |
and U0: "S \<inter> T \<subseteq> U0" "U0 \<inter> W \<subseteq> W0" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
923 |
unfolding openin_open using \<open>W \<subseteq> U\<close> by blast |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
924 |
have "W0 \<subseteq> U" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
925 |
using \<open>W \<subseteq> U\<close> cloWW0 closedin_subset by fastforce |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
926 |
obtain r0 |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
927 |
where "S \<inter> T \<subseteq> W0" and contr0: "continuous_on W0 r0" and "r0 ` W0 \<subseteq> S \<inter> T" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
928 |
and r0 [simp]: "\<And>x. x \<in> S \<inter> T \<Longrightarrow> r0 x = x" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
929 |
using ret by (force simp: retract_of_def retraction_def) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
930 |
have ST: "x \<in> W \<Longrightarrow> x \<in> S \<longleftrightarrow> x \<in> T" for x |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
931 |
using assms by (auto simp: W_def setdist_sing_in_set dest!: setdist_eq_0_closedin) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
932 |
define r where "r \<equiv> \<lambda>x. if x \<in> W0 then r0 x else x" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
933 |
have "r ` (W0 \<union> S) \<subseteq> S" "r ` (W0 \<union> T) \<subseteq> T" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
934 |
using \<open>r0 ` W0 \<subseteq> S \<inter> T\<close> r_def by auto |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
935 |
have contr: "continuous_on (W0 \<union> (S \<union> T)) r" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
936 |
unfolding r_def |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
937 |
proof (rule continuous_on_cases_local [OF _ _ contr0 continuous_on_id]) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
938 |
show "closedin (top_of_set (W0 \<union> (S \<union> T))) W0" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
939 |
apply (rule closedin_subset_trans [of U]) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
940 |
using cloWW0 cloUW closedin_trans \<open>W0 \<subseteq> U\<close> \<open>S \<subseteq> U\<close> \<open>T \<subseteq> U\<close> apply blast+ |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
941 |
done |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
942 |
show "closedin (top_of_set (W0 \<union> (S \<union> T))) (S \<union> T)" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
943 |
by (meson \<open>S \<subseteq> U\<close> \<open>T \<subseteq> U\<close> \<open>W0 \<subseteq> U\<close> assms closedin_Un closedin_subset_trans sup.bounded_iff sup.cobounded2) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
944 |
show "\<And>x. x \<in> W0 \<and> x \<notin> W0 \<or> x \<in> S \<union> T \<and> x \<in> W0 \<Longrightarrow> r0 x = x" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
945 |
using ST cloWW0 closedin_subset by fastforce |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
946 |
qed |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
947 |
have cloS'WS: "closedin (top_of_set S') (W0 \<union> S)" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
948 |
by (meson closedin_subset_trans US cloUS' \<open>S \<subseteq> S'\<close> \<open>W \<subseteq> S'\<close> cloUW cloWW0 |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
949 |
closedin_Un closedin_imp_subset closedin_trans) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
950 |
obtain W1 g where "W0 \<union> S \<subseteq> W1" and contg: "continuous_on W1 g" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
951 |
and opeSW1: "openin (top_of_set S') W1" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
952 |
and "g ` W1 \<subseteq> S" and geqr: "\<And>x. x \<in> W0 \<union> S \<Longrightarrow> g x = r x" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
953 |
apply (rule ANR_imp_absolute_neighbourhood_extensor [OF \<open>ANR S\<close> _ \<open>r ` (W0 \<union> S) \<subseteq> S\<close> cloS'WS]) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
954 |
apply (rule continuous_on_subset [OF contr], blast+) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
955 |
done |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
956 |
have cloT'WT: "closedin (top_of_set T') (W0 \<union> T)" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
957 |
by (meson closedin_subset_trans UT cloUT' \<open>T \<subseteq> T'\<close> \<open>W \<subseteq> T'\<close> cloUW cloWW0 |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
958 |
closedin_Un closedin_imp_subset closedin_trans) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
959 |
obtain W2 h where "W0 \<union> T \<subseteq> W2" and conth: "continuous_on W2 h" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
960 |
and opeSW2: "openin (top_of_set T') W2" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
961 |
and "h ` W2 \<subseteq> T" and heqr: "\<And>x. x \<in> W0 \<union> T \<Longrightarrow> h x = r x" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
962 |
apply (rule ANR_imp_absolute_neighbourhood_extensor [OF \<open>ANR T\<close> _ \<open>r ` (W0 \<union> T) \<subseteq> T\<close> cloT'WT]) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
963 |
apply (rule continuous_on_subset [OF contr], blast+) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
964 |
done |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
965 |
have "S' \<inter> T' = W" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
966 |
by (force simp: S'_def T'_def W_def) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
967 |
obtain O1 O2 where "open O1" "W1 = S' \<inter> O1" "open O2" "W2 = T' \<inter> O2" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
968 |
using opeSW1 opeSW2 by (force simp: openin_open) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
969 |
show ?thesis |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
970 |
proof |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
971 |
have eq: "W1 - (W - U0) \<union> (W2 - (W - U0)) = |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
972 |
((U - T') \<inter> O1 \<union> (U - S') \<inter> O2 \<union> U \<inter> O1 \<inter> O2) - (W - U0)" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
973 |
using \<open>U0 \<inter> W \<subseteq> W0\<close> \<open>W0 \<union> S \<subseteq> W1\<close> \<open>W0 \<union> T \<subseteq> W2\<close> |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
974 |
by (auto simp: \<open>S' \<union> T' = U\<close> [symmetric] \<open>S' \<inter> T' = W\<close> [symmetric] \<open>W1 = S' \<inter> O1\<close> \<open>W2 = T' \<inter> O2\<close>) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
975 |
show "openin (top_of_set U) (W1 - (W - U0) \<union> (W2 - (W - U0)))" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
976 |
apply (subst eq) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
977 |
apply (intro openin_Un openin_Int_open openin_diff closedin_diff cloUW opeUU0 cloUS' cloUT' \<open>open O1\<close> \<open>open O2\<close>, simp_all) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
978 |
done |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
979 |
have cloW1: "closedin (top_of_set (W1 - (W - U0) \<union> (W2 - (W - U0)))) (W1 - (W - U0))" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
980 |
using cloUS' apply (simp add: closedin_closed) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
981 |
apply (erule ex_forward) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
982 |
using U0 \<open>W0 \<union> S \<subseteq> W1\<close> |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
983 |
apply (auto simp: \<open>W1 = S' \<inter> O1\<close> \<open>W2 = T' \<inter> O2\<close> \<open>S' \<union> T' = U\<close> [symmetric]\<open>S' \<inter> T' = W\<close> [symmetric]) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
984 |
done |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
985 |
have cloW2: "closedin (top_of_set (W1 - (W - U0) \<union> (W2 - (W - U0)))) (W2 - (W - U0))" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
986 |
using cloUT' apply (simp add: closedin_closed) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
987 |
apply (erule ex_forward) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
988 |
using U0 \<open>W0 \<union> T \<subseteq> W2\<close> |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
989 |
apply (auto simp: \<open>W1 = S' \<inter> O1\<close> \<open>W2 = T' \<inter> O2\<close> \<open>S' \<union> T' = U\<close> [symmetric]\<open>S' \<inter> T' = W\<close> [symmetric]) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
990 |
done |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
991 |
have *: "\<forall>x\<in>S \<union> T. (if x \<in> S' then g x else h x) = x" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
992 |
using ST \<open>S' \<inter> T' = W\<close> cloT'WT closedin_subset geqr heqr |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
993 |
apply (auto simp: r_def, fastforce) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
994 |
using \<open>S \<subseteq> S'\<close> \<open>T \<subseteq> T'\<close> \<open>W0 \<union> S \<subseteq> W1\<close> \<open>W1 = S' \<inter> O1\<close> by auto |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
995 |
have "\<exists>r. continuous_on (W1 - (W - U0) \<union> (W2 - (W - U0))) r \<and> |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
996 |
r ` (W1 - (W - U0) \<union> (W2 - (W - U0))) \<subseteq> S \<union> T \<and> |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
997 |
(\<forall>x\<in>S \<union> T. r x = x)" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
998 |
apply (rule_tac x = "\<lambda>x. if x \<in> S' then g x else h x" in exI) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
999 |
apply (intro conjI *) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1000 |
apply (rule continuous_on_cases_local |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1001 |
[OF cloW1 cloW2 continuous_on_subset [OF contg] continuous_on_subset [OF conth]]) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1002 |
using \<open>W1 = S' \<inter> O1\<close> \<open>W2 = T' \<inter> O2\<close> \<open>S' \<inter> T' = W\<close> |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1003 |
\<open>g ` W1 \<subseteq> S\<close> \<open>h ` W2 \<subseteq> T\<close> apply auto |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1004 |
using \<open>U0 \<inter> W \<subseteq> W0\<close> \<open>W0 \<union> S \<subseteq> W1\<close> apply (fastforce simp add: geqr heqr)+ |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1005 |
done |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1006 |
then show "S \<union> T retract_of W1 - (W - U0) \<union> (W2 - (W - U0))" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1007 |
using \<open>W0 \<union> S \<subseteq> W1\<close> \<open>W0 \<union> T \<subseteq> W2\<close> ST opeUU0 U0 |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1008 |
by (auto simp: retract_of_def retraction_def) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1009 |
qed |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1010 |
qed |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1011 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1012 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1013 |
lemma ANR_closed_Un_local: |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1014 |
fixes S :: "'a::euclidean_space set" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1015 |
assumes STS: "closedin (top_of_set (S \<union> T)) S" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1016 |
and STT: "closedin (top_of_set (S \<union> T)) T" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1017 |
and "ANR S" "ANR T" "ANR(S \<inter> T)" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1018 |
shows "ANR(S \<union> T)" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1019 |
proof - |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1020 |
have "\<exists>T. openin (top_of_set U) T \<and> C retract_of T" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1021 |
if hom: "S \<union> T homeomorphic C" and UC: "closedin (top_of_set U) C" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1022 |
for U and C :: "('a * real) set" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1023 |
proof - |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1024 |
obtain f g where hom: "homeomorphism (S \<union> T) C f g" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1025 |
using hom by (force simp: homeomorphic_def) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1026 |
have US: "closedin (top_of_set U) (C \<inter> g -` S)" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1027 |
apply (rule closedin_trans [OF _ UC]) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1028 |
apply (rule continuous_closedin_preimage_gen [OF _ _ STS]) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1029 |
using hom [unfolded homeomorphism_def] apply blast |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1030 |
apply (metis hom homeomorphism_def set_eq_subset) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1031 |
done |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1032 |
have UT: "closedin (top_of_set U) (C \<inter> g -` T)" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1033 |
apply (rule closedin_trans [OF _ UC]) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1034 |
apply (rule continuous_closedin_preimage_gen [OF _ _ STT]) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1035 |
using hom [unfolded homeomorphism_def] apply blast |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1036 |
apply (metis hom homeomorphism_def set_eq_subset) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1037 |
done |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1038 |
have ANRS: "ANR (C \<inter> g -` S)" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1039 |
apply (rule ANR_homeomorphic_ANR [OF \<open>ANR S\<close>]) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1040 |
apply (simp add: homeomorphic_def) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1041 |
apply (rule_tac x=g in exI) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1042 |
apply (rule_tac x=f in exI) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1043 |
using hom apply (auto simp: homeomorphism_def elim!: continuous_on_subset) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1044 |
apply (rule_tac x="f x" in image_eqI, auto) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1045 |
done |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1046 |
have ANRT: "ANR (C \<inter> g -` T)" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1047 |
apply (rule ANR_homeomorphic_ANR [OF \<open>ANR T\<close>]) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1048 |
apply (simp add: homeomorphic_def) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1049 |
apply (rule_tac x=g in exI) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1050 |
apply (rule_tac x=f in exI) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1051 |
using hom apply (auto simp: homeomorphism_def elim!: continuous_on_subset) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1052 |
apply (rule_tac x="f x" in image_eqI, auto) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1053 |
done |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1054 |
have ANRI: "ANR ((C \<inter> g -` S) \<inter> (C \<inter> g -` T))" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1055 |
apply (rule ANR_homeomorphic_ANR [OF \<open>ANR (S \<inter> T)\<close>]) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1056 |
apply (simp add: homeomorphic_def) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1057 |
apply (rule_tac x=g in exI) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1058 |
apply (rule_tac x=f in exI) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1059 |
using hom |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1060 |
apply (auto simp: homeomorphism_def elim!: continuous_on_subset) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1061 |
apply (rule_tac x="f x" in image_eqI, auto) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1062 |
done |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1063 |
have "C = (C \<inter> g -` S) \<union> (C \<inter> g -` T)" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1064 |
using hom by (auto simp: homeomorphism_def) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1065 |
then show ?thesis |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1066 |
by (metis ANR_closed_Un_local_aux [OF US UT ANRS ANRT ANRI]) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1067 |
qed |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1068 |
then show ?thesis |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1069 |
by (auto simp: ANR_def) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1070 |
qed |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1071 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1072 |
corollary ANR_closed_Un: |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1073 |
fixes S :: "'a::euclidean_space set" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1074 |
shows "\<lbrakk>closed S; closed T; ANR S; ANR T; ANR (S \<inter> T)\<rbrakk> \<Longrightarrow> ANR (S \<union> T)" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1075 |
by (simp add: ANR_closed_Un_local closedin_def diff_eq open_Compl openin_open_Int) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1076 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1077 |
lemma ANR_openin: |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1078 |
fixes S :: "'a::euclidean_space set" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1079 |
assumes "ANR T" and opeTS: "openin (top_of_set T) S" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1080 |
shows "ANR S" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1081 |
proof (clarsimp simp only: ANR_eq_absolute_neighbourhood_extensor) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1082 |
fix f :: "'a \<times> real \<Rightarrow> 'a" and U C |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1083 |
assume contf: "continuous_on C f" and fim: "f ` C \<subseteq> S" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1084 |
and cloUC: "closedin (top_of_set U) C" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1085 |
have "f ` C \<subseteq> T" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1086 |
using fim opeTS openin_imp_subset by blast |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1087 |
obtain W g where "C \<subseteq> W" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1088 |
and UW: "openin (top_of_set U) W" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1089 |
and contg: "continuous_on W g" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1090 |
and gim: "g ` W \<subseteq> T" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1091 |
and geq: "\<And>x. x \<in> C \<Longrightarrow> g x = f x" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1092 |
apply (rule ANR_imp_absolute_neighbourhood_extensor [OF \<open>ANR T\<close> contf \<open>f ` C \<subseteq> T\<close> cloUC]) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1093 |
using fim by auto |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1094 |
show "\<exists>V g. C \<subseteq> V \<and> openin (top_of_set U) V \<and> continuous_on V g \<and> g ` V \<subseteq> S \<and> (\<forall>x\<in>C. g x = f x)" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1095 |
proof (intro exI conjI) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1096 |
show "C \<subseteq> W \<inter> g -` S" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1097 |
using \<open>C \<subseteq> W\<close> fim geq by blast |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1098 |
show "openin (top_of_set U) (W \<inter> g -` S)" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1099 |
by (metis (mono_tags, lifting) UW contg continuous_openin_preimage gim opeTS openin_trans) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1100 |
show "continuous_on (W \<inter> g -` S) g" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1101 |
by (blast intro: continuous_on_subset [OF contg]) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1102 |
show "g ` (W \<inter> g -` S) \<subseteq> S" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1103 |
using gim by blast |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1104 |
show "\<forall>x\<in>C. g x = f x" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1105 |
using geq by blast |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1106 |
qed |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1107 |
qed |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1108 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1109 |
lemma ENR_openin: |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1110 |
fixes S :: "'a::euclidean_space set" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1111 |
assumes "ENR T" and opeTS: "openin (top_of_set T) S" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1112 |
shows "ENR S" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1113 |
using assms apply (simp add: ENR_ANR) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1114 |
using ANR_openin locally_open_subset by blast |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1115 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1116 |
lemma ANR_neighborhood_retract: |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1117 |
fixes S :: "'a::euclidean_space set" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1118 |
assumes "ANR U" "S retract_of T" "openin (top_of_set U) T" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1119 |
shows "ANR S" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1120 |
using ANR_openin ANR_retract_of_ANR assms by blast |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1121 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1122 |
lemma ENR_neighborhood_retract: |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1123 |
fixes S :: "'a::euclidean_space set" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1124 |
assumes "ENR U" "S retract_of T" "openin (top_of_set U) T" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1125 |
shows "ENR S" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1126 |
using ENR_openin ENR_retract_of_ENR assms by blast |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1127 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1128 |
lemma ANR_rel_interior: |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1129 |
fixes S :: "'a::euclidean_space set" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1130 |
shows "ANR S \<Longrightarrow> ANR(rel_interior S)" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1131 |
by (blast intro: ANR_openin openin_set_rel_interior) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1132 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1133 |
lemma ANR_delete: |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1134 |
fixes S :: "'a::euclidean_space set" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1135 |
shows "ANR S \<Longrightarrow> ANR(S - {a})" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1136 |
by (blast intro: ANR_openin openin_delete openin_subtopology_self) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1137 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1138 |
lemma ENR_rel_interior: |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1139 |
fixes S :: "'a::euclidean_space set" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1140 |
shows "ENR S \<Longrightarrow> ENR(rel_interior S)" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1141 |
by (blast intro: ENR_openin openin_set_rel_interior) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1142 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1143 |
lemma ENR_delete: |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1144 |
fixes S :: "'a::euclidean_space set" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1145 |
shows "ENR S \<Longrightarrow> ENR(S - {a})" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1146 |
by (blast intro: ENR_openin openin_delete openin_subtopology_self) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1147 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1148 |
lemma open_imp_ENR: "open S \<Longrightarrow> ENR S" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1149 |
using ENR_def by blast |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1150 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1151 |
lemma open_imp_ANR: |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1152 |
fixes S :: "'a::euclidean_space set" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1153 |
shows "open S \<Longrightarrow> ANR S" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1154 |
by (simp add: ENR_imp_ANR open_imp_ENR) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1155 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1156 |
lemma ANR_ball [iff]: |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1157 |
fixes a :: "'a::euclidean_space" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1158 |
shows "ANR(ball a r)" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1159 |
by (simp add: convex_imp_ANR) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1160 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1161 |
lemma ENR_ball [iff]: "ENR(ball a r)" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1162 |
by (simp add: open_imp_ENR) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1163 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1164 |
lemma AR_ball [simp]: |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1165 |
fixes a :: "'a::euclidean_space" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1166 |
shows "AR(ball a r) \<longleftrightarrow> 0 < r" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1167 |
by (auto simp: AR_ANR convex_imp_contractible) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1168 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1169 |
lemma ANR_cball [iff]: |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1170 |
fixes a :: "'a::euclidean_space" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1171 |
shows "ANR(cball a r)" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1172 |
by (simp add: convex_imp_ANR) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1173 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1174 |
lemma ENR_cball: |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1175 |
fixes a :: "'a::euclidean_space" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1176 |
shows "ENR(cball a r)" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1177 |
using ENR_convex_closed by blast |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1178 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1179 |
lemma AR_cball [simp]: |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1180 |
fixes a :: "'a::euclidean_space" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1181 |
shows "AR(cball a r) \<longleftrightarrow> 0 \<le> r" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1182 |
by (auto simp: AR_ANR convex_imp_contractible) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1183 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1184 |
lemma ANR_box [iff]: |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1185 |
fixes a :: "'a::euclidean_space" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1186 |
shows "ANR(cbox a b)" "ANR(box a b)" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1187 |
by (auto simp: convex_imp_ANR open_imp_ANR) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1188 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1189 |
lemma ENR_box [iff]: |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1190 |
fixes a :: "'a::euclidean_space" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1191 |
shows "ENR(cbox a b)" "ENR(box a b)" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1192 |
apply (simp add: ENR_convex_closed closed_cbox) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1193 |
by (simp add: open_box open_imp_ENR) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1194 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1195 |
lemma AR_box [simp]: |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1196 |
"AR(cbox a b) \<longleftrightarrow> cbox a b \<noteq> {}" "AR(box a b) \<longleftrightarrow> box a b \<noteq> {}" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1197 |
by (auto simp: AR_ANR convex_imp_contractible) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1198 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1199 |
lemma ANR_interior: |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1200 |
fixes S :: "'a::euclidean_space set" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1201 |
shows "ANR(interior S)" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1202 |
by (simp add: open_imp_ANR) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1203 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1204 |
lemma ENR_interior: |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1205 |
fixes S :: "'a::euclidean_space set" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1206 |
shows "ENR(interior S)" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1207 |
by (simp add: open_imp_ENR) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1208 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1209 |
lemma AR_imp_contractible: |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1210 |
fixes S :: "'a::euclidean_space set" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1211 |
shows "AR S \<Longrightarrow> contractible S" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1212 |
by (simp add: AR_ANR) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1213 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1214 |
lemma ENR_imp_locally_compact: |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1215 |
fixes S :: "'a::euclidean_space set" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1216 |
shows "ENR S \<Longrightarrow> locally compact S" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1217 |
by (simp add: ENR_ANR) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1218 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1219 |
lemma ANR_imp_locally_path_connected: |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1220 |
fixes S :: "'a::euclidean_space set" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1221 |
assumes "ANR S" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1222 |
shows "locally path_connected S" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1223 |
proof - |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1224 |
obtain U and T :: "('a \<times> real) set" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1225 |
where "convex U" "U \<noteq> {}" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1226 |
and UT: "closedin (top_of_set U) T" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1227 |
and "S homeomorphic T" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1228 |
apply (rule homeomorphic_closedin_convex [of S]) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1229 |
using aff_dim_le_DIM [of S] apply auto |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1230 |
done |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1231 |
then have "locally path_connected T" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1232 |
by (meson ANR_imp_absolute_neighbourhood_retract |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1233 |
assms convex_imp_locally_path_connected locally_open_subset retract_of_locally_path_connected) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1234 |
then have S: "locally path_connected S" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1235 |
if "openin (top_of_set U) V" "T retract_of V" "U \<noteq> {}" for V |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1236 |
using \<open>S homeomorphic T\<close> homeomorphic_locally homeomorphic_path_connectedness by blast |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1237 |
show ?thesis |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1238 |
using assms |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1239 |
apply (clarsimp simp: ANR_def) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1240 |
apply (drule_tac x=U in spec) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1241 |
apply (drule_tac x=T in spec) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1242 |
using \<open>S homeomorphic T\<close> \<open>U \<noteq> {}\<close> UT apply (blast intro: S) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1243 |
done |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1244 |
qed |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1245 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1246 |
lemma ANR_imp_locally_connected: |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1247 |
fixes S :: "'a::euclidean_space set" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1248 |
assumes "ANR S" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1249 |
shows "locally connected S" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1250 |
using locally_path_connected_imp_locally_connected ANR_imp_locally_path_connected assms by auto |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1251 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1252 |
lemma AR_imp_locally_path_connected: |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1253 |
fixes S :: "'a::euclidean_space set" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1254 |
assumes "AR S" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1255 |
shows "locally path_connected S" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1256 |
by (simp add: ANR_imp_locally_path_connected AR_imp_ANR assms) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1257 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1258 |
lemma AR_imp_locally_connected: |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1259 |
fixes S :: "'a::euclidean_space set" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1260 |
assumes "AR S" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1261 |
shows "locally connected S" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1262 |
using ANR_imp_locally_connected AR_ANR assms by blast |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1263 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1264 |
lemma ENR_imp_locally_path_connected: |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1265 |
fixes S :: "'a::euclidean_space set" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1266 |
assumes "ENR S" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1267 |
shows "locally path_connected S" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1268 |
by (simp add: ANR_imp_locally_path_connected ENR_imp_ANR assms) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1269 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1270 |
lemma ENR_imp_locally_connected: |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1271 |
fixes S :: "'a::euclidean_space set" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1272 |
assumes "ENR S" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1273 |
shows "locally connected S" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1274 |
using ANR_imp_locally_connected ENR_ANR assms by blast |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1275 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1276 |
lemma ANR_Times: |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1277 |
fixes S :: "'a::euclidean_space set" and T :: "'b::euclidean_space set" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1278 |
assumes "ANR S" "ANR T" shows "ANR(S \<times> T)" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1279 |
proof (clarsimp simp only: ANR_eq_absolute_neighbourhood_extensor) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1280 |
fix f :: " ('a \<times> 'b) \<times> real \<Rightarrow> 'a \<times> 'b" and U C |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1281 |
assume "continuous_on C f" and fim: "f ` C \<subseteq> S \<times> T" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1282 |
and cloUC: "closedin (top_of_set U) C" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1283 |
have contf1: "continuous_on C (fst \<circ> f)" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1284 |
by (simp add: \<open>continuous_on C f\<close> continuous_on_fst) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1285 |
obtain W1 g where "C \<subseteq> W1" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1286 |
and UW1: "openin (top_of_set U) W1" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1287 |
and contg: "continuous_on W1 g" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1288 |
and gim: "g ` W1 \<subseteq> S" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1289 |
and geq: "\<And>x. x \<in> C \<Longrightarrow> g x = (fst \<circ> f) x" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1290 |
apply (rule ANR_imp_absolute_neighbourhood_extensor [OF \<open>ANR S\<close> contf1 _ cloUC]) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1291 |
using fim apply auto |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1292 |
done |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1293 |
have contf2: "continuous_on C (snd \<circ> f)" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1294 |
by (simp add: \<open>continuous_on C f\<close> continuous_on_snd) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1295 |
obtain W2 h where "C \<subseteq> W2" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1296 |
and UW2: "openin (top_of_set U) W2" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1297 |
and conth: "continuous_on W2 h" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1298 |
and him: "h ` W2 \<subseteq> T" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1299 |
and heq: "\<And>x. x \<in> C \<Longrightarrow> h x = (snd \<circ> f) x" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1300 |
apply (rule ANR_imp_absolute_neighbourhood_extensor [OF \<open>ANR T\<close> contf2 _ cloUC]) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1301 |
using fim apply auto |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1302 |
done |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1303 |
show "\<exists>V g. C \<subseteq> V \<and> |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1304 |
openin (top_of_set U) V \<and> |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1305 |
continuous_on V g \<and> g ` V \<subseteq> S \<times> T \<and> (\<forall>x\<in>C. g x = f x)" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1306 |
proof (intro exI conjI) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1307 |
show "C \<subseteq> W1 \<inter> W2" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1308 |
by (simp add: \<open>C \<subseteq> W1\<close> \<open>C \<subseteq> W2\<close>) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1309 |
show "openin (top_of_set U) (W1 \<inter> W2)" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1310 |
by (simp add: UW1 UW2 openin_Int) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1311 |
show "continuous_on (W1 \<inter> W2) (\<lambda>x. (g x, h x))" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1312 |
by (metis (no_types) contg conth continuous_on_Pair continuous_on_subset inf_commute inf_le1) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1313 |
show "(\<lambda>x. (g x, h x)) ` (W1 \<inter> W2) \<subseteq> S \<times> T" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1314 |
using gim him by blast |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1315 |
show "(\<forall>x\<in>C. (g x, h x) = f x)" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1316 |
using geq heq by auto |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1317 |
qed |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1318 |
qed |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1319 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1320 |
lemma AR_Times: |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1321 |
fixes S :: "'a::euclidean_space set" and T :: "'b::euclidean_space set" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1322 |
assumes "AR S" "AR T" shows "AR(S \<times> T)" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1323 |
using assms by (simp add: AR_ANR ANR_Times contractible_Times) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1324 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1325 |
subsection\<^marker>\<open>tag unimportant\<close>\<open>Retracts and intervals in ordered euclidean space\<close> |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1326 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1327 |
lemma ANR_interval [iff]: |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1328 |
fixes a :: "'a::ordered_euclidean_space" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1329 |
shows "ANR{a..b}" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1330 |
by (simp add: interval_cbox) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1331 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1332 |
lemma ENR_interval [iff]: |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1333 |
fixes a :: "'a::ordered_euclidean_space" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1334 |
shows "ENR{a..b}" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1335 |
by (auto simp: interval_cbox) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1336 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1337 |
subsection \<open>More advanced properties of ANRs and ENRs\<close> |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1338 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1339 |
lemma ENR_rel_frontier_convex: |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1340 |
fixes S :: "'a::euclidean_space set" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1341 |
assumes "bounded S" "convex S" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1342 |
shows "ENR(rel_frontier S)" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1343 |
proof (cases "S = {}") |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1344 |
case True then show ?thesis |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1345 |
by simp |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1346 |
next |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1347 |
case False |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1348 |
with assms have "rel_interior S \<noteq> {}" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1349 |
by (simp add: rel_interior_eq_empty) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1350 |
then obtain a where a: "a \<in> rel_interior S" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1351 |
by auto |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1352 |
have ahS: "affine hull S - {a} \<subseteq> {x. closest_point (affine hull S) x \<noteq> a}" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1353 |
by (auto simp: closest_point_self) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1354 |
have "rel_frontier S retract_of affine hull S - {a}" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1355 |
by (simp add: assms a rel_frontier_retract_of_punctured_affine_hull) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1356 |
also have "\<dots> retract_of {x. closest_point (affine hull S) x \<noteq> a}" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1357 |
apply (simp add: retract_of_def retraction_def ahS) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1358 |
apply (rule_tac x="closest_point (affine hull S)" in exI) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1359 |
apply (auto simp: False closest_point_self affine_imp_convex closest_point_in_set continuous_on_closest_point) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1360 |
done |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1361 |
finally have "rel_frontier S retract_of {x. closest_point (affine hull S) x \<noteq> a}" . |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1362 |
moreover have "openin (top_of_set UNIV) (UNIV \<inter> closest_point (affine hull S) -` (- {a}))" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1363 |
apply (rule continuous_openin_preimage_gen) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1364 |
apply (auto simp: False affine_imp_convex continuous_on_closest_point) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1365 |
done |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1366 |
ultimately show ?thesis |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1367 |
unfolding ENR_def |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1368 |
apply (rule_tac x = "closest_point (affine hull S) -` (- {a})" in exI) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1369 |
apply (simp add: vimage_def) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1370 |
done |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1371 |
qed |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1372 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1373 |
lemma ANR_rel_frontier_convex: |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1374 |
fixes S :: "'a::euclidean_space set" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1375 |
assumes "bounded S" "convex S" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1376 |
shows "ANR(rel_frontier S)" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1377 |
by (simp add: ENR_imp_ANR ENR_rel_frontier_convex assms) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1378 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1379 |
lemma ENR_closedin_Un_local: |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1380 |
fixes S :: "'a::euclidean_space set" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1381 |
shows "\<lbrakk>ENR S; ENR T; ENR(S \<inter> T); |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1382 |
closedin (top_of_set (S \<union> T)) S; closedin (top_of_set (S \<union> T)) T\<rbrakk> |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1383 |
\<Longrightarrow> ENR(S \<union> T)" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1384 |
by (simp add: ENR_ANR ANR_closed_Un_local locally_compact_closedin_Un) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1385 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1386 |
lemma ENR_closed_Un: |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1387 |
fixes S :: "'a::euclidean_space set" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1388 |
shows "\<lbrakk>closed S; closed T; ENR S; ENR T; ENR(S \<inter> T)\<rbrakk> \<Longrightarrow> ENR(S \<union> T)" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1389 |
by (auto simp: closed_subset ENR_closedin_Un_local) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1390 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1391 |
lemma absolute_retract_Un: |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1392 |
fixes S :: "'a::euclidean_space set" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1393 |
shows "\<lbrakk>S retract_of UNIV; T retract_of UNIV; (S \<inter> T) retract_of UNIV\<rbrakk> |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1394 |
\<Longrightarrow> (S \<union> T) retract_of UNIV" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1395 |
by (meson AR_closed_Un_local_aux closed_subset retract_of_UNIV retract_of_imp_subset) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1396 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1397 |
lemma retract_from_Un_Int: |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1398 |
fixes S :: "'a::euclidean_space set" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1399 |
assumes clS: "closedin (top_of_set (S \<union> T)) S" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1400 |
and clT: "closedin (top_of_set (S \<union> T)) T" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1401 |
and Un: "(S \<union> T) retract_of U" and Int: "(S \<inter> T) retract_of T" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1402 |
shows "S retract_of U" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1403 |
proof - |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1404 |
obtain r where r: "continuous_on T r" "r ` T \<subseteq> S \<inter> T" "\<forall>x\<in>S \<inter> T. r x = x" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1405 |
using Int by (auto simp: retraction_def retract_of_def) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1406 |
have "S retract_of S \<union> T" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1407 |
unfolding retraction_def retract_of_def |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1408 |
proof (intro exI conjI) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1409 |
show "continuous_on (S \<union> T) (\<lambda>x. if x \<in> S then x else r x)" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1410 |
apply (rule continuous_on_cases_local [OF clS clT]) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1411 |
using r by (auto simp: continuous_on_id) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1412 |
qed (use r in auto) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1413 |
also have "\<dots> retract_of U" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1414 |
by (rule Un) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1415 |
finally show ?thesis . |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1416 |
qed |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1417 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1418 |
lemma AR_from_Un_Int_local: |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1419 |
fixes S :: "'a::euclidean_space set" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1420 |
assumes clS: "closedin (top_of_set (S \<union> T)) S" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1421 |
and clT: "closedin (top_of_set (S \<union> T)) T" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1422 |
and Un: "AR(S \<union> T)" and Int: "AR(S \<inter> T)" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1423 |
shows "AR S" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1424 |
apply (rule AR_retract_of_AR [OF Un]) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1425 |
by (meson AR_imp_retract clS clT closedin_closed_subset local.Int retract_from_Un_Int retract_of_refl sup_ge2) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1426 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1427 |
lemma AR_from_Un_Int_local': |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1428 |
fixes S :: "'a::euclidean_space set" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1429 |
assumes "closedin (top_of_set (S \<union> T)) S" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1430 |
and "closedin (top_of_set (S \<union> T)) T" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1431 |
and "AR(S \<union> T)" "AR(S \<inter> T)" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1432 |
shows "AR T" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1433 |
using AR_from_Un_Int_local [of T S] assms by (simp add: Un_commute Int_commute) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1434 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1435 |
lemma AR_from_Un_Int: |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1436 |
fixes S :: "'a::euclidean_space set" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1437 |
assumes clo: "closed S" "closed T" and Un: "AR(S \<union> T)" and Int: "AR(S \<inter> T)" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1438 |
shows "AR S" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1439 |
by (metis AR_from_Un_Int_local [OF _ _ Un Int] Un_commute clo closed_closedin closedin_closed_subset inf_sup_absorb subtopology_UNIV top_greatest) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1440 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1441 |
lemma ANR_from_Un_Int_local: |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1442 |
fixes S :: "'a::euclidean_space set" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1443 |
assumes clS: "closedin (top_of_set (S \<union> T)) S" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1444 |
and clT: "closedin (top_of_set (S \<union> T)) T" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1445 |
and Un: "ANR(S \<union> T)" and Int: "ANR(S \<inter> T)" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1446 |
shows "ANR S" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1447 |
proof - |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1448 |
obtain V where clo: "closedin (top_of_set (S \<union> T)) (S \<inter> T)" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1449 |
and ope: "openin (top_of_set (S \<union> T)) V" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1450 |
and ret: "S \<inter> T retract_of V" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1451 |
using ANR_imp_neighbourhood_retract [OF Int] by (metis clS clT closedin_Int) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1452 |
then obtain r where r: "continuous_on V r" and rim: "r ` V \<subseteq> S \<inter> T" and req: "\<forall>x\<in>S \<inter> T. r x = x" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1453 |
by (auto simp: retraction_def retract_of_def) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1454 |
have Vsub: "V \<subseteq> S \<union> T" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1455 |
by (meson ope openin_contains_cball) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1456 |
have Vsup: "S \<inter> T \<subseteq> V" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1457 |
by (simp add: retract_of_imp_subset ret) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1458 |
then have eq: "S \<union> V = ((S \<union> T) - T) \<union> V" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1459 |
by auto |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1460 |
have eq': "S \<union> V = S \<union> (V \<inter> T)" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1461 |
using Vsub by blast |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1462 |
have "continuous_on (S \<union> V \<inter> T) (\<lambda>x. if x \<in> S then x else r x)" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1463 |
proof (rule continuous_on_cases_local) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1464 |
show "closedin (top_of_set (S \<union> V \<inter> T)) S" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1465 |
using clS closedin_subset_trans inf.boundedE by blast |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1466 |
show "closedin (top_of_set (S \<union> V \<inter> T)) (V \<inter> T)" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1467 |
using clT Vsup by (auto simp: closedin_closed) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1468 |
show "continuous_on (V \<inter> T) r" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1469 |
by (meson Int_lower1 continuous_on_subset r) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1470 |
qed (use req continuous_on_id in auto) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1471 |
with rim have "S retract_of S \<union> V" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1472 |
unfolding retraction_def retract_of_def |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1473 |
apply (rule_tac x="\<lambda>x. if x \<in> S then x else r x" in exI) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1474 |
apply (auto simp: eq') |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1475 |
done |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1476 |
then show ?thesis |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1477 |
using ANR_neighborhood_retract [OF Un] |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1478 |
using \<open>S \<union> V = S \<union> T - T \<union> V\<close> clT ope by fastforce |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1479 |
qed |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1480 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1481 |
lemma ANR_from_Un_Int: |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1482 |
fixes S :: "'a::euclidean_space set" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1483 |
assumes clo: "closed S" "closed T" and Un: "ANR(S \<union> T)" and Int: "ANR(S \<inter> T)" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1484 |
shows "ANR S" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1485 |
by (metis ANR_from_Un_Int_local [OF _ _ Un Int] Un_commute clo closed_closedin closedin_closed_subset inf_sup_absorb subtopology_UNIV top_greatest) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1486 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1487 |
lemma ANR_finite_Union_convex_closed: |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1488 |
fixes \<T> :: "'a::euclidean_space set set" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1489 |
assumes \<T>: "finite \<T>" and clo: "\<And>C. C \<in> \<T> \<Longrightarrow> closed C" and con: "\<And>C. C \<in> \<T> \<Longrightarrow> convex C" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1490 |
shows "ANR(\<Union>\<T>)" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1491 |
proof - |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1492 |
have "ANR(\<Union>\<T>)" if "card \<T> < n" for n |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1493 |
using assms that |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1494 |
proof (induction n arbitrary: \<T>) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1495 |
case 0 then show ?case by simp |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1496 |
next |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1497 |
case (Suc n) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1498 |
have "ANR(\<Union>\<U>)" if "finite \<U>" "\<U> \<subseteq> \<T>" for \<U> |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1499 |
using that |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1500 |
proof (induction \<U>) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1501 |
case empty |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1502 |
then show ?case by simp |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1503 |
next |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1504 |
case (insert C \<U>) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1505 |
have "ANR (C \<union> \<Union>\<U>)" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1506 |
proof (rule ANR_closed_Un) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1507 |
show "ANR (C \<inter> \<Union>\<U>)" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1508 |
unfolding Int_Union |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1509 |
proof (rule Suc) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1510 |
show "finite ((\<inter>) C ` \<U>)" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1511 |
by (simp add: insert.hyps(1)) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1512 |
show "\<And>Ca. Ca \<in> (\<inter>) C ` \<U> \<Longrightarrow> closed Ca" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1513 |
by (metis (no_types, hide_lams) Suc.prems(2) closed_Int subsetD imageE insert.prems insertI1 insertI2) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1514 |
show "\<And>Ca. Ca \<in> (\<inter>) C ` \<U> \<Longrightarrow> convex Ca" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1515 |
by (metis (mono_tags, lifting) Suc.prems(3) convex_Int imageE insert.prems insert_subset subsetCE) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1516 |
show "card ((\<inter>) C ` \<U>) < n" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1517 |
proof - |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1518 |
have "card \<T> \<le> n" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1519 |
by (meson Suc.prems(4) not_less not_less_eq) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1520 |
then show ?thesis |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1521 |
by (metis Suc.prems(1) card_image_le card_seteq insert.hyps insert.prems insert_subset le_trans not_less) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1522 |
qed |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1523 |
qed |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1524 |
show "closed (\<Union>\<U>)" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1525 |
using Suc.prems(2) insert.hyps(1) insert.prems by blast |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1526 |
qed (use Suc.prems convex_imp_ANR insert.prems insert.IH in auto) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1527 |
then show ?case |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1528 |
by simp |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1529 |
qed |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1530 |
then show ?case |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1531 |
using Suc.prems(1) by blast |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1532 |
qed |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1533 |
then show ?thesis |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1534 |
by blast |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1535 |
qed |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1536 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1537 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1538 |
lemma finite_imp_ANR: |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1539 |
fixes S :: "'a::euclidean_space set" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1540 |
assumes "finite S" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1541 |
shows "ANR S" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1542 |
proof - |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1543 |
have "ANR(\<Union>x \<in> S. {x})" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1544 |
by (blast intro: ANR_finite_Union_convex_closed assms) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1545 |
then show ?thesis |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1546 |
by simp |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1547 |
qed |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1548 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1549 |
lemma ANR_insert: |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1550 |
fixes S :: "'a::euclidean_space set" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1551 |
assumes "ANR S" "closed S" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1552 |
shows "ANR(insert a S)" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1553 |
by (metis ANR_closed_Un ANR_empty ANR_singleton Diff_disjoint Diff_insert_absorb assms closed_singleton insert_absorb insert_is_Un) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1554 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1555 |
lemma ANR_path_component_ANR: |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1556 |
fixes S :: "'a::euclidean_space set" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1557 |
shows "ANR S \<Longrightarrow> ANR(path_component_set S x)" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1558 |
using ANR_imp_locally_path_connected ANR_openin openin_path_component_locally_path_connected by blast |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1559 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1560 |
lemma ANR_connected_component_ANR: |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1561 |
fixes S :: "'a::euclidean_space set" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1562 |
shows "ANR S \<Longrightarrow> ANR(connected_component_set S x)" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1563 |
by (metis ANR_openin openin_connected_component_locally_connected ANR_imp_locally_connected) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1564 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1565 |
lemma ANR_component_ANR: |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1566 |
fixes S :: "'a::euclidean_space set" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1567 |
assumes "ANR S" "c \<in> components S" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1568 |
shows "ANR c" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1569 |
by (metis ANR_connected_component_ANR assms componentsE) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1570 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1571 |
subsection\<open>Original ANR material, now for ENRs\<close> |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1572 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1573 |
lemma ENR_bounded: |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1574 |
fixes S :: "'a::euclidean_space set" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1575 |
assumes "bounded S" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1576 |
shows "ENR S \<longleftrightarrow> (\<exists>U. open U \<and> bounded U \<and> S retract_of U)" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1577 |
(is "?lhs = ?rhs") |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1578 |
proof |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1579 |
obtain r where "0 < r" and r: "S \<subseteq> ball 0 r" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1580 |
using bounded_subset_ballD assms by blast |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1581 |
assume ?lhs |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1582 |
then show ?rhs |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1583 |
apply (clarsimp simp: ENR_def) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1584 |
apply (rule_tac x="ball 0 r \<inter> U" in exI, auto) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1585 |
using r retract_of_imp_subset retract_of_subset by fastforce |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1586 |
next |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1587 |
assume ?rhs |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1588 |
then show ?lhs |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1589 |
using ENR_def by blast |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1590 |
qed |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1591 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1592 |
lemma absolute_retract_imp_AR_gen: |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1593 |
fixes S :: "'a::euclidean_space set" and S' :: "'b::euclidean_space set" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1594 |
assumes "S retract_of T" "convex T" "T \<noteq> {}" "S homeomorphic S'" "closedin (top_of_set U) S'" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1595 |
shows "S' retract_of U" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1596 |
proof - |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1597 |
have "AR T" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1598 |
by (simp add: assms convex_imp_AR) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1599 |
then have "AR S" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1600 |
using AR_retract_of_AR assms by auto |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1601 |
then show ?thesis |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1602 |
using assms AR_imp_absolute_retract by metis |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1603 |
qed |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1604 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1605 |
lemma absolute_retract_imp_AR: |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1606 |
fixes S :: "'a::euclidean_space set" and S' :: "'b::euclidean_space set" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1607 |
assumes "S retract_of UNIV" "S homeomorphic S'" "closed S'" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1608 |
shows "S' retract_of UNIV" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1609 |
using AR_imp_absolute_retract_UNIV assms retract_of_UNIV by blast |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1610 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1611 |
lemma homeomorphic_compact_arness: |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1612 |
fixes S :: "'a::euclidean_space set" and S' :: "'b::euclidean_space set" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1613 |
assumes "S homeomorphic S'" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1614 |
shows "compact S \<and> S retract_of UNIV \<longleftrightarrow> compact S' \<and> S' retract_of UNIV" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1615 |
using assms homeomorphic_compactness |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1616 |
apply auto |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1617 |
apply (meson assms compact_AR homeomorphic_AR_iff_AR homeomorphic_compactness)+ |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1618 |
done |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1619 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1620 |
lemma absolute_retract_from_Un_Int: |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1621 |
fixes S :: "'a::euclidean_space set" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1622 |
assumes "(S \<union> T) retract_of UNIV" "(S \<inter> T) retract_of UNIV" "closed S" "closed T" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1623 |
shows "S retract_of UNIV" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1624 |
using AR_from_Un_Int assms retract_of_UNIV by auto |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1625 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1626 |
lemma ENR_from_Un_Int_gen: |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1627 |
fixes S :: "'a::euclidean_space set" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1628 |
assumes "closedin (top_of_set (S \<union> T)) S" "closedin (top_of_set (S \<union> T)) T" "ENR(S \<union> T)" "ENR(S \<inter> T)" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1629 |
shows "ENR S" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1630 |
apply (simp add: ENR_ANR) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1631 |
using ANR_from_Un_Int_local ENR_ANR assms locally_compact_closedin by blast |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1632 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1633 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1634 |
lemma ENR_from_Un_Int: |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1635 |
fixes S :: "'a::euclidean_space set" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1636 |
assumes "closed S" "closed T" "ENR(S \<union> T)" "ENR(S \<inter> T)" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1637 |
shows "ENR S" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1638 |
by (meson ENR_from_Un_Int_gen assms closed_subset sup_ge1 sup_ge2) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1639 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1640 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1641 |
lemma ENR_finite_Union_convex_closed: |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1642 |
fixes \<T> :: "'a::euclidean_space set set" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1643 |
assumes \<T>: "finite \<T>" and clo: "\<And>C. C \<in> \<T> \<Longrightarrow> closed C" and con: "\<And>C. C \<in> \<T> \<Longrightarrow> convex C" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1644 |
shows "ENR(\<Union> \<T>)" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1645 |
by (simp add: ENR_ANR ANR_finite_Union_convex_closed \<T> clo closed_Union closed_imp_locally_compact con) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1646 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1647 |
lemma finite_imp_ENR: |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1648 |
fixes S :: "'a::euclidean_space set" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1649 |
shows "finite S \<Longrightarrow> ENR S" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1650 |
by (simp add: ENR_ANR finite_imp_ANR finite_imp_closed closed_imp_locally_compact) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1651 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1652 |
lemma ENR_insert: |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1653 |
fixes S :: "'a::euclidean_space set" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1654 |
assumes "closed S" "ENR S" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1655 |
shows "ENR(insert a S)" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1656 |
proof - |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1657 |
have "ENR ({a} \<union> S)" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1658 |
by (metis ANR_insert ENR_ANR Un_commute Un_insert_right assms closed_imp_locally_compact closed_insert sup_bot_right) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1659 |
then show ?thesis |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1660 |
by auto |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1661 |
qed |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1662 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1663 |
lemma ENR_path_component_ENR: |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1664 |
fixes S :: "'a::euclidean_space set" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1665 |
assumes "ENR S" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1666 |
shows "ENR(path_component_set S x)" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1667 |
by (metis ANR_imp_locally_path_connected ENR_empty ENR_imp_ANR ENR_openin assms |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1668 |
locally_path_connected_2 openin_subtopology_self path_component_eq_empty) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1669 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1670 |
(*UNUSED |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1671 |
lemma ENR_Times: |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1672 |
fixes S :: "'a::euclidean_space set" and T :: "'b::euclidean_space set" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1673 |
assumes "ENR S" "ENR T" shows "ENR(S \<times> T)" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1674 |
using assms apply (simp add: ENR_ANR ANR_Times) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1675 |
thm locally_compact_Times |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1676 |
oops |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1677 |
SIMP_TAC[ENR_ANR; ANR_PCROSS; LOCALLY_COMPACT_PCROSS]);; |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1678 |
*) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1679 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1680 |
subsection\<open>Finally, spheres are ANRs and ENRs\<close> |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1681 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1682 |
lemma absolute_retract_homeomorphic_convex_compact: |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1683 |
fixes S :: "'a::euclidean_space set" and U :: "'b::euclidean_space set" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1684 |
assumes "S homeomorphic U" "S \<noteq> {}" "S \<subseteq> T" "convex U" "compact U" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1685 |
shows "S retract_of T" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1686 |
by (metis UNIV_I assms compact_AR convex_imp_AR homeomorphic_AR_iff_AR homeomorphic_compactness homeomorphic_empty(1) retract_of_subset subsetI) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1687 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1688 |
lemma frontier_retract_of_punctured_universe: |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1689 |
fixes S :: "'a::euclidean_space set" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1690 |
assumes "convex S" "bounded S" "a \<in> interior S" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1691 |
shows "(frontier S) retract_of (- {a})" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1692 |
using rel_frontier_retract_of_punctured_affine_hull |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1693 |
by (metis Compl_eq_Diff_UNIV affine_hull_nonempty_interior assms empty_iff rel_frontier_frontier rel_interior_nonempty_interior) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1694 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1695 |
lemma sphere_retract_of_punctured_universe_gen: |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1696 |
fixes a :: "'a::euclidean_space" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1697 |
assumes "b \<in> ball a r" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1698 |
shows "sphere a r retract_of (- {b})" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1699 |
proof - |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1700 |
have "frontier (cball a r) retract_of (- {b})" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1701 |
apply (rule frontier_retract_of_punctured_universe) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1702 |
using assms by auto |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1703 |
then show ?thesis |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1704 |
by simp |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1705 |
qed |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1706 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1707 |
lemma sphere_retract_of_punctured_universe: |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1708 |
fixes a :: "'a::euclidean_space" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1709 |
assumes "0 < r" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1710 |
shows "sphere a r retract_of (- {a})" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1711 |
by (simp add: assms sphere_retract_of_punctured_universe_gen) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1712 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1713 |
lemma ENR_sphere: |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1714 |
fixes a :: "'a::euclidean_space" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1715 |
shows "ENR(sphere a r)" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1716 |
proof (cases "0 < r") |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1717 |
case True |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1718 |
then have "sphere a r retract_of -{a}" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1719 |
by (simp add: sphere_retract_of_punctured_universe) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1720 |
with open_delete show ?thesis |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1721 |
by (auto simp: ENR_def) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1722 |
next |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1723 |
case False |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1724 |
then show ?thesis |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1725 |
using finite_imp_ENR |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1726 |
by (metis finite_insert infinite_imp_nonempty less_linear sphere_eq_empty sphere_trivial) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1727 |
qed |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1728 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1729 |
corollary\<^marker>\<open>tag unimportant\<close> ANR_sphere: |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1730 |
fixes a :: "'a::euclidean_space" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1731 |
shows "ANR(sphere a r)" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1732 |
by (simp add: ENR_imp_ANR ENR_sphere) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1733 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1734 |
subsection\<open>Spheres are connected, etc\<close> |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1735 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1736 |
lemma locally_path_connected_sphere_gen: |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1737 |
fixes S :: "'a::euclidean_space set" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1738 |
assumes "bounded S" and "convex S" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1739 |
shows "locally path_connected (rel_frontier S)" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1740 |
proof (cases "rel_interior S = {}") |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1741 |
case True |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1742 |
with assms show ?thesis |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1743 |
by (simp add: rel_interior_eq_empty) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1744 |
next |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1745 |
case False |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1746 |
then obtain a where a: "a \<in> rel_interior S" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1747 |
by blast |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1748 |
show ?thesis |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1749 |
proof (rule retract_of_locally_path_connected) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1750 |
show "locally path_connected (affine hull S - {a})" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1751 |
by (meson convex_affine_hull convex_imp_locally_path_connected locally_open_subset openin_delete openin_subtopology_self) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1752 |
show "rel_frontier S retract_of affine hull S - {a}" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1753 |
using a assms rel_frontier_retract_of_punctured_affine_hull by blast |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1754 |
qed |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1755 |
qed |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1756 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1757 |
lemma locally_connected_sphere_gen: |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1758 |
fixes S :: "'a::euclidean_space set" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1759 |
assumes "bounded S" and "convex S" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1760 |
shows "locally connected (rel_frontier S)" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1761 |
by (simp add: ANR_imp_locally_connected ANR_rel_frontier_convex assms) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1762 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1763 |
lemma locally_path_connected_sphere: |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1764 |
fixes a :: "'a::euclidean_space" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1765 |
shows "locally path_connected (sphere a r)" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1766 |
using ENR_imp_locally_path_connected ENR_sphere by blast |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1767 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1768 |
lemma locally_connected_sphere: |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1769 |
fixes a :: "'a::euclidean_space" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1770 |
shows "locally connected(sphere a r)" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1771 |
using ANR_imp_locally_connected ANR_sphere by blast |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1772 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1773 |
subsection\<open>Borsuk homotopy extension theorem\<close> |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1774 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1775 |
text\<open>It's only this late so we can use the concept of retraction, |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1776 |
saying that the domain sets or range set are ENRs.\<close> |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1777 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1778 |
theorem Borsuk_homotopy_extension_homotopic: |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1779 |
fixes f :: "'a::euclidean_space \<Rightarrow> 'b::euclidean_space" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1780 |
assumes cloTS: "closedin (top_of_set T) S" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1781 |
and anr: "(ANR S \<and> ANR T) \<or> ANR U" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1782 |
and contf: "continuous_on T f" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1783 |
and "f ` T \<subseteq> U" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1784 |
and "homotopic_with_canon (\<lambda>x. True) S U f g" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1785 |
obtains g' where "homotopic_with_canon (\<lambda>x. True) T U f g'" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1786 |
"continuous_on T g'" "image g' T \<subseteq> U" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1787 |
"\<And>x. x \<in> S \<Longrightarrow> g' x = g x" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1788 |
proof - |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1789 |
have "S \<subseteq> T" using assms closedin_imp_subset by blast |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1790 |
obtain h where conth: "continuous_on ({0..1} \<times> S) h" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1791 |
and him: "h ` ({0..1} \<times> S) \<subseteq> U" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1792 |
and [simp]: "\<And>x. h(0, x) = f x" "\<And>x. h(1::real, x) = g x" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1793 |
using assms by (auto simp: homotopic_with_def) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1794 |
define h' where "h' \<equiv> \<lambda>z. if snd z \<in> S then h z else (f \<circ> snd) z" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1795 |
define B where "B \<equiv> {0::real} \<times> T \<union> {0..1} \<times> S" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1796 |
have clo0T: "closedin (top_of_set ({0..1} \<times> T)) ({0::real} \<times> T)" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1797 |
by (simp add: Abstract_Topology.closedin_Times) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1798 |
moreover have cloT1S: "closedin (top_of_set ({0..1} \<times> T)) ({0..1} \<times> S)" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1799 |
by (simp add: Abstract_Topology.closedin_Times assms) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1800 |
ultimately have clo0TB:"closedin (top_of_set ({0..1} \<times> T)) B" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1801 |
by (auto simp: B_def) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1802 |
have cloBS: "closedin (top_of_set B) ({0..1} \<times> S)" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1803 |
by (metis (no_types) Un_subset_iff B_def closedin_subset_trans [OF cloT1S] clo0TB closedin_imp_subset closedin_self) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1804 |
moreover have cloBT: "closedin (top_of_set B) ({0} \<times> T)" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1805 |
using \<open>S \<subseteq> T\<close> closedin_subset_trans [OF clo0T] |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1806 |
by (metis B_def Un_upper1 clo0TB closedin_closed inf_le1) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1807 |
moreover have "continuous_on ({0} \<times> T) (f \<circ> snd)" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1808 |
apply (rule continuous_intros)+ |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1809 |
apply (simp add: contf) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1810 |
done |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1811 |
ultimately have conth': "continuous_on B h'" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1812 |
apply (simp add: h'_def B_def Un_commute [of "{0} \<times> T"]) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1813 |
apply (auto intro!: continuous_on_cases_local conth) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1814 |
done |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1815 |
have "image h' B \<subseteq> U" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1816 |
using \<open>f ` T \<subseteq> U\<close> him by (auto simp: h'_def B_def) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1817 |
obtain V k where "B \<subseteq> V" and opeTV: "openin (top_of_set ({0..1} \<times> T)) V" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1818 |
and contk: "continuous_on V k" and kim: "k ` V \<subseteq> U" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1819 |
and keq: "\<And>x. x \<in> B \<Longrightarrow> k x = h' x" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1820 |
using anr |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1821 |
proof |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1822 |
assume ST: "ANR S \<and> ANR T" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1823 |
have eq: "({0} \<times> T \<inter> {0..1} \<times> S) = {0::real} \<times> S" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1824 |
using \<open>S \<subseteq> T\<close> by auto |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1825 |
have "ANR B" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1826 |
apply (simp add: B_def) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1827 |
apply (rule ANR_closed_Un_local) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1828 |
apply (metis cloBT B_def) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1829 |
apply (metis Un_commute cloBS B_def) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1830 |
apply (simp_all add: ANR_Times convex_imp_ANR ANR_singleton ST eq) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1831 |
done |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1832 |
note Vk = that |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1833 |
have *: thesis if "openin (top_of_set ({0..1::real} \<times> T)) V" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1834 |
"retraction V B r" for V r |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1835 |
using that |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1836 |
apply (clarsimp simp add: retraction_def) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1837 |
apply (rule Vk [of V "h' \<circ> r"], assumption+) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1838 |
apply (metis continuous_on_compose conth' continuous_on_subset) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1839 |
using \<open>h' ` B \<subseteq> U\<close> apply force+ |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1840 |
done |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1841 |
show thesis |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1842 |
apply (rule ANR_imp_neighbourhood_retract [OF \<open>ANR B\<close> clo0TB]) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1843 |
apply (auto simp: ANR_Times ANR_singleton ST retract_of_def *) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1844 |
done |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1845 |
next |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1846 |
assume "ANR U" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1847 |
with ANR_imp_absolute_neighbourhood_extensor \<open>h' ` B \<subseteq> U\<close> clo0TB conth' that |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1848 |
show ?thesis by blast |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1849 |
qed |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1850 |
define S' where "S' \<equiv> {x. \<exists>u::real. u \<in> {0..1} \<and> (u, x::'a) \<in> {0..1} \<times> T - V}" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1851 |
have "closedin (top_of_set T) S'" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1852 |
unfolding S'_def |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1853 |
apply (rule closedin_compact_projection, blast) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1854 |
using closedin_self opeTV by blast |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1855 |
have S'_def: "S' = {x. \<exists>u::real. (u, x::'a) \<in> {0..1} \<times> T - V}" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1856 |
by (auto simp: S'_def) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1857 |
have cloTS': "closedin (top_of_set T) S'" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1858 |
using S'_def \<open>closedin (top_of_set T) S'\<close> by blast |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1859 |
have "S \<inter> S' = {}" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1860 |
using S'_def B_def \<open>B \<subseteq> V\<close> by force |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1861 |
obtain a :: "'a \<Rightarrow> real" where conta: "continuous_on T a" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1862 |
and "\<And>x. x \<in> T \<Longrightarrow> a x \<in> closed_segment 1 0" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1863 |
and a1: "\<And>x. x \<in> S \<Longrightarrow> a x = 1" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1864 |
and a0: "\<And>x. x \<in> S' \<Longrightarrow> a x = 0" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1865 |
apply (rule Urysohn_local [OF cloTS cloTS' \<open>S \<inter> S' = {}\<close>, of 1 0], blast) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1866 |
done |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1867 |
then have ain: "\<And>x. x \<in> T \<Longrightarrow> a x \<in> {0..1}" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1868 |
using closed_segment_eq_real_ivl by auto |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1869 |
have inV: "(u * a t, t) \<in> V" if "t \<in> T" "0 \<le> u" "u \<le> 1" for t u |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1870 |
proof (rule ccontr) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1871 |
assume "(u * a t, t) \<notin> V" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1872 |
with ain [OF \<open>t \<in> T\<close>] have "a t = 0" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1873 |
apply simp |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1874 |
apply (rule a0) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1875 |
by (metis (no_types, lifting) Diff_iff S'_def SigmaI atLeastAtMost_iff mem_Collect_eq mult_le_one mult_nonneg_nonneg that) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1876 |
show False |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1877 |
using B_def \<open>(u * a t, t) \<notin> V\<close> \<open>B \<subseteq> V\<close> \<open>a t = 0\<close> that by auto |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1878 |
qed |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1879 |
show ?thesis |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1880 |
proof |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1881 |
show hom: "homotopic_with_canon (\<lambda>x. True) T U f (\<lambda>x. k (a x, x))" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1882 |
proof (simp add: homotopic_with, intro exI conjI) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1883 |
show "continuous_on ({0..1} \<times> T) (k \<circ> (\<lambda>z. (fst z *\<^sub>R (a \<circ> snd) z, snd z)))" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1884 |
apply (intro continuous_on_compose continuous_intros) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1885 |
apply (rule continuous_on_subset [OF conta], force) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1886 |
apply (rule continuous_on_subset [OF contk]) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1887 |
apply (force intro: inV) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1888 |
done |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1889 |
show "(k \<circ> (\<lambda>z. (fst z *\<^sub>R (a \<circ> snd) z, snd z))) ` ({0..1} \<times> T) \<subseteq> U" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1890 |
using inV kim by auto |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1891 |
show "\<forall>x\<in>T. (k \<circ> (\<lambda>z. (fst z *\<^sub>R (a \<circ> snd) z, snd z))) (0, x) = f x" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1892 |
by (simp add: B_def h'_def keq) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1893 |
show "\<forall>x\<in>T. (k \<circ> (\<lambda>z. (fst z *\<^sub>R (a \<circ> snd) z, snd z))) (1, x) = k (a x, x)" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1894 |
by auto |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1895 |
qed |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1896 |
show "continuous_on T (\<lambda>x. k (a x, x))" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1897 |
using homotopic_with_imp_continuous_maps [OF hom] by auto |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1898 |
show "(\<lambda>x. k (a x, x)) ` T \<subseteq> U" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1899 |
proof clarify |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1900 |
fix t |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1901 |
assume "t \<in> T" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1902 |
show "k (a t, t) \<in> U" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1903 |
by (metis \<open>t \<in> T\<close> image_subset_iff inV kim not_one_le_zero linear mult_cancel_right1) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1904 |
qed |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1905 |
show "\<And>x. x \<in> S \<Longrightarrow> k (a x, x) = g x" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1906 |
by (simp add: B_def a1 h'_def keq) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1907 |
qed |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1908 |
qed |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1909 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1910 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1911 |
corollary\<^marker>\<open>tag unimportant\<close> nullhomotopic_into_ANR_extension: |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1912 |
fixes f :: "'a::euclidean_space \<Rightarrow> 'b::euclidean_space" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1913 |
assumes "closed S" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1914 |
and contf: "continuous_on S f" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1915 |
and "ANR T" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1916 |
and fim: "f ` S \<subseteq> T" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1917 |
and "S \<noteq> {}" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1918 |
shows "(\<exists>c. homotopic_with_canon (\<lambda>x. True) S T f (\<lambda>x. c)) \<longleftrightarrow> |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1919 |
(\<exists>g. continuous_on UNIV g \<and> range g \<subseteq> T \<and> (\<forall>x \<in> S. g x = f x))" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1920 |
(is "?lhs = ?rhs") |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1921 |
proof |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1922 |
assume ?lhs |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1923 |
then obtain c where c: "homotopic_with_canon (\<lambda>x. True) S T (\<lambda>x. c) f" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1924 |
by (blast intro: homotopic_with_symD) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1925 |
have "closedin (top_of_set UNIV) S" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1926 |
using \<open>closed S\<close> closed_closedin by fastforce |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1927 |
then obtain g where "continuous_on UNIV g" "range g \<subseteq> T" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1928 |
"\<And>x. x \<in> S \<Longrightarrow> g x = f x" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1929 |
apply (rule Borsuk_homotopy_extension_homotopic [OF _ _ continuous_on_const _ c, where T=UNIV]) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1930 |
using \<open>ANR T\<close> \<open>S \<noteq> {}\<close> c homotopic_with_imp_subset1 apply fastforce+ |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1931 |
done |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1932 |
then show ?rhs by blast |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1933 |
next |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1934 |
assume ?rhs |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1935 |
then obtain g where "continuous_on UNIV g" "range g \<subseteq> T" "\<And>x. x\<in>S \<Longrightarrow> g x = f x" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1936 |
by blast |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1937 |
then obtain c where "homotopic_with_canon (\<lambda>h. True) UNIV T g (\<lambda>x. c)" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1938 |
using nullhomotopic_from_contractible [of UNIV g T] contractible_UNIV by blast |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1939 |
then have "homotopic_with_canon (\<lambda>x. True) S T g (\<lambda>x. c)" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1940 |
by (simp add: homotopic_from_subtopology) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1941 |
then show ?lhs |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1942 |
by (force elim: homotopic_with_eq [of _ _ _ g "\<lambda>x. c"] simp: \<open>\<And>x. x \<in> S \<Longrightarrow> g x = f x\<close>) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1943 |
qed |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1944 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1945 |
corollary\<^marker>\<open>tag unimportant\<close> nullhomotopic_into_rel_frontier_extension: |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1946 |
fixes f :: "'a::euclidean_space \<Rightarrow> 'b::euclidean_space" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1947 |
assumes "closed S" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1948 |
and contf: "continuous_on S f" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1949 |
and "convex T" "bounded T" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1950 |
and fim: "f ` S \<subseteq> rel_frontier T" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1951 |
and "S \<noteq> {}" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1952 |
shows "(\<exists>c. homotopic_with_canon (\<lambda>x. True) S (rel_frontier T) f (\<lambda>x. c)) \<longleftrightarrow> |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1953 |
(\<exists>g. continuous_on UNIV g \<and> range g \<subseteq> rel_frontier T \<and> (\<forall>x \<in> S. g x = f x))" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1954 |
by (simp add: nullhomotopic_into_ANR_extension assms ANR_rel_frontier_convex) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1955 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1956 |
corollary\<^marker>\<open>tag unimportant\<close> nullhomotopic_into_sphere_extension: |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1957 |
fixes f :: "'a::euclidean_space \<Rightarrow> 'b :: euclidean_space" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1958 |
assumes "closed S" and contf: "continuous_on S f" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1959 |
and "S \<noteq> {}" and fim: "f ` S \<subseteq> sphere a r" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1960 |
shows "((\<exists>c. homotopic_with_canon (\<lambda>x. True) S (sphere a r) f (\<lambda>x. c)) \<longleftrightarrow> |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1961 |
(\<exists>g. continuous_on UNIV g \<and> range g \<subseteq> sphere a r \<and> (\<forall>x \<in> S. g x = f x)))" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1962 |
(is "?lhs = ?rhs") |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1963 |
proof (cases "r = 0") |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1964 |
case True with fim show ?thesis |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1965 |
apply auto |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1966 |
using fim continuous_on_const apply fastforce |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1967 |
by (metis contf contractible_sing nullhomotopic_into_contractible) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1968 |
next |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1969 |
case False |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1970 |
then have eq: "sphere a r = rel_frontier (cball a r)" by simp |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1971 |
show ?thesis |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1972 |
using fim unfolding eq |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1973 |
apply (rule nullhomotopic_into_rel_frontier_extension [OF \<open>closed S\<close> contf convex_cball bounded_cball]) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1974 |
apply (rule \<open>S \<noteq> {}\<close>) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1975 |
done |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1976 |
qed |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1977 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1978 |
proposition\<^marker>\<open>tag unimportant\<close> Borsuk_map_essential_bounded_component: |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1979 |
fixes a :: "'a :: euclidean_space" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1980 |
assumes "compact S" and "a \<notin> S" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1981 |
shows "bounded (connected_component_set (- S) a) \<longleftrightarrow> |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1982 |
\<not>(\<exists>c. homotopic_with_canon (\<lambda>x. True) S (sphere 0 1) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1983 |
(\<lambda>x. inverse(norm(x - a)) *\<^sub>R (x - a)) (\<lambda>x. c))" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1984 |
(is "?lhs = ?rhs") |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1985 |
proof (cases "S = {}") |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1986 |
case True then show ?thesis |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1987 |
by simp |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1988 |
next |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1989 |
case False |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1990 |
have "closed S" "bounded S" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1991 |
using \<open>compact S\<close> compact_eq_bounded_closed by auto |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1992 |
have s01: "(\<lambda>x. (x - a) /\<^sub>R norm (x - a)) ` S \<subseteq> sphere 0 1" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1993 |
using \<open>a \<notin> S\<close> by clarsimp (metis dist_eq_0_iff dist_norm mult.commute right_inverse) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1994 |
have aincc: "a \<in> connected_component_set (- S) a" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1995 |
by (simp add: \<open>a \<notin> S\<close>) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1996 |
obtain r where "r>0" and r: "S \<subseteq> ball 0 r" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1997 |
using bounded_subset_ballD \<open>bounded S\<close> by blast |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1998 |
have "\<not> ?rhs \<longleftrightarrow> \<not> ?lhs" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1999 |
proof |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2000 |
assume notr: "\<not> ?rhs" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2001 |
have nog: "\<nexists>g. continuous_on (S \<union> connected_component_set (- S) a) g \<and> |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2002 |
g ` (S \<union> connected_component_set (- S) a) \<subseteq> sphere 0 1 \<and> |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2003 |
(\<forall>x\<in>S. g x = (x - a) /\<^sub>R norm (x - a))" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2004 |
if "bounded (connected_component_set (- S) a)" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2005 |
apply (rule non_extensible_Borsuk_map [OF \<open>compact S\<close> componentsI _ aincc]) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2006 |
using \<open>a \<notin> S\<close> that by auto |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2007 |
obtain g where "range g \<subseteq> sphere 0 1" "continuous_on UNIV g" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2008 |
"\<And>x. x \<in> S \<Longrightarrow> g x = (x - a) /\<^sub>R norm (x - a)" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2009 |
using notr |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2010 |
by (auto simp: nullhomotopic_into_sphere_extension |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2011 |
[OF \<open>closed S\<close> continuous_on_Borsuk_map [OF \<open>a \<notin> S\<close>] False s01]) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2012 |
with \<open>a \<notin> S\<close> show "\<not> ?lhs" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2013 |
apply (clarsimp simp: Borsuk_map_into_sphere [of a S, symmetric] dest!: nog) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2014 |
apply (drule_tac x=g in spec) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2015 |
using continuous_on_subset by fastforce |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2016 |
next |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2017 |
assume "\<not> ?lhs" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2018 |
then obtain b where b: "b \<in> connected_component_set (- S) a" and "r \<le> norm b" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2019 |
using bounded_iff linear by blast |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2020 |
then have bnot: "b \<notin> ball 0 r" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2021 |
by simp |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2022 |
have "homotopic_with_canon (\<lambda>x. True) S (sphere 0 1) (\<lambda>x. (x - a) /\<^sub>R norm (x - a)) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2023 |
(\<lambda>x. (x - b) /\<^sub>R norm (x - b))" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2024 |
apply (rule Borsuk_maps_homotopic_in_path_component) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2025 |
using \<open>closed S\<close> b open_Compl open_path_connected_component apply fastforce |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2026 |
done |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2027 |
moreover |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2028 |
obtain c where "homotopic_with_canon (\<lambda>x. True) (ball 0 r) (sphere 0 1) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2029 |
(\<lambda>x. inverse (norm (x - b)) *\<^sub>R (x - b)) (\<lambda>x. c)" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2030 |
proof (rule nullhomotopic_from_contractible) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2031 |
show "contractible (ball (0::'a) r)" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2032 |
by (metis convex_imp_contractible convex_ball) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2033 |
show "continuous_on (ball 0 r) (\<lambda>x. inverse(norm (x - b)) *\<^sub>R (x - b))" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2034 |
by (rule continuous_on_Borsuk_map [OF bnot]) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2035 |
show "(\<lambda>x. (x - b) /\<^sub>R norm (x - b)) ` ball 0 r \<subseteq> sphere 0 1" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2036 |
using bnot Borsuk_map_into_sphere by blast |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2037 |
qed blast |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2038 |
ultimately have "homotopic_with_canon (\<lambda>x. True) S (sphere 0 1) (\<lambda>x. (x - a) /\<^sub>R norm (x - a)) (\<lambda>x. c)" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2039 |
by (meson homotopic_with_subset_left homotopic_with_trans r) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2040 |
then show "\<not> ?rhs" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2041 |
by blast |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2042 |
qed |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2043 |
then show ?thesis by blast |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2044 |
qed |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2045 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2046 |
lemma homotopic_Borsuk_maps_in_bounded_component: |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2047 |
fixes a :: "'a :: euclidean_space" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2048 |
assumes "compact S" and "a \<notin> S"and "b \<notin> S" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2049 |
and boc: "bounded (connected_component_set (- S) a)" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2050 |
and hom: "homotopic_with_canon (\<lambda>x. True) S (sphere 0 1) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2051 |
(\<lambda>x. (x - a) /\<^sub>R norm (x - a)) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2052 |
(\<lambda>x. (x - b) /\<^sub>R norm (x - b))" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2053 |
shows "connected_component (- S) a b" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2054 |
proof (rule ccontr) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2055 |
assume notcc: "\<not> connected_component (- S) a b" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2056 |
let ?T = "S \<union> connected_component_set (- S) a" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2057 |
have "\<nexists>g. continuous_on (S \<union> connected_component_set (- S) a) g \<and> |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2058 |
g ` (S \<union> connected_component_set (- S) a) \<subseteq> sphere 0 1 \<and> |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2059 |
(\<forall>x\<in>S. g x = (x - a) /\<^sub>R norm (x - a))" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2060 |
by (simp add: \<open>a \<notin> S\<close> componentsI non_extensible_Borsuk_map [OF \<open>compact S\<close> _ boc]) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2061 |
moreover obtain g where "continuous_on (S \<union> connected_component_set (- S) a) g" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2062 |
"g ` (S \<union> connected_component_set (- S) a) \<subseteq> sphere 0 1" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2063 |
"\<And>x. x \<in> S \<Longrightarrow> g x = (x - a) /\<^sub>R norm (x - a)" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2064 |
proof (rule Borsuk_homotopy_extension_homotopic) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2065 |
show "closedin (top_of_set ?T) S" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2066 |
by (simp add: \<open>compact S\<close> closed_subset compact_imp_closed) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2067 |
show "continuous_on ?T (\<lambda>x. (x - b) /\<^sub>R norm (x - b))" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2068 |
by (simp add: \<open>b \<notin> S\<close> notcc continuous_on_Borsuk_map) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2069 |
show "(\<lambda>x. (x - b) /\<^sub>R norm (x - b)) ` ?T \<subseteq> sphere 0 1" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2070 |
by (simp add: \<open>b \<notin> S\<close> notcc Borsuk_map_into_sphere) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2071 |
show "homotopic_with_canon (\<lambda>x. True) S (sphere 0 1) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2072 |
(\<lambda>x. (x - b) /\<^sub>R norm (x - b)) (\<lambda>x. (x - a) /\<^sub>R norm (x - a))" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2073 |
by (simp add: hom homotopic_with_symD) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2074 |
qed (auto simp: ANR_sphere intro: that) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2075 |
ultimately show False by blast |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2076 |
qed |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2077 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2078 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2079 |
lemma Borsuk_maps_homotopic_in_connected_component_eq: |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2080 |
fixes a :: "'a :: euclidean_space" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2081 |
assumes S: "compact S" "a \<notin> S" "b \<notin> S" and 2: "2 \<le> DIM('a)" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2082 |
shows "(homotopic_with_canon (\<lambda>x. True) S (sphere 0 1) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2083 |
(\<lambda>x. (x - a) /\<^sub>R norm (x - a)) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2084 |
(\<lambda>x. (x - b) /\<^sub>R norm (x - b)) \<longleftrightarrow> |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2085 |
connected_component (- S) a b)" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2086 |
(is "?lhs = ?rhs") |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2087 |
proof |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2088 |
assume L: ?lhs |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2089 |
show ?rhs |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2090 |
proof (cases "bounded(connected_component_set (- S) a)") |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2091 |
case True |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2092 |
show ?thesis |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2093 |
by (rule homotopic_Borsuk_maps_in_bounded_component [OF S True L]) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2094 |
next |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2095 |
case not_bo_a: False |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2096 |
show ?thesis |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2097 |
proof (cases "bounded(connected_component_set (- S) b)") |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2098 |
case True |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2099 |
show ?thesis |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2100 |
using homotopic_Borsuk_maps_in_bounded_component [OF S] |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2101 |
by (simp add: L True assms connected_component_sym homotopic_Borsuk_maps_in_bounded_component homotopic_with_sym) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2102 |
next |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2103 |
case False |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2104 |
then show ?thesis |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2105 |
using cobounded_unique_unbounded_component [of "-S" a b] \<open>compact S\<close> not_bo_a |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2106 |
by (auto simp: compact_eq_bounded_closed assms connected_component_eq_eq) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2107 |
qed |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2108 |
qed |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2109 |
next |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2110 |
assume R: ?rhs |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2111 |
then have "path_component (- S) a b" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2112 |
using assms(1) compact_eq_bounded_closed open_Compl open_path_connected_component_set by fastforce |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2113 |
then show ?lhs |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2114 |
by (simp add: Borsuk_maps_homotopic_in_path_component) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2115 |
qed |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2116 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2117 |
subsection\<open>More extension theorems\<close> |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2118 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2119 |
lemma extension_from_clopen: |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2120 |
assumes ope: "openin (top_of_set S) T" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2121 |
and clo: "closedin (top_of_set S) T" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2122 |
and contf: "continuous_on T f" and fim: "f ` T \<subseteq> U" and null: "U = {} \<Longrightarrow> S = {}" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2123 |
obtains g where "continuous_on S g" "g ` S \<subseteq> U" "\<And>x. x \<in> T \<Longrightarrow> g x = f x" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2124 |
proof (cases "U = {}") |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2125 |
case True |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2126 |
then show ?thesis |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2127 |
by (simp add: null that) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2128 |
next |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2129 |
case False |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2130 |
then obtain a where "a \<in> U" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2131 |
by auto |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2132 |
let ?g = "\<lambda>x. if x \<in> T then f x else a" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2133 |
have Seq: "S = T \<union> (S - T)" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2134 |
using clo closedin_imp_subset by fastforce |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2135 |
show ?thesis |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2136 |
proof |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2137 |
have "continuous_on (T \<union> (S - T)) ?g" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2138 |
apply (rule continuous_on_cases_local) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2139 |
using Seq clo ope by (auto simp: contf continuous_on_const intro: continuous_on_cases_local) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2140 |
with Seq show "continuous_on S ?g" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2141 |
by metis |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2142 |
show "?g ` S \<subseteq> U" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2143 |
using \<open>a \<in> U\<close> fim by auto |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2144 |
show "\<And>x. x \<in> T \<Longrightarrow> ?g x = f x" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2145 |
by auto |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2146 |
qed |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2147 |
qed |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2148 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2149 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2150 |
lemma extension_from_component: |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2151 |
fixes f :: "'a :: euclidean_space \<Rightarrow> 'b :: euclidean_space" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2152 |
assumes S: "locally connected S \<or> compact S" and "ANR U" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2153 |
and C: "C \<in> components S" and contf: "continuous_on C f" and fim: "f ` C \<subseteq> U" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2154 |
obtains g where "continuous_on S g" "g ` S \<subseteq> U" "\<And>x. x \<in> C \<Longrightarrow> g x = f x" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2155 |
proof - |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2156 |
obtain T g where ope: "openin (top_of_set S) T" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2157 |
and clo: "closedin (top_of_set S) T" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2158 |
and "C \<subseteq> T" and contg: "continuous_on T g" and gim: "g ` T \<subseteq> U" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2159 |
and gf: "\<And>x. x \<in> C \<Longrightarrow> g x = f x" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2160 |
using S |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2161 |
proof |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2162 |
assume "locally connected S" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2163 |
show ?thesis |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2164 |
by (metis C \<open>locally connected S\<close> openin_components_locally_connected closedin_component contf fim order_refl that) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2165 |
next |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2166 |
assume "compact S" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2167 |
then obtain W g where "C \<subseteq> W" and opeW: "openin (top_of_set S) W" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2168 |
and contg: "continuous_on W g" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2169 |
and gim: "g ` W \<subseteq> U" and gf: "\<And>x. x \<in> C \<Longrightarrow> g x = f x" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2170 |
using ANR_imp_absolute_neighbourhood_extensor [of U C f S] C \<open>ANR U\<close> closedin_component contf fim by blast |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2171 |
then obtain V where "open V" and V: "W = S \<inter> V" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2172 |
by (auto simp: openin_open) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2173 |
moreover have "locally compact S" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2174 |
by (simp add: \<open>compact S\<close> closed_imp_locally_compact compact_imp_closed) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2175 |
ultimately obtain K where opeK: "openin (top_of_set S) K" and "compact K" "C \<subseteq> K" "K \<subseteq> V" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2176 |
by (metis C Int_subset_iff \<open>C \<subseteq> W\<close> \<open>compact S\<close> compact_components Sura_Bura_clopen_subset) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2177 |
show ?thesis |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2178 |
proof |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2179 |
show "closedin (top_of_set S) K" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2180 |
by (meson \<open>compact K\<close> \<open>compact S\<close> closedin_compact_eq opeK openin_imp_subset) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2181 |
show "continuous_on K g" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2182 |
by (metis Int_subset_iff V \<open>K \<subseteq> V\<close> contg continuous_on_subset opeK openin_subtopology subset_eq) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2183 |
show "g ` K \<subseteq> U" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2184 |
using V \<open>K \<subseteq> V\<close> gim opeK openin_imp_subset by fastforce |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2185 |
qed (use opeK gf \<open>C \<subseteq> K\<close> in auto) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2186 |
qed |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2187 |
obtain h where "continuous_on S h" "h ` S \<subseteq> U" "\<And>x. x \<in> T \<Longrightarrow> h x = g x" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2188 |
using extension_from_clopen |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2189 |
by (metis C bot.extremum_uniqueI clo contg gim fim image_is_empty in_components_nonempty ope) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2190 |
then show ?thesis |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2191 |
by (metis \<open>C \<subseteq> T\<close> gf subset_eq that) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2192 |
qed |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2193 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2194 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2195 |
lemma tube_lemma: |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2196 |
fixes S :: "'a::euclidean_space set" and T :: "'b::euclidean_space set" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2197 |
assumes "compact S" and S: "S \<noteq> {}" "(\<lambda>x. (x,a)) ` S \<subseteq> U" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2198 |
and ope: "openin (top_of_set (S \<times> T)) U" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2199 |
obtains V where "openin (top_of_set T) V" "a \<in> V" "S \<times> V \<subseteq> U" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2200 |
proof - |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2201 |
let ?W = "{y. \<exists>x. x \<in> S \<and> (x, y) \<in> (S \<times> T - U)}" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2202 |
have "U \<subseteq> S \<times> T" "closedin (top_of_set (S \<times> T)) (S \<times> T - U)" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2203 |
using ope by (auto simp: openin_closedin_eq) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2204 |
then have "closedin (top_of_set T) ?W" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2205 |
using \<open>compact S\<close> closedin_compact_projection by blast |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2206 |
moreover have "a \<in> T - ?W" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2207 |
using \<open>U \<subseteq> S \<times> T\<close> S by auto |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2208 |
moreover have "S \<times> (T - ?W) \<subseteq> U" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2209 |
by auto |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2210 |
ultimately show ?thesis |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2211 |
by (metis (no_types, lifting) Sigma_cong closedin_def that topspace_euclidean_subtopology) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2212 |
qed |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2213 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2214 |
lemma tube_lemma_gen: |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2215 |
fixes S :: "'a::euclidean_space set" and T :: "'b::euclidean_space set" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2216 |
assumes "compact S" "S \<noteq> {}" "T \<subseteq> T'" "S \<times> T \<subseteq> U" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2217 |
and ope: "openin (top_of_set (S \<times> T')) U" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2218 |
obtains V where "openin (top_of_set T') V" "T \<subseteq> V" "S \<times> V \<subseteq> U" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2219 |
proof - |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2220 |
have "\<And>x. x \<in> T \<Longrightarrow> \<exists>V. openin (top_of_set T') V \<and> x \<in> V \<and> S \<times> V \<subseteq> U" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2221 |
using assms by (auto intro: tube_lemma [OF \<open>compact S\<close>]) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2222 |
then obtain F where F: "\<And>x. x \<in> T \<Longrightarrow> openin (top_of_set T') (F x) \<and> x \<in> F x \<and> S \<times> F x \<subseteq> U" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2223 |
by metis |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2224 |
show ?thesis |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2225 |
proof |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2226 |
show "openin (top_of_set T') (\<Union>(F ` T))" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2227 |
using F by blast |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2228 |
show "T \<subseteq> \<Union>(F ` T)" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2229 |
using F by blast |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2230 |
show "S \<times> \<Union>(F ` T) \<subseteq> U" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2231 |
using F by auto |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2232 |
qed |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2233 |
qed |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2234 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2235 |
proposition\<^marker>\<open>tag unimportant\<close> homotopic_neighbourhood_extension: |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2236 |
fixes f :: "'a::euclidean_space \<Rightarrow> 'b::euclidean_space" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2237 |
assumes contf: "continuous_on S f" and fim: "f ` S \<subseteq> U" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2238 |
and contg: "continuous_on S g" and gim: "g ` S \<subseteq> U" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2239 |
and clo: "closedin (top_of_set S) T" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2240 |
and "ANR U" and hom: "homotopic_with_canon (\<lambda>x. True) T U f g" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2241 |
obtains V where "T \<subseteq> V" "openin (top_of_set S) V" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2242 |
"homotopic_with_canon (\<lambda>x. True) V U f g" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2243 |
proof - |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2244 |
have "T \<subseteq> S" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2245 |
using clo closedin_imp_subset by blast |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2246 |
obtain h where conth: "continuous_on ({0..1::real} \<times> T) h" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2247 |
and him: "h ` ({0..1} \<times> T) \<subseteq> U" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2248 |
and h0: "\<And>x. h(0, x) = f x" and h1: "\<And>x. h(1, x) = g x" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2249 |
using hom by (auto simp: homotopic_with_def) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2250 |
define h' where "h' \<equiv> \<lambda>z. if fst z \<in> {0} then f(snd z) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2251 |
else if fst z \<in> {1} then g(snd z) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2252 |
else h z" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2253 |
let ?S0 = "{0::real} \<times> S" and ?S1 = "{1::real} \<times> S" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2254 |
have "continuous_on(?S0 \<union> (?S1 \<union> {0..1} \<times> T)) h'" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2255 |
unfolding h'_def |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2256 |
proof (intro continuous_on_cases_local) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2257 |
show "closedin (top_of_set (?S0 \<union> (?S1 \<union> {0..1} \<times> T))) ?S0" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2258 |
"closedin (top_of_set (?S1 \<union> {0..1} \<times> T)) ?S1" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2259 |
using \<open>T \<subseteq> S\<close> by (force intro: closedin_Times closedin_subset_trans [of "{0..1} \<times> S"])+ |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2260 |
show "closedin (top_of_set (?S0 \<union> (?S1 \<union> {0..1} \<times> T))) (?S1 \<union> {0..1} \<times> T)" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2261 |
"closedin (top_of_set (?S1 \<union> {0..1} \<times> T)) ({0..1} \<times> T)" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2262 |
using \<open>T \<subseteq> S\<close> by (force intro: clo closedin_Times closedin_subset_trans [of "{0..1} \<times> S"])+ |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2263 |
show "continuous_on (?S0) (\<lambda>x. f (snd x))" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2264 |
by (intro continuous_intros continuous_on_compose2 [OF contf]) auto |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2265 |
show "continuous_on (?S1) (\<lambda>x. g (snd x))" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2266 |
by (intro continuous_intros continuous_on_compose2 [OF contg]) auto |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2267 |
qed (use h0 h1 conth in auto) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2268 |
then have "continuous_on ({0,1} \<times> S \<union> ({0..1} \<times> T)) h'" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2269 |
by (metis Sigma_Un_distrib1 Un_assoc insert_is_Un) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2270 |
moreover have "h' ` ({0,1} \<times> S \<union> {0..1} \<times> T) \<subseteq> U" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2271 |
using fim gim him \<open>T \<subseteq> S\<close> unfolding h'_def by force |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2272 |
moreover have "closedin (top_of_set ({0..1::real} \<times> S)) ({0,1} \<times> S \<union> {0..1::real} \<times> T)" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2273 |
by (intro closedin_Times closedin_Un clo) (simp_all add: closed_subset) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2274 |
ultimately |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2275 |
obtain W k where W: "({0,1} \<times> S) \<union> ({0..1} \<times> T) \<subseteq> W" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2276 |
and opeW: "openin (top_of_set ({0..1} \<times> S)) W" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2277 |
and contk: "continuous_on W k" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2278 |
and kim: "k ` W \<subseteq> U" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2279 |
and kh': "\<And>x. x \<in> ({0,1} \<times> S) \<union> ({0..1} \<times> T) \<Longrightarrow> k x = h' x" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2280 |
by (metis ANR_imp_absolute_neighbourhood_extensor [OF \<open>ANR U\<close>, of "({0,1} \<times> S) \<union> ({0..1} \<times> T)" h' "{0..1} \<times> S"]) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2281 |
obtain T' where opeT': "openin (top_of_set S) T'" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2282 |
and "T \<subseteq> T'" and TW: "{0..1} \<times> T' \<subseteq> W" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2283 |
using tube_lemma_gen [of "{0..1::real}" T S W] W \<open>T \<subseteq> S\<close> opeW by auto |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2284 |
moreover have "homotopic_with_canon (\<lambda>x. True) T' U f g" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2285 |
proof (simp add: homotopic_with, intro exI conjI) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2286 |
show "continuous_on ({0..1} \<times> T') k" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2287 |
using TW continuous_on_subset contk by auto |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2288 |
show "k ` ({0..1} \<times> T') \<subseteq> U" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2289 |
using TW kim by fastforce |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2290 |
have "T' \<subseteq> S" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2291 |
by (meson opeT' subsetD openin_imp_subset) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2292 |
then show "\<forall>x\<in>T'. k (0, x) = f x" "\<forall>x\<in>T'. k (1, x) = g x" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2293 |
by (auto simp: kh' h'_def) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2294 |
qed |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2295 |
ultimately show ?thesis |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2296 |
by (blast intro: that) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2297 |
qed |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2298 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2299 |
text\<open> Homotopy on a union of closed-open sets.\<close> |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2300 |
proposition\<^marker>\<open>tag unimportant\<close> homotopic_on_clopen_Union: |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2301 |
fixes \<F> :: "'a::euclidean_space set set" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2302 |
assumes "\<And>S. S \<in> \<F> \<Longrightarrow> closedin (top_of_set (\<Union>\<F>)) S" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2303 |
and "\<And>S. S \<in> \<F> \<Longrightarrow> openin (top_of_set (\<Union>\<F>)) S" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2304 |
and "\<And>S. S \<in> \<F> \<Longrightarrow> homotopic_with_canon (\<lambda>x. True) S T f g" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2305 |
shows "homotopic_with_canon (\<lambda>x. True) (\<Union>\<F>) T f g" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2306 |
proof - |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2307 |
obtain \<V> where "\<V> \<subseteq> \<F>" "countable \<V>" and eqU: "\<Union>\<V> = \<Union>\<F>" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2308 |
using Lindelof_openin assms by blast |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2309 |
show ?thesis |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2310 |
proof (cases "\<V> = {}") |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2311 |
case True |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2312 |
then show ?thesis |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2313 |
by (metis Union_empty eqU homotopic_with_canon_on_empty) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2314 |
next |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2315 |
case False |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2316 |
then obtain V :: "nat \<Rightarrow> 'a set" where V: "range V = \<V>" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2317 |
using range_from_nat_into \<open>countable \<V>\<close> by metis |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2318 |
with \<open>\<V> \<subseteq> \<F>\<close> have clo: "\<And>n. closedin (top_of_set (\<Union>\<F>)) (V n)" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2319 |
and ope: "\<And>n. openin (top_of_set (\<Union>\<F>)) (V n)" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2320 |
and hom: "\<And>n. homotopic_with_canon (\<lambda>x. True) (V n) T f g" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2321 |
using assms by auto |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2322 |
then obtain h where conth: "\<And>n. continuous_on ({0..1::real} \<times> V n) (h n)" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2323 |
and him: "\<And>n. h n ` ({0..1} \<times> V n) \<subseteq> T" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2324 |
and h0: "\<And>n. \<And>x. x \<in> V n \<Longrightarrow> h n (0, x) = f x" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2325 |
and h1: "\<And>n. \<And>x. x \<in> V n \<Longrightarrow> h n (1, x) = g x" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2326 |
by (simp add: homotopic_with) metis |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2327 |
have wop: "b \<in> V x \<Longrightarrow> \<exists>k. b \<in> V k \<and> (\<forall>j<k. b \<notin> V j)" for b x |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2328 |
using nat_less_induct [where P = "\<lambda>i. b \<notin> V i"] by meson |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2329 |
obtain \<zeta> where cont: "continuous_on ({0..1} \<times> \<Union>(V ` UNIV)) \<zeta>" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2330 |
and eq: "\<And>x i. \<lbrakk>x \<in> {0..1} \<times> \<Union>(V ` UNIV) \<inter> |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2331 |
{0..1} \<times> (V i - (\<Union>m<i. V m))\<rbrakk> \<Longrightarrow> \<zeta> x = h i x" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2332 |
proof (rule pasting_lemma_exists) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2333 |
let ?X = "top_of_set ({0..1::real} \<times> \<Union>(range V))" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2334 |
show "topspace ?X \<subseteq> (\<Union>i. {0..1::real} \<times> (V i - (\<Union>m<i. V m)))" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2335 |
by (force simp: Ball_def dest: wop) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2336 |
show "openin (top_of_set ({0..1} \<times> \<Union>(V ` UNIV))) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2337 |
({0..1::real} \<times> (V i - (\<Union>m<i. V m)))" for i |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2338 |
proof (intro openin_Times openin_subtopology_self openin_diff) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2339 |
show "openin (top_of_set (\<Union>(V ` UNIV))) (V i)" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2340 |
using ope V eqU by auto |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2341 |
show "closedin (top_of_set (\<Union>(V ` UNIV))) (\<Union>m<i. V m)" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2342 |
using V clo eqU by (force intro: closedin_Union) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2343 |
qed |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2344 |
show "continuous_map (subtopology ?X ({0..1} \<times> (V i - \<Union> (V ` {..<i})))) euclidean (h i)" for i |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2345 |
by (auto simp add: subtopology_subtopology intro!: continuous_on_subset [OF conth]) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2346 |
show "\<And>i j x. x \<in> topspace ?X \<inter> {0..1} \<times> (V i - (\<Union>m<i. V m)) \<inter> {0..1} \<times> (V j - (\<Union>m<j. V m)) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2347 |
\<Longrightarrow> h i x = h j x" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2348 |
by clarsimp (metis lessThan_iff linorder_neqE_nat) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2349 |
qed auto |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2350 |
show ?thesis |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2351 |
proof (simp add: homotopic_with eqU [symmetric], intro exI conjI ballI) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2352 |
show "continuous_on ({0..1} \<times> \<Union>\<V>) \<zeta>" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2353 |
using V eqU by (blast intro!: continuous_on_subset [OF cont]) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2354 |
show "\<zeta>` ({0..1} \<times> \<Union>\<V>) \<subseteq> T" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2355 |
proof clarsimp |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2356 |
fix t :: real and y :: "'a" and X :: "'a set" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2357 |
assume "y \<in> X" "X \<in> \<V>" and t: "0 \<le> t" "t \<le> 1" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2358 |
then obtain k where "y \<in> V k" and j: "\<forall>j<k. y \<notin> V j" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2359 |
by (metis image_iff V wop) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2360 |
with him t show "\<zeta>(t, y) \<in> T" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2361 |
by (subst eq) force+ |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2362 |
qed |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2363 |
fix X y |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2364 |
assume "X \<in> \<V>" "y \<in> X" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2365 |
then obtain k where "y \<in> V k" and j: "\<forall>j<k. y \<notin> V j" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2366 |
by (metis image_iff V wop) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2367 |
then show "\<zeta>(0, y) = f y" and "\<zeta>(1, y) = g y" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2368 |
by (subst eq [where i=k]; force simp: h0 h1)+ |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2369 |
qed |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2370 |
qed |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2371 |
qed |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2372 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2373 |
lemma homotopic_on_components_eq: |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2374 |
fixes S :: "'a :: euclidean_space set" and T :: "'b :: euclidean_space set" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2375 |
assumes S: "locally connected S \<or> compact S" and "ANR T" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2376 |
shows "homotopic_with_canon (\<lambda>x. True) S T f g \<longleftrightarrow> |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2377 |
(continuous_on S f \<and> f ` S \<subseteq> T \<and> continuous_on S g \<and> g ` S \<subseteq> T) \<and> |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2378 |
(\<forall>C \<in> components S. homotopic_with_canon (\<lambda>x. True) C T f g)" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2379 |
(is "?lhs \<longleftrightarrow> ?C \<and> ?rhs") |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2380 |
proof - |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2381 |
have "continuous_on S f" "f ` S \<subseteq> T" "continuous_on S g" "g ` S \<subseteq> T" if ?lhs |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2382 |
using homotopic_with_imp_continuous homotopic_with_imp_subset1 homotopic_with_imp_subset2 that by blast+ |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2383 |
moreover have "?lhs \<longleftrightarrow> ?rhs" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2384 |
if contf: "continuous_on S f" and fim: "f ` S \<subseteq> T" and contg: "continuous_on S g" and gim: "g ` S \<subseteq> T" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2385 |
proof |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2386 |
assume ?lhs |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2387 |
with that show ?rhs |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2388 |
by (simp add: homotopic_with_subset_left in_components_subset) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2389 |
next |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2390 |
assume R: ?rhs |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2391 |
have "\<exists>U. C \<subseteq> U \<and> closedin (top_of_set S) U \<and> |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2392 |
openin (top_of_set S) U \<and> |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2393 |
homotopic_with_canon (\<lambda>x. True) U T f g" if C: "C \<in> components S" for C |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2394 |
proof - |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2395 |
have "C \<subseteq> S" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2396 |
by (simp add: in_components_subset that) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2397 |
show ?thesis |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2398 |
using S |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2399 |
proof |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2400 |
assume "locally connected S" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2401 |
show ?thesis |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2402 |
proof (intro exI conjI) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2403 |
show "closedin (top_of_set S) C" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2404 |
by (simp add: closedin_component that) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2405 |
show "openin (top_of_set S) C" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2406 |
by (simp add: \<open>locally connected S\<close> openin_components_locally_connected that) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2407 |
show "homotopic_with_canon (\<lambda>x. True) C T f g" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2408 |
by (simp add: R that) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2409 |
qed auto |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2410 |
next |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2411 |
assume "compact S" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2412 |
have hom: "homotopic_with_canon (\<lambda>x. True) C T f g" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2413 |
using R that by blast |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2414 |
obtain U where "C \<subseteq> U" and opeU: "openin (top_of_set S) U" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2415 |
and hom: "homotopic_with_canon (\<lambda>x. True) U T f g" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2416 |
using homotopic_neighbourhood_extension [OF contf fim contg gim _ \<open>ANR T\<close> hom] |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2417 |
\<open>C \<in> components S\<close> closedin_component by blast |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2418 |
then obtain V where "open V" and V: "U = S \<inter> V" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2419 |
by (auto simp: openin_open) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2420 |
moreover have "locally compact S" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2421 |
by (simp add: \<open>compact S\<close> closed_imp_locally_compact compact_imp_closed) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2422 |
ultimately obtain K where opeK: "openin (top_of_set S) K" and "compact K" "C \<subseteq> K" "K \<subseteq> V" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2423 |
by (metis C Int_subset_iff Sura_Bura_clopen_subset \<open>C \<subseteq> U\<close> \<open>compact S\<close> compact_components) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2424 |
show ?thesis |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2425 |
proof (intro exI conjI) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2426 |
show "closedin (top_of_set S) K" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2427 |
by (meson \<open>compact K\<close> \<open>compact S\<close> closedin_compact_eq opeK openin_imp_subset) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2428 |
show "homotopic_with_canon (\<lambda>x. True) K T f g" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2429 |
using V \<open>K \<subseteq> V\<close> hom homotopic_with_subset_left opeK openin_imp_subset by fastforce |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2430 |
qed (use opeK \<open>C \<subseteq> K\<close> in auto) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2431 |
qed |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2432 |
qed |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2433 |
then obtain \<phi> where \<phi>: "\<And>C. C \<in> components S \<Longrightarrow> C \<subseteq> \<phi> C" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2434 |
and clo\<phi>: "\<And>C. C \<in> components S \<Longrightarrow> closedin (top_of_set S) (\<phi> C)" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2435 |
and ope\<phi>: "\<And>C. C \<in> components S \<Longrightarrow> openin (top_of_set S) (\<phi> C)" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2436 |
and hom\<phi>: "\<And>C. C \<in> components S \<Longrightarrow> homotopic_with_canon (\<lambda>x. True) (\<phi> C) T f g" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2437 |
by metis |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2438 |
have Seq: "S = \<Union> (\<phi> ` components S)" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2439 |
proof |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2440 |
show "S \<subseteq> \<Union> (\<phi> ` components S)" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2441 |
by (metis Sup_mono Union_components \<phi> imageI) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2442 |
show "\<Union> (\<phi> ` components S) \<subseteq> S" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2443 |
using ope\<phi> openin_imp_subset by fastforce |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2444 |
qed |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2445 |
show ?lhs |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2446 |
apply (subst Seq) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2447 |
apply (rule homotopic_on_clopen_Union) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2448 |
using Seq clo\<phi> ope\<phi> hom\<phi> by auto |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2449 |
qed |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2450 |
ultimately show ?thesis by blast |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2451 |
qed |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2452 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2453 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2454 |
lemma cohomotopically_trivial_on_components: |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2455 |
fixes S :: "'a :: euclidean_space set" and T :: "'b :: euclidean_space set" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2456 |
assumes S: "locally connected S \<or> compact S" and "ANR T" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2457 |
shows |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2458 |
"(\<forall>f g. continuous_on S f \<longrightarrow> f ` S \<subseteq> T \<longrightarrow> continuous_on S g \<longrightarrow> g ` S \<subseteq> T \<longrightarrow> |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2459 |
homotopic_with_canon (\<lambda>x. True) S T f g) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2460 |
\<longleftrightarrow> |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2461 |
(\<forall>C\<in>components S. |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2462 |
\<forall>f g. continuous_on C f \<longrightarrow> f ` C \<subseteq> T \<longrightarrow> continuous_on C g \<longrightarrow> g ` C \<subseteq> T \<longrightarrow> |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2463 |
homotopic_with_canon (\<lambda>x. True) C T f g)" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2464 |
(is "?lhs = ?rhs") |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2465 |
proof |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2466 |
assume L[rule_format]: ?lhs |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2467 |
show ?rhs |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2468 |
proof clarify |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2469 |
fix C f g |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2470 |
assume contf: "continuous_on C f" and fim: "f ` C \<subseteq> T" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2471 |
and contg: "continuous_on C g" and gim: "g ` C \<subseteq> T" and C: "C \<in> components S" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2472 |
obtain f' where contf': "continuous_on S f'" and f'im: "f' ` S \<subseteq> T" and f'f: "\<And>x. x \<in> C \<Longrightarrow> f' x = f x" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2473 |
using extension_from_component [OF S \<open>ANR T\<close> C contf fim] by metis |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2474 |
obtain g' where contg': "continuous_on S g'" and g'im: "g' ` S \<subseteq> T" and g'g: "\<And>x. x \<in> C \<Longrightarrow> g' x = g x" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2475 |
using extension_from_component [OF S \<open>ANR T\<close> C contg gim] by metis |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2476 |
have "homotopic_with_canon (\<lambda>x. True) C T f' g'" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2477 |
using L [OF contf' f'im contg' g'im] homotopic_with_subset_left C in_components_subset by fastforce |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2478 |
then show "homotopic_with_canon (\<lambda>x. True) C T f g" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2479 |
using f'f g'g homotopic_with_eq by force |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2480 |
qed |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2481 |
next |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2482 |
assume R [rule_format]: ?rhs |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2483 |
show ?lhs |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2484 |
proof clarify |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2485 |
fix f g |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2486 |
assume contf: "continuous_on S f" and fim: "f ` S \<subseteq> T" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2487 |
and contg: "continuous_on S g" and gim: "g ` S \<subseteq> T" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2488 |
moreover have "homotopic_with_canon (\<lambda>x. True) C T f g" if "C \<in> components S" for C |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2489 |
using R [OF that] |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2490 |
by (meson contf contg continuous_on_subset fim gim image_mono in_components_subset order.trans that) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2491 |
ultimately show "homotopic_with_canon (\<lambda>x. True) S T f g" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2492 |
by (subst homotopic_on_components_eq [OF S \<open>ANR T\<close>]) auto |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2493 |
qed |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2494 |
qed |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2495 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2496 |
subsection\<open>The complement of a set and path-connectedness\<close> |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2497 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2498 |
text\<open>Complement in dimension N > 1 of set homeomorphic to any interval in |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2499 |
any dimension is (path-)connected. This naively generalizes the argument |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2500 |
in Ryuji Maehara's paper "The Jordan curve theorem via the Brouwer fixed point theorem", |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2501 |
American Mathematical Monthly 1984.\<close> |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2502 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2503 |
lemma unbounded_components_complement_absolute_retract: |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2504 |
fixes S :: "'a::euclidean_space set" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2505 |
assumes C: "C \<in> components(- S)" and S: "compact S" "AR S" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2506 |
shows "\<not> bounded C" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2507 |
proof - |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2508 |
obtain y where y: "C = connected_component_set (- S) y" and "y \<notin> S" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2509 |
using C by (auto simp: components_def) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2510 |
have "open(- S)" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2511 |
using S by (simp add: closed_open compact_eq_bounded_closed) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2512 |
have "S retract_of UNIV" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2513 |
using S compact_AR by blast |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2514 |
then obtain r where contr: "continuous_on UNIV r" and ontor: "range r \<subseteq> S" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2515 |
and r: "\<And>x. x \<in> S \<Longrightarrow> r x = x" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2516 |
by (auto simp: retract_of_def retraction_def) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2517 |
show ?thesis |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2518 |
proof |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2519 |
assume "bounded C" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2520 |
have "connected_component_set (- S) y \<subseteq> S" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2521 |
proof (rule frontier_subset_retraction) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2522 |
show "bounded (connected_component_set (- S) y)" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2523 |
using \<open>bounded C\<close> y by blast |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2524 |
show "frontier (connected_component_set (- S) y) \<subseteq> S" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2525 |
using C \<open>compact S\<close> compact_eq_bounded_closed frontier_of_components_closed_complement y by blast |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2526 |
show "continuous_on (closure (connected_component_set (- S) y)) r" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2527 |
by (blast intro: continuous_on_subset [OF contr]) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2528 |
qed (use ontor r in auto) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2529 |
with \<open>y \<notin> S\<close> show False by force |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2530 |
qed |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2531 |
qed |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2532 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2533 |
lemma connected_complement_absolute_retract: |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2534 |
fixes S :: "'a::euclidean_space set" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2535 |
assumes S: "compact S" "AR S" and 2: "2 \<le> DIM('a)" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2536 |
shows "connected(- S)" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2537 |
proof - |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2538 |
have "S retract_of UNIV" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2539 |
using S compact_AR by blast |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2540 |
show ?thesis |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2541 |
apply (clarsimp simp: connected_iff_connected_component_eq) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2542 |
apply (rule cobounded_unique_unbounded_component [OF _ 2]) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2543 |
apply (simp add: \<open>compact S\<close> compact_imp_bounded) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2544 |
apply (meson ComplI S componentsI unbounded_components_complement_absolute_retract)+ |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2545 |
done |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2546 |
qed |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2547 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2548 |
lemma path_connected_complement_absolute_retract: |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2549 |
fixes S :: "'a::euclidean_space set" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2550 |
assumes "compact S" "AR S" "2 \<le> DIM('a)" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2551 |
shows "path_connected(- S)" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2552 |
using connected_complement_absolute_retract [OF assms] |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2553 |
using \<open>compact S\<close> compact_eq_bounded_closed connected_open_path_connected by blast |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2554 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2555 |
theorem connected_complement_homeomorphic_convex_compact: |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2556 |
fixes S :: "'a::euclidean_space set" and T :: "'b::euclidean_space set" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2557 |
assumes hom: "S homeomorphic T" and T: "convex T" "compact T" and 2: "2 \<le> DIM('a)" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2558 |
shows "connected(- S)" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2559 |
proof (cases "S = {}") |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2560 |
case True |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2561 |
then show ?thesis |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2562 |
by (simp add: connected_UNIV) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2563 |
next |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2564 |
case False |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2565 |
show ?thesis |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2566 |
proof (rule connected_complement_absolute_retract) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2567 |
show "compact S" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2568 |
using \<open>compact T\<close> hom homeomorphic_compactness by auto |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2569 |
show "AR S" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2570 |
by (meson AR_ANR False \<open>convex T\<close> convex_imp_ANR convex_imp_contractible hom homeomorphic_ANR_iff_ANR homeomorphic_contractible_eq) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2571 |
qed (rule 2) |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2572 |
qed |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2573 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2574 |
corollary path_connected_complement_homeomorphic_convex_compact: |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2575 |
fixes S :: "'a::euclidean_space set" and T :: "'b::euclidean_space set" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2576 |
assumes hom: "S homeomorphic T" "convex T" "compact T" "2 \<le> DIM('a)" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2577 |
shows "path_connected(- S)" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2578 |
using connected_complement_homeomorphic_convex_compact [OF assms] |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2579 |
using \<open>compact T\<close> compact_eq_bounded_closed connected_open_path_connected hom homeomorphic_compactness by blast |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2580 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2581 |
lemma path_connected_complement_homeomorphic_interval: |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2582 |
fixes S :: "'a::euclidean_space set" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2583 |
assumes "S homeomorphic cbox a b" "2 \<le> DIM('a)" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2584 |
shows "path_connected(-S)" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2585 |
using assms compact_cbox convex_box(1) path_connected_complement_homeomorphic_convex_compact by blast |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2586 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2587 |
lemma connected_complement_homeomorphic_interval: |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2588 |
fixes S :: "'a::euclidean_space set" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2589 |
assumes "S homeomorphic cbox a b" "2 \<le> DIM('a)" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2590 |
shows "connected(-S)" |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2591 |
using assms path_connected_complement_homeomorphic_interval path_connected_imp_connected by blast |
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2592 |
|
de9c4ed2d5df
Half of Brouwer_Fixpoint split off to form a separate theory: Retracts.
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2593 |
end |