Canonical quantum channels #
Category: 1-Mathlib (CSD-free; staged as a Mathlib-upstream candidate).
This file (phase C3 of specs/channels-plan.md) records the standard named channels as
inhabitants of QuantumInfo.Channel:
Channel.unitaryChannel U hU— a unitary channelρ ↦ U ρ Uᴴ(a single Kraus operatorU,Uᴴ U = 1). GeneralisesChannel.id(= unitaryChannel 1).Channel.traceOutChannel— the trace-out (partial-trace) channelρ ↦ traceRight ρonℂ^(s ⊗ env), the literal "discard the environment". Obtained for free from the C2 Stinespring machinery asofIsometry 1.Channel.mixedUnitaryChannel U hU p hp0 hp— a mixed-unitary (random-unitary) channelρ ↦ ∑ᵢ pᵢ • (Uᵢ ρ Uᵢᴴ)for a probability vectorpand unitariesUᵢ, with Kraus operators√pᵢ • Uᵢ. This is the Cat-1-clean generalisation of the dephasing / depolarizing / bit-flip channels: each of those ismixedUnitaryChannelwith a concrete Pauli family (assembled by the consumer, which supplies the Paulis — keeping this file Pauli-free).
The dephasing/depolarizing/bit-flip channels named in the plan are instances of
mixedUnitaryChannel; the QEC error channel (phase C4) is the bit-flip instance.
Unitary channel #
The unitary channel ρ ↦ U ρ Uᴴ of a unitary U (Uᴴ U = 1): a single Kraus
operator. Generalises Channel.id (which is unitaryChannel 1).
Equations
- QuantumInfo.Channel.unitaryChannel U hU = { kraus := fun (x : PUnit.{?u.1 + 1}) => U, tp := ⋯ }
Instances For
Trace-out channel #
The trace-out channel on ℂ^(s ⊗ env): discard the environment, ρ ↦ traceRight ρ.
It is the C2 Stinespring channel of the identity isometry.
Equations
Instances For
Mixed-unitary (random-unitary) channel #
The mixed-unitary (random-unitary) channel ρ ↦ ∑ᵢ pᵢ • (Uᵢ ρ Uᵢᴴ): a convex
combination (probabilities p, ∑ pᵢ = 1, pᵢ ≥ 0) of unitary conjugations, with Kraus
operators √pᵢ • Uᵢ. The dephasing / depolarizing / bit-flip channels are the instances
with a concrete Pauli family for U.
Equations
Instances For
Kronecker-with-identity commutes with finite sums on the left factor.
The local channel Φ ⊗ id_b: Alice applies the channel Φ to her factor while
Bob's factor b is left idle. Kraus operators Φ.kraus i ⊗ I_b.
Equations
- Φ.tensorRight b = { kraus := fun (i : ι) => Matrix.kroneckerMap (fun (x1 x2 : ℂ) => x1 * x2) (Φ.kraus i) 1, tp := ⋯ }
Instances For
Complete positivity, witnessed. For every idle factor b, the local channel
Φ ⊗ id_b maps positive-semidefinite operators to positive-semidefinite operators — the
formal CP statement the Kraus form justifies, immediate because tensorRight is itself a
Channel and every channel's action is positive (apply_posSemidef).