|
1 | 1 | /-
|
2 | 2 | Copyright (c) 2021 Sébastien Gouëzel. All rights reserved.
|
3 | 3 | Released under Apache 2.0 license as described in the file LICENSE.
|
4 |
| -Authors: Sébastien Gouëzel |
| 4 | +Authors: Sébastien Gouëzel, Yaël Dillies |
5 | 5 | -/
|
6 | 6 | import analysis.normed.group.pointwise
|
7 | 7 | import analysis.normed.group.add_torsor
|
@@ -95,13 +95,104 @@ by rw [vadd_ball, vadd_eq_add, add_zero]
|
95 | 95 | lemma vadd_closed_ball_zero (x : E) (r : ℝ) : x +ᵥ closed_ball 0 r = closed_ball x r :=
|
96 | 96 | by rw [vadd_closed_ball, vadd_eq_add, add_zero]
|
97 | 97 |
|
98 |
| -variables [normed_space ℝ E] |
| 98 | +variables [normed_space ℝ E] {x y z : E} {δ ε : ℝ} |
99 | 99 |
|
100 | 100 | /-- In a real normed space, the image of the unit ball under scalar multiplication by a positive
|
101 | 101 | constant `r` is the ball of radius `r`. -/
|
102 | 102 | lemma smul_unit_ball_of_pos {r : ℝ} (hr : 0 < r) : r • ball 0 1 = ball (0 : E) r :=
|
103 | 103 | by rw [smul_unit_ball hr.ne', real.norm_of_nonneg hr.le]
|
104 | 104 |
|
| 105 | +-- This is also true for `ℚ`-normed spaces |
| 106 | +lemma exists_dist_eq (x z : E) {a b : ℝ} (ha : 0 ≤ a) (hb : 0 ≤ b) (hab : a + b = 1) : |
| 107 | + ∃ y, dist x y = b * dist x z ∧ dist y z = a * dist x z := |
| 108 | +begin |
| 109 | + use a • x + b • z, |
| 110 | + nth_rewrite 0 [←one_smul ℝ x], |
| 111 | + nth_rewrite 3 [←one_smul ℝ z], |
| 112 | + simp [dist_eq_norm, ←hab, add_smul, ←smul_sub, norm_smul_of_nonneg, ha, hb], |
| 113 | +end |
| 114 | + |
| 115 | +lemma exists_dist_le_le (hδ : 0 ≤ δ) (hε : 0 ≤ ε) (h : dist x z ≤ ε + δ) : |
| 116 | + ∃ y, dist x y ≤ δ ∧ dist y z ≤ ε := |
| 117 | +begin |
| 118 | + obtain rfl | hε' := hε.eq_or_lt, |
| 119 | + { exact ⟨z, by rwa zero_add at h, (dist_self _).le⟩ }, |
| 120 | + have hεδ := add_pos_of_pos_of_nonneg hε' hδ, |
| 121 | + refine (exists_dist_eq x z (div_nonneg hε $ add_nonneg hε hδ) (div_nonneg hδ $ add_nonneg hε hδ) $ |
| 122 | + by rw [←add_div, div_self hεδ.ne']).imp (λ y hy, _), |
| 123 | + rw [hy.1, hy.2, div_mul_comm', div_mul_comm' ε], |
| 124 | + rw ←div_le_one hεδ at h, |
| 125 | + exact ⟨mul_le_of_le_one_left hδ h, mul_le_of_le_one_left hε h⟩, |
| 126 | +end |
| 127 | + |
| 128 | +-- This is also true for `ℚ`-normed spaces |
| 129 | +lemma exists_dist_le_lt (hδ : 0 ≤ δ) (hε : 0 < ε) (h : dist x z < ε + δ) : |
| 130 | + ∃ y, dist x y ≤ δ ∧ dist y z < ε := |
| 131 | +begin |
| 132 | + refine (exists_dist_eq x z (div_nonneg hε.le $ add_nonneg hε.le hδ) (div_nonneg hδ $ add_nonneg |
| 133 | + hε.le hδ) $ by rw [←add_div, div_self (add_pos_of_pos_of_nonneg hε hδ).ne']).imp (λ y hy, _), |
| 134 | + rw [hy.1, hy.2, div_mul_comm', div_mul_comm' ε], |
| 135 | + rw ←div_lt_one (add_pos_of_pos_of_nonneg hε hδ) at h, |
| 136 | + exact ⟨mul_le_of_le_one_left hδ h.le, mul_lt_of_lt_one_left hε h⟩, |
| 137 | +end |
| 138 | + |
| 139 | +-- This is also true for `ℚ`-normed spaces |
| 140 | +lemma exists_dist_lt_le (hδ : 0 < δ) (hε : 0 ≤ ε) (h : dist x z < ε + δ) : |
| 141 | + ∃ y, dist x y < δ ∧ dist y z ≤ ε := |
| 142 | +begin |
| 143 | + obtain ⟨y, yz, xy⟩ := exists_dist_le_lt hε hδ |
| 144 | + (show dist z x < δ + ε, by simpa only [dist_comm, add_comm] using h), |
| 145 | + exact ⟨y, by simp [dist_comm x y, dist_comm y z, *]⟩, |
| 146 | +end |
| 147 | + |
| 148 | +-- This is also true for `ℚ`-normed spaces |
| 149 | +lemma exists_dist_lt_lt (hδ : 0 < δ) (hε : 0 < ε) (h : dist x z < ε + δ) : |
| 150 | + ∃ y, dist x y < δ ∧ dist y z < ε := |
| 151 | +begin |
| 152 | + refine (exists_dist_eq x z (div_nonneg hε.le $ add_nonneg hε.le hδ.le) (div_nonneg hδ.le $ |
| 153 | + add_nonneg hε.le hδ.le) $ by rw [←add_div, div_self (add_pos hε hδ).ne']).imp (λ y hy, _), |
| 154 | + rw [hy.1, hy.2, div_mul_comm', div_mul_comm' ε], |
| 155 | + rw ←div_lt_one (add_pos hε hδ) at h, |
| 156 | + exact ⟨mul_lt_of_lt_one_left hδ h, mul_lt_of_lt_one_left hε h⟩, |
| 157 | +end |
| 158 | + |
| 159 | +-- This is also true for `ℚ`-normed spaces |
| 160 | +lemma disjoint_ball_ball_iff (hδ : 0 < δ) (hε : 0 < ε) : |
| 161 | + disjoint (ball x δ) (ball y ε) ↔ δ + ε ≤ dist x y := |
| 162 | +begin |
| 163 | + refine ⟨λ h, le_of_not_lt $ λ hxy, _, ball_disjoint_ball⟩, |
| 164 | + rw add_comm at hxy, |
| 165 | + obtain ⟨z, hxz, hzy⟩ := exists_dist_lt_lt hδ hε hxy, |
| 166 | + rw dist_comm at hxz, |
| 167 | + exact h ⟨hxz, hzy⟩, |
| 168 | +end |
| 169 | + |
| 170 | +-- This is also true for `ℚ`-normed spaces |
| 171 | +lemma disjoint_ball_closed_ball_iff (hδ : 0 < δ) (hε : 0 ≤ ε) : |
| 172 | + disjoint (ball x δ) (closed_ball y ε) ↔ δ + ε ≤ dist x y := |
| 173 | +begin |
| 174 | + refine ⟨λ h, le_of_not_lt $ λ hxy, _, ball_disjoint_closed_ball⟩, |
| 175 | + rw add_comm at hxy, |
| 176 | + obtain ⟨z, hxz, hzy⟩ := exists_dist_lt_le hδ hε hxy, |
| 177 | + rw dist_comm at hxz, |
| 178 | + exact h ⟨hxz, hzy⟩, |
| 179 | +end |
| 180 | + |
| 181 | +-- This is also true for `ℚ`-normed spaces |
| 182 | +lemma disjoint_closed_ball_ball_iff (hδ : 0 ≤ δ) (hε : 0 < ε) : |
| 183 | + disjoint (closed_ball x δ) (ball y ε) ↔ δ + ε ≤ dist x y := |
| 184 | +by rw [disjoint.comm, disjoint_ball_closed_ball_iff hε hδ, add_comm, dist_comm]; apply_instance |
| 185 | + |
| 186 | +lemma disjoint_closed_ball_closed_ball_iff (hδ : 0 ≤ δ) (hε : 0 ≤ ε) : |
| 187 | + disjoint (closed_ball x δ) (closed_ball y ε) ↔ δ + ε < dist x y := |
| 188 | +begin |
| 189 | + refine ⟨λ h, lt_of_not_ge $ λ hxy, _, closed_ball_disjoint_closed_ball⟩, |
| 190 | + rw add_comm at hxy, |
| 191 | + obtain ⟨z, hxz, hzy⟩ := exists_dist_le_le hδ hε hxy, |
| 192 | + rw dist_comm at hxz, |
| 193 | + exact h ⟨hxz, hzy⟩, |
| 194 | +end |
| 195 | + |
105 | 196 | end semi_normed_group
|
106 | 197 |
|
107 | 198 | section normed_group
|
|
0 commit comments