Von Neumann's trace inequality for Hermitian matrices:
ProvedRHLinalg.vonNeumann_trace_ineqLet be Hermitian matrices over an RCLike field. Write and for their eigenvalues sorted in decreasing order — in Lean these are Mathlib's eigenvalues₀, indexed by Fin (Fintype.card n) and antitone in the index.
Statement.
i.e. the trace pairing of two Hermitian matrices is maximized by pairing eigenvalues in matching order.
This is the Hermitian case of von Neumann's trace inequality. The formalized proof combines the eigenbasis identity RHLinalg.re_trace_mul_eq_eigenvalue_bilinear ( as an eigenvalue bilinear form weighted by for a unitary ), the fact that this weight matrix is doubly stochastic (RHLinalg.normSqMatrix_mem_doublyStochastic_of_unitary), and the Birkhoff–rearrangement bound RHLinalg.bilinear_doublyStochastic_le_of_monovary.
In the module Zeta23.LinAlg.VonNeumann it is consumed by the rank–trace inequality RHLinalg.rank_trace_ineq, the key matrix-variational estimate feeding the assembly of Theorem A.
import Mathlib.Algebra.Order.Rearrangement
import Mathlib.Analysis.Convex.Birkhoff
import Mathlib.Analysis.Matrix.PosDef
import Definitions.Def_Zeta23_LinAlg_PosIndex
import Definitions.Def_Zeta23_LinAlg_VonNeumann
open Matrix Finset
open scoped ComplexOrder
open RHLinalg
variable {𝕜 : Type*} [RCLike 𝕜]
variable {n : Type*} [Fintype n] [DecidableEq n]
theorem RHLinalg.vonNeumann_trace_ineq {A B : Matrix n n 𝕜}
(hA : A.IsHermitian) (hB : B.IsHermitian) :
RCLike.re (A * B).trace
≤ ∑ i, hA.eigenvalues₀ i * hB.eigenvalues₀ i := by sorry