geometry.manifold.diffeomorph
⟷
Mathlib.Geometry.Manifold.Diffeomorph
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.
(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)
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -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"
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -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
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -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
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -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
mathlib commit https://github.com/leanprover-community/mathlib/commit/ce64cd319bb6b3e82f31c2d38e79080d377be451
@@ -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"
mathlib commit https://github.com/leanprover-community/mathlib/commit/8ea5598db6caeddde6cb734aa179cc2408dbd345
@@ -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
mathlib commit https://github.com/leanprover-community/mathlib/commit/1a51edf13debfcbe223fa06b1cb353b9ed9751cc
@@ -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
mathlib commit https://github.com/leanprover-community/mathlib/commit/9240e8be927a0955b9a82c6c85ef499ee3a626b8
@@ -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
mathlib commit https://github.com/leanprover-community/mathlib/commit/fdc286cc6967a012f41b87f76dcd2797b53152af
@@ -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]
mathlib commit https://github.com/leanprover-community/mathlib/commit/93f880918cb51905fd51b76add8273cbc27718ab
@@ -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
mathlib commit https://github.com/leanprover-community/mathlib/commit/f2ad3645af9effcdb587637dc28a6074edc813f9
@@ -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 => _) _
mathlib commit https://github.com/leanprover-community/mathlib/commit/9fb8964792b4237dac6200193a0d533f1b3f7423
@@ -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' ⊤
mathlib commit https://github.com/leanprover-community/mathlib/commit/31c24aa72e7b3e5ed97a8412470e904f82b81004
@@ -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)
mathlib commit https://github.com/leanprover-community/mathlib/commit/13361559d66b84f80b6d5a1c4a26aa5054766725
@@ -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
mathlib commit https://github.com/leanprover-community/mathlib/commit/cca40788df1b8755d5baf17ab2f27dacc2e17acb
@@ -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
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -48,7 +48,7 @@ diffeomorphism, manifold
-/
-open Manifold Topology
+open scoped Manifold Topology
open Function Set
mathlib commit https://github.com/leanprover-community/mathlib/commit/bd9851ca476957ea4549eb19b40e7b5ade9428cc
@@ -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
In all cases, the original proof fixed itself.
@@ -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, _⟩
@@ -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
@@ -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
Homogenises porting notes via capitalisation and addition of whitespace.
It makes the following changes:
@@ -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
λ 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).
@@ -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
@[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.
@@ -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' ⊤
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>
@@ -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]
With about 2200 lines, this is the largest file in Geometry/Manifolds.
@@ -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"
@@ -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"
PartialEquiv
, Homeomorph
, PartialHomeomorph
(#9430)
Items 4-5 in reference Zulip
Also added symm
and trans
definitions for PartialEquiv
, Homeomorph
, and PartialHomeomorph
.
@@ -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
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>
@@ -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
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
.
@@ -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
Type _
and Sort _
(#6499)
We remove all possible occurences of Type _
and Sort _
in favor of Type*
and Sort*
.
This has nice performance benefits.
@@ -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
@@ -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.
@@ -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
The unported dependencies are
algebra.order.module
init.core
linear_algebra.free_module.finite.rank
algebra.order.monoid.cancel.defs
algebra.abs
algebra.group_power.lemmas
init.data.list.basic
linear_algebra.free_module.rank
algebra.order.monoid.cancel.basic
init.data.list.default
topology.subset_properties
init.logic
The following 1 dependencies have changed in mathlib3 since they were ported, which may complicate porting this file