Diamond-norm distance between quantum channels (and )
DefinitionWildeQIT_diamondNormDefinition 9.1.3 (Diamond-Norm Distance). Let be quantum channels. The diamond-norm distance is defined as
where and is a reference system of dimension .
The diamond norm quantifies how well two channels can be distinguished by any strategy that may use entanglement with a reference system; Theorem 9.1.1 shows the supremum is attained by a pure state with .
Formalization Note. Channels are Kraus representations N M : WildeQIT.QChannel a b. The file first defines WildeQIT.QChannel.tensorIdApply r N X = ∑ i, (1 ⊗ₖ N.K i) * X * (1 ⊗ₖ N.K i)ᴴ, the action of on X : Matrix (r × a) (r × a) ℂ (Kronecker convention, reference system first). Then WildeQIT.diamondNorm N M is the real supremum sSup of the set of trace distances traceDist (N.tensorIdApply (Fin n) ρ) (M.tensorIdApply (Fin n) ρ) over all n : ℕ and all density operators ρ on Fin n × a. Mathlib's sSup returns 0 for an empty or unbounded set; the set is nonempty whenever a is nonempty (take ) and is bounded by 2 (both arguments are density operators), so no junk value arises in that case. It is a supremum over the union over , which coincides with .
import Definitions.Def_WildeQIT_traceDist
import Definitions.Def_WildeQIT_IsDensityOperator
import Definitions.Def_WildeQIT_QChannel
import Mathlib.LinearAlgebra.Matrix.Kronecker
/-!
Wilde, *Quantum Information Theory* (2nd ed.), §9.1.6, Definition 9.1.3 (Diamond-Norm Distance).
Let `𝒩, ℳ : L(ℋ_A) → L(ℋ_B)` be quantum channels. The diamond-norm distance is
`‖𝒩 − ℳ‖_◇ ≡ sup_n max_{ρ_{R_n A}} ‖(id_{R_n} ⊗ 𝒩_{A→B})(ρ_{R_n A}) − (id_{R_n} ⊗ ℳ_{A→B})(ρ_{R_n A})‖₁`,
where `ρ_{R_n A} ∈ 𝒟(ℋ_{R_n} ⊗ ℋ_A)` and `R_n` is a reference system of dimension `n`.
-/
open Matrix
open Kronecker
namespace WildeQIT
/-- The channel `id_R ⊗ 𝒩` acting on operators of the composite system `R ⊗ A`, for a channel
`𝒩 : L(ℋ_A) → L(ℋ_B)` in Kraus form: `(id_R ⊗ 𝒩)(X) = ∑ᵢ (I_R ⊗ Kᵢ) X (I_R ⊗ Kᵢ)†`. -/
def QChannel.tensorIdApply {a b : Type} [Fintype a] [Fintype b] [DecidableEq a]
(r : Type) [Fintype r] [DecidableEq r] (N : QChannel a b)
(X : Matrix (r × a) (r × a) ℂ) : Matrix (r × b) (r × b) ℂ :=
∑ i, ((1 : Matrix r r ℂ) ⊗ₖ N.K i) * X * ((1 : Matrix r r ℂ) ⊗ₖ N.K i)ᴴ
/-- **Definition 9.1.3 (Diamond-Norm Distance).** For channels `𝒩, ℳ : L(ℋ_A) → L(ℋ_B)`,
`‖𝒩 − ℳ‖_◇` is the supremum, over all reference-system dimensions `n` and all density
operators `ρ` on `R_n ⊗ A` (`R_n` indexed by `Fin n`), of the trace distance
`‖(id ⊗ 𝒩)(ρ) − (id ⊗ ℳ)(ρ)‖₁`. -/
noncomputable def diamondNorm {a b : Type} [Fintype a] [Fintype b] [DecidableEq a] [DecidableEq b]
(N M : QChannel a b) : ℝ :=
sSup {x : ℝ | ∃ (n : ℕ) (ρ : Matrix (Fin n × a) (Fin n × a) ℂ), IsDensityOperator ρ ∧
x = traceDist (N.tensorIdApply (Fin n) ρ) (M.tensorIdApply (Fin n) ρ)}
end WildeQIT