# Calculus in inner product spaces #

In this file we prove that the inner product and square of the norm in an inner space are infinitely β-smooth. In order to state these results, we need a NormedSpace β E instance. Though we can deduce this structure from InnerProductSpace π E, this instance may be not definitionally equal to some other βnaturalβ instance. So, we assume [NormedSpace β E].

We also prove that functions to a EuclideanSpace are (higher) differentiable if and only if their components are. This follows from the corresponding fact for finite product of normed spaces, and from the equivalence of norms in finite dimensions.

## TODO #

The last part of the file should be generalized to PiLp.

def fderivInnerCLM (π : Type u_1) {E : Type u_2} [RCLike π] [InnerProductSpace π E] [] (p : E Γ E) :
E Γ E βL[β] π

Derivative of the inner product.

Equations
Instances For
@[simp]
theorem fderivInnerCLM_apply (π : Type u_1) {E : Type u_2} [RCLike π] [InnerProductSpace π E] [] (p : E Γ E) (x : E Γ E) :
(fderivInnerCLM π p) x = βͺp.1, x.2β«_π + βͺx.1, p.2β«_π
theorem contDiff_inner {π : Type u_1} {E : Type u_2} [RCLike π] [InnerProductSpace π E] [] {n : ββ} :
ContDiff β n fun (p : E Γ E) => βͺp.1, p.2β«_π
theorem contDiffAt_inner {π : Type u_1} {E : Type u_2} [RCLike π] [InnerProductSpace π E] [] {p : E Γ E} {n : ββ} :
ContDiffAt β n (fun (p : E Γ E) => βͺp.1, p.2β«_π) p
theorem differentiable_inner {π : Type u_1} {E : Type u_2} [RCLike π] [InnerProductSpace π E] [] :
Differentiable β fun (p : E Γ E) => βͺp.1, p.2β«_π
theorem ContDiffWithinAt.inner (π : Type u_1) {E : Type u_2} [RCLike π] [InnerProductSpace π E] [] {G : Type u_4} [] {f : G β E} {g : G β E} {s : Set G} {x : G} {n : ββ} (hf : ) (hg : ) :
ContDiffWithinAt β n (fun (x : G) => βͺf x, g xβ«_π) s x
theorem ContDiffAt.inner (π : Type u_1) {E : Type u_2} [RCLike π] [InnerProductSpace π E] [] {G : Type u_4} [] {f : G β E} {g : G β E} {x : G} {n : ββ} (hf : ) (hg : ) :
ContDiffAt β n (fun (x : G) => βͺf x, g xβ«_π) x
theorem ContDiffOn.inner (π : Type u_1) {E : Type u_2} [RCLike π] [InnerProductSpace π E] [] {G : Type u_4} [] {f : G β E} {g : G β E} {s : Set G} {n : ββ} (hf : ) (hg : ) :
ContDiffOn β n (fun (x : G) => βͺf x, g xβ«_π) s
theorem ContDiff.inner (π : Type u_1) {E : Type u_2} [RCLike π] [InnerProductSpace π E] [] {G : Type u_4} [] {f : G β E} {g : G β E} {n : ββ} (hf : ) (hg : ) :
ContDiff β n fun (x : G) => βͺf x, g xβ«_π
theorem HasFDerivWithinAt.inner (π : Type u_1) {E : Type u_2} [RCLike π] [InnerProductSpace π E] [] {G : Type u_4} [] {f : G β E} {g : G β E} {f' : } {g' : } {s : Set G} {x : G} (hf : HasFDerivWithinAt f f' s x) (hg : HasFDerivWithinAt g g' s x) :
HasFDerivWithinAt (fun (t : G) => βͺf t, g tβ«_π) ((fderivInnerCLM π (f x, g x)).comp (f'.prod g')) s x
theorem HasStrictFDerivAt.inner (π : Type u_1) {E : Type u_2} [RCLike π] [InnerProductSpace π E] [] {G : Type u_4} [] {f : G β E} {g : G β E} {f' : } {g' : } {x : G} (hf : ) (hg : ) :
HasStrictFDerivAt (fun (t : G) => βͺf t, g tβ«_π) ((fderivInnerCLM π (f x, g x)).comp (f'.prod g')) x
theorem HasFDerivAt.inner (π : Type u_1) {E : Type u_2} [RCLike π] [InnerProductSpace π E] [] {G : Type u_4} [] {f : G β E} {g : G β E} {f' : } {g' : } {x : G} (hf : HasFDerivAt f f' x) (hg : HasFDerivAt g g' x) :
HasFDerivAt (fun (t : G) => βͺf t, g tβ«_π) ((fderivInnerCLM π (f x, g x)).comp (f'.prod g')) x
theorem HasDerivWithinAt.inner (π : Type u_1) {E : Type u_2} [RCLike π] [InnerProductSpace π E] [] {f : β β E} {g : β β E} {f' : E} {g' : E} {s : } {x : β} (hf : HasDerivWithinAt f f' s x) (hg : HasDerivWithinAt g g' s x) :
HasDerivWithinAt (fun (t : β) => βͺf t, g tβ«_π) (βͺf x, g'β«_π + βͺf', g xβ«_π) s x
theorem HasDerivAt.inner (π : Type u_1) {E : Type u_2} [RCLike π] [InnerProductSpace π E] [] {f : β β E} {g : β β E} {f' : E} {g' : E} {x : β} :
HasDerivAt f f' x β HasDerivAt g g' x β HasDerivAt (fun (t : β) => βͺf t, g tβ«_π) (βͺf x, g'β«_π + βͺf', g xβ«_π) x
theorem DifferentiableWithinAt.inner (π : Type u_1) {E : Type u_2} [RCLike π] [InnerProductSpace π E] [] {G : Type u_4} [] {f : G β E} {g : G β E} {s : Set G} {x : G} (hf : ) (hg : ) :
DifferentiableWithinAt β (fun (x : G) => βͺf x, g xβ«_π) s x
theorem DifferentiableAt.inner (π : Type u_1) {E : Type u_2} [RCLike π] [InnerProductSpace π E] [] {G : Type u_4} [] {f : G β E} {g : G β E} {x : G} (hf : ) (hg : ) :
DifferentiableAt β (fun (x : G) => βͺf x, g xβ«_π) x
theorem DifferentiableOn.inner (π : Type u_1) {E : Type u_2} [RCLike π] [InnerProductSpace π E] [] {G : Type u_4} [] {f : G β E} {g : G β E} {s : Set G} (hf : ) (hg : ) :
DifferentiableOn β (fun (x : G) => βͺf x, g xβ«_π) s
theorem Differentiable.inner (π : Type u_1) {E : Type u_2} [RCLike π] [InnerProductSpace π E] [] {G : Type u_4} [] {f : G β E} {g : G β E} (hf : ) (hg : ) :
Differentiable β fun (x : G) => βͺf x, g xβ«_π
theorem fderiv_inner_apply (π : Type u_1) {E : Type u_2} [RCLike π] [InnerProductSpace π E] [] {G : Type u_4} [] {f : G β E} {g : G β E} {x : G} (hf : ) (hg : ) (y : G) :
(fderiv β (fun (t : G) => βͺf t, g tβ«_π) x) y = βͺf x, () yβ«_π + βͺ() y, g xβ«_π
theorem deriv_inner_apply (π : Type u_1) {E : Type u_2} [RCLike π] [InnerProductSpace π E] [] {f : β β E} {g : β β E} {x : β} (hf : ) (hg : ) :
deriv (fun (t : β) => βͺf t, g tβ«_π) x = βͺf x, deriv g xβ«_π + βͺderiv f x, g xβ«_π
theorem contDiff_norm_sq (π : Type u_1) {E : Type u_2} [RCLike π] [InnerProductSpace π E] [] {n : ββ} :
ContDiff β n fun (x : E) => ^ 2
theorem ContDiff.norm_sq (π : Type u_1) {E : Type u_2} [RCLike π] [InnerProductSpace π E] [] {G : Type u_4} [] {f : G β E} {n : ββ} (hf : ) :
ContDiff β n fun (x : G) => βf xβ ^ 2
theorem ContDiffWithinAt.norm_sq (π : Type u_1) {E : Type u_2} [RCLike π] [InnerProductSpace π E] [] {G : Type u_4} [] {f : G β E} {s : Set G} {x : G} {n : ββ} (hf : ) :
ContDiffWithinAt β n (fun (y : G) => βf yβ ^ 2) s x
theorem ContDiffAt.norm_sq (π : Type u_1) {E : Type u_2} [RCLike π] [InnerProductSpace π E] [] {G : Type u_4} [] {f : G β E} {x : G} {n : ββ} (hf : ) :
ContDiffAt β n (fun (x : G) => βf xβ ^ 2) x
theorem contDiffAt_norm (π : Type u_1) {E : Type u_2} [RCLike π] [InnerProductSpace π E] [] {n : ββ} {x : E} (hx : x β  0) :
theorem ContDiffAt.norm (π : Type u_1) {E : Type u_2} [RCLike π] [InnerProductSpace π E] [] {G : Type u_4} [] {f : G β E} {x : G} {n : ββ} (hf : ) (h0 : f x β  0) :
ContDiffAt β n (fun (y : G) => βf yβ) x
theorem ContDiffAt.dist (π : Type u_1) {E : Type u_2} [RCLike π] [InnerProductSpace π E] [] {G : Type u_4} [] {f : G β E} {g : G β E} {x : G} {n : ββ} (hf : ) (hg : ) (hne : f x β  g x) :
ContDiffAt β n (fun (y : G) => dist (f y) (g y)) x
theorem ContDiffWithinAt.norm (π : Type u_1) {E : Type u_2} [RCLike π] [InnerProductSpace π E] [] {G : Type u_4} [] {f : G β E} {s : Set G} {x : G} {n : ββ} (hf : ) (h0 : f x β  0) :
ContDiffWithinAt β n (fun (y : G) => βf yβ) s x
theorem ContDiffWithinAt.dist (π : Type u_1) {E : Type u_2} [RCLike π] [InnerProductSpace π E] [] {G : Type u_4} [] {f : G β E} {g : G β E} {s : Set G} {x : G} {n : ββ} (hf : ) (hg : ) (hne : f x β  g x) :
ContDiffWithinAt β n (fun (y : G) => dist (f y) (g y)) s x
theorem ContDiffOn.norm_sq (π : Type u_1) {E : Type u_2} [RCLike π] [InnerProductSpace π E] [] {G : Type u_4} [] {f : G β E} {s : Set G} {n : ββ} (hf : ) :
ContDiffOn β n (fun (y : G) => βf yβ ^ 2) s
theorem ContDiffOn.norm (π : Type u_1) {E : Type u_2} [RCLike π] [InnerProductSpace π E] [] {G : Type u_4} [] {f : G β E} {s : Set G} {n : ββ} (hf : ) (h0 : β x β s, f x β  0) :
ContDiffOn β n (fun (y : G) => βf yβ) s
theorem ContDiffOn.dist (π : Type u_1) {E : Type u_2} [RCLike π] [InnerProductSpace π E] [] {G : Type u_4} [] {f : G β E} {g : G β E} {s : Set G} {n : ββ} (hf : ) (hg : ) (hne : β x β s, f x β  g x) :
ContDiffOn β n (fun (y : G) => dist (f y) (g y)) s
theorem ContDiff.norm (π : Type u_1) {E : Type u_2} [RCLike π] [InnerProductSpace π E] [] {G : Type u_4} [] {f : G β E} {n : ββ} (hf : ) (h0 : β (x : G), f x β  0) :
ContDiff β n fun (y : G) => βf yβ
theorem ContDiff.dist (π : Type u_1) {E : Type u_2} [RCLike π] [InnerProductSpace π E] [] {G : Type u_4} [] {f : G β E} {g : G β E} {n : ββ} (hf : ) (hg : ) (hne : β (x : G), f x β  g x) :
ContDiff β n fun (y : G) => dist (f y) (g y)
theorem hasStrictFDerivAt_norm_sq {F : Type u_3} [] (x : F) :
HasStrictFDerivAt (fun (x : F) => ^ 2) (2 β’ () x) x
theorem HasFDerivAt.norm_sq {F : Type u_3} [] {G : Type u_4} [] {x : G} {f : G β F} {f' : } (hf : HasFDerivAt f f' x) :
HasFDerivAt (fun (x : G) => βf xβ ^ 2) (2 β’ (() (f x)).comp f') x
theorem HasDerivAt.norm_sq {F : Type u_3} [] {f : β β F} {f' : F} {x : β} (hf : HasDerivAt f f' x) :
HasDerivAt (fun (x : β) => βf xβ ^ 2) (2 * βͺf x, f'β«_β) x
theorem HasFDerivWithinAt.norm_sq {F : Type u_3} [] {G : Type u_4} [] {s : Set G} {x : G} {f : G β F} {f' : } (hf : HasFDerivWithinAt f f' s x) :
HasFDerivWithinAt (fun (x : G) => βf xβ ^ 2) (2 β’ (() (f x)).comp f') s x
theorem HasDerivWithinAt.norm_sq {F : Type u_3} [] {f : β β F} {f' : F} {s : } {x : β} (hf : HasDerivWithinAt f f' s x) :
HasDerivWithinAt (fun (x : β) => βf xβ ^ 2) (2 * βͺf x, f'β«_β) s x
theorem DifferentiableAt.norm_sq (π : Type u_1) {E : Type u_2} [RCLike π] [InnerProductSpace π E] [] {G : Type u_4} [] {f : G β E} {x : G} (hf : ) :
DifferentiableAt β (fun (y : G) => βf yβ ^ 2) x
theorem DifferentiableAt.norm (π : Type u_1) {E : Type u_2} [RCLike π] [InnerProductSpace π E] [] {G : Type u_4} [] {f : G β E} {x : G} (hf : ) (h0 : f x β  0) :
DifferentiableAt β (fun (y : G) => βf yβ) x
theorem DifferentiableAt.dist (π : Type u_1) {E : Type u_2} [RCLike π] [InnerProductSpace π E] [] {G : Type u_4} [] {f : G β E} {g : G β E} {x : G} (hf : ) (hg : ) (hne : f x β  g x) :
DifferentiableAt β (fun (y : G) => dist (f y) (g y)) x
theorem Differentiable.norm_sq (π : Type u_1) {E : Type u_2} [RCLike π] [InnerProductSpace π E] [] {G : Type u_4} [] {f : G β E} (hf : ) :
Differentiable β fun (y : G) => βf yβ ^ 2
theorem Differentiable.norm (π : Type u_1) {E : Type u_2} [RCLike π] [InnerProductSpace π E] [] {G : Type u_4} [] {f : G β E} (hf : ) (h0 : β (x : G), f x β  0) :
theorem Differentiable.dist (π : Type u_1) {E : Type u_2} [RCLike π] [InnerProductSpace π E] [] {G : Type u_4} [] {f : G β E} {g : G β E} (hf : ) (hg : ) (hne : β (x : G), f x β  g x) :
Differentiable β fun (y : G) => dist (f y) (g y)
theorem DifferentiableWithinAt.norm_sq (π : Type u_1) {E : Type u_2} [RCLike π] [InnerProductSpace π E] [] {G : Type u_4} [] {f : G β E} {s : Set G} {x : G} (hf : ) :
DifferentiableWithinAt β (fun (y : G) => βf yβ ^ 2) s x
theorem DifferentiableWithinAt.norm (π : Type u_1) {E : Type u_2} [RCLike π] [InnerProductSpace π E] [] {G : Type u_4} [] {f : G β E} {s : Set G} {x : G} (hf : ) (h0 : f x β  0) :
theorem DifferentiableWithinAt.dist (π : Type u_1) {E : Type u_2} [RCLike π] [InnerProductSpace π E] [] {G : Type u_4} [] {f : G β E} {g : G β E} {s : Set G} {x : G} (hf : ) (hg : ) (hne : f x β  g x) :
DifferentiableWithinAt β (fun (y : G) => dist (f y) (g y)) s x
theorem DifferentiableOn.norm_sq (π : Type u_1) {E : Type u_2} [RCLike π] [InnerProductSpace π E] [] {G : Type u_4} [] {f : G β E} {s : Set G} (hf : ) :
DifferentiableOn β (fun (y : G) => βf yβ ^ 2) s
theorem DifferentiableOn.norm (π : Type u_1) {E : Type u_2} [RCLike π] [InnerProductSpace π E] [] {G : Type u_4} [] {f : G β E} {s : Set G} (hf : ) (h0 : β x β s, f x β  0) :
DifferentiableOn β (fun (y : G) => βf yβ) s
theorem DifferentiableOn.dist (π : Type u_1) {E : Type u_2} [RCLike π] [InnerProductSpace π E] [] {G : Type u_4} [] {f : G β E} {g : G β E} {s : Set G} (hf : ) (hg : ) (hne : β x β s, f x β  g x) :
DifferentiableOn β (fun (y : G) => dist (f y) (g y)) s
theorem differentiableWithinAt_euclidean {π : Type u_1} {ΞΉ : Type u_2} {H : Type u_3} [RCLike π] [NormedSpace π H] [Fintype ΞΉ] {f : H β EuclideanSpace π ΞΉ} {t : Set H} {y : H} :
DifferentiableWithinAt π f t y β β (i : ΞΉ), DifferentiableWithinAt π (fun (x : H) => f x i) t y
theorem differentiableAt_euclidean {π : Type u_1} {ΞΉ : Type u_2} {H : Type u_3} [RCLike π] [NormedSpace π H] [Fintype ΞΉ] {f : H β EuclideanSpace π ΞΉ} {y : H} :
DifferentiableAt π f y β β (i : ΞΉ), DifferentiableAt π (fun (x : H) => f x i) y
theorem differentiableOn_euclidean {π : Type u_1} {ΞΉ : Type u_2} {H : Type u_3} [RCLike π] [NormedSpace π H] [Fintype ΞΉ] {f : H β EuclideanSpace π ΞΉ} {t : Set H} :
DifferentiableOn π f t β β (i : ΞΉ), DifferentiableOn π (fun (x : H) => f x i) t
theorem differentiable_euclidean {π : Type u_1} {ΞΉ : Type u_2} {H : Type u_3} [RCLike π] [NormedSpace π H] [Fintype ΞΉ] {f : H β EuclideanSpace π ΞΉ} :
Differentiable π f β β (i : ΞΉ), Differentiable π fun (x : H) => f x i
theorem hasStrictFDerivAt_euclidean {π : Type u_1} {ΞΉ : Type u_2} {H : Type u_3} [RCLike π] [NormedSpace π H] [Fintype ΞΉ] {f : H β EuclideanSpace π ΞΉ} {f' : H βL[π] EuclideanSpace π ΞΉ} {y : H} :
β β (i : ΞΉ), HasStrictFDerivAt (fun (x : H) => f x i) (.comp f') y
theorem hasFDerivWithinAt_euclidean {π : Type u_1} {ΞΉ : Type u_2} {H : Type u_3} [RCLike π] [NormedSpace π H] [Fintype ΞΉ] {f : H β EuclideanSpace π ΞΉ} {f' : H βL[π] EuclideanSpace π ΞΉ} {t : Set H} {y : H} :
HasFDerivWithinAt f f' t y β β (i : ΞΉ), HasFDerivWithinAt (fun (x : H) => f x i) (.comp f') t y
theorem contDiffWithinAt_euclidean {π : Type u_1} {ΞΉ : Type u_2} {H : Type u_3} [RCLike π] [NormedSpace π H] [Fintype ΞΉ] {f : H β EuclideanSpace π ΞΉ} {t : Set H} {y : H} {n : ββ} :
ContDiffWithinAt π n f t y β β (i : ΞΉ), ContDiffWithinAt π n (fun (x : H) => f x i) t y
theorem contDiffAt_euclidean {π : Type u_1} {ΞΉ : Type u_2} {H : Type u_3} [RCLike π] [NormedSpace π H] [Fintype ΞΉ] {f : H β EuclideanSpace π ΞΉ} {y : H} {n : ββ} :
ContDiffAt π n f y β β (i : ΞΉ), ContDiffAt π n (fun (x : H) => f x i) y
theorem contDiffOn_euclidean {π : Type u_1} {ΞΉ : Type u_2} {H : Type u_3} [RCLike π] [NormedSpace π H] [Fintype ΞΉ] {f : H β EuclideanSpace π ΞΉ} {t : Set H} {n : ββ} :
ContDiffOn π n f t β β (i : ΞΉ), ContDiffOn π n (fun (x : H) => f x i) t
theorem contDiff_euclidean {π : Type u_1} {ΞΉ : Type u_2} {H : Type u_3} [RCLike π] [NormedSpace π H] [Fintype ΞΉ] {f : H β EuclideanSpace π ΞΉ} {n : ββ} :
ContDiff π n f β β (i : ΞΉ), ContDiff π n fun (x : H) => f x i
theorem PartialHomeomorph.contDiff_univUnitBall {n : ββ} {E : Type u_1} [] :
ContDiff β n βPartialHomeomorph.univUnitBall
theorem PartialHomeomorph.contDiffOn_univUnitBall_symm {n : ββ} {E : Type u_1} [] :
ContDiffOn β n (βPartialHomeomorph.univUnitBall.symm) ()
theorem Homeomorph.contDiff_unitBall {n : ββ} {E : Type u_1} [] :
ContDiff β n fun (x : E) => β(Homeomorph.unitBall x)
@[deprecated PartialHomeomorph.contDiffOn_univUnitBall_symm]
theorem Homeomorph.contDiffOn_unitBall_symm {n : ββ} {E : Type u_1} [] {f : E β E} (h : β (y : E) (hy : y β ), f y = Homeomorph.unitBall.symm β¨y, hyβ©) :
theorem PartialHomeomorph.contDiff_unitBallBall {n : ββ} {E : Type u_1} [] {c : E} {r : β} (hr : 0 < r) :
ContDiff β n β()
theorem PartialHomeomorph.contDiff_unitBallBall_symm {n : ββ} {E : Type u_1} [] {c : E} {r : β} (hr : 0 < r) :
ContDiff β n β().symm
theorem PartialHomeomorph.contDiff_univBall {n : ββ} {E : Type u_1} [] {c : E} {r : β} :
ContDiff β n β
theorem PartialHomeomorph.contDiffOn_univBall_symm {n : ββ} {E : Type u_1} [] {c : E} {r : β} :
ContDiffOn β n (β.symm) ()