Surface Code · 关系Surface Code · Relations
QEC-Bank 条目导读 · Surface Code · 关系QEC-Bank entry guide · Surface code · Relations

两条有类型的边,
和一屋子亲戚
Two typed edges,
and a house full of relatives

「关系」这一侧面回答的问题是:表面码在 QEC-Bank 的地图上和谁相连、以什么方式相连。QEC-Bank 只记录了两条边——它是两条重复码的超图积(product_of → hgp),它和环面码共享同一块内部(same_bulk_phase_as → toric)。本教程先说清一条「有类型的关系」是什么、为什么只有两条,再把两条关系各算一遍:在最小的尺寸(L=3,L 是格子边长)上算出 13 个比特、两组 6 条检查、恰好 1 个逻辑比特;再把两条链闭合,看 1 如何变成 2。最后一章单独放文献里的亲戚:旋转版、XZZX、扭结缺陷、子系统、三维、双曲、BB 血统——各有 QEC-Bank 条目,但都不是本条目记录在案的关系。 The Relations facet answers one question: on the QEC-Bank map, what is the surface code connected to, and how? The QEC-Bank records exactly two edges: it is the hypergraph product of two repetition codes (product_of → hgp), and it shares its bulk with the toric code (same_bulk_phase_as → toric). This guide first pins down what a typed relation is and why there are only two, then works each one through: at the smallest size (L=3, L being the lattice side) we compute the 13 qubits, the two sets of 6 checks and the single logical qubit; then we close both chains and watch 1 become 2. A final, separate chapter holds the relatives found in the literature: rotated, XZZX, twist defects, subsystem, 3D, hyperbolic, the BB lineage. Each has its own QEC-Bank entry; none is a recorded relation of this one.

前置:Surface Code 直觉教程(剪开环面、两种边界、「恰存 1 个逻辑比特」的记账)。这里新增的是代数那一面:把同一件事写成矩阵的 Kronecker 积,让「边界 vs 把手」变成一个可以算出来的秩。 Prerequisite: the surface-code intuition guide (cutting the torus, two boundaries, the “exactly one logical qubit” ledger). New here is the algebraic side: the same story written as Kronecker products of matrices, so that “boundary versus handle” becomes a rank you can compute.
目录Contents
第 1 章Chapter 1

什么是「有类型的关系」What a typed relation is

「表面码和环面码有关系」谁都会说。QEC-Bank 要的是一句能被机器存档、能被人核对的话:关系的类型是什么、指向哪个条目、凭什么这么说。这一章先看这句话的格式,再解释为什么表面码只有两条。 Anyone can say “the surface code is related to the toric code”. The QEC-Bank wants a sentence a machine can archive and a person can check: what type of relation, pointing at which entry, on what authority. This chapter shows the format of that sentence, then explains why the surface code has only two.

1.1一条关系的四个字段The four fields of a relation

在 QEC-Bank 的源文件 codes/surface/card.yaml 里,一条关系是一个小小的记录,只有四个内容字段:type(关系的类型,只能从 QEC-Bank 事先定好的一张词表里选,这叫受控词表,例如 product_of、same_bulk_phase_as、special_case_of)、target(指向的另一个 QEC-Bank 条目的 id)、how(一句话说明「怎么个相关」)、refs(一组文献键,每个键都必须在文献注册表里登记过——参考文献导读专讲这件事)。记录外面还包着一层机器用的元数据:它作用于哪个实体(atlas-entity:surface#subjectQEC-Bank 给「可执行的那个对象」起的名字:未旋转平面表面码族 [[2L²−2L+1, 1, L]],即 [[n, k, d]] = [[物理比特数, 逻辑比特数, 码距]],L 为格子边长。eczoo 那一页更宽的「surface code 集合」(含旋转版、XZZX 等)是另一个实体,不是这些关系的主语。,即本条目真正被构造器实现的那个未旋转平面族——记号 [[n, k, d]] 中 n 是物理比特数、k 是逻辑比特数,d 是码距,L 是格子边长)、它在源文件中的位置(surface/card.yaml#/relations/0)、以及一段内容哈希,任何人改动一个字母都会让哈希对不上。

In the QEC-Bank source file codes/surface/card.yaml, a relation is a small record with just four content fields: type (chosen from a fixed list of words that the QEC-Bank defines in advance, a controlled vocabulary, e.g. product_of, same_bulk_phase_as, special_case_of), target (the id of another QEC-Bank entry), how (one sentence saying in what way), and refs (bibkeys, each of which must be registered in the reference registry; the references guide is about exactly that). Around the record sits a layer of machine metadata: which entity it applies to (atlas-entity:surface#subjectThe QEC-Bank name for “the executable object”: the unrotated planar family [[2L²−2L+1, 1, L]], i.e. [[n, k, d]] = [[physical qubits, logical qubits, distance]], L the lattice side. The broader eczoo “surface code collection” (rotated, XZZX, …) is a different entity and is not the subject of these relations., the unrotated planar family the constructor actually builds; in the notation [[n, k, d]], n is the number of physical qubits and k the number of logical qubits, d is the code distance, and L is the lattice side), where it lives in the source (surface/card.yaml#/relations/0), and a content hash that any one-letter edit would break.

关系relation = ( type , target , how , refs[ ] )
主语subject = atlas-entity:surface#subject · 位置locator = surface/card.yaml#/relations/i

1.2表面码的两条关系The surface code's two relations

typetargethow(原文)how (verbatim)refs
product_ofhgpHGP(rep_L, rep_L)——平面表面码是两条重复码的超图积。HGP(rep_L, rep_L) — the planar surface code is the hypergraph product of two repetition codes.tillich2009quantum
same_bulk_phase_astoric同一块方格「星 / 面」内部来自 HGP(rep_L, rep_L):开放的重复码因子给出平面 Surface 贴片,周期化的因子把它闭合成环面码。The same square-lattice star/plaquette bulk is obtained from HGP(rep_L, rep_L); open repetition factors give the planar Surface patch, while periodic factors close it into the toric code.kitaev2003fault, dennis2002topological, tillich2009quantum

三个文献键分别是 Kitaev「Fault-tolerant quantum computation by anyons」(kitaev2003fault,2003)、Dennis–Kitaev–Landahl–Preskill「Topological quantum memory」(dennis2002topological,2002)与 Tillich–Zémor「Quantum LDPC codes with positive rate and minimum distance proportional to the square root of the blocklength」(tillich2009quantum,2009)。前两篇是环面码与表面码内部的原始出处,第三篇定义了超图积。注意方向:边是从 surface 指向 hgp 的。hgp 条目自己的关系页解释了为什么不能反过来——超图积是一个操作,表面码是它的一个输出族;「表面码是 HGP 的乘积」成立,「HGP 是表面码的什么」则不成话。

The three bibkeys are Kitaev, “Fault-tolerant quantum computation by anyons” (kitaev2003fault, 2003), Dennis–Kitaev–Landahl–Preskill, “Topological quantum memory” (dennis2002topological, 2002) and Tillich–Zémor, “Quantum LDPC codes with positive rate and minimum distance proportional to the square root of the blocklength” (tillich2009quantum, 2009). The first two are the original sources for the toric and surface bulk; the third defines the hypergraph product. Mind the direction: the edge runs from surface to hgp. The hgp entry's own relations page explains why it cannot be reversed: the hypergraph product is an operation, the surface code is one of its output families; “the surface code is a product of HGP” parses, “HGP is a something of the surface code” does not.

1.3为什么只有两条Why only two

因为一条关系要同时满足三件事:主语是可执行的对象(未旋转平面族,而不是 eczoo 那页上更宽的「所有表面码」集合);宾语是一个已存在的 QEC-Bank 条目;陈述能被列出的文献直接支撑。「HGP 的输出」和「与环面码同一内部相」是关于这个构造器本身的两句话,两句都能在 Tillich–Zémor 和 Kitaev/DKLP 里逐字找到依据。旋转表面码、XZZX、扭结缺陷这些,是同一 eczoo 集合里的其他成员,各自有独立的条目和独立的构造器;它们和本条目的关系(「同一内部,不同裁法」「局部 Clifford 变换」「打洞 / 加缺陷」)都还没有被写成带 refs 的 typed 记录。第 4 章会逐个介绍它们,但请始终记住那一章的标题:亲戚,不是关系。

Because a relation must satisfy three things at once: its subject is the executable object (the unrotated planar family, not the wider “all surface codes” collection of the eczoo page); its target is an existing QEC-Bank entry; the statement is directly supported by the listed references. “An output of HGP” and “same bulk phase as the toric code” are two statements about this constructor itself, and both can be traced word for word to Tillich–Zémor and Kitaev/DKLP. Rotated, XZZX, twist-defect and the rest are other members of the same eczoo collection, each with its own entry and its own constructor; their relationships to this entry (“same bulk, different cut”, “a local Clifford transform”, “holes and defects”) have not yet been written down as typed records with refs. Chapter 4 introduces them one by one, but keep that chapter's title in mind: relatives, not relations.

关键想法Key idea

关系不是「有点像」的同义词。它是一条有主语、有类型、有出处、有哈希的断言。表面码只有两条,正因为 QEC-Bank 宁缺毋滥。

A relation is not a synonym for “sort of similar”. It is an assertion with a subject, a type, references and a hash. The surface code has only two precisely because the QEC-Bank would rather leave a gap than guess.

第 2 章Chapter 2

关系一:两条重复码的乘积,在 L=3 上算一遍Relation 1: a product of two repetition codes, worked at L=3

直觉教程用剪刀得到表面码;QEC-Bank 的构造器用矩阵得到同一个东西。这一章把 HGP(rep_3, rep_3) 的每一步写在纸上:一个 2×3 的小矩阵,两次 Kronecker 积,13 个比特,两组 6 条检查,恰好 1 个逻辑比特。 The intuition guide reached the surface code with scissors; the QEC-Bank constructor reaches the same object with matrices. This chapter writes every step of HGP(rep_3, rep_3) on paper: one small 2×3 matrix, two Kronecker products, 13 qubits, two sets of 6 checks, exactly one logical qubit.

2.1经典因子:开放的重复码The classical factor: an open repetition chain

长度 L 的重复码把一个比特抄 L 遍,检查是「相邻两位一样吗」。它的校验矩阵每一行是一条检查、每一列是一个比特,1 表示「这条检查看这个比特」。校验矩阵乘比特串(模 2)得到的就是全部检查的读数。记作 rep_L 或 H:(L−1) 行、L 列,每行两个相邻的 1。L=3 时它只有两行。三个数字决定一切:rank秩:矩阵里线性独立的行的个数(模 2 意义下)。这里等于「独立检查数」。(H) = 2(两行独立),ker核(kernel):所有被 H 送到 0 的向量——即「通过全部检查」的比特串。dim ker(H) = 经典码字个数的对数 = 经典码的 k。(H) 只有两个元素:零串「000」与全 1 串「111」,维数 1(全 1 串是它唯一的基向量);而 ker(Hᵀ)——把矩阵转置后再取核,即「哪些检查的组合恒等于零」——维数为 0,因为两行独立,没有一组检查的乘积会自动为 1。这个 0 是「开放的链」的代数签名,下一章闭合链时它会变成 1。

The length-L repetition code copies one bit L times; each check asks “are these two neighbours equal?”. Its parity-check matrixOne row per check, one column per bit, a 1 meaning “this check looks at this bit”. Multiplying the matrix by a bit string (mod 2) yields all check outcomes at once., written rep_L or H, has L−1 rows and L columns with two adjacent 1s per row. At L=3 it has just two rows. Three numbers decide everything: rankThe number of linearly independent rows (mod 2). Here: the number of independent checks.(H) = 2 (both rows independent), kerThe kernel: all vectors H sends to 0, i.e. the bit strings passing every check. dim ker(H) is the classical code's k.(H) has exactly two elements, the zero word “000” and the all-ones word “111”, dimension 1 (the all-ones word is its single basis vector); and ker(Hᵀ), the kernel of the transposed matrix, i.e. “which combinations of checks are identically zero”, has dimension 0, because with two independent rows no product of checks is automatically +1. That 0 is the algebraic signature of an open chain; it will become 1 when we close the chain in the next chapter.

H = rep_3 = [ 1 1 0 ; 0 1 1 ] · rank(H) = 2
k = dim ker(H) = 1 · kᵀ = dim ker(Hᵀ) = 0
L = 重复码长度(比特数,这里 3)L = repetition length (bits, here 3)
k = 经典码的逻辑比特数;kᵀ = 转置码的逻辑比特数k = the classical code's logical bits; kᵀ = the transpose code's logical bits
补课 · 核、基与维数:在 rep_3 上逐个核对Catch-up · Kernel, basis and dimension, checked on rep_3

「H 乘一个比特串」就是逐行做检查:看第 i 行里是 1 的那些位置,把串里对应的比特加起来,模 2(只看奇偶,1 + 1 = 0)。拿 111 试:第一行 (1,1,0) 给 1 + 1 + 0 = 2 ≡ 0,第二行 (0,1,1) 给 0 + 1 + 1 = 2 ≡ 0,两条检查都读 0,写成 H(111)ᵀ = 0(ᵀ 把横写的串竖起来,好和矩阵相乘)。换成 110:第一行 1 + 1 = 0,第二行 1 + 0 = 1,读数 (0,1),第二条检查报警。3 个比特一共 8 个串,逐个试完,读数为 (0,0) 的只有 000 和 111,所以 ker(H) = {000, 111}。

“H times a bit string” just runs the checks row by row: take the positions holding a 1 in row i and add the corresponding bits mod 2 (only the parity counts, 1 + 1 = 0). Try 111: row one (1,1,0) gives 1 + 1 + 0 = 2 ≡ 0, row two (0,1,1) gives 0 + 1 + 1 = 2 ≡ 0; both checks read 0, written H(111)ᵀ = 0 (the ᵀ stands the string upright so it can be multiplied by the matrix). Try 110 instead: row one gives 1 + 1 = 0, row two 1 + 0 = 1, so the readout is (0,1) and the second check fires. Three bits give 8 strings; trying them all, only 000 and 111 read (0,0), so ker(H) = {000, 111}.

基与维数。核有一个好性质:两个通过检查的串逐位相加(模 2),结果仍然通过检查,因为每条检查的读数也跟着相加,0 + 0 = 0。这种「加法封闭」的集合叫子空间。子空间的基是一份最短的清单:清单里的串任选若干个相加,恰好得到子空间里的每一个元素。清单的长度叫维数;每个基向量有「用或不用」两种选择,所以子空间里有 2维数 个元素。{000, 111} 的基是 {111}:一个都不用得 000,用上它得 111。清单长 1,维数 1,2¹ = 2 个元素,对得上。这个维数就是经典码能存的比特数:1 个比特,0 编成 000,1 编成 111。

Basis and dimension. The kernel has a useful property: add two strings that pass the checks, bit by bit mod 2, and the result still passes, because every check's readout adds too, 0 + 0 = 0. A set closed under this addition is a subspace. A basis of a subspace is a shortest list such that adding any selection of its members gives every element of the subspace, and the length of that list is the dimension; each basis vector is either used or not, so the subspace has 2dimension elements. For {000, 111} the basis is {111}: use nothing and you get 000, use it and you get 111. The list has length 1, so the dimension is 1 and there are 2¹ = 2 elements, as counted. This dimension is the number of bits the classical code stores: one bit, 0 encoded as 000 and 1 as 111.

转置核。Hᵀ 是把 H 的行与列对调得到的 3×2 矩阵。Hᵀu(u = (u₁, u₂),1 表示「选中」)的意思是:选出若干条检查,把它们的行加起来,u₁·(1,1,0) + u₂·(0,1,1) = (u₁, u₁+u₂, u₂)。要它等于 000,第一位逼出 u₁ = 0,第三位逼出 u₂ = 0,只有「一条都不选」满足。所以 ker(Hᵀ) = {00},维数 0:没有哪组检查加起来恒为零,也就是没有多余的检查。第 3 章把链闭合成环时会多出第三行 (1,0,1),三行相加是 000,维数变成 1。

The transpose kernel. Hᵀ is the 3×2 matrix obtained by swapping the rows and columns of H. Hᵀu, with u = (u₁, u₂) and 1 meaning “selected”, selects some checks and adds their rows: u₁·(1,1,0) + u₂·(0,1,1) = (u₁, u₁+u₂, u₂). For this to be 000 the first position forces u₁ = 0 and the third forces u₂ = 0, so only “select nothing” works. Hence ker(Hᵀ) = {00}, dimension 0: no set of checks adds up to zero, i.e. no check is redundant. When Chapter 3 closes the chain into a ring, a third row (1,0,1) appears, the three rows add to 000, and the dimension becomes 1.

2.2量子乘积:两次 Kronecker 积The quantum product: two Kronecker products

想先看图的读者:参数页 2.1 节把同一个乘积画成一张棋盘,可以一步一步拼出来。超图积的配方(qLDPC 教程 2.1 节有完整推导)把比特分成两块:比特×比特块有 L² = 9 个,检查×检查块有 (L−1)² = 4 个,共 13 个。两族检查各用一次 Kronecker 积 ⊗A ⊗ B:把 A 的每个元素 a 换成小矩阵 a·B,拼成一张大矩阵。(m×n) ⊗ (p×q) 得到 (mp)×(nq)。这里它的作用是「沿一个方向复制、沿另一个方向作用」。:

If you prefer the picture first: §2.1 of the parameters page draws the same product as a board you can assemble step by step. The hypergraph-product recipe (derived in full in the qLDPC guide, §2.1) splits the qubits into two blocks: bit×bit, L² = 9 of them, and check×check, (L−1)² = 4, for 13 in total. Each family of checks uses one Kronecker product ⊗A ⊗ B: replace every entry a of A by the small block a·B and assemble the big matrix. (m×n) ⊗ (p×q) gives (mp)×(nq). Here it means “copy along one axis, act along the other”.:

HX = [ H ⊗ I3 | I2 ⊗ Hᵀ ] · HZ = [ I3 ⊗ H | Hᵀ ⊗ I2 ]
各 6 行 × 13 列;Im = m×m 单位矩阵6 rows × 13 columns each; Im = the m×m identity
一般 L:L(L−1) 行 × [L² + (L−1)²] 列general L: L(L−1) rows × [L² + (L−1)²] columns
补课 · 单位矩阵与 Kronecker 积:把 H ⊗ I₃ 展开一遍Catch-up · The identity matrix and the Kronecker product: H ⊗ I₃ written out

单位矩阵 Im 是 m×m 的方阵,对角线上是 1,其余是 0,例如 I₂ = [ 1 0 ; 0 1 ]。它乘任何向量都原样返回;当作一份检查清单来读,第 i 行只看第 i 个比特,什么也不混。

The identity matrix Im is the m×m square matrix with 1s on the diagonal and 0s elsewhere, for example I₂ = [ 1 0 ; 0 1 ]. Multiplying any vector by it returns the vector unchanged; read as a list of checks, row i looks only at bit i and mixes nothing.

Kronecker 积 A ⊗ B:把 A 的每个元素 a 换成一整块 a·B。H 是 2×3、I₃ 是 3×3,所以 H ⊗ I₃ 是 (2·3)×(3·3) = 6×9。H 的第一行 (1,1,0) 变成三块 I₃、I₃、0,第二行 (0,1,1) 变成 0、I₃、I₃:

The Kronecker product A ⊗ B replaces every entry a of A by the whole block a·B. H is 2×3 and I₃ is 3×3, so H ⊗ I₃ is (2·3)×(3·3) = 6×9. The first row of H, (1,1,0), becomes the three blocks I₃, I₃, 0, and the second row, (0,1,1), becomes 0, I₃, I₃:

H ⊗ I₃ = [ 1·I₃ 1·I₃ 0·I₃ ; 0·I₃ 1·I₃ 1·I₃ ] =
100 100 000
010 010 000
001 001 000
000 100 100
000 010 010
000 001 001

读法:9 列分成 3 组,每组 3 列。第 a 组对应第一个因子的比特 a,组内第 b 列对应第二个因子的比特 b,所以第 3a+b 列就是比特对 (a, b)。前 3 行来自 H 的第一行:它在第 0、1 组各放一个 I₃,于是这 3 行分别看 (0, b) 与 (1, b) 两个比特,b = 0, 1, 2 各一行。这就是「沿第一个方向作用(H 做检查),沿第二个方向复制(I₃ 不混比特,只把同一条检查抄 3 份)」。这 6 行正是下面 HX 表的左边 9 列。I₂ ⊗ Hᵀ 同理:两份 3×2 的 Hᵀ 沿对角线摆放,得到 HX 表的右边 4 列。

How to read it: the 9 columns fall into 3 groups of 3. Group a belongs to bit a of the first factor and column b inside the group to bit b of the second factor, so column 3a+b is the bit pair (a, b). The first 3 rows come from the first row of H, which puts an I₃ in groups 0 and 1; each of these rows therefore looks at the two bits (0, b) and (1, b), one row for each b = 0, 1, 2. That is “act along the first axis (H does the checking), copy along the second (I₃ mixes nothing and just repeats the same check 3 times)”. These 6 rows are exactly the left 9 columns of the HX table below. I₂ ⊗ Hᵀ works the same way: two copies of the 3×2 matrix Hᵀ placed along the diagonal give the right 4 columns of HX.

每个编号从哪里来。乘积里的每个对象都是一对标签,一个来自第一个 rep_3(它的比特记作 a,检查记作 c),一个来自第二个(比特 b,检查 c′)。四种配对各有一套编号,见下表。数一数:3·3 + 2·2 = 13 个比特,2·3 = 6 条 X 检查,3·2 = 6 条 Z 检查。

Where every label comes from. Each object in the product is a pair of labels, one from the first rep_3 (its bits called a, its checks c) and one from the second (bits b, checks c′). The four kinds of pair are numbered as in the table below. Counting: 3·3 + 2·2 = 13 qubits, 2·3 = 6 X checks, 3·2 = 6 Z checks.

对象Object成对标签(第一因子,第二因子)Pair label (first factor, second factor)范围Ranges编号Number
比特×比特(比特)bit×bit (qubit)(a, b)a, b ∈ {0, 1, 2}q3a+b:q0…q8
检查×检查(比特)check×check (qubit)(c, c′)c, c′ ∈ {0, 1}q9+2c+c′:q9…q12
检查×比特(X 检查)check×bit (X check)(c, b)c ∈ {0, 1},b ∈ {0, 1, 2}X3c+b:X0…X5
比特×检查(Z 检查)bit×check (Z check)(a, c′)a ∈ {0, 1, 2},c′ ∈ {0, 1}Z2a+c′:Z0…Z5

一条检查怎样得到它的邻居。X 检查 (c, b) 的腿分两类。H ⊗ I₃ 给的一类:b 不动,在第一个因子里看检查 c 碰哪些比特。rep_3 的检查 c 碰比特 c 和 c+1,所以它碰 q3c+b 和 q3(c+1)+b。I₂ ⊗ Hᵀ 给的一类:c 不动,在第二个因子里看哪些检查碰比特 b。比特 b 被检查 b−1 和 b 碰到(只算存在的,也就是 0 或 1),所以它碰 q9+2c+c′,c′ ∈ {b−1, b}。例:X1 = (c, b) = (0, 1)。第一类是 q0+1 = q1 与 q3+1 = q4;比特 1 被检查 0 和 1 碰到,第二类是 q9+0+0 = q9 与 q9+0+1 = q10。四条腿 q1、q4、q9、q10,和下表 X1 那一行一致。再看 X0 = (0, 0):第一类是 q0、q3;比特 0 在链的端点,只被检查 0 碰到,第二类只有 q9。于是 X0 只有三条腿,边界检查就是这样来的。Z 检查 (a, c′) 把两个因子的角色对调:I₃ ⊗ H 给 q3a+c′ 与 q3a+c′+1,Hᵀ ⊗ I₂ 给 q9+2c+c′,c ∈ {a−1, a}。例:Z2 = (a, c′) = (1, 0) 碰 q3、q4 与 q9、q11。

How one check gets its neighbours. The legs of the X check (c, b) are of two kinds. The H ⊗ I₃ kind: keep b fixed and ask which bits check c touches in the first factor. Check c of rep_3 touches bits c and c+1, so the X check touches q3c+b and q3(c+1)+b. The I₂ ⊗ Hᵀ kind: keep c fixed and ask which checks touch bit b in the second factor. Bit b is touched by checks b−1 and b (only those that exist, i.e. 0 or 1), so the X check touches q9+2c+c′ for c′ ∈ {b−1, b}. Example: X1 = (c, b) = (0, 1). The first kind gives q0+1 = q1 and q3+1 = q4; bit 1 is touched by checks 0 and 1, so the second kind gives q9+0+0 = q9 and q9+0+1 = q10. Four legs, q1, q4, q9, q10, matching row X1 of the table below. Now X0 = (0, 0): the first kind gives q0 and q3; bit 0 is the end of the chain and is touched only by check 0, so the second kind gives only q9. X0 therefore has three legs, and that is where boundary checks come from. A Z check (a, c′) swaps the roles of the two factors: I₃ ⊗ H gives q3a+c′ and q3a+c′+1, and Hᵀ ⊗ I₂ gives q9+2c+c′ for c ∈ {a−1, a}. Example: Z2 = (a, c′) = (1, 0) touches q3, q4 and q9, q11.

L = 3 时写出来就是下面两张表。行是检查(X0…X5、Z0…Z5),列是 13 个比特:q0…q8 是比特×比特块,粗竖线右边的 q9…q12 是检查×检查块;第 i 行第 j 列的 1 表示「这条检查碰比特 qj」。编号按上面那张表的规则,这也是构造器自己的编号;本节末尾的格子图标出了它们各在哪里。

For L = 3 this gives the two tables below. Rows are checks (X0…X5, Z0…Z5), columns are the 13 qubits: q0…q8 form the bit×bit block and q9…q12, right of the thick bar, the check×check block; a 1 in row i, column j means “this check touches qubit qj”. The numbering follows the rules in the table above, which are the constructor's own; the grid at the end of this section shows where each qubit and check sits.

HXq0q1q2q3q4q5q6q7q8q9q10q11q12
X01001000001000
X10100100001100
X20010010000100
X30001001000010
X40000100100011
X50000010010001
HZq0q1q2q3q4q5q6q7q8q9q10q11q12
Z01100000001000
Z10110000000100
Z20001100001010
Z30000110000101
Z40000001100010
Z50000000110001

手算一对:X1 碰 q1、q4、q9、q10,Z0 碰 q0、q1、q9,两者共享 q1 和 q9 两个比特,偶数,所以对易。任取一行 X 和一行 Z 都能这样核对,共享数总是 0 或 2。

Check one pair by hand: X1 touches q1, q4, q9, q10 and Z0 touches q0, q1, q9; they share two qubits, q1 and q9, an even number, so they commute. Any X row and any Z row can be checked the same way, and the shared count is always 0 or 2.

对易是设计进去的,不是碰巧的:HXHZᵀ 的两块贡献相同,都是 H ⊗ Hᵀ,相加后每个元素是 0 或 2,模 2 全为 0(这正是qLDPC 教程 2.2 节「两项相同,相加为零」)。第二块比特不是装饰——它提供了抵消所需的第二份副本。数一数每行的 1:内部检查 4 个,边缘检查 3 个。这就是直觉教程第 2 章的四腿星、四腿面与三腿的边界检查,只是换成了矩阵语言。

Commutation is designed in, not lucky: the two blocks of HXHZᵀ contribute the same term, H ⊗ Hᵀ, so every entry of the sum is 0 or 2 and vanishes mod 2 (the qLDPC guide, §2.2: “two equal terms add to zero”). The second qubit block is not decoration; it supplies the second copy needed for the cancellation. Count the 1s per row: four for interior checks, three at the rim. These are the four-leg stars and faces and three-leg boundary checks of the intuition guide's Chapter 2, in matrix dress.

HX HZᵀ = H ⊗ Hᵀ + H ⊗ Hᵀ = 0
模 2;整数意义下每个元素是 0 或 2mod 2; over the integers every entry is 0 or 2

2.3k = 1,两条路算出同一个数k = 1, by two routes

秩的路。两张矩阵各 6 行,而且 6 行全部独立,在上面的 HX 表里就能看出来。假设有几行 X 加起来(模 2)等于 0。q0 这一列只有 X0 有 1,所以 X0 不在其中;q1 只有 X1、q2 只有 X2,所以它们也不在;剩下的 X3、X4、X5 在 q3、q4、q5 列上各自是唯一的 1(X0、X1、X2 已经排除),于是也不在。一行都不剩,所以 rank(HX) = 6。HZ 同理(看 q0、q2、q3、q5、q6、q8 列)。一般 L 的同一论证见参数页 2.2 节。于是逻辑比特数 k = n − 独立检查数 = 13 − 6 − 6 = 1(n 为物理比特数,Toric Code 教程 4.4 节的记账法)。Künneth 的路。(名字来自拓扑学里算乘积空间「洞数」的 Künneth 公式,这里是它的模 2 版本。)超图积的维数公式 kQ = k₁k₂ + k₁ᵀk₂ᵀ(qLDPC 教程 2.3 节):两个因子都是 k = 1、kᵀ = 0,所以 1·1 + 0·0 = 1。这和直觉教程第 2 章的 d² + (d−1)² − 2d(d−1) = 1 是同一个 1:那里靠「悬边只被一颗星碰到,恒等式失效」,这里靠「开放链的转置核为零」。

The rank route. Each matrix has 6 rows, and all 6 are independent, which the HX table above shows directly. Suppose some X rows add up (mod 2) to 0. Column q0 has a 1 only in X0, so X0 is not among them; q1 has one only in X1 and q2 only in X2, so those are out too; with X0, X1, X2 gone, X3, X4, X5 each hold the only remaining 1 in columns q3, q4, q5, so they are out as well. No row is left, so rank(HX) = 6. HZ works the same way (look at columns q0, q2, q3, q5, q6, q8). The same argument for general L is in §2.2 of the parameters page. So the logical count k = n − independent checks = 13 − 6 − 6 = 1, with n the physical qubit count (the ledger of the toric-code guide, §4.4). The Künneth route. (The name comes from the Künneth formula of topology, which counts the “holes” of a product space; this is its mod-2 version.) The HGP dimension formula kQ = k₁k₂ + k₁ᵀk₂ᵀ (qLDPC guide, §2.3): both factors have k = 1 and kᵀ = 0, hence 1·1 + 0·0 = 1. It is the same 1 as the intuition guide's Chapter 2 ledger d² + (d−1)² − 2d(d−1) = 1: there the reason was “a dangling edge is touched by one star only, so the identity dies”; here it is “an open chain has zero transpose kernel”.

k = n − rank(HX) − rank(HZ) = 13 − 6 − 6 = 1
kQ = k₁k₂ + k₁ᵀk₂ᵀ = 1·1 + 0·0 = 1
n = 物理比特数(13);k = kQ = 量子码的逻辑比特数n = physical qubits (13); k = kQ = the quantum code's logical qubits
k₁, k₂ = 两个因子的经典逻辑比特数;k₁ᵀ, k₂ᵀ = 两个转置码的k₁, k₂ = the factors' classical logical bits; k₁ᵀ, k₂ᵀ = those of the transpose codes

最后把 13 个比特放回平面。构造器的坐标字典(标签同上表):比特×比特 (a, b) 放在 (x, y) = (2b, 2a),检查×检查 (c, c′) 放在 (2c′+1, 2c+1),X 检查 (c, b) 放在 (2b, 2c+1),Z 检查 (a, c′) 放在 (2c′+1, 2a)。于是每条检查里的每个 1 都恰好连到曼哈顿距离 1 的邻居——局域性是算出来的,不是画出来的。L=3 的交错格如下(q 是比特,X、Z 是检查)。在下面的沙盘里点几个比特,看三腿检查如何吞掉贴边的链端:

Finally, put the 13 qubits back on the plane. The constructor's coordinate dictionary (labels as in the table above): bit×bit (a, b) at (x, y) = (2b, 2a), check×check (c, c′) at (2c′+1, 2c+1), X check (c, b) at (2b, 2c+1), Z check (a, c′) at (2c′+1, 2a). Every 1 in every check then joins sites at Manhattan distance exactly one; locality is computed, not drawn. The L=3 interleaved lattice is below (q are qubits, X and Z are checks). Then click a few qubits in the sandbox and watch three-leg checks swallow chain ends at the rim:

y=4q6Z4q7Z5q8
y=3X3q11X4q12X5
y=2q3Z2q4Z3q5
y=1X0q9X1q10X2
y=0q0Z0q1Z1q2
x=0x=1x=2x=3x=4

格子图:灰底 q = 比特,橙底 X = X 检查,蓝底 Z = Z 检查;每条检查碰它上下左右紧挨着的比特。y = 0 与 y = 4 两行的 Z 检查只有三条腿(这里的毛边界),x = 0 与 x = 4 两列的 X 检查只有三条腿(光边界)。Grid: grey q = qubit, orange X = X check, blue Z = Z check; each check touches the qubits directly above, below, left and right of it. The Z checks in rows y = 0 and y = 4 have only three legs (the rough boundary here), the X checks in columns x = 0 and x = 4 likewise (the smooth boundary).

方向约定Orientation convention

QEC-Bank 构造器的几何里,三腿 Z 检查(毛边界)在上下,三腿 X 检查(光边界)在左右;直觉教程第 2 章的图恰好转了 90°(毛边在左右)。两者是同一个码,只是纸张的放法不同。

In the QEC-Bank constructor's geometry the three-leg Z checks (rough boundary) sit on top and bottom and the three-leg X checks (smooth) on left and right; the intuition guide's Chapter 2 drawing is rotated 90° (rough on the sides). Same code, paper turned.

谁算了什么Who computed what

机器重算的:矩阵公式、整数意义下的 {0,2} 抵消、最近邻几何、L=3,4,5 的秩与 n、k(codes/surface/pedagogy/reproduce.py),以及 L=3、L=4 的码距 d 穷举;L=5 的码距是 bounded(定理下界 + 一个随机种子找到的重量 5 见证)。文献支撑的:超图积的定义与维数公式本身(tillich2009quantum)。QEC-Bank 的 hgp 条目也自带一个 rep3×rep3 实例,n=13、k=1、d=3 全部 verified——和本条目的 L3 实例是同一组数。

Machine-recomputed: the matrix formulas, the integer {0,2} cancellation, nearest-neighbour geometry, ranks and n, k for L=3,4,5 (codes/surface/pedagogy/reproduce.py), plus exhaustive distance d for L=3 and L=4; the L=5 distance is bounded (a theorem lower bound plus a seeded weight-5 witness). Literature-backed: the definition and dimension formula of the hypergraph product itself (tillich2009quantum). The QEC-Bank hgp entry also ships a rep3×rep3 instance with n=13, k=1, d=3 all verified, the same numbers as this entry's L3 instance.

第 3 章Chapter 3

关系二:把两条链都闭合,1 变成 2Relation 2: close both chains, and 1 becomes 2

「相」是物理学家的词,指物质的一种状态,像冰和水是两种相;把所有检查写成能量项之后,远离边界的地方长得一模一样的两个码,被认为属于同一种相。「同一内部相」听起来像口头语,其实在 HGP 语言里是一句可以算的话:把两条开放的重复码链各自首尾相接,内部的星与面一个都不变,唯一变化的是每个因子多了一条不独立的行。这一行让转置核从 0 变 1,于是逻辑比特数 k 从 1 变 2。 “Phase” is a physicist's word for a state of matter, as ice and water are two phases; once every check is written as an energy term, two codes that look identical away from their boundaries count as the same phase. “Same bulk phase” sounds like shorthand, but in HGP language it is a computable sentence: join each open repetition chain head to tail; not one interior star or face changes, and the only new thing is one dependent row in each factor. That row lifts the transpose kernel from 0 to 1, and the logical count k from 1 to 2.

3.1多一行,多一个逻辑比特One more row, one more logical qubit

把 rep_3 的第三个比特接回第一个,校验矩阵多出第三行「1 0 1」。三行相加是零(每个比特被恰好两条检查看到):rank 仍是 2,ker(H) 仍只有「000」与「111」两个元素,但 ker(Hᵀ) 现在含有「全体检查相乘 = I」这一个关系,维数 1。这正是直觉教程 Toric Code 部分的「记账」里那两条「白送的恒等式」的一维版本。把两个闭合因子送进同一台超图积机器:

Join the third bit of rep_3 back to the first and the parity-check matrix gains a third row, “1 0 1”. The three rows sum to zero (every bit is seen by exactly two checks): the rank stays 2, ker(H) is still just the two words “000” and “111”, but ker(Hᵀ) now contains the relation “all checks multiplied = I”, dimension 1. This is the one-dimensional version of the two “free identities” in the toric-code guide's ledger. Feed the two closed factors into the same hypergraph-product machine:

开放open: kQ = 1·1 + 0·0 = 1  闭合closed: kQ = 1·1 + 1·1 = 2
n = L² + L² = 2L² = 18
kQ = 量子码的逻辑比特数;n = 物理比特数kQ = logical qubits of the quantum code; n = physical qubits
L = 每条因子链的长度(这里 3)L = length of each factor chain (here 3)

比特数也对得上:闭合后两个块都是 L×L,n = 2L² = 18;QEC-Bank 的 toric 条目给出 L3 实例 n=18、k=2、d=3(物理比特、逻辑比特、码距),全部 verified。同一块内部——四腿的星、四腿的面、共享 0 或 2 条边的对易规则——一个字母都没改;改的只是边界(三腿检查)换成了周期连接(绕回另一侧的连线)。这就是 same_bulk_phase_as 的全部含义。反过来读同一个动画:直觉教程第 1 章剪开环面的三步,在这里是「把两条闭合因子各去掉一条不独立的行」。

The qubit count matches too: after closing, both blocks are L×L, so n = 2L² = 18; the QEC-Bank toric entry lists the L3 instance as n=18, k=2, d=3 (physical qubits, logical qubits, distance), all verified. The bulk, four-leg stars, four-leg faces, the 0-or-2 shared-edge commutation rule, is untouched; only the boundaries (three-leg checks) have been replaced by periodic connections (wires that wrap around to the other side). That is the whole content of same_bulk_phase_as. Read the same animation backwards: the three steps of cutting the torus in the intuition guide's Chapter 1 are, here, “delete one dependent row from each closed factor”.

3.2同一块内部,两种逻辑算符Same bulk, two kinds of logical operator

内部相同,逻辑比特的藏身处却不同。环面上是非可缩闭圈(首尾相接,但无论在曲面上怎样滑动都缩不成一个点的圈),两个周期方向各一对,所以 k=2;平面上是边界到边界的横跨串,只剩一对,所以 k=1。QEC-Bank 的 toric 关系页对此有一句克制的话:「内部等价不是码空间相等」(bulk equivalence is not code-space identity)。它还提醒,环面码自己的 product_of → hgp 用的是周期化的方形因子 HGP(C_L, C_Lᵀ),「不是平面 Surface 配方用的开放 rep_L 因子」——同一台机器,不同的原料。在环面沙盘里画一条绕一整圈的链,再回到上一章的平面沙盘画一条横跨串,体会这两种「零警报却改写信息」的区别:

Same bulk, different hiding places for the logical qubit. On the torus it is the noncontractible closed loop (it closes up, but no sliding on the surface shrinks it to a point), one pair per periodic direction, hence k=2; on the plane it is the boundary-to-boundary spanning string, one pair only, hence k=1. The QEC-Bank toric relations page puts it carefully: “bulk equivalence is not code-space identity”. It also notes that the toric code's own product_of → hgp uses periodic square factors HGP(C_L, C_Lᵀ), “not the open rep_L factors used by the planar Surface construction recipe”: same machine, different ingredients. Draw a loop all the way round in the toric sandbox, then go back to the planar sandbox above and draw a spanning string, to feel the difference between the two ways of “no alarm, yet the data changed”:

量(L = 格子边长)Quantity (L = lattice side)表面码 L(开放因子)Surface L (open factors)环面码 L(闭合因子)Toric L (closed factors)
n (物理比特数physical qubits)L² + (L−1)² = 2L²−2L+1 (13, 25, 41)2L² (8, 18)
每族检查数checks per familyL(L−1),全部独立all independentL²,独立 L²−1L²−1 independent
kQ (逻辑比特数logical qubits)1·1 + 0·0 = 11·1 + 1·1 = 2
d (码距distance)L (L3, L4 verified; L5 bounded)L (L2, L3 verified)
逻辑算符logicals毛→毛 的 Z 串,光→光 的 X 串rough→rough Z string, smooth→smooth X string两个方向的缠绕圈及其对偶winding loops in both directions and their duals
QEC-Bank 条目QEC-Bank entrysurfacetoric
检查站Checkpoint第 3 章Chapter 3
只闭合一条因子链(另一条保持开放),得到的是一个圆筒。按 kQ = k₁k₂ + k₁ᵀk₂ᵀ(kQ = 量子码逻辑比特数,ki、kiᵀ = 第 i 个因子及其转置码的逻辑比特数),它存几个逻辑比特?Close only one factor chain (leave the other open) and you get a cylinder. By kQ = k₁k₂ + k₁ᵀk₂ᵀ (kQ = logical qubits of the quantum code, ki, kiᵀ = logical bits of factor i and of its transpose), how many logical qubits does it store?

对。第二项 k₁ᵀk₂ᵀ 是一个乘积,只要有一个因子是开放链它就是 0。圆筒和平面贴片一样存 1 个逻辑比特,两个方向都周期(都闭合)才能给出第二个。

Right. The second term k₁ᵀk₂ᵀ is a product; a single open factor zeroes it. A cylinder stores one logical qubit, like the planar patch; it takes both periodic directions to earn the second.

把两个因子的 (k, kᵀ) 分别写出来:开放 (1,0),闭合 (1,1),再代入公式。

Write (k, kᵀ) for each factor: open (1,0), closed (1,1), then substitute.

第 4 章Chapter 4

文献中的亲戚,尚未成为 QEC-Bank 关系Relatives in the literature, not (yet) QEC-Bank relations

下面每一段都在讲一个「表面码的变体」。它们的共同点是:文献里明明白白,QEC-Bank 里各有一个条目,但没有一条是本条目 card.yaml 里的 typed 关系。资料来源是 QEC-Bank 的文献侦察报告 docs/lit/surface/surface-variants.md 和各条目自己的首页;其中带 mono 的键若已在本条目的引用表中注册,会特别说明。 Every paragraph below is about a “surface-code variant”. What they share: well documented in the literature, each with its own QEC-Bank entry, and none a typed relation in this entry's card.yaml. Sources are the QEC-Bank literature scout report docs/lit/surface/surface-variants.md and each entry's own front page; when a mono key is also registered in this entry's reference list, we say so.

范围提醒Scope reminder

本条目的参数、证书和两条关系都只描述未旋转平面族 [[2L²−2L+1, 1, L]]([[n, k, d]]:n 物理比特、k 逻辑比特、码距 d;L 为格子边长)。本章的所有对象都在这个范围之外;它们的数字(阈值、比特数)来自各自的文献,不是本条目机器重算的结果。多数亲戚条目目前处在 QEC-Bank 完成度的第一级 T1(形式骨架):只验证了一个有限见证的检查矩阵,译码、操作、关系、实现侧面「尚未调研」,不代表否定。

This entry's parameters, certificates and two relations describe only the unrotated planar family [[2L²−2L+1, 1, L]] ([[n, k, d]]: n physical qubits, k logical qubits, distance d; L the lattice side). Everything in this chapter lies outside that scope; its numbers (thresholds, qubit counts) come from the respective papers, not from this entry's machine recomputation. Most relative entries are currently at the QEC-Bank's first completion tier, T1 (formal skeleton): one finite witness's check matrix is verified, while the decoder, operation, relation and realization facets are “not yet surveyed”, which is not a negative result.

4.1同一内部,另一种裁法:旋转表面码Same bulk, another cut: the rotated surface code

把同一块方格内部斜转 45° 再裁边,数据比特落在 d×d 的阵列上(d = 码距),得到 [[d², 1, d]],即 n = d² 个物理比特存 k = 1 个逻辑比特;连帮手比特一起数,未旋转版要 4d²−4d+1 个,旋转版只要 2d²−1 个。QEC-Bank 的直觉文(intuition.md)只说一句:「省的是边界几何,不是新的相。」文献上,Bombín–Martín-Delgado「Optimal Resources for Topological Two-Dimensional Stabilizer Codes」(bombin2007optimal,2007,已注册)最早证明平面版图可达 n = d²;Horsman–Fowler–Devitt–Van Meter「Surface code quantum computing by lattice surgery」(horsman2012surface,2012,已注册)第一次叫它「旋转格」。侦察报告提醒:Tomita–Svore 2014 的 17 比特版图只是推广,不是起源;Fowler 等 2012 的综述没有讨论旋转几何。QEC-Bank 没有独立的旋转表面码条目,因为它与本条目同属一块内部;直觉教程尾声把它列为「路一」。

Tilt the same square bulk by 45° and trim: the data qubits land on a d×d array (d = distance), giving [[d², 1, d]], i.e. n = d² physical qubits for k = 1 logical qubit; counting helper qubits, the unrotated patch needs 4d²−4d+1 and the rotated one 2d²−1. The QEC-Bank intuition essay (intuition.md) says only: “the saving is boundary geometry, not a new phase.” In the literature, Bombín and Martín-Delgado, “Optimal Resources for Topological Two-Dimensional Stabilizer Codes” (bombin2007optimal, 2007, registered) first proved a planar layout can reach n = d²; Horsman, Fowler, Devitt and Van Meter, “Surface code quantum computing by lattice surgery” (horsman2012surface, 2012, registered) first named the “rotated lattice”. The scout report cautions that Tomita and Svore's 2014 17-qubit layout popularized it but did not originate it, and that the Fowler et al. 2012 review does not discuss rotated geometry. The QEC-Bank has no separate rotated-surface entry because it shares this entry's bulk; the intuition guide's epilogue lists it as “road one”.

4.2换一副眼镜:XZZX 与 Clifford 形变A change of lens: XZZX and Clifford deformations

在交错的数据比特上各做一次 Hadamard,CSS 的「全 X 星、全 Z 面」变成每条检查都是 XZZX。把这些 Hadamard 的乘积记作 U、原码空间记作 𝒞,新码的码空间是 U𝒞,一般是另一个物理子空间,并没有「不变」;两个码是局部幺正等价的:一层单比特门就把一个变成另一个,所以 n、k、d 都相同。这件事有两种读法,别混在一起。变换码:噪声不动,真的去测 XZZX 检查;同一种物理噪声打在两个不同的码上,表现可以不同。变换噪声:码不动,把 U 挪到噪声上;XZZX 码上的纯 Z 噪声,等价于 CSS 码上「做过 Hadamard 的比特出 X 错误、其余比特出 Z 错误」的噪声。两种读法是同一个问题的两种记账,给出同一个阈值;变的是同一种物理噪声相对于检查的样子。公平的比较是拿同一个纯 Z 噪声去打两个码:在 CSS 表面码上,每个 Z 错误只被 X 检查看见,最优译码的码容量阈值约 11%;在 XZZX 上,做过 Hadamard 的那些比特上的 Z 错误在检查眼里成了 X 错误(Hadamard 把 Z 换成 X),于是缺陷沿对角线服从独立的奇偶守恒,译码拆成一串重复码问题,同样的最优译码阈值趋近 50%——Bonilla Ataides 等「The XZZX Surface Code」(bonilla2021xzzx,2021,已注册)。两个数字用的是同一个噪声模型、同一类译码器,差别全部来自局部基变换改变了噪声与检查的相对取向。译码器教程账本里常见的 10.9%(译码器教程 6.1 节)与这里的「约 11%」是同一个数,只是写得更精确:那一行的噪声是每个比特独立地以概率 p 出 X 错误、又独立地以概率 p 出 Z 错误(两者同时出现就是 Y),10.9% 是这个每个分量的 p;若按「出任何非恒等错误」的概率来算,同一个阈值写作 1 − (1 − p)² = 2p − p² ≈ 20.6%。CSS 码的 X 检查只看 Z 错误、Z 检查只看 X 错误,最优译码于是拆成互不相干的两半,每一半恰好就是这里的纯 Z 情形,而纯 Z 情形里的 p 就是 Z 错误的概率,所以 10.9% 与「约 11%」按同一个约定可以直接对照。QEC-Bank 条目:xzzx(T1,实现了原文图 9 的 d=3 开放贴片及其到 CSS 贴片的局部 Hadamard 映射)、xzzx_7_1_3、twisted_xzzx;更一般的局部 Clifford 形变见 clifford_deformed_surface 与 xysurface(两者都是 L=3 表面码见证的局部 S 像)。

Apply a Hadamard to alternating data qubits and the CSS “all-X star, all-Z face” checks become XZZX on every face. Write U for the product of these Hadamards and 𝒞 for the original code space: the new code space is U𝒞, in general a different physical subspace, so it is not “unchanged”; the two codes are locally unitarily equivalent: one layer of single-qubit gates turns one into the other, so n, k and d agree. There are two ways to read this; keep them apart. Transform the code: leave the noise alone and actually measure the XZZX checks; the same physical noise then hits two different codes and can fare differently. Transform the noise: leave the code alone and move U onto the noise; pure Z noise on the XZZX code is equivalent to noise on the CSS code that puts X errors on the Hadamard-ed qubits and Z errors on the rest. The two readings are two bookkeepings of one problem and give the same threshold; what changes is how one and the same physical noise looks relative to the checks. The fair comparison puts the same pure-Z noise on both codes: on the CSS surface code every Z error is seen only by the X-checks and the optimal-decoding code-capacity threshold is about 11%; on XZZX, a Z error on a Hadamard-ed qubit looks like an X error to the checks (a Hadamard turns Z into X), so defects obey independent parity conservation along diagonals, decoding splits into repetition-code problems, and the same optimal-decoding threshold approaches 50%: Bonilla Ataides et al., “The XZZX Surface Code” (bonilla2021xzzx, 2021, registered). Both numbers use the same noise model and the same class of decoder; the whole difference comes from the local basis change re-orienting the noise relative to the checks. The familiar 10.9% of the decoders guide's ledger (decoders guide, §6.1) is the same number as the “about 11%” here, only stated more precisely: that row assumes each qubit independently suffers an X error with probability p and, independently, a Z error with probability p (both together make a Y), and 10.9% is this per-component p; measured instead as the probability of any non-identity error, the same threshold reads 1 − (1 − p)² = 2p − p² ≈ 20.6%. Since a CSS code's X checks see only Z errors and its Z checks only X errors, optimal decoding splits into two unrelated halves, each exactly the pure-Z case here, where p is simply the probability of a Z error; under this common convention 10.9% and “about 11%” compare directly. QEC-Bank entries: xzzx (T1; implements the d=3 open patch of the paper's Figure 9 with its local Hadamard map to a CSS patch), xzzx_7_1_3, twisted_xzzx; for general local Clifford deformations see clifford_deformed_surface and xysurface (both local-S images of the L=3 surface witness).

4.3在格子上动刀:扭结缺陷与子系统版Cutting into the lattice: twist defects and the subsystem version

扭结缺陷。表面码里有两种可移动的「警报对」:星报警(记作 e)和面报警(记作 m)。可以在格子里画一条线,让穿过它的 e 变成 m、m 变成 e(这条线叫 e↔m 对偶墙,线上的检查混用 X 和 Z)。让这条墙在格子内部终止,终点就是一个扭结(twist):Bombín「Topological Order with a Twist: Ising Anyons from an Abelian Model」(bombin2010twist,2010,已注册)首次构造。Yoder–Kim 2017 的「三角码」用扭结编码,每个逻辑比特比打洞 / 边界编码少用约 25% 的物理比特(侦察报告键 yoder2017twist,未注册到本条目)。侦察报告还指出一个命名滑坡:eczoo 的「genon surface code」页面就是这同一构造,但「genon」一词并不出现在该文摘要。QEC-Bank 条目:twist_defect_surface(7 比特见证,缺陷处一条混合 Pauli 检查)、triangle_surface(r=s=t=2 的对称贴片)、twist_defect_7_1_3。本条目「逻辑操作」侧面里 brown2017poking 的「扭结 / 角落形变」单比特 Clifford 是 claimed——见格点手术教程 1.2 节对几条路线的分类。

Twist defects. The surface code has two kinds of movable alarm pairs, star alarms (called e) and plaquette alarms (called m). One can draw a line in the lattice that turns an e crossing it into an m and vice versa (an e↔m duality wall; the checks on the line mix X and Z). Let the wall end inside the lattice and its endpoint is a twist: first built in Bombín, “Topological Order with a Twist: Ising Anyons from an Abelian Model” (bombin2010twist, 2010, registered). Yoder and Kim's 2017 “triangle codes” encode with twists and use about 25% fewer physical qubits per logical qubit than hole or boundary encodings (scout-report key yoder2017twist, not registered to this entry). The report also flags a naming slip: eczoo's “genon surface code” page is this same construction, yet the word “genon” does not appear in the paper's abstract. QEC-Bank entries: twist_defect_surface (a 7-qubit witness with a mixed-Pauli check at the dislocation), triangle_surface (the symmetric r=s=t=2 patch), twist_defect_7_1_3. In this entry's Logical operations facet the twist/corner single-qubit Clifford of brown2017poking is claimed; see the lattice-surgery guide, §1.2 for how the routes are classified.

子系统版。「子系统码」把一部分检查降级为规范检查gauge check:不要求取固定值、只用来提取信息的检查;若干规范检查的乘积才是真正的稳定子。,只让它们的乘积当稳定子。有两种不同的构造,别混在一起。两体版:Bombín 2010「Topological Subsystem Codes」(侦察报告键 bombin2010topologicalsubsystem,未注册)的规范群由两体 Pauli 生成,硬件只需测两体奇偶,代价是更多测量轮次与比特。三体版:QEC-Bank 条目 subsystem_surface 登记的是 Bravyi–Duclos-Cianci–Poulin–Suchara 2012「Subsystem surface codes with three-qubit check operators」(bravyi2012subsystemsurface,已注册于该条目)——每条规范检查是一个三角形上的三体 X 检查或 Z 检查(三个 X 相乘,或三个 Z 相乘),稳定子是三角形的乘积;条目的见证是精确的 L=2 周期三角规范实例(T1,n=12、k=2 已验证,码距未记录)。

The subsystem version. A “subsystem code” demotes some checks to gauge checksChecks that need not take a fixed value and serve only to extract information; only products of several gauge checks are true stabilizers. and lets only their products act as stabilizers. Two distinct constructions exist; keep them apart. The two-body version: in Bombín 2010, “Topological Subsystem Codes” (scout-report key bombin2010topologicalsubsystem, not registered), the gauge group is generated by two-body Paulis, so hardware only ever measures two-body parities, at the price of more measurement rounds and qubits. The three-body version: the QEC-Bank entry subsystem_surface records Bravyi, Duclos-Cianci, Poulin and Suchara 2012, “Subsystem surface codes with three-qubit check operators” (bravyi2012subsystemsurface, registered to that entry): every gauge check is a three-body X check or Z check on a triangle (three X's multiplied, or three Z's), and the stabilizers are products of triangles; the entry's witness is the exact L=2 periodic triangle-gauge instance (T1, n=12 and k=2 verified, distance not recorded).

4.4换一张纸:三维与双曲A different sheet of paper: 3D and hyperbolic

三维。在立方格上放比特,就有了 3D 表面码。它绕开了本条目最硬的一条天花板:Bravyi–König 定理(bravyi2013classification,已注册;格点手术教程 1.3 节)说:在二维拓扑稳定子码族上(检查几何局域、码距足够大),凡是用常深度、几何局域的幺正电路(层数不随码增大,每个门只作用在相距不超过某个常数的比特上)实现的逻辑门,都只能是 Clifford 群里的门;而 Vasmer–Browne 2019 证明 3D 表面码有横向的 CZ 与 CCZ(侦察报告键 vasmer2019transversal);Kubica–Vasmer 2022 又给出三维子系统环面码的单发纠错:每轮只测一次就能纠错,测量出错也不必靠重复多轮来识别(kubica2022singleshot)。代价是整整多出一个空间维度的物理比特。QEC-Bank 条目:higher_dimensional_surface(3D L=2 周期见证)、cubic_surface、4d_surface、higher_dimensional_toric。

Three dimensions. Put qubits on a cubic lattice and you have the 3D surface code. It sidesteps this entry's hardest ceiling: the Bravyi–König theorem (bravyi2013classification, registered; lattice-surgery guide, §1.3) says that on 2D topological stabilizer-code families (geometrically local checks, large enough distance), every logical gate implemented by a constant-depth, geometrically local unitary circuit (a number of layers that does not grow with the code, each gate acting on qubits within some constant range) lies in the Clifford group; whereas Vasmer and Browne 2019 show the 3D surface code has transversal CZ and CCZ (scout-report key vasmer2019transversal); Kubica and Vasmer 2022 add single-shot correction for the 3D subsystem toric code: one round of measurement suffices to correct, and faulty measurements need not be caught by repeating rounds (kubica2022singleshot). The price is a whole extra spatial dimension of physical qubits. QEC-Bank entries: higher_dimensional_surface (3D L=2 periodic witness), cubic_surface, 4d_surface, higher_dimensional_toric.

双曲。Bravyi–Poulin–Terhal 的 k·d² ≤ c·n(k 逻辑比特数、d 码距、n 物理比特数、c 常数;bravyi2010tradeoffs,已注册;BB 码教程 1.1 节)只对欧几里得平面成立。把方格换成双曲铺砌,Breuckmann–Terhal 2016 得到 k/n 趋于常数、d 随 log n 增长的一族码(breuckmann2016hyperbolic);代价是阈值:{4,5} 双曲码(每个面是正方形、每个顶点连 5 条边的铺砌,这在平面上放不下,只能铺在负曲率的曲面上)在唯象噪声(数据比特和测量读数都会出错,但不细究电路里的每个门)下约 1.3%,对比普通环面码同模型下的 2.9%(breuckmann2017semihyperbolic)——同属唯象模型,才可放在一起比。该文的约定:每轮纠错之前,每个比特独立地以概率 p 出 X 错误、以概率 p 出 Z 错误;每条检查的读数再独立地以概率 q 翻转,数值计算里取 q = p;译码器是在「空间 × 时间」图上做的最小重量匹配,X 型与 Z 型症状分开译。1.3% 是最大几个码的每轮逻辑错误率曲线的交叉点(该文图 8 的说明写:最大的三个码交在 1.3% 到 1.55% 之间)。2.9% 是该文对 Wang–Harrington–Preskill 2003 的引用(正文写「约 3%」):那篇摘要给出 2.93% ± 0.02%,是随机平方规范模型在温度 T = 0 轴上的临界浓度,对应「挑权重最小的错误历史」这种译码,假设比特的 X、Z 错误与测量错误都以同一概率 p 发生。QEC-Bank 条目 two_dimensional_hyperbolic_surface(把一个叫 Bring 曲面的负曲率曲面切成五边形、每个顶点连 5 条边的 {5,5} 铺砌,共 30 条边)。

Hyperbolic. The Bravyi–Poulin–Terhal bound k·d² ≤ c·n (k logical qubits, d distance, n physical qubits, c a constant; bravyi2010tradeoffs, registered; BB-code guide, §1.1) holds only for the Euclidean plane. Swap the square grid for a hyperbolic tiling and Breuckmann and Terhal 2016 obtain a family with k/n tending to a constant and d growing like log n (breuckmann2016hyperbolic); the price is threshold: about 1.3% for the {4,5} hyperbolic code (square faces with five edges at every vertex, a tiling that does not fit in the flat plane and lives on a negatively curved surface) under phenomenological noise (data qubits and measurement readings both fail, without modelling each gate of the circuit), against 2.9% for the ordinary toric code in the same model (breuckmann2017semihyperbolic), both phenomenological, which is the only reason they may be compared. The paper's conventions: before each round of correction every qubit independently suffers an X error with probability p and a Z error with probability p; each check readout is then flipped independently with probability q, and the numerics set q = p; the decoder is minimum-weight matching on the space × time graph, run separately on the X-type and Z-type syndromes. 1.3% is the crossing point of the per-round logical error curves of the largest codes (the caption of the paper's Figure 8 says the three largest cross between 1.3% and 1.55%). 2.9% is the paper's citation of Wang, Harrington and Preskill 2003 (the text says “around 3%”): that abstract gives 2.93% ± 0.02%, the critical concentration of the random-plaquette gauge model on its temperature T = 0 axis, which corresponds to decoding by the lowest-weight error history, with qubit X and Z errors and measurement errors all at the same probability p. QEC-Bank entry: two_dimensional_hyperbolic_surface (the Bring surface, a negatively curved surface, cut into pentagons with five edges meeting at every vertex: the {5,5} tiling, 30 edges in total).

4.5加几根长线:LRESC、BB 血统与轭码A few long wires: LRESC, the BB lineage, and yoked codes

本条目的 product_of → hgp 边其实是通向更省比特的码的门。Hong–Marinelli–Kaufman–Lucas 2023 的长程增强表面码(LRESC,hong2023longrange)把「串接过的种子码」再做一次超图积,在表面码与常数率 qLDPC 之间插值,只加经证明接近最少的非局域检查就能多存逻辑比特。再往前一步是双变量 bicycle 码:Bravyi 等「High-Threshold and Low-Overhead Fault-Tolerant Quantum Memory」(bravyi2024bicycle,2024,已注册,别名 bravyi2024high)——其中最有名的是 [[n, k, d]] = [[144,12,12]] 的 gross 码:144 个物理比特存 12 个逻辑比特、码距 12。常被引用的「阈值约 0.8%」不是这一个码的性质:它是 arXiv 2308.07915 第 1 版摘要对该文整族 BB 码的每块伪阈值 p₀ 的一个取整说法。伪阈值 p₀ 是方程 pL(p) = k·p 的解,pL 是一整块码每轮综合征测量出逻辑错误的概率,k·p 近似「不编码时 k 个比特里至少一个出错」的概率,p 低于 p₀ 时编码才划算。噪声是该文的标准电路级去极化模型(每个 CNOT、初始化、测量和空闲步骤各自独立地以概率 p 出错),译码器是 BP-OSD(先做置信传播,不收敛时再做一次有序统计后处理)。发表在 Nature 的版本把同一个数写作约 0.7%。BB 码教程 6.4 节讲清这个数的五个限定项。它的 Tanner 图(比特与检查画成点、每个「检查碰比特」画一条线的图)每个点连 6 条线,由两张互不共享边的平面图叠成(摘要原话),其中一部分线要跨越较远的距离,正是本章标题「加几根长线」的意思。QEC-Bank 条目 bivariate_bicycle(T3,完整);qLDPC 教程第 4 章说明 BB 如何从超图积「提升」而来。

This entry's product_of → hgp edge is really a door to thriftier codes. The long-range-enhanced surface code of Hong, Marinelli, Kaufman and Lucas 2023 (LRESC, hong2023longrange) takes a hypergraph product of concatenated seed codes, interpolating between the surface code and constant-rate qLDPC codes with a provably near-minimal number of nonlocal checks. One step further are the bivariate bicycle codes: Bravyi et al., “High-Threshold and Low-Overhead Fault-Tolerant Quantum Memory” (bravyi2024bicycle, 2024, registered, alias bravyi2024high): the best known is the gross code with [[n, k, d]] = [[144,12,12]], 12 logical qubits in 144 physical ones at distance 12. The often-quoted “threshold of about 0.8%” is not a property of that one code: it is the round figure that the abstract of version 1 of arXiv 2308.07915 gives for the per-block pseudo-thresholds p₀ of the paper's family of BB codes. A pseudo-threshold p₀ solves pL(p) = k·p, where pL is the probability that a whole code block suffers a logical error in one syndrome cycle and k·p approximates the probability that at least one of k unencoded qubits fails; below p₀ encoding pays off. The noise is the paper's standard circuit-level depolarizing model (every CNOT, initialization, measurement and idle step fails independently with probability p), and the decoder is BP-OSD (belief propagation followed by ordered-statistics post-processing when it does not settle). The version published in Nature gives the same figure as about 0.7%. The BB-code guide, §6.4 spells out its five qualifiers. Its Tanner graph (qubits and checks as dots, one line for every “check touches qubit”) has degree 6 and consists of two edge-disjoint planar subgraphs (the abstract's words), some of whose lines span long distances, which is what this section's title “a few long wires” means. QEC-Bank entry: bivariate_bicycle (T3, complete); the qLDPC guide, Chapter 4 shows how BB is “lifted” from the hypergraph product.

轭码。Gidney–Newman–Brooks–Jones 2023 的 yoked surface codes(gidney2023yoked)把多块表面码贴片用格点手术串成一个外层奇偶码,在最近邻网格上把每物理比特的逻辑密度提高近三倍(假设物理错误率 10⁻³,目标是能可靠跑一万亿次逻辑操作的 teraquop 量级)。QEC-Bank 条目 yoked_surface:四块 L=3 旋转贴片加一条外层重复奇偶。它和本条目的关系在文献里叫「串接」(内层码的逻辑比特再当作外层码的「物理比特」使用),在 QEC-Bank 里同样尚无 typed 边。

Yoked codes. The yoked surface codes of Gidney, Newman, Brooks and Jones 2023 (gidney2023yoked) chain several surface-code patches into an outer parity code via lattice surgery, nearly tripling logical density per physical qubit on a nearest-neighbour grid (assuming a physical error rate of 10⁻³, in the teraquop regime, i.e. aiming at a trillion reliable logical operations). QEC-Bank entry: yoked_surface, four L=3 rotated blocks plus one outer repetition parity. Its relation to this entry is called “concatenation” in the literature (the logical qubits of an inner code serve as the “physical” qubits of an outer code); in the QEC-Bank it likewise has no typed edge yet.

亲戚Relative改了什么What changesQEC-Bank 条目(层级)QEC-Bank entry (tier)关键文献键Key bibkey
旋转rotated裁边方向;[[d²,1,d]]boundary cut; [[d²,1,d]]无独立条目(同一内部)no separate entry (same bulk)bombin2007optimal, horsman2012surface
XZZX交错 Hadamard;偏置噪声alternating Hadamard; biased noisexzzx (T1)bonilla2021xzzx
扭结缺陷twist defect对偶墙终点;混合 Pauli 检查duality-wall endpoint; mixed-Pauli checktwist_defect_surface (T1)bombin2010twist
子系统subsystem三腿(三角形)规范检查;两腿版是另一构造three-leg (triangle) gauge checks; the two-leg version is a different constructionsubsystem_surface (T1)bravyi2012subsystemsurface (bombin2010topologicalsubsystem)
3D立方格;横向 CCZ(3D 表面码);单发纠错属于另一个变体:3D 子系统环面码cubic lattice; transversal CCZ (3D surface code); single-shot correction belongs to a different variant, the 3D subsystem toric codehigher_dimensional_surface (T1)vasmer2019transversal (kubica2022singleshot)
双曲hyperbolic负曲率铺砌;k/n → 常数negatively curved tiling; k/n → consttwo_dimensional_hyperbolic_surface (T1)breuckmann2016hyperbolic
BB两层平面 + 长程边two planar layers + long-range edgesbivariate_bicycle (T3)bravyi2024bicycle
轭码yoked多贴片外层奇偶outer parity over patchesyoked_surface (T1)gidney2023yoked
尾声Epilogue

两条边的重放,与这张地图的其余部分The two edges replayed, and the rest of the map

回放一遍:一条关系 = (type, target, how, refs),主语是可执行的未旋转平面族。关系一:表面码是 HGP(rep_L, rep_L)——一个 (L−1)×L 的开放重复码矩阵(L = 链长 = 格子边长),两次 Kronecker 积,n = L² + (L−1)² 个物理比特,rank = L(L−1),逻辑比特数 k = 1·1 + 0·0 = 1,L=3 时全部数字被 reproduce.py 重算。关系二:闭合两条因子链,内部不变、转置核从 0 变 1,k = 1·1 + 1·1 = 2,就是环面码。其余一切——旋转、XZZX、扭结、子系统、三维、双曲、BB、轭码——是文献里的亲戚,QEC-Bank 各有条目,但都不是本条目的 typed 边。

Replay: a relation = (type, target, how, refs), whose subject is the executable unrotated planar family. Relation 1: the surface code is HGP(rep_L, rep_L): an (L−1)×L open repetition matrix (L = chain length = lattice side), two Kronecker products, n = L² + (L−1)² physical qubits, rank = L(L−1), logical count k = 1·1 + 0·0 = 1, every number recomputed by reproduce.py at L=3. Relation 2: close both factor chains; the bulk is unchanged, the transpose kernel goes from 0 to 1, k = 1·1 + 1·1 = 2, and that is the toric code. Everything else, rotated, XZZX, twists, subsystem, 3D, hyperbolic, BB, yoked, are relatives in the literature with their own QEC-Bank entries, and none is a typed edge of this one.

符号与读法Symbols & how to read them

符号Symbol名称与读法Name & how to read it在本教程中的含义Meaning in this guide
[[n, k, d]]「n k d 码」“an n-k-d code”n = 物理比特数,k = 逻辑比特数(定义),d = 码距(定义)。本条目:[[2L²−2L+1, 1, L]]。n = physical qubits, k = logical qubits (definition), d = code distance (definition). This entry: [[2L²−2L+1, 1, L]].
L「L」,格子边长“L”, the lattice side每条重复码因子的长度,也是格子边长与码距:d = L。The length of each repetition factor, also the lattice side and the distance: d = L.
rep_L, H「长度 L 的重复码校验矩阵」“the length-L repetition parity-check matrix”(L−1)×L,每行两个相邻的 1;开放链。(L−1)×L with two adjacent 1s per row; an open chain.
⊗圆圈乘,这里读「Kronecker 积」Circled times, here read “Kronecker product”A ⊗ B:把 A 的每个元素 a 换成小块 a·B。(m×n)⊗(p×q) 得 (mp)×(nq)。A ⊗ B: replace each entry a of A by the block a·B; (m×n)⊗(p×q) is (mp)×(nq).
ᵀ上标 T,读「转置」Superscript T, read “transpose”行列互换。Hᵀ 的核 = 「哪些检查的组合恒为零」。Swap rows and columns. ker(Hᵀ) = “which check combinations vanish identically”.
rank读「秩」Read “rank”独立行数(模 2)= 独立检查数。Number of independent rows (mod 2) = independent checks.
ker读「核」(kernel)Read “kernel”被矩阵送到 0 的向量全体;dim ker(H) = 经典码的 k。All vectors sent to 0; dim ker(H) = the classical k.
k, kᵀ「k」与「k 转置」“k” and “k-transpose”因子码的维数与其转置码的维数:开放链 (1,0),闭合链 (1,1)。Dimension of a factor code and of its transpose code: open (1,0), closed (1,1).
kQ = k₁k₂ + k₁ᵀk₂ᵀ超图积维数公式(Künneth)HGP dimension formula (Künneth)量子码的逻辑比特数;1 或 2 的全部来源。The quantum code's logical count; the whole source of 1 versus 2.
HX, HZ「X 校验矩阵、Z 校验矩阵」“X and Z check matrices”[H⊗I | I⊗Hᵀ] 与 [I⊗H | Hᵀ⊗I];HXHZᵀ = 0 模 2。[H⊗I | I⊗Hᵀ] and [I⊗H | Hᵀ⊗I]; HXHZᵀ = 0 mod 2.
product_of, same_bulk_phase_as关系类型(受控词表)Relation types (controlled vocabulary)「是某操作的输出」;「内部检查相同、仅边界 / 把手不同」。“is an output of an operation”; “same interior checks, differing only in boundaries/handles”.
atlas-entity:surface#subject实体 idEntity id两条关系的主语:未旋转平面族,而非 eczoo 的整个集合。The subject of both relations: the unrotated planar family, not the whole eczoo collection.
T1 / T3 / gold条目完成层级Entry completion tiersT1 = 只验证了形式骨架;T3 = 读者契约完整;gold = 人工审定通过(本条目)。T1 = formal skeleton only; T3 = reader contract complete; gold = human-approved (this entry).

延伸阅读Further reading

  • J.-P. Tillich, G. Zémor, “Quantum LDPC codes with positive rate and minimum distance proportional to the square root of the blocklength” (2009)
    tillich2009quantum · 超图积的定义与维数公式;两条关系共同的出处。tillich2009quantum · Defines the hypergraph product and its dimension formula; cited by both relations.
  • A. Yu. Kitaev, “Fault-tolerant quantum computation by anyons” (2003);E. Dennis, A. Kitaev, A. Landahl, J. Preskill, “Topological quantum memory” (2002)
    kitaev2003fault, dennis2002topological · 环面内部与平面边界的原始出处;关系二的依据。kitaev2003fault, dennis2002topological · The original sources for the toric bulk and planar boundaries; the basis of relation 2.
  • S. B. Bravyi, A. Yu. Kitaev, “Quantum codes on a lattice with boundary” (1998)
    bravyi1998quantum · 毛 / 光边界的首次构造;toric 条目反向关系 same_bulk_phase_as → surface 引用它。bravyi1998quantum · First construction of rough/smooth boundaries; cited by the toric entry's reverse relation same_bulk_phase_as → surface.
  • J. P. Bonilla Ataides et al., “The XZZX Surface Code” (2021);S. Bravyi et al., “High-Threshold and Low-Overhead Fault-Tolerant Quantum Memory” (2024)
    bonilla2021xzzx, bravyi2024bicycle · 第 4 章两位「已注册的亲戚」。bonilla2021xzzx, bravyi2024bicycle · The two “registered relatives” of Chapter 4.
诚实总账The honesty ledger

本教程里机器重算过的只有第 2、3 章的 n、k、秩、对易与 L=3、4 的码距;L=5 的码距是 bounded。两条关系本身是带文献引用的 typed 断言,QEC-Bank 没有给关系附加 verified / claimed 一类标签,本教程也没有替它加。第 4 章的全部数字(50%、25%、1.3% vs 2.9%、0.8%、近三倍)来自侦察报告与各论文,未经本条目重算;其中三个文献键(yoder2017twist、bombin2010topologicalsubsystem、vasmer2019transversal 等)只是侦察报告的键,尚未注册到本条目的引用表。沙盘用贪心配对,检查读数假设完美。

The only machine-recomputed items in this guide are the n, k, ranks, commutation and L=3,4 distances of Chapters 2 and 3; the L=5 distance is bounded. The two relations themselves are typed assertions with references; the QEC-Bank attaches no verified/claimed label to relations, and this guide has not added one. Every number in Chapter 4 (50%, 25%, 1.3% vs 2.9%, 0.8%, nearly threefold) comes from the scout report and the papers, not from this entry's recomputation; several keys there (yoder2017twist, bombin2010topologicalsubsystem, vasmer2019transversal, …) are scout-report keys not yet registered to this entry. The sandboxes use greedy matching and assume perfect check readout.