Skip to content

Commit d0f60b5

Browse files
committed
feat: sections of a fiber bundle with Subsingleton fiber are smooth and differentiable (leanprover-community#41027)
This will be used to prove that the Levi-Civita connection is smooth. From the path towards the Levi-Civita connection and Riemannian geometry.
1 parent 8c79cb4 commit d0f60b5

2 files changed

Lines changed: 55 additions & 0 deletions

File tree

Mathlib/Geometry/Manifold/VectorBundle/Basic.lean

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -230,6 +230,8 @@ theorem contMDiffWithinAt_proj {s : Set (TotalSpace F E)} {p : TotalSpace F E} :
230230
ContMDiffWithinAt (IB.prod 𝓘(𝕜, F)) IB n (π F E) s p :=
231231
(contMDiffAt_proj E).contMDiffWithinAt
232232

233+
section
234+
233235
variable (𝕜) [∀ x, AddCommMonoid (E x)]
234236
variable [∀ x, Module 𝕜 (E x)] [VectorBundle 𝕜 F E]
235237

@@ -253,6 +255,35 @@ theorem contMDiffWithinAt_zeroSection {t : Set B} {x : B} :
253255
ContMDiffWithinAt IB (IB.prod 𝓘(𝕜, F)) n (zeroSection F E) t x :=
254256
(contMDiff_zeroSection _ _ x).contMDiffWithinAt
255257

258+
end
259+
260+
variable {s : ∀ x, E x} {u : Set B} {x : B}
261+
262+
@[nontriviality]
263+
lemma contMDiffWithinAt_section_of_subsingleton [Subsingleton F] :
264+
ContMDiffWithinAt IB (IB.prod 𝓘(𝕜, F)) n (fun x ↦ TotalSpace.mk' F x (s x)) u x := by
265+
rw [contMDiffWithinAt_section]
266+
apply contMDiffWithinAt_const |>.congr
267+
· intro y _
268+
apply Subsingleton.elim
269+
rfl
270+
271+
@[nontriviality]
272+
lemma contMDiffAt_section_of_subsingleton [Subsingleton F] :
273+
ContMDiffAt IB (IB.prod 𝓘(𝕜, F)) n (fun x ↦ TotalSpace.mk' F x (s x)) x := by
274+
rw [← contMDiffWithinAt_univ]
275+
apply contMDiffWithinAt_section_of_subsingleton
276+
277+
@[nontriviality]
278+
lemma contMDiffOn_section_of_subsingleton [Subsingleton F] :
279+
ContMDiffOn IB (IB.prod 𝓘(𝕜, F)) n (fun x ↦ TotalSpace.mk' F x (s x)) u :=
280+
fun _x _hx ↦ contMDiffWithinAt_section_of_subsingleton ..
281+
282+
@[nontriviality]
283+
lemma contMDiff_section_of_subsingleton [Subsingleton F] :
284+
ContMDiff IB (IB.prod 𝓘(𝕜, F)) n (fun x ↦ TotalSpace.mk' F x (s x)) :=
285+
fun _x ↦ contMDiffAt_section_of_subsingleton ..
286+
256287
end Bundle
257288

258289
end

Mathlib/Geometry/Manifold/VectorBundle/MDifferentiable.lean

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,8 @@ theorem mdifferentiableWithinAt_proj {s : Set (TotalSpace F E)} {p : TotalSpace
9999
MDiffAt[s] (π F E) p :=
100100
(mdifferentiableAt_proj E).mdifferentiableWithinAt
101101

102+
section
103+
102104
variable (𝕜) [∀ x, AddCommMonoid (E x)]
103105
variable [∀ x, Module 𝕜 (E x)] [VectorBundle 𝕜 F E]
104106

@@ -121,6 +123,28 @@ theorem mdifferentiableWithinAt_zeroSection {t : Set B} {x : B} :
121123
MDiffAt[t] (zeroSection F E) x :=
122124
(mdifferentiable_zeroSection _ _ x).mdifferentiableWithinAt
123125

126+
end
127+
128+
variable {s : ∀ x, E x} {u : Set B} {x : B}
129+
130+
@[nontriviality]
131+
lemma mdifferentiableWithinAt_section_of_subsingleton [Subsingleton F] :
132+
MDiffAt[u] (T% s) x :=
133+
(contMDiffWithinAt_section_of_subsingleton _).mdifferentiableWithinAt one_ne_zero
134+
135+
@[nontriviality]
136+
lemma mdifferentiableAt_section_of_subsingleton [Subsingleton F] : MDiffAt (T% s) x := by
137+
rw [← mdifferentiableWithinAt_univ]
138+
apply mdifferentiableWithinAt_section_of_subsingleton
139+
140+
@[nontriviality]
141+
lemma mdifferentiableOn_section_of_subsingleton [Subsingleton F] : MDiff[u] (T% s) :=
142+
fun _x _hx ↦ mdifferentiableWithinAt_section_of_subsingleton ..
143+
144+
@[nontriviality]
145+
lemma mdifferentiable_section_of_subsingleton [Subsingleton F] : MDiff (T% s) :=
146+
fun _x ↦ mdifferentiableAt_section_of_subsingleton ..
147+
124148
end Bundle
125149

126150
section coordChange

0 commit comments

Comments
 (0)