Skip to content

Commit c728e64

Browse files
committed
feat(VectorBundle/MDifferentiable): differentiability results for coordChange (leanprover-community#26866)
These follow readily from their ContMDiff counterparts. From the path towards geodesics and the Levi-Civita connection. Co-authored-by: Patrick Massot <patrickmassot@free.fr>
1 parent 3805342 commit c728e64

1 file changed

Lines changed: 78 additions & 0 deletions

File tree

Mathlib/Geometry/Manifold/VectorBundle/MDifferentiable.lean

Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,84 @@ theorem mdifferentiableWithinAt_zeroSection {t : Set B} {x : B} :
128128

129129
end Bundle
130130

131+
section coordChange
132+
133+
variable [(x : B) → AddCommMonoid (E x)] [(x : B) → Module 𝕜 (E x)]
134+
variable (e e' : Trivialization F (π F E)) [MemTrivializationAtlas e] [MemTrivializationAtlas e']
135+
[VectorBundle 𝕜 F E] [ContMDiffVectorBundle 1 F E IB]
136+
variable {IB}
137+
138+
theorem mdifferentiableOn_coordChangeL :
139+
MDifferentiableOn IB 𝓘(𝕜, F →L[𝕜] F) (fun b : B ↦ (e.coordChangeL 𝕜 e' b : F →L[𝕜] F))
140+
(e.baseSet ∩ e'.baseSet) :=
141+
(contMDiffOn_coordChangeL e e').mdifferentiableOn le_rfl
142+
143+
theorem mdifferentiableOn_symm_coordChangeL :
144+
MDifferentiableOn IB 𝓘(𝕜, F →L[𝕜] F) (fun b : B ↦ ((e.coordChangeL 𝕜 e' b).symm : F →L[𝕜] F))
145+
(e.baseSet ∩ e'.baseSet) :=
146+
(contMDiffOn_symm_coordChangeL e e').mdifferentiableOn le_rfl
147+
148+
variable {e e'}
149+
150+
theorem mdifferentiableAt_coordChangeL {x : B}
151+
(h : x ∈ e.baseSet) (h' : x ∈ e'.baseSet) :
152+
MDifferentiableAt IB 𝓘(𝕜, F →L[𝕜] F) (fun b : B ↦ (e.coordChangeL 𝕜 e' b : F →L[𝕜] F)) x :=
153+
(contMDiffAt_coordChangeL h h').mdifferentiableAt le_rfl
154+
155+
variable {s : Set M} {f : M → B} {g : M → F} {x : M}
156+
157+
protected theorem MDifferentiableWithinAt.coordChangeL (hf : MDifferentiableWithinAt IM IB f s x)
158+
(he : f x ∈ e.baseSet) (he' : f x ∈ e'.baseSet) :
159+
MDifferentiableWithinAt IM 𝓘(𝕜, F →L[𝕜] F)
160+
(fun y ↦ (e.coordChangeL 𝕜 e' (f y) : F →L[𝕜] F)) s x :=
161+
(mdifferentiableAt_coordChangeL he he').comp_mdifferentiableWithinAt _ hf
162+
163+
protected theorem MDifferentiableAt.coordChangeL
164+
(hf : MDifferentiableAt IM IB f x) (he : f x ∈ e.baseSet) (he' : f x ∈ e'.baseSet) :
165+
MDifferentiableAt IM 𝓘(𝕜, F →L[𝕜] F) (fun y ↦ (e.coordChangeL 𝕜 e' (f y) : F →L[𝕜] F)) x :=
166+
MDifferentiableWithinAt.coordChangeL hf he he'
167+
168+
protected theorem MDifferentiableOn.coordChangeL
169+
(hf : MDifferentiableOn IM IB f s) (he : MapsTo f s e.baseSet) (he' : MapsTo f s e'.baseSet) :
170+
MDifferentiableOn IM 𝓘(𝕜, F →L[𝕜] F) (fun y ↦ (e.coordChangeL 𝕜 e' (f y) : F →L[𝕜] F)) s :=
171+
fun x hx ↦ (hf x hx).coordChangeL (he hx) (he' hx)
172+
173+
protected theorem MDifferentiable.coordChangeL
174+
(hf : MDifferentiable IM IB f) (he : ∀ x, f x ∈ e.baseSet) (he' : ∀ x, f x ∈ e'.baseSet) :
175+
MDifferentiable IM 𝓘(𝕜, F →L[𝕜] F) (fun y ↦ (e.coordChangeL 𝕜 e' (f y) : F →L[𝕜] F)) := fun x ↦
176+
(hf x).coordChangeL (he x) (he' x)
177+
178+
protected theorem MDifferentiableWithinAt.coordChange
179+
(hf : MDifferentiableWithinAt IM IB f s x) (hg : MDifferentiableWithinAt IM 𝓘(𝕜, F) g s x)
180+
(he : f x ∈ e.baseSet) (he' : f x ∈ e'.baseSet) :
181+
MDifferentiableWithinAt IM 𝓘(𝕜, F) (fun y ↦ e.coordChange e' (f y) (g y)) s x := by
182+
refine ((hf.coordChangeL he he').clm_apply hg).congr_of_eventuallyEq ?_ ?_
183+
· have : e.baseSet ∩ e'.baseSet ∈ 𝓝 (f x) :=
184+
(e.open_baseSet.inter e'.open_baseSet).mem_nhds ⟨he, he'⟩
185+
filter_upwards [hf.continuousWithinAt this] with y hy
186+
exact (Trivialization.coordChangeL_apply' e e' hy (g y)).symm
187+
· exact (Trivialization.coordChangeL_apply' e e' ⟨he, he'⟩ (g x)).symm
188+
189+
protected theorem MDifferentiableAt.coordChange
190+
(hf : MDifferentiableAt IM IB f x) (hg : MDifferentiableAt IM 𝓘(𝕜, F) g x)
191+
(he : f x ∈ e.baseSet) (he' : f x ∈ e'.baseSet) :
192+
MDifferentiableAt IM 𝓘(𝕜, F) (fun y ↦ e.coordChange e' (f y) (g y)) x :=
193+
MDifferentiableWithinAt.coordChange hf hg he he'
194+
195+
protected theorem MDifferentiableOn.coordChange
196+
(hf : MDifferentiableOn IM IB f s) (hg : MDifferentiableOn IM 𝓘(𝕜, F) g s)
197+
(he : MapsTo f s e.baseSet) (he' : MapsTo f s e'.baseSet) :
198+
MDifferentiableOn IM 𝓘(𝕜, F) (fun y ↦ e.coordChange e' (f y) (g y)) s := fun x hx ↦
199+
(hf x hx).coordChange (hg x hx) (he hx) (he' hx)
200+
201+
protected theorem MDifferentiable.coordChange
202+
(hf : MDifferentiable IM IB f) (hg : MDifferentiable IM 𝓘(𝕜, F) g)
203+
(he : ∀ x, f x ∈ e.baseSet) (he' : ∀ x, f x ∈ e'.baseSet) :
204+
MDifferentiable IM 𝓘(𝕜, F) (fun y ↦ e.coordChange e' (f y) (g y)) := fun x ↦
205+
(hf x).coordChange (hg x) (he x) (he' x)
206+
207+
end coordChange
208+
131209
end
132210

133211
section

0 commit comments

Comments
 (0)