Documentation

Mathlib.Analysis.Calculus.FDeriv.Mul

Multiplicative operations on derivatives #

For detailed documentation of the FrΓ©chet derivative, see the module docstring of Mathlib/Analysis/Calculus/FDeriv/Basic.lean.

This file contains the usual formulas (and existence assertions) for the derivative of

Derivative of the pointwise composition/application of continuous linear maps #

theorem HasStrictFDerivAt.clm_comp {π•œ : Type u_1} [NontriviallyNormedField π•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace π•œ E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace π•œ F] {G : Type u_4} [NormedAddCommGroup G] [NormedSpace π•œ G] {x : E} {H : Type u_6} [NormedAddCommGroup H] [NormedSpace π•œ H] {c : E β†’ G β†’L[π•œ] H} {c' : E β†’L[π•œ] G β†’L[π•œ] H} {d : E β†’ F β†’L[π•œ] G} {d' : E β†’L[π•œ] F β†’L[π•œ] G} (hc : HasStrictFDerivAt c c' x) (hd : HasStrictFDerivAt d d' x) :
theorem HasFDerivWithinAt.clm_comp {π•œ : Type u_1} [NontriviallyNormedField π•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace π•œ E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace π•œ F] {G : Type u_4} [NormedAddCommGroup G] [NormedSpace π•œ G] {x : E} {s : Set E} {H : Type u_6} [NormedAddCommGroup H] [NormedSpace π•œ H] {c : E β†’ G β†’L[π•œ] H} {c' : E β†’L[π•œ] G β†’L[π•œ] H} {d : E β†’ F β†’L[π•œ] G} {d' : E β†’L[π•œ] F β†’L[π•œ] G} (hc : HasFDerivWithinAt c c' s x) (hd : HasFDerivWithinAt d d' s x) :
theorem HasFDerivAt.clm_comp {π•œ : Type u_1} [NontriviallyNormedField π•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace π•œ E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace π•œ F] {G : Type u_4} [NormedAddCommGroup G] [NormedSpace π•œ G] {x : E} {H : Type u_6} [NormedAddCommGroup H] [NormedSpace π•œ H] {c : E β†’ G β†’L[π•œ] H} {c' : E β†’L[π•œ] G β†’L[π•œ] H} {d : E β†’ F β†’L[π•œ] G} {d' : E β†’L[π•œ] F β†’L[π•œ] G} (hc : HasFDerivAt c c' x) (hd : HasFDerivAt d d' x) :
theorem DifferentiableWithinAt.clm_comp {π•œ : Type u_1} [NontriviallyNormedField π•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace π•œ E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace π•œ F] {G : Type u_4} [NormedAddCommGroup G] [NormedSpace π•œ G] {x : E} {s : Set E} {H : Type u_6} [NormedAddCommGroup H] [NormedSpace π•œ H] {c : E β†’ G β†’L[π•œ] H} {d : E β†’ F β†’L[π•œ] G} (hc : DifferentiableWithinAt π•œ c s x) (hd : DifferentiableWithinAt π•œ d s x) :
DifferentiableWithinAt π•œ (fun (y : E) => ContinuousLinearMap.comp (c y) (d y)) s x
theorem DifferentiableAt.clm_comp {π•œ : Type u_1} [NontriviallyNormedField π•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace π•œ E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace π•œ F] {G : Type u_4} [NormedAddCommGroup G] [NormedSpace π•œ G] {x : E} {H : Type u_6} [NormedAddCommGroup H] [NormedSpace π•œ H] {c : E β†’ G β†’L[π•œ] H} {d : E β†’ F β†’L[π•œ] G} (hc : DifferentiableAt π•œ c x) (hd : DifferentiableAt π•œ d x) :
DifferentiableAt π•œ (fun (y : E) => ContinuousLinearMap.comp (c y) (d y)) x
theorem DifferentiableOn.clm_comp {π•œ : Type u_1} [NontriviallyNormedField π•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace π•œ E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace π•œ F] {G : Type u_4} [NormedAddCommGroup G] [NormedSpace π•œ G] {s : Set E} {H : Type u_6} [NormedAddCommGroup H] [NormedSpace π•œ H] {c : E β†’ G β†’L[π•œ] H} {d : E β†’ F β†’L[π•œ] G} (hc : DifferentiableOn π•œ c s) (hd : DifferentiableOn π•œ d s) :
DifferentiableOn π•œ (fun (y : E) => ContinuousLinearMap.comp (c y) (d y)) s
theorem Differentiable.clm_comp {π•œ : Type u_1} [NontriviallyNormedField π•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace π•œ E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace π•œ F] {G : Type u_4} [NormedAddCommGroup G] [NormedSpace π•œ G] {H : Type u_6} [NormedAddCommGroup H] [NormedSpace π•œ H] {c : E β†’ G β†’L[π•œ] H} {d : E β†’ F β†’L[π•œ] G} (hc : Differentiable π•œ c) (hd : Differentiable π•œ d) :
Differentiable π•œ fun (y : E) => ContinuousLinearMap.comp (c y) (d y)
theorem fderivWithin_clm_comp {π•œ : Type u_1} [NontriviallyNormedField π•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace π•œ E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace π•œ F] {G : Type u_4} [NormedAddCommGroup G] [NormedSpace π•œ G] {x : E} {s : Set E} {H : Type u_6} [NormedAddCommGroup H] [NormedSpace π•œ H] {c : E β†’ G β†’L[π•œ] H} {d : E β†’ F β†’L[π•œ] G} (hxs : UniqueDiffWithinAt π•œ s x) (hc : DifferentiableWithinAt π•œ c s x) (hd : DifferentiableWithinAt π•œ d s x) :
fderivWithin π•œ (fun (y : E) => ContinuousLinearMap.comp (c y) (d y)) s x = ContinuousLinearMap.comp ((ContinuousLinearMap.compL π•œ F G H) (c x)) (fderivWithin π•œ d s x) + ContinuousLinearMap.comp ((ContinuousLinearMap.flip (ContinuousLinearMap.compL π•œ F G H)) (d x)) (fderivWithin π•œ c s x)
theorem fderiv_clm_comp {π•œ : Type u_1} [NontriviallyNormedField π•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace π•œ E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace π•œ F] {G : Type u_4} [NormedAddCommGroup G] [NormedSpace π•œ G] {x : E} {H : Type u_6} [NormedAddCommGroup H] [NormedSpace π•œ H] {c : E β†’ G β†’L[π•œ] H} {d : E β†’ F β†’L[π•œ] G} (hc : DifferentiableAt π•œ c x) (hd : DifferentiableAt π•œ d x) :
fderiv π•œ (fun (y : E) => ContinuousLinearMap.comp (c y) (d y)) x = ContinuousLinearMap.comp ((ContinuousLinearMap.compL π•œ F G H) (c x)) (fderiv π•œ d x) + ContinuousLinearMap.comp ((ContinuousLinearMap.flip (ContinuousLinearMap.compL π•œ F G H)) (d x)) (fderiv π•œ c x)
theorem HasStrictFDerivAt.clm_apply {π•œ : Type u_1} [NontriviallyNormedField π•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace π•œ E] {G : Type u_4} [NormedAddCommGroup G] [NormedSpace π•œ G] {x : E} {H : Type u_6} [NormedAddCommGroup H] [NormedSpace π•œ H] {c : E β†’ G β†’L[π•œ] H} {c' : E β†’L[π•œ] G β†’L[π•œ] H} {u : E β†’ G} {u' : E β†’L[π•œ] G} (hc : HasStrictFDerivAt c c' x) (hu : HasStrictFDerivAt u u' x) :
HasStrictFDerivAt (fun (y : E) => (c y) (u y)) (ContinuousLinearMap.comp (c x) u' + (ContinuousLinearMap.flip c') (u x)) x
theorem HasFDerivWithinAt.clm_apply {π•œ : Type u_1} [NontriviallyNormedField π•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace π•œ E] {G : Type u_4} [NormedAddCommGroup G] [NormedSpace π•œ G] {x : E} {s : Set E} {H : Type u_6} [NormedAddCommGroup H] [NormedSpace π•œ H] {c : E β†’ G β†’L[π•œ] H} {c' : E β†’L[π•œ] G β†’L[π•œ] H} {u : E β†’ G} {u' : E β†’L[π•œ] G} (hc : HasFDerivWithinAt c c' s x) (hu : HasFDerivWithinAt u u' s x) :
HasFDerivWithinAt (fun (y : E) => (c y) (u y)) (ContinuousLinearMap.comp (c x) u' + (ContinuousLinearMap.flip c') (u x)) s x
theorem HasFDerivAt.clm_apply {π•œ : Type u_1} [NontriviallyNormedField π•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace π•œ E] {G : Type u_4} [NormedAddCommGroup G] [NormedSpace π•œ G] {x : E} {H : Type u_6} [NormedAddCommGroup H] [NormedSpace π•œ H] {c : E β†’ G β†’L[π•œ] H} {c' : E β†’L[π•œ] G β†’L[π•œ] H} {u : E β†’ G} {u' : E β†’L[π•œ] G} (hc : HasFDerivAt c c' x) (hu : HasFDerivAt u u' x) :
HasFDerivAt (fun (y : E) => (c y) (u y)) (ContinuousLinearMap.comp (c x) u' + (ContinuousLinearMap.flip c') (u x)) x
theorem DifferentiableWithinAt.clm_apply {π•œ : Type u_1} [NontriviallyNormedField π•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace π•œ E] {G : Type u_4} [NormedAddCommGroup G] [NormedSpace π•œ G] {x : E} {s : Set E} {H : Type u_6} [NormedAddCommGroup H] [NormedSpace π•œ H] {c : E β†’ G β†’L[π•œ] H} {u : E β†’ G} (hc : DifferentiableWithinAt π•œ c s x) (hu : DifferentiableWithinAt π•œ u s x) :
DifferentiableWithinAt π•œ (fun (y : E) => (c y) (u y)) s x
theorem DifferentiableAt.clm_apply {π•œ : Type u_1} [NontriviallyNormedField π•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace π•œ E] {G : Type u_4} [NormedAddCommGroup G] [NormedSpace π•œ G] {x : E} {H : Type u_6} [NormedAddCommGroup H] [NormedSpace π•œ H] {c : E β†’ G β†’L[π•œ] H} {u : E β†’ G} (hc : DifferentiableAt π•œ c x) (hu : DifferentiableAt π•œ u x) :
DifferentiableAt π•œ (fun (y : E) => (c y) (u y)) x
theorem DifferentiableOn.clm_apply {π•œ : Type u_1} [NontriviallyNormedField π•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace π•œ E] {G : Type u_4} [NormedAddCommGroup G] [NormedSpace π•œ G] {s : Set E} {H : Type u_6} [NormedAddCommGroup H] [NormedSpace π•œ H] {c : E β†’ G β†’L[π•œ] H} {u : E β†’ G} (hc : DifferentiableOn π•œ c s) (hu : DifferentiableOn π•œ u s) :
DifferentiableOn π•œ (fun (y : E) => (c y) (u y)) s
theorem Differentiable.clm_apply {π•œ : Type u_1} [NontriviallyNormedField π•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace π•œ E] {G : Type u_4} [NormedAddCommGroup G] [NormedSpace π•œ G] {H : Type u_6} [NormedAddCommGroup H] [NormedSpace π•œ H] {c : E β†’ G β†’L[π•œ] H} {u : E β†’ G} (hc : Differentiable π•œ c) (hu : Differentiable π•œ u) :
Differentiable π•œ fun (y : E) => (c y) (u y)
theorem fderivWithin_clm_apply {π•œ : Type u_1} [NontriviallyNormedField π•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace π•œ E] {G : Type u_4} [NormedAddCommGroup G] [NormedSpace π•œ G] {x : E} {s : Set E} {H : Type u_6} [NormedAddCommGroup H] [NormedSpace π•œ H] {c : E β†’ G β†’L[π•œ] H} {u : E β†’ G} (hxs : UniqueDiffWithinAt π•œ s x) (hc : DifferentiableWithinAt π•œ c s x) (hu : DifferentiableWithinAt π•œ u s x) :
fderivWithin π•œ (fun (y : E) => (c y) (u y)) s x = ContinuousLinearMap.comp (c x) (fderivWithin π•œ u s x) + (ContinuousLinearMap.flip (fderivWithin π•œ c s x)) (u x)
theorem fderiv_clm_apply {π•œ : Type u_1} [NontriviallyNormedField π•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace π•œ E] {G : Type u_4} [NormedAddCommGroup G] [NormedSpace π•œ G] {x : E} {H : Type u_6} [NormedAddCommGroup H] [NormedSpace π•œ H] {c : E β†’ G β†’L[π•œ] H} {u : E β†’ G} (hc : DifferentiableAt π•œ c x) (hu : DifferentiableAt π•œ u x) :
fderiv π•œ (fun (y : E) => (c y) (u y)) x = ContinuousLinearMap.comp (c x) (fderiv π•œ u x) + (ContinuousLinearMap.flip (fderiv π•œ c x)) (u x)

Derivative of the application of continuous multilinear maps to a constant #

theorem HasStrictFDerivAt.continuousMultilinear_apply_const {π•œ : Type u_1} [NontriviallyNormedField π•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace π•œ E] {x : E} {ΞΉ : Type u_6} [Fintype ΞΉ] {M : ΞΉ β†’ Type u_7} [(i : ΞΉ) β†’ NormedAddCommGroup (M i)] [(i : ΞΉ) β†’ NormedSpace π•œ (M i)] {H : Type u_8} [NormedAddCommGroup H] [NormedSpace π•œ H] {c : E β†’ ContinuousMultilinearMap π•œ M H} {c' : E β†’L[π•œ] ContinuousMultilinearMap π•œ M H} (hc : HasStrictFDerivAt c c' x) (u : (i : ΞΉ) β†’ M i) :
HasStrictFDerivAt (fun (y : E) => (c y) u) ((ContinuousLinearMap.flipMultilinear c') u) x
theorem HasFDerivWithinAt.continuousMultilinear_apply_const {π•œ : Type u_1} [NontriviallyNormedField π•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace π•œ E] {x : E} {s : Set E} {ΞΉ : Type u_6} [Fintype ΞΉ] {M : ΞΉ β†’ Type u_7} [(i : ΞΉ) β†’ NormedAddCommGroup (M i)] [(i : ΞΉ) β†’ NormedSpace π•œ (M i)] {H : Type u_8} [NormedAddCommGroup H] [NormedSpace π•œ H] {c : E β†’ ContinuousMultilinearMap π•œ M H} {c' : E β†’L[π•œ] ContinuousMultilinearMap π•œ M H} (hc : HasFDerivWithinAt c c' s x) (u : (i : ΞΉ) β†’ M i) :
HasFDerivWithinAt (fun (y : E) => (c y) u) ((ContinuousLinearMap.flipMultilinear c') u) s x
theorem HasFDerivAt.continuousMultilinear_apply_const {π•œ : Type u_1} [NontriviallyNormedField π•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace π•œ E] {x : E} {ΞΉ : Type u_6} [Fintype ΞΉ] {M : ΞΉ β†’ Type u_7} [(i : ΞΉ) β†’ NormedAddCommGroup (M i)] [(i : ΞΉ) β†’ NormedSpace π•œ (M i)] {H : Type u_8} [NormedAddCommGroup H] [NormedSpace π•œ H] {c : E β†’ ContinuousMultilinearMap π•œ M H} {c' : E β†’L[π•œ] ContinuousMultilinearMap π•œ M H} (hc : HasFDerivAt c c' x) (u : (i : ΞΉ) β†’ M i) :
HasFDerivAt (fun (y : E) => (c y) u) ((ContinuousLinearMap.flipMultilinear c') u) x
theorem DifferentiableWithinAt.continuousMultilinear_apply_const {π•œ : Type u_1} [NontriviallyNormedField π•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace π•œ E] {x : E} {s : Set E} {ΞΉ : Type u_6} [Fintype ΞΉ] {M : ΞΉ β†’ Type u_7} [(i : ΞΉ) β†’ NormedAddCommGroup (M i)] [(i : ΞΉ) β†’ NormedSpace π•œ (M i)] {H : Type u_8} [NormedAddCommGroup H] [NormedSpace π•œ H] {c : E β†’ ContinuousMultilinearMap π•œ M H} (hc : DifferentiableWithinAt π•œ c s x) (u : (i : ΞΉ) β†’ M i) :
DifferentiableWithinAt π•œ (fun (y : E) => (c y) u) s x
theorem DifferentiableAt.continuousMultilinear_apply_const {π•œ : Type u_1} [NontriviallyNormedField π•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace π•œ E] {x : E} {ΞΉ : Type u_6} [Fintype ΞΉ] {M : ΞΉ β†’ Type u_7} [(i : ΞΉ) β†’ NormedAddCommGroup (M i)] [(i : ΞΉ) β†’ NormedSpace π•œ (M i)] {H : Type u_8} [NormedAddCommGroup H] [NormedSpace π•œ H] {c : E β†’ ContinuousMultilinearMap π•œ M H} (hc : DifferentiableAt π•œ c x) (u : (i : ΞΉ) β†’ M i) :
DifferentiableAt π•œ (fun (y : E) => (c y) u) x
theorem DifferentiableOn.continuousMultilinear_apply_const {π•œ : Type u_1} [NontriviallyNormedField π•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace π•œ E] {s : Set E} {ΞΉ : Type u_6} [Fintype ΞΉ] {M : ΞΉ β†’ Type u_7} [(i : ΞΉ) β†’ NormedAddCommGroup (M i)] [(i : ΞΉ) β†’ NormedSpace π•œ (M i)] {H : Type u_8} [NormedAddCommGroup H] [NormedSpace π•œ H] {c : E β†’ ContinuousMultilinearMap π•œ M H} (hc : DifferentiableOn π•œ c s) (u : (i : ΞΉ) β†’ M i) :
DifferentiableOn π•œ (fun (y : E) => (c y) u) s
theorem Differentiable.continuousMultilinear_apply_const {π•œ : Type u_1} [NontriviallyNormedField π•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace π•œ E] {ΞΉ : Type u_6} [Fintype ΞΉ] {M : ΞΉ β†’ Type u_7} [(i : ΞΉ) β†’ NormedAddCommGroup (M i)] [(i : ΞΉ) β†’ NormedSpace π•œ (M i)] {H : Type u_8} [NormedAddCommGroup H] [NormedSpace π•œ H] {c : E β†’ ContinuousMultilinearMap π•œ M H} (hc : Differentiable π•œ c) (u : (i : ΞΉ) β†’ M i) :
Differentiable π•œ fun (y : E) => (c y) u
theorem fderivWithin_continuousMultilinear_apply_const {π•œ : Type u_1} [NontriviallyNormedField π•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace π•œ E] {x : E} {s : Set E} {ΞΉ : Type u_6} [Fintype ΞΉ] {M : ΞΉ β†’ Type u_7} [(i : ΞΉ) β†’ NormedAddCommGroup (M i)] [(i : ΞΉ) β†’ NormedSpace π•œ (M i)] {H : Type u_8} [NormedAddCommGroup H] [NormedSpace π•œ H] {c : E β†’ ContinuousMultilinearMap π•œ M H} (hxs : UniqueDiffWithinAt π•œ s x) (hc : DifferentiableWithinAt π•œ c s x) (u : (i : ΞΉ) β†’ M i) :
fderivWithin π•œ (fun (y : E) => (c y) u) s x = (ContinuousLinearMap.flipMultilinear (fderivWithin π•œ c s x)) u
theorem fderiv_continuousMultilinear_apply_const {π•œ : Type u_1} [NontriviallyNormedField π•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace π•œ E] {x : E} {ΞΉ : Type u_6} [Fintype ΞΉ] {M : ΞΉ β†’ Type u_7} [(i : ΞΉ) β†’ NormedAddCommGroup (M i)] [(i : ΞΉ) β†’ NormedSpace π•œ (M i)] {H : Type u_8} [NormedAddCommGroup H] [NormedSpace π•œ H] {c : E β†’ ContinuousMultilinearMap π•œ M H} (hc : DifferentiableAt π•œ c x) (u : (i : ΞΉ) β†’ M i) :
fderiv π•œ (fun (y : E) => (c y) u) x = (ContinuousLinearMap.flipMultilinear (fderiv π•œ c x)) u
theorem fderivWithin_continuousMultilinear_apply_const_apply {π•œ : Type u_1} [NontriviallyNormedField π•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace π•œ E] {x : E} {s : Set E} {ΞΉ : Type u_6} [Fintype ΞΉ] {M : ΞΉ β†’ Type u_7} [(i : ΞΉ) β†’ NormedAddCommGroup (M i)] [(i : ΞΉ) β†’ NormedSpace π•œ (M i)] {H : Type u_8} [NormedAddCommGroup H] [NormedSpace π•œ H] {c : E β†’ ContinuousMultilinearMap π•œ M H} (hxs : UniqueDiffWithinAt π•œ s x) (hc : DifferentiableWithinAt π•œ c s x) (u : (i : ΞΉ) β†’ M i) (m : E) :
(fderivWithin π•œ (fun (y : E) => (c y) u) s x) m = ((fderivWithin π•œ c s x) m) u

Application of a ContinuousMultilinearMap to a constant commutes with fderivWithin.

theorem fderiv_continuousMultilinear_apply_const_apply {π•œ : Type u_1} [NontriviallyNormedField π•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace π•œ E] {x : E} {ΞΉ : Type u_6} [Fintype ΞΉ] {M : ΞΉ β†’ Type u_7} [(i : ΞΉ) β†’ NormedAddCommGroup (M i)] [(i : ΞΉ) β†’ NormedSpace π•œ (M i)] {H : Type u_8} [NormedAddCommGroup H] [NormedSpace π•œ H] {c : E β†’ ContinuousMultilinearMap π•œ M H} (hc : DifferentiableAt π•œ c x) (u : (i : ΞΉ) β†’ M i) (m : E) :
(fderiv π•œ (fun (y : E) => (c y) u) x) m = ((fderiv π•œ c x) m) u

Application of a ContinuousMultilinearMap to a constant commutes with fderiv.

Derivative of the product of a scalar-valued function and a vector-valued function #

If c is a differentiable scalar-valued function and f is a differentiable vector-valued function, then fun x ↦ c x β€’ f x is differentiable as well. Lemmas in this section works for function c taking values in the base field, as well as in a normed algebra over the base field: e.g., they work for c : E β†’ β„‚ and f : E β†’ F provided that F is a complex normed vector space.

theorem HasStrictFDerivAt.smul {π•œ : Type u_1} [NontriviallyNormedField π•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace π•œ E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace π•œ F] {f : E β†’ F} {f' : E β†’L[π•œ] F} {x : E} {π•œ' : Type u_6} [NontriviallyNormedField π•œ'] [NormedAlgebra π•œ π•œ'] [NormedSpace π•œ' F] [IsScalarTower π•œ π•œ' F] {c : E β†’ π•œ'} {c' : E β†’L[π•œ] π•œ'} (hc : HasStrictFDerivAt c c' x) (hf : HasStrictFDerivAt f f' x) :
HasStrictFDerivAt (fun (y : E) => c y β€’ f y) (c x β€’ f' + ContinuousLinearMap.smulRight c' (f x)) x
theorem HasFDerivWithinAt.smul {π•œ : Type u_1} [NontriviallyNormedField π•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace π•œ E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace π•œ F] {f : E β†’ F} {f' : E β†’L[π•œ] F} {x : E} {s : Set E} {π•œ' : Type u_6} [NontriviallyNormedField π•œ'] [NormedAlgebra π•œ π•œ'] [NormedSpace π•œ' F] [IsScalarTower π•œ π•œ' F] {c : E β†’ π•œ'} {c' : E β†’L[π•œ] π•œ'} (hc : HasFDerivWithinAt c c' s x) (hf : HasFDerivWithinAt f f' s x) :
HasFDerivWithinAt (fun (y : E) => c y β€’ f y) (c x β€’ f' + ContinuousLinearMap.smulRight c' (f x)) s x
theorem HasFDerivAt.smul {π•œ : Type u_1} [NontriviallyNormedField π•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace π•œ E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace π•œ F] {f : E β†’ F} {f' : E β†’L[π•œ] F} {x : E} {π•œ' : Type u_6} [NontriviallyNormedField π•œ'] [NormedAlgebra π•œ π•œ'] [NormedSpace π•œ' F] [IsScalarTower π•œ π•œ' F] {c : E β†’ π•œ'} {c' : E β†’L[π•œ] π•œ'} (hc : HasFDerivAt c c' x) (hf : HasFDerivAt f f' x) :
HasFDerivAt (fun (y : E) => c y β€’ f y) (c x β€’ f' + ContinuousLinearMap.smulRight c' (f x)) x
theorem DifferentiableWithinAt.smul {π•œ : Type u_1} [NontriviallyNormedField π•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace π•œ E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace π•œ F] {f : E β†’ F} {x : E} {s : Set E} {π•œ' : Type u_6} [NontriviallyNormedField π•œ'] [NormedAlgebra π•œ π•œ'] [NormedSpace π•œ' F] [IsScalarTower π•œ π•œ' F] {c : E β†’ π•œ'} (hc : DifferentiableWithinAt π•œ c s x) (hf : DifferentiableWithinAt π•œ f s x) :
DifferentiableWithinAt π•œ (fun (y : E) => c y β€’ f y) s x
@[simp]
theorem DifferentiableAt.smul {π•œ : Type u_1} [NontriviallyNormedField π•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace π•œ E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace π•œ F] {f : E β†’ F} {x : E} {π•œ' : Type u_6} [NontriviallyNormedField π•œ'] [NormedAlgebra π•œ π•œ'] [NormedSpace π•œ' F] [IsScalarTower π•œ π•œ' F] {c : E β†’ π•œ'} (hc : DifferentiableAt π•œ c x) (hf : DifferentiableAt π•œ f x) :
DifferentiableAt π•œ (fun (y : E) => c y β€’ f y) x
theorem DifferentiableOn.smul {π•œ : Type u_1} [NontriviallyNormedField π•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace π•œ E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace π•œ F] {f : E β†’ F} {s : Set E} {π•œ' : Type u_6} [NontriviallyNormedField π•œ'] [NormedAlgebra π•œ π•œ'] [NormedSpace π•œ' F] [IsScalarTower π•œ π•œ' F] {c : E β†’ π•œ'} (hc : DifferentiableOn π•œ c s) (hf : DifferentiableOn π•œ f s) :
DifferentiableOn π•œ (fun (y : E) => c y β€’ f y) s
@[simp]
theorem Differentiable.smul {π•œ : Type u_1} [NontriviallyNormedField π•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace π•œ E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace π•œ F] {f : E β†’ F} {π•œ' : Type u_6} [NontriviallyNormedField π•œ'] [NormedAlgebra π•œ π•œ'] [NormedSpace π•œ' F] [IsScalarTower π•œ π•œ' F] {c : E β†’ π•œ'} (hc : Differentiable π•œ c) (hf : Differentiable π•œ f) :
Differentiable π•œ fun (y : E) => c y β€’ f y
theorem fderivWithin_smul {π•œ : Type u_1} [NontriviallyNormedField π•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace π•œ E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace π•œ F] {f : E β†’ F} {x : E} {s : Set E} {π•œ' : Type u_6} [NontriviallyNormedField π•œ'] [NormedAlgebra π•œ π•œ'] [NormedSpace π•œ' F] [IsScalarTower π•œ π•œ' F] {c : E β†’ π•œ'} (hxs : UniqueDiffWithinAt π•œ s x) (hc : DifferentiableWithinAt π•œ c s x) (hf : DifferentiableWithinAt π•œ f s x) :
fderivWithin π•œ (fun (y : E) => c y β€’ f y) s x = c x β€’ fderivWithin π•œ f s x + ContinuousLinearMap.smulRight (fderivWithin π•œ c s x) (f x)
theorem fderiv_smul {π•œ : Type u_1} [NontriviallyNormedField π•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace π•œ E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace π•œ F] {f : E β†’ F} {x : E} {π•œ' : Type u_6} [NontriviallyNormedField π•œ'] [NormedAlgebra π•œ π•œ'] [NormedSpace π•œ' F] [IsScalarTower π•œ π•œ' F] {c : E β†’ π•œ'} (hc : DifferentiableAt π•œ c x) (hf : DifferentiableAt π•œ f x) :
fderiv π•œ (fun (y : E) => c y β€’ f y) x = c x β€’ fderiv π•œ f x + ContinuousLinearMap.smulRight (fderiv π•œ c x) (f x)
theorem HasStrictFDerivAt.smul_const {π•œ : Type u_1} [NontriviallyNormedField π•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace π•œ E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace π•œ F] {x : E} {π•œ' : Type u_6} [NontriviallyNormedField π•œ'] [NormedAlgebra π•œ π•œ'] [NormedSpace π•œ' F] [IsScalarTower π•œ π•œ' F] {c : E β†’ π•œ'} {c' : E β†’L[π•œ] π•œ'} (hc : HasStrictFDerivAt c c' x) (f : F) :
theorem HasFDerivWithinAt.smul_const {π•œ : Type u_1} [NontriviallyNormedField π•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace π•œ E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace π•œ F] {x : E} {s : Set E} {π•œ' : Type u_6} [NontriviallyNormedField π•œ'] [NormedAlgebra π•œ π•œ'] [NormedSpace π•œ' F] [IsScalarTower π•œ π•œ' F] {c : E β†’ π•œ'} {c' : E β†’L[π•œ] π•œ'} (hc : HasFDerivWithinAt c c' s x) (f : F) :
HasFDerivWithinAt (fun (y : E) => c y β€’ f) (ContinuousLinearMap.smulRight c' f) s x
theorem HasFDerivAt.smul_const {π•œ : Type u_1} [NontriviallyNormedField π•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace π•œ E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace π•œ F] {x : E} {π•œ' : Type u_6} [NontriviallyNormedField π•œ'] [NormedAlgebra π•œ π•œ'] [NormedSpace π•œ' F] [IsScalarTower π•œ π•œ' F] {c : E β†’ π•œ'} {c' : E β†’L[π•œ] π•œ'} (hc : HasFDerivAt c c' x) (f : F) :
HasFDerivAt (fun (y : E) => c y β€’ f) (ContinuousLinearMap.smulRight c' f) x
theorem DifferentiableWithinAt.smul_const {π•œ : Type u_1} [NontriviallyNormedField π•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace π•œ E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace π•œ F] {x : E} {s : Set E} {π•œ' : Type u_6} [NontriviallyNormedField π•œ'] [NormedAlgebra π•œ π•œ'] [NormedSpace π•œ' F] [IsScalarTower π•œ π•œ' F] {c : E β†’ π•œ'} (hc : DifferentiableWithinAt π•œ c s x) (f : F) :
DifferentiableWithinAt π•œ (fun (y : E) => c y β€’ f) s x
theorem DifferentiableAt.smul_const {π•œ : Type u_1} [NontriviallyNormedField π•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace π•œ E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace π•œ F] {x : E} {π•œ' : Type u_6} [NontriviallyNormedField π•œ'] [NormedAlgebra π•œ π•œ'] [NormedSpace π•œ' F] [IsScalarTower π•œ π•œ' F] {c : E β†’ π•œ'} (hc : DifferentiableAt π•œ c x) (f : F) :
DifferentiableAt π•œ (fun (y : E) => c y β€’ f) x
theorem DifferentiableOn.smul_const {π•œ : Type u_1} [NontriviallyNormedField π•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace π•œ E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace π•œ F] {s : Set E} {π•œ' : Type u_6} [NontriviallyNormedField π•œ'] [NormedAlgebra π•œ π•œ'] [NormedSpace π•œ' F] [IsScalarTower π•œ π•œ' F] {c : E β†’ π•œ'} (hc : DifferentiableOn π•œ c s) (f : F) :
DifferentiableOn π•œ (fun (y : E) => c y β€’ f) s
theorem Differentiable.smul_const {π•œ : Type u_1} [NontriviallyNormedField π•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace π•œ E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace π•œ F] {π•œ' : Type u_6} [NontriviallyNormedField π•œ'] [NormedAlgebra π•œ π•œ'] [NormedSpace π•œ' F] [IsScalarTower π•œ π•œ' F] {c : E β†’ π•œ'} (hc : Differentiable π•œ c) (f : F) :
Differentiable π•œ fun (y : E) => c y β€’ f
theorem fderivWithin_smul_const {π•œ : Type u_1} [NontriviallyNormedField π•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace π•œ E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace π•œ F] {x : E} {s : Set E} {π•œ' : Type u_6} [NontriviallyNormedField π•œ'] [NormedAlgebra π•œ π•œ'] [NormedSpace π•œ' F] [IsScalarTower π•œ π•œ' F] {c : E β†’ π•œ'} (hxs : UniqueDiffWithinAt π•œ s x) (hc : DifferentiableWithinAt π•œ c s x) (f : F) :
fderivWithin π•œ (fun (y : E) => c y β€’ f) s x = ContinuousLinearMap.smulRight (fderivWithin π•œ c s x) f
theorem fderiv_smul_const {π•œ : Type u_1} [NontriviallyNormedField π•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace π•œ E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace π•œ F] {x : E} {π•œ' : Type u_6} [NontriviallyNormedField π•œ'] [NormedAlgebra π•œ π•œ'] [NormedSpace π•œ' F] [IsScalarTower π•œ π•œ' F] {c : E β†’ π•œ'} (hc : DifferentiableAt π•œ c x) (f : F) :
fderiv π•œ (fun (y : E) => c y β€’ f) x = ContinuousLinearMap.smulRight (fderiv π•œ c x) f

Derivative of the product of two functions #

theorem HasStrictFDerivAt.mul' {π•œ : Type u_1} [NontriviallyNormedField π•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace π•œ E] {𝔸 : Type u_6} [NormedRing 𝔸] [NormedAlgebra π•œ 𝔸] {a : E β†’ 𝔸} {b : E β†’ 𝔸} {a' : E β†’L[π•œ] 𝔸} {b' : E β†’L[π•œ] 𝔸} {x : E} (ha : HasStrictFDerivAt a a' x) (hb : HasStrictFDerivAt b b' x) :
HasStrictFDerivAt (fun (y : E) => a y * b y) (a x β€’ b' + ContinuousLinearMap.smulRight a' (b x)) x
theorem HasStrictFDerivAt.mul {π•œ : Type u_1} [NontriviallyNormedField π•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace π•œ E] {x : E} {𝔸' : Type u_7} [NormedCommRing 𝔸'] [NormedAlgebra π•œ 𝔸'] {c : E β†’ 𝔸'} {d : E β†’ 𝔸'} {c' : E β†’L[π•œ] 𝔸'} {d' : E β†’L[π•œ] 𝔸'} (hc : HasStrictFDerivAt c c' x) (hd : HasStrictFDerivAt d d' x) :
HasStrictFDerivAt (fun (y : E) => c y * d y) (c x β€’ d' + d x β€’ c') x
theorem HasFDerivWithinAt.mul' {π•œ : Type u_1} [NontriviallyNormedField π•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace π•œ E] {x : E} {s : Set E} {𝔸 : Type u_6} [NormedRing 𝔸] [NormedAlgebra π•œ 𝔸] {a : E β†’ 𝔸} {b : E β†’ 𝔸} {a' : E β†’L[π•œ] 𝔸} {b' : E β†’L[π•œ] 𝔸} (ha : HasFDerivWithinAt a a' s x) (hb : HasFDerivWithinAt b b' s x) :
HasFDerivWithinAt (fun (y : E) => a y * b y) (a x β€’ b' + ContinuousLinearMap.smulRight a' (b x)) s x
theorem HasFDerivWithinAt.mul {π•œ : Type u_1} [NontriviallyNormedField π•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace π•œ E] {x : E} {s : Set E} {𝔸' : Type u_7} [NormedCommRing 𝔸'] [NormedAlgebra π•œ 𝔸'] {c : E β†’ 𝔸'} {d : E β†’ 𝔸'} {c' : E β†’L[π•œ] 𝔸'} {d' : E β†’L[π•œ] 𝔸'} (hc : HasFDerivWithinAt c c' s x) (hd : HasFDerivWithinAt d d' s x) :
HasFDerivWithinAt (fun (y : E) => c y * d y) (c x β€’ d' + d x β€’ c') s x
theorem HasFDerivAt.mul' {π•œ : Type u_1} [NontriviallyNormedField π•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace π•œ E] {x : E} {𝔸 : Type u_6} [NormedRing 𝔸] [NormedAlgebra π•œ 𝔸] {a : E β†’ 𝔸} {b : E β†’ 𝔸} {a' : E β†’L[π•œ] 𝔸} {b' : E β†’L[π•œ] 𝔸} (ha : HasFDerivAt a a' x) (hb : HasFDerivAt b b' x) :
HasFDerivAt (fun (y : E) => a y * b y) (a x β€’ b' + ContinuousLinearMap.smulRight a' (b x)) x
theorem HasFDerivAt.mul {π•œ : Type u_1} [NontriviallyNormedField π•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace π•œ E] {x : E} {𝔸' : Type u_7} [NormedCommRing 𝔸'] [NormedAlgebra π•œ 𝔸'] {c : E β†’ 𝔸'} {d : E β†’ 𝔸'} {c' : E β†’L[π•œ] 𝔸'} {d' : E β†’L[π•œ] 𝔸'} (hc : HasFDerivAt c c' x) (hd : HasFDerivAt d d' x) :
HasFDerivAt (fun (y : E) => c y * d y) (c x β€’ d' + d x β€’ c') x
theorem DifferentiableWithinAt.mul {π•œ : Type u_1} [NontriviallyNormedField π•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace π•œ E] {x : E} {s : Set E} {𝔸 : Type u_6} [NormedRing 𝔸] [NormedAlgebra π•œ 𝔸] {a : E β†’ 𝔸} {b : E β†’ 𝔸} (ha : DifferentiableWithinAt π•œ a s x) (hb : DifferentiableWithinAt π•œ b s x) :
DifferentiableWithinAt π•œ (fun (y : E) => a y * b y) s x
@[simp]
theorem DifferentiableAt.mul {π•œ : Type u_1} [NontriviallyNormedField π•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace π•œ E] {x : E} {𝔸 : Type u_6} [NormedRing 𝔸] [NormedAlgebra π•œ 𝔸] {a : E β†’ 𝔸} {b : E β†’ 𝔸} (ha : DifferentiableAt π•œ a x) (hb : DifferentiableAt π•œ b x) :
DifferentiableAt π•œ (fun (y : E) => a y * b y) x
theorem DifferentiableOn.mul {π•œ : Type u_1} [NontriviallyNormedField π•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace π•œ E] {s : Set E} {𝔸 : Type u_6} [NormedRing 𝔸] [NormedAlgebra π•œ 𝔸] {a : E β†’ 𝔸} {b : E β†’ 𝔸} (ha : DifferentiableOn π•œ a s) (hb : DifferentiableOn π•œ b s) :
DifferentiableOn π•œ (fun (y : E) => a y * b y) s
@[simp]
theorem Differentiable.mul {π•œ : Type u_1} [NontriviallyNormedField π•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace π•œ E] {𝔸 : Type u_6} [NormedRing 𝔸] [NormedAlgebra π•œ 𝔸] {a : E β†’ 𝔸} {b : E β†’ 𝔸} (ha : Differentiable π•œ a) (hb : Differentiable π•œ b) :
Differentiable π•œ fun (y : E) => a y * b y
theorem DifferentiableWithinAt.pow {π•œ : Type u_1} [NontriviallyNormedField π•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace π•œ E] {x : E} {s : Set E} {𝔸 : Type u_6} [NormedRing 𝔸] [NormedAlgebra π•œ 𝔸] {a : E β†’ 𝔸} (ha : DifferentiableWithinAt π•œ a s x) (n : β„•) :
DifferentiableWithinAt π•œ (fun (x : E) => a x ^ n) s x
@[simp]
theorem DifferentiableAt.pow {π•œ : Type u_1} [NontriviallyNormedField π•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace π•œ E] {x : E} {𝔸 : Type u_6} [NormedRing 𝔸] [NormedAlgebra π•œ 𝔸] {a : E β†’ 𝔸} (ha : DifferentiableAt π•œ a x) (n : β„•) :
DifferentiableAt π•œ (fun (x : E) => a x ^ n) x
theorem DifferentiableOn.pow {π•œ : Type u_1} [NontriviallyNormedField π•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace π•œ E] {s : Set E} {𝔸 : Type u_6} [NormedRing 𝔸] [NormedAlgebra π•œ 𝔸] {a : E β†’ 𝔸} (ha : DifferentiableOn π•œ a s) (n : β„•) :
DifferentiableOn π•œ (fun (x : E) => a x ^ n) s
@[simp]
theorem Differentiable.pow {π•œ : Type u_1} [NontriviallyNormedField π•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace π•œ E] {𝔸 : Type u_6} [NormedRing 𝔸] [NormedAlgebra π•œ 𝔸] {a : E β†’ 𝔸} (ha : Differentiable π•œ a) (n : β„•) :
Differentiable π•œ fun (x : E) => a x ^ n
theorem fderivWithin_mul' {π•œ : Type u_1} [NontriviallyNormedField π•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace π•œ E] {x : E} {s : Set E} {𝔸 : Type u_6} [NormedRing 𝔸] [NormedAlgebra π•œ 𝔸] {a : E β†’ 𝔸} {b : E β†’ 𝔸} (hxs : UniqueDiffWithinAt π•œ s x) (ha : DifferentiableWithinAt π•œ a s x) (hb : DifferentiableWithinAt π•œ b s x) :
fderivWithin π•œ (fun (y : E) => a y * b y) s x = a x β€’ fderivWithin π•œ b s x + ContinuousLinearMap.smulRight (fderivWithin π•œ a s x) (b x)
theorem fderivWithin_mul {π•œ : Type u_1} [NontriviallyNormedField π•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace π•œ E] {x : E} {s : Set E} {𝔸' : Type u_7} [NormedCommRing 𝔸'] [NormedAlgebra π•œ 𝔸'] {c : E β†’ 𝔸'} {d : E β†’ 𝔸'} (hxs : UniqueDiffWithinAt π•œ s x) (hc : DifferentiableWithinAt π•œ c s x) (hd : DifferentiableWithinAt π•œ d s x) :
fderivWithin π•œ (fun (y : E) => c y * d y) s x = c x β€’ fderivWithin π•œ d s x + d x β€’ fderivWithin π•œ c s x
theorem fderiv_mul' {π•œ : Type u_1} [NontriviallyNormedField π•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace π•œ E] {x : E} {𝔸 : Type u_6} [NormedRing 𝔸] [NormedAlgebra π•œ 𝔸] {a : E β†’ 𝔸} {b : E β†’ 𝔸} (ha : DifferentiableAt π•œ a x) (hb : DifferentiableAt π•œ b x) :
fderiv π•œ (fun (y : E) => a y * b y) x = a x β€’ fderiv π•œ b x + ContinuousLinearMap.smulRight (fderiv π•œ a x) (b x)
theorem fderiv_mul {π•œ : Type u_1} [NontriviallyNormedField π•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace π•œ E] {x : E} {𝔸' : Type u_7} [NormedCommRing 𝔸'] [NormedAlgebra π•œ 𝔸'] {c : E β†’ 𝔸'} {d : E β†’ 𝔸'} (hc : DifferentiableAt π•œ c x) (hd : DifferentiableAt π•œ d x) :
fderiv π•œ (fun (y : E) => c y * d y) x = c x β€’ fderiv π•œ d x + d x β€’ fderiv π•œ c x
theorem HasStrictFDerivAt.mul_const' {π•œ : Type u_1} [NontriviallyNormedField π•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace π•œ E] {x : E} {𝔸 : Type u_6} [NormedRing 𝔸] [NormedAlgebra π•œ 𝔸] {a : E β†’ 𝔸} {a' : E β†’L[π•œ] 𝔸} (ha : HasStrictFDerivAt a a' x) (b : 𝔸) :
HasStrictFDerivAt (fun (y : E) => a y * b) (ContinuousLinearMap.smulRight a' b) x
theorem HasStrictFDerivAt.mul_const {π•œ : Type u_1} [NontriviallyNormedField π•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace π•œ E] {x : E} {𝔸' : Type u_7} [NormedCommRing 𝔸'] [NormedAlgebra π•œ 𝔸'] {c : E β†’ 𝔸'} {c' : E β†’L[π•œ] 𝔸'} (hc : HasStrictFDerivAt c c' x) (d : 𝔸') :
HasStrictFDerivAt (fun (y : E) => c y * d) (d β€’ c') x
theorem HasFDerivWithinAt.mul_const' {π•œ : Type u_1} [NontriviallyNormedField π•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace π•œ E] {x : E} {s : Set E} {𝔸 : Type u_6} [NormedRing 𝔸] [NormedAlgebra π•œ 𝔸] {a : E β†’ 𝔸} {a' : E β†’L[π•œ] 𝔸} (ha : HasFDerivWithinAt a a' s x) (b : 𝔸) :
HasFDerivWithinAt (fun (y : E) => a y * b) (ContinuousLinearMap.smulRight a' b) s x
theorem HasFDerivWithinAt.mul_const {π•œ : Type u_1} [NontriviallyNormedField π•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace π•œ E] {x : E} {s : Set E} {𝔸' : Type u_7} [NormedCommRing 𝔸'] [NormedAlgebra π•œ 𝔸'] {c : E β†’ 𝔸'} {c' : E β†’L[π•œ] 𝔸'} (hc : HasFDerivWithinAt c c' s x) (d : 𝔸') :
HasFDerivWithinAt (fun (y : E) => c y * d) (d β€’ c') s x
theorem HasFDerivAt.mul_const' {π•œ : Type u_1} [NontriviallyNormedField π•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace π•œ E] {x : E} {𝔸 : Type u_6} [NormedRing 𝔸] [NormedAlgebra π•œ 𝔸] {a : E β†’ 𝔸} {a' : E β†’L[π•œ] 𝔸} (ha : HasFDerivAt a a' x) (b : 𝔸) :
HasFDerivAt (fun (y : E) => a y * b) (ContinuousLinearMap.smulRight a' b) x
theorem HasFDerivAt.mul_const {π•œ : Type u_1} [NontriviallyNormedField π•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace π•œ E] {x : E} {𝔸' : Type u_7} [NormedCommRing 𝔸'] [NormedAlgebra π•œ 𝔸'] {c : E β†’ 𝔸'} {c' : E β†’L[π•œ] 𝔸'} (hc : HasFDerivAt c c' x) (d : 𝔸') :
HasFDerivAt (fun (y : E) => c y * d) (d β€’ c') x
theorem DifferentiableWithinAt.mul_const {π•œ : Type u_1} [NontriviallyNormedField π•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace π•œ E] {x : E} {s : Set E} {𝔸 : Type u_6} [NormedRing 𝔸] [NormedAlgebra π•œ 𝔸] {a : E β†’ 𝔸} (ha : DifferentiableWithinAt π•œ a s x) (b : 𝔸) :
DifferentiableWithinAt π•œ (fun (y : E) => a y * b) s x
theorem DifferentiableAt.mul_const {π•œ : Type u_1} [NontriviallyNormedField π•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace π•œ E] {x : E} {𝔸 : Type u_6} [NormedRing 𝔸] [NormedAlgebra π•œ 𝔸] {a : E β†’ 𝔸} (ha : DifferentiableAt π•œ a x) (b : 𝔸) :
DifferentiableAt π•œ (fun (y : E) => a y * b) x
theorem DifferentiableOn.mul_const {π•œ : Type u_1} [NontriviallyNormedField π•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace π•œ E] {s : Set E} {𝔸 : Type u_6} [NormedRing 𝔸] [NormedAlgebra π•œ 𝔸] {a : E β†’ 𝔸} (ha : DifferentiableOn π•œ a s) (b : 𝔸) :
DifferentiableOn π•œ (fun (y : E) => a y * b) s
theorem Differentiable.mul_const {π•œ : Type u_1} [NontriviallyNormedField π•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace π•œ E] {𝔸 : Type u_6} [NormedRing 𝔸] [NormedAlgebra π•œ 𝔸] {a : E β†’ 𝔸} (ha : Differentiable π•œ a) (b : 𝔸) :
Differentiable π•œ fun (y : E) => a y * b
theorem fderivWithin_mul_const' {π•œ : Type u_1} [NontriviallyNormedField π•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace π•œ E] {x : E} {s : Set E} {𝔸 : Type u_6} [NormedRing 𝔸] [NormedAlgebra π•œ 𝔸] {a : E β†’ 𝔸} (hxs : UniqueDiffWithinAt π•œ s x) (ha : DifferentiableWithinAt π•œ a s x) (b : 𝔸) :
fderivWithin π•œ (fun (y : E) => a y * b) s x = ContinuousLinearMap.smulRight (fderivWithin π•œ a s x) b
theorem fderivWithin_mul_const {π•œ : Type u_1} [NontriviallyNormedField π•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace π•œ E] {x : E} {s : Set E} {𝔸' : Type u_7} [NormedCommRing 𝔸'] [NormedAlgebra π•œ 𝔸'] {c : E β†’ 𝔸'} (hxs : UniqueDiffWithinAt π•œ s x) (hc : DifferentiableWithinAt π•œ c s x) (d : 𝔸') :
fderivWithin π•œ (fun (y : E) => c y * d) s x = d β€’ fderivWithin π•œ c s x
theorem fderiv_mul_const' {π•œ : Type u_1} [NontriviallyNormedField π•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace π•œ E] {x : E} {𝔸 : Type u_6} [NormedRing 𝔸] [NormedAlgebra π•œ 𝔸] {a : E β†’ 𝔸} (ha : DifferentiableAt π•œ a x) (b : 𝔸) :
fderiv π•œ (fun (y : E) => a y * b) x = ContinuousLinearMap.smulRight (fderiv π•œ a x) b
theorem fderiv_mul_const {π•œ : Type u_1} [NontriviallyNormedField π•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace π•œ E] {x : E} {𝔸' : Type u_7} [NormedCommRing 𝔸'] [NormedAlgebra π•œ 𝔸'] {c : E β†’ 𝔸'} (hc : DifferentiableAt π•œ c x) (d : 𝔸') :
fderiv π•œ (fun (y : E) => c y * d) x = d β€’ fderiv π•œ c x
theorem HasStrictFDerivAt.const_mul {π•œ : Type u_1} [NontriviallyNormedField π•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace π•œ E] {x : E} {𝔸 : Type u_6} [NormedRing 𝔸] [NormedAlgebra π•œ 𝔸] {a : E β†’ 𝔸} {a' : E β†’L[π•œ] 𝔸} (ha : HasStrictFDerivAt a a' x) (b : 𝔸) :
HasStrictFDerivAt (fun (y : E) => b * a y) (b β€’ a') x
theorem HasFDerivWithinAt.const_mul {π•œ : Type u_1} [NontriviallyNormedField π•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace π•œ E] {x : E} {s : Set E} {𝔸 : Type u_6} [NormedRing 𝔸] [NormedAlgebra π•œ 𝔸] {a : E β†’ 𝔸} {a' : E β†’L[π•œ] 𝔸} (ha : HasFDerivWithinAt a a' s x) (b : 𝔸) :
HasFDerivWithinAt (fun (y : E) => b * a y) (b β€’ a') s x
theorem HasFDerivAt.const_mul {π•œ : Type u_1} [NontriviallyNormedField π•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace π•œ E] {x : E} {𝔸 : Type u_6} [NormedRing 𝔸] [NormedAlgebra π•œ 𝔸] {a : E β†’ 𝔸} {a' : E β†’L[π•œ] 𝔸} (ha : HasFDerivAt a a' x) (b : 𝔸) :
HasFDerivAt (fun (y : E) => b * a y) (b β€’ a') x
theorem DifferentiableWithinAt.const_mul {π•œ : Type u_1} [NontriviallyNormedField π•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace π•œ E] {x : E} {s : Set E} {𝔸 : Type u_6} [NormedRing 𝔸] [NormedAlgebra π•œ 𝔸] {a : E β†’ 𝔸} (ha : DifferentiableWithinAt π•œ a s x) (b : 𝔸) :
DifferentiableWithinAt π•œ (fun (y : E) => b * a y) s x
theorem DifferentiableAt.const_mul {π•œ : Type u_1} [NontriviallyNormedField π•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace π•œ E] {x : E} {𝔸 : Type u_6} [NormedRing 𝔸] [NormedAlgebra π•œ 𝔸] {a : E β†’ 𝔸} (ha : DifferentiableAt π•œ a x) (b : 𝔸) :
DifferentiableAt π•œ (fun (y : E) => b * a y) x
theorem DifferentiableOn.const_mul {π•œ : Type u_1} [NontriviallyNormedField π•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace π•œ E] {s : Set E} {𝔸 : Type u_6} [NormedRing 𝔸] [NormedAlgebra π•œ 𝔸] {a : E β†’ 𝔸} (ha : DifferentiableOn π•œ a s) (b : 𝔸) :
DifferentiableOn π•œ (fun (y : E) => b * a y) s
theorem Differentiable.const_mul {π•œ : Type u_1} [NontriviallyNormedField π•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace π•œ E] {𝔸 : Type u_6} [NormedRing 𝔸] [NormedAlgebra π•œ 𝔸] {a : E β†’ 𝔸} (ha : Differentiable π•œ a) (b : 𝔸) :
Differentiable π•œ fun (y : E) => b * a y
theorem fderivWithin_const_mul {π•œ : Type u_1} [NontriviallyNormedField π•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace π•œ E] {x : E} {s : Set E} {𝔸 : Type u_6} [NormedRing 𝔸] [NormedAlgebra π•œ 𝔸] {a : E β†’ 𝔸} (hxs : UniqueDiffWithinAt π•œ s x) (ha : DifferentiableWithinAt π•œ a s x) (b : 𝔸) :
fderivWithin π•œ (fun (y : E) => b * a y) s x = b β€’ fderivWithin π•œ a s x
theorem fderiv_const_mul {π•œ : Type u_1} [NontriviallyNormedField π•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace π•œ E] {x : E} {𝔸 : Type u_6} [NormedRing 𝔸] [NormedAlgebra π•œ 𝔸] {a : E β†’ 𝔸} (ha : DifferentiableAt π•œ a x) (b : 𝔸) :
fderiv π•œ (fun (y : E) => b * a y) x = b β€’ fderiv π•œ a x

Derivative of a finite product of functions #

theorem hasStrictFDerivAt_list_prod' {π•œ : Type u_1} [NontriviallyNormedField π•œ] {ΞΉ : Type u_6} {𝔸 : Type u_7} [NormedRing 𝔸] [NormedAlgebra π•œ 𝔸] [Fintype ΞΉ] {l : List ΞΉ} {x : ΞΉ β†’ 𝔸} :
HasStrictFDerivAt (fun (x : ΞΉ β†’ 𝔸) => List.prod (List.map x l)) (Finset.sum Finset.univ fun (i : Fin (List.length l)) => List.prod (List.map x (List.take (↑i) l)) β€’ ContinuousLinearMap.smulRight (ContinuousLinearMap.proj (List.get l i)) (List.prod (List.map x (List.drop (Nat.succ ↑i) l)))) x
theorem hasStrictFDerivAt_list_prod_finRange' {π•œ : Type u_1} [NontriviallyNormedField π•œ] {𝔸 : Type u_7} [NormedRing 𝔸] [NormedAlgebra π•œ 𝔸] {n : β„•} {x : Fin n β†’ 𝔸} :
theorem hasStrictFDerivAt_list_prod_attach' {π•œ : Type u_1} [NontriviallyNormedField π•œ] {ΞΉ : Type u_6} {𝔸 : Type u_7} [NormedRing 𝔸] [NormedAlgebra π•œ 𝔸] [DecidableEq ΞΉ] {l : List ΞΉ} {x : { i : ΞΉ // i ∈ l } β†’ 𝔸} :
HasStrictFDerivAt (fun (x : { x : ΞΉ // x ∈ l } β†’ 𝔸) => List.prod (List.map x (List.attach l))) (Finset.sum Finset.univ fun (i : Fin (List.length l)) => List.prod (List.map x (List.take (↑i) (List.attach l))) β€’ ContinuousLinearMap.smulRight (ContinuousLinearMap.proj (List.get (List.attach l) (Fin.cast β‹― i))) (List.prod (List.map x (List.drop (Nat.succ ↑i) (List.attach l))))) x
theorem hasFDerivAt_list_prod' {π•œ : Type u_1} [NontriviallyNormedField π•œ] {ΞΉ : Type u_6} {𝔸' : Type u_8} [NormedCommRing 𝔸'] [NormedAlgebra π•œ 𝔸'] [Fintype ΞΉ] {l : List ΞΉ} {x : ΞΉ β†’ 𝔸'} :
HasFDerivAt (fun (x : ΞΉ β†’ 𝔸') => List.prod (List.map x l)) (Finset.sum Finset.univ fun (i : Fin (List.length l)) => List.prod (List.map x (List.take (↑i) l)) β€’ ContinuousLinearMap.smulRight (ContinuousLinearMap.proj (List.get l i)) (List.prod (List.map x (List.drop (Nat.succ ↑i) l)))) x
theorem hasFDerivAt_list_prod_finRange' {π•œ : Type u_1} [NontriviallyNormedField π•œ] {𝔸 : Type u_7} [NormedRing 𝔸] [NormedAlgebra π•œ 𝔸] {n : β„•} {x : Fin n β†’ 𝔸} :
HasFDerivAt (fun (x : Fin n β†’ 𝔸) => List.prod (List.map x (List.finRange n))) (Finset.sum Finset.univ fun (i : Fin n) => List.prod (List.map x (List.take (↑i) (List.finRange n))) β€’ ContinuousLinearMap.smulRight (ContinuousLinearMap.proj i) (List.prod (List.map x (List.drop (Nat.succ ↑i) (List.finRange n))))) x
theorem hasFDerivAt_list_prod_attach' {π•œ : Type u_1} [NontriviallyNormedField π•œ] {ΞΉ : Type u_6} {𝔸 : Type u_7} [NormedRing 𝔸] [NormedAlgebra π•œ 𝔸] [DecidableEq ΞΉ] {l : List ΞΉ} {x : { i : ΞΉ // i ∈ l } β†’ 𝔸} :
HasFDerivAt (fun (x : { x : ΞΉ // x ∈ l } β†’ 𝔸) => List.prod (List.map x (List.attach l))) (Finset.sum Finset.univ fun (i : Fin (List.length l)) => List.prod (List.map x (List.take (↑i) (List.attach l))) β€’ ContinuousLinearMap.smulRight (ContinuousLinearMap.proj (List.get (List.attach l) (Fin.cast β‹― i))) (List.prod (List.map x (List.drop (Nat.succ ↑i) (List.attach l))))) x
theorem hasStrictFDerivAt_list_prod {π•œ : Type u_1} [NontriviallyNormedField π•œ] {ΞΉ : Type u_6} {𝔸' : Type u_8} [NormedCommRing 𝔸'] [NormedAlgebra π•œ 𝔸'] [DecidableEq ΞΉ] [Fintype ΞΉ] {l : List ΞΉ} {x : ΞΉ β†’ 𝔸'} :
HasStrictFDerivAt (fun (x : ΞΉ β†’ 𝔸') => List.prod (List.map x l)) (List.sum (List.map (fun (i : ΞΉ) => List.prod (List.map x (List.erase l i)) β€’ ContinuousLinearMap.proj i) l)) x

Auxiliary lemma for hasStrictFDerivAt_multiset_prod.

For NormedCommRing 𝔸', can rewrite as Multiset using Multiset.prod_coe.

theorem hasStrictFDerivAt_multiset_prod {π•œ : Type u_1} [NontriviallyNormedField π•œ] {ΞΉ : Type u_6} {𝔸' : Type u_8} [NormedCommRing 𝔸'] [NormedAlgebra π•œ 𝔸'] [DecidableEq ΞΉ] [Fintype ΞΉ] {u : Multiset ΞΉ} {x : ΞΉ β†’ 𝔸'} :
HasStrictFDerivAt (fun (x : ΞΉ β†’ 𝔸') => Multiset.prod (Multiset.map x u)) (Multiset.sum (Multiset.map (fun (i : ΞΉ) => Multiset.prod (Multiset.map x (Multiset.erase u i)) β€’ ContinuousLinearMap.proj i) u)) x
theorem hasFDerivAt_multiset_prod {π•œ : Type u_1} [NontriviallyNormedField π•œ] {ΞΉ : Type u_6} {𝔸' : Type u_8} [NormedCommRing 𝔸'] [NormedAlgebra π•œ 𝔸'] [DecidableEq ΞΉ] [Fintype ΞΉ] {u : Multiset ΞΉ} {x : ΞΉ β†’ 𝔸'} :
HasFDerivAt (fun (x : ΞΉ β†’ 𝔸') => Multiset.prod (Multiset.map x u)) (Multiset.sum (Multiset.map (fun (i : ΞΉ) => Multiset.prod (Multiset.map x (Multiset.erase u i)) β€’ ContinuousLinearMap.proj i) u)) x
theorem hasStrictFDerivAt_finset_prod {π•œ : Type u_1} [NontriviallyNormedField π•œ] {ΞΉ : Type u_6} {𝔸' : Type u_8} [NormedCommRing 𝔸'] [NormedAlgebra π•œ 𝔸'] {u : Finset ΞΉ} [DecidableEq ΞΉ] [Fintype ΞΉ] {x : ΞΉ β†’ 𝔸'} :
HasStrictFDerivAt (fun (x : ΞΉ β†’ 𝔸') => Finset.prod u fun (i : ΞΉ) => x i) (Finset.sum u fun (i : ΞΉ) => (Finset.prod (Finset.erase u i) fun (j : ΞΉ) => x j) β€’ ContinuousLinearMap.proj i) x
theorem hasFDerivAt_finset_prod {π•œ : Type u_1} [NontriviallyNormedField π•œ] {ΞΉ : Type u_6} {𝔸' : Type u_8} [NormedCommRing 𝔸'] [NormedAlgebra π•œ 𝔸'] {u : Finset ΞΉ} [DecidableEq ΞΉ] [Fintype ΞΉ] {x : ΞΉ β†’ 𝔸'} :
HasFDerivAt (fun (x : ΞΉ β†’ 𝔸') => Finset.prod u fun (i : ΞΉ) => x i) (Finset.sum u fun (i : ΞΉ) => (Finset.prod (Finset.erase u i) fun (j : ΞΉ) => x j) β€’ ContinuousLinearMap.proj i) x
theorem HasStrictFDerivAt.list_prod' {π•œ : Type u_1} [NontriviallyNormedField π•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace π•œ E] {ΞΉ : Type u_6} {𝔸 : Type u_7} [NormedRing 𝔸] [NormedAlgebra π•œ 𝔸] {f : ΞΉ β†’ E β†’ 𝔸} {f' : ΞΉ β†’ E β†’L[π•œ] 𝔸} {l : List ΞΉ} {x : E} (h : βˆ€ i ∈ l, HasStrictFDerivAt (fun (x : E) => f i x) (f' i) x) :
HasStrictFDerivAt (fun (x : E) => List.prod (List.map (fun (x_1 : ΞΉ) => f x_1 x) l)) (Finset.sum Finset.univ fun (i : Fin (List.length l)) => List.prod (List.map (fun (x_1 : ΞΉ) => f x_1 x) (List.take (↑i) l)) β€’ ContinuousLinearMap.smulRight (f' (List.get l i)) (List.prod (List.map (fun (x_1 : ΞΉ) => f x_1 x) (List.drop (Nat.succ ↑i) l)))) x
theorem HasFDerivAt.list_prod' {π•œ : Type u_1} [NontriviallyNormedField π•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace π•œ E] {ΞΉ : Type u_6} {𝔸 : Type u_7} [NormedRing 𝔸] [NormedAlgebra π•œ 𝔸] {f : ΞΉ β†’ E β†’ 𝔸} {f' : ΞΉ β†’ E β†’L[π•œ] 𝔸} {l : List ΞΉ} {x : E} (h : βˆ€ i ∈ l, HasFDerivAt (fun (x : E) => f i x) (f' i) x) :
HasFDerivAt (fun (x : E) => List.prod (List.map (fun (x_1 : ΞΉ) => f x_1 x) l)) (Finset.sum Finset.univ fun (i : Fin (List.length l)) => List.prod (List.map (fun (x_1 : ΞΉ) => f x_1 x) (List.take (↑i) l)) β€’ ContinuousLinearMap.smulRight (f' (List.get l i)) (List.prod (List.map (fun (x_1 : ΞΉ) => f x_1 x) (List.drop (Nat.succ ↑i) l)))) x

Unlike HasFDerivAt.finset_prod, supports non-commutative multiply and duplicate elements.

theorem HasFDerivWithinAt.list_prod' {π•œ : Type u_1} [NontriviallyNormedField π•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace π•œ E] {s : Set E} {ΞΉ : Type u_6} {𝔸 : Type u_7} [NormedRing 𝔸] [NormedAlgebra π•œ 𝔸] {f : ΞΉ β†’ E β†’ 𝔸} {f' : ΞΉ β†’ E β†’L[π•œ] 𝔸} {l : List ΞΉ} {x : E} (h : βˆ€ i ∈ l, HasFDerivWithinAt (fun (x : E) => f i x) (f' i) s x) :
HasFDerivWithinAt (fun (x : E) => List.prod (List.map (fun (x_1 : ΞΉ) => f x_1 x) l)) (Finset.sum Finset.univ fun (i : Fin (List.length l)) => List.prod (List.map (fun (x_1 : ΞΉ) => f x_1 x) (List.take (↑i) l)) β€’ ContinuousLinearMap.smulRight (f' (List.get l i)) (List.prod (List.map (fun (x_1 : ΞΉ) => f x_1 x) (List.drop (Nat.succ ↑i) l)))) s x
theorem fderiv_list_prod' {π•œ : Type u_1} [NontriviallyNormedField π•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace π•œ E] {ΞΉ : Type u_6} {𝔸 : Type u_7} [NormedRing 𝔸] [NormedAlgebra π•œ 𝔸] {f : ΞΉ β†’ E β†’ 𝔸} {l : List ΞΉ} {x : E} (h : βˆ€ i ∈ l, DifferentiableAt π•œ (fun (x : E) => f i x) x) :
fderiv π•œ (fun (x : E) => List.prod (List.map (fun (x_1 : ΞΉ) => f x_1 x) l)) x = Finset.sum Finset.univ fun (i : Fin (List.length l)) => List.prod (List.map (fun (x_1 : ΞΉ) => f x_1 x) (List.take (↑i) l)) β€’ ContinuousLinearMap.smulRight (fderiv π•œ (fun (x : E) => f (List.get l i) x) x) (List.prod (List.map (fun (x_1 : ΞΉ) => f x_1 x) (List.drop (Nat.succ ↑i) l)))
theorem fderivWithin_list_prod' {π•œ : Type u_1} [NontriviallyNormedField π•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace π•œ E] {s : Set E} {ΞΉ : Type u_6} {𝔸 : Type u_7} [NormedRing 𝔸] [NormedAlgebra π•œ 𝔸] {f : ΞΉ β†’ E β†’ 𝔸} {l : List ΞΉ} {x : E} (hxs : UniqueDiffWithinAt π•œ s x) (h : βˆ€ i ∈ l, DifferentiableWithinAt π•œ (fun (x : E) => f i x) s x) :
fderivWithin π•œ (fun (x : E) => List.prod (List.map (fun (x_1 : ΞΉ) => f x_1 x) l)) s x = Finset.sum Finset.univ fun (i : Fin (List.length l)) => List.prod (List.map (fun (x_1 : ΞΉ) => f x_1 x) (List.take (↑i) l)) β€’ ContinuousLinearMap.smulRight (fderivWithin π•œ (fun (x : E) => f (List.get l i) x) s x) (List.prod (List.map (fun (x_1 : ΞΉ) => f x_1 x) (List.drop (Nat.succ ↑i) l)))
theorem HasStrictFDerivAt.multiset_prod {π•œ : Type u_1} [NontriviallyNormedField π•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace π•œ E] {ΞΉ : Type u_6} {𝔸' : Type u_8} [NormedCommRing 𝔸'] [NormedAlgebra π•œ 𝔸'] {g : ΞΉ β†’ E β†’ 𝔸'} {g' : ΞΉ β†’ E β†’L[π•œ] 𝔸'} [DecidableEq ΞΉ] {u : Multiset ΞΉ} {x : E} (h : βˆ€ i ∈ u, HasStrictFDerivAt (fun (x : E) => g i x) (g' i) x) :
HasStrictFDerivAt (fun (x : E) => Multiset.prod (Multiset.map (fun (x_1 : ΞΉ) => g x_1 x) u)) (Multiset.sum (Multiset.map (fun (i : ΞΉ) => Multiset.prod (Multiset.map (fun (x_1 : ΞΉ) => g x_1 x) (Multiset.erase u i)) β€’ g' i) u)) x
theorem HasFDerivAt.multiset_prod {π•œ : Type u_1} [NontriviallyNormedField π•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace π•œ E] {ΞΉ : Type u_6} {𝔸' : Type u_8} [NormedCommRing 𝔸'] [NormedAlgebra π•œ 𝔸'] {g : ΞΉ β†’ E β†’ 𝔸'} {g' : ΞΉ β†’ E β†’L[π•œ] 𝔸'} [DecidableEq ΞΉ] {u : Multiset ΞΉ} {x : E} (h : βˆ€ i ∈ u, HasFDerivAt (fun (x : E) => g i x) (g' i) x) :
HasFDerivAt (fun (x : E) => Multiset.prod (Multiset.map (fun (x_1 : ΞΉ) => g x_1 x) u)) (Multiset.sum (Multiset.map (fun (i : ΞΉ) => Multiset.prod (Multiset.map (fun (x_1 : ΞΉ) => g x_1 x) (Multiset.erase u i)) β€’ g' i) u)) x

Unlike HasFDerivAt.finset_prod, supports duplicate elements.

theorem HasFDerivWithinAt.multiset_prod {π•œ : Type u_1} [NontriviallyNormedField π•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace π•œ E] {s : Set E} {ΞΉ : Type u_6} {𝔸' : Type u_8} [NormedCommRing 𝔸'] [NormedAlgebra π•œ 𝔸'] {g : ΞΉ β†’ E β†’ 𝔸'} {g' : ΞΉ β†’ E β†’L[π•œ] 𝔸'} [DecidableEq ΞΉ] {u : Multiset ΞΉ} {x : E} (h : βˆ€ i ∈ u, HasFDerivWithinAt (fun (x : E) => g i x) (g' i) s x) :
HasFDerivWithinAt (fun (x : E) => Multiset.prod (Multiset.map (fun (x_1 : ΞΉ) => g x_1 x) u)) (Multiset.sum (Multiset.map (fun (i : ΞΉ) => Multiset.prod (Multiset.map (fun (x_1 : ΞΉ) => g x_1 x) (Multiset.erase u i)) β€’ g' i) u)) s x
theorem fderiv_multiset_prod {π•œ : Type u_1} [NontriviallyNormedField π•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace π•œ E] {ΞΉ : Type u_6} {𝔸' : Type u_8} [NormedCommRing 𝔸'] [NormedAlgebra π•œ 𝔸'] {g : ΞΉ β†’ E β†’ 𝔸'} [DecidableEq ΞΉ] {u : Multiset ΞΉ} {x : E} (h : βˆ€ i ∈ u, DifferentiableAt π•œ (fun (x : E) => g i x) x) :
fderiv π•œ (fun (x : E) => Multiset.prod (Multiset.map (fun (x_1 : ΞΉ) => g x_1 x) u)) x = Multiset.sum (Multiset.map (fun (i : ΞΉ) => Multiset.prod (Multiset.map (fun (x_1 : ΞΉ) => g x_1 x) (Multiset.erase u i)) β€’ fderiv π•œ (g i) x) u)
theorem fderivWithin_multiset_prod {π•œ : Type u_1} [NontriviallyNormedField π•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace π•œ E] {s : Set E} {ΞΉ : Type u_6} {𝔸' : Type u_8} [NormedCommRing 𝔸'] [NormedAlgebra π•œ 𝔸'] {g : ΞΉ β†’ E β†’ 𝔸'} [DecidableEq ΞΉ] {u : Multiset ΞΉ} {x : E} (hxs : UniqueDiffWithinAt π•œ s x) (h : βˆ€ i ∈ u, DifferentiableWithinAt π•œ (fun (x : E) => g i x) s x) :
fderivWithin π•œ (fun (x : E) => Multiset.prod (Multiset.map (fun (x_1 : ΞΉ) => g x_1 x) u)) s x = Multiset.sum (Multiset.map (fun (i : ΞΉ) => Multiset.prod (Multiset.map (fun (x_1 : ΞΉ) => g x_1 x) (Multiset.erase u i)) β€’ fderivWithin π•œ (g i) s x) u)
theorem HasStrictFDerivAt.finset_prod {π•œ : Type u_1} [NontriviallyNormedField π•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace π•œ E] {ΞΉ : Type u_6} {𝔸' : Type u_8} [NormedCommRing 𝔸'] [NormedAlgebra π•œ 𝔸'] {u : Finset ΞΉ} {g : ΞΉ β†’ E β†’ 𝔸'} {g' : ΞΉ β†’ E β†’L[π•œ] 𝔸'} [DecidableEq ΞΉ] {x : E} (hg : βˆ€ i ∈ u, HasStrictFDerivAt (g i) (g' i) x) :
HasStrictFDerivAt (fun (x : E) => Finset.prod u fun (i : ΞΉ) => g i x) (Finset.sum u fun (i : ΞΉ) => (Finset.prod (Finset.erase u i) fun (j : ΞΉ) => g j x) β€’ g' i) x
theorem HasFDerivAt.finset_prod {π•œ : Type u_1} [NontriviallyNormedField π•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace π•œ E] {ΞΉ : Type u_6} {𝔸' : Type u_8} [NormedCommRing 𝔸'] [NormedAlgebra π•œ 𝔸'] {u : Finset ΞΉ} {g : ΞΉ β†’ E β†’ 𝔸'} {g' : ΞΉ β†’ E β†’L[π•œ] 𝔸'} [DecidableEq ΞΉ] {x : E} (hg : βˆ€ i ∈ u, HasFDerivAt (g i) (g' i) x) :
HasFDerivAt (fun (x : E) => Finset.prod u fun (i : ΞΉ) => g i x) (Finset.sum u fun (i : ΞΉ) => (Finset.prod (Finset.erase u i) fun (j : ΞΉ) => g j x) β€’ g' i) x
theorem HasFDerivWithinAt.finset_prod {π•œ : Type u_1} [NontriviallyNormedField π•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace π•œ E] {s : Set E} {ΞΉ : Type u_6} {𝔸' : Type u_8} [NormedCommRing 𝔸'] [NormedAlgebra π•œ 𝔸'] {u : Finset ΞΉ} {g : ΞΉ β†’ E β†’ 𝔸'} {g' : ΞΉ β†’ E β†’L[π•œ] 𝔸'} [DecidableEq ΞΉ] {x : E} (hg : βˆ€ i ∈ u, HasFDerivWithinAt (g i) (g' i) s x) :
HasFDerivWithinAt (fun (x : E) => Finset.prod u fun (i : ΞΉ) => g i x) (Finset.sum u fun (i : ΞΉ) => (Finset.prod (Finset.erase u i) fun (j : ΞΉ) => g j x) β€’ g' i) s x
theorem fderiv_finset_prod {π•œ : Type u_1} [NontriviallyNormedField π•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace π•œ E] {ΞΉ : Type u_6} {𝔸' : Type u_8} [NormedCommRing 𝔸'] [NormedAlgebra π•œ 𝔸'] {u : Finset ΞΉ} {g : ΞΉ β†’ E β†’ 𝔸'} [DecidableEq ΞΉ] {x : E} (hg : βˆ€ i ∈ u, DifferentiableAt π•œ (g i) x) :
fderiv π•œ (fun (x : E) => Finset.prod u fun (i : ΞΉ) => g i x) x = Finset.sum u fun (i : ΞΉ) => (Finset.prod (Finset.erase u i) fun (j : ΞΉ) => g j x) β€’ fderiv π•œ (g i) x
theorem fderivWithin_finset_prod {π•œ : Type u_1} [NontriviallyNormedField π•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace π•œ E] {s : Set E} {ΞΉ : Type u_6} {𝔸' : Type u_8} [NormedCommRing 𝔸'] [NormedAlgebra π•œ 𝔸'] {u : Finset ΞΉ} {g : ΞΉ β†’ E β†’ 𝔸'} [DecidableEq ΞΉ] {x : E} (hxs : UniqueDiffWithinAt π•œ s x) (hg : βˆ€ i ∈ u, DifferentiableWithinAt π•œ (g i) s x) :
fderivWithin π•œ (fun (x : E) => Finset.prod u fun (i : ΞΉ) => g i x) s x = Finset.sum u fun (i : ΞΉ) => (Finset.prod (Finset.erase u i) fun (j : ΞΉ) => g j x) β€’ fderivWithin π•œ (g i) s x
theorem hasFDerivAt_ring_inverse {π•œ : Type u_1} [NontriviallyNormedField π•œ] {R : Type u_6} [NormedRing R] [NormedAlgebra π•œ R] [CompleteSpace R] (x : RΛ£) :
HasFDerivAt Ring.inverse (-((ContinuousLinearMap.mulLeftRight π•œ R) ↑x⁻¹) ↑x⁻¹) ↑x

At an invertible element x of a normed algebra R, the FrΓ©chet derivative of the inversion operation is the linear map fun t ↦ - x⁻¹ * t * x⁻¹.

TODO: prove that Ring.inverse is analytic and use it to prove a HasStrictFDerivAt lemma. TODO (low prio): prove a version without assumption [CompleteSpace R] but within the set of units.

theorem differentiableAt_inverse {π•œ : Type u_1} [NontriviallyNormedField π•œ] {R : Type u_6} [NormedRing R] [NormedAlgebra π•œ R] [CompleteSpace R] {x : R} (hx : IsUnit x) :
DifferentiableAt π•œ Ring.inverse x
theorem differentiableWithinAt_inverse {π•œ : Type u_1} [NontriviallyNormedField π•œ] {R : Type u_6} [NormedRing R] [NormedAlgebra π•œ R] [CompleteSpace R] {x : R} (hx : IsUnit x) (s : Set R) :
DifferentiableWithinAt π•œ Ring.inverse s x
theorem differentiableOn_inverse {π•œ : Type u_1} [NontriviallyNormedField π•œ] {R : Type u_6} [NormedRing R] [NormedAlgebra π•œ R] [CompleteSpace R] :
DifferentiableOn π•œ Ring.inverse {x : R | IsUnit x}
theorem fderiv_inverse {π•œ : Type u_1} [NontriviallyNormedField π•œ] {R : Type u_6} [NormedRing R] [NormedAlgebra π•œ R] [CompleteSpace R] (x : RΛ£) :
fderiv π•œ Ring.inverse ↑x = -((ContinuousLinearMap.mulLeftRight π•œ R) ↑x⁻¹) ↑x⁻¹
theorem DifferentiableWithinAt.inverse {π•œ : Type u_1} [NontriviallyNormedField π•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace π•œ E] {R : Type u_6} [NormedRing R] [NormedAlgebra π•œ R] [CompleteSpace R] {h : E β†’ R} {z : E} {S : Set E} (hf : DifferentiableWithinAt π•œ h S z) (hz : IsUnit (h z)) :
DifferentiableWithinAt π•œ (fun (x : E) => Ring.inverse (h x)) S z
@[simp]
theorem DifferentiableAt.inverse {π•œ : Type u_1} [NontriviallyNormedField π•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace π•œ E] {R : Type u_6} [NormedRing R] [NormedAlgebra π•œ R] [CompleteSpace R] {h : E β†’ R} {z : E} (hf : DifferentiableAt π•œ h z) (hz : IsUnit (h z)) :
DifferentiableAt π•œ (fun (x : E) => Ring.inverse (h x)) z
theorem DifferentiableOn.inverse {π•œ : Type u_1} [NontriviallyNormedField π•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace π•œ E] {R : Type u_6} [NormedRing R] [NormedAlgebra π•œ R] [CompleteSpace R] {h : E β†’ R} {S : Set E} (hf : DifferentiableOn π•œ h S) (hz : βˆ€ x ∈ S, IsUnit (h x)) :
DifferentiableOn π•œ (fun (x : E) => Ring.inverse (h x)) S
@[simp]
theorem Differentiable.inverse {π•œ : Type u_1} [NontriviallyNormedField π•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace π•œ E] {R : Type u_6} [NormedRing R] [NormedAlgebra π•œ R] [CompleteSpace R] {h : E β†’ R} (hf : Differentiable π•œ h) (hz : βˆ€ (x : E), IsUnit (h x)) :
Differentiable π•œ fun (x : E) => Ring.inverse (h x)

Derivative of the inverse in a division ring #

Note these lemmas are primed as they need CompleteSpace R, whereas the other lemmas in Mathlib/Analysis/Calculus/Deriv/Inv.lean do not, but instead need NontriviallyNormedField R.

theorem hasFDerivAt_inv' {π•œ : Type u_1} [NontriviallyNormedField π•œ] {R : Type u_6} [NormedDivisionRing R] [NormedAlgebra π•œ R] [CompleteSpace R] {x : R} (hx : x β‰  0) :

At an invertible element x of a normed division algebra R, the FrΓ©chet derivative of the inversion operation is the linear map fun t ↦ - x⁻¹ * t * x⁻¹.

theorem differentiableAt_inv' {π•œ : Type u_1} [NontriviallyNormedField π•œ] {R : Type u_6} [NormedDivisionRing R] [NormedAlgebra π•œ R] [CompleteSpace R] {x : R} (hx : x β‰  0) :
DifferentiableAt π•œ Inv.inv x
theorem differentiableWithinAt_inv' {π•œ : Type u_1} [NontriviallyNormedField π•œ] {R : Type u_6} [NormedDivisionRing R] [NormedAlgebra π•œ R] [CompleteSpace R] {x : R} (hx : x β‰  0) (s : Set R) :
DifferentiableWithinAt π•œ (fun (x : R) => x⁻¹) s x
theorem differentiableOn_inv' {π•œ : Type u_1} [NontriviallyNormedField π•œ] {R : Type u_6} [NormedDivisionRing R] [NormedAlgebra π•œ R] [CompleteSpace R] :
DifferentiableOn π•œ (fun (x : R) => x⁻¹) {x : R | x β‰  0}
theorem fderiv_inv' {π•œ : Type u_1} [NontriviallyNormedField π•œ] {R : Type u_6} [NormedDivisionRing R] [NormedAlgebra π•œ R] [CompleteSpace R] {x : R} (hx : x β‰  0) :
fderiv π•œ Inv.inv x = -((ContinuousLinearMap.mulLeftRight π•œ R) x⁻¹) x⁻¹

Non-commutative version of fderiv_inv

theorem fderivWithin_inv' {π•œ : Type u_1} [NontriviallyNormedField π•œ] {R : Type u_6} [NormedDivisionRing R] [NormedAlgebra π•œ R] [CompleteSpace R] {s : Set R} {x : R} (hx : x β‰  0) (hxs : UniqueDiffWithinAt π•œ s x) :
fderivWithin π•œ (fun (x : R) => x⁻¹) s x = -((ContinuousLinearMap.mulLeftRight π•œ R) x⁻¹) x⁻¹

Non-commutative version of fderivWithin_inv

theorem DifferentiableWithinAt.inv' {π•œ : Type u_1} [NontriviallyNormedField π•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace π•œ E] {R : Type u_6} [NormedDivisionRing R] [NormedAlgebra π•œ R] [CompleteSpace R] {h : E β†’ R} {z : E} {S : Set E} (hf : DifferentiableWithinAt π•œ h S z) (hz : h z β‰  0) :
DifferentiableWithinAt π•œ (fun (x : E) => (h x)⁻¹) S z
@[simp]
theorem DifferentiableAt.inv' {π•œ : Type u_1} [NontriviallyNormedField π•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace π•œ E] {R : Type u_6} [NormedDivisionRing R] [NormedAlgebra π•œ R] [CompleteSpace R] {h : E β†’ R} {z : E} (hf : DifferentiableAt π•œ h z) (hz : h z β‰  0) :
DifferentiableAt π•œ (fun (x : E) => (h x)⁻¹) z
theorem DifferentiableOn.inv' {π•œ : Type u_1} [NontriviallyNormedField π•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace π•œ E] {R : Type u_6} [NormedDivisionRing R] [NormedAlgebra π•œ R] [CompleteSpace R] {h : E β†’ R} {S : Set E} (hf : DifferentiableOn π•œ h S) (hz : βˆ€ x ∈ S, h x β‰  0) :
DifferentiableOn π•œ (fun (x : E) => (h x)⁻¹) S
@[simp]
theorem Differentiable.inv' {π•œ : Type u_1} [NontriviallyNormedField π•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace π•œ E] {R : Type u_6} [NormedDivisionRing R] [NormedAlgebra π•œ R] [CompleteSpace R] {h : E β†’ R} (hf : Differentiable π•œ h) (hz : βˆ€ (x : E), h x β‰  0) :
Differentiable π•œ fun (x : E) => (h x)⁻¹