Skip to content

Commit e0312d3

Browse files
committed
feat: link Dilation to Isometry and Homeomorph (#9980)
1 parent 1fec3c4 commit e0312d3

File tree

2 files changed

+58
-1
lines changed

2 files changed

+58
-1
lines changed

Mathlib/Topology/MetricSpace/Dilation.lean

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,9 @@ Released under Apache 2.0 license as described in the file LICENSE.
44
Dilations of emetric and metric spaces
55
Authors: Hanting Zhang
66
-/
7-
import Mathlib.Topology.MetricSpace.Lipschitz
87
import Mathlib.Topology.MetricSpace.Antilipschitz
8+
import Mathlib.Topology.MetricSpace.Isometry
9+
import Mathlib.Topology.MetricSpace.Lipschitz
910
import Mathlib.Data.FunLike.Basic
1011

1112
#align_import topology.metric_space.dilation from "leanprover-community/mathlib"@"93f880918cb51905fd51b76add8273cbc27718ab"
@@ -264,6 +265,20 @@ variable [DilationClass F α β] [DilationClass G β γ]
264265

265266
variable (f : F) (g : G) {x y z : α} {s : Set α}
266267

268+
/-- Every isometry is a dilation of ratio `1`. -/
269+
@[simps]
270+
def _root_.Isometry.toDilation (f : α → β) (hf : Isometry f) : α →ᵈ β where
271+
toFun := f
272+
edist_eq' := ⟨1, one_ne_zero, by simpa using hf⟩
273+
274+
@[simp]
275+
lemma _root_.Isometry.toDilation_ratio {f : α → β} {hf : Isometry f} : ratio hf.toDilation = 1 := by
276+
by_cases h : ∀ x y : α, edist x y = 0 ∨ edist x y = ⊤
277+
· exact ratio_of_trivial hf.toDilation h
278+
· push_neg at h
279+
obtain ⟨x, y, h₁, h₂⟩ := h
280+
exact ratio_unique h₁ h₂ (by simp [hf x y]) |>.symm
281+
267282
theorem lipschitz : LipschitzWith (ratio f) (f : α → β) := fun x y => (edist_eq f x y).le
268283
#align dilation.lipschitz Dilation.lipschitz
269284

Mathlib/Topology/MetricSpace/DilationEquiv.lean

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,8 @@ def Simps.symm_apply (e : X ≃ᵈ Y) : Y → X := e.symm
8989

9090
initialize_simps_projections DilationEquiv (toFun → apply, invFun → symm_apply)
9191

92+
lemma ratio_toDilation (e : X ≃ᵈ Y) : ratio e.toDilation = ratio e := rfl
93+
9294
/-- Identity map as a `DilationEquiv`. -/
9395
@[simps! (config := .asFn) apply]
9496
def refl (X : Type*) [PseudoEMetricSpace X] : X ≃ᵈ X where
@@ -176,6 +178,46 @@ def toPerm : (X ≃ᵈ X) →* Equiv.Perm X where
176178
theorem coe_pow (e : X ≃ᵈ X) (n : ℕ) : ⇑(e ^ n) = e^[n] := by
177179
rw [← coe_toEquiv, ← toPerm_apply, map_pow, Equiv.Perm.coe_pow]; rfl
178180

181+
-- TODO: Once `IsometryEquiv` follows the `*EquivClass` pattern, replace this with an instance
182+
-- of `DilationEquivClass` assuming `IsometryEquivClass`.
183+
/-- Every isometry equivalence is a dilation equivalence of ratio `1`. -/
184+
def _root_.IsometryEquiv.toDilationEquiv (e : X ≃ᵢ Y) : X ≃ᵈ Y where
185+
edist_eq' := ⟨1, one_ne_zero, by simpa using e.isometry⟩
186+
__ := e.toEquiv
187+
188+
@[simp]
189+
lemma _root_.IsometryEquiv.toDilationEquiv_apply (e : X ≃ᵢ Y) (x : X) :
190+
e.toDilationEquiv x = e x :=
191+
rfl
192+
193+
@[simp]
194+
lemma _root_.IsometryEquiv.toDilationEquiv_symm (e : X ≃ᵢ Y) :
195+
e.toDilationEquiv.symm = e.symm.toDilationEquiv :=
196+
rfl
197+
198+
@[simp]
199+
lemma _root_.IsometryEquiv.toDilationEquiv_toDilation (e : X ≃ᵢ Y) :
200+
(e.toDilationEquiv.toDilation : X →ᵈ Y) = e.isometry.toDilation :=
201+
rfl
202+
203+
@[simp]
204+
lemma _root_.IsometryEquiv.toDilationEquiv_ratio (e : X ≃ᵢ Y) : ratio e.toDilationEquiv = 1 := by
205+
rw [← ratio_toDilation, IsometryEquiv.toDilationEquiv_toDilation, Isometry.toDilation_ratio]
206+
207+
/-- Reinterpret a `DilationEquiv` as a homeomorphism. -/
208+
def toHomeomorph (e : X ≃ᵈ Y) : X ≃ₜ Y where
209+
continuous_toFun := Dilation.toContinuous e
210+
continuous_invFun := Dilation.toContinuous e.symm
211+
__ := e.toEquiv
212+
213+
@[simp]
214+
lemma coe_toHomeomorph (e : X ≃ᵈ Y) : ⇑e.toHomeomorph = e :=
215+
rfl
216+
217+
@[simp]
218+
lemma toHomeomorph_symm (e : X ≃ᵈ Y) : e.toHomeomorph.symm = e.symm.toHomeomorph :=
219+
rfl
220+
179221
end PseudoEMetricSpace
180222

181223
section PseudoMetricSpace

0 commit comments

Comments
 (0)