Quantum Hamming Bound #
This file proves the quantum Hamming bound for non-degenerate quantum error-correcting codes. It formalizes the n-qubit Pauli error model and the Knill–Laflamme error correction conditions.
Main results #
card_pauliErrorsLe: The number of Pauli strings of weight ≤ t on n qubits equals∑ j ∈ Finset.range (t + 1), n.choose j * 3 ^ j.quantum_hamming_bound_raw: For an[[n, k]]non-degenerate quantum code correcting t errors,(∑ j, C(n,j) * 3^j) * 2^k ≤ 2^n.quantum_hamming_bound: The standard form∑ j, C(n,j) * 3^j ≤ 2^(n-k).
References #
- Knill, Laflamme (1997): Theory of quantum error-correcting codes.
The four-element type indexing the single-qubit Pauli matrices:
identity I, bit-flip X, bit-phase-flip Y, and phase-flip Z.
- I : PauliBasis
- X : PauliBasis
- Y : PauliBasis
- Z : PauliBasis
Instances For
Equations
- instFintypePauliBasis = { elems := { val := ↑PauliBasis.enumList, nodup := PauliBasis.enumList_nodup }, complete := instFintypePauliBasis._proof_1 }
Equations
Instances For
Equations
- instInhabitedPauliBasis = { default := instInhabitedPauliBasis.default }
Maps each Pauli basis element to its corresponding 2×2 matrix.
Equations
Instances For
An n-qubit Pauli string: a function assigning a Pauli basis element to each of the n qubits.
Equations
- PauliString n = (Fin n → PauliBasis)
Instances For
Equations
- instFintypePauliString n = inferInstanceAs (Fintype (Fin n → PauliBasis))
The 2^n × 2^n matrix for an n-qubit Pauli string, given as a tensor product of single-qubit Pauli matrices.
Equations
- pauliMatrix p i j = ∏ k : Fin n, (p k).toMatrix (i k) (j k)
Instances For
The finset of all n-qubit Pauli strings of weight at most t.
Equations
- PauliErrorsLe n t = {p : PauliString n | weight p ≤ t}
Instances For
Equations
- instFintypePauliNZ = { elems := { val := ↑PauliNZ.enumList, nodup := PauliNZ.enumList_nodup }, complete := instFintypePauliNZ._proof_1 }
Equations
- instInhabitedPauliNZ = { default := instInhabitedPauliNZ.default }
Equations
Instances For
Embeds a non-identity Pauli into the full Pauli basis.
Equations
Instances For
Constructs a Pauli string with support exactly S and non-identity assignments given by f.
Equations
- mkWithSupport S f i = if h : i ∈ S then (f ⟨i, h⟩).toBasis else PauliBasis.I
Instances For
The finset of Pauli strings with support exactly equal to S.
Equations
- pauliStringsExactSupport S = {p : PauliString n | support p = S}
Instances For
Clean Quantum Hamming counting identity.
The linear operator on Hn n given by acting with the Pauli string p.
Equations
- pauliOp p = Matrix.toLin' (pauliMatrix p)
Instances For
The adjoint (Hermitian conjugate) of the Pauli operator for p.
Equations
Instances For
The Knill–Laflamme quantum error correction condition: for all Pauli errors E, F of weight
≤ t, the code projection satisfies Π_C ∘ E† ∘ F ∘ Π_C = α_{E,F} • Π_C for some scalar.
Equations
Instances For
A code is non-degenerate if it satisfies the Knill–Laflamme condition with all off-diagonal
terms zero: for distinct errors E ≠ F of weight ≤ t, Π_C ∘ E† ∘ F ∘ Π_C = 0.
Equations
- IsNondegenerate n C t = (KnillLaflamme n C t ∧ ∀ (E F : PauliString n), weight E ≤ t → weight F ≤ t → E ≠ F → codeProj C ∘ₗ pauliOpAdjoint E ∘ₗ pauliOp F ∘ₗ codeProj C = 0)
Instances For
The error sphere: the span of all images E(C) over Pauli strings E of weight ≤ t.
This is the subspace that must fit inside Hn n to derive the Hamming bound.
Equations
- ErrorSphere n t C = (PauliErrorsLe n t).sup fun (E : PauliString n) => Submodule.map (pauliOp E) C
Instances For
The n-qubit Hilbert space Hn n has complex dimension 2^n.
Quantum Hamming bound (raw form): for a non-degenerate [[n, k]] quantum code correcting
t errors, the total dimension of the error sphere does not exceed the ambient space.
Quantum Hamming bound: a non-degenerate [[n, k]] quantum code correcting t errors satisfies
∑ j ∈ Finset.range (t + 1), C(n, j) * 3^j ≤ 2^(n - k).