[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁶ : IsROrC 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : InnerProductSpace 𝕜 E
inst✝² : InnerProductSpace 𝕜 F
inst✝¹ : CompleteSpace E
inst✝ : CompleteSpace F
T : E →L[𝕜] E
hT : IsPositive T
x : E
⊢ 0 ≤ ↑re (inner x (↑T x))
[PROOFSTEP]
rw [inner_re_symm]
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁶ : IsROrC 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : InnerProductSpace 𝕜 E
inst✝² : InnerProductSpace 𝕜 F
inst✝¹ : CompleteSpace E
inst✝ : CompleteSpace F
T : E →L[𝕜] E
hT : IsPositive T
x : E
⊢ 0 ≤ ↑re (inner (↑T x) x)
[PROOFSTEP]
exact hT.inner_nonneg_left x
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁶ : IsROrC 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : InnerProductSpace 𝕜 E
inst✝² : InnerProductSpace 𝕜 F
inst✝¹ : CompleteSpace E
inst✝ : CompleteSpace F
⊢ IsPositive 0
[PROOFSTEP]
refine' ⟨isSelfAdjoint_zero _, fun x => _⟩
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁶ : IsROrC 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : InnerProductSpace 𝕜 E
inst✝² : InnerProductSpace 𝕜 F
inst✝¹ : CompleteSpace E
inst✝ : CompleteSpace F
x : E
⊢ 0 ≤ reApplyInnerSelf 0 x
[PROOFSTEP]
change 0 ≤ re ⟪_, _⟫
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁶ : IsROrC 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : InnerProductSpace 𝕜 E
inst✝² : InnerProductSpace 𝕜 F
inst✝¹ : CompleteSpace E
inst✝ : CompleteSpace F
x : E
⊢ 0 ≤ ↑re (inner (↑0 x) x)
[PROOFSTEP]
rw [zero_apply, inner_zero_left, ZeroHomClass.map_zero]
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁶ : IsROrC 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : InnerProductSpace 𝕜 E
inst✝² : InnerProductSpace 𝕜 F
inst✝¹ : CompleteSpace E
inst✝ : CompleteSpace F
T S : E →L[𝕜] E
hT : IsPositive T
hS : IsPositive S
⊢ IsPositive (T + S)
[PROOFSTEP]
refine' ⟨hT.isSelfAdjoint.add hS.isSelfAdjoint, fun x => _⟩
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁶ : IsROrC 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : InnerProductSpace 𝕜 E
inst✝² : InnerProductSpace 𝕜 F
inst✝¹ : CompleteSpace E
inst✝ : CompleteSpace F
T S : E →L[𝕜] E
hT : IsPositive T
hS : IsPositive S
x : E
⊢ 0 ≤ reApplyInnerSelf (T + S) x
[PROOFSTEP]
rw [reApplyInnerSelf, add_apply, inner_add_left, map_add]
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁶ : IsROrC 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : InnerProductSpace 𝕜 E
inst✝² : InnerProductSpace 𝕜 F
inst✝¹ : CompleteSpace E
inst✝ : CompleteSpace F
T S : E →L[𝕜] E
hT : IsPositive T
hS : IsPositive S
x : E
⊢ 0 ≤ ↑re (inner (↑T x) x) + ↑re (inner (↑S x) x)
[PROOFSTEP]
exact add_nonneg (hT.inner_nonneg_left x) (hS.inner_nonneg_left x)
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁶ : IsROrC 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : InnerProductSpace 𝕜 E
inst✝² : InnerProductSpace 𝕜 F
inst✝¹ : CompleteSpace E
inst✝ : CompleteSpace F
T : E →L[𝕜] E
hT : IsPositive T
S : E →L[𝕜] F
⊢ IsPositive (comp S (comp T (↑adjoint S)))
[PROOFSTEP]
refine' ⟨hT.isSelfAdjoint.conj_adjoint S, fun x => _⟩
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁶ : IsROrC 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : InnerProductSpace 𝕜 E
inst✝² : InnerProductSpace 𝕜 F
inst✝¹ : CompleteSpace E
inst✝ : CompleteSpace F
T : E →L[𝕜] E
hT : IsPositive T
S : E →L[𝕜] F
x : F
⊢ 0 ≤ reApplyInnerSelf (comp S (comp T (↑adjoint S))) x
[PROOFSTEP]
rw [reApplyInnerSelf, comp_apply, ← adjoint_inner_right]
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁶ : IsROrC 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : InnerProductSpace 𝕜 E
inst✝² : InnerProductSpace 𝕜 F
inst✝¹ : CompleteSpace E
inst✝ : CompleteSpace F
T : E →L[𝕜] E
hT : IsPositive T
S : E →L[𝕜] F
x : F
⊢ 0 ≤ ↑re (inner (↑(comp T (↑adjoint S)) x) (↑(↑adjoint S) x))
[PROOFSTEP]
exact hT.inner_nonneg_left _
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁶ : IsROrC 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : InnerProductSpace 𝕜 E
inst✝² : InnerProductSpace 𝕜 F
inst✝¹ : CompleteSpace E
inst✝ : CompleteSpace F
T : E →L[𝕜] E
hT : IsPositive T
S : F →L[𝕜] E
⊢ IsPositive (comp (↑adjoint S) (comp T S))
[PROOFSTEP]
convert hT.conj_adjoint (S†)
[GOAL]
case h.e'_7.h.e'_24.h.e'_24
𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁶ : IsROrC 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : InnerProductSpace 𝕜 E
inst✝² : InnerProductSpace 𝕜 F
inst✝¹ : CompleteSpace E
inst✝ : CompleteSpace F
T : E →L[𝕜] E
hT : IsPositive T
S : F →L[𝕜] E
⊢ S = ↑adjoint (↑adjoint S)
[PROOFSTEP]
rw [adjoint_adjoint]
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁷ : IsROrC 𝕜
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : InnerProductSpace 𝕜 E
inst✝³ : InnerProductSpace 𝕜 F
inst✝² : CompleteSpace E
inst✝¹ : CompleteSpace F
U : Submodule 𝕜 E
T : E →L[𝕜] E
hT : IsPositive T
inst✝ : CompleteSpace { x // x ∈ U }
⊢ IsPositive
    (comp (Submodule.subtypeL U)
      (comp (orthogonalProjection U) (comp T (comp (Submodule.subtypeL U) (orthogonalProjection U)))))
[PROOFSTEP]
have := hT.conj_adjoint (U.subtypeL ∘L orthogonalProjection U)
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁷ : IsROrC 𝕜
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : InnerProductSpace 𝕜 E
inst✝³ : InnerProductSpace 𝕜 F
inst✝² : CompleteSpace E
inst✝¹ : CompleteSpace F
U : Submodule 𝕜 E
T : E →L[𝕜] E
hT : IsPositive T
inst✝ : CompleteSpace { x // x ∈ U }
this :
  IsPositive
    (comp (comp (Submodule.subtypeL U) (orthogonalProjection U))
      (comp T (↑adjoint (comp (Submodule.subtypeL U) (orthogonalProjection U)))))
⊢ IsPositive
    (comp (Submodule.subtypeL U)
      (comp (orthogonalProjection U) (comp T (comp (Submodule.subtypeL U) (orthogonalProjection U)))))
[PROOFSTEP]
rwa [(orthogonalProjection_isSelfAdjoint U).adjoint_eq] at this 
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁷ : IsROrC 𝕜
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : InnerProductSpace 𝕜 E
inst✝³ : InnerProductSpace 𝕜 F
inst✝² : CompleteSpace E
inst✝¹ : CompleteSpace F
T : E →L[𝕜] E
hT : IsPositive T
U : Submodule 𝕜 E
inst✝ : CompleteSpace { x // x ∈ U }
⊢ IsPositive (comp (orthogonalProjection U) (comp T (Submodule.subtypeL U)))
[PROOFSTEP]
have := hT.conj_adjoint (orthogonalProjection U : E →L[𝕜] U)
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁷ : IsROrC 𝕜
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : InnerProductSpace 𝕜 E
inst✝³ : InnerProductSpace 𝕜 F
inst✝² : CompleteSpace E
inst✝¹ : CompleteSpace F
T : E →L[𝕜] E
hT : IsPositive T
U : Submodule 𝕜 E
inst✝ : CompleteSpace { x // x ∈ U }
this : IsPositive (comp (orthogonalProjection U) (comp T (↑adjoint (orthogonalProjection U))))
⊢ IsPositive (comp (orthogonalProjection U) (comp T (Submodule.subtypeL U)))
[PROOFSTEP]
rwa [U.adjoint_orthogonalProjection] at this 
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁹ : IsROrC 𝕜
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedAddCommGroup F
inst✝⁶ : InnerProductSpace 𝕜 E
inst✝⁵ : InnerProductSpace 𝕜 F
inst✝⁴ : CompleteSpace E
inst✝³ : CompleteSpace F
E' : Type u_4
inst✝² : NormedAddCommGroup E'
inst✝¹ : InnerProductSpace ℂ E'
inst✝ : CompleteSpace E'
T : E' →L[ℂ] E'
⊢ IsPositive T ↔ ∀ (x : E'), ↑(↑re (inner (↑T x) x)) = inner (↑T x) x ∧ 0 ≤ ↑re (inner (↑T x) x)
[PROOFSTEP]
simp_rw [IsPositive, forall_and, isSelfAdjoint_iff_isSymmetric, LinearMap.isSymmetric_iff_inner_map_self_real,
  conj_eq_iff_re]
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁹ : IsROrC 𝕜
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedAddCommGroup F
inst✝⁶ : InnerProductSpace 𝕜 E
inst✝⁵ : InnerProductSpace 𝕜 F
inst✝⁴ : CompleteSpace E
inst✝³ : CompleteSpace F
E' : Type u_4
inst✝² : NormedAddCommGroup E'
inst✝¹ : InnerProductSpace ℂ E'
inst✝ : CompleteSpace E'
T : E' →L[ℂ] E'
⊢ ((∀ (v : E'), ↑(↑re (inner (↑↑T v) v)) = inner (↑↑T v) v) ∧ ∀ (x : E'), 0 ≤ reApplyInnerSelf T x) ↔
    (∀ (x : E'), ↑(↑re (inner (↑T x) x)) = inner (↑T x) x) ∧ ∀ (x : E'), 0 ≤ ↑re (inner (↑T x) x)
[PROOFSTEP]
rfl
