geometry.manifold.diffeomorphMathlib.Geometry.Manifold.Diffeomorph

This file has been ported!

Changes since the initial port

The following section lists changes to this file in mathlib3 and mathlib4 that occured after the initial port. Most recent changes are shown first. Hovering over a commit will show all commits associated with the same mathlib3 commit.

Changes in mathlib3

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(last sync)

Changes in mathlib3port

mathlib3
mathlib3port
Diff
@@ -3,8 +3,8 @@ Copyright © 2020 Nicolò Cavalleri. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Nicolò Cavalleri, Yury Kudryashov
 -/
-import Geometry.Manifold.ContMdiffMap
-import Geometry.Manifold.ContMdiffMfderiv
+import Geometry.Manifold.ContMDiffMap
+import Geometry.Manifold.ContMDiffMFDeriv
 
 #align_import geometry.manifold.diffeomorph from "leanprover-community/mathlib"@"1a51edf13debfcbe223fa06b1cb353b9ed9751cc"
 
Diff
@@ -402,7 +402,7 @@ theorem contMDiffWithinAt_comp_diffeomorph_iff {m} (h : M ≃ₘ^n⟮I, J⟯ N)
   by
   constructor
   · intro Hfh
-    rw [← h.symm_apply_apply x] at Hfh 
+    rw [← h.symm_apply_apply x] at Hfh
     simpa only [(· ∘ ·), h.apply_symm_apply] using
       Hfh.comp (h x) (h.symm.cont_mdiff_within_at.of_le hm) (maps_to_preimage _ _)
   · rw [← h.image_eq_preimage]
@@ -733,7 +733,7 @@ def toTransDiffeomorph (e : E ≃ₘ[𝕜] F) : M ≃ₘ⟮I, I.transDiffeomorph
     by
     refine' contMDiffWithinAt_iff'.2 ⟨continuousWithinAt_id, _⟩
     refine' e.symm.cont_diff.cont_diff_within_at.congr' (fun y hy => _) _
-    · simp only [mem_inter_iff, I.ext_chart_at_trans_diffeomorph_target] at hy 
+    · simp only [mem_inter_iff, I.ext_chart_at_trans_diffeomorph_target] at hy
       simp only [Equiv.coe_refl, Equiv.refl_symm, id, (· ∘ ·),
         I.coe_ext_chart_at_trans_diffeomorph_symm, (extChartAt I x).right_inv hy.1]
     exact
Diff
@@ -645,7 +645,7 @@ variable (I) (e : E ≃ₘ[𝕜] E')
 /-- 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
     where
-  toLocalEquiv := I.toLocalEquiv.trans e.toEquiv.toLocalEquiv
+  toPartialEquiv := I.toPartialEquiv.trans e.toEquiv.toPartialEquiv
   source_eq := by simp
   unique_diff' := by simp [range_comp e, I.unique_diff]
   continuous_toFun := e.Continuous.comp I.Continuous
Diff
@@ -471,11 +471,11 @@ theorem contMDiff_diffeomorph_comp_iff {m} (h : M ≃ₘ^n⟮I, J⟯ N) {f : M'
 #align diffeomorph.cont_mdiff_diffeomorph_comp_iff Diffeomorph.contMDiff_diffeomorph_comp_iff
 -/
 
-#print Diffeomorph.toLocalHomeomorph_mdifferentiable /-
-theorem toLocalHomeomorph_mdifferentiable (h : M ≃ₘ^n⟮I, J⟯ N) (hn : 1 ≤ n) :
-    h.toHomeomorph.toLocalHomeomorph.MDifferentiable I J :=
+#print Diffeomorph.toPartialHomeomorph_mdifferentiable /-
+theorem toPartialHomeomorph_mdifferentiable (h : M ≃ₘ^n⟮I, J⟯ N) (hn : 1 ≤ n) :
+    h.toHomeomorph.toPartialHomeomorph.MDifferentiable I J :=
   ⟨h.MDifferentiableOn _ hn, h.symm.MDifferentiableOn _ hn⟩
-#align diffeomorph.to_local_homeomorph_mdifferentiable Diffeomorph.toLocalHomeomorph_mdifferentiable
+#align diffeomorph.to_local_homeomorph_mdifferentiable Diffeomorph.toPartialHomeomorph_mdifferentiable
 -/
 
 section Constructions
Diff
@@ -3,8 +3,8 @@ Copyright © 2020 Nicolò Cavalleri. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Nicolò Cavalleri, Yury Kudryashov
 -/
-import Mathbin.Geometry.Manifold.ContMdiffMap
-import Mathbin.Geometry.Manifold.ContMdiffMfderiv
+import Geometry.Manifold.ContMdiffMap
+import Geometry.Manifold.ContMdiffMfderiv
 
 #align_import geometry.manifold.diffeomorph from "leanprover-community/mathlib"@"1a51edf13debfcbe223fa06b1cb353b9ed9751cc"
 
Diff
@@ -2,15 +2,12 @@
 Copyright © 2020 Nicolò Cavalleri. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Nicolò Cavalleri, Yury Kudryashov
-
-! This file was ported from Lean 3 source module geometry.manifold.diffeomorph
-! leanprover-community/mathlib commit 1a51edf13debfcbe223fa06b1cb353b9ed9751cc
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
 -/
 import Mathbin.Geometry.Manifold.ContMdiffMap
 import Mathbin.Geometry.Manifold.ContMdiffMfderiv
 
+#align_import geometry.manifold.diffeomorph from "leanprover-community/mathlib"@"1a51edf13debfcbe223fa06b1cb353b9ed9751cc"
+
 /-!
 # Diffeomorphisms
 
Diff
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Nicolò Cavalleri, Yury Kudryashov
 
 ! This file was ported from Lean 3 source module geometry.manifold.diffeomorph
-! leanprover-community/mathlib commit e354e865255654389cc46e6032160238df2e0f40
+! leanprover-community/mathlib commit 1a51edf13debfcbe223fa06b1cb353b9ed9751cc
 ! Please do not edit these lines, except to modify the commit id
 ! if you have ported upstream changes.
 -/
@@ -13,6 +13,9 @@ import Mathbin.Geometry.Manifold.ContMdiffMfderiv
 
 /-!
 # Diffeomorphisms
+
+> THIS FILE IS SYNCHRONIZED WITH MATHLIB4.
+> Any changes to this file require a corresponding PR to mathlib4.
 This file implements diffeomorphisms.
 
 ## Definitions
Diff
@@ -68,6 +68,7 @@ section Defs
 
 variable (I I' M M' n)
 
+#print Diffeomorph /-
 /--
 `n`-times continuously differentiable diffeomorphism between `M` and `M'` with respect to I and I'
 -/
@@ -76,6 +77,7 @@ structure Diffeomorph extends M ≃ M' where
   contMDiff_to_fun : ContMDiff I I' n to_equiv
   contMDiff_inv_fun : ContMDiff I' I n to_equiv.symm
 #align diffeomorph Diffeomorph
+-/
 
 end Defs
 
@@ -99,68 +101,96 @@ instance : CoeFun (M ≃ₘ^n⟮I, I'⟯ M') fun _ => M → M' :=
 instance : Coe (M ≃ₘ^n⟮I, I'⟯ M') C^n⟮I, M; I', M'⟯ :=
   ⟨fun Φ => ⟨Φ, Φ.contMDiff_to_fun⟩⟩
 
+#print Diffeomorph.continuous /-
 @[continuity]
 protected theorem continuous (h : M ≃ₘ^n⟮I, I'⟯ M') : Continuous h :=
   h.contMDiff_to_fun.Continuous
 #align diffeomorph.continuous Diffeomorph.continuous
+-/
 
+#print Diffeomorph.contMDiff /-
 protected theorem contMDiff (h : M ≃ₘ^n⟮I, I'⟯ M') : ContMDiff I I' n h :=
   h.contMDiff_to_fun
 #align diffeomorph.cont_mdiff Diffeomorph.contMDiff
+-/
 
+#print Diffeomorph.contMDiffAt /-
 protected theorem contMDiffAt (h : M ≃ₘ^n⟮I, I'⟯ M') {x} : ContMDiffAt I I' n h x :=
   h.ContMDiff.ContMDiffAt
 #align diffeomorph.cont_mdiff_at Diffeomorph.contMDiffAt
+-/
 
+#print Diffeomorph.contMDiffWithinAt /-
 protected theorem contMDiffWithinAt (h : M ≃ₘ^n⟮I, I'⟯ M') {s x} : ContMDiffWithinAt I I' n h s x :=
   h.ContMDiffAt.ContMDiffWithinAt
 #align diffeomorph.cont_mdiff_within_at Diffeomorph.contMDiffWithinAt
+-/
 
+#print Diffeomorph.contDiff /-
 protected theorem contDiff (h : E ≃ₘ^n[𝕜] E') : ContDiff 𝕜 n h :=
   h.ContMDiff.ContDiff
 #align diffeomorph.cont_diff Diffeomorph.contDiff
+-/
 
+#print Diffeomorph.smooth /-
 protected theorem smooth (h : M ≃ₘ⟮I, I'⟯ M') : Smooth I I' h :=
   h.contMDiff_to_fun
 #align diffeomorph.smooth Diffeomorph.smooth
+-/
 
-protected theorem mDifferentiable (h : M ≃ₘ^n⟮I, I'⟯ M') (hn : 1 ≤ n) : MDifferentiable I I' h :=
+#print Diffeomorph.mdifferentiable /-
+protected theorem mdifferentiable (h : M ≃ₘ^n⟮I, I'⟯ M') (hn : 1 ≤ n) : MDifferentiable I I' h :=
   h.ContMDiff.MDifferentiable hn
-#align diffeomorph.mdifferentiable Diffeomorph.mDifferentiable
+#align diffeomorph.mdifferentiable Diffeomorph.mdifferentiable
+-/
 
-protected theorem mDifferentiableOn (h : M ≃ₘ^n⟮I, I'⟯ M') (s : Set M) (hn : 1 ≤ n) :
+#print Diffeomorph.mdifferentiableOn /-
+protected theorem mdifferentiableOn (h : M ≃ₘ^n⟮I, I'⟯ M') (s : Set M) (hn : 1 ≤ n) :
     MDifferentiableOn I I' h s :=
   (h.MDifferentiable hn).MDifferentiableOn
-#align diffeomorph.mdifferentiable_on Diffeomorph.mDifferentiableOn
+#align diffeomorph.mdifferentiable_on Diffeomorph.mdifferentiableOn
+-/
 
+#print Diffeomorph.coe_toEquiv /-
 @[simp]
 theorem coe_toEquiv (h : M ≃ₘ^n⟮I, I'⟯ M') : ⇑h.toEquiv = h :=
   rfl
 #align diffeomorph.coe_to_equiv Diffeomorph.coe_toEquiv
+-/
 
+#print Diffeomorph.coe_coe /-
 @[simp, norm_cast]
 theorem coe_coe (h : M ≃ₘ^n⟮I, I'⟯ M') : ⇑(h : C^n⟮I, M; I', M'⟯) = h :=
   rfl
 #align diffeomorph.coe_coe Diffeomorph.coe_coe
+-/
 
+#print Diffeomorph.toEquiv_injective /-
 theorem toEquiv_injective : Injective (Diffeomorph.toEquiv : (M ≃ₘ^n⟮I, I'⟯ M') → M ≃ M')
   | ⟨e, _, _⟩, ⟨e', _, _⟩, rfl => rfl
 #align diffeomorph.to_equiv_injective Diffeomorph.toEquiv_injective
+-/
 
+#print Diffeomorph.toEquiv_inj /-
 @[simp]
 theorem toEquiv_inj {h h' : M ≃ₘ^n⟮I, I'⟯ M'} : h.toEquiv = h'.toEquiv ↔ h = h' :=
   toEquiv_injective.eq_iff
 #align diffeomorph.to_equiv_inj Diffeomorph.toEquiv_inj
+-/
 
+#print Diffeomorph.coeFn_injective /-
 /-- Coercion to function `λ h : M ≃ₘ^n⟮I, I'⟯ M', (h : M → M')` is injective. -/
 theorem coeFn_injective : Injective fun (h : M ≃ₘ^n⟮I, I'⟯ M') (x : M) => h x :=
   Equiv.coe_fn_injective.comp toEquiv_injective
 #align diffeomorph.coe_fn_injective Diffeomorph.coeFn_injective
+-/
 
+#print Diffeomorph.ext /-
 @[ext]
 theorem ext {h h' : M ≃ₘ^n⟮I, I'⟯ M'} (Heq : ∀ x, h x = h' x) : h = h' :=
   coeFn_injective <| funext Heq
 #align diffeomorph.ext Diffeomorph.ext
+-/
 
 instance : ContinuousMapClass (M ≃ₘ⟮I, J⟯ N) M N
     where
@@ -172,6 +202,7 @@ section
 
 variable (M I n)
 
+#print Diffeomorph.refl /-
 /-- Identity map as a diffeomorphism. -/
 protected def refl : M ≃ₘ^n⟮I, I⟯ M
     where
@@ -179,19 +210,25 @@ protected def refl : M ≃ₘ^n⟮I, I⟯ M
   contMDiff_inv_fun := contMDiff_id
   toEquiv := Equiv.refl M
 #align diffeomorph.refl Diffeomorph.refl
+-/
 
+#print Diffeomorph.refl_toEquiv /-
 @[simp]
 theorem refl_toEquiv : (Diffeomorph.refl I M n).toEquiv = Equiv.refl _ :=
   rfl
 #align diffeomorph.refl_to_equiv Diffeomorph.refl_toEquiv
+-/
 
+#print Diffeomorph.coe_refl /-
 @[simp]
 theorem coe_refl : ⇑(Diffeomorph.refl I M n) = id :=
   rfl
 #align diffeomorph.coe_refl Diffeomorph.coe_refl
+-/
 
 end
 
+#print Diffeomorph.trans /-
 /-- Composition of two diffeomorphisms. -/
 protected def trans (h₁ : M ≃ₘ^n⟮I, I'⟯ M') (h₂ : M' ≃ₘ^n⟮I', J⟯ N) : M ≃ₘ^n⟮I, J⟯ N
     where
@@ -199,22 +236,30 @@ protected def trans (h₁ : M ≃ₘ^n⟮I, I'⟯ M') (h₂ : M' ≃ₘ^n⟮I',
   contMDiff_inv_fun := h₁.contMDiff_inv_fun.comp h₂.contMDiff_inv_fun
   toEquiv := h₁.toEquiv.trans h₂.toEquiv
 #align diffeomorph.trans Diffeomorph.trans
+-/
 
+#print Diffeomorph.trans_refl /-
 @[simp]
 theorem trans_refl (h : M ≃ₘ^n⟮I, I'⟯ M') : h.trans (Diffeomorph.refl I' M' n) = h :=
   ext fun _ => rfl
 #align diffeomorph.trans_refl Diffeomorph.trans_refl
+-/
 
+#print Diffeomorph.refl_trans /-
 @[simp]
 theorem refl_trans (h : M ≃ₘ^n⟮I, I'⟯ M') : (Diffeomorph.refl I M n).trans h = h :=
   ext fun _ => rfl
 #align diffeomorph.refl_trans Diffeomorph.refl_trans
+-/
 
+#print Diffeomorph.coe_trans /-
 @[simp]
 theorem coe_trans (h₁ : M ≃ₘ^n⟮I, I'⟯ M') (h₂ : M' ≃ₘ^n⟮I', J⟯ N) : ⇑(h₁.trans h₂) = h₂ ∘ h₁ :=
   rfl
 #align diffeomorph.coe_trans Diffeomorph.coe_trans
+-/
 
+#print Diffeomorph.symm /-
 /-- Inverse of a diffeomorphism. -/
 protected def symm (h : M ≃ₘ^n⟮I, J⟯ N) : N ≃ₘ^n⟮J, I⟯ M
     where
@@ -222,96 +267,134 @@ protected def symm (h : M ≃ₘ^n⟮I, J⟯ N) : N ≃ₘ^n⟮J, I⟯ M
   contMDiff_inv_fun := h.contMDiff_to_fun
   toEquiv := h.toEquiv.symm
 #align diffeomorph.symm Diffeomorph.symm
+-/
 
+#print Diffeomorph.apply_symm_apply /-
 @[simp]
 theorem apply_symm_apply (h : M ≃ₘ^n⟮I, J⟯ N) (x : N) : h (h.symm x) = x :=
   h.toEquiv.apply_symm_apply x
 #align diffeomorph.apply_symm_apply Diffeomorph.apply_symm_apply
+-/
 
+#print Diffeomorph.symm_apply_apply /-
 @[simp]
 theorem symm_apply_apply (h : M ≃ₘ^n⟮I, J⟯ N) (x : M) : h.symm (h x) = x :=
   h.toEquiv.symm_apply_apply x
 #align diffeomorph.symm_apply_apply Diffeomorph.symm_apply_apply
+-/
 
+#print Diffeomorph.symm_refl /-
 @[simp]
 theorem symm_refl : (Diffeomorph.refl I M n).symm = Diffeomorph.refl I M n :=
   ext fun _ => rfl
 #align diffeomorph.symm_refl Diffeomorph.symm_refl
+-/
 
+#print Diffeomorph.self_trans_symm /-
 @[simp]
 theorem self_trans_symm (h : M ≃ₘ^n⟮I, J⟯ N) : h.trans h.symm = Diffeomorph.refl I M n :=
   ext h.symm_apply_apply
 #align diffeomorph.self_trans_symm Diffeomorph.self_trans_symm
+-/
 
+#print Diffeomorph.symm_trans_self /-
 @[simp]
 theorem symm_trans_self (h : M ≃ₘ^n⟮I, J⟯ N) : h.symm.trans h = Diffeomorph.refl J N n :=
   ext h.apply_symm_apply
 #align diffeomorph.symm_trans_self Diffeomorph.symm_trans_self
+-/
 
+#print Diffeomorph.symm_trans' /-
 @[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 :=
   rfl
 #align diffeomorph.symm_trans' Diffeomorph.symm_trans'
+-/
 
+#print Diffeomorph.symm_toEquiv /-
 @[simp]
 theorem symm_toEquiv (h : M ≃ₘ^n⟮I, J⟯ N) : h.symm.toEquiv = h.toEquiv.symm :=
   rfl
 #align diffeomorph.symm_to_equiv Diffeomorph.symm_toEquiv
+-/
 
+#print Diffeomorph.toEquiv_coe_symm /-
 @[simp, mfld_simps]
 theorem toEquiv_coe_symm (h : M ≃ₘ^n⟮I, J⟯ N) : ⇑h.toEquiv.symm = h.symm :=
   rfl
 #align diffeomorph.to_equiv_coe_symm Diffeomorph.toEquiv_coe_symm
+-/
 
+#print Diffeomorph.image_eq_preimage /-
 theorem image_eq_preimage (h : M ≃ₘ^n⟮I, J⟯ N) (s : Set M) : h '' s = h.symm ⁻¹' s :=
   h.toEquiv.image_eq_preimage s
 #align diffeomorph.image_eq_preimage Diffeomorph.image_eq_preimage
+-/
 
+#print Diffeomorph.symm_image_eq_preimage /-
 theorem symm_image_eq_preimage (h : M ≃ₘ^n⟮I, J⟯ N) (s : Set N) : h.symm '' s = h ⁻¹' s :=
   h.symm.image_eq_preimage s
 #align diffeomorph.symm_image_eq_preimage Diffeomorph.symm_image_eq_preimage
+-/
 
+#print Diffeomorph.range_comp /-
 @[simp, mfld_simps]
 theorem range_comp {α} (h : M ≃ₘ^n⟮I, J⟯ N) (f : α → M) : range (h ∘ f) = h.symm ⁻¹' range f := by
   rw [range_comp, image_eq_preimage]
 #align diffeomorph.range_comp Diffeomorph.range_comp
+-/
 
+#print Diffeomorph.image_symm_image /-
 @[simp]
 theorem image_symm_image (h : M ≃ₘ^n⟮I, J⟯ N) (s : Set N) : h '' (h.symm '' s) = s :=
   h.toEquiv.image_symm_image s
 #align diffeomorph.image_symm_image Diffeomorph.image_symm_image
+-/
 
+#print Diffeomorph.symm_image_image /-
 @[simp]
 theorem symm_image_image (h : M ≃ₘ^n⟮I, J⟯ N) (s : Set M) : h.symm '' (h '' s) = s :=
   h.toEquiv.symm_image_image s
 #align diffeomorph.symm_image_image Diffeomorph.symm_image_image
+-/
 
+#print Diffeomorph.toHomeomorph /-
 /-- A diffeomorphism is a homeomorphism. -/
 def toHomeomorph (h : M ≃ₘ^n⟮I, J⟯ N) : M ≃ₜ N :=
   ⟨h.toEquiv, h.Continuous, h.symm.Continuous⟩
 #align diffeomorph.to_homeomorph Diffeomorph.toHomeomorph
+-/
 
+#print Diffeomorph.toHomeomorph_toEquiv /-
 @[simp]
 theorem toHomeomorph_toEquiv (h : M ≃ₘ^n⟮I, J⟯ N) : h.toHomeomorph.toEquiv = h.toEquiv :=
   rfl
 #align diffeomorph.to_homeomorph_to_equiv Diffeomorph.toHomeomorph_toEquiv
+-/
 
+#print Diffeomorph.symm_toHomeomorph /-
 @[simp]
 theorem symm_toHomeomorph (h : M ≃ₘ^n⟮I, J⟯ N) : h.symm.toHomeomorph = h.toHomeomorph.symm :=
   rfl
 #align diffeomorph.symm_to_homeomorph Diffeomorph.symm_toHomeomorph
+-/
 
+#print Diffeomorph.coe_toHomeomorph /-
 @[simp]
 theorem coe_toHomeomorph (h : M ≃ₘ^n⟮I, J⟯ N) : ⇑h.toHomeomorph = h :=
   rfl
 #align diffeomorph.coe_to_homeomorph Diffeomorph.coe_toHomeomorph
+-/
 
+#print Diffeomorph.coe_toHomeomorph_symm /-
 @[simp]
 theorem coe_toHomeomorph_symm (h : M ≃ₘ^n⟮I, J⟯ N) : ⇑h.toHomeomorph.symm = h.symm :=
   rfl
 #align diffeomorph.coe_to_homeomorph_symm Diffeomorph.coe_toHomeomorph_symm
+-/
 
+#print Diffeomorph.contMDiffWithinAt_comp_diffeomorph_iff /-
 @[simp]
 theorem contMDiffWithinAt_comp_diffeomorph_iff {m} (h : M ≃ₘ^n⟮I, J⟯ N) {f : N → M'} {s x}
     (hm : m ≤ n) :
@@ -325,7 +408,9 @@ theorem contMDiffWithinAt_comp_diffeomorph_iff {m} (h : M ≃ₘ^n⟮I, J⟯ N)
   · rw [← h.image_eq_preimage]
     exact fun hf => hf.comp x (h.cont_mdiff_within_at.of_le hm) (maps_to_image _ _)
 #align diffeomorph.cont_mdiff_within_at_comp_diffeomorph_iff Diffeomorph.contMDiffWithinAt_comp_diffeomorph_iff
+-/
 
+#print Diffeomorph.contMDiffOn_comp_diffeomorph_iff /-
 @[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) :=
@@ -333,19 +418,25 @@ theorem contMDiffOn_comp_diffeomorph_iff {m} (h : M ≃ₘ^n⟮I, J⟯ N) {f : N
     simp only [hm, coe_to_equiv, symm_apply_apply, cont_mdiff_within_at_comp_diffeomorph_iff,
       mem_preimage]
 #align diffeomorph.cont_mdiff_on_comp_diffeomorph_iff Diffeomorph.contMDiffOn_comp_diffeomorph_iff
+-/
 
+#print Diffeomorph.contMDiffAt_comp_diffeomorph_iff /-
 @[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) :=
   h.contMDiffWithinAt_comp_diffeomorph_iff hm
 #align diffeomorph.cont_mdiff_at_comp_diffeomorph_iff Diffeomorph.contMDiffAt_comp_diffeomorph_iff
+-/
 
+#print Diffeomorph.contMDiff_comp_diffeomorph_iff /-
 @[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 :=
   h.toEquiv.forall_congr' fun x => h.contMDiffAt_comp_diffeomorph_iff hm
 #align diffeomorph.cont_mdiff_comp_diffeomorph_iff Diffeomorph.contMDiff_comp_diffeomorph_iff
+-/
 
+#print Diffeomorph.contMDiffWithinAt_diffeomorph_comp_iff /-
 @[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 :=
@@ -354,32 +445,42 @@ theorem contMDiffWithinAt_diffeomorph_comp_iff {m} (h : M ≃ₘ^n⟮I, J⟯ N)
       (h.symm.cont_mdiff_at.of_le hm).comp_contMDiffWithinAt _ Hhf,
     fun Hf => (h.ContMDiffAt.of_le hm).comp_contMDiffWithinAt _ Hf⟩
 #align diffeomorph.cont_mdiff_within_at_diffeomorph_comp_iff Diffeomorph.contMDiffWithinAt_diffeomorph_comp_iff
+-/
 
+#print Diffeomorph.contMDiffAt_diffeomorph_comp_iff /-
 @[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 :=
   h.contMDiffWithinAt_diffeomorph_comp_iff hm
 #align diffeomorph.cont_mdiff_at_diffeomorph_comp_iff Diffeomorph.contMDiffAt_diffeomorph_comp_iff
+-/
 
+#print Diffeomorph.contMDiffOn_diffeomorph_comp_iff /-
 @[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 :=
   forall₂_congr fun x hx => h.contMDiffWithinAt_diffeomorph_comp_iff hm
 #align diffeomorph.cont_mdiff_on_diffeomorph_comp_iff Diffeomorph.contMDiffOn_diffeomorph_comp_iff
+-/
 
+#print Diffeomorph.contMDiff_diffeomorph_comp_iff /-
 @[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 :=
   forall_congr' fun x => h.contMDiffWithinAt_diffeomorph_comp_iff hm
 #align diffeomorph.cont_mdiff_diffeomorph_comp_iff Diffeomorph.contMDiff_diffeomorph_comp_iff
+-/
 
-theorem toLocalHomeomorph_mDifferentiable (h : M ≃ₘ^n⟮I, J⟯ N) (hn : 1 ≤ n) :
+#print Diffeomorph.toLocalHomeomorph_mdifferentiable /-
+theorem toLocalHomeomorph_mdifferentiable (h : M ≃ₘ^n⟮I, J⟯ N) (hn : 1 ≤ n) :
     h.toHomeomorph.toLocalHomeomorph.MDifferentiable I J :=
   ⟨h.MDifferentiableOn _ hn, h.symm.MDifferentiableOn _ hn⟩
-#align diffeomorph.to_local_homeomorph_mdifferentiable Diffeomorph.toLocalHomeomorph_mDifferentiable
+#align diffeomorph.to_local_homeomorph_mdifferentiable Diffeomorph.toLocalHomeomorph_mdifferentiable
+-/
 
 section Constructions
 
+#print Diffeomorph.prodCongr /-
 /-- 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'
@@ -389,23 +490,29 @@ def prodCongr (h₁ : M ≃ₘ^n⟮I, I'⟯ M') (h₂ : N ≃ₘ^n⟮J, J'⟯ N'
     (h₁.symm.ContMDiff.comp contMDiff_fst).prod_mk (h₂.symm.ContMDiff.comp contMDiff_snd)
   toEquiv := h₁.toEquiv.prodCongr h₂.toEquiv
 #align diffeomorph.prod_congr Diffeomorph.prodCongr
+-/
 
+#print Diffeomorph.prodCongr_symm /-
 @[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 :=
   rfl
 #align diffeomorph.prod_congr_symm Diffeomorph.prodCongr_symm
+-/
 
+#print Diffeomorph.coe_prodCongr /-
 @[simp]
 theorem coe_prodCongr (h₁ : M ≃ₘ^n⟮I, I'⟯ M') (h₂ : N ≃ₘ^n⟮J, J'⟯ N') :
     ⇑(h₁.prodCongr h₂) = Prod.map h₁ h₂ :=
   rfl
 #align diffeomorph.coe_prod_congr Diffeomorph.coe_prodCongr
+-/
 
 section
 
 variable (I J J' M N N' n)
 
+#print Diffeomorph.prodComm /-
 /-- `M × N` is diffeomorphic to `N × M`. -/
 def prodComm : (M × N) ≃ₘ^n⟮I.Prod J, J.Prod I⟯ N × M
     where
@@ -413,17 +520,23 @@ def prodComm : (M × N) ≃ₘ^n⟮I.Prod J, J.Prod I⟯ N × M
   contMDiff_inv_fun := contMDiff_snd.prod_mk contMDiff_fst
   toEquiv := Equiv.prodComm M N
 #align diffeomorph.prod_comm Diffeomorph.prodComm
+-/
 
+#print Diffeomorph.prodComm_symm /-
 @[simp]
 theorem prodComm_symm : (prodComm I J M N n).symm = prodComm J I N M n :=
   rfl
 #align diffeomorph.prod_comm_symm Diffeomorph.prodComm_symm
+-/
 
+#print Diffeomorph.coe_prodComm /-
 @[simp]
 theorem coe_prodComm : ⇑(prodComm I J M N n) = Prod.swap :=
   rfl
 #align diffeomorph.coe_prod_comm Diffeomorph.coe_prodComm
+-/
 
+#print Diffeomorph.prodAssoc /-
 /-- `(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'
     where
@@ -435,6 +548,7 @@ def prodAssoc : ((M × N) × N') ≃ₘ^n⟮(I.Prod J).Prod J', I.Prod (J.Prod J
       (contMDiff_snd.comp contMDiff_snd)
   toEquiv := Equiv.prodAssoc M N N'
 #align diffeomorph.prod_assoc Diffeomorph.prodAssoc
+-/
 
 end
 
@@ -442,37 +556,47 @@ end Constructions
 
 variable [SmoothManifoldWithCorners I M] [SmoothManifoldWithCorners J N]
 
+#print Diffeomorph.uniqueMDiffOn_image_aux /-
 theorem uniqueMDiffOn_image_aux (h : M ≃ₘ^n⟮I, J⟯ N) (hn : 1 ≤ n) {s : Set M}
     (hs : UniqueMDiffOn I s) : UniqueMDiffOn J (h '' s) :=
   by
   convert hs.unique_mdiff_on_preimage (h.to_local_homeomorph_mdifferentiable hn)
   simp [h.image_eq_preimage]
 #align diffeomorph.unique_mdiff_on_image_aux Diffeomorph.uniqueMDiffOn_image_aux
+-/
 
+#print Diffeomorph.uniqueMDiffOn_image /-
 @[simp]
 theorem uniqueMDiffOn_image (h : M ≃ₘ^n⟮I, J⟯ N) (hn : 1 ≤ n) {s : Set M} :
     UniqueMDiffOn J (h '' s) ↔ UniqueMDiffOn I s :=
   ⟨fun hs => h.symm_image_image s ▸ h.symm.uniqueMDiffOn_image_aux hn hs,
     h.uniqueMDiffOn_image_aux hn⟩
 #align diffeomorph.unique_mdiff_on_image Diffeomorph.uniqueMDiffOn_image
+-/
 
+#print Diffeomorph.uniqueMDiffOn_preimage /-
 @[simp]
 theorem uniqueMDiffOn_preimage (h : M ≃ₘ^n⟮I, J⟯ N) (hn : 1 ≤ n) {s : Set N} :
     UniqueMDiffOn I (h ⁻¹' s) ↔ UniqueMDiffOn J s :=
   h.symm_image_eq_preimage s ▸ h.symm.uniqueMDiffOn_image hn
 #align diffeomorph.unique_mdiff_on_preimage Diffeomorph.uniqueMDiffOn_preimage
+-/
 
+#print Diffeomorph.uniqueDiffOn_image /-
 @[simp]
 theorem uniqueDiffOn_image (h : E ≃ₘ^n[𝕜] F) (hn : 1 ≤ n) {s : Set E} :
     UniqueDiffOn 𝕜 (h '' s) ↔ UniqueDiffOn 𝕜 s := by
   simp only [← uniqueMDiffOn_iff_uniqueDiffOn, unique_mdiff_on_image, hn]
 #align diffeomorph.unique_diff_on_image Diffeomorph.uniqueDiffOn_image
+-/
 
+#print Diffeomorph.uniqueDiffOn_preimage /-
 @[simp]
 theorem uniqueDiffOn_preimage (h : E ≃ₘ^n[𝕜] F) (hn : 1 ≤ n) {s : Set F} :
     UniqueDiffOn 𝕜 (h ⁻¹' s) ↔ UniqueDiffOn 𝕜 s :=
   h.symm_image_eq_preimage s ▸ h.symm.uniqueDiffOn_image hn
 #align diffeomorph.unique_diff_on_preimage Diffeomorph.uniqueDiffOn_preimage
+-/
 
 end Diffeomorph
 
@@ -480,6 +604,7 @@ namespace ContinuousLinearEquiv
 
 variable (e : E ≃L[𝕜] E')
 
+#print ContinuousLinearEquiv.toDiffeomorph /-
 /-- A continuous linear equivalence between normed spaces is a diffeomorphism. -/
 def toDiffeomorph : E ≃ₘ[𝕜] E'
     where
@@ -487,21 +612,28 @@ def toDiffeomorph : E ≃ₘ[𝕜] E'
   contMDiff_inv_fun := e.symm.ContDiff.ContMDiff
   toEquiv := e.toLinearEquiv.toEquiv
 #align continuous_linear_equiv.to_diffeomorph ContinuousLinearEquiv.toDiffeomorph
+-/
 
+#print ContinuousLinearEquiv.coe_toDiffeomorph /-
 @[simp]
 theorem coe_toDiffeomorph : ⇑e.toDiffeomorph = e :=
   rfl
 #align continuous_linear_equiv.coe_to_diffeomorph ContinuousLinearEquiv.coe_toDiffeomorph
+-/
 
+#print ContinuousLinearEquiv.symm_toDiffeomorph /-
 @[simp]
 theorem symm_toDiffeomorph : e.symm.toDiffeomorph = e.toDiffeomorph.symm :=
   rfl
 #align continuous_linear_equiv.symm_to_diffeomorph ContinuousLinearEquiv.symm_toDiffeomorph
+-/
 
+#print ContinuousLinearEquiv.coe_toDiffeomorph_symm /-
 @[simp]
 theorem coe_toDiffeomorph_symm : ⇑e.toDiffeomorph.symm = e.symm :=
   rfl
 #align continuous_linear_equiv.coe_to_diffeomorph_symm ContinuousLinearEquiv.coe_toDiffeomorph_symm
+-/
 
 end ContinuousLinearEquiv
 
@@ -509,6 +641,7 @@ namespace ModelWithCorners
 
 variable (I) (e : E ≃ₘ[𝕜] E')
 
+#print ModelWithCorners.transDiffeomorph /-
 /-- 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
     where
@@ -518,35 +651,48 @@ def transDiffeomorph (I : ModelWithCorners 𝕜 E H) (e : E ≃ₘ[𝕜] E') : M
   continuous_toFun := e.Continuous.comp I.Continuous
   continuous_invFun := I.continuous_symm.comp e.symm.Continuous
 #align model_with_corners.trans_diffeomorph ModelWithCorners.transDiffeomorph
+-/
 
+#print ModelWithCorners.coe_transDiffeomorph /-
 @[simp, mfld_simps]
 theorem coe_transDiffeomorph : ⇑(I.transDiffeomorph e) = e ∘ I :=
   rfl
 #align model_with_corners.coe_trans_diffeomorph ModelWithCorners.coe_transDiffeomorph
+-/
 
+#print ModelWithCorners.coe_transDiffeomorph_symm /-
 @[simp, mfld_simps]
 theorem coe_transDiffeomorph_symm : ⇑(I.transDiffeomorph e).symm = I.symm ∘ e.symm :=
   rfl
 #align model_with_corners.coe_trans_diffeomorph_symm ModelWithCorners.coe_transDiffeomorph_symm
+-/
 
+#print ModelWithCorners.transDiffeomorph_range /-
 theorem transDiffeomorph_range : range (I.transDiffeomorph e) = e '' range I :=
   range_comp e I
 #align model_with_corners.trans_diffeomorph_range ModelWithCorners.transDiffeomorph_range
+-/
 
+#print ModelWithCorners.coe_extChartAt_transDiffeomorph /-
 theorem coe_extChartAt_transDiffeomorph (x : M) :
     ⇑(extChartAt (I.transDiffeomorph e) x) = e ∘ extChartAt I x :=
   rfl
 #align model_with_corners.coe_ext_chart_at_trans_diffeomorph ModelWithCorners.coe_extChartAt_transDiffeomorph
+-/
 
+#print ModelWithCorners.coe_extChartAt_transDiffeomorph_symm /-
 theorem coe_extChartAt_transDiffeomorph_symm (x : M) :
     ⇑(extChartAt (I.transDiffeomorph e) x).symm = (extChartAt I x).symm ∘ e.symm :=
   rfl
 #align model_with_corners.coe_ext_chart_at_trans_diffeomorph_symm ModelWithCorners.coe_extChartAt_transDiffeomorph_symm
+-/
 
+#print ModelWithCorners.extChartAt_transDiffeomorph_target /-
 theorem extChartAt_transDiffeomorph_target (x : M) :
     (extChartAt (I.transDiffeomorph e) x).target = e.symm ⁻¹' (extChartAt I x).target := by
   simp only [range_comp e, e.image_eq_preimage, preimage_preimage, mfld_simps]
 #align model_with_corners.ext_chart_at_trans_diffeomorph_target ModelWithCorners.extChartAt_transDiffeomorph_target
+-/
 
 end ModelWithCorners
 
@@ -554,6 +700,7 @@ namespace Diffeomorph
 
 variable (e : E ≃ₘ[𝕜] F)
 
+#print Diffeomorph.smoothManifoldWithCorners_transDiffeomorph /-
 instance smoothManifoldWithCorners_transDiffeomorph [SmoothManifoldWithCorners I M] :
     SmoothManifoldWithCorners (I.transDiffeomorph e) M :=
   by
@@ -563,9 +710,11 @@ instance smoothManifoldWithCorners_transDiffeomorph [SmoothManifoldWithCorners I
       (((contDiffGroupoid ⊤ I).compatible h₁ h₂).1.comp e.symm.cont_diff.cont_diff_on _)
   mfld_set_tac
 #align diffeomorph.smooth_manifold_with_corners_trans_diffeomorph Diffeomorph.smoothManifoldWithCorners_transDiffeomorph
+-/
 
 variable (I M)
 
+#print Diffeomorph.toTransDiffeomorph /-
 /-- 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
@@ -591,68 +740,89 @@ def toTransDiffeomorph (e : E ≃ₘ[𝕜] F) : M ≃ₘ⟮I, I.transDiffeomorph
       ⟨(extChartAt _ x).map_source (mem_extChartAt_source _ x), trivial, by
         simp only [e.symm_apply_apply, Equiv.refl_symm, Equiv.coe_refl, mfld_simps]⟩
 #align diffeomorph.to_trans_diffeomorph Diffeomorph.toTransDiffeomorph
+-/
 
 variable {I M}
 
+#print Diffeomorph.contMDiffWithinAt_transDiffeomorph_right /-
 @[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 :=
   (toTransDiffeomorph I M e).contMDiffWithinAt_diffeomorph_comp_iff le_top
 #align diffeomorph.cont_mdiff_within_at_trans_diffeomorph_right Diffeomorph.contMDiffWithinAt_transDiffeomorph_right
+-/
 
+#print Diffeomorph.contMDiffAt_transDiffeomorph_right /-
 @[simp]
 theorem contMDiffAt_transDiffeomorph_right {f : M' → M} {x} :
     ContMDiffAt I' (I.transDiffeomorph e) n f x ↔ ContMDiffAt I' I n f x :=
   (toTransDiffeomorph I M e).contMDiffAt_diffeomorph_comp_iff le_top
 #align diffeomorph.cont_mdiff_at_trans_diffeomorph_right Diffeomorph.contMDiffAt_transDiffeomorph_right
+-/
 
+#print Diffeomorph.contMDiffOn_transDiffeomorph_right /-
 @[simp]
 theorem contMDiffOn_transDiffeomorph_right {f : M' → M} {s} :
     ContMDiffOn I' (I.transDiffeomorph e) n f s ↔ ContMDiffOn I' I n f s :=
   (toTransDiffeomorph I M e).contMDiffOn_diffeomorph_comp_iff le_top
 #align diffeomorph.cont_mdiff_on_trans_diffeomorph_right Diffeomorph.contMDiffOn_transDiffeomorph_right
+-/
 
+#print Diffeomorph.contMDiff_transDiffeomorph_right /-
 @[simp]
 theorem contMDiff_transDiffeomorph_right {f : M' → M} :
     ContMDiff I' (I.transDiffeomorph e) n f ↔ ContMDiff I' I n f :=
   (toTransDiffeomorph I M e).contMDiff_diffeomorph_comp_iff le_top
 #align diffeomorph.cont_mdiff_trans_diffeomorph_right Diffeomorph.contMDiff_transDiffeomorph_right
+-/
 
+#print Diffeomorph.smooth_transDiffeomorph_right /-
 @[simp]
 theorem smooth_transDiffeomorph_right {f : M' → M} :
     Smooth I' (I.transDiffeomorph e) f ↔ Smooth I' I f :=
   contMDiff_transDiffeomorph_right e
 #align diffeomorph.smooth_trans_diffeomorph_right Diffeomorph.smooth_transDiffeomorph_right
+-/
 
+#print Diffeomorph.contMDiffWithinAt_transDiffeomorph_left /-
 @[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 :=
   ((toTransDiffeomorph I M e).contMDiffWithinAt_comp_diffeomorph_iff le_top).symm
 #align diffeomorph.cont_mdiff_within_at_trans_diffeomorph_left Diffeomorph.contMDiffWithinAt_transDiffeomorph_left
+-/
 
+#print Diffeomorph.contMDiffAt_transDiffeomorph_left /-
 @[simp]
 theorem contMDiffAt_transDiffeomorph_left {f : M → M'} {x} :
     ContMDiffAt (I.transDiffeomorph e) I' n f x ↔ ContMDiffAt I I' n f x :=
   ((toTransDiffeomorph I M e).contMDiffAt_comp_diffeomorph_iff le_top).symm
 #align diffeomorph.cont_mdiff_at_trans_diffeomorph_left Diffeomorph.contMDiffAt_transDiffeomorph_left
+-/
 
+#print Diffeomorph.contMDiffOn_transDiffeomorph_left /-
 @[simp]
 theorem contMDiffOn_transDiffeomorph_left {f : M → M'} {s} :
     ContMDiffOn (I.transDiffeomorph e) I' n f s ↔ ContMDiffOn I I' n f s :=
   ((toTransDiffeomorph I M e).contMDiffOn_comp_diffeomorph_iff le_top).symm
 #align diffeomorph.cont_mdiff_on_trans_diffeomorph_left Diffeomorph.contMDiffOn_transDiffeomorph_left
+-/
 
+#print Diffeomorph.contMDiff_transDiffeomorph_left /-
 @[simp]
 theorem contMDiff_transDiffeomorph_left {f : M → M'} :
     ContMDiff (I.transDiffeomorph e) I' n f ↔ ContMDiff I I' n f :=
   ((toTransDiffeomorph I M e).contMDiff_comp_diffeomorph_iff le_top).symm
 #align diffeomorph.cont_mdiff_trans_diffeomorph_left Diffeomorph.contMDiff_transDiffeomorph_left
+-/
 
+#print Diffeomorph.smooth_transDiffeomorph_left /-
 @[simp]
 theorem smooth_transDiffeomorph_left {f : M → M'} :
     Smooth (I.transDiffeomorph e) I' f ↔ Smooth I I' f :=
   e.contMDiff_transDiffeomorph_left
 #align diffeomorph.smooth_trans_diffeomorph_left Diffeomorph.smooth_transDiffeomorph_left
+-/
 
 end Diffeomorph
 
Diff
@@ -124,14 +124,14 @@ protected theorem smooth (h : M ≃ₘ⟮I, I'⟯ M') : Smooth I I' h :=
   h.contMDiff_to_fun
 #align diffeomorph.smooth Diffeomorph.smooth
 
-protected theorem mdifferentiable (h : M ≃ₘ^n⟮I, I'⟯ M') (hn : 1 ≤ n) : Mdifferentiable I I' h :=
-  h.ContMDiff.Mdifferentiable hn
-#align diffeomorph.mdifferentiable Diffeomorph.mdifferentiable
+protected theorem mDifferentiable (h : M ≃ₘ^n⟮I, I'⟯ M') (hn : 1 ≤ n) : MDifferentiable I I' h :=
+  h.ContMDiff.MDifferentiable hn
+#align diffeomorph.mdifferentiable Diffeomorph.mDifferentiable
 
-protected theorem mdifferentiableOn (h : M ≃ₘ^n⟮I, I'⟯ M') (s : Set M) (hn : 1 ≤ n) :
-    MdifferentiableOn I I' h s :=
-  (h.Mdifferentiable hn).MdifferentiableOn
-#align diffeomorph.mdifferentiable_on Diffeomorph.mdifferentiableOn
+protected theorem mDifferentiableOn (h : M ≃ₘ^n⟮I, I'⟯ M') (s : Set M) (hn : 1 ≤ n) :
+    MDifferentiableOn I I' h s :=
+  (h.MDifferentiable hn).MDifferentiableOn
+#align diffeomorph.mdifferentiable_on Diffeomorph.mDifferentiableOn
 
 @[simp]
 theorem coe_toEquiv (h : M ≃ₘ^n⟮I, I'⟯ M') : ⇑h.toEquiv = h :=
@@ -373,10 +373,10 @@ theorem contMDiff_diffeomorph_comp_iff {m} (h : M ≃ₘ^n⟮I, J⟯ N) {f : M'
   forall_congr' fun x => h.contMDiffWithinAt_diffeomorph_comp_iff hm
 #align diffeomorph.cont_mdiff_diffeomorph_comp_iff Diffeomorph.contMDiff_diffeomorph_comp_iff
 
-theorem toLocalHomeomorph_mdifferentiable (h : M ≃ₘ^n⟮I, J⟯ N) (hn : 1 ≤ n) :
-    h.toHomeomorph.toLocalHomeomorph.Mdifferentiable I J :=
-  ⟨h.MdifferentiableOn _ hn, h.symm.MdifferentiableOn _ hn⟩
-#align diffeomorph.to_local_homeomorph_mdifferentiable Diffeomorph.toLocalHomeomorph_mdifferentiable
+theorem toLocalHomeomorph_mDifferentiable (h : M ≃ₘ^n⟮I, J⟯ N) (hn : 1 ≤ n) :
+    h.toHomeomorph.toLocalHomeomorph.MDifferentiable I J :=
+  ⟨h.MDifferentiableOn _ hn, h.symm.MDifferentiableOn _ hn⟩
+#align diffeomorph.to_local_homeomorph_mdifferentiable Diffeomorph.toLocalHomeomorph_mDifferentiable
 
 section Constructions
 
@@ -442,30 +442,30 @@ end Constructions
 
 variable [SmoothManifoldWithCorners I M] [SmoothManifoldWithCorners J N]
 
-theorem uniqueMdiffOn_image_aux (h : M ≃ₘ^n⟮I, J⟯ N) (hn : 1 ≤ n) {s : Set M}
-    (hs : UniqueMdiffOn I s) : UniqueMdiffOn J (h '' s) :=
+theorem uniqueMDiffOn_image_aux (h : M ≃ₘ^n⟮I, J⟯ N) (hn : 1 ≤ n) {s : Set M}
+    (hs : UniqueMDiffOn I s) : UniqueMDiffOn J (h '' s) :=
   by
   convert hs.unique_mdiff_on_preimage (h.to_local_homeomorph_mdifferentiable hn)
   simp [h.image_eq_preimage]
-#align diffeomorph.unique_mdiff_on_image_aux Diffeomorph.uniqueMdiffOn_image_aux
+#align diffeomorph.unique_mdiff_on_image_aux Diffeomorph.uniqueMDiffOn_image_aux
 
 @[simp]
-theorem uniqueMdiffOn_image (h : M ≃ₘ^n⟮I, J⟯ N) (hn : 1 ≤ n) {s : Set M} :
-    UniqueMdiffOn J (h '' s) ↔ UniqueMdiffOn I s :=
-  ⟨fun hs => h.symm_image_image s ▸ h.symm.uniqueMdiffOn_image_aux hn hs,
-    h.uniqueMdiffOn_image_aux hn⟩
-#align diffeomorph.unique_mdiff_on_image Diffeomorph.uniqueMdiffOn_image
+theorem uniqueMDiffOn_image (h : M ≃ₘ^n⟮I, J⟯ N) (hn : 1 ≤ n) {s : Set M} :
+    UniqueMDiffOn J (h '' s) ↔ UniqueMDiffOn I s :=
+  ⟨fun hs => h.symm_image_image s ▸ h.symm.uniqueMDiffOn_image_aux hn hs,
+    h.uniqueMDiffOn_image_aux hn⟩
+#align diffeomorph.unique_mdiff_on_image Diffeomorph.uniqueMDiffOn_image
 
 @[simp]
-theorem uniqueMdiffOn_preimage (h : M ≃ₘ^n⟮I, J⟯ N) (hn : 1 ≤ n) {s : Set N} :
-    UniqueMdiffOn I (h ⁻¹' s) ↔ UniqueMdiffOn J s :=
-  h.symm_image_eq_preimage s ▸ h.symm.uniqueMdiffOn_image hn
-#align diffeomorph.unique_mdiff_on_preimage Diffeomorph.uniqueMdiffOn_preimage
+theorem uniqueMDiffOn_preimage (h : M ≃ₘ^n⟮I, J⟯ N) (hn : 1 ≤ n) {s : Set N} :
+    UniqueMDiffOn I (h ⁻¹' s) ↔ UniqueMDiffOn J s :=
+  h.symm_image_eq_preimage s ▸ h.symm.uniqueMDiffOn_image hn
+#align diffeomorph.unique_mdiff_on_preimage Diffeomorph.uniqueMDiffOn_preimage
 
 @[simp]
 theorem uniqueDiffOn_image (h : E ≃ₘ^n[𝕜] F) (hn : 1 ≤ n) {s : Set E} :
     UniqueDiffOn 𝕜 (h '' s) ↔ UniqueDiffOn 𝕜 s := by
-  simp only [← uniqueMdiffOn_iff_uniqueDiffOn, unique_mdiff_on_image, hn]
+  simp only [← uniqueMDiffOn_iff_uniqueDiffOn, unique_mdiff_on_image, hn]
 #align diffeomorph.unique_diff_on_image Diffeomorph.uniqueDiffOn_image
 
 @[simp]
Diff
@@ -73,8 +73,8 @@ variable (I I' M M' n)
 -/
 @[protect_proj, nolint has_nonempty_instance]
 structure Diffeomorph extends M ≃ M' where
-  contMdiff_to_fun : ContMdiff I I' n to_equiv
-  contMdiff_inv_fun : ContMdiff I' I n to_equiv.symm
+  contMDiff_to_fun : ContMDiff I I' n to_equiv
+  contMDiff_inv_fun : ContMDiff I' I n to_equiv.symm
 #align diffeomorph Diffeomorph
 
 end Defs
@@ -97,35 +97,35 @@ instance : CoeFun (M ≃ₘ^n⟮I, I'⟯ M') fun _ => M → M' :=
   ⟨fun e => e.toEquiv⟩
 
 instance : Coe (M ≃ₘ^n⟮I, I'⟯ M') C^n⟮I, M; I', M'⟯ :=
-  ⟨fun Φ => ⟨Φ, Φ.contMdiff_to_fun⟩⟩
+  ⟨fun Φ => ⟨Φ, Φ.contMDiff_to_fun⟩⟩
 
 @[continuity]
 protected theorem continuous (h : M ≃ₘ^n⟮I, I'⟯ M') : Continuous h :=
-  h.contMdiff_to_fun.Continuous
+  h.contMDiff_to_fun.Continuous
 #align diffeomorph.continuous Diffeomorph.continuous
 
-protected theorem contMdiff (h : M ≃ₘ^n⟮I, I'⟯ M') : ContMdiff I I' n h :=
-  h.contMdiff_to_fun
-#align diffeomorph.cont_mdiff Diffeomorph.contMdiff
+protected theorem contMDiff (h : M ≃ₘ^n⟮I, I'⟯ M') : ContMDiff I I' n h :=
+  h.contMDiff_to_fun
+#align diffeomorph.cont_mdiff Diffeomorph.contMDiff
 
-protected theorem contMdiffAt (h : M ≃ₘ^n⟮I, I'⟯ M') {x} : ContMdiffAt I I' n h x :=
-  h.ContMdiff.ContMdiffAt
-#align diffeomorph.cont_mdiff_at Diffeomorph.contMdiffAt
+protected theorem contMDiffAt (h : M ≃ₘ^n⟮I, I'⟯ M') {x} : ContMDiffAt I I' n h x :=
+  h.ContMDiff.ContMDiffAt
+#align diffeomorph.cont_mdiff_at Diffeomorph.contMDiffAt
 
-protected theorem contMdiffWithinAt (h : M ≃ₘ^n⟮I, I'⟯ M') {s x} : ContMdiffWithinAt I I' n h s x :=
-  h.ContMdiffAt.ContMdiffWithinAt
-#align diffeomorph.cont_mdiff_within_at Diffeomorph.contMdiffWithinAt
+protected theorem contMDiffWithinAt (h : M ≃ₘ^n⟮I, I'⟯ M') {s x} : ContMDiffWithinAt I I' n h s x :=
+  h.ContMDiffAt.ContMDiffWithinAt
+#align diffeomorph.cont_mdiff_within_at Diffeomorph.contMDiffWithinAt
 
 protected theorem contDiff (h : E ≃ₘ^n[𝕜] E') : ContDiff 𝕜 n h :=
-  h.ContMdiff.ContDiff
+  h.ContMDiff.ContDiff
 #align diffeomorph.cont_diff Diffeomorph.contDiff
 
 protected theorem smooth (h : M ≃ₘ⟮I, I'⟯ M') : Smooth I I' h :=
-  h.contMdiff_to_fun
+  h.contMDiff_to_fun
 #align diffeomorph.smooth Diffeomorph.smooth
 
 protected theorem mdifferentiable (h : M ≃ₘ^n⟮I, I'⟯ M') (hn : 1 ≤ n) : Mdifferentiable I I' h :=
-  h.ContMdiff.Mdifferentiable hn
+  h.ContMDiff.Mdifferentiable hn
 #align diffeomorph.mdifferentiable Diffeomorph.mdifferentiable
 
 protected theorem mdifferentiableOn (h : M ≃ₘ^n⟮I, I'⟯ M') (s : Set M) (hn : 1 ≤ n) :
@@ -175,8 +175,8 @@ variable (M I n)
 /-- Identity map as a diffeomorphism. -/
 protected def refl : M ≃ₘ^n⟮I, I⟯ M
     where
-  contMdiff_to_fun := contMdiff_id
-  contMdiff_inv_fun := contMdiff_id
+  contMDiff_to_fun := contMDiff_id
+  contMDiff_inv_fun := contMDiff_id
   toEquiv := Equiv.refl M
 #align diffeomorph.refl Diffeomorph.refl
 
@@ -195,8 +195,8 @@ end
 /-- Composition of two diffeomorphisms. -/
 protected def trans (h₁ : M ≃ₘ^n⟮I, I'⟯ M') (h₂ : M' ≃ₘ^n⟮I', J⟯ N) : M ≃ₘ^n⟮I, J⟯ N
     where
-  contMdiff_to_fun := h₂.contMdiff_to_fun.comp h₁.contMdiff_to_fun
-  contMdiff_inv_fun := h₁.contMdiff_inv_fun.comp h₂.contMdiff_inv_fun
+  contMDiff_to_fun := h₂.contMDiff_to_fun.comp h₁.contMDiff_to_fun
+  contMDiff_inv_fun := h₁.contMDiff_inv_fun.comp h₂.contMDiff_inv_fun
   toEquiv := h₁.toEquiv.trans h₂.toEquiv
 #align diffeomorph.trans Diffeomorph.trans
 
@@ -218,8 +218,8 @@ theorem coe_trans (h₁ : M ≃ₘ^n⟮I, I'⟯ M') (h₂ : M' ≃ₘ^n⟮I', J
 /-- Inverse of a diffeomorphism. -/
 protected def symm (h : M ≃ₘ^n⟮I, J⟯ N) : N ≃ₘ^n⟮J, I⟯ M
     where
-  contMdiff_to_fun := h.contMdiff_inv_fun
-  contMdiff_inv_fun := h.contMdiff_to_fun
+  contMDiff_to_fun := h.contMDiff_inv_fun
+  contMDiff_inv_fun := h.contMDiff_to_fun
   toEquiv := h.toEquiv.symm
 #align diffeomorph.symm Diffeomorph.symm
 
@@ -313,9 +313,9 @@ theorem coe_toHomeomorph_symm (h : M ≃ₘ^n⟮I, J⟯ N) : ⇑h.toHomeomorph.s
 #align diffeomorph.coe_to_homeomorph_symm Diffeomorph.coe_toHomeomorph_symm
 
 @[simp]
-theorem contMdiffWithinAt_comp_diffeomorph_iff {m} (h : M ≃ₘ^n⟮I, J⟯ N) {f : N → M'} {s x}
+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) :=
+    ContMDiffWithinAt I I' m (f ∘ h) s x ↔ ContMDiffWithinAt J I' m f (h.symm ⁻¹' s) (h x) :=
   by
   constructor
   · intro Hfh
@@ -324,54 +324,54 @@ theorem contMdiffWithinAt_comp_diffeomorph_iff {m} (h : M ≃ₘ^n⟮I, J⟯ N)
       Hfh.comp (h x) (h.symm.cont_mdiff_within_at.of_le hm) (maps_to_preimage _ _)
   · rw [← h.image_eq_preimage]
     exact fun hf => hf.comp x (h.cont_mdiff_within_at.of_le hm) (maps_to_image _ _)
-#align diffeomorph.cont_mdiff_within_at_comp_diffeomorph_iff Diffeomorph.contMdiffWithinAt_comp_diffeomorph_iff
+#align diffeomorph.cont_mdiff_within_at_comp_diffeomorph_iff Diffeomorph.contMDiffWithinAt_comp_diffeomorph_iff
 
 @[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) :=
+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) :=
   h.toEquiv.forall_congr' fun x => by
     simp only [hm, coe_to_equiv, symm_apply_apply, cont_mdiff_within_at_comp_diffeomorph_iff,
       mem_preimage]
-#align diffeomorph.cont_mdiff_on_comp_diffeomorph_iff Diffeomorph.contMdiffOn_comp_diffeomorph_iff
+#align diffeomorph.cont_mdiff_on_comp_diffeomorph_iff Diffeomorph.contMDiffOn_comp_diffeomorph_iff
 
 @[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) :=
-  h.contMdiffWithinAt_comp_diffeomorph_iff hm
-#align diffeomorph.cont_mdiff_at_comp_diffeomorph_iff Diffeomorph.contMdiffAt_comp_diffeomorph_iff
+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) :=
+  h.contMDiffWithinAt_comp_diffeomorph_iff hm
+#align diffeomorph.cont_mdiff_at_comp_diffeomorph_iff Diffeomorph.contMDiffAt_comp_diffeomorph_iff
 
 @[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 :=
-  h.toEquiv.forall_congr' fun x => h.contMdiffAt_comp_diffeomorph_iff hm
-#align diffeomorph.cont_mdiff_comp_diffeomorph_iff Diffeomorph.contMdiff_comp_diffeomorph_iff
+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 :=
+  h.toEquiv.forall_congr' fun x => h.contMDiffAt_comp_diffeomorph_iff hm
+#align diffeomorph.cont_mdiff_comp_diffeomorph_iff Diffeomorph.contMDiff_comp_diffeomorph_iff
 
 @[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 :=
+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 :=
   ⟨fun Hhf => by
     simpa only [(· ∘ ·), h.symm_apply_apply] using
-      (h.symm.cont_mdiff_at.of_le hm).comp_contMdiffWithinAt _ Hhf,
-    fun Hf => (h.ContMdiffAt.of_le hm).comp_contMdiffWithinAt _ Hf⟩
-#align diffeomorph.cont_mdiff_within_at_diffeomorph_comp_iff Diffeomorph.contMdiffWithinAt_diffeomorph_comp_iff
+      (h.symm.cont_mdiff_at.of_le hm).comp_contMDiffWithinAt _ Hhf,
+    fun Hf => (h.ContMDiffAt.of_le hm).comp_contMDiffWithinAt _ Hf⟩
+#align diffeomorph.cont_mdiff_within_at_diffeomorph_comp_iff Diffeomorph.contMDiffWithinAt_diffeomorph_comp_iff
 
 @[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 :=
-  h.contMdiffWithinAt_diffeomorph_comp_iff hm
-#align diffeomorph.cont_mdiff_at_diffeomorph_comp_iff Diffeomorph.contMdiffAt_diffeomorph_comp_iff
+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 :=
+  h.contMDiffWithinAt_diffeomorph_comp_iff hm
+#align diffeomorph.cont_mdiff_at_diffeomorph_comp_iff Diffeomorph.contMDiffAt_diffeomorph_comp_iff
 
 @[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 :=
-  forall₂_congr fun x hx => h.contMdiffWithinAt_diffeomorph_comp_iff hm
-#align diffeomorph.cont_mdiff_on_diffeomorph_comp_iff Diffeomorph.contMdiffOn_diffeomorph_comp_iff
+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 :=
+  forall₂_congr fun x hx => h.contMDiffWithinAt_diffeomorph_comp_iff hm
+#align diffeomorph.cont_mdiff_on_diffeomorph_comp_iff Diffeomorph.contMDiffOn_diffeomorph_comp_iff
 
 @[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 :=
-  forall_congr' fun x => h.contMdiffWithinAt_diffeomorph_comp_iff hm
-#align diffeomorph.cont_mdiff_diffeomorph_comp_iff Diffeomorph.contMdiff_diffeomorph_comp_iff
+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 :=
+  forall_congr' fun x => h.contMDiffWithinAt_diffeomorph_comp_iff hm
+#align diffeomorph.cont_mdiff_diffeomorph_comp_iff Diffeomorph.contMDiff_diffeomorph_comp_iff
 
 theorem toLocalHomeomorph_mdifferentiable (h : M ≃ₘ^n⟮I, J⟯ N) (hn : 1 ≤ n) :
     h.toHomeomorph.toLocalHomeomorph.Mdifferentiable I J :=
@@ -384,9 +384,9 @@ section Constructions
 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'
     where
-  contMdiff_to_fun := (h₁.ContMdiff.comp contMdiff_fst).prod_mk (h₂.ContMdiff.comp contMdiff_snd)
-  contMdiff_inv_fun :=
-    (h₁.symm.ContMdiff.comp contMdiff_fst).prod_mk (h₂.symm.ContMdiff.comp contMdiff_snd)
+  contMDiff_to_fun := (h₁.ContMDiff.comp contMDiff_fst).prod_mk (h₂.ContMDiff.comp contMDiff_snd)
+  contMDiff_inv_fun :=
+    (h₁.symm.ContMDiff.comp contMDiff_fst).prod_mk (h₂.symm.ContMDiff.comp contMDiff_snd)
   toEquiv := h₁.toEquiv.prodCongr h₂.toEquiv
 #align diffeomorph.prod_congr Diffeomorph.prodCongr
 
@@ -409,8 +409,8 @@ variable (I J J' M N N' n)
 /-- `M × N` is diffeomorphic to `N × M`. -/
 def prodComm : (M × N) ≃ₘ^n⟮I.Prod J, J.Prod I⟯ N × M
     where
-  contMdiff_to_fun := contMdiff_snd.prod_mk contMdiff_fst
-  contMdiff_inv_fun := contMdiff_snd.prod_mk contMdiff_fst
+  contMDiff_to_fun := contMDiff_snd.prod_mk contMDiff_fst
+  contMDiff_inv_fun := contMDiff_snd.prod_mk contMDiff_fst
   toEquiv := Equiv.prodComm M N
 #align diffeomorph.prod_comm Diffeomorph.prodComm
 
@@ -427,12 +427,12 @@ theorem coe_prodComm : ⇑(prodComm I J M N n) = Prod.swap :=
 /-- `(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'
     where
-  contMdiff_to_fun :=
-    (contMdiff_fst.comp contMdiff_fst).prod_mk
-      ((contMdiff_snd.comp contMdiff_fst).prod_mk contMdiff_snd)
-  contMdiff_inv_fun :=
-    (contMdiff_fst.prod_mk (contMdiff_fst.comp contMdiff_snd)).prod_mk
-      (contMdiff_snd.comp contMdiff_snd)
+  contMDiff_to_fun :=
+    (contMDiff_fst.comp contMDiff_fst).prod_mk
+      ((contMDiff_snd.comp contMDiff_fst).prod_mk contMDiff_snd)
+  contMDiff_inv_fun :=
+    (contMDiff_fst.prod_mk (contMDiff_fst.comp contMDiff_snd)).prod_mk
+      (contMDiff_snd.comp contMDiff_snd)
   toEquiv := Equiv.prodAssoc M N N'
 #align diffeomorph.prod_assoc Diffeomorph.prodAssoc
 
@@ -483,8 +483,8 @@ variable (e : E ≃L[𝕜] E')
 /-- A continuous linear equivalence between normed spaces is a diffeomorphism. -/
 def toDiffeomorph : E ≃ₘ[𝕜] E'
     where
-  contMdiff_to_fun := e.ContDiff.ContMdiff
-  contMdiff_inv_fun := e.symm.ContDiff.ContMdiff
+  contMDiff_to_fun := e.ContDiff.ContMDiff
+  contMDiff_inv_fun := e.symm.ContDiff.ContMDiff
   toEquiv := e.toLinearEquiv.toEquiv
 #align continuous_linear_equiv.to_diffeomorph ContinuousLinearEquiv.toDiffeomorph
 
@@ -571,18 +571,18 @@ with model `I.trans_diffeomorph e`. -/
 def toTransDiffeomorph (e : E ≃ₘ[𝕜] F) : M ≃ₘ⟮I, I.transDiffeomorph e⟯ M
     where
   toEquiv := Equiv.refl M
-  contMdiff_to_fun x :=
+  contMDiff_to_fun x :=
     by
-    refine' contMdiffWithinAt_iff'.2 ⟨continuousWithinAt_id, _⟩
+    refine' contMDiffWithinAt_iff'.2 ⟨continuousWithinAt_id, _⟩
     refine' e.cont_diff.cont_diff_within_at.congr' (fun y hy => _) _
     ·
       simp only [Equiv.coe_refl, id, (· ∘ ·), I.coe_ext_chart_at_trans_diffeomorph,
         (extChartAt I x).right_inv hy.1]
     exact
       ⟨(extChartAt I x).map_source (mem_extChartAt_source I x), trivial, by simp only [mfld_simps]⟩
-  contMdiff_inv_fun x :=
+  contMDiff_inv_fun x :=
     by
-    refine' contMdiffWithinAt_iff'.2 ⟨continuousWithinAt_id, _⟩
+    refine' contMDiffWithinAt_iff'.2 ⟨continuousWithinAt_id, _⟩
     refine' e.symm.cont_diff.cont_diff_within_at.congr' (fun y hy => _) _
     · simp only [mem_inter_iff, I.ext_chart_at_trans_diffeomorph_target] at hy 
       simp only [Equiv.coe_refl, Equiv.refl_symm, id, (· ∘ ·),
@@ -595,63 +595,63 @@ def toTransDiffeomorph (e : E ≃ₘ[𝕜] F) : M ≃ₘ⟮I, I.transDiffeomorph
 variable {I M}
 
 @[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 :=
-  (toTransDiffeomorph I M e).contMdiffWithinAt_diffeomorph_comp_iff le_top
-#align diffeomorph.cont_mdiff_within_at_trans_diffeomorph_right Diffeomorph.contMdiffWithinAt_transDiffeomorph_right
+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 :=
+  (toTransDiffeomorph I M e).contMDiffWithinAt_diffeomorph_comp_iff le_top
+#align diffeomorph.cont_mdiff_within_at_trans_diffeomorph_right Diffeomorph.contMDiffWithinAt_transDiffeomorph_right
 
 @[simp]
-theorem contMdiffAt_transDiffeomorph_right {f : M' → M} {x} :
-    ContMdiffAt I' (I.transDiffeomorph e) n f x ↔ ContMdiffAt I' I n f x :=
-  (toTransDiffeomorph I M e).contMdiffAt_diffeomorph_comp_iff le_top
-#align diffeomorph.cont_mdiff_at_trans_diffeomorph_right Diffeomorph.contMdiffAt_transDiffeomorph_right
+theorem contMDiffAt_transDiffeomorph_right {f : M' → M} {x} :
+    ContMDiffAt I' (I.transDiffeomorph e) n f x ↔ ContMDiffAt I' I n f x :=
+  (toTransDiffeomorph I M e).contMDiffAt_diffeomorph_comp_iff le_top
+#align diffeomorph.cont_mdiff_at_trans_diffeomorph_right Diffeomorph.contMDiffAt_transDiffeomorph_right
 
 @[simp]
-theorem contMdiffOn_transDiffeomorph_right {f : M' → M} {s} :
-    ContMdiffOn I' (I.transDiffeomorph e) n f s ↔ ContMdiffOn I' I n f s :=
-  (toTransDiffeomorph I M e).contMdiffOn_diffeomorph_comp_iff le_top
-#align diffeomorph.cont_mdiff_on_trans_diffeomorph_right Diffeomorph.contMdiffOn_transDiffeomorph_right
+theorem contMDiffOn_transDiffeomorph_right {f : M' → M} {s} :
+    ContMDiffOn I' (I.transDiffeomorph e) n f s ↔ ContMDiffOn I' I n f s :=
+  (toTransDiffeomorph I M e).contMDiffOn_diffeomorph_comp_iff le_top
+#align diffeomorph.cont_mdiff_on_trans_diffeomorph_right Diffeomorph.contMDiffOn_transDiffeomorph_right
 
 @[simp]
-theorem contMdiff_transDiffeomorph_right {f : M' → M} :
-    ContMdiff I' (I.transDiffeomorph e) n f ↔ ContMdiff I' I n f :=
-  (toTransDiffeomorph I M e).contMdiff_diffeomorph_comp_iff le_top
-#align diffeomorph.cont_mdiff_trans_diffeomorph_right Diffeomorph.contMdiff_transDiffeomorph_right
+theorem contMDiff_transDiffeomorph_right {f : M' → M} :
+    ContMDiff I' (I.transDiffeomorph e) n f ↔ ContMDiff I' I n f :=
+  (toTransDiffeomorph I M e).contMDiff_diffeomorph_comp_iff le_top
+#align diffeomorph.cont_mdiff_trans_diffeomorph_right Diffeomorph.contMDiff_transDiffeomorph_right
 
 @[simp]
 theorem smooth_transDiffeomorph_right {f : M' → M} :
     Smooth I' (I.transDiffeomorph e) f ↔ Smooth I' I f :=
-  contMdiff_transDiffeomorph_right e
+  contMDiff_transDiffeomorph_right e
 #align diffeomorph.smooth_trans_diffeomorph_right Diffeomorph.smooth_transDiffeomorph_right
 
 @[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 :=
-  ((toTransDiffeomorph I M e).contMdiffWithinAt_comp_diffeomorph_iff le_top).symm
-#align diffeomorph.cont_mdiff_within_at_trans_diffeomorph_left Diffeomorph.contMdiffWithinAt_transDiffeomorph_left
+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 :=
+  ((toTransDiffeomorph I M e).contMDiffWithinAt_comp_diffeomorph_iff le_top).symm
+#align diffeomorph.cont_mdiff_within_at_trans_diffeomorph_left Diffeomorph.contMDiffWithinAt_transDiffeomorph_left
 
 @[simp]
-theorem contMdiffAt_transDiffeomorph_left {f : M → M'} {x} :
-    ContMdiffAt (I.transDiffeomorph e) I' n f x ↔ ContMdiffAt I I' n f x :=
-  ((toTransDiffeomorph I M e).contMdiffAt_comp_diffeomorph_iff le_top).symm
-#align diffeomorph.cont_mdiff_at_trans_diffeomorph_left Diffeomorph.contMdiffAt_transDiffeomorph_left
+theorem contMDiffAt_transDiffeomorph_left {f : M → M'} {x} :
+    ContMDiffAt (I.transDiffeomorph e) I' n f x ↔ ContMDiffAt I I' n f x :=
+  ((toTransDiffeomorph I M e).contMDiffAt_comp_diffeomorph_iff le_top).symm
+#align diffeomorph.cont_mdiff_at_trans_diffeomorph_left Diffeomorph.contMDiffAt_transDiffeomorph_left
 
 @[simp]
-theorem contMdiffOn_transDiffeomorph_left {f : M → M'} {s} :
-    ContMdiffOn (I.transDiffeomorph e) I' n f s ↔ ContMdiffOn I I' n f s :=
-  ((toTransDiffeomorph I M e).contMdiffOn_comp_diffeomorph_iff le_top).symm
-#align diffeomorph.cont_mdiff_on_trans_diffeomorph_left Diffeomorph.contMdiffOn_transDiffeomorph_left
+theorem contMDiffOn_transDiffeomorph_left {f : M → M'} {s} :
+    ContMDiffOn (I.transDiffeomorph e) I' n f s ↔ ContMDiffOn I I' n f s :=
+  ((toTransDiffeomorph I M e).contMDiffOn_comp_diffeomorph_iff le_top).symm
+#align diffeomorph.cont_mdiff_on_trans_diffeomorph_left Diffeomorph.contMDiffOn_transDiffeomorph_left
 
 @[simp]
-theorem contMdiff_transDiffeomorph_left {f : M → M'} :
-    ContMdiff (I.transDiffeomorph e) I' n f ↔ ContMdiff I I' n f :=
-  ((toTransDiffeomorph I M e).contMdiff_comp_diffeomorph_iff le_top).symm
-#align diffeomorph.cont_mdiff_trans_diffeomorph_left Diffeomorph.contMdiff_transDiffeomorph_left
+theorem contMDiff_transDiffeomorph_left {f : M → M'} :
+    ContMDiff (I.transDiffeomorph e) I' n f ↔ ContMDiff I I' n f :=
+  ((toTransDiffeomorph I M e).contMDiff_comp_diffeomorph_iff le_top).symm
+#align diffeomorph.cont_mdiff_trans_diffeomorph_left Diffeomorph.contMDiff_transDiffeomorph_left
 
 @[simp]
 theorem smooth_transDiffeomorph_left {f : M → M'} :
     Smooth (I.transDiffeomorph e) I' f ↔ Smooth I I' f :=
-  e.contMdiff_transDiffeomorph_left
+  e.contMDiff_transDiffeomorph_left
 #align diffeomorph.smooth_trans_diffeomorph_left Diffeomorph.smooth_transDiffeomorph_left
 
 end Diffeomorph
Diff
@@ -73,7 +73,7 @@ variable (I I' M M' n)
 -/
 @[protect_proj, nolint has_nonempty_instance]
 structure Diffeomorph extends M ≃ M' where
-  contMdiff_toFun : ContMdiff I I' n to_equiv
+  contMdiff_to_fun : ContMdiff I I' n to_equiv
   contMdiff_inv_fun : ContMdiff I' I n to_equiv.symm
 #align diffeomorph Diffeomorph
 
@@ -97,15 +97,15 @@ instance : CoeFun (M ≃ₘ^n⟮I, I'⟯ M') fun _ => M → M' :=
   ⟨fun e => e.toEquiv⟩
 
 instance : Coe (M ≃ₘ^n⟮I, I'⟯ M') C^n⟮I, M; I', M'⟯ :=
-  ⟨fun Φ => ⟨Φ, Φ.contMdiff_toFun⟩⟩
+  ⟨fun Φ => ⟨Φ, Φ.contMdiff_to_fun⟩⟩
 
 @[continuity]
 protected theorem continuous (h : M ≃ₘ^n⟮I, I'⟯ M') : Continuous h :=
-  h.contMdiff_toFun.Continuous
+  h.contMdiff_to_fun.Continuous
 #align diffeomorph.continuous Diffeomorph.continuous
 
 protected theorem contMdiff (h : M ≃ₘ^n⟮I, I'⟯ M') : ContMdiff I I' n h :=
-  h.contMdiff_toFun
+  h.contMdiff_to_fun
 #align diffeomorph.cont_mdiff Diffeomorph.contMdiff
 
 protected theorem contMdiffAt (h : M ≃ₘ^n⟮I, I'⟯ M') {x} : ContMdiffAt I I' n h x :=
@@ -121,7 +121,7 @@ protected theorem contDiff (h : E ≃ₘ^n[𝕜] E') : ContDiff 𝕜 n h :=
 #align diffeomorph.cont_diff Diffeomorph.contDiff
 
 protected theorem smooth (h : M ≃ₘ⟮I, I'⟯ M') : Smooth I I' h :=
-  h.contMdiff_toFun
+  h.contMdiff_to_fun
 #align diffeomorph.smooth Diffeomorph.smooth
 
 protected theorem mdifferentiable (h : M ≃ₘ^n⟮I, I'⟯ M') (hn : 1 ≤ n) : Mdifferentiable I I' h :=
@@ -175,7 +175,7 @@ variable (M I n)
 /-- Identity map as a diffeomorphism. -/
 protected def refl : M ≃ₘ^n⟮I, I⟯ M
     where
-  contMdiff_toFun := contMdiff_id
+  contMdiff_to_fun := contMdiff_id
   contMdiff_inv_fun := contMdiff_id
   toEquiv := Equiv.refl M
 #align diffeomorph.refl Diffeomorph.refl
@@ -195,7 +195,7 @@ end
 /-- Composition of two diffeomorphisms. -/
 protected def trans (h₁ : M ≃ₘ^n⟮I, I'⟯ M') (h₂ : M' ≃ₘ^n⟮I', J⟯ N) : M ≃ₘ^n⟮I, J⟯ N
     where
-  contMdiff_toFun := h₂.contMdiff_toFun.comp h₁.contMdiff_toFun
+  contMdiff_to_fun := h₂.contMdiff_to_fun.comp h₁.contMdiff_to_fun
   contMdiff_inv_fun := h₁.contMdiff_inv_fun.comp h₂.contMdiff_inv_fun
   toEquiv := h₁.toEquiv.trans h₂.toEquiv
 #align diffeomorph.trans Diffeomorph.trans
@@ -218,8 +218,8 @@ theorem coe_trans (h₁ : M ≃ₘ^n⟮I, I'⟯ M') (h₂ : M' ≃ₘ^n⟮I', J
 /-- Inverse of a diffeomorphism. -/
 protected def symm (h : M ≃ₘ^n⟮I, J⟯ N) : N ≃ₘ^n⟮J, I⟯ M
     where
-  contMdiff_toFun := h.contMdiff_inv_fun
-  contMdiff_inv_fun := h.contMdiff_toFun
+  contMdiff_to_fun := h.contMdiff_inv_fun
+  contMdiff_inv_fun := h.contMdiff_to_fun
   toEquiv := h.toEquiv.symm
 #align diffeomorph.symm Diffeomorph.symm
 
@@ -384,7 +384,7 @@ section Constructions
 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'
     where
-  contMdiff_toFun := (h₁.ContMdiff.comp contMdiff_fst).prod_mk (h₂.ContMdiff.comp contMdiff_snd)
+  contMdiff_to_fun := (h₁.ContMdiff.comp contMdiff_fst).prod_mk (h₂.ContMdiff.comp contMdiff_snd)
   contMdiff_inv_fun :=
     (h₁.symm.ContMdiff.comp contMdiff_fst).prod_mk (h₂.symm.ContMdiff.comp contMdiff_snd)
   toEquiv := h₁.toEquiv.prodCongr h₂.toEquiv
@@ -409,7 +409,7 @@ variable (I J J' M N N' n)
 /-- `M × N` is diffeomorphic to `N × M`. -/
 def prodComm : (M × N) ≃ₘ^n⟮I.Prod J, J.Prod I⟯ N × M
     where
-  contMdiff_toFun := contMdiff_snd.prod_mk contMdiff_fst
+  contMdiff_to_fun := contMdiff_snd.prod_mk contMdiff_fst
   contMdiff_inv_fun := contMdiff_snd.prod_mk contMdiff_fst
   toEquiv := Equiv.prodComm M N
 #align diffeomorph.prod_comm Diffeomorph.prodComm
@@ -427,7 +427,7 @@ theorem coe_prodComm : ⇑(prodComm I J M N n) = Prod.swap :=
 /-- `(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'
     where
-  contMdiff_toFun :=
+  contMdiff_to_fun :=
     (contMdiff_fst.comp contMdiff_fst).prod_mk
       ((contMdiff_snd.comp contMdiff_fst).prod_mk contMdiff_snd)
   contMdiff_inv_fun :=
@@ -483,7 +483,7 @@ variable (e : E ≃L[𝕜] E')
 /-- A continuous linear equivalence between normed spaces is a diffeomorphism. -/
 def toDiffeomorph : E ≃ₘ[𝕜] E'
     where
-  contMdiff_toFun := e.ContDiff.ContMdiff
+  contMdiff_to_fun := e.ContDiff.ContMdiff
   contMdiff_inv_fun := e.symm.ContDiff.ContMdiff
   toEquiv := e.toLinearEquiv.toEquiv
 #align continuous_linear_equiv.to_diffeomorph ContinuousLinearEquiv.toDiffeomorph
@@ -571,7 +571,7 @@ with model `I.trans_diffeomorph e`. -/
 def toTransDiffeomorph (e : E ≃ₘ[𝕜] F) : M ≃ₘ⟮I, I.transDiffeomorph e⟯ M
     where
   toEquiv := Equiv.refl M
-  contMdiff_toFun x :=
+  contMdiff_to_fun x :=
     by
     refine' contMdiffWithinAt_iff'.2 ⟨continuousWithinAt_id, _⟩
     refine' e.cont_diff.cont_diff_within_at.congr' (fun y hy => _) _
Diff
@@ -79,18 +79,14 @@ structure Diffeomorph extends M ≃ M' where
 
 end Defs
 
--- mathport name: diffeomorph
 scoped[Manifold] notation M " ≃ₘ^" n:1000 "⟮" I ", " J "⟯ " N => Diffeomorph I J M N n
 
--- mathport name: diffeomorph.top
 scoped[Manifold] notation M " ≃ₘ⟮" I ", " J "⟯ " N => Diffeomorph I J M N ⊤
 
--- mathport name: diffeomorph.self
 scoped[Manifold]
   notation E " ≃ₘ^" n:1000 "[" 𝕜 "] " E' =>
     Diffeomorph (modelWithCornersSelf 𝕜 E) (modelWithCornersSelf 𝕜 E') E E' n
 
--- mathport name: diffeomorph.self.top
 scoped[Manifold]
   notation E " ≃ₘ[" 𝕜 "] " E' =>
     Diffeomorph (modelWithCornersSelf 𝕜 E) (modelWithCornersSelf 𝕜 E') E E' ⊤
Diff
@@ -4,11 +4,12 @@ Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Nicolò Cavalleri, Yury Kudryashov
 
 ! This file was ported from Lean 3 source module geometry.manifold.diffeomorph
-! leanprover-community/mathlib commit f2ce6086713c78a7f880485f7917ea547a215982
+! leanprover-community/mathlib commit e354e865255654389cc46e6032160238df2e0f40
 ! Please do not edit these lines, except to modify the commit id
 ! if you have ported upstream changes.
 -/
 import Mathbin.Geometry.Manifold.ContMdiffMap
+import Mathbin.Geometry.Manifold.ContMdiffMfderiv
 
 /-!
 # Diffeomorphisms
@@ -165,6 +166,12 @@ theorem ext {h h' : M ≃ₘ^n⟮I, I'⟯ M'} (Heq : ∀ x, h x = h' x) : h = h'
   coeFn_injective <| funext Heq
 #align diffeomorph.ext Diffeomorph.ext
 
+instance : ContinuousMapClass (M ≃ₘ⟮I, J⟯ N) M N
+    where
+  coe := coeFn
+  coe_injective' := coeFn_injective
+  map_continuous f := f.Continuous
+
 section
 
 variable (M I n)
Diff
@@ -576,7 +576,7 @@ def toTransDiffeomorph (e : E ≃ₘ[𝕜] F) : M ≃ₘ⟮I, I.transDiffeomorph
       simp only [Equiv.coe_refl, id, (· ∘ ·), I.coe_ext_chart_at_trans_diffeomorph,
         (extChartAt I x).right_inv hy.1]
     exact
-      ⟨(extChartAt I x).map_source (mem_ext_chart_source I x), trivial, by simp only [mfld_simps]⟩
+      ⟨(extChartAt I x).map_source (mem_extChartAt_source I x), trivial, by simp only [mfld_simps]⟩
   contMdiff_inv_fun x :=
     by
     refine' contMdiffWithinAt_iff'.2 ⟨continuousWithinAt_id, _⟩
@@ -585,7 +585,7 @@ def toTransDiffeomorph (e : E ≃ₘ[𝕜] F) : M ≃ₘ⟮I, I.transDiffeomorph
       simp only [Equiv.coe_refl, Equiv.refl_symm, id, (· ∘ ·),
         I.coe_ext_chart_at_trans_diffeomorph_symm, (extChartAt I x).right_inv hy.1]
     exact
-      ⟨(extChartAt _ x).map_source (mem_ext_chart_source _ x), trivial, by
+      ⟨(extChartAt _ x).map_source (mem_extChartAt_source _ x), trivial, by
         simp only [e.symm_apply_apply, Equiv.refl_symm, Equiv.coe_refl, mfld_simps]⟩
 #align diffeomorph.to_trans_diffeomorph Diffeomorph.toTransDiffeomorph
 
Diff
@@ -316,7 +316,7 @@ theorem contMdiffWithinAt_comp_diffeomorph_iff {m} (h : M ≃ₘ^n⟮I, J⟯ N)
   by
   constructor
   · intro Hfh
-    rw [← h.symm_apply_apply x] at Hfh
+    rw [← h.symm_apply_apply x] at Hfh 
     simpa only [(· ∘ ·), h.apply_symm_apply] using
       Hfh.comp (h x) (h.symm.cont_mdiff_within_at.of_le hm) (maps_to_preimage _ _)
   · rw [← h.image_eq_preimage]
@@ -581,7 +581,7 @@ def toTransDiffeomorph (e : E ≃ₘ[𝕜] F) : M ≃ₘ⟮I, I.transDiffeomorph
     by
     refine' contMdiffWithinAt_iff'.2 ⟨continuousWithinAt_id, _⟩
     refine' e.symm.cont_diff.cont_diff_within_at.congr' (fun y hy => _) _
-    · simp only [mem_inter_iff, I.ext_chart_at_trans_diffeomorph_target] at hy
+    · simp only [mem_inter_iff, I.ext_chart_at_trans_diffeomorph_target] at hy 
       simp only [Equiv.coe_refl, Equiv.refl_symm, id, (· ∘ ·),
         I.coe_ext_chart_at_trans_diffeomorph_symm, (extChartAt I x).right_inv hy.1]
     exact
Diff
@@ -48,7 +48,7 @@ diffeomorphism, manifold
 -/
 
 
-open Manifold Topology
+open scoped Manifold Topology
 
 open Function Set
 

Changes in mathlib4

mathlib3
mathlib4
chore: classify porting notes referring to missing linters (#12098)

Reference the newly created issues #12094 and #12096, as well as the pre-existing #5171. Change all references to #10927 to #5171. Some of these changes were not labelled as "porting note"; change this for good measure.

Diff
@@ -67,7 +67,7 @@ variable (I I' M M' n)
 
 /-- `n`-times continuously differentiable diffeomorphism between `M` and `M'` with respect to `I`
 and `I'`. -/
--- Porting note: was @[nolint has_nonempty_instance]
+-- 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
chore(Geometry): remove a few porting notes (#12061)

In all cases, the original proof fixed itself.

Diff
@@ -570,12 +570,11 @@ with model `I.trans_diffeomorph e`. -/
 def toTransDiffeomorph (e : E ≃ₘ[𝕜] F) : M ≃ₘ⟮I, I.transDiffeomorph e⟯ M where
   toEquiv := Equiv.refl M
   contMDiff_toFun x := by
-    refine' contMDiffWithinAt_iff'.2 ⟨continuousWithinAt_id, _⟩
-    refine' e.contDiff.contDiffWithinAt.congr' (fun y hy => _) _
-    · simp only [Equiv.coe_refl, id, (· ∘ ·), I.coe_extChartAt_transDiffeomorph]
-      -- Porting note: `simp only` failed to used next lemma, converted to `rw`
-      rw [(extChartAt I x).right_inv hy.1]
-    exact
+    refine contMDiffWithinAt_iff'.2 ⟨continuousWithinAt_id, ?_⟩
+    refine e.contDiff.contDiffWithinAt.congr' (fun y hy ↦ ?_) ?_
+    · simp only [Equiv.coe_refl, id, (· ∘ ·), I.coe_extChartAt_transDiffeomorph,
+        (extChartAt I x).right_inv hy.1]
+    · exact
       ⟨(extChartAt I x).map_source (mem_extChartAt_source I x), trivial, by simp only [mfld_simps]⟩
   contMDiff_invFun x := by
     refine' contMDiffWithinAt_iff'.2 ⟨continuousWithinAt_id, _⟩
chore: classify "simp can prove" porting notes (#11550)

Classifies by adding issue number #10618 to porting notes claiming "simp can prove it".

Diff
@@ -613,7 +613,7 @@ theorem contMDiff_transDiffeomorph_right {f : M' → M} :
   (toTransDiffeomorph I M e).contMDiff_diffeomorph_comp_iff le_top
 #align diffeomorph.cont_mdiff_trans_diffeomorph_right Diffeomorph.contMDiff_transDiffeomorph_right
 
--- Porting note: was `@[simp]` but now `simp` can prove it
+-- Porting note (#10618): was `@[simp]` but now `simp` can prove it
 theorem smooth_transDiffeomorph_right {f : M' → M} :
     Smooth I' (I.transDiffeomorph e) f ↔ Smooth I' I f :=
   contMDiff_transDiffeomorph_right e
@@ -643,7 +643,7 @@ theorem contMDiff_transDiffeomorph_left {f : M → M'} :
   ((toTransDiffeomorph I M e).contMDiff_comp_diffeomorph_iff le_top).symm
 #align diffeomorph.cont_mdiff_trans_diffeomorph_left Diffeomorph.contMDiff_transDiffeomorph_left
 
--- Porting note: was `@[simp]` but now `simp` can prove it
+-- Porting note (#10618): was `@[simp]` but now `simp` can prove it
 theorem smooth_transDiffeomorph_left {f : M → M'} :
     Smooth (I.transDiffeomorph e) I' f ↔ Smooth I I' f :=
   e.contMDiff_transDiffeomorph_left
chore: classify todo porting notes (#11216)

Classifies by adding issue number #11215 to porting notes claiming "TODO".

Diff
@@ -129,7 +129,7 @@ protected theorem contMDiffWithinAt (h : M ≃ₘ^n⟮I, I'⟯ M') {s x} : ContM
   h.contMDiffAt.contMDiffWithinAt
 #align diffeomorph.cont_mdiff_within_at Diffeomorph.contMDiffWithinAt
 
--- Porting note: TODO: should use `E ≃ₘ^n[𝕜] F` notation
+-- Porting note (#11215): TODO: should use `E ≃ₘ^n[𝕜] F` notation
 protected theorem contDiff (h : E ≃ₘ^n⟮𝓘(𝕜, E), 𝓘(𝕜, E')⟯ E') : ContDiff 𝕜 n h :=
   h.contMDiff.contDiff
 #align diffeomorph.cont_diff Diffeomorph.contDiff
@@ -463,7 +463,7 @@ theorem uniqueMDiffOn_preimage (h : M ≃ₘ^n⟮I, J⟯ N) (hn : 1 ≤ n) {s :
   h.symm_image_eq_preimage s ▸ h.symm.uniqueMDiffOn_image hn
 #align diffeomorph.unique_mdiff_on_preimage Diffeomorph.uniqueMDiffOn_preimage
 
--- Porting note: TODO: should use `E ≃ₘ^n[𝕜] F` notation
+-- Porting note (#11215): TODO: should use `E ≃ₘ^n[𝕜] F` notation
 @[simp]
 theorem uniqueDiffOn_image (h : E ≃ₘ^n⟮𝓘(𝕜, E), 𝓘(𝕜, F)⟯ F) (hn : 1 ≤ n) {s : Set E} :
     UniqueDiffOn 𝕜 (h '' s) ↔ UniqueDiffOn 𝕜 s := by
@@ -471,7 +471,7 @@ theorem uniqueDiffOn_image (h : E ≃ₘ^n⟮𝓘(𝕜, E), 𝓘(𝕜, F)⟯ F)
 #align diffeomorph.unique_diff_on_image Diffeomorph.uniqueDiffOn_image
 
 @[simp]
--- Porting note: TODO: should use `E ≃ₘ^n[𝕜] F` notation
+-- 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 :=
   h.symm_image_eq_preimage s ▸ h.symm.uniqueDiffOn_image hn
style: homogenise porting notes (#11145)

Homogenises porting notes via capitalisation and addition of whitespace.

It makes the following changes:

  • converts "--porting note" into "-- Porting note";
  • converts "porting note" into "Porting note".
Diff
@@ -129,7 +129,7 @@ protected theorem contMDiffWithinAt (h : M ≃ₘ^n⟮I, I'⟯ M') {s x} : ContM
   h.contMDiffAt.contMDiffWithinAt
 #align diffeomorph.cont_mdiff_within_at Diffeomorph.contMDiffWithinAt
 
--- porting note: TODO: should use `E ≃ₘ^n[𝕜] F` notation
+-- Porting note: TODO: should use `E ≃ₘ^n[𝕜] F` notation
 protected theorem contDiff (h : E ≃ₘ^n⟮𝓘(𝕜, E), 𝓘(𝕜, E')⟯ E') : ContDiff 𝕜 n h :=
   h.contMDiff.contDiff
 #align diffeomorph.cont_diff Diffeomorph.contDiff
@@ -463,7 +463,7 @@ theorem uniqueMDiffOn_preimage (h : M ≃ₘ^n⟮I, J⟯ N) (hn : 1 ≤ n) {s :
   h.symm_image_eq_preimage s ▸ h.symm.uniqueMDiffOn_image hn
 #align diffeomorph.unique_mdiff_on_preimage Diffeomorph.uniqueMDiffOn_preimage
 
--- porting note: TODO: should use `E ≃ₘ^n[𝕜] F` notation
+-- Porting note: TODO: should use `E ≃ₘ^n[𝕜] F` notation
 @[simp]
 theorem uniqueDiffOn_image (h : E ≃ₘ^n⟮𝓘(𝕜, E), 𝓘(𝕜, F)⟯ F) (hn : 1 ≤ n) {s : Set E} :
     UniqueDiffOn 𝕜 (h '' s) ↔ UniqueDiffOn 𝕜 s := by
@@ -471,7 +471,7 @@ theorem uniqueDiffOn_image (h : E ≃ₘ^n⟮𝓘(𝕜, E), 𝓘(𝕜, F)⟯ F)
 #align diffeomorph.unique_diff_on_image Diffeomorph.uniqueDiffOn_image
 
 @[simp]
--- porting note: TODO: should use `E ≃ₘ^n[𝕜] F` notation
+-- Porting note: 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 :=
   h.symm_image_eq_preimage s ▸ h.symm.uniqueDiffOn_image hn
@@ -573,7 +573,7 @@ def toTransDiffeomorph (e : E ≃ₘ[𝕜] F) : M ≃ₘ⟮I, I.transDiffeomorph
     refine' contMDiffWithinAt_iff'.2 ⟨continuousWithinAt_id, _⟩
     refine' e.contDiff.contDiffWithinAt.congr' (fun y hy => _) _
     · simp only [Equiv.coe_refl, id, (· ∘ ·), I.coe_extChartAt_transDiffeomorph]
-      -- porting note: `simp only` failed to used next lemma, converted to `rw`
+      -- Porting note: `simp only` failed to used next lemma, converted to `rw`
       rw [(extChartAt I x).right_inv hy.1]
     exact
       ⟨(extChartAt I x).map_source (mem_extChartAt_source I x), trivial, by simp only [mfld_simps]⟩
@@ -613,7 +613,7 @@ theorem contMDiff_transDiffeomorph_right {f : M' → M} :
   (toTransDiffeomorph I M e).contMDiff_diffeomorph_comp_iff le_top
 #align diffeomorph.cont_mdiff_trans_diffeomorph_right Diffeomorph.contMDiff_transDiffeomorph_right
 
--- porting note: was `@[simp]` but now `simp` can prove it
+-- Porting note: was `@[simp]` but now `simp` can prove it
 theorem smooth_transDiffeomorph_right {f : M' → M} :
     Smooth I' (I.transDiffeomorph e) f ↔ Smooth I' I f :=
   contMDiff_transDiffeomorph_right e
@@ -643,7 +643,7 @@ theorem contMDiff_transDiffeomorph_left {f : M → M'} :
   ((toTransDiffeomorph I M e).contMDiff_comp_diffeomorph_iff le_top).symm
 #align diffeomorph.cont_mdiff_trans_diffeomorph_left Diffeomorph.contMDiff_transDiffeomorph_left
 
--- porting note: was `@[simp]` but now `simp` can prove it
+-- Porting note: was `@[simp]` but now `simp` can prove it
 theorem smooth_transDiffeomorph_left {f : M → M'} :
     Smooth (I.transDiffeomorph e) I' f ↔ Smooth I I' f :=
   e.contMDiff_transDiffeomorph_left
chore: replace Lean 3 syntax λ x, in doc comments (#10727)

Use Lean 4 syntax fun x ↦ instead, matching the style guide. This is close to exhaustive for doc comments; mathlib has about 460 remaining uses of λ (not all in Lean 3 syntax).

Diff
@@ -161,7 +161,7 @@ theorem toEquiv_inj {h h' : M ≃ₘ^n⟮I, I'⟯ M'} : h.toEquiv = h'.toEquiv 
   toEquiv_injective.eq_iff
 #align diffeomorph.to_equiv_inj Diffeomorph.toEquiv_inj
 
-/-- Coercion to function `λ h : M ≃ₘ^n⟮I, I'⟯ M', (h : M → M')` is injective. -/
+/-- 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')) :=
   DFunLike.coe_injective
 #align diffeomorph.coe_fn_injective Diffeomorph.coeFn_injective
doc: @[inherit_doc] on notations (#9942)

Make all the notations that unambiguously should inherit the docstring of their definition actually inherit it.

Also write a few docstrings by hand. I only wrote the ones I was competent to write and which I was sure of. Some docstrings come from mathlib3 as they were lost during the early port.

This PR is only intended as a first pass There are many more docstrings to add.

Diff
@@ -65,9 +65,8 @@ section Defs
 
 variable (I I' M M' n)
 
-/--
-`n`-times continuously differentiable diffeomorphism between `M` and `M'` with respect to I and I'
--/
+/-- `n`-times continuously differentiable diffeomorphism between `M` and `M'` with respect to `I`
+and `I'`. -/
 -- Porting note: was @[nolint has_nonempty_instance]
 structure Diffeomorph extends M ≃ M' where
   protected contMDiff_toFun : ContMDiff I I' n toEquiv
@@ -76,14 +75,18 @@ structure Diffeomorph extends M ≃ M' where
 
 end Defs
 
+@[inherit_doc]
 scoped[Manifold] notation M " ≃ₘ^" n:1000 "⟮" I ", " J "⟯ " N => Diffeomorph I J M N n
 
+/-- 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 ⊤
 
+/-- `n`-times continuously differentiable diffeomorphism between `E` and `E'`. -/
 scoped[Manifold]
   notation E " ≃ₘ^" n:1000 "[" 𝕜 "] " E' =>
     Diffeomorph (modelWithCornersSelf 𝕜 E) (modelWithCornersSelf 𝕜 E') E E' n
 
+/-- Infinitely differentiable diffeomorphism between `E` and `E'`. -/
 scoped[Manifold]
   notation E " ≃ₘ[" 𝕜 "] " E' =>
     Diffeomorph (modelWithCornersSelf 𝕜 E) (modelWithCornersSelf 𝕜 E') E E' ⊤
chore(*): rename FunLike to DFunLike (#9785)

This prepares for the introduction of a non-dependent synonym of FunLike, which helps a lot with keeping #8386 readable.

This is entirely search-and-replace in 680197f combined with manual fixes in 4145626, e900597 and b8428f8. The commands that generated this change:

sed -i 's/\bFunLike\b/DFunLike/g' {Archive,Counterexamples,Mathlib,test}/**/*.lean
sed -i 's/\btoFunLike\b/toDFunLike/g' {Archive,Counterexamples,Mathlib,test}/**/*.lean
sed -i 's/import Mathlib.Data.DFunLike/import Mathlib.Data.FunLike/g' {Archive,Counterexamples,Mathlib,test}/**/*.lean
sed -i 's/\bHom_FunLike\b/Hom_DFunLike/g' {Archive,Counterexamples,Mathlib,test}/**/*.lean     
sed -i 's/\binstFunLike\b/instDFunLike/g' {Archive,Counterexamples,Mathlib,test}/**/*.lean
sed -i 's/\bfunLike\b/instDFunLike/g' {Archive,Counterexamples,Mathlib,test}/**/*.lean
sed -i 's/\btoo many metavariables to apply `fun_like.has_coe_to_fun`/too many metavariables to apply `DFunLike.hasCoeToFun`/g' {Archive,Counterexamples,Mathlib,test}/**/*.lean

Co-authored-by: Anne Baanen <Vierkantor@users.noreply.github.com>

Diff
@@ -99,7 +99,7 @@ instance : EquivLike (M ≃ₘ^n⟮I, I'⟯ M') M M' where
   inv Φ := Φ.toEquiv.symm
   left_inv Φ := Φ.left_inv
   right_inv Φ := Φ.right_inv
-  coe_injective' _ _ h _ := toEquiv_injective <| FunLike.ext' h
+  coe_injective' _ _ h _ := toEquiv_injective <| DFunLike.ext' h
 
 /-- Interpret a diffeomorphism as a `ContMDiffMap`. -/
 @[coe]
@@ -160,7 +160,7 @@ theorem toEquiv_inj {h h' : M ≃ₘ^n⟮I, I'⟯ M'} : h.toEquiv = h'.toEquiv 
 
 /-- Coercion to function `λ h : M ≃ₘ^n⟮I, I'⟯ M', (h : M → M')` is injective. -/
 theorem coeFn_injective : Injective ((↑) : (M ≃ₘ^n⟮I, I'⟯ M') → (M → M')) :=
-  FunLike.coe_injective
+  DFunLike.coe_injective
 #align diffeomorph.coe_fn_injective Diffeomorph.coeFn_injective
 
 @[ext]
refactor(Geometry/Manifold/MFDeriv): split file (#9565)

With about 2200 lines, this is the largest file in Geometry/Manifolds.

Diff
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Nicolò Cavalleri, Yury Kudryashov
 -/
 import Mathlib.Geometry.Manifold.ContMDiffMap
-import Mathlib.Geometry.Manifold.MFDeriv.Basic
+import Mathlib.Geometry.Manifold.MFDeriv.UniqueDifferential
 
 #align_import geometry.manifold.diffeomorph from "leanprover-community/mathlib"@"e354e865255654389cc46e6032160238df2e0f40"
 
chore: move Geometry/Manifold/MFDeriv (#9588)

To preserve most git history when splitting the file in #9565.

Diff
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Nicolò Cavalleri, Yury Kudryashov
 -/
 import Mathlib.Geometry.Manifold.ContMDiffMap
-import Mathlib.Geometry.Manifold.MFDeriv
+import Mathlib.Geometry.Manifold.MFDeriv.Basic
 
 #align_import geometry.manifold.diffeomorph from "leanprover-community/mathlib"@"e354e865255654389cc46e6032160238df2e0f40"
 
chore: rename in PartialEquiv, Homeomorph, PartialHomeomorph (#9430)

Items 4-5 in reference Zulip

Also added symm and trans definitions for PartialEquiv, Homeomorph, and PartialHomeomorph.

Diff
@@ -195,6 +195,7 @@ theorem coe_refl : ⇑(Diffeomorph.refl I M n) = id :=
 end
 
 /-- 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 where
   contMDiff_toFun := h₂.contMDiff.comp h₁.contMDiff
   contMDiff_invFun := h₁.contMDiff_invFun.comp h₂.contMDiff_invFun
@@ -217,7 +218,7 @@ theorem coe_trans (h₁ : M ≃ₘ^n⟮I, I'⟯ M') (h₂ : M' ≃ₘ^n⟮I', J
 #align diffeomorph.coe_trans Diffeomorph.coe_trans
 
 /-- Inverse of a diffeomorphism. -/
-@[pp_dot]
+@[symm]
 protected def symm (h : M ≃ₘ^n⟮I, J⟯ N) : N ≃ₘ^n⟮J, I⟯ M where
   contMDiff_toFun := h.contMDiff_invFun
   contMDiff_invFun := h.contMDiff_toFun
chore: rename LocalEquiv to PartialEquiv (#8984)

The current name is misleading: there's no open set involved; it's just an equivalence between subsets of domain and target. zulip discussion

PEquiv is similarly named: this is fine, as they're different designs for the same concept.

Co-authored-by: Michael Rothgang <rothgami@math.hu-berlin.de>

Diff
@@ -509,7 +509,7 @@ variable (I) (e : E ≃ₘ[𝕜] E')
 
 /-- 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 where
-  toLocalEquiv := I.toLocalEquiv.trans e.toEquiv.toLocalEquiv
+  toPartialEquiv := I.toPartialEquiv.trans e.toEquiv.toPartialEquiv
   source_eq := by simp
   unique_diff' := by simp [range_comp e, I.unique_diff]
   continuous_toFun := e.continuous.comp I.continuous
chore: rename LocalHomeomorph to PartialHomeomorph (#8982)

LocalHomeomorph evokes a "local homeomorphism": this is not what this means. Instead, this is a homeomorphism on an open set of the domain (extended to the whole space, by the junk value pattern). Hence, partial homeomorphism is more appropriate, and avoids confusion with IsLocallyHomeomorph.

A future PR will rename LocalEquiv to PartialEquiv.

Zulip discussion

Diff
@@ -374,10 +374,10 @@ theorem contMDiff_diffeomorph_comp_iff {m} (h : M ≃ₘ^n⟮I, J⟯ N) {f : M'
   forall_congr' fun _ => h.contMDiffWithinAt_diffeomorph_comp_iff hm
 #align diffeomorph.cont_mdiff_diffeomorph_comp_iff Diffeomorph.contMDiff_diffeomorph_comp_iff
 
-theorem toLocalHomeomorph_mdifferentiable (h : M ≃ₘ^n⟮I, J⟯ N) (hn : 1 ≤ n) :
-    h.toHomeomorph.toLocalHomeomorph.MDifferentiable I J :=
+theorem toPartialHomeomorph_mdifferentiable (h : M ≃ₘ^n⟮I, J⟯ N) (hn : 1 ≤ n) :
+    h.toHomeomorph.toPartialHomeomorph.MDifferentiable I J :=
   ⟨h.mdifferentiableOn _ hn, h.symm.mdifferentiableOn _ hn⟩
-#align diffeomorph.to_local_homeomorph_mdifferentiable Diffeomorph.toLocalHomeomorph_mdifferentiable
+#align diffeomorph.to_local_homeomorph_mdifferentiable Diffeomorph.toPartialHomeomorph_mdifferentiable
 
 section Constructions
 
@@ -442,7 +442,7 @@ variable [SmoothManifoldWithCorners I M] [SmoothManifoldWithCorners J N]
 
 theorem uniqueMDiffOn_image_aux (h : M ≃ₘ^n⟮I, J⟯ N) (hn : 1 ≤ n) {s : Set M}
     (hs : UniqueMDiffOn I s) : UniqueMDiffOn J (h '' s) := by
-  convert hs.uniqueMDiffOn_preimage (h.toLocalHomeomorph_mdifferentiable hn)
+  convert hs.uniqueMDiffOn_preimage (h.toPartialHomeomorph_mdifferentiable hn)
   simp [h.image_eq_preimage]
 #align diffeomorph.unique_mdiff_on_image_aux Diffeomorph.uniqueMDiffOn_image_aux
 
chore: banish Type _ and Sort _ (#6499)

We remove all possible occurences of Type _ and Sort _ in favor of Type* and Sort*.

This has nice performance benefits.

Diff
@@ -50,15 +50,15 @@ open scoped Manifold Topology
 
 open Function Set
 
-variable {𝕜 : Type _} [NontriviallyNormedField 𝕜] {E : Type _} [NormedAddCommGroup E]
-  [NormedSpace 𝕜 E] {E' : Type _} [NormedAddCommGroup E'] [NormedSpace 𝕜 E'] {F : Type _}
-  [NormedAddCommGroup F] [NormedSpace 𝕜 F] {H : Type _} [TopologicalSpace H] {H' : Type _}
-  [TopologicalSpace H'] {G : Type _} [TopologicalSpace G] {G' : Type _} [TopologicalSpace G']
+variable {𝕜 : Type*} [NontriviallyNormedField 𝕜] {E : Type*} [NormedAddCommGroup E]
+  [NormedSpace 𝕜 E] {E' : Type*} [NormedAddCommGroup E'] [NormedSpace 𝕜 E'] {F : Type*}
+  [NormedAddCommGroup F] [NormedSpace 𝕜 F] {H : Type*} [TopologicalSpace H] {H' : Type*}
+  [TopologicalSpace H'] {G : Type*} [TopologicalSpace G] {G' : Type*} [TopologicalSpace G']
   {I : ModelWithCorners 𝕜 E H} {I' : ModelWithCorners 𝕜 E' H'} {J : ModelWithCorners 𝕜 F G}
   {J' : ModelWithCorners 𝕜 F G'}
 
-variable {M : Type _} [TopologicalSpace M] [ChartedSpace H M] {M' : Type _} [TopologicalSpace M']
-  [ChartedSpace H' M'] {N : Type _} [TopologicalSpace N] [ChartedSpace G N] {N' : Type _}
+variable {M : Type*} [TopologicalSpace M] [ChartedSpace H M] {M' : Type*} [TopologicalSpace M']
+  [ChartedSpace H' M'] {N : Type*} [TopologicalSpace N] [ChartedSpace G N] {N' : Type*}
   [TopologicalSpace N'] [ChartedSpace G' N'] {n : ℕ∞}
 
 section Defs
chore: script to replace headers with #align_import statements (#5979)

Open in Gitpod

Co-authored-by: Eric Wieser <wieser.eric@gmail.com> Co-authored-by: Scott Morrison <scott.morrison@gmail.com>

Diff
@@ -2,15 +2,12 @@
 Copyright © 2020 Nicolò Cavalleri. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Nicolò Cavalleri, Yury Kudryashov
-
-! This file was ported from Lean 3 source module geometry.manifold.diffeomorph
-! leanprover-community/mathlib commit e354e865255654389cc46e6032160238df2e0f40
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
 -/
 import Mathlib.Geometry.Manifold.ContMDiffMap
 import Mathlib.Geometry.Manifold.MFDeriv
 
+#align_import geometry.manifold.diffeomorph from "leanprover-community/mathlib"@"e354e865255654389cc46e6032160238df2e0f40"
+
 /-!
 # Diffeomorphisms
 This file implements diffeomorphisms.
feat: pp_dot attribute to replace pp_extended_field_notation command (#5632)
Diff
@@ -220,14 +220,13 @@ theorem coe_trans (h₁ : M ≃ₘ^n⟮I, I'⟯ M') (h₂ : M' ≃ₘ^n⟮I', J
 #align diffeomorph.coe_trans Diffeomorph.coe_trans
 
 /-- Inverse of a diffeomorphism. -/
+@[pp_dot]
 protected def symm (h : M ≃ₘ^n⟮I, J⟯ N) : N ≃ₘ^n⟮J, I⟯ M where
   contMDiff_toFun := h.contMDiff_invFun
   contMDiff_invFun := h.contMDiff_toFun
   toEquiv := h.toEquiv.symm
 #align diffeomorph.symm Diffeomorph.symm
 
-pp_extended_field_notation Diffeomorph.symm
-
 @[simp]
 theorem apply_symm_apply (h : M ≃ₘ^n⟮I, J⟯ N) (x : N) : h (h.symm x) = x :=
   h.toEquiv.apply_symm_apply x
@@ -324,7 +323,7 @@ theorem contMDiffWithinAt_comp_diffeomorph_iff {m} (h : M ≃ₘ^n⟮I, J⟯ N)
     ContMDiffWithinAt I I' m (f ∘ h) s x ↔ ContMDiffWithinAt J I' m f (h.symm ⁻¹' s) (h x) := by
   constructor
   · intro Hfh
-    rw [← h.symm_apply_apply x] at Hfh 
+    rw [← h.symm_apply_apply x] at Hfh
     simpa only [(· ∘ ·), h.apply_symm_apply] using
       Hfh.comp (h x) (h.symm.contMDiffWithinAt.of_le hm) (mapsTo_preimage _ _)
   · rw [← h.image_eq_preimage]
@@ -580,7 +579,7 @@ def toTransDiffeomorph (e : E ≃ₘ[𝕜] F) : M ≃ₘ⟮I, I.transDiffeomorph
   contMDiff_invFun x := by
     refine' contMDiffWithinAt_iff'.2 ⟨continuousWithinAt_id, _⟩
     refine' e.symm.contDiff.contDiffWithinAt.congr' (fun y hy => _) _
-    · simp only [mem_inter_iff, I.extChartAt_transDiffeomorph_target] at hy 
+    · simp only [mem_inter_iff, I.extChartAt_transDiffeomorph_target] at hy
       simp only [Equiv.coe_refl, Equiv.refl_symm, id, (· ∘ ·),
         I.coe_extChartAt_transDiffeomorph_symm, (extChartAt I x).right_inv hy.1]
     exact ⟨(extChartAt _ x).map_source (mem_extChartAt_source _ x), trivial, by
feat: port Geometry.Manifold.Diffeomorph (#5660)

Dependencies 12 + 889

890 files ported (98.7%)
398877 lines ported (98.6%)
Show graph

The unported dependencies are

The following 1 dependencies have changed in mathlib3 since they were ported, which may complicate porting this file