The transversal CNOT across two Steane blocks, and a fault at one of its locations #
Category: 3-Local (Empirical, QM twin). BACKLOG #62 (f), the two-block half of the transversal gate set.
SteaneFaultyGate.lean (#62 (a), (b)) treats gadgets on one block: the transversal X̄, Z̄ and
Hadamard. The remaining Clifford generator acts on two blocks: CNOT on the q-th qubit of each,
for all seven q. In the computational basis that gadget is a permutation of the labels,
(u, v) ↦ (u, u + v), and the whole content of its transversality is that the Steane code is
linear: adding a codeword of the coset of x to the coset of y lands in the coset of x + y.
pairEnc— the two-block encodersteaneEnc ⊗ steaneEnc, as ablockKronover two blocks (#86's layer), withpairEnc_conjTranspose_mul;cosetAmp,steaneEnc_eq_cosetAmp— the encoder's amplitudes as coset counts, and ★★cosetAmp_shift/ ★★steaneEnc_mul_shift: the coset shift, the linearity of the code in the form the gadget needs;cnotPerm,cnotT— the transversalCNOTas the permutation matrix of(u, v) ↦ (u, u + v), withcnotT_conjTranspose,cnotT_mul_self(it is its own inverse) andcnotT_mem_unitaryGroup;cnotLis the logicalCNOT, the same permutation on two bits;- ★★★
cnotT_mul_pairEnc— the transversalCNOTIS the logicalCNOT:CNOT^{⊗7} · (V ⊗ V) = (V ⊗ V) · CNOT, in the Schrödinger picture, so ★★cnotT_conj_pairEnc_codegives the ideal gadget's action on an encoded pair of qubits; pairFam, ★★encoderKL_pairFam, ★★exists_pair_recovery— one recovery channel for the two blocks, from Knill–Laflamme in encoder form (#86): the family is one single-qubit Pauli per block, and the condition composes over the blocks becausesteaneEnc_pauli_pairholds in each;- ★★★
steane_faultyCNOT_recovery— a faulty transversalCNOTis corrected: one bad location (an arbitrary unitary on the two qubits of oneCNOT, in product form) leaves the recovery returning the ideal output, the logicalCNOTapplied to the encoded pair.
Honest scope #
⚠️ The fault at a location is taken in product form A ⊗ B (an arbitrary single-qubit operator
on each of the two qubits of that CNOT). Products span the operators on two qubits, and
recovery_apply_lin_comb is exactly the tool that lifts the statement to sums, but the general
non-product fault is not stated: it would need a pair-register view of the two-block labels, which
this file does not build.
⚠️ The recovery is the Knill–Laflamme channel of the two-block code, not two independent per-block recoveries; nothing here says the two blocks can be corrected separately (they can, but that needs a tensor product of channels, which the corpus does not have).
⚠️ Faults in the recovery gadget — extended rectangles — are still BACKLOG #62 (c), and the simulation theorem #62 (d).
References: A. Steane, PRL 77 (1996); M. Nielsen, I. Chuang, Quantum Computation and Quantum
Information §10.4.2 (CSS codes and transversal gates); P. Aliferis, D. Gottesman, J. Preskill,
Quantum Inf. Comput. 6 (2006); Empirical/QM/QEC/SteaneConcat.lean (#86);
specs/BACKLOG.md #62 (f); specs/steane-plan.md.
The two-block encoder #
The encoder of a pair of Steane blocks: steaneEnc on each, as a tensor over two blocks.
Equations
Instances For
The encoder's amplitudes are coset counts #
The constant label: 0 for the code itself, the all-ones vector for the other coset.
Equations
Instances For
How many row-space representatives put z in the coset labelled y.
Equations
- CSD.Empirical.QM.QEC.Steane.cosetAmp y z = ∑ c : Fin 3 → Fin 2, if z = CSD.Empirical.QM.QEC.Steane.rowComb c + CSD.Empirical.QM.QEC.Steane.constVec y then 1 else 0
Instances For
★★ The coset shift. If u lies in the coset labelled x, adding u carries the coset
labelled y onto the coset labelled x + y: the code is linear, which is the whole reason a
transversal CNOT is a logical CNOT.
The transversal CNOT #
The label permutation of the transversal CNOT: the control block is unchanged, the target
block is added the control, qubit by qubit.
Instances For
The transversal CNOT on two blocks: CNOT between the q-th qubits, for every q — the
permutation matrix of cnotPerm.
Equations
Instances For
The logical CNOT on the two encoded qubits.
Equations
Instances For
★★★ The transversal CNOT is the logical CNOT. Conjugating the pair encoder by the
gadget is the logical gate on the two encoded qubits — the Schrödinger-picture statement, with the
coset shift as the only input.
The two-block recovery #
The error family of the pair: one single-qubit Pauli in each block.
Equations
- CSD.Empirical.QM.QEC.Steane.pairFam g = QuantumInfo.blockKron fun (b : Fin 2) => QuantumInfo.pauliMat (CSD.Empirical.QM.QEC.Steane.errA (g b)) (CSD.Empirical.QM.QEC.Steane.errB (g b))
Instances For
★★ Knill–Laflamme in encoder form for the pair: it composes over the blocks, because it
holds in each (steaneEnc_pauli_pair).
★★ One recovery channel for the two blocks.
A fault at one location of the gadget #
A faulty transversal CNOT is corrected #
★★★ A faulty transversal CNOT is corrected. The gadget is CNOT between the q-th qubits
of the two blocks for every q — the logical CNOT, by cnotT_mul_pairEnc — and one of its seven
locations is faulty, the fault an arbitrary unitary on each of that location's two qubits. One
channel returns the ideal output: the logical CNOT applied to the encoded pair.