src/HOL/Analysis/Elementary_Normed_Spaces.thy
changeset 73791 e10d530f157a
parent 72643 6b3599ff0687
child 76724 7ff71bdcf731
equal deleted inserted replaced
73790:370ce138d1bd 73791:e10d530f157a
   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