760 fixes S ::"'a::real_normed_vector set" |
760 fixes S ::"'a::real_normed_vector set" |
761 assumes "bounded S" "bounded T" |
761 assumes "bounded S" "bounded T" |
762 shows "bounded ((\<lambda>(x,y). x - y) ` (S \<times> T))" |
762 shows "bounded ((\<lambda>(x,y). x - y) ` (S \<times> T))" |
763 using bounded_minus_comp [of fst "S \<times> T" snd] assms |
763 using bounded_minus_comp [of fst "S \<times> T" snd] assms |
764 by (auto simp: split_def split: if_split_asm) |
764 by (auto simp: split_def split: if_split_asm) |
|
765 |
|
766 lemma bounded_sums: |
|
767 fixes S :: "'a::real_normed_vector set" |
|
768 assumes "bounded S" and "bounded T" |
|
769 shows "bounded (\<Union>x\<in> S. \<Union>y \<in> T. {x + y})" |
|
770 using assms by (simp add: bounded_iff) (meson norm_triangle_mono) |
|
771 |
|
772 lemma bounded_differences: |
|
773 fixes S :: "'a::real_normed_vector set" |
|
774 assumes "bounded S" and "bounded T" |
|
775 shows "bounded (\<Union>x\<in> S. \<Union>y \<in> T. {x - y})" |
|
776 using assms by (simp add: bounded_iff) (meson add_mono norm_triangle_le_diff) |
765 |
777 |
766 lemma not_bounded_UNIV[simp]: |
778 lemma not_bounded_UNIV[simp]: |
767 "\<not> bounded (UNIV :: 'a::{real_normed_vector, perfect_space} set)" |
779 "\<not> bounded (UNIV :: 'a::{real_normed_vector, perfect_space} set)" |
768 proof (auto simp: bounded_pos not_le) |
780 proof (auto simp: bounded_pos not_le) |
769 obtain x :: 'a where "x \<noteq> 0" |
781 obtain x :: 'a where "x \<noteq> 0" |
1290 using diff_conv_add_uminus by force |
1302 using diff_conv_add_uminus by force |
1291 then show ?thesis |
1303 then show ?thesis |
1292 using compact_sums[OF assms(1) compact_negations[OF assms(2)]] by auto |
1304 using compact_sums[OF assms(1) compact_negations[OF assms(2)]] by auto |
1293 qed |
1305 qed |
1294 |
1306 |
|
1307 lemma compact_sums': |
|
1308 fixes S :: "'a::real_normed_vector set" |
|
1309 assumes "compact S" and "compact T" |
|
1310 shows "compact (\<Union>x\<in> S. \<Union>y \<in> T. {x + y})" |
|
1311 proof - |
|
1312 have "(\<Union>x\<in>S. \<Union>y\<in>T. {x + y}) = {x + y |x y. x \<in> S \<and> y \<in> T}" |
|
1313 by blast |
|
1314 then show ?thesis |
|
1315 using compact_sums [OF assms] by simp |
|
1316 qed |
|
1317 |
|
1318 lemma compact_differences': |
|
1319 fixes S :: "'a::real_normed_vector set" |
|
1320 assumes "compact S" and "compact T" |
|
1321 shows "compact (\<Union>x\<in> S. \<Union>y \<in> T. {x - y})" |
|
1322 proof - |
|
1323 have "(\<Union>x\<in>S. \<Union>y\<in>T. {x - y}) = {x - y |x y. x \<in> S \<and> y \<in> T}" |
|
1324 by blast |
|
1325 then show ?thesis |
|
1326 using compact_differences [OF assms] by simp |
|
1327 qed |
|
1328 |
1295 lemma compact_translation: |
1329 lemma compact_translation: |
1296 "compact ((+) a ` s)" if "compact s" for s :: "'a::real_normed_vector set" |
1330 "compact ((+) a ` s)" if "compact s" for s :: "'a::real_normed_vector set" |
1297 proof - |
1331 proof - |
1298 have "{x + y |x y. x \<in> s \<and> y \<in> {a}} = (\<lambda>x. a + x) ` s" |
1332 have "{x + y |x y. x \<in> s \<and> y \<in> {a}} = (\<lambda>x. a + x) ` s" |
1299 by auto |
1333 by auto |