File: Mathlib/Topology/MetricSpace/Isometry.lean

full_name: Isometry
code: /-- An isometry (also known as isometric embedding) is a map preserving the edistance
between pseudoemetric spaces, or equivalently the distance between pseudometric space.  -/
def Isometry [PseudoEMetricSpace α] [PseudoEMetricSpace β] (f : α → β) : Prop 
goal: Prop

full_name: isometry_iff_nndist_eq
code: /-- On pseudometric spaces, a map is an isometry if and only if it preserves nonnegative
distances. -/
theorem isometry_iff_nndist_eq [PseudoMetricSpace α] [PseudoMetricSpace β] {f : α → β} :
    Isometry f ↔ ∀ x y, nndist (f x) (f y) = nndist x y 
goal: Isometry f ↔ ∀ (x y : α), nndist (f x) (f y) = nndist x y

full_name: isometry_iff_dist_eq
code: /-- On pseudometric spaces, a map is an isometry if and only if it preserves distances. -/
theorem isometry_iff_dist_eq [PseudoMetricSpace α] [PseudoMetricSpace β] {f : α → β} :
    Isometry f ↔ ∀ x y, dist (f x) (f y) = dist x y 
goal: Isometry f ↔ ∀ (x y : α), dist (f x) (f y) = dist x y

full_name: Isometry.edist_eq
code: /-- An isometry preserves edistances. -/
theorem edist_eq (hf : Isometry f) (x y : α) : edist (f x) (f y) = edist x y 
goal: edist (f x) (f y) = edist x y

full_name: Isometry.lipschitz
code: theorem lipschitz (h : Isometry f) : LipschitzWith 1 f 
goal: LipschitzWith 1 f

full_name: Isometry.antilipschitz
code: theorem antilipschitz (h : Isometry f) : AntilipschitzWith 1 f 
goal: AntilipschitzWith 1 f

full_name: isometry_subsingleton
code: /-- Any map on a subsingleton is an isometry -/
@[nontriviality]
theorem _root_.isometry_subsingleton [Subsingleton α] : Isometry f 
goal: Isometry f

full_name: isometry_id
code: /-- The identity is an isometry -/
theorem _root_.isometry_id : Isometry (id : α → α) 
goal: Isometry id

full_name: Isometry.prod_map
code: theorem prod_map {δ} [PseudoEMetricSpace δ] {f : α → β} {g : γ → δ} (hf : Isometry f)
    (hg : Isometry g) : Isometry (Prod.map f g) 
goal: Isometry (Prod.map f g)

full_name: isometry_dcomp
code: theorem _root_.isometry_dcomp {ι} [Fintype ι] {α β : ι → Type*} [∀ i, PseudoEMetricSpace (α i)]
    [∀ i, PseudoEMetricSpace (β i)] (f : ∀ i, α i → β i) (hf : ∀ i, Isometry (f i)) :
    Isometry (fun g : (i : ι) → α i => fun i => f i (g i)) 
goal: Isometry fun g i => f i (g i)

full_name: Isometry.comp
code: /-- The composition of isometries is an isometry. -/
theorem comp {g : β → γ} {f : α → β} (hg : Isometry g) (hf : Isometry f) : Isometry (g ∘ f) 
goal: Isometry (g ∘ f)

full_name: Isometry.uniformContinuous
code: /-- An isometry from a metric space is a uniform continuous map -/
protected theorem uniformContinuous (hf : Isometry f) : UniformContinuous f 
goal: UniformContinuous f

full_name: Isometry.uniformInducing
code: /-- An isometry from a metric space is a uniform inducing map -/
protected theorem uniformInducing (hf : Isometry f) : UniformInducing f 
goal: UniformInducing f

full_name: Isometry.tendsto_nhds_iff
code: theorem tendsto_nhds_iff {ι : Type*} {f : α → β} {g : ι → α} {a : Filter ι} {b : α}
    (hf : Isometry f) : Filter.Tendsto g a (𝓝 b) ↔ Filter.Tendsto (f ∘ g) a (𝓝 (f b)) 
goal: Filter.Tendsto g a (𝓝 b) ↔ Filter.Tendsto (f ∘ g) a (𝓝 (f b))

full_name: Isometry.continuous
code: /-- An isometry is continuous. -/
protected theorem continuous (hf : Isometry f) : Continuous f 
goal: Continuous f

full_name: Isometry.right_inv
code: /-- The right inverse of an isometry is an isometry. -/
theorem right_inv {f : α → β} {g : β → α} (h : Isometry f) (hg : RightInverse g f) : Isometry g 
goal: Isometry g

full_name: Isometry.preimage_emetric_closedBall
code: theorem preimage_emetric_closedBall (h : Isometry f) (x : α) (r : ℝ≥0∞) :
    f ⁻¹' EMetric.closedBall (f x) r = EMetric.closedBall x r 
goal: f ⁻¹' EMetric.closedBall (f x) r = EMetric.closedBall x r

full_name: Isometry.preimage_emetric_ball
code: theorem preimage_emetric_ball (h : Isometry f) (x : α) (r : ℝ≥0∞) :
    f ⁻¹' EMetric.ball (f x) r = EMetric.ball x r 
goal: f ⁻¹' EMetric.ball (f x) r = EMetric.ball x r

full_name: Isometry.ediam_image
code: /-- Isometries preserve the diameter in pseudoemetric spaces. -/
theorem ediam_image (hf : Isometry f) (s : Set α) : EMetric.diam (f '' s) = EMetric.diam s 
goal: EMetric.diam (f '' s) = EMetric.diam s

full_name: Isometry.ediam_range
code: theorem ediam_range (hf : Isometry f) : EMetric.diam (range f) = EMetric.diam (univ : Set α) 
goal: EMetric.diam (Set.range f) = EMetric.diam Set.univ

full_name: Isometry.mapsTo_emetric_ball
code: theorem mapsTo_emetric_ball (hf : Isometry f) (x : α) (r : ℝ≥0∞) :
    MapsTo f (EMetric.ball x r) (EMetric.ball (f x) r) 
goal: Set.MapsTo f (EMetric.ball x r) (EMetric.ball (f x) r)

full_name: Isometry.mapsTo_emetric_closedBall
code: theorem mapsTo_emetric_closedBall (hf : Isometry f) (x : α) (r : ℝ≥0∞) :
    MapsTo f (EMetric.closedBall x r) (EMetric.closedBall (f x) r) 
goal: Set.MapsTo f (EMetric.closedBall x r) (EMetric.closedBall (f x) r)

full_name: isometry_subtype_coe
code: /-- The injection from a subtype is an isometry -/
theorem _root_.isometry_subtype_coe {s : Set α} : Isometry ((↑) : s → α) 
goal: Isometry Subtype.val

full_name: Isometry.comp_continuousOn_iff
code: theorem comp_continuousOn_iff {γ} [TopologicalSpace γ] (hf : Isometry f) {g : γ → α} {s : Set γ} :
    ContinuousOn (f ∘ g) s ↔ ContinuousOn g s 
goal: ContinuousOn (f ∘ g) s ↔ ContinuousOn g s

full_name: Isometry.comp_continuous_iff
code: theorem comp_continuous_iff {γ} [TopologicalSpace γ] (hf : Isometry f) {g : γ → α} :
    Continuous (f ∘ g) ↔ Continuous g 
goal: Continuous (f ∘ g) ↔ Continuous g

full_name: Isometry.injective
code: /-- An isometry from an emetric space is injective -/
protected theorem injective (h : Isometry f) : Injective f 
goal: Function.Injective f

full_name: Isometry.uniformEmbedding
code: /-- An isometry from an emetric space is a uniform embedding -/
protected theorem uniformEmbedding (hf : Isometry f) : UniformEmbedding f 
goal: UniformEmbedding f

full_name: Isometry.embedding
code: /-- An isometry from an emetric space is an embedding -/
protected theorem embedding (hf : Isometry f) : Embedding f 
goal: Embedding f

full_name: Isometry.closedEmbedding
code: /-- An isometry from a complete emetric space is a closed embedding -/
theorem closedEmbedding [CompleteSpace α] [EMetricSpace γ] {f : α → γ} (hf : Isometry f) :
    ClosedEmbedding f 
goal: ClosedEmbedding f

full_name: Isometry.diam_image
code: /-- An isometry preserves the diameter in pseudometric spaces. -/
theorem diam_image (hf : Isometry f) (s : Set α) : Metric.diam (f '' s) = Metric.diam s 
goal: Metric.diam (f '' s) = Metric.diam s

full_name: Isometry.diam_range
code: theorem diam_range (hf : Isometry f) : Metric.diam (range f) = Metric.diam (univ : Set α) 
goal: Metric.diam (Set.range f) = Metric.diam Set.univ

full_name: Isometry.preimage_setOf_dist
code: theorem preimage_setOf_dist (hf : Isometry f) (x : α) (p : ℝ → Prop) :
    f ⁻¹' { y | p (dist y (f x)) } = { y | p (dist y x) } 
goal: f ⁻¹' {y | p (dist y (f x))} = {y | p (dist y x)}

full_name: Isometry.preimage_closedBall
code: theorem preimage_closedBall (hf : Isometry f) (x : α) (r : ℝ) :
    f ⁻¹' Metric.closedBall (f x) r = Metric.closedBall x r 
goal: f ⁻¹' Metric.closedBall (f x) r = Metric.closedBall x r

full_name: Isometry.preimage_ball
code: theorem preimage_ball (hf : Isometry f) (x : α) (r : ℝ) :
    f ⁻¹' Metric.ball (f x) r = Metric.ball x r 
goal: f ⁻¹' Metric.ball (f x) r = Metric.ball x r

full_name: Isometry.preimage_sphere
code: theorem preimage_sphere (hf : Isometry f) (x : α) (r : ℝ) :
    f ⁻¹' Metric.sphere (f x) r = Metric.sphere x r 
goal: f ⁻¹' Metric.sphere (f x) r = Metric.sphere x r

full_name: Isometry.mapsTo_ball
code: theorem mapsTo_ball (hf : Isometry f) (x : α) (r : ℝ) :
    MapsTo f (Metric.ball x r) (Metric.ball (f x) r) 
goal: Set.MapsTo f (Metric.ball x r) (Metric.ball (f x) r)

full_name: Isometry.mapsTo_sphere
code: theorem mapsTo_sphere (hf : Isometry f) (x : α) (r : ℝ) :
    MapsTo f (Metric.sphere x r) (Metric.sphere (f x) r) 
goal: Set.MapsTo f (Metric.sphere x r) (Metric.sphere (f x) r)

full_name: Isometry.mapsTo_closedBall
code: theorem mapsTo_closedBall (hf : Isometry f) (x : α) (r : ℝ) :
    MapsTo f (Metric.closedBall x r) (Metric.closedBall (f x) r) 
goal: Set.MapsTo f (Metric.closedBall x r) (Metric.closedBall (f x) r)

full_name: UniformEmbedding.to_isometry
code: /-- A uniform embedding from a uniform space to a metric space is an isometry with respect to the
induced metric space structure on the source space. -/
theorem UniformEmbedding.to_isometry {α β} [UniformSpace α] [MetricSpace β] {f : α → β}
    (h : UniformEmbedding f) : (letI := h.comapMetricSpace f; Isometry f) 
goal: Isometry f

full_name: Embedding.to_isometry
code: /-- An embedding from a topological space to a metric space is an isometry with respect to the
induced metric space structure on the source space. -/
theorem Embedding.to_isometry {α β} [TopologicalSpace α] [MetricSpace β] {f : α → β}
    (h : Embedding f) : (letI := h.comapMetricSpace f; Isometry f) 
goal: Isometry f

full_name: IsometryEquiv
code: /-- `α` and `β` are isometric if there is an isometric bijection between them. -/
-- Porting note(#5171): was @[nolint has_nonempty_instance]
structure IsometryEquiv (α : Type u) (β : Type v) [PseudoEMetricSpace α] [PseudoEMetricSpace β]
    extends α ≃ β where
  isometry_toFun : Isometry toFun
goal: Type (max u v)

full_name: IsometryEquiv.isometry_toFun
code: /-- `α` and `β` are isometric if there is an isometric bijection between them. -/
-- Porting note(#5171): was @[nolint has_nonempty_instance]
structure IsometryEquiv (α : Type u) (β : Type v) [PseudoEMetricSpace α] [PseudoEMetricSpace β]
    extends α ≃ β where
  isometry_toFun : Isometry toFun
goal: Isometry self.toFun

full_name: «_aux_Mathlib_Topology_MetricSpace_Isometry___macroRules_term_≃ᵢ__1»
code: @[inherit_doc]
infixl:25 " ≃ᵢ " => IsometryEquiv
goal: Lean.Macro

full_name: _aux_Mathlib_Topology_MetricSpace_Isometry___unexpand_IsometryEquiv_1
code: @[inherit_doc]
infixl:25 " ≃ᵢ " => IsometryEquiv
goal: Lean.PrettyPrinter.Unexpander

full_name: IsometryEquiv.toEquiv_injective
code: theorem toEquiv_injective : Injective (toEquiv : (α ≃ᵢ β) → (α ≃ β))
  
goal: Function.Injective IsometryEquiv.toEquiv

full_name: IsometryEquiv.toEquiv_inj
code: @[simp] theorem toEquiv_inj {e₁ e₂ : α ≃ᵢ β} : e₁.toEquiv = e₂.toEquiv ↔ e₁ = e₂ 
goal: e₁.toEquiv = e₂.toEquiv ↔ e₁ = e₂

full_name: IsometryEquiv.instEquivLike
code: instance : EquivLike (α ≃ᵢ β) α β 
goal: EquivLike (α ≃ᵢ β) α β

full_name: IsometryEquiv.coe_eq_toEquiv
code: theorem coe_eq_toEquiv (h : α ≃ᵢ β) (a : α) : h a = h.toEquiv a 
goal: h a = h.toEquiv a

full_name: IsometryEquiv.coe_toEquiv
code: @[simp] theorem coe_toEquiv (h : α ≃ᵢ β) : ⇑h.toEquiv = h 
goal: ⇑h.toEquiv = ⇑h

full_name: IsometryEquiv.coe_mk
code: @[simp] theorem coe_mk (e : α ≃ β) (h) : ⇑(mk e h) = e 
goal: ⇑{ toEquiv := e, isometry_toFun := h } = ⇑e

full_name: IsometryEquiv.isometry
code: protected theorem isometry (h : α ≃ᵢ β) : Isometry h 
goal: Isometry ⇑h

full_name: IsometryEquiv.bijective
code: protected theorem bijective (h : α ≃ᵢ β) : Bijective h 
goal: Function.Bijective ⇑h

full_name: IsometryEquiv.injective
code: protected theorem injective (h : α ≃ᵢ β) : Injective h 
goal: Function.Injective ⇑h

full_name: IsometryEquiv.surjective
code: protected theorem surjective (h : α ≃ᵢ β) : Surjective h 
goal: Function.Surjective ⇑h

full_name: IsometryEquiv.edist_eq
code: protected theorem edist_eq (h : α ≃ᵢ β) (x y : α) : edist (h x) (h y) = edist x y 
goal: edist (h x) (h y) = edist x y

full_name: IsometryEquiv.dist_eq
code: protected theorem dist_eq {α β : Type*} [PseudoMetricSpace α] [PseudoMetricSpace β] (h : α ≃ᵢ β)
    (x y : α) : dist (h x) (h y) = dist x y 
goal: dist (h x) (h y) = dist x y

full_name: IsometryEquiv.nndist_eq
code: protected theorem nndist_eq {α β : Type*} [PseudoMetricSpace α] [PseudoMetricSpace β] (h : α ≃ᵢ β)
    (x y : α) : nndist (h x) (h y) = nndist x y 
goal: nndist (h x) (h y) = nndist x y

full_name: IsometryEquiv.continuous
code: protected theorem continuous (h : α ≃ᵢ β) : Continuous h 
goal: Continuous ⇑h

full_name: IsometryEquiv.ediam_image
code: @[simp]
theorem ediam_image (h : α ≃ᵢ β) (s : Set α) : EMetric.diam (h '' s) = EMetric.diam s 
goal: EMetric.diam (⇑h '' s) = EMetric.diam s

full_name: IsometryEquiv.ext
code: @[ext]
theorem ext ⦃h₁ h₂ : α ≃ᵢ β⦄ (H : ∀ x, h₁ x = h₂ x) : h₁ = h₂ 
goal: h₁ = h₂

full_name: IsometryEquiv.mk'
code: /-- Alternative constructor for isometric bijections,
taking as input an isometry, and a right inverse. -/
def mk' {α : Type u} [EMetricSpace α] (f : α → β) (g : β → α) (hfg : ∀ x, f (g x) = x)
    (hf : Isometry f) : α ≃ᵢ β 
goal: α ≃ᵢ β

full_name: IsometryEquiv.refl
code: /-- The identity isometry of a space. -/
protected def refl (α : Type*) [PseudoEMetricSpace α] : α ≃ᵢ α 
goal: α ≃ᵢ α

full_name: IsometryEquiv.trans
code: /-- The composition of two isometric isomorphisms, as an isometric isomorphism. -/
protected def trans (h₁ : α ≃ᵢ β) (h₂ : β ≃ᵢ γ) : α ≃ᵢ γ 
goal: α ≃ᵢ γ

full_name: IsometryEquiv.trans_apply
code: @[simp]
theorem trans_apply (h₁ : α ≃ᵢ β) (h₂ : β ≃ᵢ γ) (x : α) : h₁.trans h₂ x = h₂ (h₁ x) 
goal: (h₁.trans h₂) x = h₂ (h₁ x)

full_name: IsometryEquiv.symm
code: /-- The inverse of an isometric isomorphism, as an isometric isomorphism. -/
protected def symm (h : α ≃ᵢ β) : β ≃ᵢ α 
goal: β ≃ᵢ α

full_name: IsometryEquiv.Simps.apply
code: /-- See Note [custom simps projection]. We need to specify this projection explicitly in this case,
  because it is a composition of multiple projections. -/
def Simps.apply (h : α ≃ᵢ β) : α → β 
goal: α → β

full_name: IsometryEquiv.Simps.symm_apply
code: /-- See Note [custom simps projection] -/
def Simps.symm_apply (h : α ≃ᵢ β) : β → α 
goal: β → α

full_name: IsometryEquiv.symm_symm
code: @[simp]
theorem symm_symm (h : α ≃ᵢ β) : h.symm.symm = h 
goal: h.symm.symm = h

full_name: IsometryEquiv.symm_bijective
code: theorem symm_bijective : Bijective (IsometryEquiv.symm : (α ≃ᵢ β) → β ≃ᵢ α) 
goal: Function.Bijective IsometryEquiv.symm

full_name: IsometryEquiv.apply_symm_apply
code: @[simp]
theorem apply_symm_apply (h : α ≃ᵢ β) (y : β) : h (h.symm y) = y 
goal: h (h.symm y) = y

full_name: IsometryEquiv.symm_apply_apply
code: @[simp]
theorem symm_apply_apply (h : α ≃ᵢ β) (x : α) : h.symm (h x) = x 
goal: h.symm (h x) = x

full_name: IsometryEquiv.symm_apply_eq
code: theorem symm_apply_eq (h : α ≃ᵢ β) {x : α} {y : β} : h.symm y = x ↔ y = h x 
goal: h.symm y = x ↔ y = h x

full_name: IsometryEquiv.eq_symm_apply
code: theorem eq_symm_apply (h : α ≃ᵢ β) {x : α} {y : β} : x = h.symm y ↔ h x = y 
goal: x = h.symm y ↔ h x = y

full_name: IsometryEquiv.symm_comp_self
code: theorem symm_comp_self (h : α ≃ᵢ β) : (h.symm : β → α) ∘ h = id 
goal: ⇑h.symm ∘ ⇑h = id

full_name: IsometryEquiv.self_comp_symm
code: theorem self_comp_symm (h : α ≃ᵢ β) : (h : α → β) ∘ h.symm = id 
goal: ⇑h ∘ ⇑h.symm = id

full_name: IsometryEquiv.range_eq_univ
code: @[simp]
theorem range_eq_univ (h : α ≃ᵢ β) : range h = univ 
goal: Set.range ⇑h = Set.univ

full_name: IsometryEquiv.image_symm
code: theorem image_symm (h : α ≃ᵢ β) : image h.symm = preimage h 
goal: Set.image ⇑h.symm = Set.preimage ⇑h

full_name: IsometryEquiv.preimage_symm
code: theorem preimage_symm (h : α ≃ᵢ β) : preimage h.symm = image h 
goal: Set.preimage ⇑h.symm = Set.image ⇑h

full_name: IsometryEquiv.symm_trans_apply
code: @[simp]
theorem symm_trans_apply (h₁ : α ≃ᵢ β) (h₂ : β ≃ᵢ γ) (x : γ) :
    (h₁.trans h₂).symm x = h₁.symm (h₂.symm x) 
goal: (h₁.trans h₂).symm x = h₁.symm (h₂.symm x)

full_name: IsometryEquiv.ediam_univ
code: theorem ediam_univ (h : α ≃ᵢ β) : EMetric.diam (univ : Set α) = EMetric.diam (univ : Set β) 
goal: EMetric.diam Set.univ = EMetric.diam Set.univ

full_name: IsometryEquiv.ediam_preimage
code: @[simp]
theorem ediam_preimage (h : α ≃ᵢ β) (s : Set β) : EMetric.diam (h ⁻¹' s) = EMetric.diam s 
goal: EMetric.diam (⇑h ⁻¹' s) = EMetric.diam s

full_name: IsometryEquiv.preimage_emetric_ball
code: @[simp]
theorem preimage_emetric_ball (h : α ≃ᵢ β) (x : β) (r : ℝ≥0∞) :
    h ⁻¹' EMetric.ball x r = EMetric.ball (h.symm x) r 
goal: ⇑h ⁻¹' EMetric.ball x r = EMetric.ball (h.symm x) r

full_name: IsometryEquiv.preimage_emetric_closedBall
code: @[simp]
theorem preimage_emetric_closedBall (h : α ≃ᵢ β) (x : β) (r : ℝ≥0∞) :
    h ⁻¹' EMetric.closedBall x r = EMetric.closedBall (h.symm x) r 
goal: ⇑h ⁻¹' EMetric.closedBall x r = EMetric.closedBall (h.symm x) r

full_name: IsometryEquiv.image_emetric_ball
code: @[simp]
theorem image_emetric_ball (h : α ≃ᵢ β) (x : α) (r : ℝ≥0∞) :
    h '' EMetric.ball x r = EMetric.ball (h x) r 
goal: ⇑h '' EMetric.ball x r = EMetric.ball (h x) r

full_name: IsometryEquiv.image_emetric_closedBall
code: @[simp]
theorem image_emetric_closedBall (h : α ≃ᵢ β) (x : α) (r : ℝ≥0∞) :
    h '' EMetric.closedBall x r = EMetric.closedBall (h x) r 
goal: ⇑h '' EMetric.closedBall x r = EMetric.closedBall (h x) r

full_name: IsometryEquiv.toHomeomorph_toEquiv
code: /-- The (bundled) homeomorphism associated to an isometric isomorphism. -/
@[simps toEquiv]
protected def toHomeomorph (h : α ≃ᵢ β) : α ≃ₜ β 
goal: h.toHomeomorph.toEquiv = h.toEquiv

full_name: IsometryEquiv.toHomeomorph
code: /-- The (bundled) homeomorphism associated to an isometric isomorphism. -/
@[simps toEquiv]
protected def toHomeomorph (h : α ≃ᵢ β) : α ≃ₜ β 
goal: α ≃ₜ β

full_name: IsometryEquiv.coe_toHomeomorph
code: @[simp]
theorem coe_toHomeomorph (h : α ≃ᵢ β) : ⇑h.toHomeomorph = h 
goal: ⇑h.toHomeomorph = ⇑h

full_name: IsometryEquiv.coe_toHomeomorph_symm
code: @[simp]
theorem coe_toHomeomorph_symm (h : α ≃ᵢ β) : ⇑h.toHomeomorph.symm = h.symm 
goal: ⇑h.toHomeomorph.symm = ⇑h.symm

full_name: IsometryEquiv.comp_continuousOn_iff
code: @[simp]
theorem comp_continuousOn_iff {γ} [TopologicalSpace γ] (h : α ≃ᵢ β) {f : γ → α} {s : Set γ} :
    ContinuousOn (h ∘ f) s ↔ ContinuousOn f s 
goal: ContinuousOn (⇑h ∘ f) s ↔ ContinuousOn f s

full_name: IsometryEquiv.comp_continuous_iff
code: @[simp]
theorem comp_continuous_iff {γ} [TopologicalSpace γ] (h : α ≃ᵢ β) {f : γ → α} :
    Continuous (h ∘ f) ↔ Continuous f 
goal: Continuous (⇑h ∘ f) ↔ Continuous f

full_name: IsometryEquiv.comp_continuous_iff'
code: @[simp]
theorem comp_continuous_iff' {γ} [TopologicalSpace γ] (h : α ≃ᵢ β) {f : β → γ} :
    Continuous (f ∘ h) ↔ Continuous f 
goal: Continuous (f ∘ ⇑h) ↔ Continuous f

full_name: IsometryEquiv.instGroup
code: /-- The group of isometries. -/
instance : Group (α ≃ᵢ α) 
goal: Group (α ≃ᵢ α)

full_name: IsometryEquiv.coe_one
code: @[simp] theorem coe_one : ⇑(1 : α ≃ᵢ α) = id 
goal: ⇑1 = id

full_name: IsometryEquiv.coe_mul
code: @[simp] theorem coe_mul (e₁ e₂ : α ≃ᵢ α) : ⇑(e₁ * e₂) = e₁ ∘ e₂ 
goal: ⇑(e₁ * e₂) = ⇑e₁ ∘ ⇑e₂

full_name: IsometryEquiv.mul_apply
code: theorem mul_apply (e₁ e₂ : α ≃ᵢ α) (x : α) : (e₁ * e₂) x = e₁ (e₂ x) 
goal: (e₁ * e₂) x = e₁ (e₂ x)

full_name: IsometryEquiv.inv_apply_self
code: @[simp] theorem inv_apply_self (e : α ≃ᵢ α) (x : α) : e⁻¹ (e x) = x 
goal: e⁻¹ (e x) = x

full_name: IsometryEquiv.apply_inv_self
code: @[simp] theorem apply_inv_self (e : α ≃ᵢ α) (x : α) : e (e⁻¹ x) = x 
goal: e (e⁻¹ x) = x

full_name: IsometryEquiv.completeSpace_iff
code: theorem completeSpace_iff (e : α ≃ᵢ β) : CompleteSpace α ↔ CompleteSpace β 
goal: CompleteSpace α ↔ CompleteSpace β

full_name: IsometryEquiv.completeSpace
code: protected theorem completeSpace [CompleteSpace β] (e : α ≃ᵢ β) : CompleteSpace α 
goal: CompleteSpace α

full_name: IsometryEquiv.funUnique_symm_apply
code: /-- `Equiv.funUnique` as an `IsometryEquiv`. -/
@[simps!]
def funUnique [Unique ι] [Fintype ι] : (ι → α) ≃ᵢ α 
goal: (IsometryEquiv.funUnique ι α).symm x i = x

full_name: IsometryEquiv.funUnique
code: /-- `Equiv.funUnique` as an `IsometryEquiv`. -/
@[simps!]
def funUnique [Unique ι] [Fintype ι] : (ι → α) ≃ᵢ α 
goal: (ι → α) ≃ᵢ α

full_name: IsometryEquiv.funUnique_apply
code: /-- `Equiv.funUnique` as an `IsometryEquiv`. -/
@[simps!]
def funUnique [Unique ι] [Fintype ι] : (ι → α) ≃ᵢ α 
goal: (IsometryEquiv.funUnique ι α) f = f default

full_name: IsometryEquiv.funUnique_toFun
code: /-- `Equiv.funUnique` as an `IsometryEquiv`. -/
@[simps!]
def funUnique [Unique ι] [Fintype ι] : (ι → α) ≃ᵢ α 
goal: (IsometryEquiv.funUnique ι α) f = f default

full_name: IsometryEquiv.funUnique_invFun
code: /-- `Equiv.funUnique` as an `IsometryEquiv`. -/
@[simps!]
def funUnique [Unique ι] [Fintype ι] : (ι → α) ≃ᵢ α 
goal: (IsometryEquiv.funUnique ι α).invFun x i = x

full_name: IsometryEquiv.piFinTwo_toFun
code: /-- `piFinTwoEquiv` as an `IsometryEquiv`. -/
@[simps!]
def piFinTwo (α : Fin 2 → Type*) [∀ i, PseudoEMetricSpace (α i)] : (∀ i, α i) ≃ᵢ α 0 × α 1 
goal: (IsometryEquiv.piFinTwo α) f = (f 0, f 1)

full_name: IsometryEquiv.piFinTwo
code: /-- `piFinTwoEquiv` as an `IsometryEquiv`. -/
@[simps!]
def piFinTwo (α : Fin 2 → Type*) [∀ i, PseudoEMetricSpace (α i)] : (∀ i, α i) ≃ᵢ α 0 × α 1 
goal: ((i : Fin 2) → α i) ≃ᵢ α 0 × α 1

full_name: IsometryEquiv.piFinTwo_invFun
code: /-- `piFinTwoEquiv` as an `IsometryEquiv`. -/
@[simps!]
def piFinTwo (α : Fin 2 → Type*) [∀ i, PseudoEMetricSpace (α i)] : (∀ i, α i) ≃ᵢ α 0 × α 1 
goal: (IsometryEquiv.piFinTwo α).invFun p i = Fin.cons p.1 (Fin.cons p.2 finZeroElim) i

full_name: IsometryEquiv.piFinTwo_symm_apply
code: /-- `piFinTwoEquiv` as an `IsometryEquiv`. -/
@[simps!]
def piFinTwo (α : Fin 2 → Type*) [∀ i, PseudoEMetricSpace (α i)] : (∀ i, α i) ≃ᵢ α 0 × α 1 
goal: (IsometryEquiv.piFinTwo α).symm p i = Fin.cons p.1 (Fin.cons p.2 finZeroElim) i

full_name: IsometryEquiv.piFinTwo_apply
code: /-- `piFinTwoEquiv` as an `IsometryEquiv`. -/
@[simps!]
def piFinTwo (α : Fin 2 → Type*) [∀ i, PseudoEMetricSpace (α i)] : (∀ i, α i) ≃ᵢ α 0 × α 1 
goal: (IsometryEquiv.piFinTwo α) f = (f 0, f 1)

full_name: IsometryEquiv.diam_image
code: @[simp]
theorem diam_image (s : Set α) : Metric.diam (h '' s) = Metric.diam s 
goal: Metric.diam (⇑h '' s) = Metric.diam s

full_name: IsometryEquiv.diam_preimage
code: @[simp]
theorem diam_preimage (s : Set β) : Metric.diam (h ⁻¹' s) = Metric.diam s 
goal: Metric.diam (⇑h ⁻¹' s) = Metric.diam s

full_name: IsometryEquiv.diam_univ
code: theorem diam_univ : Metric.diam (univ : Set α) = Metric.diam (univ : Set β) 
goal: Metric.diam Set.univ = Metric.diam Set.univ

full_name: IsometryEquiv.preimage_ball
code: @[simp]
theorem preimage_ball (h : α ≃ᵢ β) (x : β) (r : ℝ) :
    h ⁻¹' Metric.ball x r = Metric.ball (h.symm x) r 
goal: ⇑h ⁻¹' Metric.ball x r = Metric.ball (h.symm x) r

full_name: IsometryEquiv.preimage_sphere
code: @[simp]
theorem preimage_sphere (h : α ≃ᵢ β) (x : β) (r : ℝ) :
    h ⁻¹' Metric.sphere x r = Metric.sphere (h.symm x) r 
goal: ⇑h ⁻¹' Metric.sphere x r = Metric.sphere (h.symm x) r

full_name: IsometryEquiv.preimage_closedBall
code: @[simp]
theorem preimage_closedBall (h : α ≃ᵢ β) (x : β) (r : ℝ) :
    h ⁻¹' Metric.closedBall x r = Metric.closedBall (h.symm x) r 
goal: ⇑h ⁻¹' Metric.closedBall x r = Metric.closedBall (h.symm x) r

full_name: IsometryEquiv.image_ball
code: @[simp]
theorem image_ball (h : α ≃ᵢ β) (x : α) (r : ℝ) : h '' Metric.ball x r = Metric.ball (h x) r 
goal: ⇑h '' Metric.ball x r = Metric.ball (h x) r

full_name: IsometryEquiv.image_sphere
code: @[simp]
theorem image_sphere (h : α ≃ᵢ β) (x : α) (r : ℝ) :
    h '' Metric.sphere x r = Metric.sphere (h x) r 
goal: ⇑h '' Metric.sphere x r = Metric.sphere (h x) r

full_name: IsometryEquiv.image_closedBall
code: @[simp]
theorem image_closedBall (h : α ≃ᵢ β) (x : α) (r : ℝ) :
    h '' Metric.closedBall x r = Metric.closedBall (h x) r 
goal: ⇑h '' Metric.closedBall x r = Metric.closedBall (h x) r

full_name: Isometry.isometryEquivOnRange
code: /-- An isometry induces an isometric isomorphism between the source space and the
range of the isometry. -/
@[simps! (config := { simpRhs := true }) toEquiv apply]
def Isometry.isometryEquivOnRange [EMetricSpace α] [PseudoEMetricSpace β] {f : α → β}
    (h : Isometry f) : α ≃ᵢ range f 
goal: α ≃ᵢ ↑(Set.range f)

full_name: Isometry.isometryEquivOnRange_toEquiv
code: /-- An isometry induces an isometric isomorphism between the source space and the
range of the isometry. -/
@[simps! (config := { simpRhs := true }) toEquiv apply]
def Isometry.isometryEquivOnRange [EMetricSpace α] [PseudoEMetricSpace β] {f : α → β}
    (h : Isometry f) : α ≃ᵢ range f 
goal: h.isometryEquivOnRange.toEquiv = Equiv.ofInjective f ⋯

full_name: Isometry.isometryEquivOnRange_apply
code: /-- An isometry induces an isometric isomorphism between the source space and the
range of the isometry. -/
@[simps! (config := { simpRhs := true }) toEquiv apply]
def Isometry.isometryEquivOnRange [EMetricSpace α] [PseudoEMetricSpace β] {f : α → β}
    (h : Isometry f) : α ≃ᵢ range f 
goal: h.isometryEquivOnRange a = ⟨f a, ⋯⟩

full_name: Isometry.lipschitzWith_iff
code: /-- Post-composition by an isometry does not change the Lipschitz-property of a function. -/
lemma Isometry.lipschitzWith_iff {α β γ : Type*} [PseudoEMetricSpace α] [PseudoEMetricSpace β]
    [PseudoEMetricSpace γ] {f : α → β} {g : β → γ} (K : ℝ≥0) (h : Isometry g) :
    LipschitzWith K (g ∘ f) ↔ LipschitzWith K f 
goal: LipschitzWith K (g ∘ f) ↔ LipschitzWith K f