77
88public import Mathlib.Geometry.Manifold.MFDeriv.SpecificFunctions
99public import Mathlib.Geometry.Manifold.VectorBundle.Tangent
10+ public import Mathlib.Geometry.Manifold.Notation
1011
1112/-!
1213# Differentiability of models with corners and (extended) charts
@@ -59,27 +60,27 @@ protected theorem hasMFDerivWithinAt {s x} :
5960 HasMFDerivWithinAt I ๐(๐, E) I s x (ContinuousLinearMap.id _ _) :=
6061 I.hasMFDerivAt.hasMFDerivWithinAt
6162
62- protected theorem mdifferentiableWithinAt {s x} : MDifferentiableWithinAt I ๐(๐, E) I s x :=
63+ protected theorem mdifferentiableWithinAt {s x} : MDiffAt[s] I x :=
6364 I.hasMFDerivWithinAt.mdifferentiableWithinAt
6465
65- protected theorem mdifferentiableAt {x} : MDifferentiableAt I ๐(๐, E) I x :=
66+ protected theorem mdifferentiableAt {x} : MDiffAt I x :=
6667 I.hasMFDerivAt.mdifferentiableAt
6768
68- protected theorem mdifferentiableOn {s} : MDifferentiableOn I ๐(๐, E) I s := fun _ _ =>
69+ protected theorem mdifferentiableOn {s} : MDiff[s] I := fun _ _ =>
6970 I.mdifferentiableWithinAt
7071
71- protected theorem mdifferentiable : MDifferentiable I ๐(๐, E) I := fun _ => I.mdifferentiableAt
72+ protected theorem mdifferentiable : MDiff I := fun _ => I.mdifferentiableAt
7273
7374theorem hasMFDerivWithinAt_symm {x} (hx : x โ range I) :
7475 HasMFDerivWithinAt ๐(๐, E) I I.symm (range I) x (ContinuousLinearMap.id _ _) :=
7576 โจI.continuousWithinAt_symm,
7677 (hasFDerivWithinAt_id _ _).congr' (fun _y hy => I.rightInvOn hy.1 ) โจhx, mem_range_self _โฉโฉ
7778
78- theorem mdifferentiableOn_symm : MDifferentiableOn ๐(๐, E) I I.symm (range I) := fun _x hx =>
79+ theorem mdifferentiableOn_symm : MDiff[range I] I.symm := fun _x hx =>
7980 (I.hasMFDerivWithinAt_symm hx).mdifferentiableWithinAt
8081
8182theorem mdifferentiableWithinAt_symm {z : E} (hz : z โ range I) :
82- MDifferentiableWithinAt ๐(๐, E) I I.symm (range I) z :=
83+ MDiffAt[range I] I.symm z :=
8384 I.mdifferentiableOn_symm z hz
8485
8586end ModelWithCorners
@@ -91,8 +92,7 @@ section Charts
9192variable [IsManifold I 1 M] [IsManifold I' 1 M']
9293 [IsManifold I'' 1 M''] {e : OpenPartialHomeomorph M H}
9394
94- theorem mdifferentiableAt_atlas (h : e โ atlas H M) {x : M} (hx : x โ e.source) :
95- MDifferentiableAt I I e x := by
95+ theorem mdifferentiableAt_atlas (h : e โ atlas H M) {x : M} (hx : x โ e.source) : MDiffAt e x := by
9696 rw [mdifferentiableAt_iff]
9797 refine โจ(e.continuousOn x hx).continuousAt (e.open_source.mem_nhds hx), ?_โฉ
9898 have mem :
@@ -110,11 +110,11 @@ theorem mdifferentiableAt_atlas (h : e โ atlas H M) {x : M} (hx : x โ e.sour
110110 ยท simpa only [mfld_simps]
111111 ยท apply IsOpen.mem_nhds ((OpenPartialHomeomorph.open_source _).preimage I.continuous_symm) mem.1
112112
113- theorem mdifferentiableOn_atlas (h : e โ atlas H M) : MDifferentiableOn I I e e .source :=
113+ theorem mdifferentiableOn_atlas (h : e โ atlas H M) : MDiff[e .source] e :=
114114 fun _x hx => (mdifferentiableAt_atlas h hx).mdifferentiableWithinAt
115115
116116theorem mdifferentiableAt_atlas_symm (h : e โ atlas H M) {x : H} (hx : x โ e.target) :
117- MDifferentiableAt I I e.symm x := by
117+ MDiffAt e.symm x := by
118118 rw [mdifferentiableAt_iff]
119119 refine โจ(e.continuousOn_symm x hx).continuousAt (e.open_target.mem_nhds hx), ?_โฉ
120120 have mem : I x โ I.symm โปยน' (e.symm โซโ chartAt H (e.symm x)).source โฉ range I := by
@@ -131,7 +131,7 @@ theorem mdifferentiableAt_atlas_symm (h : e โ atlas H M) {x : H} (hx : x โ e
131131 ยท simpa only [mfld_simps]
132132 ยท apply IsOpen.mem_nhds ((OpenPartialHomeomorph.open_source _).preimage I.continuous_symm) mem.1
133133
134- theorem mdifferentiableOn_atlas_symm (h : e โ atlas H M) : MDifferentiableOn I I e.symm e.target :=
134+ theorem mdifferentiableOn_atlas_symm (h : e โ atlas H M) : MDiff[e.target] e.symm :=
135135 fun _x hx => (mdifferentiableAt_atlas_symm h hx).mdifferentiableWithinAt
136136
137137theorem mdifferentiable_of_mem_atlas (h : e โ atlas H M) : e.MDifferentiable I I :=
@@ -151,37 +151,37 @@ include he
151151
152152nonrec theorem symm : e.symm.MDifferentiable I' I := he.symm
153153
154- protected theorem mdifferentiableAt {x : M} (hx : x โ e.source) : MDifferentiableAt I I' e x :=
154+ protected theorem mdifferentiableAt {x : M} (hx : x โ e.source) : MDiffAt e x :=
155155 (he.1 x hx).mdifferentiableAt (e.open_source.mem_nhds hx)
156156
157- theorem mdifferentiableAt_symm {x : M'} (hx : x โ e.target) : MDifferentiableAt I' I e.symm x :=
157+ theorem mdifferentiableAt_symm {x : M'} (hx : x โ e.target) : MDiffAt e.symm x :=
158158 (he.2 x hx).mdifferentiableAt (e.open_target.mem_nhds hx)
159159
160160theorem symm_comp_deriv {x : M} (hx : x โ e.source) :
161- (mfderiv I' I e.symm (e x)).comp (mfderiv I I' e x) =
161+ (mfderiv% e.symm (e x)).comp (mfderiv% e x) =
162162 ContinuousLinearMap.id ๐ (TangentSpace I x) := by
163- have : mfderiv I I (e.symm โ e) x = (mfderiv I' I e.symm (e x)).comp (mfderiv I I' e x) :=
163+ have : mfderiv% (e.symm โ e) x = (mfderiv% e.symm (e x)).comp (mfderiv% e x) :=
164164 mfderiv_comp x (he.mdifferentiableAt_symm (e.map_source hx)) (he.mdifferentiableAt hx)
165165 rw [โ this]
166- have : mfderiv I I (_root_.id : M โ M) x = ContinuousLinearMap.id _ _ := mfderiv_id
166+ have : mfderiv% (_root_.id : M โ M) x = ContinuousLinearMap.id _ _ := mfderiv_id
167167 rw [โ this]
168168 apply Filter.EventuallyEq.mfderiv_eq
169169 have : e.source โ ๐ x := e.open_source.mem_nhds hx
170170 exact Filter.mem_of_superset this (by mfld_set_tac)
171171
172172theorem comp_symm_deriv {x : M'} (hx : x โ e.target) :
173- (mfderiv I I' e (e.symm x)).comp (mfderiv I' I e.symm x) =
173+ (mfderiv% e (e.symm x)).comp (mfderiv% e.symm x) =
174174 ContinuousLinearMap.id ๐ (TangentSpace I' x) :=
175175 he.symm.symm_comp_deriv hx
176176
177177/-- The derivative of a differentiable open partial homeomorphism, as a continuous linear
178178equivalence between the tangent spaces at `x` and `e x`. -/
179179protected def mfderiv (he : e.MDifferentiable I I') {x : M} (hx : x โ e.source) :
180180 TangentSpace I x โL[๐] TangentSpace I' (e x) :=
181- { mfderiv I I' e x with
182- invFun := mfderiv I' I e.symm (e x)
183- continuous_toFun := (mfderiv I I' e x).cont
184- continuous_invFun := (mfderiv I' I e.symm (e x)).cont
181+ { mfderiv% e x with
182+ invFun := mfderiv% e.symm (e x)
183+ continuous_toFun := (mfderiv% e x).cont
184+ continuous_invFun := (mfderiv% e.symm (e x)).cont
185185 left_inv := fun y => by
186186 have : (ContinuousLinearMap.id _ _ : TangentSpace I x โL[๐] TangentSpace I x) y = y := rfl
187187 conv_rhs => rw [โ this, โ he.symm_comp_deriv hx]
@@ -194,22 +194,22 @@ protected def mfderiv (he : e.MDifferentiable I I') {x : M} (hx : x โ e.source
194194 rw [e.left_inv hx]
195195 rfl }
196196
197- theorem mfderiv_bijective {x : M} (hx : x โ e.source) : Function.Bijective (mfderiv I I' e x) :=
197+ theorem mfderiv_bijective {x : M} (hx : x โ e.source) : Function.Bijective (mfderiv% e x) :=
198198 (he.mfderiv hx).bijective
199199
200- theorem mfderiv_injective {x : M} (hx : x โ e.source) : Function.Injective (mfderiv I I' e x) :=
200+ theorem mfderiv_injective {x : M} (hx : x โ e.source) : Function.Injective (mfderiv% e x) :=
201201 (he.mfderiv hx).injective
202202
203- theorem mfderiv_surjective {x : M} (hx : x โ e.source) : Function.Surjective (mfderiv I I' e x) :=
203+ theorem mfderiv_surjective {x : M} (hx : x โ e.source) : Function.Surjective (mfderiv% e x) :=
204204 (he.mfderiv hx).surjective
205205
206- theorem ker_mfderiv_eq_bot {x : M} (hx : x โ e.source) : (mfderiv I I' e x).ker = โฅ :=
206+ theorem ker_mfderiv_eq_bot {x : M} (hx : x โ e.source) : (mfderiv% e x).ker = โฅ :=
207207 (he.mfderiv hx).toLinearEquiv.ker
208208
209- theorem range_mfderiv_eq_top {x : M} (hx : x โ e.source) : (mfderiv I I' e x).range = โค :=
209+ theorem range_mfderiv_eq_top {x : M} (hx : x โ e.source) : (mfderiv% e x).range = โค :=
210210 (he.mfderiv hx).toLinearEquiv.range
211211
212- theorem range_mfderiv_eq_univ {x : M} (hx : x โ e.source) : range (mfderiv I I' e x) = univ :=
212+ theorem range_mfderiv_eq_univ {x : M} (hx : x โ e.source) : range (mfderiv% e x) = univ :=
213213 (he.mfderiv_surjective hx).range_eq
214214
215215theorem trans (he' : e'.MDifferentiable I' I'') : (e.trans e').MDifferentiable I I'' := by
@@ -233,23 +233,22 @@ section extChartAt
233233variable [IsManifold I 1 M] {s : Set M} {x y : M} {z : E}
234234
235235theorem hasMFDerivAt_extChartAt (h : y โ (chartAt H x).source) :
236- HasMFDerivAt I ๐(๐, E) ( extChartAt I x) y (mfderiv I I (chartAt H x) y :) :=
236+ HasMFDerivAt% ( extChartAt I x) y (mfderiv% (chartAt H x) y :) :=
237237 I.hasMFDerivAt.comp y ((mdifferentiable_chart x).mdifferentiableAt h).hasMFDerivAt
238238
239239theorem hasMFDerivWithinAt_extChartAt (h : y โ (chartAt H x).source) :
240- HasMFDerivWithinAt I ๐(๐, E) ( extChartAt I x) s y (mfderiv I I (chartAt H x) y :) :=
240+ HasMFDerivAt[s] ( extChartAt I x) y (mfderiv% (chartAt H x) y :) :=
241241 (hasMFDerivAt_extChartAt h).hasMFDerivWithinAt
242242
243243theorem mdifferentiableAt_extChartAt (h : y โ (chartAt H x).source) :
244- MDifferentiableAt I ๐(๐, E) (extChartAt I x) y :=
244+ MDiffAt (extChartAt I x) y :=
245245 (hasMFDerivAt_extChartAt h).mdifferentiableAt
246246
247- theorem mdifferentiableOn_extChartAt :
248- MDifferentiableOn I ๐(๐, E) (extChartAt I x) (chartAt H x).source := fun _y hy =>
249- (hasMFDerivWithinAt_extChartAt hy).mdifferentiableWithinAt
247+ theorem mdifferentiableOn_extChartAt : MDiff[(chartAt H x).source] (extChartAt I x) :=
248+ fun _y hy โฆ (hasMFDerivWithinAt_extChartAt hy).mdifferentiableWithinAt
250249
251250theorem mdifferentiableWithinAt_extChartAt_symm (h : z โ (extChartAt I x).target) :
252- MDifferentiableWithinAt ๐(๐, E) I (extChartAt I x).symm (range I) z := by
251+ MDiffAt[range I] (extChartAt I x).symm z := by
253252 have Z := I.mdifferentiableWithinAt_symm (extChartAt_target_subset_range x h)
254253 apply MDifferentiableAt.comp_mdifferentiableWithinAt (I' := I) _ _ Z
255254 apply mdifferentiableAt_atlas_symm (ChartedSpace.chart_mem_atlas x)
@@ -259,7 +258,7 @@ theorem mdifferentiableWithinAt_extChartAt_symm (h : z โ (extChartAt I x).targ
259258 exact h.2
260259
261260theorem mdifferentiableOn_extChartAt_symm :
262- MDifferentiableOn ๐(๐, E) I ( extChartAt I x).symm (extChartAt I x).target := by
261+ MDiff[( extChartAt I x).target] (extChartAt I x).symm := by
263262 intro y hy
264263 exact (mdifferentiableWithinAt_extChartAt_symm hy).mono (extChartAt_target_subset_range x)
265264
@@ -268,8 +267,8 @@ theorem mdifferentiableOn_extChartAt_symm :
268267Version where the basepoint belongs to `(extChartAt I x).target`. -/
269268lemma mfderiv_extChartAt_comp_mfderivWithin_extChartAt_symm {x : M}
270269 {y : E} (hy : y โ (extChartAt I x).target) :
271- (mfderiv I ๐(๐, E) (extChartAt I x) ((extChartAt I x).symm y)) โL
272- (mfderivWithin ๐(๐, E) I (extChartAt I x).symm (range I) y) = ContinuousLinearMap.id _ _ := by
270+ (mfderiv% (extChartAt I x) ((extChartAt I x).symm y)) โL
271+ (mfderiv[range I] (extChartAt I x).symm y) = ContinuousLinearMap.id _ _ := by
273272 have U : UniqueMDiffWithinAt ๐(๐, E) (range โI) y := by
274273 apply I.uniqueMDiffOn
275274 exact extChartAt_target_subset_range x hy
@@ -291,8 +290,7 @@ lemma mfderiv_extChartAt_comp_mfderivWithin_extChartAt_symm {x : M}
291290Version where the basepoint belongs to `(extChartAt I x).source`. -/
292291lemma mfderiv_extChartAt_comp_mfderivWithin_extChartAt_symm' {x : M}
293292 {y : M} (hy : y โ (extChartAt I x).source) :
294- (mfderiv I ๐(๐, E) (extChartAt I x) y) โL
295- (mfderivWithin ๐(๐, E) I (extChartAt I x).symm (range I) (extChartAt I x y))
293+ (mfderiv% (extChartAt I x) y) โL (mfderiv[range I] (extChartAt I x).symm (extChartAt I x y))
296294 = ContinuousLinearMap.id _ _ := by
297295 have : y = (extChartAt I x).symm (extChartAt I x y) := ((extChartAt I x).left_inv hy).symm
298296 convert mfderiv_extChartAt_comp_mfderivWithin_extChartAt_symm ((extChartAt I x).map_source hy)
@@ -302,17 +300,16 @@ lemma mfderiv_extChartAt_comp_mfderivWithin_extChartAt_symm' {x : M}
302300Version where the basepoint belongs to `(extChartAt I x).target`. -/
303301lemma mfderivWithin_extChartAt_symm_comp_mfderiv_extChartAt
304302 {y : E} (hy : y โ (extChartAt I x).target) :
305- (mfderivWithin ๐(๐, E) I (extChartAt I x).symm (range I) y) โL
306- (mfderiv I ๐(๐, E) (extChartAt I x) ((extChartAt I x).symm y))
303+ (mfderiv[range I] (extChartAt I x).symm y) โL
304+ (mfderiv% (extChartAt I x) ((extChartAt I x).symm y))
307305 = ContinuousLinearMap.id _ _ := by
308306 have h'y : (extChartAt I x).symm y โ (extChartAt I x).source := (extChartAt I x).map_target hy
309307 have h''y : (extChartAt I x).symm y โ (chartAt H x).source := by
310308 rwa [โ extChartAt_source (I := I)]
311309 have U' : UniqueMDiffWithinAt I (extChartAt I x).source ((extChartAt I x).symm y) :=
312310 (isOpen_extChartAt_source x).uniqueMDiffWithinAt h'y
313- have : mfderiv I ๐(๐, E) (extChartAt I x) ((extChartAt I x).symm y)
314- = mfderivWithin I ๐(๐, E) (extChartAt I x) (extChartAt I x).source
315- ((extChartAt I x).symm y) := by
311+ have : mfderiv% (extChartAt I x) ((extChartAt I x).symm y)
312+ = mfderiv[(extChartAt I x).source] (extChartAt I x) ((extChartAt I x).symm y) := by
316313 rw [mfderivWithin_eq_mfderiv U']
317314 exact mdifferentiableAt_extChartAt h''y
318315 rw [this, โ mfderivWithin_comp_of_eq]; rotate_left
@@ -335,20 +332,19 @@ set_option backward.isDefEq.respectTransparency false in
335332Version where the basepoint belongs to `(extChartAt I x).source`. -/
336333lemma mfderivWithin_extChartAt_symm_comp_mfderiv_extChartAt'
337334 {y : M} (hy : y โ (extChartAt I x).source) :
338- (mfderivWithin ๐(๐, E) I (extChartAt I x).symm (range I) (extChartAt I x y)) โL
339- (mfderiv I ๐(๐, E) (extChartAt I x) y)
335+ (mfderiv[range I] (extChartAt I x).symm (extChartAt I x y)) โL (mfderiv% (extChartAt I x) y)
340336 = ContinuousLinearMap.id _ _ := by
341337 have : y = (extChartAt I x).symm (extChartAt I x y) := ((extChartAt I x).left_inv hy).symm
342338 convert mfderivWithin_extChartAt_symm_comp_mfderiv_extChartAt ((extChartAt I x).map_source hy)
343339
344340lemma isInvertible_mfderivWithin_extChartAt_symm {y : E} (hy : y โ (extChartAt I x).target) :
345- (mfderivWithin ๐(๐, E) I (extChartAt I x).symm (range I) y).IsInvertible :=
341+ (mfderiv[range I] (extChartAt I x).symm y).IsInvertible :=
346342 ContinuousLinearMap.IsInvertible.of_inverse
347343 (mfderivWithin_extChartAt_symm_comp_mfderiv_extChartAt hy)
348344 (mfderiv_extChartAt_comp_mfderivWithin_extChartAt_symm hy)
349345
350346lemma isInvertible_mfderiv_extChartAt {y : M} (hy : y โ (extChartAt I x).source) :
351- (mfderiv I ๐(๐, E) (extChartAt I x) y).IsInvertible := by
347+ (mfderiv% (extChartAt I x) y).IsInvertible := by
352348 have h'y : extChartAt I x y โ (extChartAt I x).target := (extChartAt I x).map_source hy
353349 have Z := ContinuousLinearMap.IsInvertible.of_inverse
354350 (mfderiv_extChartAt_comp_mfderivWithin_extChartAt_symm h'y)
@@ -363,8 +359,8 @@ Use with care as this abuses the defeq `TangentSpace ๐(๐, E) y = E` for `y
363359theorem TangentBundle.continuousLinearMapAt_trivializationAt
364360 {xโ x : M} (hx : x โ (chartAt H xโ).source) :
365361 (trivializationAt E (TangentSpace I) xโ).continuousLinearMapAt ๐ x =
366- mfderiv I ๐(๐, E) (extChartAt I xโ) x := by
367- have : MDifferentiableAt I ๐(๐, E) (extChartAt I xโ) x := mdifferentiableAt_extChartAt hx
362+ mfderiv% (extChartAt I xโ) x := by
363+ have : MDiffAt (extChartAt I xโ) x := mdifferentiableAt_extChartAt hx
368364 simp only [extChartAt, OpenPartialHomeomorph.extend, PartialEquiv.coe_trans,
369365 ModelWithCorners.toPartialEquiv_coe, OpenPartialHomeomorph.toFun_eq_coe] at this
370366 simp [hx, mfderiv, this]
@@ -376,9 +372,8 @@ Use with care as this abuses the defeq `TangentSpace ๐(๐, E) y = E` for `y
376372theorem TangentBundle.symmL_trivializationAt
377373 {xโ x : M} (hx : x โ (chartAt H xโ).source) :
378374 (trivializationAt E (TangentSpace I) xโ).symmL ๐ x =
379- mfderivWithin ๐(๐, E) I (extChartAt I xโ).symm (range I) (extChartAt I xโ x) := by
380- have : MDifferentiableWithinAt ๐(๐, E) I ((chartAt H xโ).symm โ I.symm) (range I)
381- (I (chartAt H xโ x)) := by
375+ mfderiv[range I] (extChartAt I xโ).symm (extChartAt I xโ x) := by
376+ have : MDiffAt[range I] ((chartAt H xโ).symm โ I.symm) (I (chartAt H xโ x)) := by
382377 simpa using mdifferentiableWithinAt_extChartAt_symm (by simp [hx])
383378 simp [hx, mfderivWithin, this]
384379
0 commit comments