Documentation

Mathlib.Analysis.Calculus.ContDiff.Basic

Basic properties of continuously-differentiable functions #

This file continues the development of the API for ContDiff, ContDiffAt, etc, covering constants, products, composition with linear maps, etc.

Tags #

derivative, differentiability, higher derivative, C^n, multilinear, Taylor series, formal series

Constants #

theorem iteratedFDerivWithin_succ_const {π•œ : Type u_1} {E : Type u_2} {F : Type u_3} [NontriviallyNormedField π•œ] [NormedAddCommGroup E] [NormedSpace π•œ E] [NormedAddCommGroup F] [NormedSpace π•œ F] {s : Set E} (n : β„•) (c : F) :
iteratedFDerivWithin π•œ (n + 1) (fun (x : E) => c) s = 0
@[simp]
theorem iteratedFDerivWithin_zero {π•œ : Type u_1} {E : Type u_2} {F : Type u_3} [NontriviallyNormedField π•œ] [NormedAddCommGroup E] [NormedSpace π•œ E] [NormedAddCommGroup F] [NormedSpace π•œ F] {s : Set E} {i : β„•} :
iteratedFDerivWithin π•œ i 0 s = 0
@[simp]
theorem iteratedFDerivWithin_fun_zero {π•œ : Type u_1} {E : Type u_2} {F : Type u_3} [NontriviallyNormedField π•œ] [NormedAddCommGroup E] [NormedSpace π•œ E] [NormedAddCommGroup F] [NormedSpace π•œ F] {s : Set E} {i : β„•} :
iteratedFDerivWithin π•œ i (fun (x : E) => 0) s = 0
@[deprecated iteratedFDerivWithin_fun_zero (since := "2026-03-18")]
theorem iteratedFDerivWithin_zero_fun {π•œ : Type u_1} {E : Type u_2} {F : Type u_3} [NontriviallyNormedField π•œ] [NormedAddCommGroup E] [NormedSpace π•œ E] [NormedAddCommGroup F] [NormedSpace π•œ F] {s : Set E} {i : β„•} :
iteratedFDerivWithin π•œ i (fun (x : E) => 0) s = 0

Alias of iteratedFDerivWithin_fun_zero.

@[simp]
theorem ftaylorSeriesWithin_zero {π•œ : Type u_1} {E : Type u_2} {F : Type u_3} [NontriviallyNormedField π•œ] [NormedAddCommGroup E] [NormedSpace π•œ E] [NormedAddCommGroup F] [NormedSpace π•œ F] :
ftaylorSeriesWithin π•œ 0 = 0
@[simp]
theorem ftaylorSeriesWithin_fun_zero {π•œ : Type u_1} {E : Type u_2} {F : Type u_3} [NontriviallyNormedField π•œ] [NormedAddCommGroup E] [NormedSpace π•œ E] [NormedAddCommGroup F] [NormedSpace π•œ F] :
(ftaylorSeriesWithin π•œ fun (x : E) => 0) = 0
@[simp]
theorem iteratedFDeriv_zero {π•œ : Type u_1} {E : Type u_2} {F : Type u_3} [NontriviallyNormedField π•œ] [NormedAddCommGroup E] [NormedSpace π•œ E] [NormedAddCommGroup F] [NormedSpace π•œ F] {n : β„•} :
iteratedFDeriv π•œ n 0 = 0
@[simp]
theorem iteratedFDeriv_fun_zero {π•œ : Type u_1} {E : Type u_2} {F : Type u_3} [NontriviallyNormedField π•œ] [NormedAddCommGroup E] [NormedSpace π•œ E] [NormedAddCommGroup F] [NormedSpace π•œ F] {n : β„•} :
(iteratedFDeriv π•œ n fun (x : E) => 0) = 0
@[deprecated iteratedFDeriv_fun_zero (since := "2026-03-18")]
theorem iteratedFDeriv_zero_fun {π•œ : Type u_1} {E : Type u_2} {F : Type u_3} [NontriviallyNormedField π•œ] [NormedAddCommGroup E] [NormedSpace π•œ E] [NormedAddCommGroup F] [NormedSpace π•œ F] {n : β„•} :
(iteratedFDeriv π•œ n fun (x : E) => 0) = 0

Alias of iteratedFDeriv_fun_zero.

@[simp]
theorem ftaylorSeries_zero {π•œ : Type u_1} {E : Type u_2} {F : Type u_3} [NontriviallyNormedField π•œ] [NormedAddCommGroup E] [NormedSpace π•œ E] [NormedAddCommGroup F] [NormedSpace π•œ F] :
ftaylorSeries π•œ 0 = 0
@[simp]
theorem ftaylorSeries_fun_zero {π•œ : Type u_1} {E : Type u_2} {F : Type u_3} [NontriviallyNormedField π•œ] [NormedAddCommGroup E] [NormedSpace π•œ E] [NormedAddCommGroup F] [NormedSpace π•œ F] :
(ftaylorSeries π•œ fun (x : E) => 0) = 0
theorem contDiff_zero_fun {π•œ : Type u_1} {E : Type u_2} {F : Type u_3} [NontriviallyNormedField π•œ] [NormedAddCommGroup E] [NormedSpace π•œ E] [NormedAddCommGroup F] [NormedSpace π•œ F] {n : WithTop β„•βˆž} :
ContDiff π•œ n fun (x : E) => 0
theorem contDiff_const {π•œ : Type u_1} {E : Type u_2} {F : Type u_3} [NontriviallyNormedField π•œ] [NormedAddCommGroup E] [NormedSpace π•œ E] [NormedAddCommGroup F] [NormedSpace π•œ F] {n : WithTop β„•βˆž} {c : F} :
ContDiff π•œ n fun (x : E) => c

Constants are C^∞.

theorem contDiffOn_const {π•œ : Type u_1} {E : Type u_2} {F : Type u_3} [NontriviallyNormedField π•œ] [NormedAddCommGroup E] [NormedSpace π•œ E] [NormedAddCommGroup F] [NormedSpace π•œ F] {n : WithTop β„•βˆž} {c : F} {s : Set E} :
ContDiffOn π•œ n (fun (x : E) => c) s
theorem contDiffAt_const {π•œ : Type u_1} {E : Type u_2} {F : Type u_3} [NontriviallyNormedField π•œ] [NormedAddCommGroup E] [NormedSpace π•œ E] [NormedAddCommGroup F] [NormedSpace π•œ F] {x : E} {n : WithTop β„•βˆž} {c : F} :
ContDiffAt π•œ n (fun (x : E) => c) x
theorem contDiffWithinAt_const {π•œ : Type u_1} {E : Type u_2} {F : Type u_3} [NontriviallyNormedField π•œ] [NormedAddCommGroup E] [NormedSpace π•œ E] [NormedAddCommGroup F] [NormedSpace π•œ F] {s : Set E} {x : E} {n : WithTop β„•βˆž} {c : F} :
ContDiffWithinAt π•œ n (fun (x : E) => c) s x
theorem contDiff_of_subsingleton {π•œ : Type u_1} {E : Type u_2} {F : Type u_3} [NontriviallyNormedField π•œ] [NormedAddCommGroup E] [NormedSpace π•œ E] [NormedAddCommGroup F] [NormedSpace π•œ F] {f : E β†’ F} {n : WithTop β„•βˆž} [Subsingleton F] :
ContDiff π•œ n f
theorem contDiffAt_of_subsingleton {π•œ : Type u_1} {E : Type u_2} {F : Type u_3} [NontriviallyNormedField π•œ] [NormedAddCommGroup E] [NormedSpace π•œ E] [NormedAddCommGroup F] [NormedSpace π•œ F] {f : E β†’ F} {x : E} {n : WithTop β„•βˆž} [Subsingleton F] :
ContDiffAt π•œ n f x
theorem contDiffWithinAt_of_subsingleton {π•œ : Type u_1} {E : Type u_2} {F : Type u_3} [NontriviallyNormedField π•œ] [NormedAddCommGroup E] [NormedSpace π•œ E] [NormedAddCommGroup F] [NormedSpace π•œ F] {s : Set E} {f : E β†’ F} {x : E} {n : WithTop β„•βˆž} [Subsingleton F] :
ContDiffWithinAt π•œ n f s x
theorem contDiffOn_of_subsingleton {π•œ : Type u_1} {E : Type u_2} {F : Type u_3} [NontriviallyNormedField π•œ] [NormedAddCommGroup E] [NormedSpace π•œ E] [NormedAddCommGroup F] [NormedSpace π•œ F] {s : Set E} {f : E β†’ F} {n : WithTop β„•βˆž} [Subsingleton F] :
ContDiffOn π•œ n f s
theorem iteratedFDerivWithin_const_of_ne {π•œ : Type u_1} {E : Type u_2} {F : Type u_3} [NontriviallyNormedField π•œ] [NormedAddCommGroup E] [NormedSpace π•œ E] [NormedAddCommGroup F] [NormedSpace π•œ F] {n : β„•} (hn : n β‰  0) (c : F) (s : Set E) :
iteratedFDerivWithin π•œ n (fun (x : E) => c) s = 0
theorem iteratedFDeriv_const_of_ne {π•œ : Type u_1} {E : Type u_2} {F : Type u_3} [NontriviallyNormedField π•œ] [NormedAddCommGroup E] [NormedSpace π•œ E] [NormedAddCommGroup F] [NormedSpace π•œ F] {n : β„•} (hn : n β‰  0) (c : F) :
(iteratedFDeriv π•œ n fun (x : E) => c) = 0
theorem iteratedFDeriv_succ_const {π•œ : Type u_1} {E : Type u_2} {F : Type u_3} [NontriviallyNormedField π•œ] [NormedAddCommGroup E] [NormedSpace π•œ E] [NormedAddCommGroup F] [NormedSpace π•œ F] (n : β„•) (c : F) :
(iteratedFDeriv π•œ (n + 1) fun (x : E) => c) = 0
theorem contDiffWithinAt_singleton {π•œ : Type u_1} {E : Type u_2} {F : Type u_3} [NontriviallyNormedField π•œ] [NormedAddCommGroup E] [NormedSpace π•œ E] [NormedAddCommGroup F] [NormedSpace π•œ F] {f : E β†’ F} {x : E} {n : WithTop β„•βˆž} :
ContDiffWithinAt π•œ n f {x} x

Smoothness of linear functions #

theorem IsBoundedLinearMap.contDiff {π•œ : Type u_1} {E : Type u_2} {F : Type u_3} [NontriviallyNormedField π•œ] [NormedAddCommGroup E] [NormedSpace π•œ E] [NormedAddCommGroup F] [NormedSpace π•œ F] {f : E β†’ F} {n : WithTop β„•βˆž} (hf : IsBoundedLinearMap π•œ f) :
ContDiff π•œ n f

Unbundled bounded linear functions are C^n.

theorem ContinuousLinearMap.contDiff {π•œ : Type u_1} {E : Type u_2} {F : Type u_3} [NontriviallyNormedField π•œ] [NormedAddCommGroup E] [NormedSpace π•œ E] [NormedAddCommGroup F] [NormedSpace π•œ F] {n : WithTop β„•βˆž} (f : E β†’L[π•œ] F) :
ContDiff π•œ n ⇑f
theorem ContinuousLinearEquiv.contDiff {π•œ : Type u_1} {E : Type u_2} {F : Type u_3} [NontriviallyNormedField π•œ] [NormedAddCommGroup E] [NormedSpace π•œ E] [NormedAddCommGroup F] [NormedSpace π•œ F] {n : WithTop β„•βˆž} (f : E ≃L[π•œ] F) :
ContDiff π•œ n ⇑f
theorem LinearIsometry.contDiff {π•œ : Type u_1} {E : Type u_2} {F : Type u_3} [NontriviallyNormedField π•œ] [NormedAddCommGroup E] [NormedSpace π•œ E] [NormedAddCommGroup F] [NormedSpace π•œ F] {n : WithTop β„•βˆž} (f : E β†’β‚—α΅’[π•œ] F) :
ContDiff π•œ n ⇑f
theorem LinearIsometryEquiv.contDiff {π•œ : Type u_1} {E : Type u_2} {F : Type u_3} [NontriviallyNormedField π•œ] [NormedAddCommGroup E] [NormedSpace π•œ E] [NormedAddCommGroup F] [NormedSpace π•œ F] {n : WithTop β„•βˆž} (f : E ≃ₗᡒ[π•œ] F) :
ContDiff π•œ n ⇑f
theorem contDiff_id {π•œ : Type u_1} {E : Type u_2} [NontriviallyNormedField π•œ] [NormedAddCommGroup E] [NormedSpace π•œ E] {n : WithTop β„•βˆž} :
ContDiff π•œ n id

The identity is C^n.

theorem contDiff_fun_id {π•œ : Type u_1} {E : Type u_2} [NontriviallyNormedField π•œ] [NormedAddCommGroup E] [NormedSpace π•œ E] {n : WithTop β„•βˆž} :
ContDiff π•œ n fun (x : E) => x
theorem contDiffWithinAt_id {π•œ : Type u_1} {E : Type u_2} [NontriviallyNormedField π•œ] [NormedAddCommGroup E] [NormedSpace π•œ E] {n : WithTop β„•βˆž} {s : Set E} {x : E} :
ContDiffWithinAt π•œ n id s x
theorem contDiffWithinAt_fun_id {π•œ : Type u_1} {E : Type u_2} [NontriviallyNormedField π•œ] [NormedAddCommGroup E] [NormedSpace π•œ E] {n : WithTop β„•βˆž} {s : Set E} {x : E} :
ContDiffWithinAt π•œ n (fun (x : E) => x) s x
theorem contDiffAt_id {π•œ : Type u_1} {E : Type u_2} [NontriviallyNormedField π•œ] [NormedAddCommGroup E] [NormedSpace π•œ E] {n : WithTop β„•βˆž} {x : E} :
ContDiffAt π•œ n id x
theorem contDiffAt_fun_id {π•œ : Type u_1} {E : Type u_2} [NontriviallyNormedField π•œ] [NormedAddCommGroup E] [NormedSpace π•œ E] {n : WithTop β„•βˆž} {x : E} :
ContDiffAt π•œ n (fun (x : E) => x) x
theorem contDiffOn_id {π•œ : Type u_1} {E : Type u_2} [NontriviallyNormedField π•œ] [NormedAddCommGroup E] [NormedSpace π•œ E] {n : WithTop β„•βˆž} {s : Set E} :
ContDiffOn π•œ n id s
theorem contDiffOn_fun_id {π•œ : Type u_1} {E : Type u_2} [NontriviallyNormedField π•œ] [NormedAddCommGroup E] [NormedSpace π•œ E] {n : WithTop β„•βˆž} {s : Set E} :
ContDiffOn π•œ n (fun (x : E) => x) s
theorem IsBoundedBilinearMap.contDiff {π•œ : Type u_1} {E : Type u_2} {F : Type u_3} {G : Type u_4} [NontriviallyNormedField π•œ] [NormedAddCommGroup E] [NormedSpace π•œ E] [NormedAddCommGroup F] [NormedSpace π•œ F] [NormedAddCommGroup G] [NormedSpace π•œ G] {b : E Γ— F β†’ G} {n : WithTop β„•βˆž} (hb : IsBoundedBilinearMap π•œ b) :
ContDiff π•œ n b

Bilinear functions are C^n.

theorem HasFTaylorSeriesUpToOn.continuousLinearMap_comp {π•œ : Type u_1} {E : Type u_2} {F : Type u_3} {G : Type u_4} [NontriviallyNormedField π•œ] [NormedAddCommGroup E] [NormedSpace π•œ E] [NormedAddCommGroup F] [NormedSpace π•œ F] [NormedAddCommGroup G] [NormedSpace π•œ G] {s : Set E} {f : E β†’ F} {p : E β†’ FormalMultilinearSeries π•œ E F} {n : WithTop β„•βˆž} (g : F β†’L[π•œ] G) (hf : HasFTaylorSeriesUpToOn n f p s) :
HasFTaylorSeriesUpToOn n (⇑g ∘ f) (fun (x : E) (k : β„•) => g.compContinuousMultilinearMap (p x k)) s

If f admits a Taylor series p in a set s, and g is linear, then g ∘ f admits a Taylor series whose k-th term is given by g ∘ (p k).

theorem ContDiffWithinAt.continuousLinearMap_comp {π•œ : Type u_1} {E : Type u_2} {F : Type u_3} {G : Type u_4} [NontriviallyNormedField π•œ] [NormedAddCommGroup E] [NormedSpace π•œ E] [NormedAddCommGroup F] [NormedSpace π•œ F] [NormedAddCommGroup G] [NormedSpace π•œ G] {s : Set E} {f : E β†’ F} {x : E} {n : WithTop β„•βˆž} (g : F β†’L[π•œ] G) (hf : ContDiffWithinAt π•œ n f s x) :
ContDiffWithinAt π•œ n (⇑g ∘ f) s x

Composition by continuous linear maps on the left preserves C^n functions in a domain at a point.

theorem ContDiffAt.continuousLinearMap_comp {π•œ : Type u_1} {E : Type u_2} {F : Type u_3} {G : Type u_4} [NontriviallyNormedField π•œ] [NormedAddCommGroup E] [NormedSpace π•œ E] [NormedAddCommGroup F] [NormedSpace π•œ F] [NormedAddCommGroup G] [NormedSpace π•œ G] {f : E β†’ F} {x : E} {n : WithTop β„•βˆž} (g : F β†’L[π•œ] G) (hf : ContDiffAt π•œ n f x) :
ContDiffAt π•œ n (⇑g ∘ f) x

Composition by continuous linear maps on the left preserves C^n functions in a domain at a point.

theorem ContDiffOn.continuousLinearMap_comp {π•œ : Type u_1} {E : Type u_2} {F : Type u_3} {G : Type u_4} [NontriviallyNormedField π•œ] [NormedAddCommGroup E] [NormedSpace π•œ E] [NormedAddCommGroup F] [NormedSpace π•œ F] [NormedAddCommGroup G] [NormedSpace π•œ G] {s : Set E} {f : E β†’ F} {n : WithTop β„•βˆž} (g : F β†’L[π•œ] G) (hf : ContDiffOn π•œ n f s) :
ContDiffOn π•œ n (⇑g ∘ f) s

Composition by continuous linear maps on the left preserves C^n functions on domains.

theorem ContDiff.continuousLinearMap_comp {π•œ : Type u_1} {E : Type u_2} {F : Type u_3} {G : Type u_4} [NontriviallyNormedField π•œ] [NormedAddCommGroup E] [NormedSpace π•œ E] [NormedAddCommGroup F] [NormedSpace π•œ F] [NormedAddCommGroup G] [NormedSpace π•œ G] {n : WithTop β„•βˆž} {f : E β†’ F} (g : F β†’L[π•œ] G) (hf : ContDiff π•œ n f) :
ContDiff π•œ n fun (x : E) => g (f x)

Composition by continuous linear maps on the left preserves C^n functions.

theorem ContinuousLinearMap.iteratedFDerivWithin_comp_left {π•œ : Type u_1} {E : Type u_2} {F : Type u_3} {G : Type u_4} [NontriviallyNormedField π•œ] [NormedAddCommGroup E] [NormedSpace π•œ E] [NormedAddCommGroup F] [NormedSpace π•œ F] [NormedAddCommGroup G] [NormedSpace π•œ G] {s : Set E} {x : E} {n : WithTop β„•βˆž} {f : E β†’ F} (g : F β†’L[π•œ] G) (hf : ContDiffWithinAt π•œ n f s x) (hs : UniqueDiffOn π•œ s) (hx : x ∈ s) {i : β„•} (hi : ↑i ≀ n) :
iteratedFDerivWithin π•œ i (⇑g ∘ f) s x = g.compContinuousMultilinearMap (iteratedFDerivWithin π•œ i f s x)

The iterated derivative within a set of the composition with a linear map on the left is obtained by applying the linear map to the iterated derivative.

theorem ContinuousLinearMap.iteratedFDeriv_comp_left {π•œ : Type u_1} {E : Type u_2} {F : Type u_3} {G : Type u_4} [NontriviallyNormedField π•œ] [NormedAddCommGroup E] [NormedSpace π•œ E] [NormedAddCommGroup F] [NormedSpace π•œ F] [NormedAddCommGroup G] [NormedSpace π•œ G] {x : E} {n : WithTop β„•βˆž} {f : E β†’ F} (g : F β†’L[π•œ] G) (hf : ContDiffAt π•œ n f x) {i : β„•} (hi : ↑i ≀ n) :
iteratedFDeriv π•œ i (⇑g ∘ f) x = g.compContinuousMultilinearMap (iteratedFDeriv π•œ i f x)

The iterated derivative of the composition with a linear map on the left is obtained by applying the linear map to the iterated derivative.

theorem ContinuousLinearEquiv.iteratedFDerivWithin_comp_left {π•œ : Type u_1} {E : Type u_2} {F : Type u_3} {G : Type u_4} [NontriviallyNormedField π•œ] [NormedAddCommGroup E] [NormedSpace π•œ E] [NormedAddCommGroup F] [NormedSpace π•œ F] [NormedAddCommGroup G] [NormedSpace π•œ G] {s : Set E} {x : E} (g : F ≃L[π•œ] G) (f : E β†’ F) (hs : UniqueDiffOn π•œ s) (hx : x ∈ s) (i : β„•) :
iteratedFDerivWithin π•œ i (⇑g ∘ f) s x = (↑g).compContinuousMultilinearMap (iteratedFDerivWithin π•œ i f s x)

The iterated derivative within a set of the composition with a linear equiv on the left is obtained by applying the linear equiv to the iterated derivative. This is true without differentiability assumptions.

theorem ContinuousLinearEquiv.iteratedFDeriv_comp_left {π•œ : Type u_1} {E : Type u_2} {F : Type u_3} {G : Type u_4} [NontriviallyNormedField π•œ] [NormedAddCommGroup E] [NormedSpace π•œ E] [NormedAddCommGroup F] [NormedSpace π•œ F] [NormedAddCommGroup G] [NormedSpace π•œ G] {f : E β†’ F} {x : E} (g : F ≃L[π•œ] G) {i : β„•} :
iteratedFDeriv π•œ i (⇑g ∘ f) x = (↑g).compContinuousMultilinearMap (iteratedFDeriv π•œ i f x)

Iterated derivatives commute with left composition by continuous linear equivalences.

theorem LinearIsometry.norm_iteratedFDerivWithin_comp_left {π•œ : Type u_1} {E : Type u_2} {F : Type u_3} {G : Type u_4} [NontriviallyNormedField π•œ] [NormedAddCommGroup E] [NormedSpace π•œ E] [NormedAddCommGroup F] [NormedSpace π•œ F] [NormedAddCommGroup G] [NormedSpace π•œ G] {s : Set E} {x : E} {n : WithTop β„•βˆž} {f : E β†’ F} (g : F β†’β‚—α΅’[π•œ] G) (hf : ContDiffWithinAt π•œ n f s x) (hs : UniqueDiffOn π•œ s) (hx : x ∈ s) {i : β„•} (hi : ↑i ≀ n) :

Composition with a linear isometry on the left preserves the norm of the iterated derivative within a set.

theorem LinearIsometry.norm_iteratedFDeriv_comp_left {π•œ : Type u_1} {E : Type u_2} {F : Type u_3} {G : Type u_4} [NontriviallyNormedField π•œ] [NormedAddCommGroup E] [NormedSpace π•œ E] [NormedAddCommGroup F] [NormedSpace π•œ F] [NormedAddCommGroup G] [NormedSpace π•œ G] {x : E} {n : WithTop β„•βˆž} {f : E β†’ F} (g : F β†’β‚—α΅’[π•œ] G) (hf : ContDiffAt π•œ n f x) {i : β„•} (hi : ↑i ≀ n) :
β€–iteratedFDeriv π•œ i (⇑g ∘ f) xβ€– = β€–iteratedFDeriv π•œ i f xβ€–

Composition with a linear isometry on the left preserves the norm of the iterated derivative.

theorem LinearIsometryEquiv.norm_iteratedFDerivWithin_comp_left {π•œ : Type u_1} {E : Type u_2} {F : Type u_3} {G : Type u_4} [NontriviallyNormedField π•œ] [NormedAddCommGroup E] [NormedSpace π•œ E] [NormedAddCommGroup F] [NormedSpace π•œ F] [NormedAddCommGroup G] [NormedSpace π•œ G] {s : Set E} {x : E} (g : F ≃ₗᡒ[π•œ] G) (f : E β†’ F) (hs : UniqueDiffOn π•œ s) (hx : x ∈ s) (i : β„•) :

Composition with a linear isometry equiv on the left preserves the norm of the iterated derivative within a set.

theorem LinearIsometryEquiv.norm_iteratedFDeriv_comp_left {π•œ : Type u_1} {E : Type u_2} {F : Type u_3} {G : Type u_4} [NontriviallyNormedField π•œ] [NormedAddCommGroup E] [NormedSpace π•œ E] [NormedAddCommGroup F] [NormedSpace π•œ F] [NormedAddCommGroup G] [NormedSpace π•œ G] (g : F ≃ₗᡒ[π•œ] G) (f : E β†’ F) (x : E) (i : β„•) :
β€–iteratedFDeriv π•œ i (⇑g ∘ f) xβ€– = β€–iteratedFDeriv π•œ i f xβ€–

Composition with a linear isometry equiv on the left preserves the norm of the iterated derivative.

theorem ContinuousLinearEquiv.comp_contDiffWithinAt_iff {π•œ : Type u_1} {E : Type u_2} {F : Type u_3} {G : Type u_4} [NontriviallyNormedField π•œ] [NormedAddCommGroup E] [NormedSpace π•œ E] [NormedAddCommGroup F] [NormedSpace π•œ F] [NormedAddCommGroup G] [NormedSpace π•œ G] {s : Set E} {f : E β†’ F} {x : E} {n : WithTop β„•βˆž} (e : F ≃L[π•œ] G) :
ContDiffWithinAt π•œ n (⇑e ∘ f) s x ↔ ContDiffWithinAt π•œ n f s x

Composition by continuous linear equivs on the left respects higher differentiability at a point in a domain.

theorem ContinuousLinearEquiv.comp_contDiffAt_iff {π•œ : Type u_1} {E : Type u_2} {F : Type u_3} {G : Type u_4} [NontriviallyNormedField π•œ] [NormedAddCommGroup E] [NormedSpace π•œ E] [NormedAddCommGroup F] [NormedSpace π•œ F] [NormedAddCommGroup G] [NormedSpace π•œ G] {f : E β†’ F} {x : E} {n : WithTop β„•βˆž} (e : F ≃L[π•œ] G) :
ContDiffAt π•œ n (⇑e ∘ f) x ↔ ContDiffAt π•œ n f x

Composition by continuous linear equivs on the left respects higher differentiability at a point.

theorem ContinuousLinearEquiv.comp_contDiffOn_iff {π•œ : Type u_1} {E : Type u_2} {F : Type u_3} {G : Type u_4} [NontriviallyNormedField π•œ] [NormedAddCommGroup E] [NormedSpace π•œ E] [NormedAddCommGroup F] [NormedSpace π•œ F] [NormedAddCommGroup G] [NormedSpace π•œ G] {s : Set E} {f : E β†’ F} {n : WithTop β„•βˆž} (e : F ≃L[π•œ] G) :
ContDiffOn π•œ n (⇑e ∘ f) s ↔ ContDiffOn π•œ n f s

Composition by continuous linear equivs on the left respects higher differentiability on domains.

theorem ContinuousLinearEquiv.comp_contDiff_iff {π•œ : Type u_1} {E : Type u_2} {F : Type u_3} {G : Type u_4} [NontriviallyNormedField π•œ] [NormedAddCommGroup E] [NormedSpace π•œ E] [NormedAddCommGroup F] [NormedSpace π•œ F] [NormedAddCommGroup G] [NormedSpace π•œ G] {f : E β†’ F} {n : WithTop β„•βˆž} (e : F ≃L[π•œ] G) :
ContDiff π•œ n (⇑e ∘ f) ↔ ContDiff π•œ n f

Composition by continuous linear equivs on the left respects higher differentiability.

theorem HasFTaylorSeriesUpToOn.comp_continuousAffineMap {π•œ : Type u_1} {E : Type u_2} {F : Type u_3} {G : Type u_4} [NontriviallyNormedField π•œ] [NormedAddCommGroup E] [NormedSpace π•œ E] [NormedAddCommGroup F] [NormedSpace π•œ F] [NormedAddCommGroup G] [NormedSpace π•œ G] {s : Set E} {f : E β†’ F} {n : WithTop β„•βˆž} {p : E β†’ FormalMultilinearSeries π•œ E F} (hf : HasFTaylorSeriesUpToOn n f p s) (g : G →ᴬ[π•œ] E) :
HasFTaylorSeriesUpToOn n (f ∘ ⇑g) (fun (x : G) (k : β„•) => (p (g x) k).compContinuousLinearMap fun (x : Fin k) => g.contLinear) (⇑g ⁻¹' s)

If f admits a Taylor series p in a set s, and g is affine, then f ∘ g admits a Taylor series in g ⁻¹' s, whose k-th term at x is given by p (g x) k (g.contLinear v₁, ..., g.contLinear vβ‚–) .

theorem HasFTaylorSeriesUpToOn.compContinuousLinearMap {π•œ : Type u_1} {E : Type u_2} {F : Type u_3} {G : Type u_4} [NontriviallyNormedField π•œ] [NormedAddCommGroup E] [NormedSpace π•œ E] [NormedAddCommGroup F] [NormedSpace π•œ F] [NormedAddCommGroup G] [NormedSpace π•œ G] {s : Set E} {f : E β†’ F} {n : WithTop β„•βˆž} {p : E β†’ FormalMultilinearSeries π•œ E F} (hf : HasFTaylorSeriesUpToOn n f p s) (g : G β†’L[π•œ] E) :
HasFTaylorSeriesUpToOn n (f ∘ ⇑g) (fun (x : G) (k : β„•) => (p (g x) k).compContinuousLinearMap fun (x : Fin k) => g) (⇑g ⁻¹' s)

If f admits a Taylor series p in a set s, and g is linear, then f ∘ g admits a Taylor series in g ⁻¹' s, whose k-th term at x is given by p (g x) k (g v₁, ..., g vβ‚–) .

theorem ContDiffWithinAt.comp_continuousLinearMap {π•œ : Type u_1} {E : Type u_2} {F : Type u_3} {G : Type u_4} [NontriviallyNormedField π•œ] [NormedAddCommGroup E] [NormedSpace π•œ E] [NormedAddCommGroup F] [NormedSpace π•œ F] [NormedAddCommGroup G] [NormedSpace π•œ G] {s : Set E} {f : E β†’ F} {n : WithTop β„•βˆž} {x : G} (g : G β†’L[π•œ] E) (hf : ContDiffWithinAt π•œ n f s (g x)) :
ContDiffWithinAt π•œ n (f ∘ ⇑g) (⇑g ⁻¹' s) x

Composition by continuous linear maps on the right preserves C^n functions at a point on a domain.

theorem ContDiffOn.comp_continuousLinearMap {π•œ : Type u_1} {E : Type u_2} {F : Type u_3} {G : Type u_4} [NontriviallyNormedField π•œ] [NormedAddCommGroup E] [NormedSpace π•œ E] [NormedAddCommGroup F] [NormedSpace π•œ F] [NormedAddCommGroup G] [NormedSpace π•œ G] {s : Set E} {f : E β†’ F} {n : WithTop β„•βˆž} (hf : ContDiffOn π•œ n f s) (g : G β†’L[π•œ] E) :
ContDiffOn π•œ n (f ∘ ⇑g) (⇑g ⁻¹' s)

Composition by continuous linear maps on the right preserves C^n functions on domains.

theorem ContDiff.comp_continuousLinearMap {π•œ : Type u_1} {E : Type u_2} {F : Type u_3} {G : Type u_4} [NontriviallyNormedField π•œ] [NormedAddCommGroup E] [NormedSpace π•œ E] [NormedAddCommGroup F] [NormedSpace π•œ F] [NormedAddCommGroup G] [NormedSpace π•œ G] {n : WithTop β„•βˆž} {f : E β†’ F} {g : G β†’L[π•œ] E} (hf : ContDiff π•œ n f) :
ContDiff π•œ n (f ∘ ⇑g)

Composition by continuous linear maps on the right preserves C^n functions.

theorem ContinuousLinearMap.iteratedFDerivWithin_comp_right {π•œ : Type u_1} {E : Type u_2} {F : Type u_3} {G : Type u_4} [NontriviallyNormedField π•œ] [NormedAddCommGroup E] [NormedSpace π•œ E] [NormedAddCommGroup F] [NormedSpace π•œ F] [NormedAddCommGroup G] [NormedSpace π•œ G] {s : Set E} {n : WithTop β„•βˆž} {f : E β†’ F} (g : G β†’L[π•œ] E) (hf : ContDiffOn π•œ n f s) (hs : UniqueDiffOn π•œ s) (h's : UniqueDiffOn π•œ (⇑g ⁻¹' s)) {x : G} (hx : g x ∈ s) {i : β„•} (hi : ↑i ≀ n) :
iteratedFDerivWithin π•œ i (f ∘ ⇑g) (⇑g ⁻¹' s) x = (iteratedFDerivWithin π•œ i f s (g x)).compContinuousLinearMap fun (x : Fin i) => g

The iterated derivative within a set of the composition with a linear map on the right is obtained by composing the iterated derivative with the linear map.

theorem ContinuousLinearEquiv.iteratedFDerivWithin_comp_right {π•œ : Type u_1} {E : Type u_2} {F : Type u_3} {G : Type u_4} [NontriviallyNormedField π•œ] [NormedAddCommGroup E] [NormedSpace π•œ E] [NormedAddCommGroup F] [NormedSpace π•œ F] [NormedAddCommGroup G] [NormedSpace π•œ G] {s : Set E} (g : G ≃L[π•œ] E) (f : E β†’ F) (hs : UniqueDiffOn π•œ s) {x : G} (hx : g x ∈ s) (i : β„•) :
iteratedFDerivWithin π•œ i (f ∘ ⇑g) (⇑g ⁻¹' s) x = (iteratedFDerivWithin π•œ i f s (g x)).compContinuousLinearMap fun (x : Fin i) => ↑g

The iterated derivative within a set of the composition with a linear equiv on the right is obtained by composing the iterated derivative with the linear equiv.

theorem ContinuousLinearMap.iteratedFDeriv_comp_right {π•œ : Type u_1} {E : Type u_2} {F : Type u_3} {G : Type u_4} [NontriviallyNormedField π•œ] [NormedAddCommGroup E] [NormedSpace π•œ E] [NormedAddCommGroup F] [NormedSpace π•œ F] [NormedAddCommGroup G] [NormedSpace π•œ G] {n : WithTop β„•βˆž} (g : G β†’L[π•œ] E) {f : E β†’ F} (hf : ContDiff π•œ n f) (x : G) {i : β„•} (hi : ↑i ≀ n) :
iteratedFDeriv π•œ i (f ∘ ⇑g) x = (iteratedFDeriv π•œ i f (g x)).compContinuousLinearMap fun (x : Fin i) => g

The iterated derivative of the composition with a linear map on the right is obtained by composing the iterated derivative with the linear map.

theorem LinearIsometryEquiv.norm_iteratedFDerivWithin_comp_right {π•œ : Type u_1} {E : Type u_2} {F : Type u_3} {G : Type u_4} [NontriviallyNormedField π•œ] [NormedAddCommGroup E] [NormedSpace π•œ E] [NormedAddCommGroup F] [NormedSpace π•œ F] [NormedAddCommGroup G] [NormedSpace π•œ G] {s : Set E} (g : G ≃ₗᡒ[π•œ] E) (f : E β†’ F) (hs : UniqueDiffOn π•œ s) {x : G} (hx : g x ∈ s) (i : β„•) :
β€–iteratedFDerivWithin π•œ i (f ∘ ⇑g) (⇑g ⁻¹' s) xβ€– = β€–iteratedFDerivWithin π•œ i f s (g x)β€–

Composition with a linear isometry on the right preserves the norm of the iterated derivative within a set.

theorem LinearIsometryEquiv.norm_iteratedFDeriv_comp_right {π•œ : Type u_1} {E : Type u_2} {F : Type u_3} {G : Type u_4} [NontriviallyNormedField π•œ] [NormedAddCommGroup E] [NormedSpace π•œ E] [NormedAddCommGroup F] [NormedSpace π•œ F] [NormedAddCommGroup G] [NormedSpace π•œ G] (g : G ≃ₗᡒ[π•œ] E) (f : E β†’ F) (x : G) (i : β„•) :
β€–iteratedFDeriv π•œ i (f ∘ ⇑g) xβ€– = β€–iteratedFDeriv π•œ i f (g x)β€–

Composition with a linear isometry on the right preserves the norm of the iterated derivative within a set.

theorem ContinuousLinearEquiv.contDiffWithinAt_comp_iff {π•œ : Type u_1} {E : Type u_2} {F : Type u_3} {G : Type u_4} [NontriviallyNormedField π•œ] [NormedAddCommGroup E] [NormedSpace π•œ E] [NormedAddCommGroup F] [NormedSpace π•œ F] [NormedAddCommGroup G] [NormedSpace π•œ G] {s : Set E} {f : E β†’ F} {x : E} {n : WithTop β„•βˆž} (e : G ≃L[π•œ] E) :
ContDiffWithinAt π•œ n (f ∘ ⇑e) (⇑e ⁻¹' s) (e.symm x) ↔ ContDiffWithinAt π•œ n f s x

Composition by continuous linear equivs on the right respects higher differentiability at a point in a domain.

theorem ContinuousLinearEquiv.contDiffAt_comp_iff {π•œ : Type u_1} {E : Type u_2} {F : Type u_3} {G : Type u_4} [NontriviallyNormedField π•œ] [NormedAddCommGroup E] [NormedSpace π•œ E] [NormedAddCommGroup F] [NormedSpace π•œ F] [NormedAddCommGroup G] [NormedSpace π•œ G] {f : E β†’ F} {x : E} {n : WithTop β„•βˆž} (e : G ≃L[π•œ] E) :
ContDiffAt π•œ n (f ∘ ⇑e) (e.symm x) ↔ ContDiffAt π•œ n f x

Composition by continuous linear equivs on the right respects higher differentiability at a point.

theorem ContinuousLinearEquiv.contDiffOn_comp_iff {π•œ : Type u_1} {E : Type u_2} {F : Type u_3} {G : Type u_4} [NontriviallyNormedField π•œ] [NormedAddCommGroup E] [NormedSpace π•œ E] [NormedAddCommGroup F] [NormedSpace π•œ F] [NormedAddCommGroup G] [NormedSpace π•œ G] {s : Set E} {f : E β†’ F} {n : WithTop β„•βˆž} (e : G ≃L[π•œ] E) :
ContDiffOn π•œ n (f ∘ ⇑e) (⇑e ⁻¹' s) ↔ ContDiffOn π•œ n f s

Composition by continuous linear equivs on the right respects higher differentiability on domains.

theorem ContinuousLinearEquiv.contDiff_comp_iff {π•œ : Type u_1} {E : Type u_2} {F : Type u_3} {G : Type u_4} [NontriviallyNormedField π•œ] [NormedAddCommGroup E] [NormedSpace π•œ E] [NormedAddCommGroup F] [NormedSpace π•œ F] [NormedAddCommGroup G] [NormedSpace π•œ G] {f : E β†’ F} {n : WithTop β„•βˆž} (e : G ≃L[π•œ] E) :
ContDiff π•œ n (f ∘ ⇑e) ↔ ContDiff π•œ n f

Composition by continuous linear equivs on the right respects higher differentiability.

The Cartesian product of two C^n functions is C^n. #

theorem HasFTaylorSeriesUpToOn.prodMk {π•œ : Type u_1} {E : Type u_2} {F : Type u_3} {G : Type u_4} [NontriviallyNormedField π•œ] [NormedAddCommGroup E] [NormedSpace π•œ E] [NormedAddCommGroup F] [NormedSpace π•œ F] [NormedAddCommGroup G] [NormedSpace π•œ G] {s : Set E} {f : E β†’ F} {p : E β†’ FormalMultilinearSeries π•œ E F} {n : WithTop β„•βˆž} (hf : HasFTaylorSeriesUpToOn n f p s) {g : E β†’ G} {q : E β†’ FormalMultilinearSeries π•œ E G} (hg : HasFTaylorSeriesUpToOn n g q s) :
HasFTaylorSeriesUpToOn n (fun (y : E) => (f y, g y)) (fun (y : E) (k : β„•) => (p y k).prod (q y k)) s

If two functions f and g admit Taylor series p and q in a set s, then the Cartesian product of f and g admits the Cartesian product of p and q as a Taylor series.

theorem ContDiffWithinAt.prodMk {π•œ : Type u_1} {E : Type u_2} {F : Type u_3} {G : Type u_4} [NontriviallyNormedField π•œ] [NormedAddCommGroup E] [NormedSpace π•œ E] [NormedAddCommGroup F] [NormedSpace π•œ F] [NormedAddCommGroup G] [NormedSpace π•œ G] {x : E} {n : WithTop β„•βˆž} {s : Set E} {f : E β†’ F} {g : E β†’ G} (hf : ContDiffWithinAt π•œ n f s x) (hg : ContDiffWithinAt π•œ n g s x) :
ContDiffWithinAt π•œ n (fun (x : E) => (f x, g x)) s x

The Cartesian product of C^n functions at a point in a domain is C^n.

theorem ContDiffOn.prodMk {π•œ : Type u_1} {E : Type u_2} {F : Type u_3} {G : Type u_4} [NontriviallyNormedField π•œ] [NormedAddCommGroup E] [NormedSpace π•œ E] [NormedAddCommGroup F] [NormedSpace π•œ F] [NormedAddCommGroup G] [NormedSpace π•œ G] {n : WithTop β„•βˆž} {s : Set E} {f : E β†’ F} {g : E β†’ G} (hf : ContDiffOn π•œ n f s) (hg : ContDiffOn π•œ n g s) :
ContDiffOn π•œ n (fun (x : E) => (f x, g x)) s

The Cartesian product of C^n functions on domains is C^n.

theorem ContDiffAt.prodMk {π•œ : Type u_1} {E : Type u_2} {F : Type u_3} {G : Type u_4} [NontriviallyNormedField π•œ] [NormedAddCommGroup E] [NormedSpace π•œ E] [NormedAddCommGroup F] [NormedSpace π•œ F] [NormedAddCommGroup G] [NormedSpace π•œ G] {x : E} {n : WithTop β„•βˆž} {f : E β†’ F} {g : E β†’ G} (hf : ContDiffAt π•œ n f x) (hg : ContDiffAt π•œ n g x) :
ContDiffAt π•œ n (fun (x : E) => (f x, g x)) x

The Cartesian product of C^n functions at a point is C^n.

theorem ContDiff.prodMk {π•œ : Type u_1} {E : Type u_2} {F : Type u_3} {G : Type u_4} [NontriviallyNormedField π•œ] [NormedAddCommGroup E] [NormedSpace π•œ E] [NormedAddCommGroup F] [NormedSpace π•œ F] [NormedAddCommGroup G] [NormedSpace π•œ G] {n : WithTop β„•βˆž} {f : E β†’ F} {g : E β†’ G} (hf : ContDiff π•œ n f) (hg : ContDiff π•œ n g) :
ContDiff π•œ n fun (x : E) => (f x, g x)

The Cartesian product of C^n functions is C^n.

theorem iteratedFDerivWithin_prodMk {π•œ : Type u_1} {E : Type u_2} {F : Type u_3} {G : Type u_4} [NontriviallyNormedField π•œ] [NormedAddCommGroup E] [NormedSpace π•œ E] [NormedAddCommGroup F] [NormedSpace π•œ F] [NormedAddCommGroup G] [NormedSpace π•œ G] {s : Set E} {x : E} {n : WithTop β„•βˆž} {f : E β†’ F} {g : E β†’ G} (hf : ContDiffWithinAt π•œ n f s x) (hg : ContDiffWithinAt π•œ n g s x) (hs : UniqueDiffOn π•œ s) (ha : x ∈ s) {i : β„•} (hi : ↑i ≀ n) :
iteratedFDerivWithin π•œ i (fun (x : E) => (f x, g x)) s x = (iteratedFDerivWithin π•œ i f s x).prod (iteratedFDerivWithin π•œ i g s x)
theorem iteratedFDeriv_prodMk {π•œ : Type u_1} {E : Type u_2} {F : Type u_3} {G : Type u_4} [NontriviallyNormedField π•œ] [NormedAddCommGroup E] [NormedSpace π•œ E] [NormedAddCommGroup F] [NormedSpace π•œ F] [NormedAddCommGroup G] [NormedSpace π•œ G] {x : E} {n : WithTop β„•βˆž} {f : E β†’ F} {g : E β†’ G} (hf : ContDiffAt π•œ n f x) (hg : ContDiffAt π•œ n g x) {i : β„•} (hi : ↑i ≀ n) :
iteratedFDeriv π•œ i (fun (x : E) => (f x, g x)) x = (iteratedFDeriv π•œ i f x).prod (iteratedFDeriv π•œ i g x)

Being C^k on a union of open sets can be tested on each set #

theorem ContDiffOn.union_of_isOpen {π•œ : Type u_1} {E : Type u_2} {F : Type u_3} [NontriviallyNormedField π•œ] [NormedAddCommGroup E] [NormedSpace π•œ E] [NormedAddCommGroup F] [NormedSpace π•œ F] {s t : Set E} {f : E β†’ F} {n : WithTop β„•βˆž} (hf : ContDiffOn π•œ n f s) (hf' : ContDiffOn π•œ n f t) (hs : IsOpen s) (ht : IsOpen t) :
ContDiffOn π•œ n f (s βˆͺ t)

If a function is C^k on two open sets, it is also C^n on their union.

theorem contDiffOn_union_iff_of_isOpen {π•œ : Type u_1} {E : Type u_2} {F : Type u_3} [NontriviallyNormedField π•œ] [NormedAddCommGroup E] [NormedSpace π•œ E] [NormedAddCommGroup F] [NormedSpace π•œ F] {s t : Set E} {f : E β†’ F} {n : WithTop β„•βˆž} (hs : IsOpen s) (ht : IsOpen t) :
ContDiffOn π•œ n f (s βˆͺ t) ↔ ContDiffOn π•œ n f s ∧ ContDiffOn π•œ n f t

A function is C^k on two open sets iff it is C^k on their union.

theorem contDiff_of_contDiffOn_union_of_isOpen {π•œ : Type u_1} {E : Type u_2} {F : Type u_3} [NontriviallyNormedField π•œ] [NormedAddCommGroup E] [NormedSpace π•œ E] [NormedAddCommGroup F] [NormedSpace π•œ F] {s t : Set E} {f : E β†’ F} {n : WithTop β„•βˆž} (hf : ContDiffOn π•œ n f s) (hf' : ContDiffOn π•œ n f t) (hst : s βˆͺ t = Set.univ) (hs : IsOpen s) (ht : IsOpen t) :
ContDiff π•œ n f
theorem ContDiffOn.iUnion_of_isOpen {π•œ : Type u_1} {E : Type u_2} {F : Type u_3} [NontriviallyNormedField π•œ] [NormedAddCommGroup E] [NormedSpace π•œ E] [NormedAddCommGroup F] [NormedSpace π•œ F] {f : E β†’ F} {n : WithTop β„•βˆž} {ΞΉ : Type u_5} {s : ΞΉ β†’ Set E} (hf : βˆ€ (i : ΞΉ), ContDiffOn π•œ n f (s i)) (hs : βˆ€ (i : ΞΉ), IsOpen (s i)) :
ContDiffOn π•œ n f (⋃ (i : ΞΉ), s i)

If a function is C^k on open sets s i, it is C^k on their union

theorem contDiffOn_iUnion_iff_of_isOpen {π•œ : Type u_1} {E : Type u_2} {F : Type u_3} [NontriviallyNormedField π•œ] [NormedAddCommGroup E] [NormedSpace π•œ E] [NormedAddCommGroup F] [NormedSpace π•œ F] {f : E β†’ F} {n : WithTop β„•βˆž} {ΞΉ : Type u_5} {s : ΞΉ β†’ Set E} (hs : βˆ€ (i : ΞΉ), IsOpen (s i)) :
ContDiffOn π•œ n f (⋃ (i : ΞΉ), s i) ↔ βˆ€ (i : ΞΉ), ContDiffOn π•œ n f (s i)

A function is C^k on a union of open sets s i iff it is C^k on each s i.

theorem contDiff_of_contDiffOn_iUnion_of_isOpen {π•œ : Type u_1} {E : Type u_2} {F : Type u_3} [NontriviallyNormedField π•œ] [NormedAddCommGroup E] [NormedSpace π•œ E] [NormedAddCommGroup F] [NormedSpace π•œ F] {f : E β†’ F} {n : WithTop β„•βˆž} {ΞΉ : Type u_5} {s : ΞΉ β†’ Set E} (hf : βˆ€ (i : ΞΉ), ContDiffOn π•œ n f (s i)) (hs : βˆ€ (i : ΞΉ), IsOpen (s i)) (hs' : ⋃ (i : ΞΉ), s i = Set.univ) :
ContDiff π•œ n f
theorem contDiff_prodAssoc {π•œ : Type u_1} {E : Type u_2} {F : Type u_3} {G : Type u_4} [NontriviallyNormedField π•œ] [NormedAddCommGroup E] [NormedSpace π•œ E] [NormedAddCommGroup F] [NormedSpace π•œ F] [NormedAddCommGroup G] [NormedSpace π•œ G] {n : WithTop β„•βˆž} :
ContDiff π•œ n ⇑(Equiv.prodAssoc E F G)

The natural equivalence (E Γ— F) Γ— G ≃ E Γ— (F Γ— G) is smooth.

Warning: if you think you need this lemma, it is likely that you can simplify your proof by reformulating the lemma that you're applying next using the tips in Note [continuity lemma statement]

theorem contDiff_prodAssoc_symm {π•œ : Type u_1} {E : Type u_2} {F : Type u_3} {G : Type u_4} [NontriviallyNormedField π•œ] [NormedAddCommGroup E] [NormedSpace π•œ E] [NormedAddCommGroup F] [NormedSpace π•œ F] [NormedAddCommGroup G] [NormedSpace π•œ G] {n : WithTop β„•βˆž} :
ContDiff π•œ n ⇑(Equiv.prodAssoc E F G).symm

The natural equivalence E Γ— (F Γ— G) ≃ (E Γ— F) Γ— G is smooth.

Warning: see remarks attached to contDiff_prodAssoc