src/HOL/Analysis/Path_Connected.thy
changeset 73932 fd21b4a93043
parent 73795 8893e0ed263a
child 74007 df976eefcba0
equal deleted inserted replaced
73866:66bff50bc5f1 73932:fd21b4a93043
    53   shows "continuous_on A ((+) a \<circ> g) = continuous_on A g"
    53   shows "continuous_on A ((+) a \<circ> g) = continuous_on A g"
    54 proof -
    54 proof -
    55   have g: "g = (\<lambda>x. -a + x) \<circ> ((\<lambda>x. a + x) \<circ> g)"
    55   have g: "g = (\<lambda>x. -a + x) \<circ> ((\<lambda>x. a + x) \<circ> g)"
    56     by (rule ext) simp
    56     by (rule ext) simp
    57   show ?thesis
    57   show ?thesis
    58     by (metis (no_types, hide_lams) g continuous_on_compose homeomorphism_def homeomorphism_translation)
    58     by (metis (no_types, opaque_lifting) g continuous_on_compose homeomorphism_def homeomorphism_translation)
    59 qed
    59 qed
    60 
    60 
    61 lemma path_translation_eq:
    61 lemma path_translation_eq:
    62   fixes g :: "real \<Rightarrow> 'a :: real_normed_vector"
    62   fixes g :: "real \<Rightarrow> 'a :: real_normed_vector"
    63   shows "path((\<lambda>x. a + x) \<circ> g) = path g"
    63   shows "path((\<lambda>x. a + x) \<circ> g) = path g"
  2718       then have "norm ((x \<bullet> b) *\<^sub>R b) = norm x"
  2718       then have "norm ((x \<bullet> b) *\<^sub>R b) = norm x"
  2719         by simp
  2719         by simp
  2720       with b have "\<bar>x \<bullet> b\<bar> = norm x"
  2720       with b have "\<bar>x \<bullet> b\<bar> = norm x"
  2721         using norm_Basis by (simp add: b)
  2721         using norm_Basis by (simp add: b)
  2722       with xb show ?thesis
  2722       with xb show ?thesis
  2723         by (metis (mono_tags, hide_lams) abs_eq_iff abs_norm_cancel)
  2723         by (metis (mono_tags, opaque_lifting) abs_eq_iff abs_norm_cancel)
  2724     qed
  2724     qed
  2725     with \<open>r > 0\<close> b show "sphere 0 r = {r *\<^sub>R b, - r *\<^sub>R b}"
  2725     with \<open>r > 0\<close> b show "sphere 0 r = {r *\<^sub>R b, - r *\<^sub>R b}"
  2726       by (force simp: sphere_def dist_norm)
  2726       by (force simp: sphere_def dist_norm)
  2727     have "dist (r *\<^sub>R b) (- r *\<^sub>R b) = norm (r *\<^sub>R b + r *\<^sub>R b)"
  2727     have "dist (r *\<^sub>R b) (- r *\<^sub>R b) = norm (r *\<^sub>R b + r *\<^sub>R b)"
  2728       by (simp add: dist_norm)
  2728       by (simp add: dist_norm)
  3600   using inside_inside union_with_outside by fastforce
  3600   using inside_inside union_with_outside by fastforce
  3601 
  3601 
  3602 lemma inside_outside_intersect_connected:
  3602 lemma inside_outside_intersect_connected:
  3603       "\<lbrakk>connected T; inside S \<inter> T \<noteq> {}; outside S \<inter> T \<noteq> {}\<rbrakk> \<Longrightarrow> S \<inter> T \<noteq> {}"
  3603       "\<lbrakk>connected T; inside S \<inter> T \<noteq> {}; outside S \<inter> T \<noteq> {}\<rbrakk> \<Longrightarrow> S \<inter> T \<noteq> {}"
  3604   apply (simp add: inside_def outside_def ex_in_conv [symmetric] disjoint_eq_subset_Compl, clarify)
  3604   apply (simp add: inside_def outside_def ex_in_conv [symmetric] disjoint_eq_subset_Compl, clarify)
  3605   by (metis (no_types, hide_lams) Compl_anti_mono connected_component_eq connected_component_maximal contra_subsetD double_compl)
  3605   by (metis (no_types, opaque_lifting) Compl_anti_mono connected_component_eq connected_component_maximal contra_subsetD double_compl)
  3606 
  3606 
  3607 lemma outside_bounded_nonempty:
  3607 lemma outside_bounded_nonempty:
  3608   fixes S :: "'a :: {real_normed_vector, perfect_space} set"
  3608   fixes S :: "'a :: {real_normed_vector, perfect_space} set"
  3609     assumes "bounded S" shows "outside S \<noteq> {}"
  3609     assumes "bounded S" shows "outside S \<noteq> {}"
  3610   by (metis (no_types, lifting) Collect_empty_eq Collect_mem_eq Compl_eq_Diff_UNIV Diff_cancel
  3610   by (metis (no_types, lifting) Collect_empty_eq Collect_mem_eq Compl_eq_Diff_UNIV Diff_cancel