Documentation

Mathlib.Geometry.Manifold.ContMDiffMFDeriv

Interactions between differentiability, smoothness and manifold derivatives #

We give the relation between MDifferentiable, ContMDiff, mfderiv, tangentMap and related notions.

Main statements #

Definition of smooth functions between manifolds #

The derivative of a smooth function is smooth #

theorem ContMDiffWithinAt.mfderivWithin {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {H : Type u_3} [TopologicalSpace H] {I : ModelWithCorners 𝕜 E H} {M : Type u_4} [TopologicalSpace M] [ChartedSpace H M] {E' : Type u_5} [NormedAddCommGroup E'] [NormedSpace 𝕜 E'] {H' : Type u_6} [TopologicalSpace H'] {I' : ModelWithCorners 𝕜 E' H'} {M' : Type u_7} [TopologicalSpace M'] [ChartedSpace H' M'] {F : Type u_8} [NormedAddCommGroup F] [NormedSpace 𝕜 F] {G : Type u_9} [TopologicalSpace G] {J : ModelWithCorners 𝕜 F G} {N : Type u_10} [TopologicalSpace N] [ChartedSpace G N] [Js : SmoothManifoldWithCorners J N] {m n : ℕ∞} [Is : SmoothManifoldWithCorners I M] [I's : SmoothManifoldWithCorners I' M'] {x₀ : N} {f : NMM'} {g : NM} {t : Set N} {u : Set M} (hf : ContMDiffWithinAt (J.prod I) I' n (Function.uncurry f) (t ×ˢ u) (x₀, g x₀)) (hg : ContMDiffWithinAt J I m g t x₀) (hx₀ : x₀ t) (hu : Set.MapsTo g t u) (hmn : m + 1 n) (h'u : UniqueMDiffOn I u) :
ContMDiffWithinAt J (modelWithCornersSelf 𝕜 (E →L[𝕜] E')) m (inTangentCoordinates I I' g (fun (x : N) => f x (g x)) (fun (x : N) => mfderivWithin I I' (f x) u (g x)) x₀) t x₀

The function that sends x to the y-derivative of f (x, y) at g (x) is C^m at x₀, where the derivative is taken as a continuous linear map. We have to assume that f is C^n at (x₀, g(x₀)) for n ≥ m + 1 and g is C^m at x₀. We have to insert a coordinate change from x₀ to x to make the derivative sensible. Version within a set.

theorem ContMDiffWithinAt.mfderivWithin_const {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {H : Type u_3} [TopologicalSpace H] {I : ModelWithCorners 𝕜 E H} {M : Type u_4} [TopologicalSpace M] [ChartedSpace H M] {E' : Type u_5} [NormedAddCommGroup E'] [NormedSpace 𝕜 E'] {H' : Type u_6} [TopologicalSpace H'] {I' : ModelWithCorners 𝕜 E' H'} {M' : Type u_7} [TopologicalSpace M'] [ChartedSpace H' M'] {s : Set M} {m n : ℕ∞} [Is : SmoothManifoldWithCorners I M] [I's : SmoothManifoldWithCorners I' M'] {x₀ : M} {f : MM'} (hf : ContMDiffWithinAt I I' n f s x₀) (hmn : m + 1 n) (hx : x₀ s) (hs : UniqueMDiffOn I s) :
ContMDiffWithinAt I (modelWithCornersSelf 𝕜 (E →L[𝕜] E')) m (inTangentCoordinates I I' id f (mfderivWithin I I' f s) x₀) s x₀

The derivative D_yf(y) is C^m at x₀, where the derivative is taken as a continuous linear map. We have to assume that f is C^n at x₀ for some n ≥ m + 1. We have to insert a coordinate change from x₀ to x to make the derivative sensible. This is a special case of ContMDiffWithinAt.mfderivWithin where f does not contain any parameters and g = id.

theorem ContMDiffWithinAt.mfderivWithin_apply {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {H : Type u_3} [TopologicalSpace H] {I : ModelWithCorners 𝕜 E H} {M : Type u_4} [TopologicalSpace M] [ChartedSpace H M] {E' : Type u_5} [NormedAddCommGroup E'] [NormedSpace 𝕜 E'] {H' : Type u_6} [TopologicalSpace H'] {I' : ModelWithCorners 𝕜 E' H'} {M' : Type u_7} [TopologicalSpace M'] [ChartedSpace H' M'] {F : Type u_8} [NormedAddCommGroup F] [NormedSpace 𝕜 F] {G : Type u_9} [TopologicalSpace G] {J : ModelWithCorners 𝕜 F G} {N : Type u_10} [TopologicalSpace N] [ChartedSpace G N] [Js : SmoothManifoldWithCorners J N] {F' : Type u_11} [NormedAddCommGroup F'] [NormedSpace 𝕜 F'] {G' : Type u_12} [TopologicalSpace G'] {J' : ModelWithCorners 𝕜 F' G'} {N' : Type u_13} [TopologicalSpace N'] [ChartedSpace G' N'] {m n : ℕ∞} [Is : SmoothManifoldWithCorners I M] [I's : SmoothManifoldWithCorners I' M'] {x₀ : N'} {f : NMM'} {g : NM} {g₁ : N'N} {g₂ : N'E} {t : Set N} {u : Set M} {v : Set N'} (hf : ContMDiffWithinAt (J.prod I) I' n (Function.uncurry f) (t ×ˢ u) (g₁ x₀, g (g₁ x₀))) (hg : ContMDiffWithinAt J I m g t (g₁ x₀)) (hg₁ : ContMDiffWithinAt J' J m g₁ v x₀) (hg₂ : ContMDiffWithinAt J' (modelWithCornersSelf 𝕜 E) m g₂ v x₀) (hmn : m + 1 n) (h'g₁ : Set.MapsTo g₁ v t) (hg₁x₀ : g₁ x₀ t) (h'g : Set.MapsTo g t u) (hu : UniqueMDiffOn I u) :
ContMDiffWithinAt J' (modelWithCornersSelf 𝕜 E') m (fun (x : N') => (inTangentCoordinates I I' g (fun (x : N) => f x (g x)) (fun (x : N) => mfderivWithin I I' (f x) u (g x)) (g₁ x₀) (g₁ x)) (g₂ x)) v x₀

The function that sends x to the y-derivative of f(x,y) at g(x) applied to g₂(x) is C^n at x₀, where the derivative is taken as a continuous linear map. We have to assume that f is C^(n+1) at (x₀, g(x₀)) and g is C^n at x₀. We have to insert a coordinate change from x₀ to g₁(x) to make the derivative sensible.

This is similar to ContMDiffWithinAt.mfderivWithin, but where the continuous linear map is applied to a (variable) vector.

theorem ContMDiffAt.mfderiv {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {H : Type u_3} [TopologicalSpace H] {I : ModelWithCorners 𝕜 E H} {M : Type u_4} [TopologicalSpace M] [ChartedSpace H M] {E' : Type u_5} [NormedAddCommGroup E'] [NormedSpace 𝕜 E'] {H' : Type u_6} [TopologicalSpace H'] {I' : ModelWithCorners 𝕜 E' H'} {M' : Type u_7} [TopologicalSpace M'] [ChartedSpace H' M'] {F : Type u_8} [NormedAddCommGroup F] [NormedSpace 𝕜 F] {G : Type u_9} [TopologicalSpace G] {J : ModelWithCorners 𝕜 F G} {N : Type u_10} [TopologicalSpace N] [ChartedSpace G N] [Js : SmoothManifoldWithCorners J N] {m n : ℕ∞} [Is : SmoothManifoldWithCorners I M] [I's : SmoothManifoldWithCorners I' M'] {x₀ : N} (f : NMM') (g : NM) (hf : ContMDiffAt (J.prod I) I' n (Function.uncurry f) (x₀, g x₀)) (hg : ContMDiffAt J I m g x₀) (hmn : m + 1 n) :
ContMDiffAt J (modelWithCornersSelf 𝕜 (E →L[𝕜] E')) m (inTangentCoordinates I I' g (fun (x : N) => f x (g x)) (fun (x : N) => mfderiv I I' (f x) (g x)) x₀) x₀

The function that sends x to the y-derivative of f (x, y) at g (x) is C^m at x₀, where the derivative is taken as a continuous linear map. We have to assume that f is C^n at (x₀, g(x₀)) for n ≥ m + 1 and g is C^m at x₀. We have to insert a coordinate change from x₀ to x to make the derivative sensible. This result is used to show that maps into the 1-jet bundle and cotangent bundle are smooth. ContMDiffAt.mfderiv_const is a special case of this.

theorem ContMDiffAt.mfderiv_const {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {H : Type u_3} [TopologicalSpace H] {I : ModelWithCorners 𝕜 E H} {M : Type u_4} [TopologicalSpace M] [ChartedSpace H M] {E' : Type u_5} [NormedAddCommGroup E'] [NormedSpace 𝕜 E'] {H' : Type u_6} [TopologicalSpace H'] {I' : ModelWithCorners 𝕜 E' H'} {M' : Type u_7} [TopologicalSpace M'] [ChartedSpace H' M'] {m n : ℕ∞} [Is : SmoothManifoldWithCorners I M] [I's : SmoothManifoldWithCorners I' M'] {x₀ : M} {f : MM'} (hf : ContMDiffAt I I' n f x₀) (hmn : m + 1 n) :
ContMDiffAt I (modelWithCornersSelf 𝕜 (E →L[𝕜] E')) m (inTangentCoordinates I I' id f (mfderiv I I' f) x₀) x₀

The derivative D_yf(y) is C^m at x₀, where the derivative is taken as a continuous linear map. We have to assume that f is C^n at x₀ for some n ≥ m + 1. We have to insert a coordinate change from x₀ to x to make the derivative sensible. This is a special case of ContMDiffAt.mfderiv where f does not contain any parameters and g = id.

theorem ContMDiffAt.mfderiv_apply {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {H : Type u_3} [TopologicalSpace H] {I : ModelWithCorners 𝕜 E H} {M : Type u_4} [TopologicalSpace M] [ChartedSpace H M] {E' : Type u_5} [NormedAddCommGroup E'] [NormedSpace 𝕜 E'] {H' : Type u_6} [TopologicalSpace H'] {I' : ModelWithCorners 𝕜 E' H'} {M' : Type u_7} [TopologicalSpace M'] [ChartedSpace H' M'] {F : Type u_8} [NormedAddCommGroup F] [NormedSpace 𝕜 F] {G : Type u_9} [TopologicalSpace G] {J : ModelWithCorners 𝕜 F G} {N : Type u_10} [TopologicalSpace N] [ChartedSpace G N] [Js : SmoothManifoldWithCorners J N] {F' : Type u_11} [NormedAddCommGroup F'] [NormedSpace 𝕜 F'] {G' : Type u_12} [TopologicalSpace G'] {J' : ModelWithCorners 𝕜 F' G'} {N' : Type u_13} [TopologicalSpace N'] [ChartedSpace G' N'] {m n : ℕ∞} [Is : SmoothManifoldWithCorners I M] [I's : SmoothManifoldWithCorners I' M'] {x₀ : N'} (f : NMM') (g : NM) (g₁ : N'N) (g₂ : N'E) (hf : ContMDiffAt (J.prod I) I' n (Function.uncurry f) (g₁ x₀, g (g₁ x₀))) (hg : ContMDiffAt J I m g (g₁ x₀)) (hg₁ : ContMDiffAt J' J m g₁ x₀) (hg₂ : ContMDiffAt J' (modelWithCornersSelf 𝕜 E) m g₂ x₀) (hmn : m + 1 n) :
ContMDiffAt J' (modelWithCornersSelf 𝕜 E') m (fun (x : N') => (inTangentCoordinates I I' g (fun (x : N) => f x (g x)) (fun (x : N) => mfderiv I I' (f x) (g x)) (g₁ x₀) (g₁ x)) (g₂ x)) x₀

The function that sends x to the y-derivative of f(x,y) at g(x) applied to g₂(x) is C^n at x₀, where the derivative is taken as a continuous linear map. We have to assume that f is C^(n+1) at (x₀, g(x₀)) and g is C^n at x₀. We have to insert a coordinate change from x₀ to g₁(x) to make the derivative sensible.

This is similar to ContMDiffAt.mfderiv, but where the continuous linear map is applied to a (variable) vector.

The tangent map of a smooth function is smooth #

theorem ContMDiffOn.contMDiffOn_tangentMapWithin {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {H : Type u_3} [TopologicalSpace H] {I : ModelWithCorners 𝕜 E H} {M : Type u_4} [TopologicalSpace M] [ChartedSpace H M] {E' : Type u_5} [NormedAddCommGroup E'] [NormedSpace 𝕜 E'] {H' : Type u_6} [TopologicalSpace H'] {I' : ModelWithCorners 𝕜 E' H'} {M' : Type u_7} [TopologicalSpace M'] [ChartedSpace H' M'] {f : MM'} {s : Set M} {m n : ℕ∞} [Is : SmoothManifoldWithCorners I M] [I's : SmoothManifoldWithCorners I' M'] (hf : ContMDiffOn I I' n f s) (hmn : m + 1 n) (hs : UniqueMDiffOn I s) :
ContMDiffOn I.tangent I'.tangent m (tangentMapWithin I I' f s) (Bundle.TotalSpace.proj ⁻¹' s)

If a function is C^n on a domain with unique derivatives, then its bundled derivative is C^m when m+1 ≤ n.

@[deprecated ContMDiffOn.contMDiffOn_tangentMapWithin]
theorem ContMDiffOn.contMDiffOn_tangentMapWithin_aux {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {H : Type u_3} [TopologicalSpace H] {I : ModelWithCorners 𝕜 E H} {M : Type u_4} [TopologicalSpace M] [ChartedSpace H M] {E' : Type u_5} [NormedAddCommGroup E'] [NormedSpace 𝕜 E'] {H' : Type u_6} [TopologicalSpace H'] {I' : ModelWithCorners 𝕜 E' H'} {M' : Type u_7} [TopologicalSpace M'] [ChartedSpace H' M'] {f : MM'} {s : Set M} {m n : ℕ∞} [Is : SmoothManifoldWithCorners I M] [I's : SmoothManifoldWithCorners I' M'] (hf : ContMDiffOn I I' n f s) (hmn : m + 1 n) (hs : UniqueMDiffOn I s) :
ContMDiffOn I.tangent I'.tangent m (tangentMapWithin I I' f s) (Bundle.TotalSpace.proj ⁻¹' s)

Alias of ContMDiffOn.contMDiffOn_tangentMapWithin.


If a function is C^n on a domain with unique derivatives, then its bundled derivative is C^m when m+1 ≤ n.

@[deprecated ContMDiffOn.contMDiffOn_tangentMapWithin]
theorem ContMDiffOn.continuousOn_tangentMapWithin_aux {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {H : Type u_3} [TopologicalSpace H] {I : ModelWithCorners 𝕜 E H} {M : Type u_4} [TopologicalSpace M] [ChartedSpace H M] {E' : Type u_5} [NormedAddCommGroup E'] [NormedSpace 𝕜 E'] {H' : Type u_6} [TopologicalSpace H'] {I' : ModelWithCorners 𝕜 E' H'} {M' : Type u_7} [TopologicalSpace M'] [ChartedSpace H' M'] {f : MM'} {s : Set M} {m n : ℕ∞} [Is : SmoothManifoldWithCorners I M] [I's : SmoothManifoldWithCorners I' M'] (hf : ContMDiffOn I I' n f s) (hmn : m + 1 n) (hs : UniqueMDiffOn I s) :
ContMDiffOn I.tangent I'.tangent m (tangentMapWithin I I' f s) (Bundle.TotalSpace.proj ⁻¹' s)

Alias of ContMDiffOn.contMDiffOn_tangentMapWithin.


If a function is C^n on a domain with unique derivatives, then its bundled derivative is C^m when m+1 ≤ n.

theorem ContMDiffOn.continuousOn_tangentMapWithin {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {H : Type u_3} [TopologicalSpace H] {I : ModelWithCorners 𝕜 E H} {M : Type u_4} [TopologicalSpace M] [ChartedSpace H M] {E' : Type u_5} [NormedAddCommGroup E'] [NormedSpace 𝕜 E'] {H' : Type u_6} [TopologicalSpace H'] {I' : ModelWithCorners 𝕜 E' H'} {M' : Type u_7} [TopologicalSpace M'] [ChartedSpace H' M'] {f : MM'} {s : Set M} {n : ℕ∞} [Is : SmoothManifoldWithCorners I M] [I's : SmoothManifoldWithCorners I' M'] (hf : ContMDiffOn I I' n f s) (hmn : 1 n) (hs : UniqueMDiffOn I s) :
ContinuousOn (tangentMapWithin I I' f s) (Bundle.TotalSpace.proj ⁻¹' s)

If a function is C^n on a domain with unique derivatives, with 1 ≤ n, then its bundled derivative is continuous there.

theorem ContMDiff.contMDiff_tangentMap {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {H : Type u_3} [TopologicalSpace H] {I : ModelWithCorners 𝕜 E H} {M : Type u_4} [TopologicalSpace M] [ChartedSpace H M] {E' : Type u_5} [NormedAddCommGroup E'] [NormedSpace 𝕜 E'] {H' : Type u_6} [TopologicalSpace H'] {I' : ModelWithCorners 𝕜 E' H'} {M' : Type u_7} [TopologicalSpace M'] [ChartedSpace H' M'] {f : MM'} {m n : ℕ∞} [Is : SmoothManifoldWithCorners I M] [I's : SmoothManifoldWithCorners I' M'] (hf : ContMDiff I I' n f) (hmn : m + 1 n) :
ContMDiff I.tangent I'.tangent m (tangentMap I I' f)

If a function is C^n, then its bundled derivative is C^m when m+1 ≤ n.

theorem ContMDiff.continuous_tangentMap {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {H : Type u_3} [TopologicalSpace H] {I : ModelWithCorners 𝕜 E H} {M : Type u_4} [TopologicalSpace M] [ChartedSpace H M] {E' : Type u_5} [NormedAddCommGroup E'] [NormedSpace 𝕜 E'] {H' : Type u_6} [TopologicalSpace H'] {I' : ModelWithCorners 𝕜 E' H'} {M' : Type u_7} [TopologicalSpace M'] [ChartedSpace H' M'] {f : MM'} {n : ℕ∞} [Is : SmoothManifoldWithCorners I M] [I's : SmoothManifoldWithCorners I' M'] (hf : ContMDiff I I' n f) (hmn : 1 n) :

If a function is C^n, with 1 ≤ n, then its bundled derivative is continuous.

theorem Smooth.tangentMap {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {H : Type u_3} [TopologicalSpace H] {I : ModelWithCorners 𝕜 E H} {M : Type u_4} [TopologicalSpace M] [ChartedSpace H M] {E' : Type u_5} [NormedAddCommGroup E'] [NormedSpace 𝕜 E'] {H' : Type u_6} [TopologicalSpace H'] {I' : ModelWithCorners 𝕜 E' H'} {M' : Type u_7} [TopologicalSpace M'] [ChartedSpace H' M'] {f : MM'} [Is : SmoothManifoldWithCorners I M] [I's : SmoothManifoldWithCorners I' M'] (hf : Smooth I I' f) :
Smooth I.tangent I'.tangent (tangentMap I I' f)

If a function is smooth, then its bundled derivative is smooth.

theorem TangentBundle.tangentMap_tangentBundle_pure {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {H : Type u_3} [TopologicalSpace H] {I : ModelWithCorners 𝕜 E H} {M : Type u_4} [TopologicalSpace M] [ChartedSpace H M] [Is : SmoothManifoldWithCorners I M] (p : TangentBundle I M) :
tangentMap I I.tangent (Bundle.zeroSection E (TangentSpace I)) p = { proj := { proj := p.proj, snd := 0 }, snd := (p.snd, 0) }

The derivative of the zero section of the tangent bundle maps ⟨x, v⟩ to ⟨⟨x, 0⟩, ⟨v, 0⟩⟩.

Note that, as currently framed, this is a statement in coordinates, thus reliant on the choice of the coordinate system we use on the tangent bundle.

However, the result itself is coordinate-dependent only to the extent that the coordinates determine a splitting of the tangent bundle. Moreover, there is a canonical splitting at each point of the zero section (since there is a canonical horizontal space there, the tangent space to the zero section, in addition to the canonical vertical space which is the kernel of the derivative of the projection), and this canonical splitting is also the one that comes from the coordinates on the tangent bundle in our definitions. So this statement is not as crazy as it may seem.

TODO define splittings of vector bundles; state this result invariantly.

theorem ContMDiffMap.mdifferentiable' {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {H : Type u_3} [TopologicalSpace H] {I : ModelWithCorners 𝕜 E H} {M : Type u_4} [TopologicalSpace M] [ChartedSpace H M] {E' : Type u_5} [NormedAddCommGroup E'] [NormedSpace 𝕜 E'] {H' : Type u_6} [TopologicalSpace H'] {I' : ModelWithCorners 𝕜 E' H'} {M' : Type u_7} [TopologicalSpace M'] [ChartedSpace H' M'] {n : ℕ∞} (f : ContMDiffMap I I' M M' n) (hn : 1 n) :
MDifferentiable I I' f
theorem ContMDiffMap.mdifferentiable {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {H : Type u_3} [TopologicalSpace H] {I : ModelWithCorners 𝕜 E H} {M : Type u_4} [TopologicalSpace M] [ChartedSpace H M] {E' : Type u_5} [NormedAddCommGroup E'] [NormedSpace 𝕜 E'] {H' : Type u_6} [TopologicalSpace H'] {I' : ModelWithCorners 𝕜 E' H'} {M' : Type u_7} [TopologicalSpace M'] [ChartedSpace H' M'] (f : ContMDiffMap I I' M M' ) :
MDifferentiable I I' f
theorem ContMDiffMap.mdifferentiableAt {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {H : Type u_3} [TopologicalSpace H] {I : ModelWithCorners 𝕜 E H} {M : Type u_4} [TopologicalSpace M] [ChartedSpace H M] {E' : Type u_5} [NormedAddCommGroup E'] [NormedSpace 𝕜 E'] {H' : Type u_6} [TopologicalSpace H'] {I' : ModelWithCorners 𝕜 E' H'} {M' : Type u_7} [TopologicalSpace M'] [ChartedSpace H' M'] (f : ContMDiffMap I I' M M' ) {x : M} :
MDifferentiableAt I I' (⇑f) x