src/HOL/Analysis/Abstract_Topology_2.thy
changeset 78037 37894dff0111
parent 77943 ffdad62bc235
child 78200 264f2b69d09c
equal deleted inserted replaced
78036:2594319ad9ee 78037:37894dff0111
  1637 lemma homeomorphic_maps_real_shrink:
  1637 lemma homeomorphic_maps_real_shrink:
  1638   "homeomorphic_maps euclideanreal (subtopology euclideanreal {-1<..<1}) 
  1638   "homeomorphic_maps euclideanreal (subtopology euclideanreal {-1<..<1}) 
  1639      (\<lambda>x. x / (1 + \<bar>x\<bar>))  (\<lambda>y. y / (1 - \<bar>y\<bar>))"
  1639      (\<lambda>x. x / (1 + \<bar>x\<bar>))  (\<lambda>y. y / (1 - \<bar>y\<bar>))"
  1640   by (force simp: homeomorphic_maps_def continuous_map_real_shrink continuous_on_real_grow divide_simps)
  1640   by (force simp: homeomorphic_maps_def continuous_map_real_shrink continuous_on_real_grow divide_simps)
  1641 
  1641 
       
  1642 lemma real_shrink_Galois:
       
  1643   fixes x::real
       
  1644   shows "(x / (1 + \<bar>x\<bar>) = y) \<longleftrightarrow> (\<bar>y\<bar> < 1 \<and> y / (1 - \<bar>y\<bar>) = x)"
       
  1645   using real_grow_shrink by (fastforce simp add: distrib_left)
       
  1646 
       
  1647 lemma real_shrink_lt:
       
  1648   fixes x::real
       
  1649   shows "x / (1 + \<bar>x\<bar>) < y / (1 + \<bar>y\<bar>) \<longleftrightarrow> x < y"
       
  1650   using zero_less_mult_iff [of x y] by (auto simp: field_simps abs_if not_less)
       
  1651 
       
  1652 lemma real_shrink_le:
       
  1653   fixes x::real
       
  1654   shows "x / (1 + \<bar>x\<bar>) \<le> y / (1 + \<bar>y\<bar>) \<longleftrightarrow> x \<le> y"
       
  1655   by (meson linorder_not_le real_shrink_lt)
       
  1656 
       
  1657 lemma real_shrink_grow:
       
  1658   fixes x::real
       
  1659   shows "\<bar>x\<bar> < 1 \<Longrightarrow> x / (1 - \<bar>x\<bar>) / (1 + \<bar>x / (1 - \<bar>x\<bar>)\<bar>) = x"
       
  1660   using real_shrink_Galois by blast
       
  1661 
       
  1662 lemma continuous_shrink:
       
  1663   "continuous_on UNIV (\<lambda>x::real. x / (1 + \<bar>x\<bar>))"
       
  1664   by (intro continuous_intros) auto
       
  1665 
       
  1666 lemma strict_mono_shrink:
       
  1667   "strict_mono (\<lambda>x::real. x / (1 + \<bar>x\<bar>))"
       
  1668   by (simp add: monotoneI real_shrink_lt)
       
  1669 
       
  1670 lemma shrink_range: "(\<lambda>x::real. x / (1 + \<bar>x\<bar>)) ` S \<subseteq> {-1<..<1}"
       
  1671   by (auto simp: divide_simps)
       
  1672 
       
  1673 text \<open>Note: connected sets of real numbers are the same thing as intervals\<close>
       
  1674 lemma connected_shrink:
       
  1675   fixes S :: "real set"
       
  1676   shows "connected ((\<lambda>x. x / (1 + \<bar>x\<bar>)) ` S) \<longleftrightarrow> connected S"  (is "?lhs = ?rhs")
       
  1677 proof 
       
  1678   assume "?lhs"
       
  1679   then have "connected ((\<lambda>x. x / (1 - \<bar>x\<bar>)) ` (\<lambda>x. x / (1 + \<bar>x\<bar>)) ` S)"
       
  1680     by (metis continuous_on_real_grow shrink_range connected_continuous_image 
       
  1681                continuous_on_subset)
       
  1682   then show "?rhs"
       
  1683     using real_grow_shrink by (force simp add: image_comp)
       
  1684 next
       
  1685   assume ?rhs
       
  1686   then show ?lhs
       
  1687     using connected_continuous_image 
       
  1688     by (metis continuous_on_subset continuous_shrink subset_UNIV)
       
  1689 qed
       
  1690 
  1642 end
  1691 end