Documentation

Mathlib.Analysis.InnerProductSpace.Positive

Positive operators #

In this file we define when an operator in a Hilbert space is positive. We follow Bourbaki's choice of requiring self adjointness in the definition.

Main definitions #

Main statements #

References #

Tags #

Positive operator

def LinearMap.IsPositive {𝕜 : Type u_1} {E : Type u_2} [RCLike 𝕜] [NormedAddCommGroup E] [InnerProductSpace 𝕜 E] (T : E →ₗ[𝕜] E) :

A linear operator T on a Hilbert space is positive if it is symmetric and ∀ x, 0 ≤ re ⟪T x, x⟫.

Equations
    Instances For
      theorem LinearMap.IsPositive.isSymmetric {𝕜 : Type u_1} {E : Type u_2} [RCLike 𝕜] [NormedAddCommGroup E] [InnerProductSpace 𝕜 E] {T : E →ₗ[𝕜] E} (hT : T.IsPositive) :
      theorem LinearMap.IsPositive.re_inner_nonneg_left {𝕜 : Type u_1} {E : Type u_2} [RCLike 𝕜] [NormedAddCommGroup E] [InnerProductSpace 𝕜 E] {T : E →ₗ[𝕜] E} (hT : T.IsPositive) (x : E) :
      0 RCLike.re (inner 𝕜 (T x) x)
      theorem LinearMap.IsPositive.re_inner_nonneg_right {𝕜 : Type u_1} {E : Type u_2} [RCLike 𝕜] [NormedAddCommGroup E] [InnerProductSpace 𝕜 E] {T : E →ₗ[𝕜] E} (hT : T.IsPositive) (x : E) :
      0 RCLike.re (inner 𝕜 x (T x))
      theorem LinearMap.isPositive_iff_complex {E' : Type u_4} [NormedAddCommGroup E'] [InnerProductSpace E'] (T : E' →ₗ[] E') :
      T.IsPositive ∀ (x : E'), (RCLike.re (inner (T x) x)) = inner (T x) x 0 RCLike.re (inner (T x) x)
      theorem LinearMap.IsPositive.adjoint_eq {𝕜 : Type u_1} {E : Type u_2} [RCLike 𝕜] [NormedAddCommGroup E] [InnerProductSpace 𝕜 E] [FiniteDimensional 𝕜 E] {T : E →ₗ[𝕜] E} (hT : T.IsPositive) :
      theorem LinearMap.isPositive_iff {𝕜 : Type u_1} {E : Type u_2} [RCLike 𝕜] [NormedAddCommGroup E] [InnerProductSpace 𝕜 E] (T : E →ₗ[𝕜] E) :
      T.IsPositive T.IsSymmetric ∀ (x : E), 0 inner 𝕜 (T x) x
      theorem LinearMap.IsPositive.inner_nonneg_left {𝕜 : Type u_1} {E : Type u_2} [RCLike 𝕜] [NormedAddCommGroup E] [InnerProductSpace 𝕜 E] {T : E →ₗ[𝕜] E} (hT : T.IsPositive) (x : E) :
      0 inner 𝕜 (T x) x
      theorem LinearMap.IsPositive.inner_nonneg_right {𝕜 : Type u_1} {E : Type u_2} [RCLike 𝕜] [NormedAddCommGroup E] [InnerProductSpace 𝕜 E] {T : E →ₗ[𝕜] E} (hT : T.IsPositive) (x : E) :
      0 inner 𝕜 x (T x)
      @[simp]
      theorem LinearMap.isPositive_zero {𝕜 : Type u_1} {E : Type u_2} [RCLike 𝕜] [NormedAddCommGroup E] [InnerProductSpace 𝕜 E] :
      @[simp]
      theorem LinearMap.isPositive_one {𝕜 : Type u_1} {E : Type u_2} [RCLike 𝕜] [NormedAddCommGroup E] [InnerProductSpace 𝕜 E] :
      @[simp]
      theorem LinearMap.isPositive_id {𝕜 : Type u_1} {E : Type u_2} [RCLike 𝕜] [NormedAddCommGroup E] [InnerProductSpace 𝕜 E] :
      @[simp]
      theorem LinearMap.isPositive_natCast {𝕜 : Type u_1} {E : Type u_2} [RCLike 𝕜] [NormedAddCommGroup E] [InnerProductSpace 𝕜 E] {n : } :
      (↑n).IsPositive
      theorem LinearMap.IsPositive.add {𝕜 : Type u_1} {E : Type u_2} [RCLike 𝕜] [NormedAddCommGroup E] [InnerProductSpace 𝕜 E] {T S : E →ₗ[𝕜] E} (hT : T.IsPositive) (hS : S.IsPositive) :
      theorem LinearMap.isPositive_sum {𝕜 : Type u_1} {E : Type u_2} [RCLike 𝕜] [NormedAddCommGroup E] [InnerProductSpace 𝕜 E] {ι : Type u_4} {T : ιE →ₗ[𝕜] E} (s : Finset ι) (hT : is, (T i).IsPositive) :
      (∑ is, T i).IsPositive
      theorem LinearMap.IsPositive.ne_zero_iff {𝕜 : Type u_1} {E : Type u_2} [RCLike 𝕜] [NormedAddCommGroup E] [InnerProductSpace 𝕜 E] {T : E →ₗ[𝕜] E} (hT : T.IsPositive) :
      T 0 ∃ (x : E), 0 < inner 𝕜 (T x) x
      theorem LinearMap.IsPositive.smul_of_nonneg {𝕜 : Type u_1} {E : Type u_2} [RCLike 𝕜] [NormedAddCommGroup E] [InnerProductSpace 𝕜 E] {T : E →ₗ[𝕜] E} (hT : T.IsPositive) {c : 𝕜} (hc : 0 c) :
      theorem LinearMap.IsPositive.isPositive_smul_iff {𝕜 : Type u_1} {E : Type u_2} [RCLike 𝕜] [NormedAddCommGroup E] [InnerProductSpace 𝕜 E] {T : E →ₗ[𝕜] E} (hT : T.IsPositive) (hT' : T 0) {α : 𝕜} :
      (α T).IsPositive 0 α
      theorem LinearMap.IsPositive.nonneg_eigenvalues {𝕜 : Type u_1} {E : Type u_2} [RCLike 𝕜] [NormedAddCommGroup E] [InnerProductSpace 𝕜 E] [FiniteDimensional 𝕜 E] {T : E →ₗ[𝕜] E} {n : } (hT : T.IsPositive) (hn : Module.finrank 𝕜 E = n) (i : Fin n) :
      0 .eigenvalues hn i
      instance LinearMap.instLoewnerPartialOrder {𝕜 : Type u_1} {E : Type u_2} [RCLike 𝕜] [NormedAddCommGroup E] [InnerProductSpace 𝕜 E] :

      The (Loewner) partial order on linear maps on a Hilbert space determined by f ≤ g if and only if g - f is a positive linear map (in the sense of LinearMap.IsPositive).

      Equations
        theorem LinearMap.le_def {𝕜 : Type u_1} {E : Type u_2} [RCLike 𝕜] [NormedAddCommGroup E] [InnerProductSpace 𝕜 E] (f g : E →ₗ[𝕜] E) :
        f g (g - f).IsPositive
        theorem LinearMap.nonneg_iff_isPositive {𝕜 : Type u_1} {E : Type u_2} [RCLike 𝕜] [NormedAddCommGroup E] [InnerProductSpace 𝕜 E] (f : E →ₗ[𝕜] E) :

        An idempotent linear map is positive iff it is symmetric.

        @[simp]
        theorem Matrix.isPositive_toEuclideanLin_iff {𝕜 : Type u_1} [RCLike 𝕜] {n : Type u_4} [Fintype n] [DecidableEq n] {A : Matrix n n 𝕜} :

        A.toEuclideanLin is positive if and only if A is positive semi-definite.

        @[simp]
        theorem LinearMap.posSemidef_toMatrix_iff {𝕜 : Type u_1} {E : Type u_2} [RCLike 𝕜] [NormedAddCommGroup E] [InnerProductSpace 𝕜 E] {ι : Type u_4} [Fintype ι] [DecidableEq ι] {A : E →ₗ[𝕜] E} (b : OrthonormalBasis ι 𝕜 E) :

        A.toMatrix is positive semi-definite if and only if A is positive.

        A symmetric projection is positive.

        @[deprecated LinearMap.IsSymmetricProjection.isPositive (since := "2025-10-17")]

        Alias of LinearMap.IsSymmetricProjection.isPositive.


        A symmetric projection is positive.

        @[deprecated LinearMap.IsSymmetricProjection.isPositive (since := "2025-08-19")]

        A star projection operator is positive.

        def ContinuousLinearMap.IsPositive {𝕜 : Type u_1} {E : Type u_2} [RCLike 𝕜] [NormedAddCommGroup E] [InnerProductSpace 𝕜 E] (T : E →L[𝕜] E) :

        A continuous linear endomorphism T of a Hilbert space is positive if it is symmetric and ∀ x, 0 ≤ re ⟪T x, x⟫.

        Equations
          Instances For
            theorem ContinuousLinearMap.isPositive_def {𝕜 : Type u_1} {E : Type u_2} [RCLike 𝕜] [NormedAddCommGroup E] [InnerProductSpace 𝕜 E] {T : E →L[𝕜] E} :
            T.IsPositive (↑T).IsSymmetric ∀ (x : E), 0 T.reApplyInnerSelf x
            theorem ContinuousLinearMap.isPositive_def' {𝕜 : Type u_1} {E : Type u_2} [RCLike 𝕜] [NormedAddCommGroup E] [InnerProductSpace 𝕜 E] [CompleteSpace E] {T : E →L[𝕜] E} :

            In a complete space, a continuous linear endomorphism T is positive if it is symmetric and ∀ x, 0 ≤ re ⟪T x, x⟫.

            theorem ContinuousLinearMap.IsPositive.isSymmetric {𝕜 : Type u_1} {E : Type u_2} [RCLike 𝕜] [NormedAddCommGroup E] [InnerProductSpace 𝕜 E] {T : E →L[𝕜] E} (hT : T.IsPositive) :
            theorem ContinuousLinearMap.IsPositive.inner_left_eq_inner_right {𝕜 : Type u_1} {E : Type u_2} [RCLike 𝕜] [NormedAddCommGroup E] [InnerProductSpace 𝕜 E] {T : E →L[𝕜] E} (hT : T.IsPositive) (x y : E) :
            inner 𝕜 (T x) y = inner 𝕜 x (T y)
            theorem ContinuousLinearMap.IsPositive.re_inner_nonneg_left {𝕜 : Type u_1} {E : Type u_2} [RCLike 𝕜] [NormedAddCommGroup E] [InnerProductSpace 𝕜 E] {T : E →L[𝕜] E} (hT : T.IsPositive) (x : E) :
            0 RCLike.re (inner 𝕜 (T x) x)
            theorem ContinuousLinearMap.IsPositive.toLinearMap {𝕜 : Type u_1} {E : Type u_2} [RCLike 𝕜] [NormedAddCommGroup E] [InnerProductSpace 𝕜 E] (T : E →L[𝕜] E) :
            T.IsPositive(↑T).IsPositive

            Alias of the reverse direction of ContinuousLinearMap.isPositive_toLinearMap_iff.

            theorem ContinuousLinearMap.IsPositive.re_inner_nonneg_right {𝕜 : Type u_1} {E : Type u_2} [RCLike 𝕜] [NormedAddCommGroup E] [InnerProductSpace 𝕜 E] {T : E →L[𝕜] E} (hT : T.IsPositive) (x : E) :
            0 RCLike.re (inner 𝕜 x (T x))
            theorem ContinuousLinearMap.isPositive_iff {𝕜 : Type u_1} {E : Type u_2} [RCLike 𝕜] [NormedAddCommGroup E] [InnerProductSpace 𝕜 E] (T : E →L[𝕜] E) :
            T.IsPositive (↑T).IsSymmetric ∀ (x : E), 0 inner 𝕜 (T x) x

            An operator is positive iff it is symmetric and 0 ≤ ⟪T x, x⟫.

            For the version with IsSelfAdjoint instead of IsSymmetric, see ContinuousLinearMap.isPositive_iff'.

            theorem ContinuousLinearMap.isPositive_iff' {𝕜 : Type u_1} {E : Type u_2} [RCLike 𝕜] [NormedAddCommGroup E] [InnerProductSpace 𝕜 E] [CompleteSpace E] (T : E →L[𝕜] E) :
            T.IsPositive IsSelfAdjoint T ∀ (x : E), 0 inner 𝕜 (T x) x

            An operator is positive iff it is self-adjoint and 0 ≤ ⟪T x, x⟫.

            For the version with IsSymmetric instead of IsSelfAdjoint, see ContinuousLinearMap.isPositive_iff.

            theorem ContinuousLinearMap.IsPositive.inner_nonneg_left {𝕜 : Type u_1} {E : Type u_2} [RCLike 𝕜] [NormedAddCommGroup E] [InnerProductSpace 𝕜 E] {T : E →L[𝕜] E} (hT : T.IsPositive) (x : E) :
            0 inner 𝕜 (T x) x
            theorem ContinuousLinearMap.IsPositive.inner_nonneg_right {𝕜 : Type u_1} {E : Type u_2} [RCLike 𝕜] [NormedAddCommGroup E] [InnerProductSpace 𝕜 E] {T : E →L[𝕜] E} (hT : T.IsPositive) (x : E) :
            0 inner 𝕜 x (T x)
            @[simp]
            theorem ContinuousLinearMap.isPositive_natCast {𝕜 : Type u_1} {E : Type u_2} [RCLike 𝕜] [NormedAddCommGroup E] [InnerProductSpace 𝕜 E] {n : } :
            (↑n).IsPositive
            theorem ContinuousLinearMap.IsPositive.add {𝕜 : Type u_1} {E : Type u_2} [RCLike 𝕜] [NormedAddCommGroup E] [InnerProductSpace 𝕜 E] {T S : E →L[𝕜] E} (hT : T.IsPositive) (hS : S.IsPositive) :
            theorem ContinuousLinearMap.isPositive_sum {𝕜 : Type u_1} {E : Type u_2} [RCLike 𝕜] [NormedAddCommGroup E] [InnerProductSpace 𝕜 E] {ι : Type u_4} {T : ιE →L[𝕜] E} (s : Finset ι) (hT : is, (T i).IsPositive) :
            (∑ is, T i).IsPositive
            theorem ContinuousLinearMap.IsPositive.smul_of_nonneg {𝕜 : Type u_1} {E : Type u_2} [RCLike 𝕜] [NormedAddCommGroup E] [InnerProductSpace 𝕜 E] {T : E →L[𝕜] E} (hT : T.IsPositive) {c : 𝕜} (hc : 0 c) :
            theorem ContinuousLinearMap.IsPositive.conj_adjoint {𝕜 : Type u_1} {E : Type u_2} {F : Type u_3} [RCLike 𝕜] [NormedAddCommGroup E] [NormedAddCommGroup F] [InnerProductSpace 𝕜 E] [InnerProductSpace 𝕜 F] [CompleteSpace E] [CompleteSpace F] {T : E →L[𝕜] E} (hT : T.IsPositive) (S : E →L[𝕜] F) :
            theorem ContinuousLinearMap.IsPositive.adjoint_conj {𝕜 : Type u_1} {E : Type u_2} {F : Type u_3} [RCLike 𝕜] [NormedAddCommGroup E] [NormedAddCommGroup F] [InnerProductSpace 𝕜 E] [InnerProductSpace 𝕜 F] [CompleteSpace E] [CompleteSpace F] {T : E →L[𝕜] E} (hT : T.IsPositive) (S : F →L[𝕜] E) :
            theorem LinearMap.IsPositive.conj_adjoint {𝕜 : Type u_1} {E : Type u_2} {F : Type u_3} [RCLike 𝕜] [NormedAddCommGroup E] [NormedAddCommGroup F] [InnerProductSpace 𝕜 E] [InnerProductSpace 𝕜 F] [FiniteDimensional 𝕜 E] [FiniteDimensional 𝕜 F] {T : E →ₗ[𝕜] E} (hT : T.IsPositive) (S : E →ₗ[𝕜] F) :
            theorem LinearMap.IsPositive.adjoint_conj {𝕜 : Type u_1} {E : Type u_2} {F : Type u_3} [RCLike 𝕜] [NormedAddCommGroup E] [NormedAddCommGroup F] [InnerProductSpace 𝕜 E] [InnerProductSpace 𝕜 F] [FiniteDimensional 𝕜 E] [FiniteDimensional 𝕜 F] {T : E →ₗ[𝕜] E} (hT : T.IsPositive) (S : F →ₗ[𝕜] E) :
            theorem ContinuousLinearMap.antilipschitz_of_forall_le_inner_map {𝕜 : Type u_1} [RCLike 𝕜] {H : Type u_4} [NormedAddCommGroup H] [InnerProductSpace 𝕜 H] (f : H →L[𝕜] H) {c : NNReal} (hc : 0 < c) (h : ∀ (x : H), x ^ 2 * c inner 𝕜 (f x) x) :
            theorem ContinuousLinearMap.isUnit_of_forall_le_norm_inner_map {𝕜 : Type u_1} {E : Type u_2} [RCLike 𝕜] [NormedAddCommGroup E] [InnerProductSpace 𝕜 E] [CompleteSpace E] (f : E →L[𝕜] E) {c : NNReal} (hc : 0 < c) (h : ∀ (x : E), x ^ 2 * c inner 𝕜 (f x) x) :

            The (Loewner) partial order on continuous linear maps on a Hilbert space determined by f ≤ g if and only if g - f is a positive linear map (in the sense of ContinuousLinearMap.IsPositive). With this partial order, the continuous linear maps form a StarOrderedRing.

            Equations
              theorem ContinuousLinearMap.le_def {𝕜 : Type u_1} {E : Type u_2} [RCLike 𝕜] [NormedAddCommGroup E] [InnerProductSpace 𝕜 E] (f g : E →L[𝕜] E) :
              f g (g - f).IsPositive
              theorem ContinuousLinearMap.coe_le_coe_iff {𝕜 : Type u_1} {E : Type u_2} [RCLike 𝕜] [NormedAddCommGroup E] [InnerProductSpace 𝕜 E] (f g : E →L[𝕜] E) :
              f g f g

              An idempotent operator is positive if and only if it is self-adjoint.

              A star projection operator is positive.

              The proof of this will soon be simplified to IsStarProjection.nonneg when we have StarOrderedRing (E →L[𝕜] E).

              For an idempotent operator p, TFAE:

              • (range p)ᗮ = ker p
              • p is normal
              • p is self-adjoint
              • p is positive

              U.starProjection ≤ V.starProjection iff U ≤ V.

              U.starProjection = V.starProjection iff U = V.

              theorem LinearMap.IsPositive.toLinearMap_symm {𝕜 : Type u_1} {E : Type u_2} [RCLike 𝕜] [NormedAddCommGroup E] [InnerProductSpace 𝕜 E] {T : E ≃ₗ[𝕜] E} (hT : (↑T).IsPositive) :
              @[simp]
              theorem LinearEquiv.isPositive_symm_iff {𝕜 : Type u_1} {E : Type u_2} [RCLike 𝕜] [NormedAddCommGroup E] [InnerProductSpace 𝕜 E] {T : E ≃ₗ[𝕜] E} :
              @[simp]
              theorem InnerProductSpace.isPositive_rankOne_self {𝕜 : Type u_1} {E : Type u_2} [RCLike 𝕜] [NormedAddCommGroup E] [InnerProductSpace 𝕜 E] (x : E) :
              (((rankOne 𝕜) x) x).IsPositive
              theorem ContinuousLinearMap.isPositive_iff_eq_sum_rankOne {𝕜 : Type u_1} {E : Type u_2} [RCLike 𝕜] [NormedAddCommGroup E] [InnerProductSpace 𝕜 E] [FiniteDimensional 𝕜 E] {T : E →L[𝕜] E} :
              T.IsPositive ∃ (m : ) (u : Fin mE), T = i : Fin m, ((InnerProductSpace.rankOne 𝕜) (u i)) (u i)

              In finite-dimensional spaces, a continuous linear map is positive iff it is equal to the sum of rank-one positive operators.

              theorem Matrix.posSemidef_iff_eq_sum_vecMulVec {𝕜 : Type u_1} [RCLike 𝕜] {n : Type u_4} [Finite n] {M : Matrix n n 𝕜} :
              M.PosSemidef ∃ (m : ) (v : Fin mn𝕜), M = i : Fin m, vecMulVec (v i) (star (v i))