Skip to content

Commit 09c35f4

Browse files
authored
Merge pull request #3466 from LionSR/codex/operator-jensen-resolvent-778
feat(Channel/Schwarz): add positive-map resolvent Jensen
2 parents 2db1adc + 1b9b87f commit 09c35f4

3 files changed

Lines changed: 385 additions & 19 deletions

File tree

TNLean/Axioms/OperatorConvexity.lean

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -72,11 +72,13 @@ The remaining Mathlib or local formalization gaps are:
7272
the positive-semidefinite integral specialization as
7373
`integral_nonneg_matrix_of_ae`. Pulling a positive linear map through the
7474
integral can use `ContinuousLinearMap.integral_comp_comm` after packaging the
75-
finite-dimensional map as a continuous linear map. The remaining proof work
76-
is the pointwise positive-map Jensen/resolvent step and its spectral
77-
reduction to `povm_resolvent_inv_le`. The positive-semidefinite square root
78-
needed to package each `T(P i)` as a Kraus term `C i * (C i)ᴴ` is available as
79-
`CFC.sqrt`.
75+
finite-dimensional map as a continuous linear map. The pointwise
76+
positive-map resolvent estimate and its spectral reduction to
77+
`povm_resolvent_inv_le` are available as
78+
`TNLean.OperatorJensen.positiveMap_resolvent_inv_le`, using `CFC.sqrt` to
79+
package each `T(P i)` and the subunital defect as square-root factors. The
80+
remaining proof work is the CFC-integrand rewrite and the Löwner-integral
81+
assembly.
8082
* Operator convexity of `rpow` over `[1, 2]`, the scalar input of
8183
`posMap_rpow_convex_jensen`, is now available as `CFC.convexOn_rpow` in
8284
`TNLean.Analysis.RpowConvexity`; the convex axiom therefore shares the single
@@ -97,12 +99,11 @@ The remaining Mathlib or local formalization gaps are:
9799
inequality `(t • 1 + T A)⁻¹ ≤ T ((t • 1 + A)⁻¹) + t⁻¹ • (1 - T 1)` for a
98100
positive subunital map `T`. Diagonalizing `A = ∑ i, λ i • P i` over its
99101
spectral projections and setting `B i = T (P i)` (positive semidefinite,
100-
with `∑ i, B i = T 1 ≤ 1`), this resolvent inequality is exactly
101-
`povm_resolvent_inv_le` in `TNLean.Channel.Schwarz.OperatorJensenAux`, with
102-
the Kraus factorization `B i = (CFC.sqrt (B i)) * (CFC.sqrt (B i))ᴴ` and
103-
defect `(1 - ∑ i, B i)`. What remains is integrating this pointwise bound:
104-
Mathlib's ordered Bochner monotonicity theorem, the local
105-
positive-semidefinite integral specialization in
102+
with `∑ i, B i = T 1 ≤ 1`), this resolvent inequality is now proved as
103+
`TNLean.OperatorJensen.positiveMap_resolvent_inv_le`. What remains is to
104+
rewrite the CFC integrand through the displayed resolvent formula and then
105+
integrate this pointwise bound using Mathlib's ordered Bochner monotonicity
106+
theorem, the local positive-semidefinite integral specialization in
106107
`TNLean.Channel.Schwarz.OperatorJensenAux`, and the commutation of `T` with
107108
the integral.
108109
2. **Operator convexity of `rpow` for `p ∈ [1, 2]`**: use the

TNLean/Channel/Schwarz/OperatorJensenAux.lean

Lines changed: 328 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,9 @@ representation; see the status note below.
3838
block-diagonal matrix yields the weighted sum of reciprocals.
3939
- `povm_resolvent_inv_le`: the finite-POVM resolvent inequality, the key
4040
algebraic step toward the concave real-power Jensen inequality.
41+
- `positiveMap_resolvent_inv_le`: the corresponding resolvent inequality for
42+
a positive subunital map, obtained from the spectral projections of the input
43+
matrix and `povm_resolvent_inv_le`.
4144
- `integral_nonneg_matrix_of_ae`: matrix-valued Bochner integrals preserve
4245
almost-everywhere positive semidefiniteness.
4346
@@ -55,13 +58,16 @@ and `CFC.concaveOn_cfc_rpowIntegrand₀₁` records the operator concavity of ea
5558
integrand together with the resolvent form
5659
`cfc (Real.rpowIntegrand₀₁ p t) a = t ^ (p - 1) • 1 - t ^ p • (t • 1 + a)⁻¹`.
5760
58-
The remaining unfinished step is therefore the operator Jensen inequality for a
59-
positive subunital map `T` applied to a single integrand,
60-
`T(cfc (Real.rpowIntegrand₀₁ p t) A) ≤ cfc (Real.rpowIntegrand₀₁ p t) (T A)`,
61-
together with the spectral reduction to `povm_resolvent_inv_le`. The
62-
matrix-valued positive-integral step is now packaged below from Mathlib's
63-
ordered Bochner integral API and the local closed Loewner-order topology on
64-
finite matrices; order monotonicity itself is Mathlib's `integral_mono_ae`.
61+
This file now also proves the positive-map resolvent estimate obtained from
62+
the spectral projections of the input matrix and `povm_resolvent_inv_le`. The
63+
remaining unfinished step is therefore to rewrite the single-integrand Jensen
64+
difference
65+
`cfc (Real.rpowIntegrand₀₁ p t) (T A) - T(cfc (Real.rpowIntegrand₀₁ p t) A)`
66+
using that resolvent estimate and then integrate the resulting pointwise
67+
positive-semidefinite bound. The matrix-valued positive-integral step is
68+
packaged below from Mathlib's ordered Bochner integral API and the local closed
69+
Loewner-order topology on finite matrices; order monotonicity itself is
70+
Mathlib's `integral_mono_ae`.
6571
-/
6672

6773
open scoped Matrix ComplexOrder MatrixOrder
@@ -372,4 +378,319 @@ lemma povm_resolvent_inv_le
372378

373379
end POVM
374380

381+
section PositiveMapResolvent
382+
383+
variable {D : ℕ}
384+
385+
local notation "MatD" => Matrix (Fin D) (Fin D) ℂ
386+
387+
private def spectralProjection (A : MatD) (hA : A.IsHermitian) (i : Fin D) : MatD :=
388+
(↑hA.eigenvectorUnitary : MatD) * Matrix.single i i (1 : ℂ) *
389+
(↑hA.eigenvectorUnitary : MatD)ᴴ
390+
391+
private lemma spectralProjection_posSemidef {A : MatD} (hA : A.IsHermitian) (i : Fin D) :
392+
(spectralProjection A hA i).PosSemidef := by
393+
classical
394+
have hdiag : (Matrix.single i i (1 : ℂ) : MatD).PosSemidef := by
395+
rw [← Matrix.diagonal_single]
396+
refine Matrix.PosSemidef.diagonal ?_
397+
intro j
398+
by_cases hji : j = i
399+
· subst hji
400+
simp
401+
· simp [Pi.single, hji]
402+
simpa [spectralProjection, Matrix.mul_assoc] using
403+
hdiag.mul_mul_conjTranspose_same (B := (↑hA.eigenvectorUnitary : MatD))
404+
405+
private lemma spectralProjection_sum_one {A : MatD} (hA : A.IsHermitian) :
406+
(∑ i, spectralProjection A hA i) = (1 : MatD) := by
407+
classical
408+
let U : MatD := ↑hA.eigenvectorUnitary
409+
have hsum_single : (∑ i : Fin D, Matrix.single i i (1 : ℂ)) = (1 : MatD) := by
410+
rw [Matrix.sum_single_eq_diagonal]
411+
exact Matrix.diagonal_one
412+
calc
413+
(∑ i, spectralProjection A hA i)
414+
= U * (∑ i : Fin D, Matrix.single i i (1 : ℂ)) * Uᴴ := by
415+
simp [spectralProjection, U, Finset.mul_sum, Finset.sum_mul]
416+
_ = U * 1 * Uᴴ := by rw [hsum_single]
417+
_ = 1 := by
418+
simpa [U, Matrix.star_eq_conjTranspose] using
419+
Unitary.mul_star_self_of_mem hA.eigenvectorUnitary.prop
420+
421+
private lemma spectral_sum_eq {A : MatD} (hA : A.IsHermitian) :
422+
(∑ i, hA.eigenvalues i • spectralProjection A hA i) = A := by
423+
classical
424+
let U : MatD := ↑hA.eigenvectorUnitary
425+
have hdiag_sum :
426+
(∑ i : Fin D, hA.eigenvalues i • Matrix.single i i (1 : ℂ)) =
427+
Matrix.diagonal (RCLike.ofReal ∘ hA.eigenvalues) := by
428+
calc
429+
(∑ i : Fin D, hA.eigenvalues i • Matrix.single i i (1 : ℂ))
430+
= ∑ i : Fin D, Matrix.single i i ((hA.eigenvalues i : ℂ)) := by
431+
refine Finset.sum_congr rfl ?_
432+
intro i _
433+
ext r s
434+
simp [Matrix.smul_apply, Matrix.single]
435+
_ = Matrix.diagonal (RCLike.ofReal ∘ hA.eigenvalues) := by
436+
rw [Matrix.sum_single_eq_diagonal]
437+
rfl
438+
have hterm :
439+
(∑ i, hA.eigenvalues i • spectralProjection A hA i) =
440+
∑ i : Fin D,
441+
U * Matrix.single i i ((hA.eigenvalues i : ℂ)) * Uᴴ := by
442+
refine Finset.sum_congr rfl ?_
443+
intro i _
444+
change hA.eigenvalues i • (U * Matrix.single i i (1 : ℂ) * Uᴴ) =
445+
U * Matrix.single i i ((hA.eigenvalues i : ℂ)) * Uᴴ
446+
rw [← show hA.eigenvalues i • Matrix.single i i (1 : ℂ) =
447+
Matrix.single i i ((hA.eigenvalues i : ℂ)) by
448+
ext r s
449+
simp [Matrix.smul_apply, Matrix.single]]
450+
rw [Matrix.mul_smul, Matrix.smul_mul]
451+
calc
452+
(∑ i, hA.eigenvalues i • spectralProjection A hA i)
453+
= ∑ i : Fin D,
454+
U * Matrix.single i i ((hA.eigenvalues i : ℂ)) * Uᴴ := hterm
455+
_ = U * (∑ i : Fin D, Matrix.single i i ((hA.eigenvalues i : ℂ))) * Uᴴ := by
456+
rw [Matrix.mul_sum, Matrix.sum_mul]
457+
_ = U * Matrix.diagonal (RCLike.ofReal ∘ hA.eigenvalues) * Uᴴ := by
458+
rw [Matrix.sum_single_eq_diagonal]
459+
rfl
460+
_ = A := by
461+
simpa [U, Unitary.conjStarAlgAut_apply, Matrix.star_eq_conjTranspose] using
462+
hA.spectral_theorem.symm
463+
464+
private lemma spectral_shift_eq {A : MatD} (hA : A.IsHermitian) (t : ℝ) :
465+
A + t • (1 : MatD) =
466+
(↑hA.eigenvectorUnitary : MatD) *
467+
Matrix.diagonal (fun i => ((hA.eigenvalues i + t : ℝ) : ℂ)) *
468+
(↑hA.eigenvectorUnitary : MatD)ᴴ := by
469+
classical
470+
let U : MatD := ↑hA.eigenvectorUnitary
471+
have hU : U * Uᴴ = (1 : MatD) := by
472+
simpa [U, Matrix.star_eq_conjTranspose] using
473+
Unitary.mul_star_self_of_mem hA.eigenvectorUnitary.prop
474+
have hscalar_conj : U * (t • (1 : MatD)) * Uᴴ = t • (1 : MatD) := by
475+
rw [Matrix.mul_smul, Matrix.smul_mul, Matrix.mul_one, hU]
476+
have hspectral :
477+
A = U * Matrix.diagonal (RCLike.ofReal ∘ hA.eigenvalues) * Uᴴ := by
478+
simpa [U, Unitary.conjStarAlgAut_apply, Matrix.star_eq_conjTranspose] using
479+
hA.spectral_theorem
480+
calc
481+
A + t • (1 : MatD)
482+
= U * Matrix.diagonal (RCLike.ofReal ∘ hA.eigenvalues) * Uᴴ +
483+
t • (1 : MatD) := by
484+
exact congrArg (fun M : MatD => M + t • (1 : MatD)) hspectral
485+
_ = U * Matrix.diagonal (RCLike.ofReal ∘ hA.eigenvalues) * Uᴴ +
486+
U * (t • (1 : MatD)) * Uᴴ := by
487+
rw [hscalar_conj]
488+
_ = U *
489+
(Matrix.diagonal (RCLike.ofReal ∘ hA.eigenvalues) + t • (1 : MatD)) *
490+
Uᴴ := by
491+
simp [Matrix.mul_add, Matrix.add_mul, Matrix.mul_assoc]
492+
_ = U * Matrix.diagonal (fun i => ((hA.eigenvalues i + t : ℝ) : ℂ)) * Uᴴ := by
493+
congr 2
494+
ext i j
495+
by_cases hij : i = j
496+
· subst hij
497+
simp [Matrix.smul_apply, Complex.ofReal_add]
498+
· simp [Matrix.smul_apply, hij]
499+
500+
private lemma spectral_shift_inv_sum {A : MatD} (hA : A.PosSemidef) {t : ℝ}
501+
(ht : 0 < t) :
502+
(A + t • (1 : MatD))⁻¹ =
503+
∑ i, (hA.1.eigenvalues i + t)⁻¹ • spectralProjection A hA.1 i := by
504+
classical
505+
let U : MatD := ↑hA.1.eigenvectorUnitary
506+
let d : Fin D → ℂ := fun i => ((hA.1.eigenvalues i + t : ℝ) : ℂ)
507+
let e : Fin D → ℂ := fun i => (((hA.1.eigenvalues i + t)⁻¹ : ℝ) : ℂ)
508+
have hU_star : Uᴴ * U = (1 : MatD) := by
509+
simpa [U, Matrix.star_eq_conjTranspose] using
510+
Unitary.star_mul_self_of_mem hA.1.eigenvectorUnitary.prop
511+
have hU_mul : U * Uᴴ = (1 : MatD) := by
512+
simpa [U, Matrix.star_eq_conjTranspose] using
513+
Unitary.mul_star_self_of_mem hA.1.eigenvectorUnitary.prop
514+
have hde : Matrix.diagonal d * Matrix.diagonal e = (1 : MatD) := by
515+
rw [Matrix.diagonal_mul_diagonal, ← Matrix.diagonal_one]
516+
congr 1
517+
funext i
518+
have hne : hA.1.eigenvalues i + t ≠ 0 := by
519+
linarith [hA.eigenvalues_nonneg i, ht]
520+
dsimp [d, e]
521+
rw [← Complex.ofReal_mul, mul_inv_cancel₀ hne, Complex.ofReal_one]
522+
have hsum :
523+
(∑ i, (hA.1.eigenvalues i + t)⁻¹ • spectralProjection A hA.1 i) =
524+
U * Matrix.diagonal e * Uᴴ := by
525+
have hdiag_e :
526+
(∑ i, (hA.1.eigenvalues i + t)⁻¹ • Matrix.single i i (1 : ℂ)) =
527+
Matrix.diagonal e := by
528+
calc
529+
(∑ i, (hA.1.eigenvalues i + t)⁻¹ • Matrix.single i i (1 : ℂ))
530+
= ∑ i, Matrix.single i i (e i) := by
531+
refine Finset.sum_congr rfl ?_
532+
intro i _
533+
ext r s
534+
simp [Matrix.smul_apply, Matrix.single, e]
535+
_ = Matrix.diagonal e := by
536+
rw [Matrix.sum_single_eq_diagonal]
537+
have hterm :
538+
(∑ i, (hA.1.eigenvalues i + t)⁻¹ • spectralProjection A hA.1 i) =
539+
U * (∑ i, (hA.1.eigenvalues i + t)⁻¹ • Matrix.single i i (1 : ℂ)) *
540+
Uᴴ := by
541+
calc
542+
(∑ i, (hA.1.eigenvalues i + t)⁻¹ • spectralProjection A hA.1 i)
543+
= ∑ i,
544+
U * ((hA.1.eigenvalues i + t)⁻¹ • Matrix.single i i (1 : ℂ)) * Uᴴ := by
545+
refine Finset.sum_congr rfl ?_
546+
intro i _
547+
change (hA.1.eigenvalues i + t)⁻¹ •
548+
(U * Matrix.single i i (1 : ℂ) * Uᴴ) =
549+
U * ((hA.1.eigenvalues i + t)⁻¹ • Matrix.single i i (1 : ℂ)) * Uᴴ
550+
rw [Matrix.mul_smul, Matrix.smul_mul]
551+
_ = U * (∑ i, (hA.1.eigenvalues i + t)⁻¹ • Matrix.single i i (1 : ℂ)) *
552+
Uᴴ := by
553+
rw [Matrix.mul_sum, Matrix.sum_mul]
554+
calc
555+
(∑ i, (hA.1.eigenvalues i + t)⁻¹ • spectralProjection A hA.1 i)
556+
= U * (∑ i, (hA.1.eigenvalues i + t)⁻¹ • Matrix.single i i (1 : ℂ)) *
557+
Uᴴ := hterm
558+
_ = U * Matrix.diagonal e * Uᴴ := by
559+
rw [hdiag_e]
560+
refine Matrix.inv_eq_right_inv ?_
561+
rw [spectral_shift_eq hA.1 t, hsum]
562+
calc
563+
(U * Matrix.diagonal d * Uᴴ) * (U * Matrix.diagonal e * Uᴴ)
564+
= U * Matrix.diagonal d * (Uᴴ * U) * Matrix.diagonal e * Uᴴ := by
565+
noncomm_ring
566+
_ = U * Matrix.diagonal d * 1 * Matrix.diagonal e * Uᴴ := by rw [hU_star]
567+
_ = U * (Matrix.diagonal d * Matrix.diagonal e) * Uᴴ := by noncomm_ring
568+
_ = U * 1 * Uᴴ := by rw [hde]
569+
_ = 1 := by simp [hU_mul]
570+
571+
/-- Spectral resolution of a positive semidefinite matrix, packaged as a finite
572+
family of positive projectors with nonnegative weights and sum one. -/
573+
lemma posSemidef_spectral_resolution {A : MatD} (hA : A.PosSemidef) :
574+
∃ P : Fin D → MatD,
575+
(∀ i, (P i).PosSemidef) ∧
576+
(∑ i, P i = (1 : MatD)) ∧
577+
(∀ i, 0 ≤ hA.1.eigenvalues i) ∧
578+
(A = ∑ i, hA.1.eigenvalues i • P i) := by
579+
refine ⟨spectralProjection A hA.1, ?_, ?_, ?_, ?_⟩
580+
· exact spectralProjection_posSemidef hA.1
581+
· exact spectralProjection_sum_one hA.1
582+
· exact hA.eigenvalues_nonneg
583+
· exact (spectral_sum_eq hA.1).symm
584+
585+
private lemma sqrt_mul_conjTranspose_sqrt {M : MatD} (hM : M.PosSemidef) :
586+
CFC.sqrt M * (CFC.sqrt M)ᴴ = M := by
587+
have hM_nonneg : 0 ≤ M := (Matrix.nonneg_iff_posSemidef).mpr hM
588+
have hsquare : CFC.sqrt M * CFC.sqrt M = M :=
589+
CFC.sqrt_mul_sqrt_self M hM_nonneg
590+
have hstar : (CFC.sqrt M)ᴴ = CFC.sqrt M := by
591+
simpa [Matrix.star_eq_conjTranspose] using
592+
(CFC.sqrt_nonneg (a := M)).isSelfAdjoint.star_eq
593+
rw [hstar, hsquare]
594+
595+
/-- Resolvent form of Jensen's inequality for a positive subunital map, reduced
596+
to the finite-POVM resolvent inequality through the spectral projectors of `A`.
597+
598+
For a positive subunital map `T`, positive semidefinite `A`, and `t > 0`,
599+
`((T A) + t • 1)⁻¹ ≤ T ((A + t • 1)⁻¹) + t⁻¹ • (1 - T 1)`.
600+
601+
This is the pointwise inequality used in the Löwner-integral proof of the
602+
concave real-power operator Jensen inequality. -/
603+
lemma positiveMap_resolvent_inv_le
604+
{T : MatD →ₗ[ℂ] MatD} (hT : IsPositiveMap T)
605+
(hSub : T 1 ≤ (1 : MatD)) {A : MatD} (hA : A.PosSemidef)
606+
{t : ℝ} (ht : 0 < t) :
607+
((T A) + t • (1 : MatD))⁻¹ ≤
608+
T ((A + t • (1 : MatD))⁻¹) + t⁻¹ • (1 - T 1) := by
609+
classical
610+
let P : Fin D → MatD := spectralProjection A hA.1
611+
let B : Fin D → MatD := fun i => T (P i)
612+
let C : Fin D → MatD := fun i => CFC.sqrt (B i)
613+
let S : MatD := CFC.sqrt (1 - ∑ i, B i)
614+
have hP_pos : ∀ i, (P i).PosSemidef := by
615+
intro i
616+
exact spectralProjection_posSemidef hA.1 i
617+
have hP_sum : (∑ i, P i) = (1 : MatD) :=
618+
spectralProjection_sum_one hA.1
619+
have hA_sum : A = ∑ i, hA.1.eigenvalues i • P i := by
620+
simpa [P] using (spectral_sum_eq hA.1).symm
621+
have hB_pos : ∀ i, (B i).PosSemidef := by
622+
intro i
623+
exact hT (P i) (hP_pos i)
624+
have hB_sum : (∑ i, B i) = T 1 := by
625+
calc
626+
(∑ i, B i) = T (∑ i, P i) := by
627+
simp [B, map_sum]
628+
_ = T 1 := by rw [hP_sum]
629+
have hdef_pos : (1 - ∑ i, B i).PosSemidef := by
630+
rw [hB_sum]
631+
rw [Matrix.le_iff] at hSub
632+
simpa using hSub
633+
have hC_fac : ∀ i, C i * (C i)ᴴ = B i := by
634+
intro i
635+
exact sqrt_mul_conjTranspose_sqrt (hB_pos i)
636+
have hS_fac : S * Sᴴ = 1 - ∑ i, B i :=
637+
sqrt_mul_conjTranspose_sqrt hdef_pos
638+
have hdef : S * Sᴴ = 1 - ∑ i, C i * (C i)ᴴ := by
639+
rw [hS_fac]
640+
congr 1
641+
exact Finset.sum_congr rfl fun i _ => (hC_fac i).symm
642+
have hTA_sum : (∑ i, hA.1.eigenvalues i • B i) = T A := by
643+
calc
644+
(∑ i, hA.1.eigenvalues i • B i)
645+
= ∑ i, T (hA.1.eigenvalues i • P i) := by
646+
refine Finset.sum_congr rfl ?_
647+
intro i _
648+
simp [B, LinearMap.map_smul_of_tower]
649+
_ = T (∑ i, hA.1.eigenvalues i • P i) := by
650+
simp [map_sum]
651+
_ = T A := congrArg T hA_sum.symm
652+
have hTA_c :
653+
(∑ i, hA.1.eigenvalues i • (C i * (C i)ᴴ)) = T A := by
654+
calc
655+
(∑ i, hA.1.eigenvalues i • (C i * (C i)ᴴ))
656+
= ∑ i, hA.1.eigenvalues i • B i := by
657+
refine Finset.sum_congr rfl ?_
658+
intro i _
659+
rw [hC_fac i]
660+
_ = T A := hTA_sum
661+
have hInv_sum :
662+
(A + t • (1 : MatD))⁻¹ =
663+
∑ i, (hA.1.eigenvalues i + t)⁻¹ • P i := by
664+
simpa [P] using spectral_shift_inv_sum hA ht
665+
have hTInv_sum :
666+
(∑ i, (hA.1.eigenvalues i + t)⁻¹ • B i) =
667+
T ((A + t • (1 : MatD))⁻¹) := by
668+
calc
669+
(∑ i, (hA.1.eigenvalues i + t)⁻¹ • B i)
670+
= ∑ i, T ((hA.1.eigenvalues i + t)⁻¹ • P i) := by
671+
refine Finset.sum_congr rfl ?_
672+
intro i _
673+
simp [B, LinearMap.map_smul_of_tower]
674+
_ = T (∑ i, (hA.1.eigenvalues i + t)⁻¹ • P i) := by
675+
simp [map_sum]
676+
_ = T ((A + t • (1 : MatD))⁻¹) := by rw [← hInv_sum]
677+
have hTInv_c :
678+
(∑ i, (hA.1.eigenvalues i + t)⁻¹ • (C i * (C i)ᴴ)) =
679+
T ((A + t • (1 : MatD))⁻¹) := by
680+
calc
681+
(∑ i, (hA.1.eigenvalues i + t)⁻¹ • (C i * (C i)ᴴ))
682+
= ∑ i, (hA.1.eigenvalues i + t)⁻¹ • B i := by
683+
refine Finset.sum_congr rfl ?_
684+
intro i _
685+
rw [hC_fac i]
686+
_ = T ((A + t • (1 : MatD))⁻¹) := hTInv_sum
687+
have hS_def_T : S * Sᴴ = 1 - T 1 := by
688+
rw [hS_fac, hB_sum]
689+
have hpovm := povm_resolvent_inv_le
690+
(C := C) (S := S) (wgt := hA.1.eigenvalues)
691+
(fun i => hA.eigenvalues_nonneg i) t ht hdef
692+
simpa [hTA_c, hTInv_c, hS_def_T] using hpovm
693+
694+
end PositiveMapResolvent
695+
375696
end TNLean.OperatorJensen

0 commit comments

Comments
 (0)