@@ -41,7 +41,7 @@ variable {𝕜 : Type*} [NontriviallyNormedField 𝕜] {m n : WithTop ℕ∞}
41
41
{F : Type *}
42
42
[NormedAddCommGroup F] [NormedSpace 𝕜 F] {G : Type *} [TopologicalSpace G]
43
43
{J : ModelWithCorners 𝕜 F G} {N : Type *} [TopologicalSpace N] [ChartedSpace G N]
44
- [Js : IsManifold J n N]
44
+ [Js : IsManifold J 1 N]
45
45
-- declare a charted space `N'` over the pair `(F', G')`.
46
46
{F' : Type *}
47
47
[NormedAddCommGroup F'] [NormedSpace 𝕜 F'] {G' : Type *} [TopologicalSpace G']
@@ -55,7 +55,7 @@ variable {𝕜 : Type*} [NontriviallyNormedField 𝕜] {m n : WithTop ℕ∞}
55
55
/-! ### The derivative of a `C^(n+1)` function is `C^n` -/
56
56
57
57
section mfderiv
58
- variable [Is : IsManifold I n M] [I's : IsManifold I' n M']
58
+ variable [Is : IsManifold I 1 M] [I's : IsManifold I' 1 M']
59
59
60
60
/-- The function that sends `x` to the `y`-derivative of `f (x, y)` at `g (x)` is `C^m` at `x₀`,
61
61
where the derivative is taken as a continuous linear map.
@@ -68,15 +68,9 @@ protected theorem ContMDiffWithinAt.mfderivWithin {x₀ : N} {f : N → M → M'
68
68
(hf : ContMDiffWithinAt (J.prod I) I' n (Function.uncurry f) (t ×ˢ u) (x₀, g x₀))
69
69
(hg : ContMDiffWithinAt J I m g t x₀) (hx₀ : x₀ ∈ t)
70
70
(hu : MapsTo g t u) (hmn : m + 1 ≤ n) (h'u : UniqueMDiffOn I u) :
71
- haveI : IsManifold I 1 M := .of_le (le_trans le_add_self hmn)
72
- haveI : IsManifold I' 1 M' := .of_le (le_trans le_add_self hmn)
73
71
ContMDiffWithinAt J 𝓘(𝕜, E →L[𝕜] E') m
74
72
(inTangentCoordinates I I' g (fun x => f x (g x))
75
73
(fun x => mfderivWithin I I' (f x) u (g x)) x₀) t x₀ := by
76
- have : IsManifold I 1 M := .of_le (le_trans le_add_self hmn)
77
- have : IsManifold I' 1 M' := .of_le (le_trans le_add_self hmn)
78
- have : IsManifold J 1 N := .of_le (le_trans le_add_self hmn)
79
- have : IsManifold J m N := .of_le (le_trans le_self_add hmn)
80
74
-- first localize the result to a smaller set, to make sure everything happens in chart domains
81
75
let t' := t ∩ g ⁻¹' ((extChartAt I (g x₀)).source)
82
76
have ht't : t' ⊆ t := inter_subset_left
@@ -146,8 +140,8 @@ protected theorem ContMDiffWithinAt.mfderivWithin {x₀ : N} {f : N → M → M'
146
140
fderivWithin 𝕜 (extChartAt I' (f x₀ (g x₀)) ∘ f x ∘ (extChartAt I (g x₀)).symm)
147
141
((extChartAt I (g x₀)).target ∩ (extChartAt I (g x₀)).symm ⁻¹' u)
148
142
(extChartAt I (g x₀) (g x))) t' x₀ := by
149
- simp_rw [contMDiffWithinAt_iff_source_of_mem_source (mem_chart_source G x₀),
150
- contMDiffWithinAt_iff_contDiffWithinAt, Function.comp_def] at this ⊢
143
+ simp_rw [contMDiffWithinAt_iff_source (x := x₀),
144
+ contMDiffWithinAt_iff_contDiffWithinAt, Function.comp_def]
151
145
exact this
152
146
-- finally, argue that the map we control in the previous point coincides locally with the map we
153
147
-- want to prove the regularity of, so regularity of the latter follows from regularity of the
@@ -203,8 +197,6 @@ parameters and `g = id`.
203
197
theorem ContMDiffWithinAt.mfderivWithin_const {x₀ : M} {f : M → M'}
204
198
(hf : ContMDiffWithinAt I I' n f s x₀)
205
199
(hmn : m + 1 ≤ n) (hx : x₀ ∈ s) (hs : UniqueMDiffOn I s) :
206
- haveI : IsManifold I 1 M := .of_le (le_trans le_add_self hmn)
207
- haveI : IsManifold I' 1 M' := .of_le (le_trans le_add_self hmn)
208
200
ContMDiffWithinAt I 𝓘(𝕜, E →L[𝕜] E') m
209
201
(inTangentCoordinates I I' id f (mfderivWithin I I' f s) x₀) s x₀ := by
210
202
have : ContMDiffWithinAt (I.prod I) I' n (fun x : M × M => f x.2 ) (s ×ˢ s) (x₀, x₀) :=
@@ -225,8 +217,6 @@ theorem ContMDiffWithinAt.mfderivWithin_apply {x₀ : N'}
225
217
(hg : ContMDiffWithinAt J I m g t (g₁ x₀)) (hg₁ : ContMDiffWithinAt J' J m g₁ v x₀)
226
218
(hg₂ : ContMDiffWithinAt J' 𝓘(𝕜, E) m g₂ v x₀) (hmn : m + 1 ≤ n) (h'g₁ : MapsTo g₁ v t)
227
219
(hg₁x₀ : g₁ x₀ ∈ t) (h'g : MapsTo g t u) (hu : UniqueMDiffOn I u) :
228
- haveI : IsManifold I 1 M := .of_le (le_trans le_add_self hmn)
229
- haveI : IsManifold I' 1 M' := .of_le (le_trans le_add_self hmn)
230
220
ContMDiffWithinAt J' 𝓘(𝕜, E') m
231
221
(fun x => (inTangentCoordinates I I' g (fun x => f x (g x))
232
222
(fun x => mfderivWithin I I' (f x) u (g x)) (g₁ x₀) (g₁ x)) (g₂ x)) v x₀ :=
@@ -242,8 +232,6 @@ This result is used to show that maps into the 1-jet bundle and cotangent bundle
242
232
protected theorem ContMDiffAt.mfderiv {x₀ : N} (f : N → M → M') (g : N → M)
243
233
(hf : ContMDiffAt (J.prod I) I' n (Function.uncurry f) (x₀, g x₀)) (hg : ContMDiffAt J I m g x₀)
244
234
(hmn : m + 1 ≤ n) :
245
- haveI : IsManifold I 1 M := .of_le (le_trans le_add_self hmn)
246
- haveI : IsManifold I' 1 M' := .of_le (le_trans le_add_self hmn)
247
235
ContMDiffAt J 𝓘(𝕜, E →L[𝕜] E') m
248
236
(inTangentCoordinates I I' g (fun x ↦ f x (g x)) (fun x ↦ mfderiv I I' (f x) (g x)) x₀)
249
237
x₀ := by
@@ -261,8 +249,6 @@ This is a special case of `ContMDiffAt.mfderiv` where `f` does not contain any p
261
249
-/
262
250
theorem ContMDiffAt.mfderiv_const {x₀ : M} {f : M → M'} (hf : ContMDiffAt I I' n f x₀)
263
251
(hmn : m + 1 ≤ n) :
264
- haveI : IsManifold I 1 M := .of_le (le_trans le_add_self hmn)
265
- haveI : IsManifold I' 1 M' := .of_le (le_trans le_add_self hmn)
266
252
ContMDiffAt I 𝓘(𝕜, E →L[𝕜] E') m (inTangentCoordinates I I' id f (mfderiv I I' f) x₀) x₀ :=
267
253
haveI : ContMDiffAt (I.prod I) I' n (fun x : M × M => f x.2 ) (x₀, x₀) :=
268
254
ContMDiffAt.comp (x₀, x₀) hf contMDiffAt_snd
@@ -280,8 +266,6 @@ theorem ContMDiffAt.mfderiv_apply {x₀ : N'} (f : N → M → M') (g : N → M)
280
266
(hf : ContMDiffAt (J.prod I) I' n (Function.uncurry f) (g₁ x₀, g (g₁ x₀)))
281
267
(hg : ContMDiffAt J I m g (g₁ x₀)) (hg₁ : ContMDiffAt J' J m g₁ x₀)
282
268
(hg₂ : ContMDiffAt J' 𝓘(𝕜, E) m g₂ x₀) (hmn : m + 1 ≤ n) :
283
- haveI : IsManifold I 1 M := .of_le (le_trans le_add_self hmn)
284
- haveI : IsManifold I' 1 M' := .of_le (le_trans le_add_self hmn)
285
269
ContMDiffAt J' 𝓘(𝕜, E') m
286
270
(fun x => inTangentCoordinates I I' g (fun x => f x (g x))
287
271
(fun x => mfderiv I I' (f x) (g x)) (g₁ x₀) (g₁ x) (g₂ x)) x₀ :=
@@ -293,19 +277,15 @@ end mfderiv
293
277
294
278
section tangentMap
295
279
296
- variable [Is : IsManifold I n M] [I's : IsManifold I' n M']
280
+ variable [Is : IsManifold I 1 M] [I's : IsManifold I' 1 M']
297
281
298
282
/-- If a function is `C^n` on a domain with unique derivatives, then its bundled derivative
299
283
is `C^m` when `m+1 ≤ n`. -/
300
284
theorem ContMDiffOn.contMDiffOn_tangentMapWithin
301
285
(hf : ContMDiffOn I I' n f s) (hmn : m + 1 ≤ n)
302
286
(hs : UniqueMDiffOn I s) :
303
- haveI : IsManifold I 1 M := .of_le (le_trans le_add_self hmn)
304
- haveI : IsManifold I' 1 M' := .of_le (le_trans le_add_self hmn)
305
287
ContMDiffOn I.tangent I'.tangent m (tangentMapWithin I I' f s)
306
288
(π E (TangentSpace I) ⁻¹' s) := by
307
- have : IsManifold I 1 M := .of_le (le_trans le_add_self hmn)
308
- have : IsManifold I' 1 M' := .of_le (le_trans le_add_self hmn)
309
289
intro x₀ hx₀
310
290
let s' : Set (TangentBundle I M) := (π E (TangentSpace I) ⁻¹' s)
311
291
let b₁ : TangentBundle I M → M := fun p ↦ p.1
@@ -340,34 +320,22 @@ alias ContMDiffOn.continuousOn_tangentMapWithin_aux := ContMDiffOn.contMDiffOn_t
340
320
derivative is continuous there. -/
341
321
theorem ContMDiffOn.continuousOn_tangentMapWithin (hf : ContMDiffOn I I' n f s) (hmn : 1 ≤ n)
342
322
(hs : UniqueMDiffOn I s) :
343
- haveI : IsManifold I 1 M := .of_le hmn
344
- haveI : IsManifold I' 1 M' := .of_le hmn
345
323
ContinuousOn (tangentMapWithin I I' f s) (π E (TangentSpace I) ⁻¹' s) := by
346
- have : IsManifold I 1 M := .of_le hmn
347
- have : IsManifold I' 1 M' := .of_le hmn
348
324
have :
349
325
ContMDiffOn I.tangent I'.tangent 0 (tangentMapWithin I I' f s) (π E (TangentSpace I) ⁻¹' s) :=
350
326
hf.contMDiffOn_tangentMapWithin hmn hs
351
327
exact this.continuousOn
352
328
353
329
/-- If a function is `C^n`, then its bundled derivative is `C^m` when `m+1 ≤ n`. -/
354
330
theorem ContMDiff.contMDiff_tangentMap (hf : ContMDiff I I' n f) (hmn : m + 1 ≤ n) :
355
- haveI : IsManifold I 1 M := .of_le (le_trans le_add_self hmn)
356
- haveI : IsManifold I' 1 M' := .of_le (le_trans le_add_self hmn)
357
331
ContMDiff I.tangent I'.tangent m (tangentMap I I' f) := by
358
- haveI : IsManifold I 1 M := .of_le (le_trans le_add_self hmn)
359
- haveI : IsManifold I' 1 M' := .of_le (le_trans le_add_self hmn)
360
332
rw [← contMDiffOn_univ] at hf ⊢
361
333
convert hf.contMDiffOn_tangentMapWithin hmn uniqueMDiffOn_univ
362
334
rw [tangentMapWithin_univ]
363
335
364
336
/-- If a function is `C^n`, with `1 ≤ n`, then its bundled derivative is continuous. -/
365
337
theorem ContMDiff.continuous_tangentMap (hf : ContMDiff I I' n f) (hmn : 1 ≤ n) :
366
- haveI : IsManifold I 1 M := .of_le hmn
367
- haveI : IsManifold I' 1 M' := .of_le hmn
368
338
Continuous (tangentMap I I' f) := by
369
- haveI : IsManifold I 1 M := .of_le hmn
370
- haveI : IsManifold I' 1 M' := .of_le hmn
371
339
rw [← contMDiffOn_univ] at hf
372
340
rw [continuous_iff_continuousOn_univ]
373
341
convert hf.continuousOn_tangentMapWithin hmn uniqueMDiffOn_univ
0 commit comments