src/HOL/Library/Topology_Euclidean_Space.thy
changeset 31282 b98cbfabe824
parent 31281 b4d4dbc5b04f
child 31286 424874813840
equal deleted inserted replaced
31281:b4d4dbc5b04f 31282:b98cbfabe824
  3789 lemma continuous_on_vec1_range:
  3789 lemma continuous_on_vec1_range:
  3790  " continuous_on s (vec1 o f) \<longleftrightarrow> (\<forall>x \<in> s. \<forall>e>0. \<exists>d>0. (\<forall>x' \<in> s. norm(x' - x) < d --> abs(f x' - f x) < e))"
  3790  " continuous_on s (vec1 o f) \<longleftrightarrow> (\<forall>x \<in> s. \<forall>e>0. \<exists>d>0. (\<forall>x' \<in> s. norm(x' - x) < d --> abs(f x' - f x) < e))"
  3791   unfolding continuous_on_def apply (simp del: dist_sym) unfolding dist_vec1 unfolding dist_def ..
  3791   unfolding continuous_on_def apply (simp del: dist_sym) unfolding dist_vec1 unfolding dist_def ..
  3792 
  3792 
  3793 lemma continuous_at_vec1_norm:
  3793 lemma continuous_at_vec1_norm:
  3794  "\<forall>x. continuous (at x) (vec1 o norm)"
  3794  "continuous (at x) (vec1 o norm)"
  3795   unfolding continuous_at_vec1_range using real_abs_sub_norm order_le_less_trans by blast
  3795   unfolding continuous_at_vec1_range using real_abs_sub_norm order_le_less_trans by blast
  3796 
  3796 
  3797 lemma continuous_on_vec1_norm:
  3797 lemma continuous_on_vec1_norm:
  3798  "\<forall>s. continuous_on s (vec1 o norm)"
  3798  "continuous_on s (vec1 o norm)"
  3799 unfolding continuous_on_vec1_range norm_vec1[THEN sym] by (metis norm_vec1 order_le_less_trans real_abs_sub_norm)
  3799 unfolding continuous_on_vec1_range norm_vec1[THEN sym] by (metis norm_vec1 order_le_less_trans real_abs_sub_norm)
  3800 
  3800 
  3801 lemma continuous_at_vec1_component:
  3801 lemma continuous_at_vec1_component:
  3802   shows "continuous (at (a::real^'a::finite)) (\<lambda> x. vec1(x$i))"
  3802   shows "continuous (at (a::real^'a::finite)) (\<lambda> x. vec1(x$i))"
  3803 proof-
  3803 proof-
  3858   using compact_attains_sup[of "f ` s"]
  3858   using compact_attains_sup[of "f ` s"]
  3859   using compact_continuous_image[of s "vec1 \<circ> f"] unfolding image_compose by auto
  3859   using compact_continuous_image[of s "vec1 \<circ> f"] unfolding image_compose by auto
  3860 
  3860 
  3861 lemma continuous_attains_inf:
  3861 lemma continuous_attains_inf:
  3862  "compact s \<Longrightarrow> s \<noteq> {} \<Longrightarrow> continuous_on s (vec1 o f)
  3862  "compact s \<Longrightarrow> s \<noteq> {} \<Longrightarrow> continuous_on s (vec1 o f)
  3863         ==> (\<exists>x \<in> s. \<forall>y \<in> s. f x \<le> f y)"
  3863         \<Longrightarrow> (\<exists>x \<in> s. \<forall>y \<in> s. f x \<le> f y)"
  3864   using compact_attains_inf[of "f ` s"]
  3864   using compact_attains_inf[of "f ` s"]
  3865   using compact_continuous_image[of s "vec1 \<circ> f"] unfolding image_compose by auto
  3865   using compact_continuous_image[of s "vec1 \<circ> f"] unfolding image_compose by auto
  3866 
  3866 
  3867 lemma distance_attains_sup:
  3867 lemma distance_attains_sup:
  3868   assumes "compact s" "s \<noteq> {}"
  3868   assumes "compact s" "s \<noteq> {}"
  4297   by (auto simp add: expand_set_eq vector_less_def vector_less_eq_def)
  4297   by (auto simp add: expand_set_eq vector_less_def vector_less_eq_def)
  4298 
  4298 
  4299 lemma mem_interval: fixes a :: "'a::ord^'n::finite" shows
  4299 lemma mem_interval: fixes a :: "'a::ord^'n::finite" shows
  4300   "x \<in> {a<..<b} \<longleftrightarrow> (\<forall>i. a$i < x$i \<and> x$i < b$i)"
  4300   "x \<in> {a<..<b} \<longleftrightarrow> (\<forall>i. a$i < x$i \<and> x$i < b$i)"
  4301   "x \<in> {a .. b} \<longleftrightarrow> (\<forall>i. a$i \<le> x$i \<and> x$i \<le> b$i)"
  4301   "x \<in> {a .. b} \<longleftrightarrow> (\<forall>i. a$i \<le> x$i \<and> x$i \<le> b$i)"
  4302   using interval[of a b]
  4302   using interval[of a b] by(auto simp add: expand_set_eq vector_less_def vector_less_eq_def)
  4303   by(auto simp add: expand_set_eq vector_less_def vector_less_eq_def)
  4303 
       
  4304 lemma mem_interval_1: fixes x :: "real^1" shows
       
  4305  "(x \<in> {a .. b} \<longleftrightarrow> dest_vec1 a \<le> dest_vec1 x \<and> dest_vec1 x \<le> dest_vec1 b)"
       
  4306  "(x \<in> {a<..<b} \<longleftrightarrow> dest_vec1 a < dest_vec1 x \<and> dest_vec1 x < dest_vec1 b)"
       
  4307 by(simp_all add: Cart_eq vector_less_def vector_less_eq_def dest_vec1_def forall_1)
  4304 
  4308 
  4305 lemma interval_eq_empty: fixes a :: "real^'n::finite" shows
  4309 lemma interval_eq_empty: fixes a :: "real^'n::finite" shows
  4306  "({a <..< b} = {} \<longleftrightarrow> (\<exists>i. b$i \<le> a$i))" (is ?th1) and
  4310  "({a <..< b} = {} \<longleftrightarrow> (\<exists>i. b$i \<le> a$i))" (is ?th1) and
  4307  "({a  ..  b} = {} \<longleftrightarrow> (\<exists>i. b$i < a$i))" (is ?th2)
  4311  "({a  ..  b} = {} \<longleftrightarrow> (\<exists>i. b$i < a$i))" (is ?th2)
  4308 proof-
  4312 proof-
  4354  "{a .. a} = {a} \<and> {a<..<a} = {}"
  4358  "{a .. a} = {a} \<and> {a<..<a} = {}"
  4355 apply(auto simp add: expand_set_eq vector_less_def vector_less_eq_def Cart_eq)
  4359 apply(auto simp add: expand_set_eq vector_less_def vector_less_eq_def Cart_eq)
  4356 apply (simp add: order_eq_iff)
  4360 apply (simp add: order_eq_iff)
  4357 apply (auto simp add: not_less less_imp_le)
  4361 apply (auto simp add: not_less less_imp_le)
  4358 done
  4362 done
  4359 
       
  4360 
  4363 
  4361 lemma interval_open_subset_closed:  fixes a :: "'a::preorder^'n::finite" shows
  4364 lemma interval_open_subset_closed:  fixes a :: "'a::preorder^'n::finite" shows
  4362  "{a<..<b} \<subseteq> {a .. b}"
  4365  "{a<..<b} \<subseteq> {a .. b}"
  4363 proof(simp add: subset_eq, rule)
  4366 proof(simp add: subset_eq, rule)
  4364   fix x
  4367   fix x
  5425       by(auto simp add: neg_le_divide_eq neg_divide_le_eq real_mult_commute diff_le_iff)
  5428       by(auto simp add: neg_le_divide_eq neg_divide_le_eq real_mult_commute diff_le_iff)
  5426   }
  5429   }
  5427   ultimately show ?thesis using False by auto
  5430   ultimately show ?thesis using False by auto
  5428 qed
  5431 qed
  5429 
  5432 
  5430 subsection{* Banach fixed point theorem (not really topological...)                    *}
  5433 lemma image_smult_interval:"(\<lambda>x. m *s (x::real^'n::finite)) ` {a..b} =
       
  5434   (if {a..b} = {} then {} else if 0 \<le> m then {m *s a..m *s b} else {m *s b..m *s a})"
       
  5435   using image_affinity_interval[of m 0 a b] by auto
       
  5436 
       
  5437 subsection{* Banach fixed point theorem (not really topological...) *}
  5431 
  5438 
  5432 lemma banach_fix:
  5439 lemma banach_fix:
  5433   assumes s:"complete s" "s \<noteq> {}" and c:"0 \<le> c" "c < 1" and f:"(f ` s) \<subseteq> s" and
  5440   assumes s:"complete s" "s \<noteq> {}" and c:"0 \<le> c" "c < 1" and f:"(f ` s) \<subseteq> s" and
  5434           lipschitz:"\<forall>x\<in>s. \<forall>y\<in>s. dist (f x) (f y) \<le> c * dist x y"
  5441           lipschitz:"\<forall>x\<in>s. \<forall>y\<in>s. dist (f x) (f y) \<le> c * dist x y"
  5435   shows "\<exists>! x\<in>s. (f x = x)"
  5442   shows "\<exists>! x\<in>s. (f x = x)"