geometry.manifold.whitney_embeddingMathlib.Geometry.Manifold.WhitneyEmbedding

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)

(last sync)

Changes in mathlib3port

mathlib3
mathlib3port
Diff
@@ -78,10 +78,10 @@ theorem embeddingPiTangent_coe :
 theorem embeddingPiTangent_injOn : InjOn f.embeddingPiTangent s :=
   by
   intro x hx y hy h
-  simp only [embedding_pi_tangent_coe, funext_iff] at h 
+  simp only [embedding_pi_tangent_coe, funext_iff] at h
   obtain ⟨h₁, h₂⟩ := Prod.mk.inj_iff.1 (h (f.ind x hx))
-  rw [f.apply_ind x hx] at h₂ 
-  rw [← h₂, f.apply_ind x hx, one_smul, one_smul] at h₁ 
+  rw [f.apply_ind x hx] at h₂
+  rw [← h₂, f.apply_ind x hx, one_smul, one_smul] at h₁
   have := f.mem_ext_chart_at_source_of_eq_one h₂.symm
   exact (extChartAt I (f.c _)).InjOn (f.mem_ext_chart_at_ind_source x hx) this h₁
 #align smooth_bump_covering.embedding_pi_tangent_inj_on SmoothBumpCovering.embeddingPiTangent_injOn
Diff
@@ -3,9 +3,9 @@ Copyright (c) 2021 Yury G. Kudryashov. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Yury G. Kudryashov
 -/
-import Mathbin.Geometry.Manifold.Diffeomorph
-import Mathbin.Geometry.Manifold.Instances.Real
-import Mathbin.Geometry.Manifold.PartitionOfUnity
+import Geometry.Manifold.Diffeomorph
+import Geometry.Manifold.Instances.Real
+import Geometry.Manifold.PartitionOfUnity
 
 #align_import geometry.manifold.whitney_embedding from "leanprover-community/mathlib"@"1a51edf13debfcbe223fa06b1cb353b9ed9751cc"
 
Diff
@@ -2,16 +2,13 @@
 Copyright (c) 2021 Yury G. Kudryashov. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Yury G. Kudryashov
-
-! This file was ported from Lean 3 source module geometry.manifold.whitney_embedding
-! 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.Diffeomorph
 import Mathbin.Geometry.Manifold.Instances.Real
 import Mathbin.Geometry.Manifold.PartitionOfUnity
 
+#align_import geometry.manifold.whitney_embedding from "leanprover-community/mathlib"@"1a51edf13debfcbe223fa06b1cb353b9ed9751cc"
+
 /-!
 # Whitney embedding theorem
 
Diff
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Yury G. Kudryashov
 
 ! This file was ported from Lean 3 source module geometry.manifold.whitney_embedding
-! leanprover-community/mathlib commit 86c29aefdba50b3f33e86e52e3b2f51a0d8f0282
+! leanprover-community/mathlib commit 1a51edf13debfcbe223fa06b1cb353b9ed9751cc
 ! Please do not edit these lines, except to modify the commit id
 ! if you have ported upstream changes.
 -/
@@ -15,6 +15,9 @@ import Mathbin.Geometry.Manifold.PartitionOfUnity
 /-!
 # Whitney embedding theorem
 
+> THIS FILE IS SYNCHRONIZED WITH MATHLIB4.
+> Any changes to this file require a corresponding PR to mathlib4.
+
 In this file we prove a version of the Whitney embedding theorem: for any compact real manifold `M`,
 for sufficiently large `n` there exists a smooth embedding `M → ℝ^n`.
 
Diff
@@ -55,6 +55,7 @@ In this section we prove a version of the Whitney embedding theorem: for any com
 
 variable [T2Space M] [hi : Fintype ι] {s : Set M} (f : SmoothBumpCovering ι I M s)
 
+#print SmoothBumpCovering.embeddingPiTangent /-
 /-- Smooth embedding of `M` into `(E × ℝ) ^ ι`. -/
 def embeddingPiTangent : C^∞⟮I, M; 𝓘(ℝ, ι → E × ℝ), ι → E × ℝ⟯
     where
@@ -63,13 +64,17 @@ def embeddingPiTangent : C^∞⟮I, M; 𝓘(ℝ, ι → E × ℝ), ι → E × 
     contMDiff_pi_space.2 fun i =>
       ((f i).smooth_smul contMDiffOn_extChartAt).prod_mk_space (f i).Smooth
 #align smooth_bump_covering.embedding_pi_tangent SmoothBumpCovering.embeddingPiTangent
+-/
 
+#print SmoothBumpCovering.embeddingPiTangent_coe /-
 @[local simp]
 theorem embeddingPiTangent_coe :
     ⇑f.embeddingPiTangent = fun x i => (f i x • extChartAt I (f.c i) x, f i x) :=
   rfl
 #align smooth_bump_covering.embedding_pi_tangent_coe SmoothBumpCovering.embeddingPiTangent_coe
+-/
 
+#print SmoothBumpCovering.embeddingPiTangent_injOn /-
 theorem embeddingPiTangent_injOn : InjOn f.embeddingPiTangent s :=
   by
   intro x hx y hy h
@@ -80,12 +85,16 @@ theorem embeddingPiTangent_injOn : InjOn f.embeddingPiTangent s :=
   have := f.mem_ext_chart_at_source_of_eq_one h₂.symm
   exact (extChartAt I (f.c _)).InjOn (f.mem_ext_chart_at_ind_source x hx) this h₁
 #align smooth_bump_covering.embedding_pi_tangent_inj_on SmoothBumpCovering.embeddingPiTangent_injOn
+-/
 
+#print SmoothBumpCovering.embeddingPiTangent_injective /-
 theorem embeddingPiTangent_injective (f : SmoothBumpCovering ι I M) :
     Injective f.embeddingPiTangent :=
   injective_iff_injOn_univ.2 f.embeddingPiTangent_injOn
 #align smooth_bump_covering.embedding_pi_tangent_injective SmoothBumpCovering.embeddingPiTangent_injective
+-/
 
+#print SmoothBumpCovering.comp_embeddingPiTangent_mfderiv /-
 theorem comp_embeddingPiTangent_mfderiv (x : M) (hx : x ∈ s) :
     ((ContinuousLinearMap.fst ℝ E ℝ).comp
             (@ContinuousLinearMap.proj ℝ _ ι (fun _ => E × ℝ) _ _ (fun _ => inferInstance)
@@ -104,7 +113,9 @@ theorem comp_embeddingPiTangent_mfderiv (x : M) (hx : x ∈ s) :
     ContinuousLinearMap.coe_fst', ContinuousLinearMap.proj_apply]
   rw [hy, Pi.one_apply, one_smul]
 #align smooth_bump_covering.comp_embedding_pi_tangent_mfderiv SmoothBumpCovering.comp_embeddingPiTangent_mfderiv
+-/
 
+#print SmoothBumpCovering.embeddingPiTangent_ker_mfderiv /-
 theorem embeddingPiTangent_ker_mfderiv (x : M) (hx : x ∈ s) :
     LinearMap.ker (mfderiv I 𝓘(ℝ, ι → E × ℝ) f.embeddingPiTangent x) = ⊥ :=
   by
@@ -115,12 +126,16 @@ theorem embeddingPiTangent_ker_mfderiv (x : M) (hx : x ∈ s) :
     ← comp_embedding_pi_tangent_mfderiv]
   exact LinearMap.ker_le_ker_comp _ _
 #align smooth_bump_covering.embedding_pi_tangent_ker_mfderiv SmoothBumpCovering.embeddingPiTangent_ker_mfderiv
+-/
 
+#print SmoothBumpCovering.embeddingPiTangent_injective_mfderiv /-
 theorem embeddingPiTangent_injective_mfderiv (x : M) (hx : x ∈ s) :
     Injective (mfderiv I 𝓘(ℝ, ι → E × ℝ) f.embeddingPiTangent x) :=
   LinearMap.ker_eq_bot.1 (f.embeddingPiTangent_ker_mfderiv x hx)
 #align smooth_bump_covering.embedding_pi_tangent_injective_mfderiv SmoothBumpCovering.embeddingPiTangent_injective_mfderiv
+-/
 
+#print SmoothBumpCovering.exists_immersion_euclidean /-
 /-- Baby version of the **Whitney weak embedding theorem**: if `M` admits a finite covering by
 supports of bump functions, then for some `n` it can be immersed into the `n`-dimensional
 Euclidean space. -/
@@ -142,9 +157,11 @@ theorem exists_immersion_euclidean [Finite ι] (f : SmoothBumpCovering ι I M) :
     eEF.mfderiv_eq]
   exact eEF.injective.comp (f.embedding_pi_tangent_injective_mfderiv _ trivial)
 #align smooth_bump_covering.exists_immersion_euclidean SmoothBumpCovering.exists_immersion_euclidean
+-/
 
 end SmoothBumpCovering
 
+#print exists_embedding_euclidean_of_compact /-
 /-- Baby version of the Whitney weak embedding theorem: if `M` admits a finite covering by
 supports of bump functions, then for some `n` it can be embedded into the `n`-dimensional
 Euclidean space. -/
@@ -158,4 +175,5 @@ theorem exists_embedding_euclidean_of_compact [T2Space M] [CompactSpace M] :
   rcases f.exists_immersion_euclidean with ⟨n, e, hsmooth, hinj, hinj_mfderiv⟩
   exact ⟨n, e, hsmooth, hsmooth.continuous.closed_embedding hinj, hinj_mfderiv⟩
 #align exists_embedding_euclidean_of_compact exists_embedding_euclidean_of_compact
+-/
 
Diff
@@ -97,8 +97,8 @@ theorem comp_embeddingPiTangent_mfderiv (x : M) (hx : x ∈ s) :
     (ContinuousLinearMap.fst ℝ E ℝ).comp
       (@ContinuousLinearMap.proj ℝ _ ι (fun _ => E × ℝ) _ _ (fun _ => inferInstance) (f.ind x hx))
   have := L.has_mfderiv_at.comp x f.embedding_pi_tangent.mdifferentiable_at.has_mfderiv_at
-  convert hasMfderivAt_unique this _
-  refine' (hasMfderivAt_extChartAt I (f.mem_chart_at_ind_source x hx)).congr_of_eventuallyEq _
+  convert hasMFDerivAt_unique this _
+  refine' (hasMFDerivAt_extChartAt I (f.mem_chart_at_ind_source x hx)).congr_of_eventuallyEq _
   refine' (f.eventually_eq_one x hx).mono fun y hy => _
   simp only [embedding_pi_tangent_coe, ContinuousLinearMap.coe_comp', (· ∘ ·),
     ContinuousLinearMap.coe_fst', ContinuousLinearMap.proj_apply]
Diff
@@ -60,8 +60,8 @@ def embeddingPiTangent : C^∞⟮I, M; 𝓘(ℝ, ι → E × ℝ), ι → E × 
     where
   val x i := (f i x • extChartAt I (f.c i) x, f i x)
   property :=
-    contMdiff_pi_space.2 fun i =>
-      ((f i).smooth_smul contMdiffOn_extChartAt).prod_mk_space (f i).Smooth
+    contMDiff_pi_space.2 fun i =>
+      ((f i).smooth_smul contMDiffOn_extChartAt).prod_mk_space (f i).Smooth
 #align smooth_bump_covering.embedding_pi_tangent SmoothBumpCovering.embeddingPiTangent
 
 @[local simp]
Diff
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Yury G. Kudryashov
 
 ! This file was ported from Lean 3 source module geometry.manifold.whitney_embedding
-! leanprover-community/mathlib commit f2ce6086713c78a7f880485f7917ea547a215982
+! leanprover-community/mathlib commit 86c29aefdba50b3f33e86e52e3b2f51a0d8f0282
 ! Please do not edit these lines, except to modify the commit id
 ! if you have ported upstream changes.
 -/
@@ -58,8 +58,8 @@ variable [T2Space M] [hi : Fintype ι] {s : Set M} (f : SmoothBumpCovering ι I
 /-- Smooth embedding of `M` into `(E × ℝ) ^ ι`. -/
 def embeddingPiTangent : C^∞⟮I, M; 𝓘(ℝ, ι → E × ℝ), ι → E × ℝ⟯
     where
-  toFun x i := (f i x • extChartAt I (f.c i) x, f i x)
-  contMdiff_toFun :=
+  val x i := (f i x • extChartAt I (f.c i) x, f i x)
+  property :=
     contMdiff_pi_space.2 fun i =>
       ((f i).smooth_smul contMdiffOn_extChartAt).prod_mk_space (f i).Smooth
 #align smooth_bump_covering.embedding_pi_tangent SmoothBumpCovering.embeddingPiTangent
Diff
@@ -55,8 +55,6 @@ In this section we prove a version of the Whitney embedding theorem: for any com
 
 variable [T2Space M] [hi : Fintype ι] {s : Set M} (f : SmoothBumpCovering ι I M s)
 
-include hi
-
 /-- Smooth embedding of `M` into `(E × ℝ) ^ ι`. -/
 def embeddingPiTangent : C^∞⟮I, M; 𝓘(ℝ, ι → E × ℝ), ι → E × ℝ⟯
     where
@@ -123,8 +121,6 @@ theorem embeddingPiTangent_injective_mfderiv (x : M) (hx : x ∈ s) :
   LinearMap.ker_eq_bot.1 (f.embeddingPiTangent_ker_mfderiv x hx)
 #align smooth_bump_covering.embedding_pi_tangent_injective_mfderiv SmoothBumpCovering.embeddingPiTangent_injective_mfderiv
 
-omit hi
-
 /-- Baby version of the **Whitney weak embedding theorem**: if `M` admits a finite covering by
 supports of bump functions, then for some `n` it can be immersed into the `n`-dimensional
 Euclidean space. -/
Diff
@@ -75,10 +75,10 @@ theorem embeddingPiTangent_coe :
 theorem embeddingPiTangent_injOn : InjOn f.embeddingPiTangent s :=
   by
   intro x hx y hy h
-  simp only [embedding_pi_tangent_coe, funext_iff] at h
+  simp only [embedding_pi_tangent_coe, funext_iff] at h 
   obtain ⟨h₁, h₂⟩ := Prod.mk.inj_iff.1 (h (f.ind x hx))
-  rw [f.apply_ind x hx] at h₂
-  rw [← h₂, f.apply_ind x hx, one_smul, one_smul] at h₁
+  rw [f.apply_ind x hx] at h₂ 
+  rw [← h₂, f.apply_ind x hx, one_smul, one_smul] at h₁ 
   have := f.mem_ext_chart_at_source_of_eq_one h₂.symm
   exact (extChartAt I (f.c _)).InjOn (f.mem_ext_chart_at_ind_source x hx) this h₁
 #align smooth_bump_covering.embedding_pi_tangent_inj_on SmoothBumpCovering.embeddingPiTangent_injOn
@@ -129,7 +129,7 @@ omit hi
 supports of bump functions, then for some `n` it can be immersed into the `n`-dimensional
 Euclidean space. -/
 theorem exists_immersion_euclidean [Finite ι] (f : SmoothBumpCovering ι I M) :
-    ∃ (n : ℕ)(e : M → EuclideanSpace ℝ (Fin n)),
+    ∃ (n : ℕ) (e : M → EuclideanSpace ℝ (Fin n)),
       Smooth I (𝓡 n) e ∧ Injective e ∧ ∀ x : M, Injective (mfderiv I (𝓡 n) e x) :=
   by
   cases nonempty_fintype ι
@@ -153,7 +153,7 @@ end SmoothBumpCovering
 supports of bump functions, then for some `n` it can be embedded into the `n`-dimensional
 Euclidean space. -/
 theorem exists_embedding_euclidean_of_compact [T2Space M] [CompactSpace M] :
-    ∃ (n : ℕ)(e : M → EuclideanSpace ℝ (Fin n)),
+    ∃ (n : ℕ) (e : M → EuclideanSpace ℝ (Fin n)),
       Smooth I (𝓡 n) e ∧ ClosedEmbedding e ∧ ∀ x : M, Injective (mfderiv I (𝓡 n) e x) :=
   by
   rcases SmoothBumpCovering.exists_isSubordinate I isClosed_univ fun (x : M) _ => univ_mem with
Diff
@@ -39,7 +39,7 @@ variable {ι : Type uι} {E : Type uE} [NormedAddCommGroup E] [NormedSpace ℝ E
 
 open Function Filter FiniteDimensional Set
 
-open Topology Manifold Classical Filter BigOperators
+open scoped Topology Manifold Classical Filter BigOperators
 
 noncomputable section
 

Changes in mathlib4

mathlib3
mathlib4
chore: prepare Lean version bump with explicit simp (#10999)

Co-authored-by: Scott Morrison <scott.morrison@gmail.com>

Diff
@@ -93,7 +93,7 @@ theorem comp_embeddingPiTangent_mfderiv (x : M) (hx : x ∈ s) :
   convert hasMFDerivAt_unique this _
   refine' (hasMFDerivAt_extChartAt I (f.mem_chartAt_ind_source x hx)).congr_of_eventuallyEq _
   refine' (f.eventuallyEq_one x hx).mono fun y hy => _
-  simp only [embeddingPiTangent_coe, ContinuousLinearMap.coe_comp', (· ∘ ·),
+  simp only [L, embeddingPiTangent_coe, ContinuousLinearMap.coe_comp', (· ∘ ·),
     ContinuousLinearMap.coe_fst', ContinuousLinearMap.proj_apply]
   rw [hy, Pi.one_apply, one_smul]
 #align smooth_bump_covering.comp_embedding_pi_tangent_mfderiv SmoothBumpCovering.comp_embeddingPiTangent_mfderiv
style: remove trailing whitespace and modify the linter to detect it (#6519)
Diff
@@ -67,10 +67,10 @@ theorem embeddingPiTangent_coe :
 
 theorem embeddingPiTangent_injOn : InjOn f.embeddingPiTangent s := by
   intro x hx y _ h
-  simp only [embeddingPiTangent_coe, funext_iff] at h 
+  simp only [embeddingPiTangent_coe, funext_iff] at h
   obtain ⟨h₁, h₂⟩ := Prod.mk.inj_iff.1 (h (f.ind x hx))
-  rw [f.apply_ind x hx] at h₂ 
-  rw [← h₂, f.apply_ind x hx, one_smul, one_smul] at h₁ 
+  rw [f.apply_ind x hx] at h₂
+  rw [← h₂, f.apply_ind x hx, one_smul, one_smul] at h₁
   have := f.mem_extChartAt_source_of_eq_one h₂.symm
   exact (extChartAt I (f.c _)).injOn (f.mem_extChartAt_ind_source x hx) this h₁
 #align smooth_bump_covering.embedding_pi_tangent_inj_on SmoothBumpCovering.embeddingPiTangent_injOn
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,16 +2,13 @@
 Copyright (c) 2021 Yury G. Kudryashov. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Yury G. Kudryashov
-
-! This file was ported from Lean 3 source module geometry.manifold.whitney_embedding
-! leanprover-community/mathlib commit 86c29aefdba50b3f33e86e52e3b2f51a0d8f0282
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
 -/
 import Mathlib.Geometry.Manifold.Diffeomorph
 import Mathlib.Geometry.Manifold.Instances.Real
 import Mathlib.Geometry.Manifold.PartitionOfUnity
 
+#align_import geometry.manifold.whitney_embedding from "leanprover-community/mathlib"@"86c29aefdba50b3f33e86e52e3b2f51a0d8f0282"
+
 /-!
 # Whitney embedding theorem
 
feat: port Geometry.Manifold.WhitneyEmbedding (#5666)

Dependencies 12 + 1092

1093 files ported (98.9%)
497090 lines ported (98.9%)
Show graph

The unported dependencies are

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