File: Mathlib/Analysis/NormedSpace/AffineIsometry.lean

full_name: AffineIsometry
code: /-- A `𝕜`-affine isometric embedding of one normed add-torsor over a normed `𝕜`-space into
another. -/
structure AffineIsometry extends P →ᵃ[𝕜] P₂ where
  norm_map : ∀ x : V, ‖linear x‖ = ‖x‖
goal: Type (max (max (max u_10 u_11) u_2) u_5)

full_name: AffineIsometry.norm_map
code: /-- A `𝕜`-affine isometric embedding of one normed add-torsor over a normed `𝕜`-space into
another. -/
structure AffineIsometry extends P →ᵃ[𝕜] P₂ where
  norm_map : ∀ x : V, ‖linear x‖ = ‖x‖
goal: ‖self.linear x‖ = ‖x‖

full_name: _aux_Mathlib_Analysis_NormedSpace_AffineIsometry___unexpand_AffineIsometry_1
code: @[inherit_doc]
notation:25 -- `→ᵃᵢ` would be more consistent with the linear isometry notation, but it is uglier
P " →ᵃⁱ[" 𝕜:25 "] " P₂:0 => AffineIsometry 𝕜 P P₂
goal: Lean.PrettyPrinter.Unexpander

full_name: «_aux_Mathlib_Analysis_NormedSpace_AffineIsometry___macroRules_term_→ᵃⁱ[_]__1»
code: @[inherit_doc]
notation:25 -- `→ᵃᵢ` would be more consistent with the linear isometry notation, but it is uglier
P " →ᵃⁱ[" 𝕜:25 "] " P₂:0 => AffineIsometry 𝕜 P P₂
goal: Lean.Macro

full_name: AffineIsometry.linearIsometry
code: /-- The underlying linear map of an affine isometry is in fact a linear isometry. -/
protected def linearIsometry : V →ₗᵢ[𝕜] V₂ 
goal: V →ₗᵢ[𝕜] V₂

full_name: AffineIsometry.linear_eq_linearIsometry
code: @[simp]
theorem linear_eq_linearIsometry : f.linear = f.linearIsometry.toLinearMap 
goal: f.linear = f.linearIsometry.toLinearMap

full_name: AffineIsometry.instFunLike
code: instance : FunLike (P →ᵃⁱ[𝕜] P₂) P P₂ 
goal: FunLike (P →ᵃⁱ[𝕜] P₂) P P₂

full_name: AffineIsometry.coe_toAffineMap
code: @[simp]
theorem coe_toAffineMap : ⇑f.toAffineMap = f 
goal: ⇑f.toAffineMap = ⇑f

full_name: AffineIsometry.toAffineMap_injective
code: theorem toAffineMap_injective : Injective (toAffineMap : (P →ᵃⁱ[𝕜] P₂) → P →ᵃ[𝕜] P₂) 
goal: Function.Injective AffineIsometry.toAffineMap

full_name: AffineIsometry.coeFn_injective
code: theorem coeFn_injective : @Injective (P →ᵃⁱ[𝕜] P₂) (P → P₂) (↑) 
goal: Function.Injective DFunLike.coe

full_name: AffineIsometry.ext
code: @[ext]
theorem ext {f g : P →ᵃⁱ[𝕜] P₂} (h : ∀ x, f x = g x) : f = g 
goal: f = g

full_name: LinearIsometry.toAffineIsometry
code: /-- Reinterpret a linear isometry as an affine isometry. -/
def toAffineIsometry : V →ᵃⁱ[𝕜] V₂ 
goal: V →ᵃⁱ[𝕜] V₂

full_name: LinearIsometry.coe_toAffineIsometry
code: @[simp]
theorem coe_toAffineIsometry : ⇑(f.toAffineIsometry : V →ᵃⁱ[𝕜] V₂) = f 
goal: ⇑f.toAffineIsometry = ⇑f

full_name: LinearIsometry.toAffineIsometry_linearIsometry
code: @[simp]
theorem toAffineIsometry_linearIsometry : f.toAffineIsometry.linearIsometry = f 
goal: f.toAffineIsometry.linearIsometry = f

full_name: LinearIsometry.toAffineIsometry_toAffineMap
code: @[simp]
theorem toAffineIsometry_toAffineMap : f.toAffineIsometry.toAffineMap = f.toLinearMap.toAffineMap 
goal: f.toAffineIsometry.toAffineMap = f.toAffineMap

full_name: AffineIsometry.map_vadd
code: @[simp]
theorem map_vadd (p : P) (v : V) : f (v +ᵥ p) = f.linearIsometry v +ᵥ f p 
goal: f (v +ᵥ p) = f.linearIsometry v +ᵥ f p

full_name: AffineIsometry.map_vsub
code: @[simp]
theorem map_vsub (p1 p2 : P) : f.linearIsometry (p1 -ᵥ p2) = f p1 -ᵥ f p2 
goal: f.linearIsometry (p1 -ᵥ p2) = f p1 -ᵥ f p2

full_name: AffineIsometry.dist_map
code: @[simp]
theorem dist_map (x y : P) : dist (f x) (f y) = dist x y 
goal: dist (f x) (f y) = dist x y

full_name: AffineIsometry.nndist_map
code: @[simp]
theorem nndist_map (x y : P) : nndist (f x) (f y) = nndist x y 
goal: nndist (f x) (f y) = nndist x y

full_name: AffineIsometry.edist_map
code: @[simp]
theorem edist_map (x y : P) : edist (f x) (f y) = edist x y 
goal: edist (f x) (f y) = edist x y

full_name: AffineIsometry.isometry
code: protected theorem isometry : Isometry f 
goal: Isometry ⇑f

full_name: AffineIsometry.injective
code: protected theorem injective : Injective f₁ 
goal: Function.Injective ⇑f₁

full_name: AffineIsometry.map_eq_iff
code: @[simp]
theorem map_eq_iff {x y : P₁'} : f₁ x = f₁ y ↔ x = y 
goal: f₁ x = f₁ y ↔ x = y

full_name: AffineIsometry.map_ne
code: theorem map_ne {x y : P₁'} (h : x ≠ y) : f₁ x ≠ f₁ y 
goal: f₁ x ≠ f₁ y

full_name: AffineIsometry.lipschitz
code: protected theorem lipschitz : LipschitzWith 1 f 
goal: LipschitzWith 1 ⇑f

full_name: AffineIsometry.antilipschitz
code: protected theorem antilipschitz : AntilipschitzWith 1 f 
goal: AntilipschitzWith 1 ⇑f

full_name: AffineIsometry.continuous
code: @[continuity]
protected theorem continuous : Continuous f 
goal: Continuous ⇑f

full_name: AffineIsometry.ediam_image
code: theorem ediam_image (s : Set P) : EMetric.diam (f '' s) = EMetric.diam s 
goal: EMetric.diam (⇑f '' s) = EMetric.diam s

full_name: AffineIsometry.ediam_range
code: theorem ediam_range : EMetric.diam (range f) = EMetric.diam (univ : Set P) 
goal: EMetric.diam (Set.range ⇑f) = EMetric.diam Set.univ

full_name: AffineIsometry.diam_image
code: theorem diam_image (s : Set P) : Metric.diam (f '' s) = Metric.diam s 
goal: Metric.diam (⇑f '' s) = Metric.diam s

full_name: AffineIsometry.diam_range
code: theorem diam_range : Metric.diam (range f) = Metric.diam (univ : Set P) 
goal: Metric.diam (Set.range ⇑f) = Metric.diam Set.univ

full_name: AffineIsometry.comp_continuous_iff
code: @[simp]
theorem comp_continuous_iff {α : Type*} [TopologicalSpace α] {g : α → P} :
    Continuous (f ∘ g) ↔ Continuous g 
goal: Continuous (⇑f ∘ g) ↔ Continuous g

full_name: AffineIsometry.id
code: /-- The identity affine isometry. -/
def id : P →ᵃⁱ[𝕜] P 
goal: P →ᵃⁱ[𝕜] P

full_name: AffineIsometry.coe_id
code: @[simp]
theorem coe_id : ⇑(id : P →ᵃⁱ[𝕜] P) = _root_.id 
goal: ⇑AffineIsometry.id = id

full_name: AffineIsometry.id_apply
code: @[simp]
theorem id_apply (x : P) : (AffineIsometry.id : P →ᵃⁱ[𝕜] P) x = x 
goal: AffineIsometry.id x = x

full_name: AffineIsometry.id_toAffineMap
code: @[simp]
theorem id_toAffineMap : (id.toAffineMap : P →ᵃ[𝕜] P) = AffineMap.id 𝕜 P 
goal: AffineIsometry.id.toAffineMap = AffineMap.id 𝕜 P

full_name: AffineIsometry.instInhabited
code: instance : Inhabited (P →ᵃⁱ[𝕜] P) 
goal: Inhabited (P →ᵃⁱ[𝕜] P)

full_name: AffineIsometry.comp
code: /-- Composition of affine isometries. -/
def comp (g : P₂ →ᵃⁱ[𝕜] P₃) (f : P →ᵃⁱ[𝕜] P₂) : P →ᵃⁱ[𝕜] P₃ 
goal: P →ᵃⁱ[𝕜] P₃

full_name: AffineIsometry.coe_comp
code: @[simp]
theorem coe_comp (g : P₂ →ᵃⁱ[𝕜] P₃) (f : P →ᵃⁱ[𝕜] P₂) : ⇑(g.comp f) = g ∘ f 
goal: ⇑(g.comp f) = ⇑g ∘ ⇑f

full_name: AffineIsometry.id_comp
code: @[simp]
theorem id_comp : (id : P₂ →ᵃⁱ[𝕜] P₂).comp f = f 
goal: AffineIsometry.id.comp f = f

full_name: AffineIsometry.comp_id
code: @[simp]
theorem comp_id : f.comp id = f 
goal: f.comp AffineIsometry.id = f

full_name: AffineIsometry.comp_assoc
code: theorem comp_assoc (f : P₃ →ᵃⁱ[𝕜] P₄) (g : P₂ →ᵃⁱ[𝕜] P₃) (h : P →ᵃⁱ[𝕜] P₂) :
    (f.comp g).comp h = f.comp (g.comp h) 
goal: (f.comp g).comp h = f.comp (g.comp h)

full_name: AffineIsometry.instMonoid
code: instance : Monoid (P →ᵃⁱ[𝕜] P) 
goal: Monoid (P →ᵃⁱ[𝕜] P)

full_name: AffineIsometry.coe_one
code: @[simp]
theorem coe_one : ⇑(1 : P →ᵃⁱ[𝕜] P) = _root_.id 
goal: ⇑1 = id

full_name: AffineIsometry.coe_mul
code: @[simp]
theorem coe_mul (f g : P →ᵃⁱ[𝕜] P) : ⇑(f * g) = f ∘ g 
goal: ⇑(f * g) = ⇑f ∘ ⇑g

full_name: AffineSubspace.subtypeₐᵢ
code: /-- `AffineSubspace.subtype` as an `AffineIsometry`. -/
def subtypeₐᵢ (s : AffineSubspace 𝕜 P) [Nonempty s] : s →ᵃⁱ[𝕜] P 
goal: ↥s →ᵃⁱ[𝕜] P

full_name: AffineSubspace.subtypeₐᵢ_linear
code: theorem subtypeₐᵢ_linear (s : AffineSubspace 𝕜 P) [Nonempty s] :
    s.subtypeₐᵢ.linear = s.direction.subtype 
goal: s.subtypeₐᵢ.linear = s.direction.subtype

full_name: AffineSubspace.subtypeₐᵢ_linearIsometry
code: @[simp]
theorem subtypeₐᵢ_linearIsometry (s : AffineSubspace 𝕜 P) [Nonempty s] :
    s.subtypeₐᵢ.linearIsometry = s.direction.subtypeₗᵢ 
goal: s.subtypeₐᵢ.linearIsometry = s.direction.subtypeₗᵢ

full_name: AffineSubspace.coe_subtypeₐᵢ
code: @[simp]
theorem coe_subtypeₐᵢ (s : AffineSubspace 𝕜 P) [Nonempty s] : ⇑s.subtypeₐᵢ = s.subtype 
goal: ⇑s.subtypeₐᵢ = ⇑s.subtype

full_name: AffineSubspace.subtypeₐᵢ_toAffineMap
code: @[simp]
theorem subtypeₐᵢ_toAffineMap (s : AffineSubspace 𝕜 P) [Nonempty s] :
    s.subtypeₐᵢ.toAffineMap = s.subtype 
goal: s.subtypeₐᵢ.toAffineMap = s.subtype

full_name: AffineIsometryEquiv
code: /-- An affine isometric equivalence between two normed vector spaces. -/
structure AffineIsometryEquiv extends P ≃ᵃ[𝕜] P₂ where
  norm_map : ∀ x, ‖linear x‖ = ‖x‖
goal: Type (max (max (max u_10 u_11) u_2) u_5)

full_name: AffineIsometryEquiv.norm_map
code: /-- An affine isometric equivalence between two normed vector spaces. -/
structure AffineIsometryEquiv extends P ≃ᵃ[𝕜] P₂ where
  norm_map : ∀ x, ‖linear x‖ = ‖x‖
goal: ‖self.linear x‖ = ‖x‖

full_name: _aux_Mathlib_Analysis_NormedSpace_AffineIsometry___unexpand_AffineIsometryEquiv_1
code: notation:25 P " ≃ᵃⁱ[" 𝕜:25 "] " P₂:0 => AffineIsometryEquiv 𝕜 P P₂
goal: Lean.PrettyPrinter.Unexpander

full_name: «_aux_Mathlib_Analysis_NormedSpace_AffineIsometry___macroRules_term_≃ᵃⁱ[_]__1»
code: notation:25 P " ≃ᵃⁱ[" 𝕜:25 "] " P₂:0 => AffineIsometryEquiv 𝕜 P P₂
goal: Lean.Macro

full_name: AffineIsometryEquiv.linearIsometryEquiv
code: /-- The underlying linear equiv of an affine isometry equiv is in fact a linear isometry equiv. -/
protected def linearIsometryEquiv : V ≃ₗᵢ[𝕜] V₂ 
goal: V ≃ₗᵢ[𝕜] V₂

full_name: AffineIsometryEquiv.linear_eq_linear_isometry
code: @[simp]
theorem linear_eq_linear_isometry : e.linear = e.linearIsometryEquiv.toLinearEquiv 
goal: e.linear = e.linearIsometryEquiv.toLinearEquiv

full_name: AffineIsometryEquiv.instEquivLike
code: instance : EquivLike (P ≃ᵃⁱ[𝕜] P₂) P P₂ 
goal: EquivLike (P ≃ᵃⁱ[𝕜] P₂) P P₂

full_name: AffineIsometryEquiv.coe_mk
code: @[simp]
theorem coe_mk (e : P ≃ᵃ[𝕜] P₂) (he : ∀ x, ‖e.linear x‖ = ‖x‖) : ⇑(mk e he) = e 
goal: ⇑{ toAffineEquiv := e, norm_map := he } = ⇑e

full_name: AffineIsometryEquiv.coe_toAffineEquiv
code: @[simp]
theorem coe_toAffineEquiv (e : P ≃ᵃⁱ[𝕜] P₂) : ⇑e.toAffineEquiv = e 
goal: ⇑e.toAffineEquiv = ⇑e

full_name: AffineIsometryEquiv.toAffineEquiv_injective
code: theorem toAffineEquiv_injective : Injective (toAffineEquiv : (P ≃ᵃⁱ[𝕜] P₂) → P ≃ᵃ[𝕜] P₂)
  
goal: Function.Injective AffineIsometryEquiv.toAffineEquiv

full_name: AffineIsometryEquiv.ext
code: @[ext]
theorem ext {e e' : P ≃ᵃⁱ[𝕜] P₂} (h : ∀ x, e x = e' x) : e = e' 
goal: e = e'

full_name: AffineIsometryEquiv.toAffineIsometry
code: /-- Reinterpret an `AffineIsometryEquiv` as an `AffineIsometry`. -/
def toAffineIsometry : P →ᵃⁱ[𝕜] P₂ 
goal: P →ᵃⁱ[𝕜] P₂

full_name: AffineIsometryEquiv.coe_toAffineIsometry
code: @[simp]
theorem coe_toAffineIsometry : ⇑e.toAffineIsometry = e 
goal: ⇑e.toAffineIsometry = ⇑e

full_name: AffineIsometryEquiv.mk'
code: /-- Construct an affine isometry equivalence by verifying the relation between the map and its
linear part at one base point. Namely, this function takes a map `e : P₁ → P₂`, a linear isometry
equivalence `e' : V₁ ≃ᵢₗ[k] V₂`, and a point `p` such that for any other point `p'` we have
`e p' = e' (p' -ᵥ p) +ᵥ e p`. -/
def mk' (e : P₁ → P₂) (e' : V₁ ≃ₗᵢ[𝕜] V₂) (p : P₁) (h : ∀ p' : P₁, e p' = e' (p' -ᵥ p) +ᵥ e p) :
    P₁ ≃ᵃⁱ[𝕜] P₂ 
goal: P₁ ≃ᵃⁱ[𝕜] P₂

full_name: AffineIsometryEquiv.coe_mk'
code: @[simp]
theorem coe_mk' (e : P₁ → P₂) (e' : V₁ ≃ₗᵢ[𝕜] V₂) (p h) : ⇑(mk' e e' p h) = e 
goal: ⇑(AffineIsometryEquiv.mk' e e' p h) = e

full_name: AffineIsometryEquiv.linearIsometryEquiv_mk'
code: @[simp]
theorem linearIsometryEquiv_mk' (e : P₁ → P₂) (e' : V₁ ≃ₗᵢ[𝕜] V₂) (p h) :
    (mk' e e' p h).linearIsometryEquiv = e' 
goal: (AffineIsometryEquiv.mk' e e' p h).linearIsometryEquiv = e'

full_name: LinearIsometryEquiv.toAffineIsometryEquiv
code: /-- Reinterpret a linear isometry equiv as an affine isometry equiv. -/
def toAffineIsometryEquiv : V ≃ᵃⁱ[𝕜] V₂ 
goal: V ≃ᵃⁱ[𝕜] V₂

full_name: LinearIsometryEquiv.coe_toAffineIsometryEquiv
code: @[simp]
theorem coe_toAffineIsometryEquiv : ⇑(e.toAffineIsometryEquiv : V ≃ᵃⁱ[𝕜] V₂) = e 
goal: ⇑e.toAffineIsometryEquiv = ⇑e

full_name: LinearIsometryEquiv.toAffineIsometryEquiv_linearIsometryEquiv
code: @[simp]
theorem toAffineIsometryEquiv_linearIsometryEquiv :
    e.toAffineIsometryEquiv.linearIsometryEquiv = e 
goal: e.toAffineIsometryEquiv.linearIsometryEquiv = e

full_name: LinearIsometryEquiv.toAffineIsometryEquiv_toAffineEquiv
code: @[simp]
theorem toAffineIsometryEquiv_toAffineEquiv :
    e.toAffineIsometryEquiv.toAffineEquiv = e.toLinearEquiv.toAffineEquiv 
goal: e.toAffineIsometryEquiv.toAffineEquiv = e.toAffineEquiv

full_name: LinearIsometryEquiv.toAffineIsometryEquiv_toAffineIsometry
code: @[simp]
theorem toAffineIsometryEquiv_toAffineIsometry :
    e.toAffineIsometryEquiv.toAffineIsometry = e.toLinearIsometry.toAffineIsometry 
goal: e.toAffineIsometryEquiv.toAffineIsometry = e.toLinearIsometry.toAffineIsometry

full_name: AffineIsometryEquiv.isometry
code: protected theorem isometry : Isometry e 
goal: Isometry ⇑e

full_name: AffineIsometryEquiv.toIsometryEquiv
code: /-- Reinterpret an `AffineIsometryEquiv` as an `IsometryEquiv`. -/
def toIsometryEquiv : P ≃ᵢ P₂ 
goal: P ≃ᵢ P₂

full_name: AffineIsometryEquiv.coe_toIsometryEquiv
code: @[simp]
theorem coe_toIsometryEquiv : ⇑e.toIsometryEquiv = e 
goal: ⇑e.toIsometryEquiv = ⇑e

full_name: AffineIsometryEquiv.range_eq_univ
code: theorem range_eq_univ (e : P ≃ᵃⁱ[𝕜] P₂) : Set.range e = Set.univ 
goal: Set.range ⇑e = Set.univ

full_name: AffineIsometryEquiv.toHomeomorph
code: /-- Reinterpret an `AffineIsometryEquiv` as a `Homeomorph`. -/
def toHomeomorph : P ≃ₜ P₂ 
goal: P ≃ₜ P₂

full_name: AffineIsometryEquiv.coe_toHomeomorph
code: @[simp]
theorem coe_toHomeomorph : ⇑e.toHomeomorph = e 
goal: ⇑e.toHomeomorph = ⇑e

full_name: AffineIsometryEquiv.continuous
code: protected theorem continuous : Continuous e 
goal: Continuous ⇑e

full_name: AffineIsometryEquiv.continuousAt
code: protected theorem continuousAt {x} : ContinuousAt e x 
goal: ContinuousAt (⇑e) x

full_name: AffineIsometryEquiv.continuousOn
code: protected theorem continuousOn {s} : ContinuousOn e s 
goal: ContinuousOn (⇑e) s

full_name: AffineIsometryEquiv.continuousWithinAt
code: protected theorem continuousWithinAt {s x} : ContinuousWithinAt e s x 
goal: ContinuousWithinAt (⇑e) s x

full_name: AffineIsometryEquiv.refl
code: /-- Identity map as an `AffineIsometryEquiv`. -/
def refl : P ≃ᵃⁱ[𝕜] P 
goal: P ≃ᵃⁱ[𝕜] P

full_name: AffineIsometryEquiv.instInhabited
code: instance : Inhabited (P ≃ᵃⁱ[𝕜] P) 
goal: Inhabited (P ≃ᵃⁱ[𝕜] P)

full_name: AffineIsometryEquiv.coe_refl
code: @[simp]
theorem coe_refl : ⇑(refl 𝕜 P) = id 
goal: ⇑(AffineIsometryEquiv.refl 𝕜 P) = id

full_name: AffineIsometryEquiv.toAffineEquiv_refl
code: @[simp]
theorem toAffineEquiv_refl : (refl 𝕜 P).toAffineEquiv = AffineEquiv.refl 𝕜 P 
goal: (AffineIsometryEquiv.refl 𝕜 P).toAffineEquiv = AffineEquiv.refl 𝕜 P

full_name: AffineIsometryEquiv.toIsometryEquiv_refl
code: @[simp]
theorem toIsometryEquiv_refl : (refl 𝕜 P).toIsometryEquiv = IsometryEquiv.refl P 
goal: (AffineIsometryEquiv.refl 𝕜 P).toIsometryEquiv = IsometryEquiv.refl P

full_name: AffineIsometryEquiv.toHomeomorph_refl
code: @[simp]
theorem toHomeomorph_refl : (refl 𝕜 P).toHomeomorph = Homeomorph.refl P 
goal: (AffineIsometryEquiv.refl 𝕜 P).toHomeomorph = Homeomorph.refl P

full_name: AffineIsometryEquiv.symm
code: /-- The inverse `AffineIsometryEquiv`. -/
def symm : P₂ ≃ᵃⁱ[𝕜] P 
goal: P₂ ≃ᵃⁱ[𝕜] P

full_name: AffineIsometryEquiv.apply_symm_apply
code: @[simp]
theorem apply_symm_apply (x : P₂) : e (e.symm x) = x 
goal: e (e.symm x) = x

full_name: AffineIsometryEquiv.symm_apply_apply
code: @[simp]
theorem symm_apply_apply (x : P) : e.symm (e x) = x 
goal: e.symm (e x) = x

full_name: AffineIsometryEquiv.symm_symm
code: @[simp]
theorem symm_symm : e.symm.symm = e 
goal: e.symm.symm = e

full_name: AffineIsometryEquiv.toAffineEquiv_symm
code: @[simp]
theorem toAffineEquiv_symm : e.toAffineEquiv.symm = e.symm.toAffineEquiv 
goal: e.symm = e.symm.toAffineEquiv

full_name: AffineIsometryEquiv.toIsometryEquiv_symm
code: @[simp]
theorem toIsometryEquiv_symm : e.toIsometryEquiv.symm = e.symm.toIsometryEquiv 
goal: e.toIsometryEquiv.symm = e.symm.toIsometryEquiv

full_name: AffineIsometryEquiv.toHomeomorph_symm
code: @[simp]
theorem toHomeomorph_symm : e.toHomeomorph.symm = e.symm.toHomeomorph 
goal: e.toHomeomorph.symm = e.symm.toHomeomorph

full_name: AffineIsometryEquiv.trans
code: /-- Composition of `AffineIsometryEquiv`s as an `AffineIsometryEquiv`. -/
def trans (e' : P₂ ≃ᵃⁱ[𝕜] P₃) : P ≃ᵃⁱ[𝕜] P₃ 
goal: P ≃ᵃⁱ[𝕜] P₃

full_name: AffineIsometryEquiv.coe_trans
code: @[simp]
theorem coe_trans (e₁ : P ≃ᵃⁱ[𝕜] P₂) (e₂ : P₂ ≃ᵃⁱ[𝕜] P₃) : ⇑(e₁.trans e₂) = e₂ ∘ e₁ 
goal: ⇑(e₁.trans e₂) = ⇑e₂ ∘ ⇑e₁

full_name: AffineIsometryEquiv.trans_refl
code: @[simp]
theorem trans_refl : e.trans (refl 𝕜 P₂) = e 
goal: e.trans (AffineIsometryEquiv.refl 𝕜 P₂) = e

full_name: AffineIsometryEquiv.refl_trans
code: @[simp]
theorem refl_trans : (refl 𝕜 P).trans e = e 
goal: (AffineIsometryEquiv.refl 𝕜 P).trans e = e

full_name: AffineIsometryEquiv.self_trans_symm
code: @[simp]
theorem self_trans_symm : e.trans e.symm = refl 𝕜 P 
goal: e.trans e.symm = AffineIsometryEquiv.refl 𝕜 P

full_name: AffineIsometryEquiv.symm_trans_self
code: @[simp]
theorem symm_trans_self : e.symm.trans e = refl 𝕜 P₂ 
goal: e.symm.trans e = AffineIsometryEquiv.refl 𝕜 P₂

full_name: AffineIsometryEquiv.coe_symm_trans
code: @[simp]
theorem coe_symm_trans (e₁ : P ≃ᵃⁱ[𝕜] P₂) (e₂ : P₂ ≃ᵃⁱ[𝕜] P₃) :
    ⇑(e₁.trans e₂).symm = e₁.symm ∘ e₂.symm 
goal: ⇑(e₁.trans e₂).symm = ⇑e₁.symm ∘ ⇑e₂.symm

full_name: AffineIsometryEquiv.trans_assoc
code: theorem trans_assoc (ePP₂ : P ≃ᵃⁱ[𝕜] P₂) (eP₂G : P₂ ≃ᵃⁱ[𝕜] P₃) (eGG' : P₃ ≃ᵃⁱ[𝕜] P₄) :
    ePP₂.trans (eP₂G.trans eGG') = (ePP₂.trans eP₂G).trans eGG' 
goal: ePP₂.trans (eP₂G.trans eGG') = (ePP₂.trans eP₂G).trans eGG'

full_name: AffineIsometryEquiv.instGroup
code: /-- The group of affine isometries of a `NormedAddTorsor`, `P`. -/
instance instGroup : Group (P ≃ᵃⁱ[𝕜] P) 
goal: Group (P ≃ᵃⁱ[𝕜] P)

full_name: AffineIsometryEquiv.coe_one
code: @[simp]
theorem coe_one : ⇑(1 : P ≃ᵃⁱ[𝕜] P) = id 
goal: ⇑1 = id

full_name: AffineIsometryEquiv.coe_mul
code: @[simp]
theorem coe_mul (e e' : P ≃ᵃⁱ[𝕜] P) : ⇑(e * e') = e ∘ e' 
goal: ⇑(e * e') = ⇑e ∘ ⇑e'

full_name: AffineIsometryEquiv.coe_inv
code: @[simp]
theorem coe_inv (e : P ≃ᵃⁱ[𝕜] P) : ⇑e⁻¹ = e.symm 
goal: ⇑e⁻¹ = ⇑e.symm

full_name: AffineIsometryEquiv.map_vadd
code: @[simp]
theorem map_vadd (p : P) (v : V) : e (v +ᵥ p) = e.linearIsometryEquiv v +ᵥ e p 
goal: e (v +ᵥ p) = e.linearIsometryEquiv v +ᵥ e p

full_name: AffineIsometryEquiv.map_vsub
code: @[simp]
theorem map_vsub (p1 p2 : P) : e.linearIsometryEquiv (p1 -ᵥ p2) = e p1 -ᵥ e p2 
goal: e.linearIsometryEquiv (p1 -ᵥ p2) = e p1 -ᵥ e p2

full_name: AffineIsometryEquiv.dist_map
code: @[simp]
theorem dist_map (x y : P) : dist (e x) (e y) = dist x y 
goal: dist (e x) (e y) = dist x y

full_name: AffineIsometryEquiv.edist_map
code: @[simp]
theorem edist_map (x y : P) : edist (e x) (e y) = edist x y 
goal: edist (e x) (e y) = edist x y

full_name: AffineIsometryEquiv.bijective
code: protected theorem bijective : Bijective e 
goal: Function.Bijective ⇑e

full_name: AffineIsometryEquiv.injective
code: protected theorem injective : Injective e 
goal: Function.Injective ⇑e

full_name: AffineIsometryEquiv.surjective
code: protected theorem surjective : Surjective e 
goal: Function.Surjective ⇑e

full_name: AffineIsometryEquiv.map_eq_iff
code: theorem map_eq_iff {x y : P} : e x = e y ↔ x = y 
goal: e x = e y ↔ x = y

full_name: AffineIsometryEquiv.map_ne
code: theorem map_ne {x y : P} (h : x ≠ y) : e x ≠ e y 
goal: e x ≠ e y

full_name: AffineIsometryEquiv.lipschitz
code: protected theorem lipschitz : LipschitzWith 1 e 
goal: LipschitzWith 1 ⇑e

full_name: AffineIsometryEquiv.antilipschitz
code: protected theorem antilipschitz : AntilipschitzWith 1 e 
goal: AntilipschitzWith 1 ⇑e

full_name: AffineIsometryEquiv.ediam_image
code: @[simp]
theorem ediam_image (s : Set P) : EMetric.diam (e '' s) = EMetric.diam s 
goal: EMetric.diam (⇑e '' s) = EMetric.diam s

full_name: AffineIsometryEquiv.diam_image
code: @[simp]
theorem diam_image (s : Set P) : Metric.diam (e '' s) = Metric.diam s 
goal: Metric.diam (⇑e '' s) = Metric.diam s

full_name: AffineIsometryEquiv.comp_continuousOn_iff
code: @[simp]
theorem comp_continuousOn_iff {f : α → P} {s : Set α} : ContinuousOn (e ∘ f) s ↔ ContinuousOn f s 
goal: ContinuousOn (⇑e ∘ f) s ↔ ContinuousOn f s

full_name: AffineIsometryEquiv.comp_continuous_iff
code: @[simp]
theorem comp_continuous_iff {f : α → P} : Continuous (e ∘ f) ↔ Continuous f 
goal: Continuous (⇑e ∘ f) ↔ Continuous f

full_name: AffineIsometryEquiv.vaddConst
code: /-- The map `v ↦ v +ᵥ p` as an affine isometric equivalence between `V` and `P`. -/
def vaddConst (p : P) : V ≃ᵃⁱ[𝕜] P 
goal: V ≃ᵃⁱ[𝕜] P

full_name: AffineIsometryEquiv.coe_vaddConst
code: @[simp]
theorem coe_vaddConst (p : P) : ⇑(vaddConst 𝕜 p) = fun v => v +ᵥ p 
goal: ⇑(AffineIsometryEquiv.vaddConst 𝕜 p) = fun v => v +ᵥ p

full_name: AffineIsometryEquiv.coe_vaddConst'
code: @[simp]
theorem coe_vaddConst' (p : P) : ↑(AffineEquiv.vaddConst 𝕜 p) = fun v => v +ᵥ p 
goal: ⇑(AffineEquiv.vaddConst 𝕜 p) = fun v => v +ᵥ p

full_name: AffineIsometryEquiv.coe_vaddConst_symm
code: @[simp]
theorem coe_vaddConst_symm (p : P) : ⇑(vaddConst 𝕜 p).symm = fun p' => p' -ᵥ p 
goal: ⇑(AffineIsometryEquiv.vaddConst 𝕜 p).symm = fun p' => p' -ᵥ p

full_name: AffineIsometryEquiv.vaddConst_toAffineEquiv
code: @[simp]
theorem vaddConst_toAffineEquiv (p : P) :
    (vaddConst 𝕜 p).toAffineEquiv = AffineEquiv.vaddConst 𝕜 p 
goal: (AffineIsometryEquiv.vaddConst 𝕜 p).toAffineEquiv = AffineEquiv.vaddConst 𝕜 p

full_name: AffineIsometryEquiv.constVSub
code: /-- `p' ↦ p -ᵥ p'` as an affine isometric equivalence. -/
def constVSub (p : P) : P ≃ᵃⁱ[𝕜] V 
goal: P ≃ᵃⁱ[𝕜] V

full_name: AffineIsometryEquiv.coe_constVSub
code: @[simp]
theorem coe_constVSub (p : P) : ⇑(constVSub 𝕜 p) = (p -ᵥ ·) 
goal: ⇑(AffineIsometryEquiv.constVSub 𝕜 p) = fun x => p -ᵥ x

full_name: AffineIsometryEquiv.symm_constVSub
code: @[simp]
theorem symm_constVSub (p : P) :
    (constVSub 𝕜 p).symm =
      (LinearIsometryEquiv.neg 𝕜).toAffineIsometryEquiv.trans (vaddConst 𝕜 p) 
goal: (AffineIsometryEquiv.constVSub 𝕜 p).symm =
  (LinearIsometryEquiv.neg 𝕜).toAffineIsometryEquiv.trans (AffineIsometryEquiv.vaddConst 𝕜 p)

full_name: AffineIsometryEquiv.constVAdd
code: /-- Translation by `v` (that is, the map `p ↦ v +ᵥ p`) as an affine isometric automorphism of `P`.
-/
def constVAdd (v : V) : P ≃ᵃⁱ[𝕜] P 
goal: P ≃ᵃⁱ[𝕜] P

full_name: AffineIsometryEquiv.coe_constVAdd
code: @[simp]
theorem coe_constVAdd (v : V) : ⇑(constVAdd 𝕜 P v : P ≃ᵃⁱ[𝕜] P) = (v +ᵥ ·) 
goal: ⇑(AffineIsometryEquiv.constVAdd 𝕜 P v) = fun x => v +ᵥ x

full_name: AffineIsometryEquiv.constVAdd_zero
code: @[simp]
theorem constVAdd_zero : constVAdd 𝕜 P (0 : V) = refl 𝕜 P 
goal: AffineIsometryEquiv.constVAdd 𝕜 P 0 = AffineIsometryEquiv.refl 𝕜 P

full_name: AffineIsometryEquiv.vadd_vsub
code: /-- The map `g` from `V` to `V₂` corresponding to a map `f` from `P` to `P₂`, at a base point `p`,
is an isometry if `f` is one. -/
theorem vadd_vsub {f : P → P₂} (hf : Isometry f) {p : P} {g : V → V₂}
    (hg : ∀ v, g v = f (v +ᵥ p) -ᵥ f p) : Isometry g 
goal: Isometry g

full_name: AffineIsometryEquiv.pointReflection
code: /-- Point reflection in `x` as an affine isometric automorphism. -/
def pointReflection (x : P) : P ≃ᵃⁱ[𝕜] P 
goal: P ≃ᵃⁱ[𝕜] P

full_name: AffineIsometryEquiv.pointReflection_apply
code: theorem pointReflection_apply (x y : P) : (pointReflection 𝕜 x) y = x -ᵥ y +ᵥ x 
goal: (AffineIsometryEquiv.pointReflection 𝕜 x) y = x -ᵥ y +ᵥ x

full_name: AffineIsometryEquiv.pointReflection_toAffineEquiv
code: @[simp]
theorem pointReflection_toAffineEquiv (x : P) :
    (pointReflection 𝕜 x).toAffineEquiv = AffineEquiv.pointReflection 𝕜 x 
goal: (AffineIsometryEquiv.pointReflection 𝕜 x).toAffineEquiv = AffineEquiv.pointReflection 𝕜 x

full_name: AffineIsometryEquiv.pointReflection_self
code: @[simp]
theorem pointReflection_self (x : P) : pointReflection 𝕜 x x = x 
goal: (AffineIsometryEquiv.pointReflection 𝕜 x) x = x

full_name: AffineIsometryEquiv.pointReflection_involutive
code: theorem pointReflection_involutive (x : P) : Function.Involutive (pointReflection 𝕜 x) 
goal: Function.Involutive ⇑(AffineIsometryEquiv.pointReflection 𝕜 x)

full_name: AffineIsometryEquiv.pointReflection_symm
code: @[simp]
theorem pointReflection_symm (x : P) : (pointReflection 𝕜 x).symm = pointReflection 𝕜 x 
goal: (AffineIsometryEquiv.pointReflection 𝕜 x).symm = AffineIsometryEquiv.pointReflection 𝕜 x

full_name: AffineIsometryEquiv.dist_pointReflection_fixed
code: @[simp]
theorem dist_pointReflection_fixed (x y : P) : dist (pointReflection 𝕜 x y) x = dist y x 
goal: dist ((AffineIsometryEquiv.pointReflection 𝕜 x) y) x = dist y x

full_name: AffineIsometryEquiv.dist_pointReflection_self'
code: theorem dist_pointReflection_self' (x y : P) :
    dist (pointReflection 𝕜 x y) y = ‖2 • (x -ᵥ y)‖ 
goal: dist ((AffineIsometryEquiv.pointReflection 𝕜 x) y) y = ‖2 • (x -ᵥ y)‖

full_name: AffineIsometryEquiv.dist_pointReflection_self
code: theorem dist_pointReflection_self (x y : P) :
    dist (pointReflection 𝕜 x y) y = ‖(2 : 𝕜)‖ * dist x y 
goal: dist ((AffineIsometryEquiv.pointReflection 𝕜 x) y) y = ‖2‖ * dist x y

full_name: AffineIsometryEquiv.pointReflection_fixed_iff
code: theorem pointReflection_fixed_iff [Invertible (2 : 𝕜)] {x y : P} :
    pointReflection 𝕜 x y = y ↔ y = x 
goal: (AffineIsometryEquiv.pointReflection 𝕜 x) y = y ↔ y = x

full_name: AffineIsometryEquiv.dist_pointReflection_self_real
code: theorem dist_pointReflection_self_real (x y : P) :
    dist (pointReflection ℝ x y) y = 2 * dist x y 
goal: dist ((AffineIsometryEquiv.pointReflection ℝ x) y) y = 2 * dist x y

full_name: AffineIsometryEquiv.pointReflection_midpoint_left
code: @[simp]
theorem pointReflection_midpoint_left (x y : P) : pointReflection ℝ (midpoint ℝ x y) x = y 
goal: (AffineIsometryEquiv.pointReflection ℝ (midpoint ℝ x y)) x = y

full_name: AffineIsometryEquiv.pointReflection_midpoint_right
code: @[simp]
theorem pointReflection_midpoint_right (x y : P) : pointReflection ℝ (midpoint ℝ x y) y = x 
goal: (AffineIsometryEquiv.pointReflection ℝ (midpoint ℝ x y)) y = x

full_name: AffineMap.continuous_linear_iff
code: /-- If `f` is an affine map, then its linear part is continuous iff `f` is continuous. -/
theorem AffineMap.continuous_linear_iff {f : P →ᵃ[𝕜] P₂} : Continuous f.linear ↔ Continuous f 
goal: Continuous ⇑f.linear ↔ Continuous ⇑f

full_name: AffineMap.isOpenMap_linear_iff
code: /-- If `f` is an affine map, then its linear part is an open map iff `f` is an open map. -/
theorem AffineMap.isOpenMap_linear_iff {f : P →ᵃ[𝕜] P₂} : IsOpenMap f.linear ↔ IsOpenMap f 
goal: IsOpenMap ⇑f.linear ↔ IsOpenMap ⇑f

full_name: AffineSubspace.equivMapOfInjective
code: /-- An affine subspace is isomorphic to its image under an injective affine map.
This is the affine version of `Submodule.equivMapOfInjective`.
-/
@[simps linear, simps! toFun]
noncomputable def equivMapOfInjective (E : AffineSubspace 𝕜 P₁) [Nonempty E] (φ : P₁ →ᵃ[𝕜] P₂)
    (hφ : Function.Injective φ) : E ≃ᵃ[𝕜] E.map φ 
goal: ↥E ≃ᵃ[𝕜] ↥(AffineSubspace.map φ E)

full_name: AffineSubspace.linear_equivMapOfInjective
code: /-- An affine subspace is isomorphic to its image under an injective affine map.
This is the affine version of `Submodule.equivMapOfInjective`.
-/
@[simps linear, simps! toFun]
noncomputable def equivMapOfInjective (E : AffineSubspace 𝕜 P₁) [Nonempty E] (φ : P₁ →ᵃ[𝕜] P₂)
    (hφ : Function.Injective φ) : E ≃ᵃ[𝕜] E.map φ 
goal: (E.equivMapOfInjective φ hφ).linear =
  (Submodule.equivMapOfInjective φ.linear ⋯ E.direction).trans
    (LinearEquiv.ofEq (Submodule.map φ.linear E.direction) (AffineSubspace.map φ E).direction ⋯)

full_name: AffineSubspace.equivMapOfInjective_toFun
code: /-- An affine subspace is isomorphic to its image under an injective affine map.
This is the affine version of `Submodule.equivMapOfInjective`.
-/
@[simps linear, simps! toFun]
noncomputable def equivMapOfInjective (E : AffineSubspace 𝕜 P₁) [Nonempty E] (φ : P₁ →ᵃ[𝕜] P₂)
    (hφ : Function.Injective φ) : E ≃ᵃ[𝕜] E.map φ 
goal: (E.equivMapOfInjective φ hφ) p = ⟨φ ↑p, ⋯⟩

full_name: AffineSubspace.isometryEquivMap
code: /-- Restricts an affine isometry to an affine isometry equivalence between a nonempty affine
subspace `E` and its image.

This is an isometry version of `AffineSubspace.equivMap`, having a stronger premise and a stronger
conclusion.
-/
noncomputable def isometryEquivMap (φ : P₁' →ᵃⁱ[𝕜] P₂) (E : AffineSubspace 𝕜 P₁') [Nonempty E] :
    E ≃ᵃⁱ[𝕜] E.map φ.toAffineMap 
goal: ↥E ≃ᵃⁱ[𝕜] ↥(AffineSubspace.map φ.toAffineMap E)

full_name: AffineSubspace.isometryEquivMap.apply_symm_apply
code: @[simp]
theorem isometryEquivMap.apply_symm_apply {E : AffineSubspace 𝕜 P₁'} [Nonempty E]
    {φ : P₁' →ᵃⁱ[𝕜] P₂} (x : E.map φ.toAffineMap) : φ ((E.isometryEquivMap φ).symm x) = x 
goal: φ ↑((AffineSubspace.isometryEquivMap φ E).symm x) = ↑x

full_name: AffineSubspace.isometryEquivMap.coe_apply
code: @[simp]
theorem isometryEquivMap.coe_apply (φ : P₁' →ᵃⁱ[𝕜] P₂) (E : AffineSubspace 𝕜 P₁') [Nonempty E]
    (g : E) : ↑(E.isometryEquivMap φ g) = φ g 
goal: ↑((AffineSubspace.isometryEquivMap φ E) g) = φ ↑g

full_name: AffineSubspace.isometryEquivMap.toAffineMap_eq
code: @[simp]
theorem isometryEquivMap.toAffineMap_eq (φ : P₁' →ᵃⁱ[𝕜] P₂) (E : AffineSubspace 𝕜 P₁')
    [Nonempty E] :
    (E.isometryEquivMap φ).toAffineMap = E.equivMapOfInjective φ.toAffineMap φ.injective 
goal: ↑(AffineSubspace.isometryEquivMap φ E).toAffineEquiv = ↑(E.equivMapOfInjective φ.toAffineMap ⋯)