Dilation equivalence #
In this file we define DilationEquiv X Y
, a type of bundled equivalences between X
and Ysuch that
edist (f x) (f y) = r * edist x yfor some
r : ℝ≥0,
r ≠ 0`.
We also develop basic API about these equivalences.
TODO #
- Add missing lemmas (compare to other
*Equiv
structures). - [after-port] Add
DilationEquivInstance
forIsometryEquiv
.
class
DilationEquivClass
(F : Type u_1)
(X : outParam (Type u_2))
(Y : outParam (Type u_3))
[PseudoEMetricSpace X]
[PseudoEMetricSpace Y]
[EquivLike F X Y]
:
Typeclass saying that F
is a type of bundled equivalences such that all e : F
are
dilations.
Instances
instance
instDilationClassToFunLike
(F : Type u_1)
(X : outParam (Type u_2))
(Y : outParam (Type u_3))
[PseudoEMetricSpace X]
[PseudoEMetricSpace Y]
[EquivLike F X Y]
[DilationEquivClass F X Y]
:
DilationClass F X Y
Equations
- ⋯ = ⋯
structure
DilationEquiv
(X : Type u_1)
(Y : Type u_2)
[PseudoEMetricSpace X]
[PseudoEMetricSpace Y]
extends
Equiv
:
Type (max u_1 u_2)
Type of equivalences X ≃ Y
such that ∀ x y, edist (f x) (f y) = r * edist x y
for some
r : ℝ≥0
, r ≠ 0
.
- toFun : X → Y
- invFun : Y → X
- left_inv : Function.LeftInverse self.invFun self.toFun
- right_inv : Function.RightInverse self.invFun self.toFun
Instances For
Equations
- «term_≃ᵈ_» = Lean.ParserDescr.trailingNode `term_≃ᵈ_ 25 25 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol " ≃ᵈ ") (Lean.ParserDescr.cat `term 26))
Instances For
instance
DilationEquiv.instEquivLikeDilationEquiv
{X : Type u_1}
{Y : Type u_2}
[PseudoEMetricSpace X]
[PseudoEMetricSpace Y]
:
instance
DilationEquiv.instDilationEquivClassDilationEquivInstEquivLikeDilationEquiv
{X : Type u_1}
{Y : Type u_2}
[PseudoEMetricSpace X]
[PseudoEMetricSpace Y]
:
DilationEquivClass (X ≃ᵈ Y) X Y
Equations
- ⋯ = ⋯
instance
DilationEquiv.instCoeFunDilationEquivForAll
{X : Type u_1}
{Y : Type u_2}
[PseudoEMetricSpace X]
[PseudoEMetricSpace Y]
:
@[simp]
theorem
DilationEquiv.coe_toEquiv
{X : Type u_1}
{Y : Type u_2}
[PseudoEMetricSpace X]
[PseudoEMetricSpace Y]
(e : X ≃ᵈ Y)
:
⇑e.toEquiv = ⇑e
theorem
DilationEquiv.ext
{X : Type u_1}
{Y : Type u_2}
[PseudoEMetricSpace X]
[PseudoEMetricSpace Y]
{e : X ≃ᵈ Y}
{e' : X ≃ᵈ Y}
(h : ∀ (x : X), e x = e' x)
:
e = e'
def
DilationEquiv.symm
{X : Type u_1}
{Y : Type u_2}
[PseudoEMetricSpace X]
[PseudoEMetricSpace Y]
(e : X ≃ᵈ Y)
:
Y ≃ᵈ X
Inverse DilationEquiv
.
Equations
- DilationEquiv.symm e = { toEquiv := e.symm, edist_eq' := ⋯ }
Instances For
@[simp]
theorem
DilationEquiv.symm_symm
{X : Type u_1}
{Y : Type u_2}
[PseudoEMetricSpace X]
[PseudoEMetricSpace Y]
(e : X ≃ᵈ Y)
:
theorem
DilationEquiv.symm_bijective
{X : Type u_1}
{Y : Type u_2}
[PseudoEMetricSpace X]
[PseudoEMetricSpace Y]
:
Function.Bijective DilationEquiv.symm
@[simp]
theorem
DilationEquiv.apply_symm_apply
{X : Type u_1}
{Y : Type u_2}
[PseudoEMetricSpace X]
[PseudoEMetricSpace Y]
(e : X ≃ᵈ Y)
(x : Y)
:
e ((DilationEquiv.symm e) x) = x
@[simp]
theorem
DilationEquiv.symm_apply_apply
{X : Type u_1}
{Y : Type u_2}
[PseudoEMetricSpace X]
[PseudoEMetricSpace Y]
(e : X ≃ᵈ Y)
(x : X)
:
(DilationEquiv.symm e) (e x) = x
def
DilationEquiv.Simps.symm_apply
{X : Type u_1}
{Y : Type u_2}
[PseudoEMetricSpace X]
[PseudoEMetricSpace Y]
(e : X ≃ᵈ Y)
:
Y → X
See Note [custom simps projection].
Equations
Instances For
theorem
DilationEquiv.ratio_toDilation
{X : Type u_1}
{Y : Type u_2}
[PseudoEMetricSpace X]
[PseudoEMetricSpace Y]
(e : X ≃ᵈ Y)
:
@[simp]
theorem
DilationEquiv.refl_apply
(X : Type u_4)
[PseudoEMetricSpace X]
:
⇑(DilationEquiv.refl X) = id
Identity map as a DilationEquiv
.
Equations
- DilationEquiv.refl X = { toEquiv := Equiv.refl X, edist_eq' := ⋯ }
Instances For
@[simp]
@[simp]
@[simp]
theorem
DilationEquiv.trans_apply
{X : Type u_1}
{Y : Type u_2}
{Z : Type u_3}
[PseudoEMetricSpace X]
[PseudoEMetricSpace Y]
[PseudoEMetricSpace Z]
(e₁ : X ≃ᵈ Y)
(e₂ : Y ≃ᵈ Z)
:
⇑(DilationEquiv.trans e₁ e₂) = ⇑e₂ ∘ ⇑e₁
def
DilationEquiv.trans
{X : Type u_1}
{Y : Type u_2}
{Z : Type u_3}
[PseudoEMetricSpace X]
[PseudoEMetricSpace Y]
[PseudoEMetricSpace Z]
(e₁ : X ≃ᵈ Y)
(e₂ : Y ≃ᵈ Z)
:
X ≃ᵈ Z
Composition of DilationEquiv
s.
Equations
- DilationEquiv.trans e₁ e₂ = let __spread.0 := Dilation.comp (DilationEquiv.toDilation e₂) (DilationEquiv.toDilation e₁); { toEquiv := e₁.trans e₂.toEquiv, edist_eq' := ⋯ }
Instances For
@[simp]
theorem
DilationEquiv.refl_trans
{X : Type u_1}
{Y : Type u_2}
[PseudoEMetricSpace X]
[PseudoEMetricSpace Y]
(e : X ≃ᵈ Y)
:
DilationEquiv.trans (DilationEquiv.refl X) e = e
@[simp]
theorem
DilationEquiv.trans_refl
{X : Type u_1}
{Y : Type u_2}
[PseudoEMetricSpace X]
[PseudoEMetricSpace Y]
(e : X ≃ᵈ Y)
:
DilationEquiv.trans e (DilationEquiv.refl Y) = e
@[simp]
theorem
DilationEquiv.symm_trans_self
{X : Type u_1}
{Y : Type u_2}
[PseudoEMetricSpace X]
[PseudoEMetricSpace Y]
(e : X ≃ᵈ Y)
:
@[simp]
theorem
DilationEquiv.self_trans_symm
{X : Type u_1}
{Y : Type u_2}
[PseudoEMetricSpace X]
[PseudoEMetricSpace Y]
(e : X ≃ᵈ Y)
:
theorem
DilationEquiv.surjective
{X : Type u_1}
{Y : Type u_2}
[PseudoEMetricSpace X]
[PseudoEMetricSpace Y]
(e : X ≃ᵈ Y)
:
theorem
DilationEquiv.bijective
{X : Type u_1}
{Y : Type u_2}
[PseudoEMetricSpace X]
[PseudoEMetricSpace Y]
(e : X ≃ᵈ Y)
:
theorem
DilationEquiv.injective
{X : Type u_1}
{Y : Type u_2}
[PseudoEMetricSpace X]
[PseudoEMetricSpace Y]
(e : X ≃ᵈ Y)
:
@[simp]
theorem
DilationEquiv.ratio_trans
{X : Type u_1}
{Y : Type u_2}
{Z : Type u_3}
[PseudoEMetricSpace X]
[PseudoEMetricSpace Y]
[PseudoEMetricSpace Z]
(e : X ≃ᵈ Y)
(e' : Y ≃ᵈ Z)
:
Dilation.ratio (DilationEquiv.trans e e') = Dilation.ratio e * Dilation.ratio e'
@[simp]
theorem
DilationEquiv.ratio_symm
{X : Type u_1}
{Y : Type u_2}
[PseudoEMetricSpace X]
[PseudoEMetricSpace Y]
(e : X ≃ᵈ Y)
:
theorem
DilationEquiv.mul_def
{X : Type u_1}
[PseudoEMetricSpace X]
(e : X ≃ᵈ X)
(e' : X ≃ᵈ X)
:
e * e' = DilationEquiv.trans e' e
@[simp]
theorem
DilationEquiv.coe_inv
{X : Type u_1}
[PseudoEMetricSpace X]
(e : X ≃ᵈ X)
:
⇑e⁻¹ = ⇑(DilationEquiv.symm e)
Dilation.ratio
as a monoid homomorphism.
Equations
- DilationEquiv.ratioHom = { toOneHom := { toFun := Dilation.ratio, map_one' := ⋯ }, map_mul' := ⋯ }
Instances For
@[simp]
@[simp]
theorem
DilationEquiv.ratio_pow
{X : Type u_1}
[PseudoEMetricSpace X]
(e : X ≃ᵈ X)
(n : ℕ)
:
Dilation.ratio (e ^ n) = Dilation.ratio e ^ n
@[simp]
theorem
DilationEquiv.ratio_zpow
{X : Type u_1}
[PseudoEMetricSpace X]
(e : X ≃ᵈ X)
(n : ℤ)
:
Dilation.ratio (e ^ n) = Dilation.ratio e ^ n
@[simp]
theorem
DilationEquiv.toPerm_apply
{X : Type u_1}
[PseudoEMetricSpace X]
(e : X ≃ᵈ X)
:
DilationEquiv.toPerm e = e.toEquiv
def
IsometryEquiv.toDilationEquiv
{X : Type u_1}
{Y : Type u_2}
[PseudoEMetricSpace X]
[PseudoEMetricSpace Y]
(e : X ≃ᵢ Y)
:
X ≃ᵈ Y
Every isometry equivalence is a dilation equivalence of ratio 1
.
Equations
- IsometryEquiv.toDilationEquiv e = let __spread.0 := e.toEquiv; { toEquiv := __spread.0, edist_eq' := ⋯ }
Instances For
@[simp]
theorem
IsometryEquiv.toDilationEquiv_apply
{X : Type u_1}
{Y : Type u_2}
[PseudoEMetricSpace X]
[PseudoEMetricSpace Y]
(e : X ≃ᵢ Y)
(x : X)
:
(IsometryEquiv.toDilationEquiv e) x = e x
@[simp]
theorem
IsometryEquiv.toDilationEquiv_symm
{X : Type u_1}
{Y : Type u_2}
[PseudoEMetricSpace X]
[PseudoEMetricSpace Y]
(e : X ≃ᵢ Y)
:
@[simp]
theorem
IsometryEquiv.toDilationEquiv_toDilation
{X : Type u_1}
{Y : Type u_2}
[PseudoEMetricSpace X]
[PseudoEMetricSpace Y]
(e : X ≃ᵢ Y)
:
@[simp]
theorem
IsometryEquiv.toDilationEquiv_ratio
{X : Type u_1}
{Y : Type u_2}
[PseudoEMetricSpace X]
[PseudoEMetricSpace Y]
(e : X ≃ᵢ Y)
:
def
DilationEquiv.toHomeomorph
{X : Type u_1}
{Y : Type u_2}
[PseudoEMetricSpace X]
[PseudoEMetricSpace Y]
(e : X ≃ᵈ Y)
:
X ≃ₜ Y
Reinterpret a DilationEquiv
as a homeomorphism.
Equations
- DilationEquiv.toHomeomorph e = let __spread.0 := e.toEquiv; { toEquiv := __spread.0, continuous_toFun := ⋯, continuous_invFun := ⋯ }
Instances For
@[simp]
theorem
DilationEquiv.coe_toHomeomorph
{X : Type u_1}
{Y : Type u_2}
[PseudoEMetricSpace X]
[PseudoEMetricSpace Y]
(e : X ≃ᵈ Y)
:
⇑(DilationEquiv.toHomeomorph e) = ⇑e
@[simp]
theorem
DilationEquiv.toHomeomorph_symm
{X : Type u_1}
{Y : Type u_2}
[PseudoEMetricSpace X]
[PseudoEMetricSpace Y]
(e : X ≃ᵈ Y)
:
@[simp]
theorem
DilationEquiv.map_cobounded
{X : Type u_1}
{Y : Type u_2}
{F : Type u_3}
[PseudoMetricSpace X]
[PseudoMetricSpace Y]
[EquivLike F X Y]
[DilationEquivClass F X Y]
(e : F)
:
Filter.map (⇑e) (Bornology.cobounded X) = Bornology.cobounded Y