Empirical/QM: the Steane code's syndrome extraction, as a circuit #
Category: 3-Local. QM-validity layer (matrix algebra, no CSD content).
BACKLOG #94, the instance; the generic gadget is
Mathlib/QuantumInfo/SyndromeExtraction.lean.
Steane.lean has the X-syndrome as a function on error patterns,
syndrome e = fun i => bdot (hammingRow i) e, and uses it to prove the distance-3 mechanism. This
file runs the generic extraction gadget at that check map, so the syndrome the corpus reasons with is
the one a CNOT ladder into a three-qubit ancilla block actually produces.
What is proved #
- ★
steane_syndrome_add_self— the only arithmetic the gadget needs:syndrome z + syndrome z = 0, characteristic two; steaneExtract— the extraction circuit for the SteaneX-checks, with ★steaneExtract_mem_unitaryGroup;- ★★
steaneExtract_tags_syndrome— the circuit sends the data wordzwith a fresh ancilla to(z, syndrome z): the ancilla block ends up holding the Hamming syndrome; - ★★★
steaneExtract_reads_syndrome— reading the ancilla is projecting the data onto the syndrome subspace: the circuit implements the projective measurement, as an operator identity; - ★★★
steaneExtract_code_state— a Steane code state is returned unchanged, ancilla included, and ★★steaneExtract_code_state_syndrome_zero: the all-zero outcome is then certain; - ★
syndrome_addand ★★steane_extract_detects_single— a single-qubit error changes what the ancilla reads, since its syndrome is nonzero (steane_syndrome_single_ne_zero), and ★★steane_extract_names_single— distinct single errors read differently, so the ancilla names the faulty qubit (steane_syndrome_single_injective). This is the circuit form of the distance-3 mechanismSteane.leanproves about the syndrome function.
Honest scope #
⚠️ No faults, and therefore no fault tolerance. Every statement is about the gadget running
correctly. A fault in the CNOT ladder, or in the ancilla, is BACKLOG #95 and #96; nothing here says
this gadget is fault-tolerant, only what it computes when it works.
⚠️ One unverified ancilla block. The ancilla is prepared in the all-zero state and read; there is no cat state, no verification, and so no bound on a single ancilla fault spreading into the data. That is #95's subject.
⚠️ X-checks only. The Steane code is CSS and its Z-checks are the same statement in the
conjugate basis; that half is not done here, and nothing combines the two bases.
⚠️ The syndrome is produced, not decoded. Nothing here maps a syndrome to a correction: the
recovery maps of SteaneRecovery.lean and SteaneArbitrary.lean are neither re-derived nor connected
to this circuit.
⚠️ The register is the error-pattern basis. The data index is Fin 7 → Fin 2, i.e. the
computational basis of seven qubits; this is the same labelling Steane.lean uses, and no claim is
made about the encoded logical state beyond its membership in the syndrome-0 subspace.
References #
Mathlib/QuantumInfo/SyndromeExtraction.lean (the generic gadget);
Empirical/QM/QEC/Steane.lean (syndrome, steane_syndrome_single_ne_zero,
steane_syndrome_single_injective); Empirical/QM/QEC/SyndromeRecovery.lean (the
projective-measurement form); specs/BACKLOG.md #94, #95, #96, #62; specs/future-work.md.
The Steane check map in characteristic two #
The extraction circuit #
The Steane X-syndrome extraction circuit: the CNOT ladder from the seven data qubits into
a three-qubit ancilla block, as the matrix of its basis relabelling.
Equations
Instances For
★ The circuit is unitary.
★★★ Reading the ancilla is projecting the data onto the syndrome subspace. The circuit implements the projective syndrome measurement the corpus reasons with, as an operator identity.
★★★ A Steane code state is returned unchanged, ancilla included.
★★ And the all-zero syndrome is certain on the code.
The distance-3 mechanism, read off the ancilla #
★★ Distinct single-qubit errors read differently, so the ancilla block names the faulty
qubit. The circuit form of steane_syndrome_single_injective.