File: Mathlib/Geometry/Manifold/Diffeomorph.lean

full_name: Diffeomorph.contMDiff_invFun
code: /-- `n`-times continuously differentiable diffeomorphism between `M` and `M'` with respect to `I`
and `I'`. -/
-- Porting note(#5171): was @[nolint has_nonempty_instance]
structure Diffeomorph extends M ≃ M' where
  protected contMDiff_toFun : ContMDiff I I' n toEquiv
  protected contMDiff_invFun : ContMDiff I' I n toEquiv.symm
goal: ContMDiff I' I n ⇑self.symm

full_name: Diffeomorph.contMDiff_toFun
code: /-- `n`-times continuously differentiable diffeomorphism between `M` and `M'` with respect to `I`
and `I'`. -/
-- Porting note(#5171): was @[nolint has_nonempty_instance]
structure Diffeomorph extends M ≃ M' where
  protected contMDiff_toFun : ContMDiff I I' n toEquiv
  protected contMDiff_invFun : ContMDiff I' I n toEquiv.symm
goal: ContMDiff I I' n ⇑self.toEquiv

full_name: Diffeomorph
code: /-- `n`-times continuously differentiable diffeomorphism between `M` and `M'` with respect to `I`
and `I'`. -/
-- Porting note(#5171): was @[nolint has_nonempty_instance]
structure Diffeomorph extends M ≃ M' where
  protected contMDiff_toFun : ContMDiff I I' n toEquiv
  protected contMDiff_invFun : ContMDiff I' I n toEquiv.symm
goal: Type (max u_10 u_9)

full_name: Manifold.«_aux_Mathlib_Geometry_Manifold_Diffeomorph___macroRules_Manifold_term_≃ₘ^_⟮_,_⟯__1»
code: @[inherit_doc]
scoped[Manifold] notation M " ≃ₘ^" n:1000 "⟮" I ", " J "⟯ " N => Diffeomorph I J M N n
goal: Lean.Macro

full_name: Manifold._aux_Mathlib_Geometry_Manifold_Diffeomorph___unexpand_Diffeomorph_1
code: @[inherit_doc]
scoped[Manifold] notation M " ≃ₘ^" n:1000 "⟮" I ", " J "⟯ " N => Diffeomorph I J M N n
goal: Lean.PrettyPrinter.Unexpander

full_name: Manifold._aux_Mathlib_Geometry_Manifold_Diffeomorph___unexpand_Diffeomorph_2
code: /-- Infinitely differentiable diffeomorphism between `M` and `M'` with respect to `I` and `I'`. -/
scoped[Manifold] notation M " ≃ₘ⟮" I ", " J "⟯ " N => Diffeomorph I J M N ⊤
goal: Lean.PrettyPrinter.Unexpander

full_name: Manifold.«_aux_Mathlib_Geometry_Manifold_Diffeomorph___macroRules_Manifold_term_≃ₘ⟮_,_⟯__1»
code: /-- Infinitely differentiable diffeomorphism between `M` and `M'` with respect to `I` and `I'`. -/
scoped[Manifold] notation M " ≃ₘ⟮" I ", " J "⟯ " N => Diffeomorph I J M N ⊤
goal: Lean.Macro

full_name: Manifold.«_aux_Mathlib_Geometry_Manifold_Diffeomorph___macroRules_Manifold_term_≃ₘ^_[_]__1»
code: /-- `n`-times continuously differentiable diffeomorphism between `E` and `E'`. -/
scoped[Manifold]
  notation E " ≃ₘ^" n:1000 "[" 𝕜 "] " E' =>
    Diffeomorph (modelWithCornersSelf 𝕜 E) (modelWithCornersSelf 𝕜 E') E E' n
goal: Lean.Macro

full_name: Manifold.«_aux_Mathlib_Geometry_Manifold_Diffeomorph___macroRules_Manifold_term_≃ₘ[_]__1»
code: /-- Infinitely differentiable diffeomorphism between `E` and `E'`. -/
scoped[Manifold]
  notation E " ≃ₘ[" 𝕜 "] " E' =>
    Diffeomorph (modelWithCornersSelf 𝕜 E) (modelWithCornersSelf 𝕜 E') E E' ⊤
goal: Lean.Macro

full_name: Diffeomorph.toEquiv_injective
code: theorem toEquiv_injective : Injective (Diffeomorph.toEquiv : (M ≃ₘ^n⟮I, I'⟯ M') → M ≃ M')
  
goal: Function.Injective Diffeomorph.toEquiv

full_name: Diffeomorph.instEquivLike
code: instance : EquivLike (M ≃ₘ^n⟮I, I'⟯ M') M M' 
goal: EquivLike (M ≃ₘ^n⟮I, I'⟯ M') M M'

full_name: Diffeomorph.toContMDiffMap
code: /-- Interpret a diffeomorphism as a `ContMDiffMap`. -/
@[coe]
def toContMDiffMap (Φ : M ≃ₘ^n⟮I, I'⟯ M') : C^n⟮I, M; I', M'⟯ 
goal: C^n⟮I, M; I', M'⟯

full_name: Diffeomorph.instCoeContMDiffMap
code: instance : Coe (M ≃ₘ^n⟮I, I'⟯ M') C^n⟮I, M; I', M'⟯ 
goal: Coe (M ≃ₘ^n⟮I, I'⟯ M') C^n⟮I, M; I', M'⟯

full_name: Diffeomorph.continuous
code: @[continuity]
protected theorem continuous (h : M ≃ₘ^n⟮I, I'⟯ M') : Continuous h 
goal: Continuous ⇑h

full_name: Diffeomorph.contMDiff
code: protected theorem contMDiff (h : M ≃ₘ^n⟮I, I'⟯ M') : ContMDiff I I' n h 
goal: ContMDiff I I' n ⇑h

full_name: Diffeomorph.contMDiffAt
code: protected theorem contMDiffAt (h : M ≃ₘ^n⟮I, I'⟯ M') {x} : ContMDiffAt I I' n h x 
goal: ContMDiffAt I I' n (⇑h) x

full_name: Diffeomorph.contMDiffWithinAt
code: protected theorem contMDiffWithinAt (h : M ≃ₘ^n⟮I, I'⟯ M') {s x} : ContMDiffWithinAt I I' n h s x 
goal: ContMDiffWithinAt I I' n (⇑h) s x

full_name: Diffeomorph.contDiff
code: protected theorem contDiff (h : E ≃ₘ^n⟮𝓘(𝕜, E), 𝓘(𝕜, E')⟯ E') : ContDiff 𝕜 n h 
goal: ContDiff 𝕜 n ⇑h

full_name: Diffeomorph.smooth
code: protected theorem smooth (h : M ≃ₘ⟮I, I'⟯ M') : Smooth I I' h 
goal: Smooth I I' ⇑h

full_name: Diffeomorph.mdifferentiable
code: protected theorem mdifferentiable (h : M ≃ₘ^n⟮I, I'⟯ M') (hn : 1 ≤ n) : MDifferentiable I I' h 
goal: MDifferentiable I I' ⇑h

full_name: Diffeomorph.mdifferentiableOn
code: protected theorem mdifferentiableOn (h : M ≃ₘ^n⟮I, I'⟯ M') (s : Set M) (hn : 1 ≤ n) :
    MDifferentiableOn I I' h s 
goal: MDifferentiableOn I I' (⇑h) s

full_name: Diffeomorph.coe_toEquiv
code: @[simp]
theorem coe_toEquiv (h : M ≃ₘ^n⟮I, I'⟯ M') : ⇑h.toEquiv = h 
goal: ⇑h.toEquiv = ⇑h

full_name: Diffeomorph.coe_coe
code: @[simp, norm_cast]
theorem coe_coe (h : M ≃ₘ^n⟮I, I'⟯ M') : ⇑(h : C^n⟮I, M; I', M'⟯) = h 
goal: ⇑↑h = ⇑h

full_name: Diffeomorph.toEquiv_inj
code: @[simp]
theorem toEquiv_inj {h h' : M ≃ₘ^n⟮I, I'⟯ M'} : h.toEquiv = h'.toEquiv ↔ h = h' 
goal: h.toEquiv = h'.toEquiv ↔ h = h'

full_name: Diffeomorph.coeFn_injective
code: /-- Coercion to function `fun h : M ≃ₘ^n⟮I, I'⟯ M' ↦ (h : M → M')` is injective. -/
theorem coeFn_injective : Injective ((↑) : (M ≃ₘ^n⟮I, I'⟯ M') → (M → M')) 
goal: Function.Injective DFunLike.coe

full_name: Diffeomorph.ext
code: @[ext]
theorem ext {h h' : M ≃ₘ^n⟮I, I'⟯ M'} (Heq : ∀ x, h x = h' x) : h = h' 
goal: h = h'

full_name: Diffeomorph.instContinuousMapClassTopENat
code: instance : ContinuousMapClass (M ≃ₘ⟮I, J⟯ N) M N 
goal: ContinuousMapClass (M ≃ₘ⟮I, J⟯ N) M N

full_name: Diffeomorph.refl
code: /-- Identity map as a diffeomorphism. -/
protected def refl : M ≃ₘ^n⟮I, I⟯ M 
goal: M ≃ₘ^n⟮I, I⟯ M

full_name: Diffeomorph.refl_toEquiv
code: @[simp]
theorem refl_toEquiv : (Diffeomorph.refl I M n).toEquiv = Equiv.refl _ 
goal: (Diffeomorph.refl I M n).toEquiv = Equiv.refl M

full_name: Diffeomorph.coe_refl
code: @[simp]
theorem coe_refl : ⇑(Diffeomorph.refl I M n) = id 
goal: ⇑(Diffeomorph.refl I M n) = id

full_name: Diffeomorph.trans
code: /-- Composition of two diffeomorphisms. -/
@[trans]
protected def trans (h₁ : M ≃ₘ^n⟮I, I'⟯ M') (h₂ : M' ≃ₘ^n⟮I', J⟯ N) : M ≃ₘ^n⟮I, J⟯ N 
goal: M ≃ₘ^n⟮I, J⟯ N

full_name: Diffeomorph.trans_refl
code: @[simp]
theorem trans_refl (h : M ≃ₘ^n⟮I, I'⟯ M') : h.trans (Diffeomorph.refl I' M' n) = h 
goal: h.trans (Diffeomorph.refl I' M' n) = h

full_name: Diffeomorph.refl_trans
code: @[simp]
theorem refl_trans (h : M ≃ₘ^n⟮I, I'⟯ M') : (Diffeomorph.refl I M n).trans h = h 
goal: (Diffeomorph.refl I M n).trans h = h

full_name: Diffeomorph.coe_trans
code: @[simp]
theorem coe_trans (h₁ : M ≃ₘ^n⟮I, I'⟯ M') (h₂ : M' ≃ₘ^n⟮I', J⟯ N) : ⇑(h₁.trans h₂) = h₂ ∘ h₁ 
goal: ⇑(h₁.trans h₂) = ⇑h₂ ∘ ⇑h₁

full_name: Diffeomorph.symm
code: /-- Inverse of a diffeomorphism. -/
@[symm]
protected def symm (h : M ≃ₘ^n⟮I, J⟯ N) : N ≃ₘ^n⟮J, I⟯ M 
goal: N ≃ₘ^n⟮J, I⟯ M

full_name: Diffeomorph.apply_symm_apply
code: @[simp]
theorem apply_symm_apply (h : M ≃ₘ^n⟮I, J⟯ N) (x : N) : h (h.symm x) = x 
goal: h (h.symm x) = x

full_name: Diffeomorph.symm_apply_apply
code: @[simp]
theorem symm_apply_apply (h : M ≃ₘ^n⟮I, J⟯ N) (x : M) : h.symm (h x) = x 
goal: h.symm (h x) = x

full_name: Diffeomorph.symm_refl
code: @[simp]
theorem symm_refl : (Diffeomorph.refl I M n).symm = Diffeomorph.refl I M n 
goal: (Diffeomorph.refl I M n).symm = Diffeomorph.refl I M n

full_name: Diffeomorph.self_trans_symm
code: @[simp]
theorem self_trans_symm (h : M ≃ₘ^n⟮I, J⟯ N) : h.trans h.symm = Diffeomorph.refl I M n 
goal: h.trans h.symm = Diffeomorph.refl I M n

full_name: Diffeomorph.symm_trans_self
code: @[simp]
theorem symm_trans_self (h : M ≃ₘ^n⟮I, J⟯ N) : h.symm.trans h = Diffeomorph.refl J N n 
goal: h.symm.trans h = Diffeomorph.refl J N n

full_name: Diffeomorph.symm_trans'
code: @[simp]
theorem symm_trans' (h₁ : M ≃ₘ^n⟮I, I'⟯ M') (h₂ : M' ≃ₘ^n⟮I', J⟯ N) :
    (h₁.trans h₂).symm = h₂.symm.trans h₁.symm 
goal: (h₁.trans h₂).symm = h₂.symm.trans h₁.symm

full_name: Diffeomorph.symm_toEquiv
code: @[simp]
theorem symm_toEquiv (h : M ≃ₘ^n⟮I, J⟯ N) : h.symm.toEquiv = h.toEquiv.symm 
goal: h.symm.toEquiv = h.symm

full_name: Diffeomorph.toEquiv_coe_symm
code: @[simp, mfld_simps]
theorem toEquiv_coe_symm (h : M ≃ₘ^n⟮I, J⟯ N) : ⇑h.toEquiv.symm = h.symm 
goal: ⇑h.symm = ⇑h.symm

full_name: Diffeomorph.image_eq_preimage
code: theorem image_eq_preimage (h : M ≃ₘ^n⟮I, J⟯ N) (s : Set M) : h '' s = h.symm ⁻¹' s 
goal: ⇑h '' s = ⇑h.symm ⁻¹' s

full_name: Diffeomorph.symm_image_eq_preimage
code: theorem symm_image_eq_preimage (h : M ≃ₘ^n⟮I, J⟯ N) (s : Set N) : h.symm '' s = h ⁻¹' s 
goal: ⇑h.symm '' s = ⇑h ⁻¹' s

full_name: Diffeomorph.range_comp
code: @[simp, mfld_simps]
nonrec theorem range_comp {α} (h : M ≃ₘ^n⟮I, J⟯ N) (f : α → M) :
    range (h ∘ f) = h.symm ⁻¹' range f 
goal: Set.range (⇑h ∘ f) = ⇑h.symm ⁻¹' Set.range f

full_name: Diffeomorph.image_symm_image
code: @[simp]
theorem image_symm_image (h : M ≃ₘ^n⟮I, J⟯ N) (s : Set N) : h '' (h.symm '' s) = s 
goal: ⇑h '' (⇑h.symm '' s) = s

full_name: Diffeomorph.symm_image_image
code: @[simp]
theorem symm_image_image (h : M ≃ₘ^n⟮I, J⟯ N) (s : Set M) : h.symm '' (h '' s) = s 
goal: ⇑h.symm '' (⇑h '' s) = s

full_name: Diffeomorph.toHomeomorph
code: /-- A diffeomorphism is a homeomorphism. -/
def toHomeomorph (h : M ≃ₘ^n⟮I, J⟯ N) : M ≃ₜ N 
goal: M ≃ₜ N

full_name: Diffeomorph.toHomeomorph_toEquiv
code: @[simp]
theorem toHomeomorph_toEquiv (h : M ≃ₘ^n⟮I, J⟯ N) : h.toHomeomorph.toEquiv = h.toEquiv 
goal: h.toHomeomorph.toEquiv = h.toEquiv

full_name: Diffeomorph.symm_toHomeomorph
code: @[simp]
theorem symm_toHomeomorph (h : M ≃ₘ^n⟮I, J⟯ N) : h.symm.toHomeomorph = h.toHomeomorph.symm 
goal: h.symm.toHomeomorph = h.toHomeomorph.symm

full_name: Diffeomorph.coe_toHomeomorph
code: @[simp]
theorem coe_toHomeomorph (h : M ≃ₘ^n⟮I, J⟯ N) : ⇑h.toHomeomorph = h 
goal: ⇑h.toHomeomorph = ⇑h

full_name: Diffeomorph.coe_toHomeomorph_symm
code: @[simp]
theorem coe_toHomeomorph_symm (h : M ≃ₘ^n⟮I, J⟯ N) : ⇑h.toHomeomorph.symm = h.symm 
goal: ⇑h.toHomeomorph.symm = ⇑h.symm

full_name: Diffeomorph.contMDiffWithinAt_comp_diffeomorph_iff
code: @[simp]
theorem contMDiffWithinAt_comp_diffeomorph_iff {m} (h : M ≃ₘ^n⟮I, J⟯ N) {f : N → M'} {s x}
    (hm : m ≤ n) :
    ContMDiffWithinAt I I' m (f ∘ h) s x ↔ ContMDiffWithinAt J I' m f (h.symm ⁻¹' s) (h x) 
goal: ContMDiffWithinAt I I' m (f ∘ ⇑h) s x ↔ ContMDiffWithinAt J I' m f (⇑h.symm ⁻¹' s) (h x)

full_name: Diffeomorph.contMDiffOn_comp_diffeomorph_iff
code: @[simp]
theorem contMDiffOn_comp_diffeomorph_iff {m} (h : M ≃ₘ^n⟮I, J⟯ N) {f : N → M'} {s} (hm : m ≤ n) :
    ContMDiffOn I I' m (f ∘ h) s ↔ ContMDiffOn J I' m f (h.symm ⁻¹' s) 
goal: ContMDiffOn I I' m (f ∘ ⇑h) s ↔ ContMDiffOn J I' m f (⇑h.symm ⁻¹' s)

full_name: Diffeomorph.contMDiffAt_comp_diffeomorph_iff
code: @[simp]
theorem contMDiffAt_comp_diffeomorph_iff {m} (h : M ≃ₘ^n⟮I, J⟯ N) {f : N → M'} {x} (hm : m ≤ n) :
    ContMDiffAt I I' m (f ∘ h) x ↔ ContMDiffAt J I' m f (h x) 
goal: ContMDiffAt I I' m (f ∘ ⇑h) x ↔ ContMDiffAt J I' m f (h x)

full_name: Diffeomorph.contMDiff_comp_diffeomorph_iff
code: @[simp]
theorem contMDiff_comp_diffeomorph_iff {m} (h : M ≃ₘ^n⟮I, J⟯ N) {f : N → M'} (hm : m ≤ n) :
    ContMDiff I I' m (f ∘ h) ↔ ContMDiff J I' m f 
goal: ContMDiff I I' m (f ∘ ⇑h) ↔ ContMDiff J I' m f

full_name: Diffeomorph.contMDiffWithinAt_diffeomorph_comp_iff
code: @[simp]
theorem contMDiffWithinAt_diffeomorph_comp_iff {m} (h : M ≃ₘ^n⟮I, J⟯ N) {f : M' → M} (hm : m ≤ n)
    {s x} : ContMDiffWithinAt I' J m (h ∘ f) s x ↔ ContMDiffWithinAt I' I m f s x 
goal: ContMDiffWithinAt I' J m (⇑h ∘ f) s x ↔ ContMDiffWithinAt I' I m f s x

full_name: Diffeomorph.contMDiffAt_diffeomorph_comp_iff
code: @[simp]
theorem contMDiffAt_diffeomorph_comp_iff {m} (h : M ≃ₘ^n⟮I, J⟯ N) {f : M' → M} (hm : m ≤ n) {x} :
    ContMDiffAt I' J m (h ∘ f) x ↔ ContMDiffAt I' I m f x 
goal: ContMDiffAt I' J m (⇑h ∘ f) x ↔ ContMDiffAt I' I m f x

full_name: Diffeomorph.contMDiffOn_diffeomorph_comp_iff
code: @[simp]
theorem contMDiffOn_diffeomorph_comp_iff {m} (h : M ≃ₘ^n⟮I, J⟯ N) {f : M' → M} (hm : m ≤ n) {s} :
    ContMDiffOn I' J m (h ∘ f) s ↔ ContMDiffOn I' I m f s 
goal: ContMDiffOn I' J m (⇑h ∘ f) s ↔ ContMDiffOn I' I m f s

full_name: Diffeomorph.contMDiff_diffeomorph_comp_iff
code: @[simp]
theorem contMDiff_diffeomorph_comp_iff {m} (h : M ≃ₘ^n⟮I, J⟯ N) {f : M' → M} (hm : m ≤ n) :
    ContMDiff I' J m (h ∘ f) ↔ ContMDiff I' I m f 
goal: ContMDiff I' J m (⇑h ∘ f) ↔ ContMDiff I' I m f

full_name: Diffeomorph.toPartialHomeomorph_mdifferentiable
code: theorem toPartialHomeomorph_mdifferentiable (h : M ≃ₘ^n⟮I, J⟯ N) (hn : 1 ≤ n) :
    h.toHomeomorph.toPartialHomeomorph.MDifferentiable I J 
goal: PartialHomeomorph.MDifferentiable I J h.toHomeomorph.toPartialHomeomorph

full_name: Diffeomorph.prodCongr
code: /-- Product of two diffeomorphisms. -/
def prodCongr (h₁ : M ≃ₘ^n⟮I, I'⟯ M') (h₂ : N ≃ₘ^n⟮J, J'⟯ N') :
    (M × N) ≃ₘ^n⟮I.prod J, I'.prod J'⟯ M' × N' 
goal: (M × N) ≃ₘ^n⟮I.prod J, I'.prod J'⟯ M' × N'

full_name: Diffeomorph.prodCongr_symm
code: @[simp]
theorem prodCongr_symm (h₁ : M ≃ₘ^n⟮I, I'⟯ M') (h₂ : N ≃ₘ^n⟮J, J'⟯ N') :
    (h₁.prodCongr h₂).symm = h₁.symm.prodCongr h₂.symm 
goal: (h₁.prodCongr h₂).symm = h₁.symm.prodCongr h₂.symm

full_name: Diffeomorph.coe_prodCongr
code: @[simp]
theorem coe_prodCongr (h₁ : M ≃ₘ^n⟮I, I'⟯ M') (h₂ : N ≃ₘ^n⟮J, J'⟯ N') :
    ⇑(h₁.prodCongr h₂) = Prod.map h₁ h₂ 
goal: ⇑(h₁.prodCongr h₂) = Prod.map ⇑h₁ ⇑h₂

full_name: Diffeomorph.prodComm
code: /-- `M × N` is diffeomorphic to `N × M`. -/
def prodComm : (M × N) ≃ₘ^n⟮I.prod J, J.prod I⟯ N × M 
goal: (M × N) ≃ₘ^n⟮I.prod J, J.prod I⟯ N × M

full_name: Diffeomorph.prodComm_symm
code: @[simp]
theorem prodComm_symm : (prodComm I J M N n).symm = prodComm J I N M n 
goal: (Diffeomorph.prodComm I J M N n).symm = Diffeomorph.prodComm J I N M n

full_name: Diffeomorph.coe_prodComm
code: @[simp]
theorem coe_prodComm : ⇑(prodComm I J M N n) = Prod.swap 
goal: ⇑(Diffeomorph.prodComm I J M N n) = Prod.swap

full_name: Diffeomorph.prodAssoc
code: /-- `(M × N) × N'` is diffeomorphic to `M × (N × N')`. -/
def prodAssoc : ((M × N) × N') ≃ₘ^n⟮(I.prod J).prod J', I.prod (J.prod J')⟯ M × N × N' 
goal: ((M × N) × N') ≃ₘ^n⟮(I.prod J).prod J', I.prod (J.prod J')⟯ M × N × N'

full_name: Diffeomorph.uniqueMDiffOn_image_aux
code: theorem uniqueMDiffOn_image_aux (h : M ≃ₘ^n⟮I, J⟯ N) (hn : 1 ≤ n) {s : Set M}
    (hs : UniqueMDiffOn I s) : UniqueMDiffOn J (h '' s) 
goal: UniqueMDiffOn J (⇑h '' s)

full_name: Diffeomorph.uniqueMDiffOn_image
code: @[simp]
theorem uniqueMDiffOn_image (h : M ≃ₘ^n⟮I, J⟯ N) (hn : 1 ≤ n) {s : Set M} :
    UniqueMDiffOn J (h '' s) ↔ UniqueMDiffOn I s 
goal: UniqueMDiffOn J (⇑h '' s) ↔ UniqueMDiffOn I s

full_name: Diffeomorph.uniqueMDiffOn_preimage
code: @[simp]
theorem uniqueMDiffOn_preimage (h : M ≃ₘ^n⟮I, J⟯ N) (hn : 1 ≤ n) {s : Set N} :
    UniqueMDiffOn I (h ⁻¹' s) ↔ UniqueMDiffOn J s 
goal: UniqueMDiffOn I (⇑h ⁻¹' s) ↔ UniqueMDiffOn J s

full_name: Diffeomorph.uniqueDiffOn_image
code: @[simp]
theorem uniqueDiffOn_image (h : E ≃ₘ^n⟮𝓘(𝕜, E), 𝓘(𝕜, F)⟯ F) (hn : 1 ≤ n) {s : Set E} :
    UniqueDiffOn 𝕜 (h '' s) ↔ UniqueDiffOn 𝕜 s 
goal: UniqueDiffOn 𝕜 (⇑h '' s) ↔ UniqueDiffOn 𝕜 s

full_name: Diffeomorph.uniqueDiffOn_preimage
code: @[simp]
-- Porting note (#11215): TODO: should use `E ≃ₘ^n[𝕜] F` notation
theorem uniqueDiffOn_preimage (h : E ≃ₘ^n⟮𝓘(𝕜, E), 𝓘(𝕜, F)⟯ F) (hn : 1 ≤ n) {s : Set F} :
    UniqueDiffOn 𝕜 (h ⁻¹' s) ↔ UniqueDiffOn 𝕜 s 
goal: UniqueDiffOn 𝕜 (⇑h ⁻¹' s) ↔ UniqueDiffOn 𝕜 s

full_name: ContinuousLinearEquiv.toDiffeomorph
code: /-- A continuous linear equivalence between normed spaces is a diffeomorphism. -/
def toDiffeomorph : E ≃ₘ[𝕜] E' 
goal: E ≃ₘ⟮𝓘(𝕜, E), 𝓘(𝕜, E')⟯ E'

full_name: ContinuousLinearEquiv.coe_toDiffeomorph
code: @[simp]
theorem coe_toDiffeomorph : ⇑e.toDiffeomorph = e 
goal: ⇑e.toDiffeomorph = ⇑e

full_name: ContinuousLinearEquiv.symm_toDiffeomorph
code: @[simp]
theorem symm_toDiffeomorph : e.symm.toDiffeomorph = e.toDiffeomorph.symm 
goal: e.symm.toDiffeomorph = e.toDiffeomorph.symm

full_name: ContinuousLinearEquiv.coe_toDiffeomorph_symm
code: @[simp]
theorem coe_toDiffeomorph_symm : ⇑e.toDiffeomorph.symm = e.symm 
goal: ⇑e.toDiffeomorph.symm = ⇑e.symm

full_name: ModelWithCorners.transDiffeomorph
code: /-- Apply a diffeomorphism (e.g., a continuous linear equivalence) to the model vector space. -/
def transDiffeomorph (I : ModelWithCorners 𝕜 E H) (e : E ≃ₘ[𝕜] E') : ModelWithCorners 𝕜 E' H 
goal: ModelWithCorners 𝕜 E' H

full_name: ModelWithCorners.coe_transDiffeomorph
code: @[simp, mfld_simps]
theorem coe_transDiffeomorph : ⇑(I.transDiffeomorph e) = e ∘ I 
goal: ↑(I.transDiffeomorph e) = ⇑e ∘ ↑I

full_name: ModelWithCorners.coe_transDiffeomorph_symm
code: @[simp, mfld_simps]
theorem coe_transDiffeomorph_symm : ⇑(I.transDiffeomorph e).symm = I.symm ∘ e.symm 
goal: ↑(I.transDiffeomorph e).symm = ↑I.symm ∘ ⇑e.symm

full_name: ModelWithCorners.transDiffeomorph_range
code: theorem transDiffeomorph_range : range (I.transDiffeomorph e) = e '' range I 
goal: Set.range ↑(I.transDiffeomorph e) = ⇑e '' Set.range ↑I

full_name: ModelWithCorners.coe_extChartAt_transDiffeomorph
code: theorem coe_extChartAt_transDiffeomorph (x : M) :
    ⇑(extChartAt (I.transDiffeomorph e) x) = e ∘ extChartAt I x 
goal: ↑(extChartAt (I.transDiffeomorph e) x) = ⇑e ∘ ↑(extChartAt I x)

full_name: ModelWithCorners.coe_extChartAt_transDiffeomorph_symm
code: theorem coe_extChartAt_transDiffeomorph_symm (x : M) :
    ⇑(extChartAt (I.transDiffeomorph e) x).symm = (extChartAt I x).symm ∘ e.symm 
goal: ↑(extChartAt (I.transDiffeomorph e) x).symm = ↑(extChartAt I x).symm ∘ ⇑e.symm

full_name: ModelWithCorners.extChartAt_transDiffeomorph_target
code: theorem extChartAt_transDiffeomorph_target (x : M) :
    (extChartAt (I.transDiffeomorph e) x).target = e.symm ⁻¹' (extChartAt I x).target 
goal: (extChartAt (I.transDiffeomorph e) x).target = ⇑e.symm ⁻¹' (extChartAt I x).target

full_name: Diffeomorph.smoothManifoldWithCorners_transDiffeomorph
code: instance smoothManifoldWithCorners_transDiffeomorph [SmoothManifoldWithCorners I M] :
    SmoothManifoldWithCorners (I.transDiffeomorph e) M 
goal: SmoothManifoldWithCorners (I.transDiffeomorph e) M

full_name: Diffeomorph.toTransDiffeomorph
code: /-- The identity diffeomorphism between a manifold with model `I` and the same manifold
with model `I.trans_diffeomorph e`. -/
def toTransDiffeomorph (e : E ≃ₘ[𝕜] F) : M ≃ₘ⟮I, I.transDiffeomorph e⟯ M 
goal: M ≃ₘ⟮I, I.transDiffeomorph e⟯ M

full_name: Diffeomorph.contMDiffWithinAt_transDiffeomorph_right
code: @[simp]
theorem contMDiffWithinAt_transDiffeomorph_right {f : M' → M} {x s} :
    ContMDiffWithinAt I' (I.transDiffeomorph e) n f s x ↔ ContMDiffWithinAt I' I n f s x 
goal: ContMDiffWithinAt I' (I.transDiffeomorph e) n f s x ↔ ContMDiffWithinAt I' I n f s x

full_name: Diffeomorph.contMDiffAt_transDiffeomorph_right
code: @[simp]
theorem contMDiffAt_transDiffeomorph_right {f : M' → M} {x} :
    ContMDiffAt I' (I.transDiffeomorph e) n f x ↔ ContMDiffAt I' I n f x 
goal: ContMDiffAt I' (I.transDiffeomorph e) n f x ↔ ContMDiffAt I' I n f x

full_name: Diffeomorph.contMDiffOn_transDiffeomorph_right
code: @[simp]
theorem contMDiffOn_transDiffeomorph_right {f : M' → M} {s} :
    ContMDiffOn I' (I.transDiffeomorph e) n f s ↔ ContMDiffOn I' I n f s 
goal: ContMDiffOn I' (I.transDiffeomorph e) n f s ↔ ContMDiffOn I' I n f s

full_name: Diffeomorph.contMDiff_transDiffeomorph_right
code: @[simp]
theorem contMDiff_transDiffeomorph_right {f : M' → M} :
    ContMDiff I' (I.transDiffeomorph e) n f ↔ ContMDiff I' I n f 
goal: ContMDiff I' (I.transDiffeomorph e) n f ↔ ContMDiff I' I n f

full_name: Diffeomorph.smooth_transDiffeomorph_right
code: theorem smooth_transDiffeomorph_right {f : M' → M} :
    Smooth I' (I.transDiffeomorph e) f ↔ Smooth I' I f 
goal: Smooth I' (I.transDiffeomorph e) f ↔ Smooth I' I f

full_name: Diffeomorph.contMDiffWithinAt_transDiffeomorph_left
code: @[simp]
theorem contMDiffWithinAt_transDiffeomorph_left {f : M → M'} {x s} :
    ContMDiffWithinAt (I.transDiffeomorph e) I' n f s x ↔ ContMDiffWithinAt I I' n f s x 
goal: ContMDiffWithinAt (I.transDiffeomorph e) I' n f s x ↔ ContMDiffWithinAt I I' n f s x

full_name: Diffeomorph.contMDiffAt_transDiffeomorph_left
code: @[simp]
theorem contMDiffAt_transDiffeomorph_left {f : M → M'} {x} :
    ContMDiffAt (I.transDiffeomorph e) I' n f x ↔ ContMDiffAt I I' n f x 
goal: ContMDiffAt (I.transDiffeomorph e) I' n f x ↔ ContMDiffAt I I' n f x

full_name: Diffeomorph.contMDiffOn_transDiffeomorph_left
code: @[simp]
theorem contMDiffOn_transDiffeomorph_left {f : M → M'} {s} :
    ContMDiffOn (I.transDiffeomorph e) I' n f s ↔ ContMDiffOn I I' n f s 
goal: ContMDiffOn (I.transDiffeomorph e) I' n f s ↔ ContMDiffOn I I' n f s

full_name: Diffeomorph.contMDiff_transDiffeomorph_left
code: @[simp]
theorem contMDiff_transDiffeomorph_left {f : M → M'} :
    ContMDiff (I.transDiffeomorph e) I' n f ↔ ContMDiff I I' n f 
goal: ContMDiff (I.transDiffeomorph e) I' n f ↔ ContMDiff I I' n f

full_name: Diffeomorph.smooth_transDiffeomorph_left
code: theorem smooth_transDiffeomorph_left {f : M → M'} :
    Smooth (I.transDiffeomorph e) I' f ↔ Smooth I I' f 
goal: Smooth (I.transDiffeomorph e) I' f ↔ Smooth I I' f