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_5} [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) :
HasStrictFDerivAt (fun (y : E) => (c y).comp (d y)) (((ContinuousLinearMap.compL π•œ F G H) (c x)).comp d' + ((ContinuousLinearMap.compL π•œ F G H).flip (d x)).comp c') 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_5} [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) :
HasFDerivWithinAt (fun (y : E) => (c y).comp (d y)) (((ContinuousLinearMap.compL π•œ F G H) (c x)).comp d' + ((ContinuousLinearMap.compL π•œ F G H).flip (d x)).comp c') 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_5} [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) :
HasFDerivAt (fun (y : E) => (c y).comp (d y)) (((ContinuousLinearMap.compL π•œ F G H) (c x)).comp d' + ((ContinuousLinearMap.compL π•œ F G H).flip (d x)).comp c') 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_5} [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) => (c y).comp (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_5} [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) => (c y).comp (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_5} [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) => (c y).comp (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_5} [NormedAddCommGroup H] [NormedSpace π•œ H] {c : E β†’ G β†’L[π•œ] H} {d : E β†’ F β†’L[π•œ] G} (hc : Differentiable π•œ c) (hd : Differentiable π•œ d) :
Differentiable π•œ fun (y : E) => (c y).comp (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_5} [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) => (c y).comp (d y)) s x = ((ContinuousLinearMap.compL π•œ F G H) (c x)).comp (fderivWithin π•œ d s x) + ((ContinuousLinearMap.compL π•œ F G H).flip (d x)).comp (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_5} [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) => (c y).comp (d y)) x = ((ContinuousLinearMap.compL π•œ F G H) (c x)).comp (fderiv π•œ d x) + ((ContinuousLinearMap.compL π•œ F G H).flip (d x)).comp (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_5} [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)) ((c x).comp u' + c'.flip (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_5} [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)) ((c x).comp u' + c'.flip (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_5} [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)) ((c x).comp u' + c'.flip (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_5} [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_5} [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_5} [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_5} [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_5} [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 = (c x).comp (fderivWithin π•œ u s x) + (fderivWithin π•œ c s x).flip (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_5} [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 = (c x).comp (fderiv π•œ u x) + (fderiv π•œ c x).flip (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_5} [Fintype ΞΉ] {M : ΞΉ β†’ Type u_6} [(i : ΞΉ) β†’ NormedAddCommGroup (M i)] [(i : ΞΉ) β†’ NormedSpace π•œ (M i)] {H : Type u_7} [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) (c'.flipMultilinear 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_5} [Fintype ΞΉ] {M : ΞΉ β†’ Type u_6} [(i : ΞΉ) β†’ NormedAddCommGroup (M i)] [(i : ΞΉ) β†’ NormedSpace π•œ (M i)] {H : Type u_7} [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) (c'.flipMultilinear u) s x
theorem HasFDerivAt.continuousMultilinear_apply_const {π•œ : Type u_1} [NontriviallyNormedField π•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace π•œ E] {x : E} {ΞΉ : Type u_5} [Fintype ΞΉ] {M : ΞΉ β†’ Type u_6} [(i : ΞΉ) β†’ NormedAddCommGroup (M i)] [(i : ΞΉ) β†’ NormedSpace π•œ (M i)] {H : Type u_7} [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) (c'.flipMultilinear 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_5} [Fintype ΞΉ] {M : ΞΉ β†’ Type u_6} [(i : ΞΉ) β†’ NormedAddCommGroup (M i)] [(i : ΞΉ) β†’ NormedSpace π•œ (M i)] {H : Type u_7} [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_5} [Fintype ΞΉ] {M : ΞΉ β†’ Type u_6} [(i : ΞΉ) β†’ NormedAddCommGroup (M i)] [(i : ΞΉ) β†’ NormedSpace π•œ (M i)] {H : Type u_7} [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_5} [Fintype ΞΉ] {M : ΞΉ β†’ Type u_6} [(i : ΞΉ) β†’ NormedAddCommGroup (M i)] [(i : ΞΉ) β†’ NormedSpace π•œ (M i)] {H : Type u_7} [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_5} [Fintype ΞΉ] {M : ΞΉ β†’ Type u_6} [(i : ΞΉ) β†’ NormedAddCommGroup (M i)] [(i : ΞΉ) β†’ NormedSpace π•œ (M i)] {H : Type u_7} [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_5} [Fintype ΞΉ] {M : ΞΉ β†’ Type u_6} [(i : ΞΉ) β†’ NormedAddCommGroup (M i)] [(i : ΞΉ) β†’ NormedSpace π•œ (M i)] {H : Type u_7} [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 = (fderivWithin π•œ c s x).flipMultilinear u
theorem fderiv_continuousMultilinear_apply_const {π•œ : Type u_1} [NontriviallyNormedField π•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace π•œ E] {x : E} {ΞΉ : Type u_5} [Fintype ΞΉ] {M : ΞΉ β†’ Type u_6} [(i : ΞΉ) β†’ NormedAddCommGroup (M i)] [(i : ΞΉ) β†’ NormedSpace π•œ (M i)] {H : Type u_7} [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 = (fderiv π•œ c x).flipMultilinear 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_5} [Fintype ΞΉ] {M : ΞΉ β†’ Type u_6} [(i : ΞΉ) β†’ NormedAddCommGroup (M i)] [(i : ΞΉ) β†’ NormedSpace π•œ (M i)] {H : Type u_7} [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_5} [Fintype ΞΉ] {M : ΞΉ β†’ Type u_6} [(i : ΞΉ) β†’ NormedAddCommGroup (M i)] [(i : ΞΉ) β†’ NormedSpace π•œ (M i)] {H : Type u_7} [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_5} [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' + c'.smulRight (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_5} [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' + c'.smulRight (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_5} [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' + c'.smulRight (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_5} [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_5} [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_5} [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_5} [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_5} [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 + (fderivWithin π•œ c s x).smulRight (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_5} [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 + (fderiv π•œ c x).smulRight (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_5} [NontriviallyNormedField π•œ'] [NormedAlgebra π•œ π•œ'] [NormedSpace π•œ' F] [IsScalarTower π•œ π•œ' F] {c : E β†’ π•œ'} {c' : E β†’L[π•œ] π•œ'} (hc : HasStrictFDerivAt c c' x) (f : F) :
HasStrictFDerivAt (fun (y : E) => c y β€’ f) (c'.smulRight f) x
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_5} [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) (c'.smulRight 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_5} [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) (c'.smulRight 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_5} [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_5} [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_5} [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_5} [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_5} [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 = (fderivWithin π•œ c s x).smulRight 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_5} [NontriviallyNormedField π•œ'] [NormedAlgebra π•œ π•œ'] [NormedSpace π•œ' F] [IsScalarTower π•œ π•œ' F] {c : E β†’ π•œ'} (hc : DifferentiableAt π•œ c x) (f : F) :
fderiv π•œ (fun (y : E) => c y β€’ f) x = (fderiv π•œ c x).smulRight 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_5} [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' + a'.smulRight (b x)) x
theorem HasStrictFDerivAt.mul {π•œ : Type u_1} [NontriviallyNormedField π•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace π•œ E] {x : E} {𝔸' : Type u_6} [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_5} [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' + a'.smulRight (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_6} [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_5} [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' + a'.smulRight (b x)) x
theorem HasFDerivAt.mul {π•œ : Type u_1} [NontriviallyNormedField π•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace π•œ E] {x : E} {𝔸' : Type u_6} [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_5} [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_5} [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_5} [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_5} [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_5} [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_5} [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_5} [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_5} [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_5} [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 + (fderivWithin π•œ a s x).smulRight (b x)
theorem fderivWithin_mul {π•œ : Type u_1} [NontriviallyNormedField π•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace π•œ E] {x : E} {s : Set E} {𝔸' : Type u_6} [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_5} [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 + (fderiv π•œ a x).smulRight (b x)
theorem fderiv_mul {π•œ : Type u_1} [NontriviallyNormedField π•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace π•œ E] {x : E} {𝔸' : Type u_6} [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_5} [NormedRing 𝔸] [NormedAlgebra π•œ 𝔸] {a : E β†’ 𝔸} {a' : E β†’L[π•œ] 𝔸} (ha : HasStrictFDerivAt a a' x) (b : 𝔸) :
HasStrictFDerivAt (fun (y : E) => a y * b) (a'.smulRight b) x
theorem HasStrictFDerivAt.mul_const {π•œ : Type u_1} [NontriviallyNormedField π•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace π•œ E] {x : E} {𝔸' : Type u_6} [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_5} [NormedRing 𝔸] [NormedAlgebra π•œ 𝔸] {a : E β†’ 𝔸} {a' : E β†’L[π•œ] 𝔸} (ha : HasFDerivWithinAt a a' s x) (b : 𝔸) :
HasFDerivWithinAt (fun (y : E) => a y * b) (a'.smulRight 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_6} [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_5} [NormedRing 𝔸] [NormedAlgebra π•œ 𝔸] {a : E β†’ 𝔸} {a' : E β†’L[π•œ] 𝔸} (ha : HasFDerivAt a a' x) (b : 𝔸) :
HasFDerivAt (fun (y : E) => a y * b) (a'.smulRight b) x
theorem HasFDerivAt.mul_const {π•œ : Type u_1} [NontriviallyNormedField π•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace π•œ E] {x : E} {𝔸' : Type u_6} [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_5} [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_5} [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_5} [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_5} [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_5} [NormedRing 𝔸] [NormedAlgebra π•œ 𝔸] {a : E β†’ 𝔸} (hxs : UniqueDiffWithinAt π•œ s x) (ha : DifferentiableWithinAt π•œ a s x) (b : 𝔸) :
fderivWithin π•œ (fun (y : E) => a y * b) s x = (fderivWithin π•œ a s x).smulRight 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} [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_5} [NormedRing 𝔸] [NormedAlgebra π•œ 𝔸] {a : E β†’ 𝔸} (ha : DifferentiableAt π•œ a x) (b : 𝔸) :
fderiv π•œ (fun (y : E) => a y * b) x = (fderiv π•œ a x).smulRight b
theorem fderiv_mul_const {π•œ : Type u_1} [NontriviallyNormedField π•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace π•œ E] {x : E} {𝔸' : Type u_6} [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_5} [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_5} [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_5} [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_5} [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_5} [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_5} [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_5} [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_5} [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_5} [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_5} {𝔸 : Type u_6} [NormedRing 𝔸] [NormedAlgebra π•œ 𝔸] [Fintype ΞΉ] {l : List ΞΉ} {x : ΞΉ β†’ 𝔸} :
HasStrictFDerivAt (fun (x : ΞΉ β†’ 𝔸) => (List.map x l).prod) (βˆ‘ i : Fin l.length, (List.map x (List.take (↑i) l)).prod β€’ (ContinuousLinearMap.proj l[i]).smulRight (List.map x (List.drop (↑i).succ l)).prod) x
theorem hasStrictFDerivAt_list_prod_finRange' {π•œ : Type u_1} [NontriviallyNormedField π•œ] {𝔸 : Type u_6} [NormedRing 𝔸] [NormedAlgebra π•œ 𝔸] {n : β„•} {x : Fin n β†’ 𝔸} :
HasStrictFDerivAt (fun (x : Fin n β†’ 𝔸) => (List.map x (List.finRange n)).prod) (βˆ‘ i : Fin n, (List.map x (List.take (↑i) (List.finRange n))).prod β€’ (ContinuousLinearMap.proj i).smulRight (List.map x (List.drop (↑i).succ (List.finRange n))).prod) x
theorem hasStrictFDerivAt_list_prod_attach' {π•œ : Type u_1} [NontriviallyNormedField π•œ] {ΞΉ : Type u_5} {𝔸 : Type u_6} [NormedRing 𝔸] [NormedAlgebra π•œ 𝔸] [DecidableEq ΞΉ] {l : List ΞΉ} {x : { i : ΞΉ // i ∈ l } β†’ 𝔸} :
HasStrictFDerivAt (fun (x : { x : ΞΉ // x ∈ l } β†’ 𝔸) => (List.map x l.attach).prod) (βˆ‘ i : Fin l.length, (List.map x (List.take (↑i) l.attach)).prod β€’ (ContinuousLinearMap.proj l.attach[Fin.cast β‹― i]).smulRight (List.map x (List.drop (↑i).succ l.attach)).prod) x
theorem hasFDerivAt_list_prod' {π•œ : Type u_1} [NontriviallyNormedField π•œ] {ΞΉ : Type u_5} {𝔸' : Type u_7} [NormedCommRing 𝔸'] [NormedAlgebra π•œ 𝔸'] [Fintype ΞΉ] {l : List ΞΉ} {x : ΞΉ β†’ 𝔸'} :
HasFDerivAt (fun (x : ΞΉ β†’ 𝔸') => (List.map x l).prod) (βˆ‘ i : Fin l.length, (List.map x (List.take (↑i) l)).prod β€’ (ContinuousLinearMap.proj l[i]).smulRight (List.map x (List.drop (↑i).succ l)).prod) x
theorem hasFDerivAt_list_prod_finRange' {π•œ : Type u_1} [NontriviallyNormedField π•œ] {𝔸 : Type u_6} [NormedRing 𝔸] [NormedAlgebra π•œ 𝔸] {n : β„•} {x : Fin n β†’ 𝔸} :
HasFDerivAt (fun (x : Fin n β†’ 𝔸) => (List.map x (List.finRange n)).prod) (βˆ‘ i : Fin n, (List.map x (List.take (↑i) (List.finRange n))).prod β€’ (ContinuousLinearMap.proj i).smulRight (List.map x (List.drop (↑i).succ (List.finRange n))).prod) x
theorem hasFDerivAt_list_prod_attach' {π•œ : Type u_1} [NontriviallyNormedField π•œ] {ΞΉ : Type u_5} {𝔸 : Type u_6} [NormedRing 𝔸] [NormedAlgebra π•œ 𝔸] [DecidableEq ΞΉ] {l : List ΞΉ} {x : { i : ΞΉ // i ∈ l } β†’ 𝔸} :
HasFDerivAt (fun (x : { x : ΞΉ // x ∈ l } β†’ 𝔸) => (List.map x l.attach).prod) (βˆ‘ i : Fin l.length, (List.map x (List.take (↑i) l.attach)).prod β€’ (ContinuousLinearMap.proj l.attach[Fin.cast β‹― i]).smulRight (List.map x (List.drop (↑i).succ l.attach)).prod) x
theorem hasStrictFDerivAt_list_prod {π•œ : Type u_1} [NontriviallyNormedField π•œ] {ΞΉ : Type u_5} {𝔸' : Type u_7} [NormedCommRing 𝔸'] [NormedAlgebra π•œ 𝔸'] [DecidableEq ΞΉ] [Fintype ΞΉ] {l : List ΞΉ} {x : ΞΉ β†’ 𝔸'} :
HasStrictFDerivAt (fun (x : ΞΉ β†’ 𝔸') => (List.map x l).prod) (List.map (fun (i : ΞΉ) => (List.map x (l.erase i)).prod β€’ ContinuousLinearMap.proj i) l).sum 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_5} {𝔸' : Type u_7} [NormedCommRing 𝔸'] [NormedAlgebra π•œ 𝔸'] [DecidableEq ΞΉ] [Fintype ΞΉ] {u : Multiset ΞΉ} {x : ΞΉ β†’ 𝔸'} :
HasStrictFDerivAt (fun (x : ΞΉ β†’ 𝔸') => (Multiset.map x u).prod) (Multiset.map (fun (i : ΞΉ) => (Multiset.map x (u.erase i)).prod β€’ ContinuousLinearMap.proj i) u).sum x
theorem hasFDerivAt_multiset_prod {π•œ : Type u_1} [NontriviallyNormedField π•œ] {ΞΉ : Type u_5} {𝔸' : Type u_7} [NormedCommRing 𝔸'] [NormedAlgebra π•œ 𝔸'] [DecidableEq ΞΉ] [Fintype ΞΉ] {u : Multiset ΞΉ} {x : ΞΉ β†’ 𝔸'} :
HasFDerivAt (fun (x : ΞΉ β†’ 𝔸') => (Multiset.map x u).prod) (Multiset.map (fun (i : ΞΉ) => (Multiset.map x (u.erase i)).prod β€’ ContinuousLinearMap.proj i) u).sum x
theorem hasStrictFDerivAt_finset_prod {π•œ : Type u_1} [NontriviallyNormedField π•œ] {ΞΉ : Type u_5} {𝔸' : Type u_7} [NormedCommRing 𝔸'] [NormedAlgebra π•œ 𝔸'] {u : Finset ΞΉ} [DecidableEq ΞΉ] [Fintype ΞΉ] {x : ΞΉ β†’ 𝔸'} :
HasStrictFDerivAt (fun (x : ΞΉ β†’ 𝔸') => ∏ i ∈ u, x i) (βˆ‘ i ∈ u, (∏ j ∈ u.erase i, x j) β€’ ContinuousLinearMap.proj i) x
theorem hasFDerivAt_finset_prod {π•œ : Type u_1} [NontriviallyNormedField π•œ] {ΞΉ : Type u_5} {𝔸' : Type u_7} [NormedCommRing 𝔸'] [NormedAlgebra π•œ 𝔸'] {u : Finset ΞΉ} [DecidableEq ΞΉ] [Fintype ΞΉ] {x : ΞΉ β†’ 𝔸'} :
HasFDerivAt (fun (x : ΞΉ β†’ 𝔸') => ∏ i ∈ u, x i) (βˆ‘ i ∈ u, (∏ j ∈ u.erase i, x j) β€’ ContinuousLinearMap.proj i) x
theorem HasStrictFDerivAt.list_prod' {π•œ : Type u_1} [NontriviallyNormedField π•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace π•œ E] {ΞΉ : Type u_5} {𝔸 : Type u_6} [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.map (fun (x_1 : ΞΉ) => f x_1 x) l).prod) (βˆ‘ i : Fin l.length, (List.map (fun (x_1 : ΞΉ) => f x_1 x) (List.take (↑i) l)).prod β€’ (f' l[i]).smulRight (List.map (fun (x_1 : ΞΉ) => f x_1 x) (List.drop (↑i).succ l)).prod) x
theorem HasFDerivAt.list_prod' {π•œ : Type u_1} [NontriviallyNormedField π•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace π•œ E] {ΞΉ : Type u_5} {𝔸 : Type u_6} [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.map (fun (x_1 : ΞΉ) => f x_1 x) l).prod) (βˆ‘ i : Fin l.length, (List.map (fun (x_1 : ΞΉ) => f x_1 x) (List.take (↑i) l)).prod β€’ (f' l[i]).smulRight (List.map (fun (x_1 : ΞΉ) => f x_1 x) (List.drop (↑i).succ l)).prod) 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_5} {𝔸 : Type u_6} [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.map (fun (x_1 : ΞΉ) => f x_1 x) l).prod) (βˆ‘ i : Fin l.length, (List.map (fun (x_1 : ΞΉ) => f x_1 x) (List.take (↑i) l)).prod β€’ (f' l[i]).smulRight (List.map (fun (x_1 : ΞΉ) => f x_1 x) (List.drop (↑i).succ l)).prod) s x
theorem fderiv_list_prod' {π•œ : Type u_1} [NontriviallyNormedField π•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace π•œ E] {ΞΉ : Type u_5} {𝔸 : Type u_6} [NormedRing 𝔸] [NormedAlgebra π•œ 𝔸] {f : ΞΉ β†’ E β†’ 𝔸} {l : List ΞΉ} {x : E} (h : βˆ€ i ∈ l, DifferentiableAt π•œ (fun (x : E) => f i x) x) :
fderiv π•œ (fun (x : E) => (List.map (fun (x_1 : ΞΉ) => f x_1 x) l).prod) x = βˆ‘ i : Fin l.length, (List.map (fun (x_1 : ΞΉ) => f x_1 x) (List.take (↑i) l)).prod β€’ (fderiv π•œ (fun (x : E) => f l[i] x) x).smulRight (List.map (fun (x_1 : ΞΉ) => f x_1 x) (List.drop (↑i).succ l)).prod
theorem fderivWithin_list_prod' {π•œ : Type u_1} [NontriviallyNormedField π•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace π•œ E] {s : Set E} {ΞΉ : Type u_5} {𝔸 : Type u_6} [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.map (fun (x_1 : ΞΉ) => f x_1 x) l).prod) s x = βˆ‘ i : Fin l.length, (List.map (fun (x_1 : ΞΉ) => f x_1 x) (List.take (↑i) l)).prod β€’ (fderivWithin π•œ (fun (x : E) => f l[i] x) s x).smulRight (List.map (fun (x_1 : ΞΉ) => f x_1 x) (List.drop (↑i).succ l)).prod
theorem HasStrictFDerivAt.multiset_prod {π•œ : Type u_1} [NontriviallyNormedField π•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace π•œ E] {ΞΉ : Type u_5} {𝔸' : Type u_7} [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.map (fun (x_1 : ΞΉ) => g x_1 x) u).prod) (Multiset.map (fun (i : ΞΉ) => (Multiset.map (fun (x_1 : ΞΉ) => g x_1 x) (u.erase i)).prod β€’ g' i) u).sum x
theorem HasFDerivAt.multiset_prod {π•œ : Type u_1} [NontriviallyNormedField π•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace π•œ E] {ΞΉ : Type u_5} {𝔸' : Type u_7} [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.map (fun (x_1 : ΞΉ) => g x_1 x) u).prod) (Multiset.map (fun (i : ΞΉ) => (Multiset.map (fun (x_1 : ΞΉ) => g x_1 x) (u.erase i)).prod β€’ g' i) u).sum 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_5} {𝔸' : Type u_7} [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.map (fun (x_1 : ΞΉ) => g x_1 x) u).prod) (Multiset.map (fun (i : ΞΉ) => (Multiset.map (fun (x_1 : ΞΉ) => g x_1 x) (u.erase i)).prod β€’ g' i) u).sum s x
theorem fderiv_multiset_prod {π•œ : Type u_1} [NontriviallyNormedField π•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace π•œ E] {ΞΉ : Type u_5} {𝔸' : Type u_7} [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.map (fun (x_1 : ΞΉ) => g x_1 x) u).prod) x = (Multiset.map (fun (i : ΞΉ) => (Multiset.map (fun (x_1 : ΞΉ) => g x_1 x) (u.erase i)).prod β€’ fderiv π•œ (g i) x) u).sum
theorem fderivWithin_multiset_prod {π•œ : Type u_1} [NontriviallyNormedField π•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace π•œ E] {s : Set E} {ΞΉ : Type u_5} {𝔸' : Type u_7} [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.map (fun (x_1 : ΞΉ) => g x_1 x) u).prod) s x = (Multiset.map (fun (i : ΞΉ) => (Multiset.map (fun (x_1 : ΞΉ) => g x_1 x) (u.erase i)).prod β€’ fderivWithin π•œ (g i) s x) u).sum
theorem HasStrictFDerivAt.finset_prod {π•œ : Type u_1} [NontriviallyNormedField π•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace π•œ E] {ΞΉ : Type u_5} {𝔸' : Type u_7} [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) => ∏ i ∈ u, g i x) (βˆ‘ i ∈ u, (∏ j ∈ u.erase i, g j x) β€’ g' i) x
theorem HasFDerivAt.finset_prod {π•œ : Type u_1} [NontriviallyNormedField π•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace π•œ E] {ΞΉ : Type u_5} {𝔸' : Type u_7} [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) => ∏ i ∈ u, g i x) (βˆ‘ i ∈ u, (∏ j ∈ u.erase i, 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_5} {𝔸' : Type u_7} [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) => ∏ i ∈ u, g i x) (βˆ‘ i ∈ u, (∏ j ∈ u.erase i, 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_5} {𝔸' : Type u_7} [NormedCommRing 𝔸'] [NormedAlgebra π•œ 𝔸'] {u : Finset ΞΉ} {g : ΞΉ β†’ E β†’ 𝔸'} [DecidableEq ΞΉ] {x : E} (hg : βˆ€ i ∈ u, DifferentiableAt π•œ (g i) x) :
fderiv π•œ (fun (x : E) => ∏ i ∈ u, g i x) x = βˆ‘ i ∈ u, (∏ j ∈ u.erase i, 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_5} {𝔸' : Type u_7} [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) => ∏ i ∈ u, g i x) s x = βˆ‘ i ∈ u, (∏ j ∈ u.erase i, g j x) β€’ fderivWithin π•œ (g i) s x
theorem hasFDerivAt_ring_inverse {π•œ : Type u_1} [NontriviallyNormedField π•œ] {R : Type u_5} [NormedRing R] [HasSummableGeomSeries R] [NormedAlgebra π•œ 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 (low prio): prove a version without assumption [HasSummableGeomSeries R] but within the set of units.

theorem differentiableAt_inverse {π•œ : Type u_1} [NontriviallyNormedField π•œ] {R : Type u_5} [NormedRing R] [HasSummableGeomSeries R] [NormedAlgebra π•œ R] {x : R} (hx : IsUnit x) :
DifferentiableAt π•œ Ring.inverse x
theorem differentiableWithinAt_inverse {π•œ : Type u_1} [NontriviallyNormedField π•œ] {R : Type u_5} [NormedRing R] [HasSummableGeomSeries R] [NormedAlgebra π•œ R] {x : R} (hx : IsUnit x) (s : Set R) :
DifferentiableWithinAt π•œ Ring.inverse s x
theorem differentiableOn_inverse {π•œ : Type u_1} [NontriviallyNormedField π•œ] {R : Type u_5} [NormedRing R] [HasSummableGeomSeries R] [NormedAlgebra π•œ R] :
DifferentiableOn π•œ Ring.inverse {x : R | IsUnit x}
theorem fderiv_inverse {π•œ : Type u_1} [NontriviallyNormedField π•œ] {R : Type u_5} [NormedRing R] [HasSummableGeomSeries R] [NormedAlgebra π•œ R] (x : RΛ£) :
fderiv π•œ Ring.inverse ↑x = -((ContinuousLinearMap.mulLeftRight π•œ R) ↑x⁻¹) ↑x⁻¹
theorem hasStrictFDerivAt_ring_inverse {π•œ : Type u_1} [NontriviallyNormedField π•œ] {R : Type u_5} [NormedRing R] [HasSummableGeomSeries R] [NormedAlgebra π•œ R] (x : RΛ£) :
HasStrictFDerivAt Ring.inverse (-((ContinuousLinearMap.mulLeftRight π•œ R) ↑x⁻¹) ↑x⁻¹) ↑x
theorem DifferentiableWithinAt.inverse {π•œ : Type u_1} [NontriviallyNormedField π•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace π•œ E] {R : Type u_5} [NormedRing R] [HasSummableGeomSeries R] [NormedAlgebra π•œ 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_5} [NormedRing R] [HasSummableGeomSeries R] [NormedAlgebra π•œ 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_5} [NormedRing R] [HasSummableGeomSeries R] [NormedAlgebra π•œ 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_5} [NormedRing R] [HasSummableGeomSeries R] [NormedAlgebra π•œ 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 that some lemmas are primed as they are expressed without commutativity, whereas their counterparts in commutative fields involve simpler expressions, and are given in Mathlib/Analysis/Calculus/Deriv/Inv.lean.

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

At an invertible element x of a normed division algebra R, the inversion is strictly differentiable, with derivative the linear map fun t ↦ - x⁻¹ * t * x⁻¹. For a nicer formula in the commutative case, see hasStrictFDerivAt_inv.

theorem hasFDerivAt_inv' {π•œ : Type u_1} [NontriviallyNormedField π•œ] {R : Type u_5} [NormedDivisionRing R] [NormedAlgebra π•œ 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⁻¹. For a nicer formula in the commutative case, see hasFDerivAt_inv.

theorem differentiableAt_inv {π•œ : Type u_1} [NontriviallyNormedField π•œ] {R : Type u_5} [NormedDivisionRing R] [NormedAlgebra π•œ R] {x : R} (hx : x β‰  0) :
DifferentiableAt π•œ Inv.inv x
@[deprecated differentiableAt_inv]
theorem differentiableAt_inv' {π•œ : Type u_1} [NontriviallyNormedField π•œ] {R : Type u_5} [NormedDivisionRing R] [NormedAlgebra π•œ R] {x : R} (hx : x β‰  0) :
DifferentiableAt π•œ Inv.inv x

Alias of differentiableAt_inv.

theorem differentiableWithinAt_inv {π•œ : Type u_1} [NontriviallyNormedField π•œ] {R : Type u_5} [NormedDivisionRing R] [NormedAlgebra π•œ R] {x : R} (hx : x β‰  0) (s : Set R) :
DifferentiableWithinAt π•œ (fun (x : R) => x⁻¹) s x
@[deprecated differentiableWithinAt_inv]
theorem differentiableWithinAt_inv' {π•œ : Type u_1} [NontriviallyNormedField π•œ] {R : Type u_5} [NormedDivisionRing R] [NormedAlgebra π•œ R] {x : R} (hx : x β‰  0) (s : Set R) :
DifferentiableWithinAt π•œ (fun (x : R) => x⁻¹) s x

Alias of differentiableWithinAt_inv.

theorem differentiableOn_inv {π•œ : Type u_1} [NontriviallyNormedField π•œ] {R : Type u_5} [NormedDivisionRing R] [NormedAlgebra π•œ R] :
DifferentiableOn π•œ (fun (x : R) => x⁻¹) {x : R | x β‰  0}
@[deprecated differentiableOn_inv]
theorem differentiableOn_inv' {π•œ : Type u_1} [NontriviallyNormedField π•œ] {R : Type u_5} [NormedDivisionRing R] [NormedAlgebra π•œ R] :
DifferentiableOn π•œ (fun (x : R) => x⁻¹) {x : R | x β‰  0}

Alias of differentiableOn_inv.

theorem fderiv_inv' {π•œ : Type u_1} [NontriviallyNormedField π•œ] {R : Type u_5} [NormedDivisionRing R] [NormedAlgebra π•œ 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_5} [NormedDivisionRing R] [NormedAlgebra π•œ 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_5} [NormedDivisionRing R] [NormedAlgebra π•œ 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
@[deprecated DifferentiableWithinAt.inv]
theorem DifferentiableWithinAt.inv' {π•œ : Type u_1} [NontriviallyNormedField π•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace π•œ E] {R : Type u_5} [NormedDivisionRing R] [NormedAlgebra π•œ 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

Alias of DifferentiableWithinAt.inv.

@[simp]
theorem DifferentiableAt.inv {π•œ : Type u_1} [NontriviallyNormedField π•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace π•œ E] {R : Type u_5} [NormedDivisionRing R] [NormedAlgebra π•œ R] {h : E β†’ R} {z : E} (hf : DifferentiableAt π•œ h z) (hz : h z β‰  0) :
DifferentiableAt π•œ (fun (x : E) => (h x)⁻¹) z
@[deprecated DifferentiableAt.inv]
theorem DifferentiableAt.inv' {π•œ : Type u_1} [NontriviallyNormedField π•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace π•œ E] {R : Type u_5} [NormedDivisionRing R] [NormedAlgebra π•œ R] {h : E β†’ R} {z : E} (hf : DifferentiableAt π•œ h z) (hz : h z β‰  0) :
DifferentiableAt π•œ (fun (x : E) => (h x)⁻¹) z

Alias of DifferentiableAt.inv.

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

Alias of DifferentiableOn.inv.

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

Alias of Differentiable.inv.