This document provides a comprehensive overview of mathematical and physical definitions in the Lean-QuantumInfo library, explaining the exact conventions adopted, their motivations, and key theorems.
Part I: Mathematical Preliminaries
- Basic Types and Structures
- Hermitian Matrices
- The Loewner Order
- Continuous Functional Calculus
- Projectors and the Order
- Logarithm and Special Functions
- Other Mathematical Results
Part II: Quantum Information Theory 8. Pure States: Bra and Ket 9. Mixed States: MState 10. Matrix Maps and Quantum Channels 11. Entropy and Information Theory 12. Named Subsystems and Permutations 13. Distances and Fidelity 14. Kronecker Products
Part III: Reference 15. Notations and Scopes 16. Major Theorems
Prob is a real number between 0 and 1, representing a probability:
def Prob := { p : ℝ // 0 ≤ p ∧ p ≤ 1 }Key operations:
toReal (p : Prob) : ℝ: Extract the underlying real number- Arithmetic operations when they preserve the bounds
Mixableinstance: Probabilities form a convex set
Distribution α on a finite type α is a probability distribution:
def Distribution (α : Type u) [Fintype α] : Type u :=
{ f : α → Prob // Finset.sum Finset.univ (fun i ↦ (f i).toReal) = 1 }A function from α to Prob whose values sum to 1.
Key operations:
uniform : Distribution α: The uniform distributionexpect_val: Expected value of a function under the distributionMixableinstance: Distributions are convex
HermitianMat n 𝕜 is the type of Hermitian n × n matrices over a field 𝕜 (typically ℂ):
def HermitianMat (n : Type*) (α : Type*) [AddGroup α] [StarAddMonoid α] :=
(selfAdjoint (Matrix n n α) : Type (max u_1 u_2))It's defined as the subtype of self-adjoint elements in Matrix n n α, which is equivalent to:
{ M : Matrix n n α // M.IsHermitian }where M.IsHermitian means Mᴴ = M (conjugate transpose equals itself).
Key fields and functions:
mat (A : HermitianMat n α) : Matrix n n α: The underlying matrixH (A : HermitianMat n α): Proof thatA.mat.IsHermitian- Construction: Use
⟨M, h⟩whereh : M.IsHermitian
Algebraic structure:
HermitianMat n αis anAddGroup(inherits from matrices)- Has
0,1when appropriate - Addition and subtraction defined componentwise
- Scalar multiplication by real numbers (see below)
Key operations:
-
conj (B : Matrix m n α) : HermitianMat n α →+ HermitianMat m α: Conjugation by a (possibly rectangular) matrix:A ↦ B * A * Bᴴ- Returns a
HermitianMat m α(different size!) - This is an
AddMonoidHom
- Returns a
-
conjLinear (B : Matrix m n α) : HermitianMat n α →ₗ[R] HermitianMat m α: Same asconjbut as a linear map (when we have scalar multiplication byR) -
diagonal (f : n → ℝ) : HermitianMat n 𝕜: Diagonal matrix with real entries on the diagonal -
kronecker (A : HermitianMat m α) (B : HermitianMat n α) : HermitianMat (m × n) α: Kronecker product. Notation:A ⊗ₖ B(scoped toHermitianMat)
The trace of a Hermitian matrix has a subtlety related to scalar multiplication.
The Problem:
Hermitian matrices over ℂ can be viewed as matrices over a real vector space (with real scalar multiplication) or over a complex vector space (with complex scalar multiplication). The trace of a Hermitian matrix is real, but we want it to be well-behaved with respect to scalar multiplication.
The IsMaximalSelfAdjoint Typeclass:
This typeclass handles the relationship between the scalar field for matrices (α = ℂ) and the scalar field for Hermitian matrices (effectively ℝ):
class IsMaximalSelfAdjoint (R A : Type*) [CommSemiring R] [AddCommGroup A] [Module R A]
[Star A] [StarAddMonoid A] where
selfadjMap : selfAdjoint A →ₗ[R] RFor HermitianMat n ℂ, this provides a way to take real-valued functions (like trace) and make them respect the real scalar structure.
The Trace Definition:
def trace (A : HermitianMat n α) : R :=
IsMaximalSelfAdjoint.selfadjMap (A.mat.trace)This wraps the standard matrix trace to ensure it respects the scalar structure properly. For ℂ, this extracts the real part (which equals the full trace since the trace of a Hermitian matrix is real).
Why this matters:
- The trace of a Hermitian matrix is always real
- We want
trace (r • A) = r • trace Afor realr - But
A.mat.traceis technically inℂ IsMaximalSelfAdjointprovides the canonical map from the self-adjoint elements to the real scalars
Key properties:
trace_eq_re_trace: The HermitianMat trace equals the real part of the matrix tracetrace_add:(A + B).trace = A.trace + B.tracetrace_smul:(r • A).trace = r • A.tracefor realr
For bipartite systems:
-
traceLeft (A : HermitianMat (m × n) α) : HermitianMat n α: Trace out the first subsystem -
traceRight (A : HermitianMat (m × n) α) : HermitianMat m α: Trace out the second subsystem
These operations are crucial for dealing with composite quantum systems.
Hermitian matrices have a real inner product (the Hilbert-Schmidt inner product):
⟪A, B⟫ := (A.mat * B.mat).trace.reThis is written with double angle brackets and is always real-valued.
Properties:
- Bilinearity (over real scalars)
- Symmetry:
⟪A, B⟫ = ⟪B, A⟫ - Positive definiteness:
⟪A, A⟫ ≥ 0with equality iffA = 0 - Cauchy-Schwarz:
|⟪A, B⟫| ≤ ⟪A, A⟫^(1/2) * ⟪B, B⟫^(1/2)
The Loewner order is a partial order on Hermitian matrices:
A ≤ B ↔ (B - A).mat.PosSemidefIn words: A ≤ B if and only if B - A is positive semidefinite (all eigenvalues ≥ 0, or equivalently, ⟨x, (B-A)x⟩ ≥ 0 for all vectors x).
For HermitianMat:
- Implemented via
PartialOrder (HermitianMat n 𝕜)instance - Always in scope (no need to open a namespace)
- Comes with
IsOrderedAddMonoidstructure
For Matrix:
- In the
MatrixOrdernamespace - Must open with
open MatrixOrderto use - Same definition:
A ≤ B ↔ (B - A).PosSemidef
Multiple equivalent ways to express the order:
-
le_iff:A ≤ B ↔ (B - A).mat.PosSemidef -
zero_le_iff:0 ≤ A ↔ A.mat.PosSemidef -
le_iff_mulVec_le:A ≤ B ↔ ∀ x, ⟨x, A*x⟩ ≤ ⟨x, B*x⟩(All quadratic forms are ordered)
-
Via inner product:
A ≤ B ↔ ∀ C ≥ 0, ⟪C, A⟫ ≤ ⟪C, B⟫
Compatibility with operations:
- Addition:
A ≤ B → A + C ≤ B + C - Scalar multiplication (nonnegative):
0 ≤ r, A ≤ B → r • A ≤ r • B - Conjugation (
conj_mono):A ≤ B → M*A*Mᴴ ≤ M*B*Mᴴ - Trace (
trace_mono):A ≤ B → A.trace ≤ B.trace - Diagonal (
diag_mono):A ≤ B → ∀ i, A.diag i ≤ B.diag i - Inner product (
inner_mono): If0 ≤ AandB ≤ C, then⟪A, B⟫ ≤ ⟪A, C⟫
Kernels:
ker_antitone: If0 ≤ A ≤ B, thenker(B) ⊆ ker(A)- Larger matrices in Loewner order have smaller kernels
Convexity:
convex_cone: If0 ≤ A, Band0 ≤ c₁, c₂, then0 ≤ c₁•A + c₂•B- The set of positive semidefinite matrices is a convex cone
-
OrderClosedTopology: The order relation is closed- If
Aₙ ≤ BₙandAₙ → A,Bₙ → B, thenA ≤ B
- If
-
CompactIccSpace: Order intervals are compact- The set
{X | A ≤ X ≤ B}is compact for anyA ≤ B
- The set
ZeroLEOneClass:0 ≤ 1in the Loewner order- The identity matrix is positive semidefinite
The continuous functional calculus (CFC) allows us to apply continuous functions to the eigenvalues of a Hermitian matrix:
def cfc (A : HermitianMat d 𝕜) (f : ℝ → ℝ) : HermitianMat d 𝕜Conceptually: If A = ∑ᵢ λᵢ |eᵢ⟩⟨eᵢ| (spectral decomposition), then:
A.cfc f = ∑ᵢ f(λᵢ) |eᵢ⟩⟨eᵢ|
Mathematical basis: Uses Mathlib's CFC for C*-algebras, specialized to matrices.
Identity and constants:
cfc_id:A.cfc id = Acfc_const:A.cfc (fun _ => c) = c • 1
Arithmetic:
cfc_add:A.cfc (f + g) = A.cfc f + A.cfc gcfc_mul:A.cfc (f * g) = A.cfc f * A.cfc g(when commutative)cfc_smul:A.cfc (c • f) = c • A.cfc fcfc_neg:A.cfc (-f) = -(A.cfc f)cfc_sub:A.cfc (f - g) = A.cfc f - A.cfc g
Composition:
cfc_comp:A.cfc (f ∘ g) = (A.cfc g).cfc f(under appropriate conditions)
Conjugation:
cfc_conj_unitary:(A.conj U).cfc f = (A.cfc f).conj Ufor unitaryU
Monotonicity:
cfc_le_cfc_of_commute_monoOn: Iffis monotone on(0, ∞),AandBcommute, and are positive definite withA ≤ B, thenf(A) ≤ f(B)
This is crucial for proving operator monotonicity and concavity results.
For diagonal matrices, the CFC is particularly simple:
cfc_diagonal:
(diagonal 𝕜 d).cfc f = diagonal 𝕜 (f ∘ d)
This just applies f componentwise to the diagonal entries.
proj_le (A B : HermitianMat n 𝕜) : HermitianMat n 𝕜 (notation {A ≤ₚ B}):
def proj_le (A B : HermitianMat n 𝕜) : HermitianMat n 𝕜 :=
(B - A).cfc (fun x ↦ if 0 ≤ x then 1 else 0)Projects onto the eigenspace where B - A has non-negative eigenvalues.
proj_lt (A B : HermitianMat n 𝕜) : HermitianMat n 𝕜 (notation {A <ₚ B}):
def proj_lt (A B : HermitianMat n 𝕜) : HermitianMat n 𝕜 :=
(B - A).cfc (fun x ↦ if 0 < x then 1 else 0)Projects onto the eigenspace where B - A has strictly positive eigenvalues.
Flipped notations:
{A ≥ₚ B}={B ≤ₚ A}{A >ₚ B}={B <ₚ A}
Note: The default ordering here uses ≤ₚ, opposite to some papers that use ≥ₚ as default.
Idempotency:
proj_le_sq:{A ≤ₚ B}² = {A ≤ₚ B}proj_lt_sq:{A <ₚ B}² = {A <ₚ B}
These are genuine projectors (satisfy P² = P).
Bounds:
proj_le_nonneg:0 ≤ {A ≤ₚ B}proj_lt_nonneg:0 ≤ {A <ₚ B}proj_le_le_one:{A ≤ₚ B} ≤ 1proj_lt_le_one:{A <ₚ B} ≤ 1
Relationship:
proj_le_add_lt:{A ≤ₚ B} + {A <ₚ B} ≤ 1(typically equality when eigenvalues are distinct)one_sub_proj_le:1 - {B ≤ₚ A} = {A <ₚ B}
Special cases:
proj_zero_le_cfc:{0 ≤ₚ A} = A.cfc (fun x => if 0 ≤ x then 1 else 0)- This is the projector onto the non-negative eigenspace of
A
- This is the projector onto the non-negative eigenspace of
Inner products:
proj_le_inner_nonneg:0 ≤ ⟪{A ≤ₚ B}, B - A⟫proj_le_inner_le:⟪{A ≤ₚ B}, A⟫ ≤ ⟪{A ≤ₚ B}, B⟫
Interpretation: The projector {A ≤ₚ B} is the unique maximum projector P such that P * A * P ≤ P * B * P in the Loewner order.
Related to projectors are the positive and negative parts:
posPart (A : HermitianMat d 𝕜) : HermitianMat d 𝕜 (notation A⁺):
def posPart (A : HermitianMat d 𝕜) : HermitianMat d 𝕜 :=
A.cfc (fun x => max x 0)negPart (A : HermitianMat d 𝕜) : HermitianMat d 𝕜 (notation A⁻):
def negPart (A : HermitianMat d 𝕜) : HermitianMat d 𝕜 :=
A.cfc (fun x => max (-x) 0)Properties:
posPart_add_negPart:A⁺ - A⁻ = Azero_le_posPart:0 ≤ A⁺posPart_continuous: The mapA ↦ A⁺is continuousnegPart_continuous: The mapA ↦ A⁻is continuous
Definition:
def log (A : HermitianMat d 𝕜) : HermitianMat d 𝕜 :=
A.cfc Real.logCrucial convention: Uses Mathlib's Real.log, which satisfies:
Real.log 0 = 0Real.log (-x) = Real.log xforx > 0
-
Works on singular matrices:
- If
Ahas zero eigenvalues,A.logis still defined - Zero eigenvalues map to zero
- If
-
Kernel preservation:
ker(A) = ker(A.log)- Vectors in the kernel of
Aremain in the kernel ofA.log
-
Negation property:
log_smul_of_pos: For PSDAandx ≠ 0,(x • A).log = Real.log x • {0 <ₚ A} + A.log- In particular, for negative
x, the sign is absorbed byReal.log
Special values:
log_zero:(0 : HermitianMat n 𝕜).log = 0log_one:(1 : HermitianMat n 𝕜).log = 0
Scaling:
log_smul: For nonsingularAandx ≠ 0:(x • A).log = Real.log x • 1 + A.log
Conjugation:
log_conj_unitary:(A.conj U).log = A.log.conj Ufor unitaryU- The logarithm commutes with unitary conjugation
log_mono (Operator Monotonicity):
If A, B are positive definite and A ≤ B, then A.log ≤ B.log.
Proof method: Uses an integral approximation:
def logApprox (x : HermitianMat n 𝕜) (T : ℝ) : HermitianMat n 𝕜 :=
∫ t in (0)..T, ((1 + t)⁻¹ • 1 - (x + t • 1)⁻¹)Key steps:
logApprox_mono: The approximation is monotone for eachTtendsto_logApprox: AsT → ∞,logApprox x T → x.log- Monotonicity is preserved in the limit
log_concave (Operator Concavity):
For positive definite A, B and a, b ≥ 0 with a + b = 1:
a • A.log + b • B.log ≤ (a • A + b • B).log
Proof method: Similar integral approximation:
logApprox_concave: The approximation is concave- Take the limit as
T → ∞
Related result — inv_antitone:
For positive definite A ≤ B, we have B⁻¹ ≤ A⁻¹.
The matrix inverse is operator antitone.
And — inv_convex:
For positive definite A, B and convex weights:
(a • A + b • B)⁻¹ ≤ a • A⁻¹ + b • B⁻¹
The matrix inverse is operator convex.
log_kron (Positive Definite Case):
For positive definite A : HermitianMat m 𝕜 and B : HermitianMat n 𝕜:
(A ⊗ₖ B).log = A.log ⊗ₖ 1 + 1 ⊗ₖ B.log
Interpretation: The logarithm distributes over tensor products (with identity padding).
log_kron_with_proj (General Case):
For any Hermitian A, B (possibly singular):
(A ⊗ₖ B).log = (A.log ⊗ₖ B.cfc χ_{≠0}) + (A.cfc χ_{≠0} ⊗ₖ B.log)
where χ_{≠0} is the indicator function of non-zero eigenvalues: fun x => if x = 0 then 0 else 1.
Why the projectors? They account for the kernel, ensuring the formula works even when matrices are singular.
Definition:
def exp (A : HermitianMat d 𝕜) : HermitianMat d 𝕜 :=
A.cfc Real.expProperties:
- Positivity:
0 ≤ A.expalways (exponential of a Hermitian matrix is PSD) - Exponential of zero:
(0 : HermitianMat n 𝕜).exp = 1 - Exponential is always nonsingular:
A.expis always invertible - Inverse:
(A.exp)⁻¹ = (-A).exp
The library includes a formalization of Sion's minimax theorem, a generalization of the classical von Neumann minimax theorem.
Context: In classical minimax theory, we want to exchange the order of max and min:
max_x min_y f(x, y) ≤ min_y max_x f(x, y)
The question is: when does equality hold?
Von Neumann's theorem: If X and Y are compact convex subsets of Euclidean space and f is continuous, convex in x, and concave in y, then equality holds.
Sion's theorem: Generalizes to locally convex topological vector spaces. If X and Y are compact convex sets in locally convex spaces, and f is:
- Continuous
- Quasi-convex in
xfor each fixedy - Quasi-concave in
yfor each fixedx
Then the minimax equality holds.
Formalization: Located in QuantumInfo/ForMathlib/SionMinimax.lean
Key definitions:
QuasiconvexOn: Generalizes convexityQuasiconcaveOn: Generalizes concavity
The theorem: States that under appropriate compactness and continuity assumptions, we can exchange sup and inf.
Why it matters:
- Used in quantum resource theory for optimization problems
- Essential for capacity formulas
- Provides a general framework for saddle point problems
The library also formalizes notions of regularized quantities:
SupRegularized (fn : ℕ → ℝ) : ℝ:
The limit of fn n / n as n → ∞ when it exists, using supremum-based regularization.
InfRegularized (fn : ℕ → ℝ) : ℝ:
The limit of fn n / n as n → ∞ when it exists, using infimum-based regularization.
Key theorems:
mono_sup: Iffnis monotone, the regularization equals the supremumInfRegularized.of_Subadditive: For subadditive sequences, the infimum regularization exists
Application: These are used for regularized entropies and channel capacities, where we need lim_{n→∞} f(n)/n.
Definitions:
def Superadditive (f : ℕ → ℝ) : Prop := ∀ m n, f m + f n ≤ f (m + n)
def Subadditive (f : ℕ → ℝ) : Prop := ∀ m n, f (m + n) ≤ f m + f nKey theorems:
Subadditive.to_Superadditive: Iffis subadditive, then-fis superadditiveSuperadditive.to_Subadditive: Iffis superadditive, then-fis subadditive
Application: Quantum channel capacities often exhibit superadditivity or subadditivity, crucial for proving coding theorems.
Ket d represents a normalized quantum state as a vector:
structure Ket (d : Type*) [Fintype d] where
vec : d → ℂ
normalized' : ∑ x, ‖vec x‖ ^ 2 = 1Interpretation: A Ket d is a unit vector in the Hilbert space ℂᵈ. The normalized' field ensures ⟨ψ|ψ⟩ = 1.
Notation: ∣ψ〉 (scoped to Braket)
Function-like behavior:
- Has
FunLikeinstance: can apply to indices ψ igives thei-th component
Key operations:
-
Ket.prod(ψ₁ ⊗ᵠ ψ₂): Tensor product givingKet (d₁ × d₂)- Defined as:
(ψ₁ ⊗ᵠ ψ₂) (i, j) = ψ₁ i * ψ₂ j
- Defined as:
-
uniform_superposition : Ket d: The equal superposition|+⟩ = (1/√d) ∑ᵢ |i⟩
Bra d is defined identically to Ket d:
structure Bra (d : Type*) [Fintype d] where
vec : d → ℂ
normalized' : ∑ x, ‖vec x‖ ^ 2 = 1Why separate from Ket? To avoid confusion with complex conjugation. In quantum mechanics, bras and kets are related by conjugate transpose, but we want to make this explicit.
Notation: 〈ψ∣ (scoped to Braket)
Conversion:
Ket.to_bra (ψ : Ket d) : Bra d: Componentwise conjugationBra.to_ket (ψ : Bra d) : Ket d: Componentwise conjugation
dot (ξ : Bra d) (ψ : Ket d) : ℂ:
def dot (ξ : Bra d) (ψ : Ket d) : ℂ := ∑ x, (ξ x) * (ψ x)Notation: 〈ξ‖ψ〉 (scoped to Braket)
Note: This is the "mixed" form where we don't automatically conjugate. To get the standard inner product ⟨φ|ψ⟩, use 〈φ.to_bra‖ψ〉.
Properties:
- Linearity (in the second argument)
dot_self_nonneg:〈ψ.to_bra‖ψ〉is real and non-negative- Normalization:
〈ψ.to_bra‖ψ〉 = 1for any ketψ
Why not use Mathlib's Hilbert spaces directly?
The library uses basis-dependent vectors (d → ℂ) rather than abstract Hilbert spaces because:
- Computational basis is canonical in quantum information theory
- Classical limit is obvious: diagonal elements correspond to classical probabilities
- Explicit finite dimension makes many proofs simpler
- Connection to matrices is straightforward
The trade-off is that we don't get basis-independent formulations, but this is usually not needed in finite-dimensional quantum information theory.
MState d is a mixed quantum state (density matrix):
structure MState (d : Type*) [Fintype d] [DecidableEq d] where
M : HermitianMat d ℂ
zero_le : 0 ≤ M
tr : M.trace = 1Interpretation: A positive semidefinite Hermitian matrix with trace 1. Represents a statistical ensemble of pure states.
Key fields:
M: The underlyingHermitianMat d ℂm: The underlyingMatrix d d ℂ(lowercase)zero_le: Proof thatMis PSD (equivalently, all eigenvalues ≥ 0)tr: Proof thattrace(M) = 1
From pure states:
def pure (ψ : Ket d) : MState dCreates the rank-1 projector |ψ⟩⟨ψ|.
Properties:
pure ψis PSD with a single non-zero eigenvalue (equal to 1)(pure ψ).m = vecMulVec ψ (ψ : Bra d)(pure ψ).purity = 1
From classical distributions:
def ofClassical (dist : Distribution d) : MState dEmbeds a probability distribution as a diagonal density matrix.
Properties:
(ofClassical dist).m = diagonal (fun i => dist i)- Represents classical mixture with no quantum coherence
- Commutes with all matrices in the computational basis
Uniform state:
def uniform : MState d := ofClassical Distribution.uniformThe maximally mixed state I/d.
Properties:
uniform.m = (1/d) • 1- Maximum entropy:
Sᵥₙ uniform = log d - Minimum purity:
purity uniform = 1/d
Spectrum:
def spectrum (ρ : MState d) : Distribution dThe eigenvalues of ρ, viewed as a probability distribution.
Key facts:
- Eigenvalues are non-negative (from
zero_le) - Eigenvalues sum to 1 (from
tr) - Entropy can be computed from spectrum:
Sᵥₙ ρ = Hₛ (ρ.spectrum)
Purity:
def purity (ρ : MState d) : Prob := ⟪ρ, ρ⟫Measures how "pure" a state is:
purity ρ = 1iffρis a pure statepurity ρ = 1/dfor the uniform state- Equivalently:
Tr[ρ²]
Eigenvalue bounds:
eigenvalue_nonneg: All eigenvalues are non-negativeeigenvalue_le_one: All eigenvalues are at most 1le_one:ρ.M ≤ 1in the Loewner order
prod (ρ₁ ⊗ᴹ ρ₂):
For ρ₁ : MState d₁ and ρ₂ : MState d₂, gives MState (d₁ × d₂).
def prod (ρ₁ : MState d₁) (ρ₂ : MState d₂) : MState (d₁ × d₂)Properties:
(ρ₁ ⊗ᴹ ρ₂).m = ρ₁.m ⊗ₖ ρ₂.m(Kronecker product of matrices)- Product of pure states:
pure ψ₁ ⊗ᴹ pure ψ₂ = pure (ψ₁ ⊗ᵠ ψ₂) prod_inner_prod:⟪ρ₁ ⊗ᴹ ρ₂, σ₁ ⊗ᴹ σ₂⟫ = ⟪ρ₁, σ₁⟫ * ⟪ρ₂, σ₂⟫
n-fold products:
def npow (ρ : MState d) (n : ℕ) : MState (Fin n → d)Notation: ρ ⊗ᴹ^ n
Creates n identical copies on the product space.
For bipartite states ρ : MState (d₁ × d₂):
traceLeft ρ : MState d₂: Reduces to second subsystem
def traceLeft (ρ : MState (d₁ × d₂)) : MState d₂Mathematically: ρ_B = Tr_A[ρ_{AB}] = ∑ᵢ ⟨i|ρ|i⟩_A where the trace is over the first subsystem.
traceRight ρ : MState d₁: Reduces to first subsystem
def traceRight (ρ : MState (d₁ × d₂)) : MState d₁Mathematically: ρ_A = Tr_B[ρ_{AB}]
Properties:
- Linearity: Both are linear maps
- Composition:
ρ.traceLeft.traceLeftmakes sense for tripartite systems - With SWAP:
ρ.SWAP.traceLeft = ρ.traceRight
SWAP:
def SWAP (ρ : MState (d₁ × d₂)) : MState (d₂ × d₁) :=
ρ.relabel (Equiv.prodComm d₁ d₂).symmExchanges the two subsystems.
Properties:
SWAP_SWAP:ρ.SWAP.SWAP = ρtraceLeft_SWAP:ρ.SWAP.traceLeft = ρ.traceRightspectrum_SWAP: Eigenvalues preserved (up to relabeling)
Associators:
def assoc (ρ : MState ((d₁ × d₂) × d₃)) : MState (d₁ × d₂ × d₃)
def assoc' (ρ : MState (d₁ × d₂ × d₃)) : MState ((d₁ × d₂) × d₃)Properties:
assoc_assoc':ρ.assoc'.assoc = ρassoc'_assoc:ρ.assoc.assoc' = ρtraceRight_assoc:ρ.assoc.traceRight = ρ.traceRight.traceRight
purify (ρ : MState d) : Ket (d × d):
Produces a pure state |Ψ⟩ on an enlarged space such that tracing out half gives back ρ.
def purify (ρ : MState d) : Ket (d × d)Key theorem:
traceRight_of_purify:(pure ρ.purify).traceRight = ρ
This is the purification theorem: every mixed state has a purification.
U_conj (ρ : MState d) (U : Matrix.unitaryGroup d ℂ) : MState d:
Applies unitary transformation: ρ ↦ U ρ U†.
Notation: U ◃ ρ (scoped to MState)
Properties:
- Preserves all eigenvalues
- Preserves entropy:
Sᵥₙ (U ◃ ρ) = Sᵥₙ ρ - Preserves purity:
purity (U ◃ ρ) = purity ρ
relabel (ρ : MState d₁) (e : d₂ ≃ d₁) : MState d₂:
Changes the index type via an equivalence. The underlying matrix gets permuted.
Properties:
spectrum_relabel_eq: Multiset of eigenvalues preservedrelabel_kron: Commutes with tensor products (appropriately)
Topological structure:
CompactSpace (MState d): The space of states is compactMetricSpace (MState d): Inherits metric from Hermitian matricesBoundedSpace (MState d): All states are within bounded distance
Convexity:
instMixable: MStates have aMixableinstanceconvex: The set of MStates is convex in the ambient space
Interpretation: Quantum states form a compact convex set (the Bloch ball in 2D).
abbrev MatrixMap (A B R : Type*) [Semiring R] := Matrix A A R →ₗ[R] Matrix B B RA MatrixMap A B R is a linear map from A×A matrices to B×B matrices over R.
Philosophy: We view quantum channels as linear maps on the space of matrices, not on the space of states. This is more general and makes the theory cleaner.
Every matrix map has two representations:
- As a linear map (the definition)
- Via the Choi matrix
choi_matrix (M : MatrixMap A B R) : Matrix (B × A) (B × A) R:
def choi_matrix (M : MatrixMap A B R) : Matrix (B × A) (B × A) R :=
fun (j₁,i₁) (j₂,i₂) ↦ M (Matrix.single i₁ i₂ 1) j₁ j₂Interpretation: Apply the map to all elementary matrices and collect results.
of_choi_matrix (M : Matrix (B × A) (B × A) R) : MatrixMap A B R:
Inverse operation: given a matrix, construct the corresponding map.
Key theorems:
choi_map_inv:of_choi_matrix (choi_matrix M) = Mmap_choi_inv:choi_matrix (of_choi_matrix M) = Mchoi_equiv: These form a linear equivalence
Transfer matrix: There's also a toMatrix function giving the "transfer matrix" representation (different from Choi).
of_kraus (M N : κ → Matrix B A R):
Constructs the map X ↦ ∑ₖ Mₖ * X * Nₖᴴ.
Key fact: Every CPTP map has a Kraus representation.
These are propositions about matrix maps:
1. Trace Preserving:
def IsTracePreserving (M : MatrixMap A B R) : Prop :=
∀ (x : Matrix A A R), (M x).trace = x.traceEquivalent characterization:
IsTracePreserving_iff_trace_choi:M.IsTracePreserving ↔ M.choi_matrix.traceLeft = 1
Key theorems:
IsTracePreserving.comp: Composition preserves TPIsTracePreserving.kron: Tensor products preserve TPIsTracePreserving.of_kraus_isTracePreserving: Kraus form is TP iff∑ₖ Nₖᴴ Mₖ = I
2. Unital:
def Unital (M : MatrixMap A B R) : Prop := M 1 = 1Maps identity to identity.
3. Hermitian Preserving:
def IsHermitianPreserving (M : MatrixMap A B 𝕜) : Prop :=
∀ {x}, x.IsHermitian → (M x).IsHermitian4. Positive:
def IsPositive (M : MatrixMap A B 𝕜) : Prop :=
∀ {x}, x.PosSemidef → (M x).PosSemidefMaps PSD matrices to PSD matrices.
5. Completely Positive:
def IsCompletelyPositive (M : MatrixMap A B 𝕜) : Prop :=
∀ (n : ℕ), (M ⊗ₖₘ MatrixMap.id (Fin n) 𝕜).IsPositivePositive even when tensored with identity maps.
Key theorem:
choi_PSD_iff_CP_map(Choi's Theorem):M.IsCompletelyPositive ↔ M.choi_matrix.PosSemidef
These bundle a map with proofs of properties:
1. HPMap (Hermitian Preserving):
structure HPMap extends MatrixMap dIn dOut 𝕜 where
HP : MatrixMap.IsHermitianPreserving toLinearMap- Has
FunLikeinstance: can apply toHermitianMat funext_mstate: Two HP maps are equal if they agree on allMStates
2. TPMap (Trace Preserving):
structure TPMap extends MatrixMap dIn dOut R where
TP : MatrixMap.IsTracePreserving toLinearMap3. UnitalMap:
structure UnitalMap extends MatrixMap dIn dOut R where
unital : MatrixMap.Unital toLinearMap4. PMap (Positive):
structure PMap extends HPMap dIn dOut 𝕜 where
pos : MatrixMap.IsPositive toLinearMapNote: Extends HPMap (positive maps are automatically Hermitian preserving).
5. CPMap (Completely Positive):
structure CPMap extends PMap dIn dOut 𝕜 where
cp : MatrixMap.IsCompletelyPositive toLinearMap6. PTPMap (Positive Trace Preserving):
structure PTPMap extends PMap dIn dOut 𝕜, TPMap dIn dOut 𝕜Combines positivity and trace preservation.
7. PUMap (Positive Unital):
structure PUMap extends PMap dIn dOut 𝕜, UnitalMap dIn dOut 𝕜Dual notion to PTP.
8. CPTPMap (Completely Positive Trace Preserving):
structure CPTPMap extends PTPMap dIn dOut, CPMap dIn dOut whereThe main object: Quantum channels. Over ℂ by default.
9. CPUMap (Completely Positive Unital):
structure CPUMap extends CPMap dIn dOut 𝕜, PUMap dIn dOut 𝕜Dual to CPTP: maps observables (Hermitian matrices) in the opposite direction.
CPTPMap dIn dOut represents a quantum channel.
Key operations:
id : CPTPMap dIn dIn: Identity channelcompose(M₂ ∘ₘ M₁): Sequential compositionprod(M₁ ⊗ₖ M₂): Parallel composition (tensor product)CPTP_of_choi_PSD_Tr: Construct from Choi matrix
Important examples:
of_unitary (U : Matrix.unitaryGroup d ℂ): The unitary channelρ ↦ U ρ U†replacement (σ : MState dOut): Constant channel outputtingσSWAP : CPTPMap (d₁ × d₂) (d₂ × d₁): Swaps subsystemsassoc : CPTPMap ((d₁ × d₂) × d₃) (d₁ × d₂ × d₃): ReassociatestraceLeft : CPTPMap (d₁ × d₂) d₂: Partial trace as a channeltraceRight : CPTPMap (d₁ × d₂) d₁: Partial trace as a channel
Function-like behavior:
- Has
FunLikeinstance whenDecidableEq dOut - Can apply to states:
Λ ρ : MState dOutforρ : MState dIn
Extensionality:
funext: Two channels are equal if they agree on all states
State-Channel Correspondence:
choi_MState_iff_CPTP: Bijection betweenCPTPMap dIn dOutandMState (dIn × dOut)- This is the Choi-Jamiołkowski isomorphism
Mixability:
instMixable: Channels are convex (via Choi matrices)- Can take convex combinations of channels
dual (M : MatrixMap A B 𝕜) : MatrixMap B A 𝕜:
The adjoint map with respect to the Hilbert-Schmidt inner product.
Defining property: Tr[M(X) * Y] = Tr[X * M.dual(Y)]
Key theorems:
IsCompletelyPositive.dual: CP maps have CP dualsdual_kron:(M ⊗ₖₘ N).dual = M.dual ⊗ₖₘ N.dualdual_id:(MatrixMap.id A 𝕜).dual = MatrixMap.id A 𝕜
Interpretation: The dual map acts on observables in the "backwards" direction.
def Sᵥₙ (ρ : MState d) : ℝ := Hₛ (ρ.spectrum)The von Neumann entropy, defined via the Shannon entropy of the eigenvalue distribution:
S(ρ) = -∑ᵢ λᵢ log λᵢ
Properties:
Sᵥₙ_nonneg:0 ≤ Sᵥₙ ρSᵥₙ_le_log_d:Sᵥₙ ρ ≤ log(d)with equality for uniform state- Concavity: Von Neumann entropy is concave
- Unitary invariance:
Sᵥₙ (U ◃ ρ) = Sᵥₙ ρ - Subadditivity:
Sᵥₙ ρ ≤ Sᵥₙ ρ.traceLeft + Sᵥₙ ρ.traceRight
def qConditionalEnt (ρ : MState (dA × dB)) : ℝ :=
Sᵥₙ ρ - Sᵥₙ ρ.traceLeftQuantum conditional entropy: S(A|B) = S(ρ_{AB}) - S(ρ_B).
Key difference from classical: Can be negative (indicates entanglement).
Interpretation:
- Negative conditional entropy means the joint system has less uncertainty than subsystem B alone
- This is impossible classically but common for entangled quantum states
def qMutualInfo (ρ : MState (dA × dB)) : ℝ :=
Sᵥₙ ρ.traceLeft + Sᵥₙ ρ.traceRight - Sᵥₙ ρQuantum mutual information: I(A:B) = S(ρ_A) + S(ρ_B) - S(ρ_{AB}).
Properties:
- Non-negativity:
0 ≤ qMutualInfo ρ - Symmetry:
qMutualInfo ρ = qMutualInfo ρ.SWAP - Measures total correlations (classical + quantum)
Relationship to relative entropy:
qMutualInfo_as_qRelativeEnt:I(A:B) = 𝐃(ρ_{AB} ‖ ρ_A ⊗ ρ_B)
def qcmi (ρ : MState (dA × dB × dC)) : ℝ :=
qConditionalEnt ρ.assoc'.traceRight - qConditionalEnt ρQuantum conditional mutual information: I(A;C|B) = S(A|B) - S(A|BC).
Physical meaning: Information about A contained in C, given knowledge of B.
Key theorem:
Sᵥₙ_weak_monotonicity: Related to strong subadditivity
def coherentInfo (ρ : MState d₁) (Λ : CPTPMap d₁ d₂) : ℝ :=
-qConditionalEnt (Λ.prod CPTPMap.id (pure ρ.purify))The coherent information of ρ through channel Λ.
Physical meaning: Maximum rate at which quantum information can be transmitted through Λ.
Connection to capacity: Related to the quantum capacity of the channel.
def qRelativeEnt (ρ σ : MState d) : EReal := D̃_1(ρ‖σ)Notation: 𝐃(ρ‖σ)
The quantum relative entropy (also called quantum Kullback-Leibler divergence):
𝐃(ρ‖σ) = Tr[ρ (log ρ - log σ)]
When supports are compatible, otherwise +∞.
Properties:
- Non-negativity:
0 ≤ 𝐃(ρ‖σ)with equality iffρ = σ(quantum Pinsker) qRelativeEnt_additive:𝐃(ρ₁ ⊗ᴹ ρ₂‖σ₁ ⊗ᴹ σ₂) = 𝐃(ρ₁‖σ₁) + 𝐃(ρ₂‖σ₂)qRelativeEnt_joint_convexity: Jointly convex in(ρ, σ)- Data processing inequality:
𝐃(Λ ρ‖Λ σ) ≤ 𝐃(ρ‖σ)for any CPTPΛ
Relationship to mutual information: Mutual information is relative entropy to the product state:
I(A:B) = 𝐃(ρ_{AB} ‖ ρ_A ⊗ ρ_B)
def SandwichedRelRentropy (α : ℝ) (ρ σ : MState d) : ERealNotation: D̃_α(ρ‖σ)
A family of relative entropies parameterized by α ∈ [0, ∞]:
D̃_α(ρ‖σ) = (1/(α-1)) log Tr[(σ^((1-α)/(2α)) ρ σ^((1-α)/(2α)))^α]
Special cases:
α = 1: Quantum relative entropy𝐃(ρ‖σ)(defined as limit)α = 1/2: Related to fidelityα → ∞: Min-relative entropy
Properties:
sandwichedRelRentropy_additive:D̃_α(ρ₁ ⊗ᴹ ρ₂‖σ₁ ⊗ᴹ σ₂) = D̃_α(ρ₁‖σ₁) + D̃_α(ρ₂‖σ₂)- Monotone in
α - Data processing inequality
The issue: In standard quantum information notation, we write:
ρ_{ABC}for a tripartite stateρ_{AC}after tracing outBI(A:C|B)for conditional mutual information
This treats subsystems by name.
In Lean: A type like MState (dA × dB × dC) is actually MState (dA × (dB × dC)) due to right-associativity of ×.
Consequence: Partial traces act on the outermost split. We can directly talk about:
- The partition
dAvs(dB × dC) - But not directly about
dA × dCvsdB
To access different bipartitions, we use explicit permutation functions.
SWAP:
def SWAP (ρ : MState (d₁ × d₂)) : MState (d₂ × d₁) :=
ρ.relabel (Equiv.prodComm d₁ d₂).symmExchanges two subsystems.
Properties:
SWAP_SWAP:ρ.SWAP.SWAP = ρ(involutive)traceLeft_SWAP:ρ.SWAP.traceLeft = ρ.traceRighttraceRight_SWAP:ρ.SWAP.traceRight = ρ.traceLeftspectrum_SWAP: Eigenvalues preserved up to relabeling
Associators:
def assoc (ρ : MState ((d₁ × d₂) × d₃)) : MState (d₁ × d₂ × d₃) :=
ρ.relabel (Equiv.prodAssoc d₁ d₂ d₃).symm
def assoc' (ρ : MState (d₁ × d₂ × d₃)) : MState ((d₁ × d₂) × d₃) :=
ρ.SWAP.assoc.SWAP.assoc.SWAPChange the grouping of a tripartite system.
Properties:
assoc_assoc':ρ.assoc'.assoc = ρassoc'_assoc:ρ.assoc.assoc' = ρtraceRight_assoc:ρ.assoc.traceRight = ρ.traceRight.traceRighttraceLeft_assoc':ρ.assoc'.traceLeft = ρ.traceLeft.traceLefttraceLeft_right_assoc:ρ.assoc.traceLeft.traceRight = ρ.traceRight.traceLeft
Setup: We have ρ : MState (dA × dB × dC) which is really dA × (dB × dC).
Goal: Compute S(A|C) = conditional entropy of A given C, ignoring B.
Challenge: We need access to the bipartition (dA × dC) vs dB, but our type structure doesn't give this directly.
Method:
- Use
SWAPandassocto rearrange: move subsystems soAandCare adjacent - Apply partial traces to get
ρ_{AC} - Compute conditional entropy on the result
Current state: Entropy inequalities explicitly use these permutations in their statements.
Future direction: A more flexible "named subsystems" API is desired but not yet implemented.
All permutations exist as CPTPMap channels:
CPTPMap.SWAP : CPTPMap (d₁ × d₂) (d₂ × d₁)CPTPMap.assoc : CPTPMap ((d₁ × d₂) × d₃) (d₁ × d₂ × d₃)CPTPMap.assoc' : CPTPMap (d₁ × d₂ × d₃) ((d₁ × d₂) × d₃)CPTPMap.traceLeft : CPTPMap (d₁ × d₂) d₂CPTPMap.traceRight : CPTPMap (d₁ × d₂) d₁
Consistency: These satisfy CPTPMap.SWAP ρ = ρ.SWAP, etc.
def TrDistance (ρ σ : MState d) : ℝ :=
(1/2) * (ρ.m - σ.m).traceNormThe trace distance between states: D(ρ, σ) = (1/2) ‖ρ - σ‖₁.
Interpretation: The trace norm ‖A‖₁ = Tr[√(A†A)] is the sum of singular values.
Properties:
- Bounds:
0 ≤ TrDistance ρ σ ≤ 1 TrDistance.prob: Can be bundled as aProb- Metric: Forms a metric on
MState d - Contractivity:
TrDistance (Λ ρ) (Λ σ) ≤ TrDistance ρ σfor CPTPΛ- Channels cannot increase distinguishability
Physical meaning: Optimal success probability in distinguishing ρ from σ using any measurement.
def Fidelity (ρ σ : MState d) : ℝThe fidelity between states: F(ρ, σ) = Tr[√(√ρ σ √ρ)].
Alternative definition (via purifications): Maximum overlap between purifications of ρ and σ.
Properties:
- Bounds:
0 ≤ Fidelity ρ σ ≤ 1 Fidelity.prob: Can be bundled as aProb- Symmetry:
Fidelity ρ σ = Fidelity σ ρ - Monotonicity:
Fidelity (Λ ρ) (Λ σ) ≥ Fidelity ρ σfor CPTPΛ- Opposite direction from trace distance!
Physical meaning: Measures "closeness" of quantum states, with different operational interpretation than trace distance.
Uhlmann's theorem: The fidelity is achieved by optimal choice of purifications.
The trace distance and fidelity are related by various inequalities:
Fuchs-van de Graaf inequalities:
1 - F(ρ, σ) ≤ D(ρ, σ) ≤ √(1 - F(ρ, σ)²)
These relate the two fundamental distance measures in quantum information theory.
Kronecker products (tensor products) are fundamental in quantum information theory. The library defines them for many types, using different notations to avoid ambiguity.
Key convention: The product of types d₁ and d₂ has type d₁ × d₂ (Cartesian product in Lean's type system).
| Type | Notation | Input Types | Output Type | Scope |
|------|----------|-------------|-------------|-------|a
| Matrix | ⊗ₖ | Matrix A B R, Matrix C D R | Matrix (A×B) (C×D) R | Kronecker |
| Ket | ⊗ᵠ | Ket d₁, Ket d₂ | Ket (d₁ × d₂) | default |
| MState | ⊗ᴹ | MState d₁, MState d₂ | MState (d₁ × d₂) | default |
| HermitianMat | ⊗ₖ | HermitianMat m 𝕜, Hermitia(nMat n 𝕜 | HermitianMat (m × n) 𝕜 | HermitianMat |
| CPTPMap | ⊗ᶜᵖ | CPTPMap dIn₁ dOut₁, CPTPMap dIn₂ dOut₂ | CPTPMap (dIn₁×dIn₂) (dOut₁×dOut₂) | default |
| MatrixMap | ⊗ₖₘ | MatrixMap A B R, MatrixMap C D R | MatrixMap (A×C) (B×D) R | MatrixMap |
| Unitary | ⊗ᵤ | Unitary, Unitary | Unitary on product | Matrix |
| Categorical | ⊗ᵣ | MState (H i), MState (H j) | MState (H (i * j)) | ResourcePretheory |
The first of these, for bare matrices, comes from Mathlib. The last of these is used in the context of quantum resource theories (or, more generally, categorical quantum mechanics) where there is a product isomorphism; this product gives a state on the corresponding Hilbert space identified by the category, as opposed to a Hilbert space indexed by Lean's Prod type.
Why different notations?
- Avoids ambiguity when multiple products are in scope
- Makes code more readable
- Each notation is tailored to its domain
Linearity: All products are (bi)linear.
Associativity: Products are associative up to canonical isomorphism:
(ρ₁ ⊗ᴹ ρ₂) ⊗ᴹ ρ₃ ≅ ρ₁ ⊗ᴹ (ρ₂ ⊗ᴹ ρ₃)
But they live in different types: ((d₁ × d₂) × d₃) vs (d₁ × (d₂ × d₃)).
For pure states:
pure ψ₁ ⊗ᴹ pure ψ₂ = pure (ψ₁ ⊗ᵠ ψ₂)
For channels:
(Λ₁ ⊗ₖ Λ₂) (ρ₁ ⊗ᴹ ρ₂) = (Λ₁ ρ₁) ⊗ᴹ (Λ₂ ρ₂)
For MState:
def npow (ρ : MState d) (n : ℕ) : MState (Fin n → d)Notation: ρ ⊗ᴹ^ n
Creates n identical copies on the type Fin n → d.
Example: ρ ⊗ᴹ^ 3 represents three copies of ρ.
Logarithm:
log_kron:(A ⊗ₖ B).log = A.log ⊗ₖ 1 + 1 ⊗ₖ B.log
Trace preservation:
IsTracePreserving.kron: Tensor products of TP maps are TP
Relative entropy:
qRelativeEnt_additive: Relative entropy is additive on product states
Duality:
dual_kron:(M ⊗ₖₘ N).dual = M.dual ⊗ₖₘ N.dual
| Notation | Meaning | Type | Scope |
|---|---|---|---|
〈ψ∣ |
Bra vector | Bra d |
Braket |
∣ψ〉 |
Ket vector | Ket d |
Braket |
〈ξ‖ψ〉 |
Inner product (bra·ket) | ℂ |
Braket |
⟪A, B⟫ |
Hilbert-Schmidt inner product | ℝ |
default |
ψ₁ ⊗ᵠ ψ₂ |
Ket tensor product | Ket (d₁ × d₂) |
default |
ρ₁ ⊗ᴹ ρ₂ |
State tensor product | MState (d₁ × d₂) |
default |
ρ ⊗ᴹ^ n |
n-fold state power | MState (Fin n → d) |
default |
| Notation | Meaning | Type | Scope |
|---|---|---|---|
A ⊗ₖ B |
Kronecker product | HermitianMat (m × n) 𝕜 |
HermitianMat |
{A ≤ₚ B} |
Projection onto B-A ≥ 0 eigenspace |
HermitianMat n 𝕜 |
HermitianMat |
{A <ₚ B} |
Projection onto B-A > 0 eigenspace |
HermitianMat n 𝕜 |
HermitianMat |
{A ≥ₚ B} |
Same as {B ≤ₚ A} |
HermitianMat n 𝕜 |
HermitianMat |
{A >ₚ B} |
Same as {B <ₚ A} |
HermitianMat n 𝕜 |
HermitianMat |
A⁺ |
Positive part max(A, 0) |
HermitianMat d 𝕜 |
HermitianMat |
A⁻ |
Negative part max(-A, 0) |
HermitianMat d 𝕜 |
HermitianMat |
| Notation | Meaning | Type | Scope |
|---|---|---|---|
M₁ ⊗ₖ M₂ |
Channel tensor product | CPTPMap ... |
default |
M₁ ∘ₘ M₂ |
Channel composition (M₁ after M₂) | CPTPMap dIn dOut |
default |
U ◃ ρ |
Unitary conjugation U ρ U† |
MState d |
MState |
M ⊗ₖₘ N |
MatrixMap tensor product | MatrixMap ... |
MatrixMap |
𝐔[n] |
Unitary group U(n) |
Matrix.unitaryGroup n ℂ |
default |
C[g] |
Controlled unitary gate | Qubit unitary | qubit-specific |
| Notation | Meaning | Value Type | Scope |
|---|---|---|---|
𝐃(ρ‖σ) |
Quantum relative entropy | EReal |
default |
D̃_α(ρ‖σ) |
Sandwiched Rényi entropy (α-parametrized) | EReal |
default |
β_ε(ρ‖S) |
Optimal hypothesis test error rate | Prob |
OptimalHypothesisRate |
| Notation | Meaning | Type | Scope |
|---|---|---|---|
ρ₁ ⊗ᵣ ρ₂ |
Resource-theoretic product | MState (H (i * j)) |
resource theory |
M₁ ⊗ᶜᵖᵣ M₂ |
RT channel product | CPTPMap ... |
resource theory |
i ⊗^H[n] |
n-fold RT space power | Space type | resource theory |
ρ ⊗ᵣ^[n] |
n-fold RT state power | MState (H (i ^ n)) |
resource theory |
𝑅ᵣ |
Relative entropy resource measure | ℝ |
resource theory |
𝑅ᵣ∞ |
Regularized RE resource | ℝ |
resource theory |
To use scoped notations:
open scoped HermitianMat -- enables ⊗ₖ for HermitianMat
open scoped MatrixMap -- enables ⊗ₖₘ
open scoped Braket -- enables ∣ψ〉, 〈ψ∣, etc.Default scope: Notations like ⊗ᴹ, ∘ₘ are always available.
-
log_mono(Logarithm Monotonicity): For positive definiteA ≤ B, we haveA.log ≤ B.log.- The matrix logarithm is operator monotone
-
log_concave(Logarithm Concavity): For positive definiteA, Band convex combination weightsa, b ≥ 0witha + b = 1:a • A.log + b • B.log ≤ (a • A + b • B).log- The matrix logarithm is operator concave
-
inv_antitone(Inverse Antitonicity): For positive definiteA ≤ B, we haveB⁻¹ ≤ A⁻¹.- The matrix inverse is operator antitone
-
inv_convex(Inverse Convexity): For positive definiteA, Band convex weights:(a • A + b • B)⁻¹ ≤ a • A⁻¹ + b • B⁻¹- The matrix inverse is operator convex
-
log_kron(Logarithm of Kronecker Product): For positive definiteA, B:(A ⊗ₖ B).log = A.log ⊗ₖ 1 + 1 ⊗ₖ B.log
-
choi_PSD_iff_CP_map(Choi's Theorem): A map is completely positive iff its Choi matrix is positive semidefinite.- This is the fundamental Choi-Jamiołkowski correspondence
-
choi_MState_iff_CPTP(State-Channel Correspondence): CPTP maps fromdIntodOutcorrespond bijectively to states ondIn × dOut. -
IsTracePreserving.of_kraus_isTracePreserving(Kraus TP Criterion): Kraus operators{Mₖ, Nₖ}define a TP map iff∑ₖ Nₖ† Mₖ = I. -
IsCompletelyPositive.dual(Duality of CP Maps): The dual of a completely positive map is completely positive. -
dual_kron(Duality Preserves Kronecker Products):(M ⊗ₖₘ N).dual = M.dual ⊗ₖₘ N.dual
-
qRelativeEnt_additive(Additivity of Relative Entropy):𝐃(ρ₁ ⊗ᴹ ρ₂‖σ₁ ⊗ᴹ σ₂) = 𝐃(ρ₁‖σ₁) + 𝐃(ρ₂‖σ₂) -
qRelativeEnt_joint_convexity(Joint Convexity): Quantum relative entropy is jointly convex in both arguments. -
sandwichedRelRentropy_additive(Rényi Additivity): Sandwiched Rényi entropy is additive on product states for allα. -
Sᵥₙ_weak_monotonicity(Weak Monotonicity): Related to strong subadditivity of von Neumann entropy. -
qMutualInfo_as_qRelativeEnt(Mutual Information as Relative Entropy):I(A:B) = 𝐃(ρ_{AB} ‖ ρ_A ⊗ ρ_B)
-
MState.convex(States Form Convex Set): The set of quantum states is convex in the ambient Hermitian matrix space. -
HermitianMat.convex_cone(PSD Cone is Convex): Non-negative combinations of PSD Hermitian matrices are PSD. -
Matrix.PosSemidef.convex_cone(Matrix PSD Cone): Same for plain matrices.
-
trace_mono(Trace Monotonicity):A ≤ B → A.trace ≤ B.tracein Loewner order. -
conj_mono(Conjugation Preserves Order):A ≤ B → M * A * Mᴴ ≤ M * B * Mᴴ -
inner_mono(Inner Product Monotonicity): If0 ≤ AandB ≤ C, then⟪A, B⟫ ≤ ⟪A, C⟫. -
diagonal_mono(Diagonal Monotonicity): Componentwise order on diagonal entries corresponds to Loewner order. -
optimalHypothesisRate_antitone(Data Processing for Hypothesis Testing): Quantum channels cannot improve hypothesis testing performance.
-
CompactSpace (MState d)(States are Compact): The space of quantum states on a finite-dimensional system is compact. -
OrderClosedTopology (HermitianMat d 𝕜)(Order is Closed): The Loewner order on Hermitian matrices is topologically closed. -
CompactIccSpace (HermitianMat d 𝕜)(Order Intervals Compact): Order intervals[A, B] = {X | A ≤ X ≤ B}are compact. -
tendsto_logApprox(Logarithm Approximation Convergence): For positive definitex,logApprox x T → x.logasT → ∞.
-
HPMap.funext_mstate(Extensionality for HP Maps): Two Hermitian-preserving maps are equal if they agree on allMStates. -
CPTPMap.funext(Extensionality for Channels): Two CPTP maps are equal if they agree on all input states.
RelativeEntResource.Subadditive(Relative Entropy Resource): The relative entropy of resource is subadditive under tensor products.
- Sion's Minimax Theorem:
Under appropriate compactness and quasi-convexity conditions,
sup_x inf_y f(x,y) = inf_y sup_x f(x,y).