Documentation

Mathlib.Analysis.InnerProductSpace.Basic

Properties of inner product spaces #

This file proves many basic properties of inner product spaces (real or complex).

Main results #

Tags #

inner product space, Hilbert space, norm

@[simp]
theorem inner_conj_symm {π•œ : Type u_1} {E : Type u_2} [RCLike π•œ] [SeminormedAddCommGroup E] [InnerProductSpace π•œ E] (x y : E) :
(starRingEnd π•œ) (inner y x) = inner x y
theorem inner_eq_zero_symm {π•œ : Type u_1} {E : Type u_2} [RCLike π•œ] [SeminormedAddCommGroup E] [InnerProductSpace π•œ E] {x y : E} :
inner x y = 0 ↔ inner y x = 0
@[simp]
theorem inner_self_im {π•œ : Type u_1} {E : Type u_2} [RCLike π•œ] [SeminormedAddCommGroup E] [InnerProductSpace π•œ E] (x : E) :
RCLike.im (inner x x) = 0
theorem inner_add_left {π•œ : Type u_1} {E : Type u_2} [RCLike π•œ] [SeminormedAddCommGroup E] [InnerProductSpace π•œ E] (x y z : E) :
inner (x + y) z = inner x z + inner y z
theorem inner_add_right {π•œ : Type u_1} {E : Type u_2} [RCLike π•œ] [SeminormedAddCommGroup E] [InnerProductSpace π•œ E] (x y z : E) :
inner x (y + z) = inner x y + inner x z
theorem inner_re_symm {π•œ : Type u_1} {E : Type u_2} [RCLike π•œ] [SeminormedAddCommGroup E] [InnerProductSpace π•œ E] (x y : E) :
RCLike.re (inner x y) = RCLike.re (inner y x)
theorem inner_im_symm {π•œ : Type u_1} {E : Type u_2} [RCLike π•œ] [SeminormedAddCommGroup E] [InnerProductSpace π•œ E] (x y : E) :
RCLike.im (inner x y) = -RCLike.im (inner y x)
theorem inner_smul_left_eq_star_smul {π•œ : Type u_1} {E : Type u_2} [RCLike π•œ] [SeminormedAddCommGroup E] [InnerProductSpace π•œ E] {𝕝 : Type u_4} [CommSemiring 𝕝] [StarRing 𝕝] [Algebra 𝕝 π•œ] [Module 𝕝 E] [IsScalarTower 𝕝 π•œ E] [StarModule 𝕝 π•œ] (x y : E) (r : 𝕝) :
inner (r β€’ x) y = (starRingEnd 𝕝) r β€’ inner x y

See inner_smul_left for the common special when π•œ = 𝕝.

theorem inner_smul_left_eq_smul {π•œ : Type u_1} {E : Type u_2} [RCLike π•œ] [SeminormedAddCommGroup E] [InnerProductSpace π•œ E] {𝕝 : Type u_4} [CommSemiring 𝕝] [StarRing 𝕝] [Algebra 𝕝 π•œ] [Module 𝕝 E] [IsScalarTower 𝕝 π•œ E] [StarModule 𝕝 π•œ] [TrivialStar 𝕝] (x y : E) (r : 𝕝) :
inner (r β€’ x) y = r β€’ inner x y

Special case of inner_smul_left_eq_star_smul when the acting ring has a trivial star (eg β„•, β„€, β„šβ‰₯0, β„š, ℝ).

theorem inner_smul_right_eq_smul {π•œ : Type u_1} {E : Type u_2} [RCLike π•œ] [SeminormedAddCommGroup E] [InnerProductSpace π•œ E] {𝕝 : Type u_4} [CommSemiring 𝕝] [StarRing 𝕝] [Algebra 𝕝 π•œ] [Module 𝕝 E] [IsScalarTower 𝕝 π•œ E] [StarModule 𝕝 π•œ] (x y : E) (r : 𝕝) :
inner x (r β€’ y) = r β€’ inner x y

See inner_smul_right for the common special when π•œ = 𝕝.

theorem inner_smul_left {π•œ : Type u_1} {E : Type u_2} [RCLike π•œ] [SeminormedAddCommGroup E] [InnerProductSpace π•œ E] (x y : E) (r : π•œ) :
inner (r β€’ x) y = (starRingEnd π•œ) r * inner x y

See inner_smul_left_eq_star_smul for the case of a general algebra action.

theorem real_inner_smul_left {F : Type u_3} [SeminormedAddCommGroup F] [InnerProductSpace ℝ F] (x y : F) (r : ℝ) :
inner (r β€’ x) y = r * inner x y
theorem inner_smul_real_left {π•œ : Type u_1} {E : Type u_2} [RCLike π•œ] [SeminormedAddCommGroup E] [InnerProductSpace π•œ E] (x y : E) (r : ℝ) :
inner (↑r β€’ x) y = r β€’ inner x y
theorem inner_smul_right {π•œ : Type u_1} {E : Type u_2} [RCLike π•œ] [SeminormedAddCommGroup E] [InnerProductSpace π•œ E] (x y : E) (r : π•œ) :
inner x (r β€’ y) = r * inner x y

See inner_smul_right_eq_smul for the case of a general algebra action.

theorem inner_smul_real_right {π•œ : Type u_1} {E : Type u_2} [RCLike π•œ] [SeminormedAddCommGroup E] [InnerProductSpace π•œ E] (x y : E) (r : ℝ) :
inner x (↑r β€’ y) = r β€’ inner x y
def sesqFormOfInner {π•œ : Type u_1} {E : Type u_2} [RCLike π•œ] [SeminormedAddCommGroup E] [InnerProductSpace π•œ E] :
E β†’β‚—[π•œ] E →ₗ⋆[π•œ] π•œ

The inner product as a sesquilinear form.

Note that in the case π•œ = ℝ this is a bilinear form.

Equations
Instances For
    @[simp]
    theorem sesqFormOfInner_apply_apply {π•œ : Type u_1} {E : Type u_2} [RCLike π•œ] [SeminormedAddCommGroup E] [InnerProductSpace π•œ E] (m y : E) :
    (sesqFormOfInner m) y = inner y m

    The real inner product as a bilinear form.

    Note that unlike sesqFormOfInner, this does not reverse the order of the arguments.

    Equations
    Instances For
      @[simp]
      theorem bilinFormOfRealInner_apply_apply {F : Type u_3} [SeminormedAddCommGroup F] [InnerProductSpace ℝ F] (m m✝ : F) :
      (bilinFormOfRealInner m) m✝ = inner m m✝
      theorem sum_inner {π•œ : Type u_1} {E : Type u_2} [RCLike π•œ] [SeminormedAddCommGroup E] [InnerProductSpace π•œ E] {ΞΉ : Type u_4} (s : Finset ΞΉ) (f : ΞΉ β†’ E) (x : E) :
      inner (βˆ‘ i ∈ s, f i) x = βˆ‘ i ∈ s, inner (f i) x

      An inner product with a sum on the left.

      theorem inner_sum {π•œ : Type u_1} {E : Type u_2} [RCLike π•œ] [SeminormedAddCommGroup E] [InnerProductSpace π•œ E] {ΞΉ : Type u_4} (s : Finset ΞΉ) (f : ΞΉ β†’ E) (x : E) :
      inner x (βˆ‘ i ∈ s, f i) = βˆ‘ i ∈ s, inner x (f i)

      An inner product with a sum on the right.

      theorem Finsupp.sum_inner {π•œ : Type u_1} {E : Type u_2} [RCLike π•œ] [SeminormedAddCommGroup E] [InnerProductSpace π•œ E] {ΞΉ : Type u_4} (l : ΞΉ β†’β‚€ π•œ) (v : ΞΉ β†’ E) (x : E) :
      inner (l.sum fun (i : ΞΉ) (a : π•œ) => a β€’ v i) x = l.sum fun (i : ΞΉ) (a : π•œ) => (starRingEnd π•œ) a β€’ inner (v i) x

      An inner product with a sum on the left, Finsupp version.

      theorem Finsupp.inner_sum {π•œ : Type u_1} {E : Type u_2} [RCLike π•œ] [SeminormedAddCommGroup E] [InnerProductSpace π•œ E] {ΞΉ : Type u_4} (l : ΞΉ β†’β‚€ π•œ) (v : ΞΉ β†’ E) (x : E) :
      inner x (l.sum fun (i : ΞΉ) (a : π•œ) => a β€’ v i) = l.sum fun (i : ΞΉ) (a : π•œ) => a β€’ inner x (v i)

      An inner product with a sum on the right, Finsupp version.

      theorem DFinsupp.sum_inner {π•œ : Type u_1} {E : Type u_2} [RCLike π•œ] [SeminormedAddCommGroup E] [InnerProductSpace π•œ E] {ΞΉ : Type u_4} [DecidableEq ΞΉ] {Ξ± : ΞΉ β†’ Type u_5} [(i : ΞΉ) β†’ AddZeroClass (Ξ± i)] [(i : ΞΉ) β†’ (x : Ξ± i) β†’ Decidable (x β‰  0)] (f : (i : ΞΉ) β†’ Ξ± i β†’ E) (l : Ξ β‚€ (i : ΞΉ), Ξ± i) (x : E) :
      inner (l.sum f) x = l.sum fun (i : ΞΉ) (a : Ξ± i) => inner (f i a) x
      theorem DFinsupp.inner_sum {π•œ : Type u_1} {E : Type u_2} [RCLike π•œ] [SeminormedAddCommGroup E] [InnerProductSpace π•œ E] {ΞΉ : Type u_4} [DecidableEq ΞΉ] {Ξ± : ΞΉ β†’ Type u_5} [(i : ΞΉ) β†’ AddZeroClass (Ξ± i)] [(i : ΞΉ) β†’ (x : Ξ± i) β†’ Decidable (x β‰  0)] (f : (i : ΞΉ) β†’ Ξ± i β†’ E) (l : Ξ β‚€ (i : ΞΉ), Ξ± i) (x : E) :
      inner x (l.sum f) = l.sum fun (i : ΞΉ) (a : Ξ± i) => inner x (f i a)
      @[simp]
      theorem inner_zero_left {π•œ : Type u_1} {E : Type u_2} [RCLike π•œ] [SeminormedAddCommGroup E] [InnerProductSpace π•œ E] (x : E) :
      inner 0 x = 0
      theorem inner_re_zero_left {π•œ : Type u_1} {E : Type u_2} [RCLike π•œ] [SeminormedAddCommGroup E] [InnerProductSpace π•œ E] (x : E) :
      RCLike.re (inner 0 x) = 0
      @[simp]
      theorem inner_zero_right {π•œ : Type u_1} {E : Type u_2} [RCLike π•œ] [SeminormedAddCommGroup E] [InnerProductSpace π•œ E] (x : E) :
      inner x 0 = 0
      theorem inner_re_zero_right {π•œ : Type u_1} {E : Type u_2} [RCLike π•œ] [SeminormedAddCommGroup E] [InnerProductSpace π•œ E] (x : E) :
      RCLike.re (inner x 0) = 0
      theorem inner_self_nonneg {π•œ : Type u_1} {E : Type u_2} [RCLike π•œ] [SeminormedAddCommGroup E] [InnerProductSpace π•œ E] {x : E} :
      0 ≀ RCLike.re (inner x x)
      @[simp]
      theorem inner_self_ofReal_re {π•œ : Type u_1} {E : Type u_2} [RCLike π•œ] [SeminormedAddCommGroup E] [InnerProductSpace π•œ E] (x : E) :
      ↑(RCLike.re (inner x x)) = inner x x
      theorem inner_self_eq_norm_sq_to_K {π•œ : Type u_1} {E : Type u_2} [RCLike π•œ] [SeminormedAddCommGroup E] [InnerProductSpace π•œ E] (x : E) :
      inner x x = ↑‖xβ€– ^ 2
      theorem inner_self_re_eq_norm {π•œ : Type u_1} {E : Type u_2} [RCLike π•œ] [SeminormedAddCommGroup E] [InnerProductSpace π•œ E] (x : E) :
      RCLike.re (inner x x) = β€–inner x xβ€–
      theorem inner_self_ofReal_norm {π•œ : Type u_1} {E : Type u_2} [RCLike π•œ] [SeminormedAddCommGroup E] [InnerProductSpace π•œ E] (x : E) :
      ↑‖inner x xβ€– = inner x x
      theorem norm_inner_symm {π•œ : Type u_1} {E : Type u_2} [RCLike π•œ] [SeminormedAddCommGroup E] [InnerProductSpace π•œ E] (x y : E) :
      @[simp]
      theorem inner_neg_left {π•œ : Type u_1} {E : Type u_2} [RCLike π•œ] [SeminormedAddCommGroup E] [InnerProductSpace π•œ E] (x y : E) :
      inner (-x) y = -inner x y
      @[simp]
      theorem inner_neg_right {π•œ : Type u_1} {E : Type u_2} [RCLike π•œ] [SeminormedAddCommGroup E] [InnerProductSpace π•œ E] (x y : E) :
      inner x (-y) = -inner x y
      theorem inner_neg_neg {π•œ : Type u_1} {E : Type u_2} [RCLike π•œ] [SeminormedAddCommGroup E] [InnerProductSpace π•œ E] (x y : E) :
      inner (-x) (-y) = inner x y
      theorem inner_self_conj {π•œ : Type u_1} {E : Type u_2} [RCLike π•œ] [SeminormedAddCommGroup E] [InnerProductSpace π•œ E] (x : E) :
      (starRingEnd π•œ) (inner x x) = inner x x
      theorem inner_sub_left {π•œ : Type u_1} {E : Type u_2} [RCLike π•œ] [SeminormedAddCommGroup E] [InnerProductSpace π•œ E] (x y z : E) :
      inner (x - y) z = inner x z - inner y z
      theorem inner_sub_right {π•œ : Type u_1} {E : Type u_2} [RCLike π•œ] [SeminormedAddCommGroup E] [InnerProductSpace π•œ E] (x y z : E) :
      inner x (y - z) = inner x y - inner x z
      theorem inner_mul_symm_re_eq_norm {π•œ : Type u_1} {E : Type u_2} [RCLike π•œ] [SeminormedAddCommGroup E] [InnerProductSpace π•œ E] (x y : E) :
      RCLike.re (inner x y * inner y x) = β€–inner x y * inner y xβ€–
      theorem inner_add_add_self {π•œ : Type u_1} {E : Type u_2} [RCLike π•œ] [SeminormedAddCommGroup E] [InnerProductSpace π•œ E] (x y : E) :
      inner (x + y) (x + y) = inner x x + inner x y + inner y x + inner y y

      Expand βŸͺx + y, x + y⟫

      theorem real_inner_add_add_self {F : Type u_3} [SeminormedAddCommGroup F] [InnerProductSpace ℝ F] (x y : F) :
      inner (x + y) (x + y) = inner x x + 2 * inner x y + inner y y

      Expand βŸͺx + y, x + y⟫_ℝ

      theorem inner_sub_sub_self {π•œ : Type u_1} {E : Type u_2} [RCLike π•œ] [SeminormedAddCommGroup E] [InnerProductSpace π•œ E] (x y : E) :
      inner (x - y) (x - y) = inner x x - inner x y - inner y x + inner y y
      theorem real_inner_sub_sub_self {F : Type u_3} [SeminormedAddCommGroup F] [InnerProductSpace ℝ F] (x y : F) :
      inner (x - y) (x - y) = inner x x - 2 * inner x y + inner y y

      Expand βŸͺx - y, x - y⟫_ℝ

      theorem parallelogram_law {π•œ : Type u_1} {E : Type u_2} [RCLike π•œ] [SeminormedAddCommGroup E] [InnerProductSpace π•œ E] {x y : E} :
      inner (x + y) (x + y) + inner (x - y) (x - y) = 2 * (inner x x + inner y y)

      Parallelogram law

      theorem inner_mul_inner_self_le {π•œ : Type u_1} {E : Type u_2} [RCLike π•œ] [SeminormedAddCommGroup E] [InnerProductSpace π•œ E] (x y : E) :
      β€–inner x yβ€– * β€–inner y xβ€– ≀ RCLike.re (inner x x) * RCLike.re (inner y y)

      Cauchy–Schwarz inequality.

      Cauchy–Schwarz inequality for real inner products.

      @[simp]
      theorem inner_self_eq_zero {π•œ : Type u_1} {E : Type u_2} [RCLike π•œ] [NormedAddCommGroup E] [InnerProductSpace π•œ E] {x : E} :
      inner x x = 0 ↔ x = 0
      theorem inner_self_ne_zero {π•œ : Type u_1} {E : Type u_2} [RCLike π•œ] [NormedAddCommGroup E] [InnerProductSpace π•œ E] {x : E} :
      theorem ext_inner_left (π•œ : Type u_1) {E : Type u_2} [RCLike π•œ] [NormedAddCommGroup E] [InnerProductSpace π•œ E] {x y : E} (h : βˆ€ (v : E), inner v x = inner v y) :
      x = y
      theorem ext_inner_right (π•œ : Type u_1) {E : Type u_2} [RCLike π•œ] [NormedAddCommGroup E] [InnerProductSpace π•œ E] {x y : E} (h : βˆ€ (v : E), inner x v = inner y v) :
      x = y
      @[simp]
      theorem inner_self_nonpos {π•œ : Type u_1} {E : Type u_2} [RCLike π•œ] [NormedAddCommGroup E] [InnerProductSpace π•œ E] {x : E} :
      RCLike.re (inner x x) ≀ 0 ↔ x = 0
      theorem linearIndependent_of_ne_zero_of_inner_eq_zero {π•œ : Type u_1} {E : Type u_2} [RCLike π•œ] [NormedAddCommGroup E] [InnerProductSpace π•œ E] {ΞΉ : Type u_4} {v : ΞΉ β†’ E} (hz : βˆ€ (i : ΞΉ), v i β‰  0) (ho : Pairwise fun (i j : ΞΉ) => inner (v i) (v j) = 0) :

      A family of vectors is linearly independent if they are nonzero and orthogonal.

      theorem norm_eq_sqrt_inner {π•œ : Type u_1} {E : Type u_2} [RCLike π•œ] [SeminormedAddCommGroup E] [InnerProductSpace π•œ E] (x : E) :
      β€–xβ€– = √(RCLike.re (inner x x))
      theorem inner_self_eq_norm_mul_norm {π•œ : Type u_1} {E : Type u_2} [RCLike π•œ] [SeminormedAddCommGroup E] [InnerProductSpace π•œ E] (x : E) :
      RCLike.re (inner x x) = β€–xβ€– * β€–xβ€–
      theorem inner_self_eq_norm_sq {π•œ : Type u_1} {E : Type u_2} [RCLike π•œ] [SeminormedAddCommGroup E] [InnerProductSpace π•œ E] (x : E) :
      RCLike.re (inner x x) = β€–xβ€– ^ 2
      theorem norm_add_sq {π•œ : Type u_1} {E : Type u_2} [RCLike π•œ] [SeminormedAddCommGroup E] [InnerProductSpace π•œ E] (x y : E) :
      β€–x + yβ€– ^ 2 = β€–xβ€– ^ 2 + 2 * RCLike.re (inner x y) + β€–yβ€– ^ 2

      Expand the square

      theorem norm_add_pow_two {π•œ : Type u_1} {E : Type u_2} [RCLike π•œ] [SeminormedAddCommGroup E] [InnerProductSpace π•œ E] (x y : E) :
      β€–x + yβ€– ^ 2 = β€–xβ€– ^ 2 + 2 * RCLike.re (inner x y) + β€–yβ€– ^ 2

      Alias of norm_add_sq.


      Expand the square

      Expand the square

      Alias of norm_add_sq_real.


      Expand the square

      theorem norm_add_mul_self {π•œ : Type u_1} {E : Type u_2} [RCLike π•œ] [SeminormedAddCommGroup E] [InnerProductSpace π•œ E] (x y : E) :

      Expand the square

      theorem norm_sub_sq {π•œ : Type u_1} {E : Type u_2} [RCLike π•œ] [SeminormedAddCommGroup E] [InnerProductSpace π•œ E] (x y : E) :
      β€–x - yβ€– ^ 2 = β€–xβ€– ^ 2 - 2 * RCLike.re (inner x y) + β€–yβ€– ^ 2

      Expand the square

      theorem norm_sub_pow_two {π•œ : Type u_1} {E : Type u_2} [RCLike π•œ] [SeminormedAddCommGroup E] [InnerProductSpace π•œ E] (x y : E) :
      β€–x - yβ€– ^ 2 = β€–xβ€– ^ 2 - 2 * RCLike.re (inner x y) + β€–yβ€– ^ 2

      Alias of norm_sub_sq.


      Expand the square

      Expand the square

      Alias of norm_sub_sq_real.


      Expand the square

      theorem norm_sub_mul_self {π•œ : Type u_1} {E : Type u_2} [RCLike π•œ] [SeminormedAddCommGroup E] [InnerProductSpace π•œ E] (x y : E) :

      Expand the square

      theorem norm_inner_le_norm {π•œ : Type u_1} {E : Type u_2} [RCLike π•œ] [SeminormedAddCommGroup E] [InnerProductSpace π•œ E] (x y : E) :

      Cauchy–Schwarz inequality with norm

      theorem re_inner_le_norm {π•œ : Type u_1} {E : Type u_2} [RCLike π•œ] [SeminormedAddCommGroup E] [InnerProductSpace π•œ E] (x y : E) :

      Cauchy–Schwarz inequality with norm

      Cauchy–Schwarz inequality with norm

      theorem inner_eq_zero_of_left {π•œ : Type u_1} {E : Type u_2} [RCLike π•œ] [SeminormedAddCommGroup E] [InnerProductSpace π•œ E] {x : E} (y : E) (h : β€–xβ€– = 0) :
      inner x y = 0
      theorem inner_eq_zero_of_right {π•œ : Type u_1} {E : Type u_2} [RCLike π•œ] [SeminormedAddCommGroup E] [InnerProductSpace π•œ E] (x : E) {y : E} (h : β€–yβ€– = 0) :
      inner x y = 0

      Polarization identity: The real part of the inner product, in terms of the norm.

      Polarization identity: The real part of the inner product, in terms of the norm.

      theorem re_inner_eq_norm_add_mul_self_sub_norm_sub_mul_self_div_four {π•œ : Type u_1} {E : Type u_2} [RCLike π•œ] [SeminormedAddCommGroup E] [InnerProductSpace π•œ E] (x y : E) :
      RCLike.re (inner x y) = (β€–x + yβ€– * β€–x + yβ€– - β€–x - yβ€– * β€–x - yβ€–) / 4

      Polarization identity: The real part of the inner product, in terms of the norm.

      Polarization identity: The imaginary part of the inner product, in terms of the norm.

      theorem inner_eq_sum_norm_sq_div_four {π•œ : Type u_1} {E : Type u_2} [RCLike π•œ] [SeminormedAddCommGroup E] [InnerProductSpace π•œ E] (x y : E) :
      inner x y = (↑‖x + yβ€– ^ 2 - ↑‖x - yβ€– ^ 2 + (↑‖x - RCLike.I β€’ yβ€– ^ 2 - ↑‖x + RCLike.I β€’ yβ€– ^ 2) * RCLike.I) / 4

      Polarization identity: The inner product, in terms of the norm.

      Pythagorean theorem, if-and-if vector inner product form using square roots.

      Pythagorean theorem, vector inner product form.

      Pythagorean theorem, vector inner product form.

      Pythagorean theorem, subtracting vectors, if-and-only-if vector inner product form.

      Pythagorean theorem, subtracting vectors, if-and-if vector inner product form using square roots.

      Pythagorean theorem, subtracting vectors, vector inner product form.

      The sum and difference of two vectors are orthogonal if and only if they have the same norm.

      theorem norm_sub_eq_norm_add {π•œ : Type u_1} {E : Type u_2} [RCLike π•œ] [SeminormedAddCommGroup E] [InnerProductSpace π•œ E] {v w : E} (h : inner v w = 0) :

      Given two orthogonal vectors, their sum and difference have equal norms.

      The real inner product of two vectors, divided by the product of their norms, has absolute value at most 1.

      The inner product of a vector with a multiple of itself.

      The inner product of a vector with a multiple of itself.

      theorem isBoundedBilinearMap_inner {π•œ : Type u_1} {E : Type u_2} [RCLike π•œ] [SeminormedAddCommGroup E] [InnerProductSpace π•œ E] [NormedSpace ℝ E] [IsScalarTower ℝ π•œ E] :
      IsBoundedBilinearMap ℝ fun (p : E Γ— E) => inner p.1 p.2

      When an inner product space E over π•œ is considered as a real normed space, its inner product satisfies IsBoundedBilinearMap.

      In order to state these results, we need a NormedSpace ℝ E instance. We will later establish such an instance by restriction-of-scalars, InnerProductSpace.rclikeToReal π•œ E, but this instance may be not definitionally equal to some other β€œnatural” instance. So, we assume [NormedSpace ℝ E].

      theorem inner_sum_smul_sum_smul_of_sum_eq_zero {F : Type u_3} [SeminormedAddCommGroup F] [InnerProductSpace ℝ F] {ι₁ : Type u_4} {s₁ : Finset ι₁} {w₁ : ι₁ β†’ ℝ} (v₁ : ι₁ β†’ F) (h₁ : βˆ‘ i ∈ s₁, w₁ i = 0) {ΞΉβ‚‚ : Type u_5} {sβ‚‚ : Finset ΞΉβ‚‚} {wβ‚‚ : ΞΉβ‚‚ β†’ ℝ} (vβ‚‚ : ΞΉβ‚‚ β†’ F) (hβ‚‚ : βˆ‘ i ∈ sβ‚‚, wβ‚‚ i = 0) :
      inner (βˆ‘ i₁ ∈ s₁, w₁ i₁ β€’ v₁ i₁) (βˆ‘ iβ‚‚ ∈ sβ‚‚, wβ‚‚ iβ‚‚ β€’ vβ‚‚ iβ‚‚) = (-βˆ‘ i₁ ∈ s₁, βˆ‘ iβ‚‚ ∈ sβ‚‚, w₁ i₁ * wβ‚‚ iβ‚‚ * (β€–v₁ i₁ - vβ‚‚ iβ‚‚β€– * β€–v₁ i₁ - vβ‚‚ iβ‚‚β€–)) / 2

      The inner product of two weighted sums, where the weights in each sum add to 0, in terms of the norms of pairwise differences.

      theorem dist_div_norm_sq_smul {F : Type u_3} [NormedAddCommGroup F] [InnerProductSpace ℝ F] {x y : F} (hx : x β‰  0) (hy : y β‰  0) (R : ℝ) :

      Formula for the distance between the images of two nonzero points under an inversion with center zero. See also EuclideanGeometry.dist_inversion_inversion for inversions around a general point.

      theorem norm_inner_div_norm_mul_norm_eq_one_of_ne_zero_of_ne_zero_mul {π•œ : Type u_1} {E : Type u_2} [RCLike π•œ] [NormedAddCommGroup E] [InnerProductSpace π•œ E] {x : E} {r : π•œ} (hx : x β‰  0) (hr : r β‰  0) :

      The inner product of a nonzero vector with a nonzero multiple of itself, divided by the product of their norms, has absolute value

      The inner product of a nonzero vector with a nonzero multiple of itself, divided by the product of their norms, has absolute value

      The inner product of a nonzero vector with a positive multiple of itself, divided by the product of their norms, has value 1.

      The inner product of a nonzero vector with a negative multiple of itself, divided by the product of their norms, has value -1.

      theorem norm_inner_eq_norm_tfae {π•œ : Type u_1} {E : Type u_2} [RCLike π•œ] [NormedAddCommGroup E] [InnerProductSpace π•œ E] (x y : E) :
      [β€–inner x yβ€– = β€–xβ€– * β€–yβ€–, x = 0 ∨ y = (inner x y / inner x x) β€’ x, x = 0 ∨ βˆƒ (r : π•œ), y = r β€’ x, x = 0 ∨ y ∈ Submodule.span π•œ {x}].TFAE
      theorem norm_inner_eq_norm_iff {π•œ : Type u_1} {E : Type u_2} [RCLike π•œ] [NormedAddCommGroup E] [InnerProductSpace π•œ E] {x y : E} (hxβ‚€ : x β‰  0) (hyβ‚€ : y β‰  0) :
      β€–inner x yβ€– = β€–xβ€– * β€–yβ€– ↔ βˆƒ (r : π•œ), r β‰  0 ∧ y = r β€’ x

      If the inner product of two vectors is equal to the product of their norms, then the two vectors are multiples of each other. One form of the equality case for Cauchy-Schwarz. Compare inner_eq_norm_mul_iff, which takes the stronger hypothesis βŸͺx, y⟫ = β€–xβ€– * β€–yβ€–.

      theorem norm_inner_div_norm_mul_norm_eq_one_iff {π•œ : Type u_1} {E : Type u_2} [RCLike π•œ] [NormedAddCommGroup E] [InnerProductSpace π•œ E] (x y : E) :
      β€–inner x y / (↑‖xβ€– * ↑‖yβ€–)β€– = 1 ↔ x β‰  0 ∧ βˆƒ (r : π•œ), r β‰  0 ∧ y = r β€’ x

      The inner product of two vectors, divided by the product of their norms, has absolute value 1 if and only if they are nonzero and one is a multiple of the other. One form of equality case for Cauchy-Schwarz.

      The inner product of two vectors, divided by the product of their norms, has absolute value 1 if and only if they are nonzero and one is a multiple of the other. One form of equality case for Cauchy-Schwarz.

      theorem inner_eq_norm_mul_iff_div {π•œ : Type u_1} {E : Type u_2} [RCLike π•œ] [NormedAddCommGroup E] [InnerProductSpace π•œ E] {x y : E} (hβ‚€ : x β‰  0) :
      inner x y = ↑‖xβ€– * ↑‖yβ€– ↔ (↑‖yβ€– / ↑‖xβ€–) β€’ x = y
      theorem inner_eq_norm_mul_iff {π•œ : Type u_1} {E : Type u_2} [RCLike π•œ] [NormedAddCommGroup E] [InnerProductSpace π•œ E] {x y : E} :

      If the inner product of two vectors is equal to the product of their norms (i.e., βŸͺx, y⟫ = β€–xβ€– * β€–yβ€–), then the two vectors are nonnegative real multiples of each other. One form of the equality case for Cauchy-Schwarz. Compare norm_inner_eq_norm_iff, which takes the weaker hypothesis abs βŸͺx, y⟫ = β€–xβ€– * β€–yβ€–.

      If the inner product of two vectors is equal to the product of their norms (i.e., βŸͺx, y⟫ = β€–xβ€– * β€–yβ€–), then the two vectors are nonnegative real multiples of each other. One form of the equality case for Cauchy-Schwarz. Compare norm_inner_eq_norm_iff, which takes the weaker hypothesis abs βŸͺx, y⟫ = β€–xβ€– * β€–yβ€–.

      The inner product of two vectors, divided by the product of their norms, has value 1 if and only if they are nonzero and one is a positive multiple of the other.

      The inner product of two vectors, divided by the product of their norms, has value -1 if and only if they are nonzero and one is a negative multiple of the other.

      theorem inner_eq_one_iff_of_norm_one {π•œ : Type u_1} {E : Type u_2} [RCLike π•œ] [NormedAddCommGroup E] [InnerProductSpace π•œ E] {x y : E} (hx : β€–xβ€– = 1) (hy : β€–yβ€– = 1) :
      inner x y = 1 ↔ x = y

      If the inner product of two unit vectors is 1, then the two vectors are equal. One form of the equality case for Cauchy-Schwarz.

      If the inner product of two unit vectors is strictly less than 1, then the two vectors are distinct. One form of the equality case for Cauchy-Schwarz.

      theorem eq_of_norm_le_re_inner_eq_norm_sq {π•œ : Type u_1} {E : Type u_2} [RCLike π•œ] [NormedAddCommGroup E] [InnerProductSpace π•œ E] {x y : E} (hle : β€–xβ€– ≀ β€–yβ€–) (h : RCLike.re (inner x y) = β€–yβ€– ^ 2) :
      x = y

      The sphere of radius r = β€–yβ€– is tangent to the plane βŸͺx, y⟫ = β€–yβ€– ^ 2 at x = y.

      instance RCLike.innerProductSpace {π•œ : Type u_1} [RCLike π•œ] :
      InnerProductSpace π•œ π•œ

      A field π•œ satisfying RCLike is itself a π•œ-inner product space.

      Equations
      @[simp]
      theorem RCLike.inner_apply {π•œ : Type u_1} [RCLike π•œ] (x y : π•œ) :
      inner x y = (starRingEnd π•œ) x * y
      def Inner.rclikeToReal (π•œ : Type u_1) (E : Type u_2) [RCLike π•œ] [SeminormedAddCommGroup E] [InnerProductSpace π•œ E] :

      A general inner product implies a real inner product. This is not registered as an instance since π•œ does not appear in the return type Inner ℝ E.

      Equations
      Instances For
        @[reducible, inline]
        abbrev InnerProductSpace.rclikeToReal (π•œ : Type u_1) (E : Type u_2) [RCLike π•œ] [SeminormedAddCommGroup E] [InnerProductSpace π•œ E] :

        A general inner product space structure implies a real inner product structure.

        This is not registered as an instance since

        However, it can be used in a proof to obtain a real inner product space structure from a given π•œ-inner product space structure.

        Equations
        Instances For
          theorem real_inner_eq_re_inner (π•œ : Type u_1) {E : Type u_2} [RCLike π•œ] [SeminormedAddCommGroup E] [InnerProductSpace π•œ E] (x y : E) :
          inner x y = RCLike.re (inner x y)
          theorem real_inner_I_smul_self (π•œ : Type u_1) {E : Type u_2} [RCLike π•œ] [SeminormedAddCommGroup E] [InnerProductSpace π•œ E] (x : E) :

          A complex inner product implies a real inner product. This cannot be an instance since it creates a diamond with PiLp.innerProductSpace because re (sum i, inner (x i) (y i)) and sum i, re (inner (x i) (y i)) are not defeq.

          Equations
          Instances For
            @[simp]
            theorem Complex.inner (w z : β„‚) :
            inner w z = ((starRingEnd β„‚) w * z).re
            noncomputable instance RCLike.toInnerProductSpaceReal {π•œ : Type u_1} [RCLike π•œ] :

            An RCLike field is a real inner product space.

            Equations

            Continuity of the inner product #

            theorem continuous_inner {π•œ : Type u_1} {E : Type u_2} [RCLike π•œ] [SeminormedAddCommGroup E] [InnerProductSpace π•œ E] :
            Continuous fun (p : E Γ— E) => inner p.1 p.2
            theorem Filter.Tendsto.inner {π•œ : Type u_1} {E : Type u_2} [RCLike π•œ] [SeminormedAddCommGroup E] [InnerProductSpace π•œ E] {Ξ± : Type u_4} {f g : Ξ± β†’ E} {l : Filter Ξ±} {x y : E} (hf : Filter.Tendsto f l (nhds x)) (hg : Filter.Tendsto g l (nhds y)) :
            Filter.Tendsto (fun (t : Ξ±) => inner (f t) (g t)) l (nhds (inner x y))
            theorem ContinuousWithinAt.inner {π•œ : Type u_1} {E : Type u_2} [RCLike π•œ] [SeminormedAddCommGroup E] [InnerProductSpace π•œ E] {Ξ± : Type u_4} [TopologicalSpace Ξ±] {f g : Ξ± β†’ E} {x : Ξ±} {s : Set Ξ±} (hf : ContinuousWithinAt f s x) (hg : ContinuousWithinAt g s x) :
            ContinuousWithinAt (fun (t : Ξ±) => inner (f t) (g t)) s x
            theorem ContinuousAt.inner {π•œ : Type u_1} {E : Type u_2} [RCLike π•œ] [SeminormedAddCommGroup E] [InnerProductSpace π•œ E] {Ξ± : Type u_4} [TopologicalSpace Ξ±] {f g : Ξ± β†’ E} {x : Ξ±} (hf : ContinuousAt f x) (hg : ContinuousAt g x) :
            ContinuousAt (fun (t : Ξ±) => inner (f t) (g t)) x
            theorem ContinuousOn.inner {π•œ : Type u_1} {E : Type u_2} [RCLike π•œ] [SeminormedAddCommGroup E] [InnerProductSpace π•œ E] {Ξ± : Type u_4} [TopologicalSpace Ξ±] {f g : Ξ± β†’ E} {s : Set Ξ±} (hf : ContinuousOn f s) (hg : ContinuousOn g s) :
            ContinuousOn (fun (t : Ξ±) => inner (f t) (g t)) s
            theorem Continuous.inner {π•œ : Type u_1} {E : Type u_2} [RCLike π•œ] [SeminormedAddCommGroup E] [InnerProductSpace π•œ E] {Ξ± : Type u_4} [TopologicalSpace Ξ±] {f g : Ξ± β†’ E} (hf : Continuous f) (hg : Continuous g) :
            Continuous fun (t : Ξ±) => inner (f t) (g t)