Skip to content

feat: add strong_subadditivity problem#348

Open
Timeroot wants to merge 3 commits into
leanprover:mainfrom
Timeroot:main
Open

feat: add strong_subadditivity problem#348
Timeroot wants to merge 3 commits into
leanprover:mainfrom
Timeroot:main

Conversation

@Timeroot
Copy link
Copy Markdown

This PR adds the problem of strong subadditivity of von Neumann entropy for quantum states.

Comment on lines +24 to +30
/-- Partial trace on the left of a matrix -/
def Matrix.traceLeft (M : Matrix (A × B) (A × B) ℂ) : Matrix B B ℂ :=
Matrix.of fun i j ↦ ∑ k, ∑ l, M (k, i) (l, j)

/-- Partial trace on the right of a matrix -/
def Matrix.traceRight (M : Matrix (A × B) (A × B) ℂ) : Matrix A A ℂ :=
Matrix.of fun i j ↦ ∑ k, ∑ l, M (i, k) (j, l)
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The "two copies of B" can be distinct here. Perhaps worth doing for future proofing.

id = "strong_subadditivity"
title = "Strong Subadditivity of von Neumann Entropy"
test = false
module = "LeanEval.Physics"
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Failing CI: the module field should be the full module path of the file, not the directory namespace. The build tries to compile LeanEval/Physics.lean, which doesn't exist (error: no such file or directory … LeanEval/Physics.lean). Should be:

module = "LeanEval.Physics.StrongSubadditivity"

(cf. LeanEval.Geometry.LiouvilleArnoldLeanEval/Geometry/LiouvilleArnold.lean.)


/-! # Strong additivity of quantum entropy

States that `S(ρ_ABC) + S(ρ_B) ≤ S(ρ_AB) + S(ρ_C)` where S is the von Neumman entropy.
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The docstring has the wrong reduced state on the RHS: it says S(ρ_C), but SSA here is

S(ρ_ABC) + S(ρ_B) ≤ S(ρ_AB) + S(ρ_BC)

matching the theorem body's M_BC.

module = "LeanEval.Physics"
holes = ["strong_subadditivity"]
submitter = "Alex Meiburg"
notes = "This fact is 'equivalent' to other facts such as the joint convexity of quantum relative entropy. This formulation states the problem for all PSD matrices (over non-empty, finite index types) instead of unnecessarily restricting to normalized matrices of trace one. First proved in 1973 by E.H. Lieb and M.B. Ruskai, but at least half-a-dozen alternate proofs have been published, with varied techniques."
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Small correction to the reasoning in notes: relaxing to PSD is valid, but not because "normalization just produces a positive affine transformation on the entropy." S(t·σ) = t·S(σ) − t·log t is affine in S(σ) only for a fixed t, and can't be applied per-term independently unless the same trace t is shared by every term. That's exactly what holds here: a genuine (trace-preserving) partial trace gives all four reduced states the common trace t, so with two entropy terms on each side the −t·log t corrections cancel and you recover normalized SSA scaled by t ≥ 0 (and t = 0 ⇒ ρ = 0, trivial). Worth rewording so a solver isn't pointed at the wrong argument — and note this depends on the partial traces being trace-preserving.

import Mathlib.Analysis.Matrix.HermitianFunctionalCalculus
import Mathlib.LinearAlgebra.Matrix.PosDef

/-! # Strong additivity of quantum entropy
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Typo in the header: "Strong additivity" → "Strong subadditivity".


/-! # Strong additivity of quantum entropy

States that `S(ρ_ABC) + S(ρ_B) ≤ S(ρ_AB) + S(ρ_C)` where S is the von Neumman entropy.
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"von Neumman" → "von Neumann".

module = "LeanEval.Physics"
holes = ["strong_subadditivity"]
submitter = "Alex Meiburg"
notes = "This fact is 'equivalent' to other facts such as the joint convexity of quantum relative entropy. This formulation states the problem for all PSD matrices (over non-empty, finite index types) instead of unnecessarily restricting to normalized matrices of trace one. First proved in 1973 by E.H. Lieb and M.B. Ruskai, but at least half-a-dozen alternate proofs have been published, with varied techniques."
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Optional, for consistency with the other problems: consider adding a source field and an informal_solution sketch. Both are optional in the parser so CI won't complain without them, but most manifests carry them. Suggested source:

E. H. Lieb and M. B. Ruskai, "Proof of the strong subadditivity of quantum-mechanical entropy," J. Math. Phys. 14(12), 1938–1941 (1973), doi:10.1063/1.1666274.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants