equal
deleted
inserted
replaced
877 assumes incl: "{c..d} \<subseteq> {a..b::'a::ordered_euclidean_space}" |
877 assumes incl: "{c..d} \<subseteq> {a..b::'a::ordered_euclidean_space}" |
878 and nonempty: "{c..d} \<noteq> {}" |
878 and nonempty: "{c..d} \<noteq> {}" |
879 obtains p where "p division_of {a..b}" "{c..d} \<in> p" |
879 obtains p where "p division_of {a..b}" "{c..d} \<in> p" |
880 proof |
880 proof |
881 let ?B = "\<lambda>f::'a\<Rightarrow>'a \<times> 'a. {(\<Sum>i\<in>Basis. (fst (f i) \<bullet> i) *\<^sub>R i) .. (\<Sum>i\<in>Basis. (snd (f i) \<bullet> i) *\<^sub>R i)}" |
881 let ?B = "\<lambda>f::'a\<Rightarrow>'a \<times> 'a. {(\<Sum>i\<in>Basis. (fst (f i) \<bullet> i) *\<^sub>R i) .. (\<Sum>i\<in>Basis. (snd (f i) \<bullet> i) *\<^sub>R i)}" |
882 def p \<equiv> "?B ` (Basis \<rightarrow>\<^isub>E {(a, c), (c, d), (d, b)})" |
882 def p \<equiv> "?B ` (Basis \<rightarrow>\<^sub>E {(a, c), (c, d), (d, b)})" |
883 |
883 |
884 show "{c .. d} \<in> p" |
884 show "{c .. d} \<in> p" |
885 unfolding p_def |
885 unfolding p_def |
886 by (auto simp add: interval_eq_empty eucl_le[where 'a='a] |
886 by (auto simp add: interval_eq_empty eucl_le[where 'a='a] |
887 intro!: image_eqI[where x="\<lambda>(i::'a)\<in>Basis. (c, d)"]) |
887 intro!: image_eqI[where x="\<lambda>(i::'a)\<in>Basis. (c, d)"]) |
898 proof (rule division_ofI) |
898 proof (rule division_ofI) |
899 show "finite p" unfolding p_def by (auto intro!: finite_PiE) |
899 show "finite p" unfolding p_def by (auto intro!: finite_PiE) |
900 { |
900 { |
901 fix k |
901 fix k |
902 assume "k \<in> p" |
902 assume "k \<in> p" |
903 then obtain f where f: "f \<in> Basis \<rightarrow>\<^isub>E {(a, c), (c, d), (d, b)}" and k: "k = ?B f" |
903 then obtain f where f: "f \<in> Basis \<rightarrow>\<^sub>E {(a, c), (c, d), (d, b)}" and k: "k = ?B f" |
904 by (auto simp: p_def) |
904 by (auto simp: p_def) |
905 then show "\<exists>a b. k = {a..b}" by auto |
905 then show "\<exists>a b. k = {a..b}" by auto |
906 have "k \<subseteq> {a..b} \<and> k \<noteq> {}" |
906 have "k \<subseteq> {a..b} \<and> k \<noteq> {}" |
907 proof (simp add: k interval_eq_empty subset_interval not_less, safe) |
907 proof (simp add: k interval_eq_empty subset_interval not_less, safe) |
908 fix i :: 'a assume i: "i \<in> Basis" |
908 fix i :: 'a assume i: "i \<in> Basis" |
915 by (auto simp: subset_iff eucl_le[where 'a='a]) |
915 by (auto simp: subset_iff eucl_le[where 'a='a]) |
916 qed |
916 qed |
917 then show "k \<noteq> {}" "k \<subseteq> {a .. b}" by auto |
917 then show "k \<noteq> {}" "k \<subseteq> {a .. b}" by auto |
918 { |
918 { |
919 fix l assume "l \<in> p" |
919 fix l assume "l \<in> p" |
920 then obtain g where g: "g \<in> Basis \<rightarrow>\<^isub>E {(a, c), (c, d), (d, b)}" and l: "l = ?B g" |
920 then obtain g where g: "g \<in> Basis \<rightarrow>\<^sub>E {(a, c), (c, d), (d, b)}" and l: "l = ?B g" |
921 by (auto simp: p_def) |
921 by (auto simp: p_def) |
922 assume "l \<noteq> k" |
922 assume "l \<noteq> k" |
923 have "\<exists>i\<in>Basis. f i \<noteq> g i" |
923 have "\<exists>i\<in>Basis. f i \<noteq> g i" |
924 proof (rule ccontr) |
924 proof (rule ccontr) |
925 assume "\<not> (\<exists>i\<in>Basis. f i \<noteq> g i)" |
925 assume "\<not> (\<exists>i\<in>Basis. f i \<noteq> g i)" |
950 by (auto simp: eucl_le[where 'a='a]) |
950 by (auto simp: eucl_le[where 'a='a]) |
951 then show "\<exists>l. x \<bullet> i \<in> {fst l \<bullet> i .. snd l \<bullet> i} \<and> l \<in> {(a, c), (c, d), (d, b)}" |
951 then show "\<exists>l. x \<bullet> i \<in> {fst l \<bullet> i .. snd l \<bullet> i} \<and> l \<in> {(a, c), (c, d), (d, b)}" |
952 by auto |
952 by auto |
953 qed |
953 qed |
954 then guess f unfolding bchoice_iff .. note f = this |
954 then guess f unfolding bchoice_iff .. note f = this |
955 moreover then have "restrict f Basis \<in> Basis \<rightarrow>\<^isub>E {(a, c), (c, d), (d, b)}" |
955 moreover then have "restrict f Basis \<in> Basis \<rightarrow>\<^sub>E {(a, c), (c, d), (d, b)}" |
956 by auto |
956 by auto |
957 moreover from f have "x \<in> ?B (restrict f Basis)" |
957 moreover from f have "x \<in> ?B (restrict f Basis)" |
958 by (auto simp: mem_interval eucl_le[where 'a='a]) |
958 by (auto simp: mem_interval eucl_le[where 'a='a]) |
959 ultimately have "\<exists>k\<in>p. x \<in> k" |
959 ultimately have "\<exists>k\<in>p. x \<in> k" |
960 unfolding p_def by blast } |
960 unfolding p_def by blast } |