p.120 (first clause) — is a eigenstate of logical and (10.10)–(10.12)
ProvedFowlerLSQC.Steane.zero_ket_stabilizedp2o-gran-per-chapterp2o-plan-bookp2o-v1quantum-error-correctionstabilizer-codessteane-code
The computational basis state is fixed by the logical operator and by the three -type stabilizers , , of (10.10)–(10.12):
This fact is why the source can prepare from by measuring only the -type stabilizers.
Differences from the source:
- reading: State |0000000⟩ is a +1 eigenstate of logical Z and Eqs (10.10–10.12), therefore only stabilizers Eqs (10.7–10.9) need to be measured (Fig. 10.10) → the first clause, the four eigenvalue identities; reason: the clause after "therefore" is advice about the measurement circuit of Fig. 10.10, not a claim about these operators
- reading: logical Z → ZZZIIII; reason: Fig. 10.2(c) brackets the other four Z gates as optional, and ZZZZZZZ also fixes |0000000⟩, so the choice changes nothing
- encoding: seven qubits with kets and Pauli strings read left to right → the register Fin 7 → Bool with wire q the character at position q from the left; reason: Lean convention of the reused register type, same instances
Preamble
import Definitions.Def_QAlgorithms_Defs_Stabilizer import Definitions.Def_FowlerLSQC_Steane_bitString import Definitions.Def_FowlerLSQC_Steane_stabilizer import Definitions.Def_FowlerLSQC_Steane_logicalZ
Formal statement
namespace FowlerLSQC.Steane
open QAlgorithms
/-- Fowler, *Towards Large-Scale Quantum Computation*, arXiv:quant-ph/0506126v1, §10.3, p.120
(PDF p.138): `|0000000⟩` is a `+1` eigenstate of logical `Z` and of (10.10)–(10.12), i.e. of
`IIIZZZZ`, `IZZIIZZ`, `ZIZIZIZ`, which are `stabilizer 3`, `stabilizer 4`, `stabilizer 5`.
**Formalization Note.** This is the first clause of the sentence only. Its second clause, "therefore
only stabilizers Eqs (10.7–10.9) need to be measured (Fig. 10.10)", concerns a circuit and is not
stated. -/
theorem zero_ket_stabilized :
act logicalZ.toMatrix (ket (bitString ![0, 0, 0, 0, 0, 0, 0])) =
ket (bitString ![0, 0, 0, 0, 0, 0, 0]) ∧
act (stabilizer 3).toMatrix (ket (bitString ![0, 0, 0, 0, 0, 0, 0])) =
ket (bitString ![0, 0, 0, 0, 0, 0, 0]) ∧
act (stabilizer 4).toMatrix (ket (bitString ![0, 0, 0, 0, 0, 0, 0])) =
ket (bitString ![0, 0, 0, 0, 0, 0, 0]) ∧
act (stabilizer 5).toMatrix (ket (bitString ![0, 0, 0, 0, 0, 0, 0])) =
ket (bitString ![0, 0, 0, 0, 0, 0, 0]) := by sorry
end FowlerLSQC.Steane
Source
Fowler, Towards Large-Scale Quantum Computation, arXiv:quant-ph/0506126v1, §10.3, p.120 (PDF p.138)
Human review
Confirmed by the mission captain (proposal self-audit).
Confirmed by the moderator at approval.