The Steane encoder, and the logical action of a one- or two-qubit operator #
Category: 3-Local (Empirical, QM twin). BACKLOG #86, steps (c) and the crux of (d): what a concatenation of the Steane code needs from level one.
steaneEnc is the encoder, the 128 × 2 matrix whose two columns are |0̄⟩ and |1̄⟩. It is an
isometry (steaneEnc_conjTranspose_mul, from the orthonormality of the logical states) whose columns
are code states (steaneProj_mul_steaneEnc), so KnillLaflamme.lean's encoder form applies: the
landed projector-form condition (steane_knillLaflamme) becomes
★ steaneEnc_pauli_pair, steaneEncᴴ Eᵢᴴ Eⱼ steaneEnc = δᵢⱼ • 1, with no rank statement relating
steaneEnc steaneEncᴴ to steaneProj.
The crux for the concatenation is that the logical action of an operator touching at most two qubits is a scalar — distance three, read through the encoder:
- ★★
steaneEnc_gateOf: an arbitrary2 × 2operator on one qubit acts on the encoded qubit as the scalar(G₀₀ + G₁₁)/2. This is #61's span argument (gateOf_eq_sum_pauliMat) read through the encoder: the identity's Pauli coefficient survives, and every weight-one Pauli is detected; - ★★
exists_steaneEnc_gateOf_mul_gateOf: two arbitrary operators on two qubits act as some scalar, because every product of two single-qubit Paulis is±Eᵢᴴ Eⱼfor two members of the error family (exists_steaneEnc_pauli_mul), and the family's Knill–Laflamme matrix is the identity; - ★★
exists_steaneEnc_blockKron: the same statement for the tensor over blocks, in the shape the induction of #86 consumes — all blocks scalar except at most two named ones.
Honest scope #
⚠️ Two qubits is the limit, and it is the code's: a product of three single-qubit Paulis is not
Eᵢᴴ Eⱼ for the weight-one family, and indeed the logical action of a weight-three operator on the
Steane code need not be a scalar (the logical X̄ has weight seven, logicalX_steaneZero).
⚠️ exists_steaneEnc_gateOf_mul_gateOf and exists_steaneEnc_blockKron give the scalar
existentially. The value is a product of the one-qubit scalars, but nothing downstream needs it: the
induction of #86 only needs that the logical action is a scalar.
Source #
A. Steane, Error correcting codes in quantum theory, PRL 77 (1996); E. Knill, R. Laflamme,
Phys. Rev. A 55 (1997) 900; M. Nielsen, I. Chuang, §10.6.1;
Mathlib/QuantumInfo/KnillLaflamme.lean (the encoder form), Mathlib/QuantumInfo/BlockKron.lean,
Empirical/QM/QEC/SteaneArbitrary.lean (#61, the span step); specs/BACKLOG.md #86;
specs/steane-plan.md; specs/future-work.md.
The encoder #
★ The encoder is an isometry: the logical states are orthonormal.
The columns of the encoder are code states.
The error family through the encoder #
★ Knill–Laflamme in encoder form for the single-qubit Paulis.
The logical action of a single error: the identity passes, every weight-one Pauli is detected.
A product of two single-qubit Paulis acts on the encoded qubit as a scalar: it is ±Eᵢᴴ Eⱼ,
and the family's Knill–Laflamme matrix is the identity.
The logical action of an arbitrary operator on one or two qubits #
★★ The logical action of an arbitrary operator on one qubit is a scalar — the trace
(G₀₀ + G₁₁)/2. The Paulis span the operators of a qubit (#61) and every weight-one Pauli is
detected, so only the identity's coefficient survives.
★★ Two arbitrary operators on two qubits act as a scalar too — distance three, in the form the concatenation needs.
★★ The logical action of a tensor over blocks with at most two arbitrary slots is a scalar. The two named blocks may coincide, so this covers no arbitrary slot and one as well; it is the shape the induction of #86 consumes, where the good blocks contribute scalars and at most two blocks — one per error of the Knill–Laflamme pair — do not.