Documentation

CsdLean4.Mathlib.Analysis.Matrix.OperatorConvexBridge

CStarMatrixMatrix transport bridge for the operator-convexity ladder #

Matrix n n ℂ is not a CStarAlgebra at its default instances: the C⋆-algebra structure (norm, topology, spectral order) lives on the type synonym CStarMatrix m n A := Matrix m n A (CStarMatrix.instCStarAlgebra). Consequently the C⋆-generic continuous-functional-calculus order machinery — CFC.log (operator monotone), CFC.log_le_log, the rpow order lemmas, the rpow→log limit — is stated for [CStarAlgebra A] and does not fire directly on the bare Matrix type used by Matrix.OperatorConvexOn / Matrix.OperatorConcaveOn and the L.1/L.2 rungs.

This file builds the transport across the star-algebra equivalence e := CStarMatrix.ofMatrixStarAlgEquiv : Matrix n n ℂ ≃⋆ₐ[ℂ] CStarMatrix n n ℂ (which is the identity Equiv.refl on carriers, hence continuous), and uses it to pull the C⋆-generic facts back onto Matrix.

Main results #

Honest scope (rpow wall) SUPERSEDED 2026-08-22 (MG-3): the rpow rung is LANDED #

The rpow wall recorded here previously is dissolved. The MG-3 probe (specs/mathlib-gaps-plan.md; scratch_mg3_probe.lean, five rounds) established that the obstruction was exactly two generic instances failing to fire through the discrimination tree — the -CFC over IsSelfAdjoint (the shim below, already present) and NonnegSpectrumClass (instCStarMatrixNonnegSpectrumClass, the second shim, added with B.4) — and that with both registered the entire upstream monotonicity tier fires on CStarMatrix n n ℂ, including CFC.monotone_nnrpow (operator monotonicity of x ^ p, p ∈ [0,1], which landed upstream in …/Rpow/Order.lean after the wall note was written). B.4 transports it to the Matrix carrier: matrix_nnrpow_le_nnrpow (the L.3 rung) and matrix_sqrt_le_sqrt, via the ℝ≥0-cfcₙ naturality cstar_cfcₙ_nnreal (the ℝ≥0 companion of B.1). The remaining C⋆-side absence for the DPI ladder is operator CONVEXITY (Lieb) — upstream's own TODO; see specs/operator-convexity-plan.md and MATHLIB-GAPS.md.

Category: 1-Mathlib (CSD-free). Natural Mathlib namespace Matrix.

The -CFC instance shim on CStarMatrix n n ℂ #

The generic IsSelfAdjoint.instContinuousFunctionalCalculus does not fire on CStarMatrix n n ℂ through the discrimination tree (its predicate-output IsSelfAdjoint is not matched), so we register it explicitly as a local instance. It elaborates because CStarMatrix n n ℂ is a unital CStarAlgebra (CStarMatrix.instCStarAlgebra) with the -CFC over IsStarNormal.

The real continuous functional calculus on CStarMatrix n n ℂ over self-adjoint elements, registered explicitly (the generic instance does not fire on CStarMatrix via the discrimination tree).

Continuity of the synonym equivalence #

The star-algebra equivalence Matrix n n ℂ ≃⋆ₐ[ℂ] CStarMatrix n n ℂ is continuous: on carriers it is the identity (Equiv.refl), and CStarMatrix.ofMatrixL is a continuous linear equivalence with continuous_id.

B.2 — order transport (Löwner ↔ spectral order across e) #

B.2. The Löwner order on Matrix n n ℂ ((B - A).PosSemidef) and the spectral order on CStarMatrix n n ℂ agree across the star-algebra equivalence e: e A ≤ e B ↔ A ≤ B. Both Matrix and CStarMatrix are StarOrderedRings, and a star-ring equivalence is an OrderIso between StarOrderedRings (StarRingEquivClass.instOrderIsoClass), so this is map_le_map_iff.

B.1 — CFC transport (the crux) #

B.1 (the crux). The continuous functional calculus commutes with the synonym equivalence e: for Hermitian A and f continuous on spectrum ℝ A, e (cfc f A) = cfc f (e A).

The left cfc is taken in Matrix's own functional-calculus instance (Matrix.IsHermitian.instContinuousFunctionalCalculus, the spectral triple product); the right cfc is taken in the C⋆-algebra instance on CStarMatrix. These are a priori different functional-calculus instances; they agree because e is a continuous star-algebra homomorphism and the CFC is unique (StarAlgHomClass.map_cfc, whose proof routes through ContinuousMap.UniqueHom). So no separate uniqueness argument is needed at this level.

Positivity transport #

A positive-definite matrix maps to a strictly-positive element of CStarMatrix n n ℂ. IsStrictlyPositive a := 0 ≤ a ∧ IsUnit a: nonnegativity transports via cstar_le_iff (B.2) and map_zero e, and invertibility transports because e is a ring equivalence.

B.3 — operator monotonicity of log transported onto Matrix #

theorem Matrix.logContinuousOn {n : Type u_1} [Fintype n] [DecidableEq n] {A : Matrix n n } (hA : A.PosDef) :

Real.log is continuous on the (positive) spectrum of a positive-definite matrix.

theorem Matrix.matrix_log_le_log {n : Type u_1} [Fintype n] [DecidableEq n] {A B : Matrix n n } (hA : A.PosDef) (hB : B.PosDef) (hAB : A B) :

B.3 (log). Operator monotonicity of log on positive-definite matrices, in the Löwner order: A ≤ B → cfc Real.log A ≤ cfc Real.log B (for positive-definite A, B).

Transported from CFC.log_le_log on CStarMatrix n n ℂ: the order transports (B.2), strict positivity transports (cstar_isStrictlyPositive), and CFC.log (e A) = e (cfc Real.log A) by B.1 (CFC.log a := cfc Real.log a definitionally). The statement is in terms of cfc Real.log on the Matrix side because CFC.log itself requires NormedRing (Matrix n n ℂ), which the default Matrix instances do not provide — this is exactly the carrier mismatch the bridge resolves.

The second shim + B.4 — rpow operator monotonicity on Matrix (2026-08-22, MG-3) #

The second non-firing generic instance found by the MG-3 probe: NonnegSpectrumClass on CStarMatrix n n ℂ, registered explicitly from its own generic provider (CStarAlgebra.instNonnegSpectrumClass — provable as a term, not found by synthesis through the repeated-index discrimination key). With this and the -CFC shim above, the upstream rpow/sqrt/log order tier fires on CStarMatrix.

B.4a. ℝ≥0-cfcₙ naturality across the synonym equivalence, on nonnegative matrices: e (cfcₙ f A) = cfcₙ f (e A). The ℝ≥0 companion of B.1, by NonUnitalStarAlgHomClass.map_cfcₙ (the two cfcₙs come from the Matrix-side and CStarMatrix-side ℝ≥0 functional calculi respectively).

theorem Matrix.matrix_nnrpow_le_nnrpow {n : Type u_1} [Fintype n] [DecidableEq n] {A B : Matrix n n } {p : NNReal} (hp : p Set.Icc 0 1) (hA : 0 A) (hAB : A B) :
A ^ p B ^ p

B.4 (rpow, the L.3 rung). Operator monotonicity of the nonnegative power A ↦ A ^ p (p : ℝ≥0, p ≤ 1) on positive-semidefinite matrices in the Löwner order — CFC.monotone_nnrpow transported onto the Matrix carrier. The p = 0 exponent is junk-valued (A ^ 0 = 0 by the cfcₙ zero convention) and handled separately; for p ≠ 0 the pointwise function is zero-preserving and the naturality B.4a identifies the powers across e.

theorem Matrix.matrix_sqrt_le_sqrt {n : Type u_1} [Fintype n] [DecidableEq n] {A B : Matrix n n } (hA : 0 A) (hAB : A B) :

B.4 corollary (sqrt). Operator monotonicity of the matrix square root on the Löwner order: 0 ≤ A ≤ B → √A ≤ √B.

B.5 / B.6 — operator CONCAVITY transported (the L.2 / L.3a-interior rungs) #

Upstream proves operator concavity C⋆-generically (CFC.concaveOn_log, CFC.concaveOn_rpow); the same transport that carries monotonicity carries concavity, so both rungs are corollaries rather than builds. The convex combination is taken with real scalars coerced to , which is what smul_transport normalises.

Real-scalar smul commutes with the MatrixCStarMatrix transport. The convex combinations below are formed in , so this is the lemma that lets map_add/map_smul normalise them.

theorem Matrix.matrix_log_concave {n : Type u_1} [Fintype n] [DecidableEq n] {A B : Matrix n n } (hA : A.PosDef) (hB : B.PosDef) {t : } (ht0 : 0 t) (ht1 : t 1) :
t cfc Real.log A + (1 - t) cfc Real.log B cfc Real.log (t A + (1 - t) B)

B.5. Operator concavity of log on positive-definite matrices, in Löwner order: t·log A + (1−t)·log B ≤ log (t·A + (1−t)·B). Transported from CFC.concaveOn_log.

★★ L.2 — log is operator concave on (0, ∞), in the corpus's all-dimensions OperatorConcaveOn predicate. The plan budgeted this as a multi-day build against a wall ("Matrix n n ℂ is not a CStarAlgebra"); the wall was a scope question and upstream has since proved the C⋆-generic statement, so it is a transport.

theorem Matrix.matrix_rpow_concave {n : Type u_1} [Fintype n] [DecidableEq n] {p : } (hp : p Set.Icc 0 1) {A B : Matrix n n } (hA : 0 A) (hB : 0 B) {t : } (ht0 : 0 t) (ht1 : t 1) :
t A ^ p + (1 - t) B ^ p (t A + (1 - t) B) ^ p

L.3a interior — x ^ p is operator concave for p ∈ [0,1], on the bare Matrix carrier in ^-notation and Löwner order. Transported from CFC.concaveOn_rpow; supersedes the endpoints-only operatorConcaveOn_rpow_zero / _one.

B.7 — x log x, the L.4 rung, transported #

OperatorConvexCFC.convexOn_mul_log closes an upstream TODO C⋆-generically; this puts it on the Matrix carrier alongside matrix_log_concave. ⚠️ It is an input to the Effros/Lieb summit, not the summit: hDPI is untouched (specs/lieb-dpi-scoping.md).

theorem Matrix.matrix_mul_log_convex {n : Type u_1} [Fintype n] [DecidableEq n] {A B : Matrix n n } (hA : A.PosDef) (hB : B.PosDef) {t : } (ht0 : 0 t) (ht1 : t 1) :
(t A + (1 - t) B) * cfc Real.log (t A + (1 - t) B) t (A * cfc Real.log A) + (1 - t) (B * cfc Real.log B)

L.4 on the matrix carrier. A ↦ A · log A is operator convex on positive-definite matrices, in Löwner order.

Non-vacuity witness #

The bridge is non-vacuous: it applies to a concrete non-commuting positive-definite pair. A = diagonal !![2, 1]-style witnesses are positive definite; the transport lemmas relate the genuine carriers (the Matrix Löwner order and the CStarMatrix spectral order), not a degenerate or mismatched structure.