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.isSelfAdjoint {𝕜 : Type u_1} {E : Type u_2} [RCLike 𝕜] [NormedAddCommGroup E] [InnerProductSpace 𝕜 E] [FiniteDimensional 𝕜 E] {T : E →ₗ[𝕜] E} (hT : T.IsPositive) :
    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
    @[simp]
    theorem LinearMap.isPositive_ofNat {𝕜 : Type u_1} {E : Type u_2} [RCLike 𝕜] [NormedAddCommGroup E] [InnerProductSpace 𝕜 E] {n : } [n.AtLeastTwo] :
    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
    @[implicit_reducible]
    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.

    theorem LinearMap.IsPositive.trace_nonneg {𝕜 : Type u_1} {E : Type u_2} [RCLike 𝕜] [NormedAddCommGroup E] [InnerProductSpace 𝕜 E] {f : E →ₗ[𝕜] E} (hf : f.IsPositive) :
    0 (trace 𝕜 E) f
    noncomputable def LinearMap.tracePositiveLinearMap (𝕜 : Type u_1) (E : Type u_2) [RCLike 𝕜] [NormedAddCommGroup E] [InnerProductSpace 𝕜 E] :
    (E →ₗ[𝕜] E) →ₚ[𝕜] 𝕜

    LinearMap.trace as a positive linear map.

    Equations
    Instances For
      @[simp]
      theorem LinearMap.tracePositiveLinearMap_apply {𝕜 : Type u_1} {E : Type u_2} [RCLike 𝕜] [NormedAddCommGroup E] [InnerProductSpace 𝕜 E] (x : E →ₗ[𝕜] E) :
      (tracePositiveLinearMap 𝕜 E) x = (trace 𝕜 E) x
      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]
        @[simp]
        @[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) :
        theorem ContinuousLinearMap.isPositive_iff_complex {E' : Type u_4} [NormedAddCommGroup E'] [InnerProductSpace E'] (T : E' →L[] E') :
        T.IsPositive ∀ (x : E'), (RCLike.re (inner (T x) x)) = inner (T x) x 0 RCLike.re (inner (T x) x)
        @[implicit_reducible]

        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
        theorem ContinuousLinearMap.nonneg_iff_isPositive {𝕜 : Type u_1} {E : Type u_2} [RCLike 𝕜] [NormedAddCommGroup E] [InnerProductSpace 𝕜 E] (f : E →L[𝕜] E) :

        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))