37 by (induction n) (auto simp: assms ASuc dest!: someI_ex) |
37 by (induction n) (auto simp: assms ASuc dest!: someI_ex) |
38 show ?thesis |
38 show ?thesis |
39 proof |
39 proof |
40 show "\<Inter>range A \<subseteq> S" |
40 show "\<Inter>range A \<subseteq> S" |
41 using \<open>\<And>n. A n \<subseteq> S\<close> by blast |
41 using \<open>\<And>n. A n \<subseteq> S\<close> by blast |
42 show "closed (INTER UNIV A)" |
42 show "closed (\<Inter>(A ` UNIV))" |
43 using clo by blast |
43 using clo by blast |
44 show "\<phi> (INTER UNIV A)" |
44 show "\<phi> (\<Inter>(A ` UNIV))" |
45 by (simp add: clo \<phi> sub) |
45 by (simp add: clo \<phi> sub) |
46 show "\<not> U \<subset> INTER UNIV A" if "U \<subseteq> S" "closed U" "\<phi> U" for U |
46 show "\<not> U \<subset> \<Inter>(A ` UNIV)" if "U \<subseteq> S" "closed U" "\<phi> U" for U |
47 proof - |
47 proof - |
48 have "\<exists>y. x \<notin> A y" if "x \<notin> U" and Usub: "U \<subseteq> (\<Inter>x. A x)" for x |
48 have "\<exists>y. x \<notin> A y" if "x \<notin> U" and Usub: "U \<subseteq> (\<Inter>x. A x)" for x |
49 proof - |
49 proof - |
50 obtain e where "e > 0" and e: "ball x e \<subseteq> -U" |
50 obtain e where "e > 0" and e: "ball x e \<subseteq> -U" |
51 using \<open>closed U\<close> \<open>x \<notin> U\<close> openE [of "-U"] by blast |
51 using \<open>closed U\<close> \<open>x \<notin> U\<close> openE [of "-U"] by blast |
52 moreover obtain K where K: "ball x e = UNION K B" |
52 moreover obtain K where K: "ball x e = \<Union>(B ` K)" |
53 using open_cov [of "ball x e"] by auto |
53 using open_cov [of "ball x e"] by auto |
54 ultimately have "UNION K B \<subseteq> -U" |
54 ultimately have "\<Union>(B ` K) \<subseteq> -U" |
55 by blast |
55 by blast |
56 have "K \<noteq> {}" |
56 have "K \<noteq> {}" |
57 using \<open>0 < e\<close> \<open>ball x e = UNION K B\<close> by auto |
57 using \<open>0 < e\<close> \<open>ball x e = \<Union>(B ` K)\<close> by auto |
58 then obtain n where "n \<in> K" "x \<in> B n" |
58 then obtain n where "n \<in> K" "x \<in> B n" |
59 by (metis K UN_E \<open>0 < e\<close> centre_in_ball) |
59 by (metis K UN_E \<open>0 < e\<close> centre_in_ball) |
60 then have "U \<inter> B n = {}" |
60 then have "U \<inter> B n = {}" |
61 using K e by auto |
61 using K e by auto |
62 show ?thesis |
62 show ?thesis |
87 "\<And>U. \<lbrakk>U \<subseteq> S; closed U; U \<noteq> {}; \<phi> U\<rbrakk> \<Longrightarrow> \<not> (U \<subset> T)" |
87 "\<And>U. \<lbrakk>U \<subseteq> S; closed U; U \<noteq> {}; \<phi> U\<rbrakk> \<Longrightarrow> \<not> (U \<subset> T)" |
88 proof%unimportant (rule Brouwer_reduction_theorem_gen [of S "\<lambda>T. T \<noteq> {} \<and> T \<subseteq> S \<and> \<phi> T"]) |
88 proof%unimportant (rule Brouwer_reduction_theorem_gen [of S "\<lambda>T. T \<noteq> {} \<and> T \<subseteq> S \<and> \<phi> T"]) |
89 fix F |
89 fix F |
90 assume cloF: "\<And>n. closed (F n)" |
90 assume cloF: "\<And>n. closed (F n)" |
91 and F: "\<And>n. F n \<noteq> {} \<and> F n \<subseteq> S \<and> \<phi> (F n)" and Fsub: "\<And>n. F (Suc n) \<subseteq> F n" |
91 and F: "\<And>n. F n \<noteq> {} \<and> F n \<subseteq> S \<and> \<phi> (F n)" and Fsub: "\<And>n. F (Suc n) \<subseteq> F n" |
92 show "INTER UNIV F \<noteq> {} \<and> INTER UNIV F \<subseteq> S \<and> \<phi> (INTER UNIV F)" |
92 show "\<Inter>(F ` UNIV) \<noteq> {} \<and> \<Inter>(F ` UNIV) \<subseteq> S \<and> \<phi> (\<Inter>(F ` UNIV))" |
93 proof (intro conjI) |
93 proof (intro conjI) |
94 show "INTER UNIV F \<noteq> {}" |
94 show "\<Inter>(F ` UNIV) \<noteq> {}" |
95 apply (rule compact_nest) |
95 apply (rule compact_nest) |
96 apply (meson F cloF \<open>compact S\<close> seq_compact_closed_subset seq_compact_eq_compact) |
96 apply (meson F cloF \<open>compact S\<close> seq_compact_closed_subset seq_compact_eq_compact) |
97 apply (simp add: F) |
97 apply (simp add: F) |
98 by (meson Fsub lift_Suc_antimono_le) |
98 by (meson Fsub lift_Suc_antimono_le) |
99 show " INTER UNIV F \<subseteq> S" |
99 show " \<Inter>(F ` UNIV) \<subseteq> S" |
100 using F by blast |
100 using F by blast |
101 show "\<phi> (INTER UNIV F)" |
101 show "\<phi> (\<Inter>(F ` UNIV))" |
102 by (metis F Fsub \<phi> \<open>compact S\<close> cloF closed_Int_compact inf.orderE) |
102 by (metis F Fsub \<phi> \<open>compact S\<close> cloF closed_Int_compact inf.orderE) |
103 qed |
103 qed |
104 next |
104 next |
105 show "S \<noteq> {} \<and> S \<subseteq> S \<and> \<phi> S" |
105 show "S \<noteq> {} \<and> S \<subseteq> S \<and> \<phi> S" |
106 by (simp add: assms) |
106 by (simp add: assms) |
1678 proof (rule Brouwer_reduction_theorem_gen [of "{0..1}" \<phi>]) |
1678 proof (rule Brouwer_reduction_theorem_gen [of "{0..1}" \<phi>]) |
1679 have *: "{x<..<y} \<inter> {0..1} = {x<..<y}" if "0 \<le> x" "y \<le> 1" "x \<le> y" for x y::real |
1679 have *: "{x<..<y} \<inter> {0..1} = {x<..<y}" if "0 \<le> x" "y \<le> 1" "x \<le> y" for x y::real |
1680 using that by auto |
1680 using that by auto |
1681 show "\<phi> {0..1}" |
1681 show "\<phi> {0..1}" |
1682 by (auto simp: \<phi>_def open_segment_eq_real_ivl *) |
1682 by (auto simp: \<phi>_def open_segment_eq_real_ivl *) |
1683 show "\<phi> (INTER UNIV F)" |
1683 show "\<phi> (\<Inter>(F ` UNIV))" |
1684 if "\<And>n. closed (F n)" and \<phi>: "\<And>n. \<phi> (F n)" and Fsub: "\<And>n. F (Suc n) \<subseteq> F n" for F |
1684 if "\<And>n. closed (F n)" and \<phi>: "\<And>n. \<phi> (F n)" and Fsub: "\<And>n. F (Suc n) \<subseteq> F n" for F |
1685 proof - |
1685 proof - |
1686 have F01: "\<And>n. F n \<subseteq> {0..1} \<and> 0 \<in> F n \<and> 1 \<in> F n" |
1686 have F01: "\<And>n. F n \<subseteq> {0..1} \<and> 0 \<in> F n \<and> 1 \<in> F n" |
1687 and peq: "\<And>n x y. \<lbrakk>x \<in> F n; y \<in> F n; open_segment x y \<inter> F n = {}\<rbrakk> \<Longrightarrow> p x = p y" |
1687 and peq: "\<And>n x y. \<lbrakk>x \<in> F n; y \<in> F n; open_segment x y \<inter> F n = {}\<rbrakk> \<Longrightarrow> p x = p y" |
1688 by (metis \<phi> \<phi>_def)+ |
1688 by (metis \<phi> \<phi>_def)+ |
1704 and wxe: "norm(w - x) < e" and zye: "norm(z - y) < e" |
1704 and wxe: "norm(w - x) < e" and zye: "norm(z - y) < e" |
1705 apply (rule_tac w = "x + (min e (y - x) / 3)" and z = "y - (min e (y - x) / 3)" in that) |
1705 apply (rule_tac w = "x + (min e (y - x) / 3)" and z = "y - (min e (y - x) / 3)" in that) |
1706 using minxy \<open>0 < e\<close> less by simp_all |
1706 using minxy \<open>0 < e\<close> less by simp_all |
1707 have Fclo: "\<And>T. T \<in> range F \<Longrightarrow> closed T" |
1707 have Fclo: "\<And>T. T \<in> range F \<Longrightarrow> closed T" |
1708 by (metis \<open>\<And>n. closed (F n)\<close> image_iff) |
1708 by (metis \<open>\<And>n. closed (F n)\<close> image_iff) |
1709 have eq: "{w..z} \<inter> INTER UNIV F = {}" |
1709 have eq: "{w..z} \<inter> \<Inter>(F ` UNIV) = {}" |
1710 using less w z apply (auto simp: open_segment_eq_real_ivl) |
1710 using less w z apply (auto simp: open_segment_eq_real_ivl) |
1711 by (metis (no_types, hide_lams) INT_I IntI empty_iff greaterThanLessThan_iff not_le order.trans) |
1711 by (metis (no_types, hide_lams) INT_I IntI empty_iff greaterThanLessThan_iff not_le order.trans) |
1712 then obtain K where "finite K" and K: "{w..z} \<inter> (\<Inter> (F ` K)) = {}" |
1712 then obtain K where "finite K" and K: "{w..z} \<inter> (\<Inter> (F ` K)) = {}" |
1713 by (metis finite_subset_image compact_imp_fip [OF compact_interval Fclo]) |
1713 by (metis finite_subset_image compact_imp_fip [OF compact_interval Fclo]) |
1714 then have "K \<noteq> {}" |
1714 then have "K \<noteq> {}" |
1715 using \<open>w < z\<close> \<open>{w..z} \<inter> INTER K F = {}\<close> by auto |
1715 using \<open>w < z\<close> \<open>{w..z} \<inter> \<Inter>(F ` K) = {}\<close> by auto |
1716 define n where "n \<equiv> Max K" |
1716 define n where "n \<equiv> Max K" |
1717 have "n \<in> K" unfolding n_def by (metis \<open>K \<noteq> {}\<close> \<open>finite K\<close> Max_in) |
1717 have "n \<in> K" unfolding n_def by (metis \<open>K \<noteq> {}\<close> \<open>finite K\<close> Max_in) |
1718 have "F n \<subseteq> \<Inter> (F ` K)" |
1718 have "F n \<subseteq> \<Inter> (F ` K)" |
1719 unfolding n_def by (metis Fsub Max_ge \<open>K \<noteq> {}\<close> \<open>finite K\<close> cINF_greatest lift_Suc_antimono_le) |
1719 unfolding n_def by (metis Fsub Max_ge \<open>K \<noteq> {}\<close> \<open>finite K\<close> cINF_greatest lift_Suc_antimono_le) |
1720 with K have wzF_null: "{w..z} \<inter> F n = {}" |
1720 with K have wzF_null: "{w..z} \<inter> F n = {}" |