BB 码 · 导览BB Codes · Guided Tour
QEC-Bank 条目导读 · BB 码 · 导览QEC-Bank entry guide · BB codes · Guided tour

从环面平移到一罗存储器:
一次导览,一百四十四个坐标
From torus shifts to the gross memory:
one guided tour, one hundred forty-four coordinates

「导览」是 QEC-Bank 给每个码条目配的一条固定路线:它不讲新理论,只把构造器真实导出的数据(坐标、检查、支撑、秩)一站一站指给你看。BB 码的这条路线有八站,标题叫「Bivariate bicycle: from torus shifts to the gross memory」(从环面平移到 gross 存储器;gross 是英文里「一罗」= 12 打 = 144 的旧量词,这个码有 144 个数据比特,因此得名,本篇标题里的「一罗」就是它)。本篇沿着它走一遍,用的是 QEC-Bank 自己算出来的 gross 实例 [[144,12,12]]:l = 12、m = 6 的环面上 A = x³ + y + y²、B = y³ + x + x²(l、m 是环面两个方向的格数,A、B 是两个三项多项式),外加一个 3 × 3 环面上的锚点 [[18,2,3]]。你会看到 144 个坐标是哪条公式算出来的,X 检查 0 的六条腿 {1, 2, 18, 75, 78, 84} 一条一条从哪一项来,Z 检查 0 的 {3, 60, 66, 76, 77, 126} 为什么是「倒着走」的,72 行检查为什么只有 66 行独立,以及导览最后两站为什么要专门说「这不是电路」「这个平移对逻辑比特做了什么,要另算」。 A “guided tour” is the fixed route the QEC-Bank attaches to every code entry: no new theory, only the data the constructor actually exported (coordinates, checks, supports, ranks), pointed out one stop at a time. The BB-code route has eight stops and is titled “Bivariate bicycle: from torus shifts to the gross memory” (“gross” is the old unit of 12 dozen = 144; the code has 144 data qubits, hence the name). This guide walks it using the QEC-Bank's own computed gross instance, [[144,12,12]]: A = x³ + y + y² and B = y³ + x + x² on an l = 12, m = 6 torus (l and m are the site counts in the two torus directions, A and B the two three-term polynomials), plus an anchor [[18,2,3]] on a 3 × 3 torus. You will see which formula produces the 144 coordinates, where each of X check 0's six legs {1, 2, 18, 75, 78, 84} comes from, why Z check 0's {3, 60, 66, 76, 77, 126} “walks backwards”, why 72 rows of checks have only 66 independent ones, and why the last two stops insist “this is not a circuit” and “what this translation does to the logical qubits must be computed separately”.

前置:《BB 码 · 高中数学版》(单项式是平移、HX = [A | B] 与 HZ = [Bᵀ | Aᵀ]、k = 2 × 秩亏损、d 的两份证书)。这里新增的是对账的功夫:把导览每一站的高亮,还原成 constructor.py 里的一行公式和 reproduce.py 里的一条断言,并学会读每一站的出处标签。 Prerequisite: “BB Codes · High-School Edition” (monomials are translations, HX = [A | B] and HZ = [Bᵀ | Aᵀ], k = 2 × rank deficit, two certificates for d). New here is the craft of auditing: tracing every highlight of the tour back to one formula in constructor.py and one assertion in reproduce.py, and learning to read each stop's provenance label.
开始 ↓Begin ↓ 全程约 40–55 分钟 · 在 QEC-Bank 中查看此条目 →About 40–55 minutes · Open in the QEC-Bank →
目录Contents
第 1 章Chapter 1

导览在看什么:144 个被算出来的坐标What the tour looks at: 144 computed coordinates

QEC-Bank 的导览页是一个通用播放器。它的副标题写得很直白:「no BB-specific JavaScript」——页面里没有一行专属 BB 码的代码,只是读两份文件(八站脚本 tour.yaml,以及构造器导出的两个格点:gross 与 toric_L3),把每一站的高亮和说明摆到屏幕上。这一章先弄清那两个格点是什么、144 个坐标怎么来的。 The QEC-Bank tour page is a generic player. Its subtitle says so plainly: “no BB-specific JavaScript” — not one line on the page is written for BB codes; it only reads two files (the eight-stop script tour.yaml and the two lattices the constructor exported, gross and toric_L3) and puts each stop's highlight and caption on screen. This chapter settles what those two lattices are and where the 144 coordinates come from.

1.1八站路线,与每一站的出处标签Eight stops, each with a provenance label

先把八站的题目抄下来,再看每一站在 tour.yaml 里带的 出处标签每一站的 origin 字段:kind 说这句话的可信方式(verified = 机器在这个仓库里现算并断言过;curated = 从一篇具体文献整理来的叙述,机器没有重算),method 或 ref 说具体是哪段代码、哪篇文献。。八站里七站是 verified,只有第 ⑦ 站是 curated——因为它说的是电路和阈值,而 QEC-Bank 的 BB 条目根本没有导出电路。

First copy down the eight stop titles, then look at the provenance labelThe origin field of each stop: kind says how the statement earns trust (verified = the machine recomputed and asserted it inside this repository; curated = a narrative organised from one specific paper, not recomputed), and method or ref names the exact code or paper. each carries in tour.yaml. Seven of the eight are verified; only stop ⑦ is curated — because it speaks about circuits and thresholds, and the QEC-Bank BB entry exports no circuit at all.

站Stop题目(原文)Title (verbatim)格点 · 类型 · 高亮编号Lattice · type · highlighted index出处标签与方法Provenance and method本篇Here
①Begin with two qubits per torus site
从每个环面格子上的两个比特开始
Begin with two qubits per torus site
gross · all · 0verified · bivariate_bicycle.build lattice/checkmatrix export第 1 章Ch. 1
②Read one X check as six translations
把一条 X 检查读成六次平移
Read one X check as six translations
gross · X · 0verified · gross HX row 0 support asserted in reproduce.py第 2 章Ch. 2
③The swapped transpose builds the Z partner
换位加转置,造出配对的 Z 检查
The swapped transpose builds the Z partner
gross · Z · 72verified · gross HZ row 0 support and HX HZ-transpose check第 3 章Ch. 3
④Shrink to the toric convention test
缩到环面码,检验约定
Shrink to the toric convention test
toric · all · 0verified · exact-css-enum on toric_L3第 4 章Ch. 4
⑤See a four-body toric X check
看一条四体的环面 X 检查
See a four-body toric X check
toric · X · 0verified · toric_L3 HX row 0 from constructor第 4 章Ch. 4
⑥Return to the rank-defect design problem
回到秩亏损这个设计问题
Return to the rank-defect design problem
gross · X · 1verified · qeclib.gf2.rank on gross HX and HZ第 5 章Ch. 5
⑦Separate the static code from its circuit
把静态的码和它的电路分开
Separate the static code from its circuit
gross · all · 0curated · ref bravyi2024bicycle第 6 章Ch. 6
⑧Interrogate what a symmetry actually buys
追问一个对称性到底带来什么
Interrogate what a symmetry actually buys
gross · Z · 73verified · translation row-permutation identities in reproduce.py第 6 章Ch. 6

「高亮」一列里的数字是检查的编号:播放器把 72 条 X 检查排在前面(编号 0–71),72 条 Z 检查排在后面(编号 72–143),所以第 ③ 站高亮的「72」就是 Z 检查 0,第 ⑧ 站的「73」就是 Z 检查 1。这个顺序不是播放器定的,而是构造器导出文件里 focusByFilter: {all: 0, X: 0, Z: 72} 那一行定的;reproduce.py 逐字核对过它。说人话:播放器只是照着构造器给的清单点名,谁排第几、有几条腿,全由构造器说了算。

The numbers in the “highlight” column are check indices: the player lists the 72 X checks first (indices 0–71) and the 72 Z checks after them (72–143), so the “72” highlighted at stop ③ is Z check 0 and the “73” at stop ⑧ is Z check 1. The player did not choose this order; the constructor's export did, in the line focusByFilter: {all: 0, X: 0, Z: 72}, and reproduce.py checks it verbatim. In plain words: the player only calls the roll from the constructor's list; who comes in which position and with how many legs is entirely the constructor's decision.

范围说明Scope

QEC-Bank 的 bivariate_bicycle 条目是一个可执行的族:构造器 build(l, m, a_terms, b_terms) 接受任何环面尺寸和任何两组指数,条目本身只交付两个实例——gross(l = 12,m = 6)与 toric_L3(l = m = 3)。导览的每一个坐标和支撑只属于这两个实例。Bravyi 等人 Table 3 的其他成员 [[72,12,6]]、[[90,8,10]]、[[108,8,10]]、[[288,12,18]] 各自住在自己的 QEC-Bank 条目里(bb72、bb90、bb108、bb288),直觉教程第 5 章逐个讲过;本篇不再碰它们。

The QEC-Bank bivariate_bicycle entry is an executable family: the constructor build(l, m, a_terms, b_terms) accepts any torus size and any two exponent lists, and the entry itself ships two instances — gross (l = 12, m = 6) and toric_L3 (l = m = 3). Every coordinate and support in the tour belongs to these two instances only. The other members of Bravyi et al.'s Table 3, [[72,12,6]], [[90,8,10]], [[108,8,10]] and [[288,12,18]], live in QEC-Bank entries of their own (bb72, bb90, bb108, bb288), covered one by one in the intuition guide's Chapter 5; this page leaves them alone.

1.2两层比特:一条公式给出 144 个坐标Two layers of qubits: one formula gives 144 coordinates

第 ① 站的原话:「The gross view contains 72 sites in each of two interleaved data layers. All 144 coordinates and all check supports come from constructor.py; the drawing is not a hand-authored lattice.」拆开读。格点是一个 l × m = 12 × 6 的环面,共 72 个格子,格子用一对整数 (i, j) 标记,i 从 0 到 11,j 从 0 到 5。每个格子放两个数据比特,一个属于左层(layer 0),一个属于右层(layer 1)——这就是直觉教程3.1 节的「两层比特」。构造器给每个比特一个编号和一个平面坐标:

Stop ① verbatim: “The gross view contains 72 sites in each of two interleaved data layers. All 144 coordinates and all check supports come from constructor.py; the drawing is not a hand-authored lattice.” Unpack it. The lattice is an l × m = 12 × 6 torus with 72 sites, each labelled by a pair of integers (i, j), i from 0 to 11 and j from 0 to 5. Every site holds two data qubits, one in the left layer (layer 0) and one in the right layer (layer 1) — the “two layers” of the intuition guide's §3.1. The constructor gives each qubit an index and a planar coordinate:

编号index = layer·lm + i·m + j
坐标coordinate = (2i + 0.55·layer, 2j + 0.55·layer)
n = 2lm = 2 × 12 × 6 = 144l = 12(i 方向格数),m = 6(j 方向格数),lm = 72(格子数);layer ∈ {0, 1} 是左 / 右层;(i, j) 是格子;n = 数据比特数。0.55 只是画图时把右层错开一点的偏移量,没有物理含义。l = 12 (sites along i), m = 6 (sites along j), lm = 72 (number of sites); layer ∈ {0, 1} is left / right; (i, j) is the site; n = number of data qubits. The 0.55 is only a drawing offset that separates the right layer slightly; it has no physical meaning.

说人话:先数左层,从 (0,0) 开始,先把 j 数完再进下一个 i——所以左层 (0,0) 是 0 号,(0,1) 是 1 号,(0,5) 是 5 号,(1,0) 是 6 号,(3,0) 是 18 号,(11,5) 是 71 号;然后右层从 72 号开始,右层 (0,3) 是 72 + 3 = 75 号,右层 (11,5) 是 143 号。反过来读也容易:给你一个编号 c,先看它是否 ≥ 72 定层,再用余数除以 6 得 i、取模 6 得 j。这条词典本篇要用几十次。

In plain words: count the left layer first, starting at (0,0), running through j before moving to the next i — so left (0,0) is index 0, (0,1) is 1, (0,5) is 5, (1,0) is 6, (3,0) is 18, (11,5) is 71; then the right layer starts at 72, right (0,3) is 72 + 3 = 75, right (11,5) is 143. Reading backwards is just as easy: given an index c, decide the layer by whether c ≥ 72, then divide the remainder by 6 for i and take it mod 6 for j. This dictionary will be used dozens of times on this page.

编号Index层Layer(i, j)坐标Coordinate编号Index层Layer(i, j)坐标Coordinate
0左left(0, 0)(0, 0)72右right(0, 0)(0.55, 0.55)
1左left(0, 1)(0, 2)75右right(0, 3)(0.55, 6.55)
2左left(0, 2)(0, 4)78右right(1, 0)(2.55, 0.55)
18左left(3, 0)(6, 0)84右right(2, 0)(4.55, 0.55)
71左left(11, 5)(22, 10)143右right(11, 5)(22.55, 10.55)

检查也有位置:每个格子配一条 X 检查和一条 Z 检查,X 检查的记号画在 (2i + 0.15, 2j + 0.15),Z 检查画在 (2i + 0.4, 2j + 0.4),所以一个格子里挤着四样东西:左层比特、X 记号、Z 记号、右层比特,沿对角线错开。导出文件还写明 layout.kind: periodic,基向量 (24, 0) 与 (0, 12)——意思是画到右边缘就从左边缘接回来,画到上边缘就从下边缘接回来:这是一个环面,不是一张有边的纸。

Checks have positions too: every site hosts one X check and one Z check, the X marker drawn at (2i + 0.15, 2j + 0.15) and the Z marker at (2i + 0.4, 2j + 0.4), so four things crowd each site — the left qubit, the X marker, the Z marker and the right qubit — staggered along the diagonal. The export also states layout.kind: periodic with basis vectors (24, 0) and (0, 12): reach the right edge and you re-enter from the left, reach the top and you re-enter from the bottom. This is a torus, not a sheet with edges.

0 1 18 71 72 75 143 i=0 i=1 i=2 i=3 i=4 i=5 i=6 i=7 i=8 i=9 i=10 i=11 j=0 j=1 j=2 j=3 j=4 j=5
1.1 gross 格点:12 × 6 个格子,每格两个数据比特——实心圆 = 左层(layer 0,画在 (2i, 2j)),空心圆 = 右层(layer 1,向右上错开 0.55);每格还有两个小方块,橙色 = 这个格子的 X 检查,蓝色 = Z 检查。横轴 i = 0–11,纵轴 j = 0–5,走出右边缘或上边缘就从左边缘或下边缘接回(环面)。坐标与编号照 constructor.py 的公式画出,标出了表中几个编号。 The gross lattice: 12 × 6 sites, two data qubits per site: filled circle = left layer (layer 0, drawn at (2i, 2j)), hollow circle = right layer (layer 1, offset 0.55 up and to the right); each site also carries two small squares, orange = that site's X check, blue = its Z check. The horizontal axis is i = 0–11, the vertical j = 0–5; leaving past the right or top edge re-enters at the left or bottom edge (torus). Coordinates and indices follow the formula in constructor.py; a few indices from the table are labelled.
关键想法Key idea

你在直觉教程里「想象」的两层环面,这里是「打印」出来的:坐标是 (i, j, layer) 的线性函数,144 = 2 × 72 是两层的面积之和。reproduce.py 断言导出的 coords 恰有 144 项、checks 恰有 144 条,且每条检查的支撑就是 HX 或 HZ 对应那一行里 1 的位置。后面每一章都在重复同一件事:把导览里的一次高亮,还原成关于 A、B 的一句代数话。

The two-layer torus you “imagined” in the intuition guide is “printed” here: coordinates are linear functions of (i, j, layer), and 144 = 2 × 72 is the area of the two layers. reproduce.py asserts that the exported coords has exactly 144 entries and checks exactly 144 rows, and that each check's support is exactly the positions of the 1s in the corresponding row of HX or HZ. Every later chapter repeats one move: turning a highlight in the tour into one algebraic sentence about A and B.

第 2 章Chapter 2

读一条 X 检查:六次平移,六条腿Reading one X check: six translations, six legs

第 ② 站把 X 检查 0 高亮,原话是:「Gross X check 0 touches left-block qubits 1, 2, and 18 from A = x³ + y + y², then right-block qubits 75, 78, and 84 from B = y³ + x + x². Three plus three gives weight six.」这一章把这句话里的六个数字一个一个算出来。 Stop ② highlights X check 0 and says: “Gross X check 0 touches left-block qubits 1, 2, and 18 from A = x³ + y + y², then right-block qubits 75, 78, and 84 from B = y³ + x + x². Three plus three gives weight six.” This chapter computes each of those six numbers by hand.

2.1读法:一项一条腿,A 管左层,B 管右层The reading rule: one term, one leg; A for the left layer, B for the right

回忆直觉教程的翻译词典:单项式 xayb 是「把格子 (i, j) 平移到 (i + a, j + b)」的置换矩阵(每行、每列恰有一个 1 的 0/1 矩阵:第 s 行唯一的 1 所在的列,就是格子 s 被送到的地方),坐标超出范围就绕回mod l 与 mod m:i 数到 12 绕回 0,j 数到 6 绕回 0。环面上没有「出界」,只有绕回。。所以 HX = [A | B] 的第 s 行(s 是格子 (i, j) 的编号 i·m + j)里,1 落在这些列上:A 的每一项 (a, b) 给出左层格子 (i + a, j + b) 的编号;B 的每一项 (a, b) 给出右层格子 (i + a, j + b) 的编号。项数就是腿数:gross 的 |A| = |B| = 3,所以每条 X 检查恰好六条腿,三条在左层、三条在右层。

Recall the intuition guide's translation dictionary: the monomial xayb is the permutation matrix “move site (i, j) to (i + a, j + b)” (a 0/1 matrix with exactly one 1 in every row and every column: the column of the single 1 in row s is where site s is sent), wrapping aroundmod l and mod m: i counts up to 12 and wraps to 0, j counts up to 6 and wraps to 0. On a torus there is no “out of bounds”, only wrapping. when a coordinate runs off the end. So in row s of HX = [A | B] (s is the index i·m + j of site (i, j)) the 1s sit in these columns: each term (a, b) of A gives the index of the left-layer site (i + a, j + b); each term (a, b) of B gives the index of the right-layer site (i + a, j + b). Term count equals leg count: gross has |A| = |B| = 3, so every X check has exactly six legs, three in the left layer and three in the right.

HX = [ A | B ]
X 检查 (i, j) 的腿legs of X check (i, j) = {左left (i+a, j+b) : xayb ∈ A}
  ∪ {右right (i+a, j+b) : xayb ∈ B}
重量weight = |A| + |B| = 3 + 3 = 6A、B = 两个多项式(72 × 72 的稀疏矩阵);(a, b) = 一项的两个指数;(i, j) = 检查所在格子;|A| = A 的项数;左 / 右 = 层,编号见 1.2 的公式A, B = the two polynomials (72 × 72 sparse matrices); (a, b) = the two exponents of one term; (i, j) = the check's site; |A| = number of terms of A; left / right = layer, indices by the formula of §1.2

2.2X 检查 0:{1, 2, 18} 与 {75, 78, 84} 逐条对账X check 0: {1, 2, 18} and {75, 78, 84}, audited leg by leg

X 检查 0 在格子 (0, 0)。A = x³ + y + y² 的三项是 (3, 0)、(0, 1)、(0, 2):从 (0, 0) 出发,往右三格到 (3, 0),编号 3·6 + 0 = 18;往上一格到 (0, 1),编号 1;往上两格到 (0, 2),编号 2。B = y³ + x + x² 的三项是 (0, 3)、(1, 0)、(2, 0),落在右层:往上三格 (0, 3),编号 72 + 3 = 75;往右一格 (1, 0),编号 72 + 6 = 78;往右两格 (2, 0),编号 72 + 12 = 84。六个数字排好序:{1, 2, 18, 75, 78, 84}——与导览原话逐字相同,也是 reproduce.py 里那一行 assert np.flatnonzero(hx[0]).tolist() == [1, 2, 18, 75, 78, 84]。

X check 0 sits at site (0, 0). The three terms of A = x³ + y + y² are (3, 0), (0, 1), (0, 2): from (0, 0), three steps right to (3, 0), index 3·6 + 0 = 18; one step up to (0, 1), index 1; two steps up to (0, 2), index 2. The three terms of B = y³ + x + x² are (0, 3), (1, 0), (2, 0), landing in the right layer: three up to (0, 3), index 72 + 3 = 75; one right to (1, 0), index 72 + 6 = 78; two right to (2, 0), index 72 + 12 = 84. Sorted: {1, 2, 18, 75, 78, 84} — word for word the tour's sentence, and the line assert np.flatnonzero(hx[0]).tolist() == [1, 2, 18, 75, 78, 84] in reproduce.py.

项Term来自From(a, b)说人话In words落点 (层, i, j)Lands at (layer, i, j)编号Index坐标Coordinate
x³A(3, 0)往右三格three right左left, 3, 018(6, 0)
yA(0, 1)往上一格one up左left, 0, 11(0, 2)
y²A(0, 2)往上两格two up左left, 0, 22(0, 4)
y³B(0, 3)往上三格three up右right, 0, 375(0.55, 6.55)
xB(1, 0)往右一格one right右right, 1, 078(2.55, 0.55)
x²B(2, 0)往右两格two right右right, 2, 084(4.55, 0.55)
1 2 18 75 78 84 i=0 i=1 i=2 i=3 i=4 i=5 i=6 i=7 i=8 i=9 i=10 i=11 j=0 j=1 j=2 j=3 j=4 j=5
2.1 底图同图 1.1:实心圆 = 左层比特,空心圆 = 右层比特,橙 / 蓝小方块 = 各格子的 X / Z 检查。X 检查 0(格子 (0, 0) 处放大的橙色方块)的六条腿,终点画成标了编号的橙色大圆:左层 {1, 2, 18} 来自 A 的三项,右层 {75, 78, 84} 来自 B 的三项。通到 75 的那条腿画成虚线:它从下边缘出去、从上边缘回来——在 6 格高的环面上往上三格和往下三格落在同一个格子,图上取了往下的走法。「往右三格」的那条腿(18)伸得最远——这就是直觉教程1.2 节说的「不再挤在一个小方块里」。 Background as in figure 1.1: filled circle = left-layer qubit, hollow circle = right-layer qubit, small orange / blue squares = each site's X / Z check. The six legs of X check 0 (the enlarged orange square at site (0, 0)), their ends drawn as numbered large orange circles: left layer {1, 2, 18} from the three terms of A, right layer {75, 78, 84} from the three terms of B. The leg to 75 is dashed: it leaves through the bottom edge and comes back through the top; on a torus 6 sites high, three steps up and three steps down land on the same site, and the figure draws the downward route. The “three steps right” leg (18) reaches furthest — the intuition guide's §1.2 “no longer crammed into one small square”.

导览让你把鼠标挪到旁边的检查上,看「被复制的平移」怎样变化。X 检查 1 在格子 (0, 1),按同一条规则算出 {2, 3, 19, 76, 79, 85}——恰好是 X 检查 0 的每个编号加 1,因为整个形状往上挪了一格(j 加 1),六条腿一起挪。这就是平移不变:72 条 X 检查是同一个六腿形状的 72 份拷贝,只是起点不同(绕回边缘时编号会跳,见第 3 章)。到实验台上试:默认高亮的正是 X 检查 0,点任何一个橙色圆圈(X 检查)或蓝色方块(Z 检查)换一条检查,读数会告诉你它在哪个格子;画布下方的两行图例说明了哪种点是哪一层。

The tour asks you to hover a neighbouring check and watch “the copied translations” change. X check 1 sits at site (0, 1); the same rule gives {2, 3, 19, 76, 79, 85} — exactly X check 0 with every index increased by 1, because the whole shape moved one step up (j + 1) and all six legs moved with it. That is translation invariance: the 72 X checks are 72 copies of one six-leg shape with different starting points (indices jump when a leg wraps around the edge; see Chapter 3). Try it on the bench: the default highlight is X check 0; click any orange circle (X check) or blue square (Z check) to switch checks, and the readout names its site; the two legend lines under the canvas say which dots belong to which layer.

关键想法Key idea

环面码里「星形检查 = 顶点周围四条边」是画出来的;BB 码里「X 检查 = 六次平移的落点」是算出来的。读一条检查只需三步:定格子 (i, j),把 A 的每一项加到格子上得左层编号,把 B 的每一项加到格子上得右层编号。reproduce.py 不只核对第 0 行,还断言 A、B 每行每列恰好 3 个 1、HX 每行恰好 6 个 1、每列恰好 3 个 1——即每个数据比特恰被 3 条 X 检查碰到。

In the toric code “a star check = the four edges around a vertex” is drawn; in a BB code “an X check = the landing points of six translations” is computed. Reading a check takes three steps: fix the site (i, j), add each term of A to it for the left-layer indices, add each term of B to it for the right-layer indices. reproduce.py checks more than row 0: it asserts that every row and column of A and of B has exactly 3 ones, every row of HX exactly 6 and every column exactly 3 — i.e. every data qubit meets exactly 3 X checks.

第 3 章Chapter 3

Z 检查:倒着走、换位置,于是 AB + BA = 0Z checks: walk backwards, swap places, and AB + BA = 0

第 ③ 站高亮 Z 检查 0(播放器编号 72),原话:「Gross Z check 0 touches 3, 60, 66, 76, 77, and 126. Transpose reverses every torus translation, while swapping A and B makes every X/Z overlap evaluate to AB + BA = 0.」这一章先把六个数字倒推出来,再拿一对具体的检查看「重叠为偶数」到底长什么样。 Stop ③ highlights Z check 0 (player index 72): “Gross Z check 0 touches 3, 60, 66, 76, 77, and 126. Transpose reverses every torus translation, while swapping A and B makes every X/Z overlap evaluate to AB + BA = 0.” This chapter first derives the six numbers, then takes one concrete pair of checks to see what “even overlap” looks like.

3.1六条腿逐个还原:转置 = 每个指数取负Six legs recovered one by one: transpose = negate every exponent

HZ = [Bᵀ | Aᵀ]。两处变化:换位置——左层现在由 B 管、右层由 A 管;转置——直觉教程2.2 节证过 (xayb)ᵀ = x−ay−b,即把每次平移倒过来走。所以 Z 检查 (i, j) 的腿是:B 的每一项 (a, b) 给左层格子 (i − a, j − b),A 的每一项给右层格子 (i − a, j − b)。负数按 mod 12、mod 6 绕回:−1 ≡ 11,−2 ≡ 10,−3 ≡ 9(对 i);−1 ≡ 5,−2 ≡ 4(对 j)。

HZ = [Bᵀ | Aᵀ]. Two changes: the swap — the left layer is now governed by B and the right by A; the transpose — the intuition guide's §2.2 proved (xayb)ᵀ = x−ay−b, i.e. every translation is walked backwards. So the legs of Z check (i, j) are: each term (a, b) of B gives the left-layer site (i − a, j − b), each term of A gives the right-layer site (i − a, j − b). Negatives wrap mod 12 and mod 6: −1 ≡ 11, −2 ≡ 10, −3 ≡ 9 (for i); −1 ≡ 5, −2 ≡ 4 (for j).

项Term来自From正向 (a, b)Forward (a, b)倒着走Backwards落点 (层, i, j)Lands at (layer, i, j)编号Index
y³Bᵀ(0, 3)(0, −3) ≡ (0, 3)左left, 0, 33
xBᵀ(1, 0)(−1, 0) ≡ (11, 0)左left, 11, 066
x²Bᵀ(2, 0)(−2, 0) ≡ (10, 0)左left, 10, 060
x³Aᵀ(3, 0)(−3, 0) ≡ (9, 0)右right, 9, 0126
yAᵀ(0, 1)(0, −1) ≡ (0, 5)右right, 0, 577
y²Aᵀ(0, 2)(0, −2) ≡ (0, 4)右right, 0, 476

排好序:{3, 60, 66, 76, 77, 126},与导览原话和 reproduce.py 的 assert np.flatnonzero(hz[0]).tolist() == [3, 60, 66, 76, 77, 126] 逐字相同。注意一个巧合和一个非巧合。巧合:y³ 倒着走仍是 y³,因为 m = 6 时 −3 ≡ 3,「往下三格」和「往上三格」在 6 格高的环面上是同一件事。非巧合:六条腿里有五条绕回了边缘(坐标 11、10、9、5、4 都是绕回来的),所以在画出来的格点上,Z 检查 0 的腿看起来「远远地伸向另一头」——那是环面在平面图上的假象,它们其实都只走了一到三格。

Sorted: {3, 60, 66, 76, 77, 126}, identical to the tour's sentence and to assert np.flatnonzero(hz[0]).tolist() == [3, 60, 66, 76, 77, 126] in reproduce.py. Note one coincidence and one non-coincidence. The coincidence: y³ walked backwards is still y³, because −3 ≡ 3 when m = 6; “three down” and “three up” are the same move on a torus six sites tall. The non-coincidence: five of the six legs wrap around the edge (the coordinates 11, 10, 9, 5, 4 are all wrapped), so on the drawn lattice Z check 0's legs seem to “reach far across to the other side” — an artefact of flattening a torus; each actually moves only one to three steps.

3 60 66 76 77 126 i=0 i=1 i=2 i=3 i=4 i=5 i=6 i=7 i=8 i=9 i=10 i=11 j=0 j=1 j=2 j=3 j=4 j=5
3.1 底图同图 1.1:实心圆 = 左层比特,空心圆 = 右层比特,橙 / 蓝小方块 = 各格子的 X / Z 检查。Z 检查 0(格子 (0, 0) 处放大的蓝色方块)的六条腿,终点是标了编号的蓝色大圆。虚线表示这条腿绕过了环面的边缘:往左一格到 i = 11(66 号)、往左两格到 i = 10(60 号)、往左三格到右层 i = 9(126 号)、往下一格到右层 j = 5(77 号)、往下两格到右层 j = 4(76 号);只有 3 号(y³)不需要绕。 Background as in figure 1.1: filled circle = left-layer qubit, hollow circle = right-layer qubit, small orange / blue squares = each site's X / Z check. The six legs of Z check 0 (the enlarged blue square at site (0, 0)), ending on numbered large blue circles. Dashed legs wrap around the torus edge: one left to i = 11 (index 66), two left to i = 10 (60), three left in the right layer to i = 9 (126), one down in the right layer to j = 5 (77), two down to j = 4 (76); only index 3 (y³) needs no wrap.

到实验台上把「A(正向平移)」切到「Aᵀ(反向平移)」,看三个箭头一起掉头。这个实验台默认是 6 × 6 的环面,把两个滑杆拉到 l = 12、m = 6 就是 gross 的尺寸;右侧的小方阵是 A 或 Aᵀ 的 72 × 72 矩阵,你点的那个起点对应被高亮的那一行——转置之后,同一行里 1 的位置换成了「谁平移到我这里」。

On the bench, switch “A (translations)” to “Aᵀ (reversed)” and watch all three arrows turn around. The bench opens on a 6 × 6 torus; drag the two sliders to l = 12, m = 6 for the gross size. The small square on the right is the 72 × 72 matrix of A or Aᵀ, and the source you click is the highlighted row — after the transpose, the 1s in that row mark “who translates onto me” instead.

3.2为什么要换位置:看一对具体的检查Why swap: one concrete pair of checks

直觉教程3.2 节用一行代数证明了 HXHZᵀ = AB + BA = 0。这里换一个角度:直接数一对检查共享几个比特。取 X 检查 0 = {1, 2, 18, 75, 78, 84} 和 Z 检查 4(格子 (0, 4)),按 3.1 的规则算出 Z 检查 4 = {1, 64, 70, 74, 75, 130}。两者的公共比特是 {1, 75}——两个,偶数,对易 ✓。再看这两个公共比特各是怎么来的:

The intuition guide's §3.2 proved HXHZᵀ = AB + BA = 0 in one line of algebra. Here is the other angle: count directly how many qubits a pair of checks shares. Take X check 0 = {1, 2, 18, 75, 78, 84} and Z check 4 (site (0, 4)); the rule of §3.1 gives Z check 4 = {1, 64, 70, 74, 75, 130}. The shared qubits are {1, 75} — two, even, commuting ✓. Now see where each shared qubit comes from:

公共比特Shared qubitX 检查 0 到达它的方式How X check 0 reaches itZ 检查 4 到达它的方式How Z check 4 reaches it所属块Block
1 = 左left (0, 1)从 (0, 0) 用 A 的 y 项:往上一格from (0, 0) by the y term of A: one up从 (0, 4) 用 Bᵀ 的 y³ 项:倒着走三格,(0, 4−3) = (0, 1)from (0, 4) by the y³ term of Bᵀ: three back, (0, 4−3) = (0, 1)左层:A 遇上 Bᵀleft layer: A meets Bᵀ
75 = 右right (0, 3)从 (0, 0) 用 B 的 y³ 项:往上三格from (0, 0) by the y³ term of B: three up从 (0, 4) 用 Aᵀ 的 y 项:倒着走一格,(0, 4−1) = (0, 3)from (0, 4) by the y term of Aᵀ: one back, (0, 4−1) = (0, 3)右层:B 遇上 Aᵀright layer: B meets Aᵀ

看出规律了:左层的相遇是「A 的一项 + B 的一项 = 从 X 检查走到 Z 检查的位移」,右层的相遇是「B 的一项 + A 的一项 = 同一个位移」。两层各贡献一次同一个乘积——左层算的是 AB,右层算的是 BA,而 AB = BA(x、y 可交换)。于是在普通整数里,HXHZᵀ 的每个元素要么是 0,要么是 2;模 2 后全部归零。对 gross 实例这不是比喻:整数乘积 HXHZᵀ 里出现的数字只有 0 和 2,X 检查 0 恰与 3 × 3 = 9 条 Z 检查相遇(Z 检查 4、5、7、8、13、14、21、24、30),每一条都恰好共享 2 个比特——9 = |A|·|B| 个乘积项,每个出现两次。

The pattern: a left-layer meeting is “one term of A + one term of B = the displacement from the X check to the Z check”, a right-layer meeting is “one term of B + one term of A = the same displacement”. Each layer contributes one copy of the same product — the left layer computes AB, the right layer BA, and AB = BA (x and y commute). So over the ordinary integers every entry of HXHZᵀ is 0 or 2; reduced mod 2, all vanish. For the gross instance this is not a figure of speech: the integer product HXHZᵀ contains only the numbers 0 and 2, X check 0 meets exactly 3 × 3 = 9 Z checks (Z checks 4, 5, 7, 8, 13, 14, 21, 24, 30), and shares exactly 2 qubits with each — 9 = |A|·|B| product terms, each appearing twice.

HXHZᵀ = [A | B]·[B ; A] = AB + BA = 2AB ⇒ 0 (mod 2)(mod 2)
不换位置without the swap: [A | B]·[A ; B] = A² + B² ≠ 0 (gross 上确实不为零)(indeed nonzero for gross)[B ; A] = 把 B 叠在 A 上面的 144 × 72 矩阵,即 HZᵀ;(i, j) 元 = X 检查 i 与 Z 检查 j 共享的比特数;2AB = 同一个矩阵出现两次[B ; A] = B stacked on top of A, a 144 × 72 matrix, i.e. HZᵀ; entry (i, j) = the number of qubits shared by X check i and Z check j; 2AB = the same matrix twice

第二行是换位置的理由:如果 Z 检查不交换 A、B,左层算的是 A·A、右层算的是 B·B,两块给出的是不同的矩阵,抵消不了。对 gross 的 A、B,A² + B² 确实不是零矩阵——这也是直觉教程3.2 节检查站的答案。reproduce.py 对交付的实例断言了两件事:hz == hstack([B.T, A.T])(Z 检查确实是交换后的转置),以及 (hx @ hz.T) % 2 全为零。

The second line is the reason for the swap: if the Z checks did not exchange A and B, the left layer would compute A·A and the right layer B·B — two different matrices that cannot cancel. For the gross A and B, A² + B² is indeed not the zero matrix — the answer to the intuition guide's §3.2 checkpoint. reproduce.py asserts both facts for the shipped instances: hz == hstack([B.T, A.T]) (the Z checks really are the swapped transposes) and that (hx @ hz.T) % 2 is all zeros.

检查站Checkpoint第 3 章Chapter 3
Z 检查 0 的六条腿里有一个 126 号比特。用 1.2 的编号词典和 3.1 的读法,它来自哪一项?Among Z check 0's six legs is qubit 126. By the index dictionary of §1.2 and the reading rule of §3.1, which term produces it?

对。126 ≥ 72,所以在右层;126 − 72 = 54 = 9·6 + 0,格子 (9, 0)。Z 检查的右层由 Aᵀ 管,A 的 x³ 倒着走是 x−3 = x9:从 (0, 0) 退三格绕到 (9, 0)。第三个选项说的是 X 检查 0 的腿,方向相反、层也不对。

Right. 126 ≥ 72, so it is in the right layer; 126 − 72 = 54 = 9·6 + 0, site (9, 0). The right layer of a Z check is governed by Aᵀ, and the x³ of A walked backwards is x−3 = x9: three steps back from (0, 0) wraps to (9, 0). The third option describes a leg of X check 0 — wrong direction and wrong layer.

先用 1.2 的词典把 126 翻译成 (层, i, j),再想:Z 检查的右层由谁管、方向是正是反?

First translate 126 into (layer, i, j) with the dictionary of §1.2, then ask: which polynomial governs a Z check's right layer, and is the direction forward or reversed?

关键想法Key idea

转置的任务是让 Z 检查沿反方向收回 X 检查伸出去的腿,两者才能在几何上配对;换位置的任务是让两层的相遇分别算 AB 与 BA,于是同一个乘积出现两次、模 2 消掉。gross 的整数重叠表里只有 0 和 2,是这个论证在 72 × 72 = 5184 对检查上的逐对兑现。

The transpose's job is to make a Z check pull back, in the reverse direction, the legs an X check stretches out, so the two can pair up geometrically; the swap's job is to make the two layers' meetings compute AB and BA respectively, so the same product appears twice and cancels mod 2. The gross integer overlap table containing only 0 and 2 is this argument cashed out on all 72 × 72 = 5184 pairs of checks.

第 4 章Chapter 4

缩到环面锚点:同一个构造器,[[18,2,3]]Shrink to the toric anchor: the same constructor, [[18,2,3]]

第 ④ 站切换格点:「Switch to A = 1 + x and B = 1 + y on a 3-by-3 torus. The same constructor now returns 18 qubits, two logical qubits, and exact distance three.」第 ⑤ 站接着高亮一条四腿的 X 检查。这一章把这个小实例的两张矩阵完整写出来,说清它检验了什么、没检验什么。 Stop ④ switches lattice: “Switch to A = 1 + x and B = 1 + y on a 3-by-3 torus. The same constructor now returns 18 qubits, two logical qubits, and exact distance three.” Stop ⑤ then highlights a four-leg X check. This chapter writes out the small instance's two matrices in full and says what it tests and what it does not.

4.1两项多项式,四腿检查,9 × 18 的矩阵Two-term polynomials, four-leg checks, 9 × 18 matrices

toric_L3 的输入是 l = m = 3,A = 1 + x(项 (0, 0) 与 (1, 0)),B = 1 + y(项 (0, 0) 与 (0, 1))。格子 9 个,比特 n = 2 × 9 = 18,编号规则不变:左层 (i, j) 是 3i + j,右层加 9。用第 2 章的读法算 X 检查 0(格子 (0, 0)):A 的两项给左层 (0, 0) → 0 和 (1, 0) → 3;B 的两项给右层 (0, 0) → 9 和 (0, 1) → 10。支撑 {0, 3, 9, 10},四条腿——第 ⑤ 站的原话:「The weight changes from six to four because sparsity follows the polynomial term count.」说人话:腿数就是项数,两项加两项等于四。Z 检查 0 按第 3 章的读法:Bᵀ 给左层 (0, 0) → 0 与 (0, −1) ≡ (0, 2) → 2;Aᵀ 给右层 (0, 0) → 9 与 (−1, 0) ≡ (2, 0) → 15。支撑 {0, 2, 9, 15}。构造器实际导出的两张矩阵(竖线左边 9 列是左层、右边 9 列是右层):

toric_L3's inputs are l = m = 3, A = 1 + x (terms (0, 0) and (1, 0)), B = 1 + y (terms (0, 0) and (0, 1)). Nine sites, n = 2 × 9 = 18 qubits, the same indexing rule: left (i, j) is 3i + j, right adds 9. Chapter 2's rule for X check 0 (site (0, 0)): the two terms of A give left (0, 0) → 0 and (1, 0) → 3; the two terms of B give right (0, 0) → 9 and (0, 1) → 10. Support {0, 3, 9, 10}, four legs — stop ⑤ verbatim: “The weight changes from six to four because sparsity follows the polynomial term count.” In plain words: legs = terms, and two plus two is four. Z check 0 by Chapter 3's rule: Bᵀ gives left (0, 0) → 0 and (0, −1) ≡ (0, 2) → 2; Aᵀ gives right (0, 0) → 9 and (−1, 0) ≡ (2, 0) → 15. Support {0, 2, 9, 15}. The two matrices the constructor actually exports (the 9 columns left of the bar are the left layer, the 9 on the right the right layer):

HX = [ 1+x | 1+y ]
100100000 | 110000000
010010000 | 011000000
001001000 | 101000000
000100100 | 000110000
000010010 | 000011000
000001001 | 000101000
100000100 | 000000110
010000010 | 000000011
001000001 | 000000101
HZ = [ (1+y)ᵀ | (1+x)ᵀ ]
101000000 | 100000100
110000000 | 010000010
011000000 | 001000001
000101000 | 100100000
000110000 | 010010000
000011000 | 001001000
000000101 | 000100100
000000110 | 000010010
000000011 | 000001001

第一行就是刚算的 {0, 3, 9, 10} 与 {0, 2, 9, 15}。每行恰四个 1;每列恰两个 1(每个比特被两条 X 检查、两条 Z 检查碰到)。把左层比特想成横边、右层比特想成竖边(图 4.1 之后的图 4.2 逐条画出这个对应),X 检查就是《从高考数学到 Toric Code》5.1 节的星形算符,Z 检查就是面算符——直觉教程5.1 节说的「BB(1 + x, 1 + y) 就是环面码」在这两张矩阵上是逐位成立的。

The first rows are exactly the {0, 3, 9, 10} and {0, 2, 9, 15} just computed. Every row has exactly four 1s; every column exactly two (each qubit meets two X checks and two Z checks). Think of left-layer qubits as horizontal edges and right-layer qubits as vertical edges (Figure 4.2, after Figure 4.1, draws this correspondence edge by edge), and the X checks are the star operators of “From High-School Math to the Toric Code”, §5.1, the Z checks the face operators — the intuition guide's §5.1 claim “BB(1 + x, 1 + y) is the toric code” holds bit for bit on these two matrices.

0 3 9 10 0 2 9 15 i=0 i=1 i=2 j=0 j=1 j=2
4.1 toric_L3 的 3 × 3 环面(实心圆 = 左层,空心圆 = 右层,小方块 = 各格子的检查):X 检查 0(橙)= {0, 3, 9, 10},Z 检查 0(蓝)= {0, 2, 9, 15}。两者共享 0 与 9 两个比特。Z 检查的两条虚线腿(2 与 15)是绕回边缘的反向平移。 The 3 × 3 torus of toric_L3 (filled circle = left layer, hollow circle = right layer, small squares = each site's checks): X check 0 (orange) = {0, 3, 9, 10}, Z check 0 (blue) = {0, 2, 9, 15}. They share the two qubits 0 and 9. The Z check's two dashed legs (2 and 15) are reversed translations wrapping around the edge.

从错开的两层点到环面的边。图 4.1 画的是构造器的坐标:每个格子两个比特点。环面码的画法不同:比特在边上,检查在顶点和小方格上。把每个格子 (i, j) 看成环面码的一个顶点(格线的交叉点),对应规则只有两条:左层比特 (i, j)(编号 3i + j)是从顶点 (i − 1, j) 到 (i, j) 的那条横边;右层比特 (i, j)(编号 9 + 3i + j)是从顶点 (i, j − 1) 到 (i, j) 的那条竖边。坐标按 mod 3 算,所以 i = 0 的横边从顶点 (2, j) 绕回到 (0, j)。环面码里的星是连在一个顶点上的四条边,面是围成一个小方格的四条边。

From the two offset layers to the edges of the torus. Figure 4.1 draws the constructor's coordinates: two qubit dots per site. The toric code is drawn differently: qubits sit on edges, checks on vertices and small squares. Read each site (i, j) as a vertex of the toric code (a crossing of grid lines); then two rules give the correspondence: the left-layer qubit (i, j) (index 3i + j) is the horizontal edge from vertex (i − 1, j) to (i, j); the right-layer qubit (i, j) (index 9 + 3i + j) is the vertical edge from vertex (i, j − 1) to (i, j). Coordinates are taken mod 3, so the horizontal edge with i = 0 runs from vertex (2, j) around to (0, j). In the toric code a star is the four edges meeting at one vertex and a face is the four edges around one small square.

拿一颗星来验证。X 检查 (1, 1):A = 1 + x 给左层 (1, 1) → 4 与 (2, 1) → 7,B = 1 + y 给右层 (1, 1) → 13 与 (1, 2) → 14。按规则,4 是顶点 (0, 1)–(1, 1) 之间的横边,7 是 (1, 1)–(2, 1),13 是 (1, 0)–(1, 1) 之间的竖边,14 是 (1, 1)–(1, 2):四条边都以顶点 (1, 1) 为端点,正是顶点 (1, 1) 的星。再验证一块面。Z 检查 (2, 2):Bᵀ = 1 + y⁻¹ 给左层 (2, 2) → 8 与 (2, 1) → 7,Aᵀ = 1 + x⁻¹ 给右层 (2, 2) → 17 与 (1, 2) → 14。8 是 j = 2 那条上边,7 是 j = 1 那条下边,17 是 i = 2 那条右边,14 是 i = 1 那条左边:正好围成角点为 (1, 1) 与 (2, 2) 的小方格。一般地,X 检查 (i, j) 是顶点 (i, j) 的星,Z 检查 (i, j) 是右上角为顶点 (i, j) 的面。图 4.1 的 X 检查 0 = {0, 3, 9, 10} 也是一颗星(顶点 (0, 0) 的),只是其中 0 与 9 两条边绕过了边界;Z 检查 0 = {0, 2, 9, 15} 是右上角为 (0, 0) 的面,四条边都跨在边界上。

Check one star. X check (1, 1): A = 1 + x gives left (1, 1) → 4 and (2, 1) → 7, B = 1 + y gives right (1, 1) → 13 and (1, 2) → 14. By the rules, 4 is the horizontal edge between vertices (0, 1) and (1, 1), 7 joins (1, 1) and (2, 1), 13 is the vertical edge between (1, 0) and (1, 1), 14 joins (1, 1) and (1, 2): all four edges end at vertex (1, 1), so this is the star of vertex (1, 1). Now one face. Z check (2, 2): Bᵀ = 1 + y⁻¹ gives left (2, 2) → 8 and (2, 1) → 7, Aᵀ = 1 + x⁻¹ gives right (2, 2) → 17 and (1, 2) → 14. 8 is the top side at j = 2, 7 the bottom side at j = 1, 17 the right side at i = 2, 14 the left side at i = 1: together they surround the small square with corners (1, 1) and (2, 2). In general X check (i, j) is the star of vertex (i, j) and Z check (i, j) is the face whose top-right corner is vertex (i, j). X check 0 = {0, 3, 9, 10} of Figure 4.1 is also a star (of vertex (0, 0)); two of its edges, 0 and 9, wrap around the boundary. Z check 0 = {0, 2, 9, 15} is the face with top-right corner (0, 0), and all four of its edges straddle the boundary.

Z(2,2) 3 4 5 3 6 7 8 6 0 1 2 0 10 11 9 13 14 12 16 17 15 10 11 9 X(1,1) i=0 j=0 i=1 j=1 i=2 j=2 i=3≡0 j=3≡0
4.2 toric_L3 的 18 个比特画成 3 × 3 环面的 18 条边。实心点 = 顶点 (i, j);i = 3 那一列和 j = 3 那一行是 i = 0、j = 0 的重复画法(环面上 3 ≡ 0),用空心点、虚线和灰色编号表示,每条虚线边就是另一侧同编号的那条边。横边 = 左层比特 0–8,竖边 = 右层比特 9–17,边旁的数字是比特编号。橙色粗边 = X 检查 (1, 1),即顶点 (1, 1)(橙圈)的星 = {4, 7, 13, 14};蓝色粗边与浅蓝方块 = Z 检查 (2, 2),即角点 (1, 1)、(2, 2) 围成的面 = {7, 8, 14, 17}。两者共享 7 与 14 两条边(这两条画成橙色),个数为偶数,所以两条检查对易。 The 18 qubits of toric_L3 drawn as the 18 edges of a 3 × 3 torus. Filled dots = vertices (i, j); the column i = 3 and the row j = 3 repeat i = 0 and j = 0 (on the torus 3 ≡ 0) and are drawn with hollow dots, dashed lines and grey labels; each dashed edge is the edge with the same number on the other side. Horizontal edges = left-layer qubits 0–8, vertical edges = right-layer qubits 9–17; the number beside an edge is its qubit index. Thick orange edges = X check (1, 1), the star of vertex (1, 1) (orange ring) = {4, 7, 13, 14}; thick blue edges and the pale blue square = Z check (2, 2), the face with corners (1, 1) and (2, 2) = {7, 8, 14, 17}. They share the two edges 7 and 14 (drawn orange), an even number, so the two checks commute.

数字全部由机器现算:两张矩阵 9 × 18,秩各为 8(九行里有一条依赖——把九条 X 检查全乘起来是恒等,即环面码那条 ∏A = I 的恒等式,见同一教程 5.3 节),k = 18 − 8 − 8 = 2;QEC-Bank 的精确枚举器(方法名 exact-css-enum)穷举得 d = 3。所以 toric_L3 是 [[18,2,3]],三个数字全部 verified。下面两个实验台:先用环面码的账本重数一遍 n、检查数与 k(第一个实验台打开时选的是 L = 3,即这里的 3 × 3 环面:18 条边 = 18 个比特,9 颗星、9 块面;点「逐颗相乘」看九颗星乘起来为什么是恒等),再在 BB 构造器里点这条四腿检查。

Every number is machine-computed: the two matrices are 9 × 18, each of rank 8 (one dependency among the nine rows — multiplying all nine X checks gives the identity, the toric code's ∏A = I identity of the same guide's §5.3), k = 18 − 8 − 8 = 2; the QEC-Bank exact enumerator (method name exact-css-enum) finds d = 3 by exhaustion. So toric_L3 is [[18,2,3]], all three numbers verified. Two benches follow: first recount n, the number of checks and k with the toric ledger (the first bench opens at L = 3, the 3 × 3 torus here: 18 edges = 18 qubits, 9 stars, 9 faces; press “multiply one by one” to see why the nine stars multiply to the identity), then click this four-leg check inside the BB constructor.

4.2锚点检验什么,不检验什么What the anchor tests, and what it does not

第 ④ 站的最后一句很谨慎:「This anchors the convention without reducing the gross block to toric copies.」两层意思。检验什么:约定。移位的方向(S 把第 i 格送到 i + 1 还是 i − 1)、转置有没有做、两块有没有交换、编号先数 j 还是先数 i——任何一处弄错,这个小例子都会立刻露馅:忘掉转置或两块不交换,HXHZᵀ 就不为零——两个秩仍是 8 + 8,可这已经不是一个合法的 CSS 码。gross 太大,肉眼看不出这些错误;toric_L3 小到能和《从高考数学到 Toric Code》里的账本逐位比对。不检验什么:gross 码不是六份环面码拼起来的。k = 12 = 6 × 2 只是一个巧合的乘法,商空间 R/(A,B) 是 6 维(见第 5 章)并不意味着有 6 个互相独立的环面。文献里有两种相关但不同的说法:Sahay 等人用对称性把译码问题的一部分约化到环面状的圆柱上做匹配(sahay2026matching,据文献扫描报告,登记待补——意思是 QEC-Bank 的引文登记表里这篇还没有完整书目信息,题目与作者取自 QEC-Bank 自己的文献扫描报告),Chen 等人则在更一般的 BB 数据里发现「拓扑受挫」(chen2025anyon,同样登记待补)——前者是译码器的词典,后者说明有限 BB 码不能简单当作环面码的堆叠。这两条都记录在表示阶梯侧面里。

Stop ④ ends carefully: “This anchors the convention without reducing the gross block to toric copies.” Two layers of meaning. What it tests: conventions. The direction of the shift (does S send site i to i + 1 or i − 1), whether the transpose was applied, whether the two blocks were swapped, whether indices run through j first or i first — get any of these wrong and the small example gives you away at once: forget the transpose or skip the swap and HXHZᵀ is nonzero — the ranks stay 8 + 8, but it is no longer a valid CSS code. Gross is too large to see such mistakes by eye; toric_L3 is small enough to compare bit by bit against the ledger in “From High-School Math to the Toric Code”. What it does not test: that the gross code is not six toric codes glued together. k = 12 = 6 × 2 is a coincidental multiplication; the quotient R/(A,B) having dimension 6 (Chapter 5) does not mean six independent tori exist. The literature holds two related but different statements: Sahay et al. use symmetries to reduce part of the decoding problem to toric-like cylinders where matching applies (sahay2026matching, from the scout report, registration pending: the QEC-Bank citation registry does not yet hold full bibliographic data for it, and the title and authors come from the QEC-Bank's own literature scan), while Chen et al. find “topological frustration” in more general BB data (chen2025anyon, also registration pending) — the former is a decoder dictionary, the latter says finite BB codes cannot simply be treated as stacks of toric codes. Both are recorded in the representation ladder facet.

grosstoric_L3
l × m12 × 6 = 72 格sites3 × 3 = 9 格sites
A / Bx³+y+y² / y³+x+x²1+x / 1+y
HX、HZ 形状shape of HX, HZ72 × 1449 × 18
检查重量 = |A| + |B|check weight = |A| + |B|3 + 3 = 62 + 2 = 4
每个比特被碰到checks per qubit3 X + 3 Z2 X + 2 Z
秩rank66 / 668 / 8
k = n − rank HX − rank HZ144 − 132 = 1218 − 16 = 2
d12 · bounded(文献下界 + 机器上界literature lower + machine upper)3 · verified(exact-css-enum)
导览站tour stops① ② ③ ⑥ ⑦ ⑧④ ⑤
关键想法Key idea

锚点的价值在于「同一个构造器」:改的只是四个输入(l、m、A、B),代码一行没变。它在一个能手算、能穷举的尺寸上把移位方向、转置、交换、编号四条约定全部锁死,然后这四条约定原样用到 gross 上。它证明的是约定正确,不是 gross「就是环面码」。

The anchor's value lies in “the same constructor”: only the four inputs (l, m, A, B) change, not one line of code. At a size one can compute by hand and enumerate exhaustively, it pins down all four conventions — shift direction, transpose, swap, indexing — and those same conventions are then applied unchanged to gross. It proves the conventions are right, not that gross “is the toric code”.

第 5 章Chapter 5

回到秩亏损:72 行检查只有 66 行独立Back to the rank defect: 72 rows of checks, only 66 independent

第 ⑥ 站切回 gross,高亮 X 检查 1:「Back on gross, 72 rows of each Pauli type have rank 66 rather than 72. The two six-dimensional deficits leave twelve logical qubits. Hovering another check changes incidence, not rank: k comes from the global quotient generated by A and B.」这一章把「66」「6」「12」三个数字和「悬停不改变秩」这句话说清楚。 Stop ⑥ returns to gross and highlights X check 1: “Back on gross, 72 rows of each Pauli type have rank 66 rather than 72. The two six-dimensional deficits leave twelve logical qubits. Hovering another check changes incidence, not rank: k comes from the global quotient generated by A and B.” This chapter makes the three numbers 66, 6, 12 and the sentence “hovering does not change rank” precise.

5.1数一数:66 + 66 = 132,144 − 132 = 12Count: 66 + 66 = 132, 144 − 132 = 12

HX 有 72 行,但其中只有 66 行线性独立——rank HX = 66,意思是有 6 条 X 检查可以由其他检查相乘得到,它们不提供新信息。HZ 同样 rank = 66。直觉教程4.1 节证过两个秩必然相等(转置与改名不改变秩)。CSS 码的稳定子秩是两者之和 66 + 66 = 132,因为纯 X 的行与纯 Z 的行不可能互相抵消——reproduce.py 直接断言了 gf2.rank(checkmatrix.stab) == 132。于是 k = 144 − 132 = 12。(「k = n − 独立检查数」还要一个前提:没有哪几条检查的乘积等于 −I,否则没有状态能通过全部检查。CSS 码自动满足:全 X 的检查相乘仍是不带负号的全 X,全 Z 同理。)这里的 gf2.rank 就是第 ⑥ 站出处标签里的方法:在 GF(2) 上做高斯消元,机器现算。

HX has 72 rows, but only 66 of them are linearly independent — rank HX = 66, meaning 6 X checks are products of other checks and carry no new information. HZ likewise has rank 66. The intuition guide's §4.1 proved the two ranks must be equal (transposing and renaming preserve rank). The CSS stabilizer rank is their sum, 66 + 66 = 132, because pure-X rows and pure-Z rows can never cancel each other — reproduce.py asserts gf2.rank(checkmatrix.stab) == 132 directly. So k = 144 − 132 = 12. (“k = n − number of independent checks” also needs one precondition: no product of checks may equal −I, or no state would pass them all. CSS codes satisfy it automatically: a product of all-X checks is again all-X with no minus sign, likewise for all-Z.) That gf2.rank is the method named in stop ⑥'s provenance label: Gaussian elimination over GF(2), recomputed by the machine.

rank HX = rank HZ = 66
亏损deficit = 72 − 66 = 6
k = n − 2·66 = 144 − 132 = 12
toric_L3: rank = 8, 亏损deficit = 9 − 8 = 1, k = 18 − 16 = 2rank = 独立行数;72 = 每种检查的行数 = lm;亏损 = 多余检查的条数 = dim R/(A,B);n = 144 数据比特;k = 逻辑比特数 = 2 × 亏损rank = number of independent rows; 72 = rows of each check type = lm; deficit = number of redundant checks = dim R/(A,B); n = 144 data qubits; k = logical qubits = 2 × deficit

对照环面锚点:那里 9 行只有 8 行独立,亏损 1,就是「所有星乘起来是恒等」那一条恒等式;gross 的亏损是 6,也就是有 6 条这样的恒等式,但它们不再有「全乘起来」这么简单的形状——它们是 R/(A,B) 这个 6 维商空间环 R = 所有 x、y 的多项式,按 x¹² = 1、y⁶ = 1 计算(即全部 72 × 72 的「平移组合」矩阵)。把 R 里所有形如 uA + vB 的多项式当成零之后剩下的空间,记 R/(A,B);它的维数就是秩的亏损。直觉教程 4.2 节。的 6 个方向(直觉教程4.2 节)。reproduce.py 也断言了 torus_size − gf2.rank(hx) == 6。

Compare the toric anchor: there 9 rows have only 8 independent ones, deficit 1, which is the single identity “all stars multiply to the identity”; gross has deficit 6, so there are 6 such identities, but they no longer have the simple shape “multiply everything” — they are the 6 directions of the 6-dimensional quotient spaceThe ring R = all polynomials in x and y, computed with x¹² = 1, y⁶ = 1 (i.e. all 72 × 72 “combinations of translations”). What remains of R after every polynomial of the form uA + vB is set to zero, written R/(A,B); its dimension is the rank deficit. Intuition guide §4.2. R/(A,B) (intuition guide §4.2). reproduce.py also asserts torus_size − gf2.rank(hx) == 6.

5.2悬停换检查,秩不变:k 是全局的Hovering changes the check, not the rank: k is global

第 ⑥ 站故意高亮 X 检查 1 而不是 0,让你看到「换一条检查,支撑变了」:X 检查 1 = {2, 3, 19, 76, 79, 85},与 X 检查 0 的 {1, 2, 18, 75, 78, 84} 是同一个形状挪了一格。但秩没有变——秩不是某一条检查的性质,而是全部 72 条检查放在一起的性质:它们张成的空间有多少维。你在格点上无论盯着哪一条检查、哪个比特,都看不出 k;k 只能从 A、B 生成的理想ideal:环 R 里所有能写成 uA + vB 的多项式的集合。[A | B] 的像(所有能写成 [A | B] 乘某个向量的结果)就是它,秩就是它的维数。 (A, B) 占了 72 维里的多少维算出来。说人话:局部看形状,全局看秩。

Stop ⑥ deliberately highlights X check 1 rather than 0, so you see “change the check, the support changes”: X check 1 = {2, 3, 19, 76, 79, 85}, the same shape as X check 0's {1, 2, 18, 75, 78, 84} moved one step. But the rank did not change — rank is not a property of one check but of all 72 checks together: how many dimensions they span. Stare at whichever check or qubit on the lattice you like, k is invisible; it can only be computed from how many of the 72 dimensions the idealThe set of all polynomials in R of the form uA + vB. It is the image of [A | B] (everything of the form [A | B] times some vector), and the rank is its dimension. (A, B) generated by A and B occupies. In plain words: shape is local, rank is global.

最有说服力的证据是直觉教程5.5 节讲过的:把完全相同的 A、B 放到 9 × 6 的环面上(QEC-Bank 条目 bb108),每条检查的形状一模一样,还是六条腿,可秩亏损从 6 变成 4,k 从 12 掉到 8。形状没变,k 变了——因为 x⁹ = 1 与 x¹² = 1 是两个不同的环,同一对多项式在里面「占」的比例不同。在第 2 章的 BB 构造器上可以亲手看到:保持 gross 的两个多项式不动,把 l 的滑杆从 12 拉到 9,读数里每条检查仍是 6 条腿,k 却从 12 变成 8;或者在「A 的项」里只改一个指数:只要改完后 A 的三项在 mod 12、mod 6 之下仍互不相同,项数、腿数就都不变,k 却会跳。这个前提不能省:把 y 改成 y²,得到 A = x³ + y² + y²,两个 y² 相加为 0(1 + 1 = 0)而相消,A = x³,每条检查只剩 4 条腿。本篇的脚本在固定的 12 × 6 环面上逐个试过(B 不动):只改 A 的一个指数、三项仍互不相同的 46 种改法里,k 只取 0、8、12;把 A 的一整项换成任意别的项(三项仍互不相同),k 只取 0、4、8、12。这些 k 值只针对 12 × 6 这一个环面。

The most convincing evidence is from the intuition guide's §5.5: put the identical A and B on a 9 × 6 torus (QEC-Bank entry bb108), every check has exactly the same shape, still six legs, yet the rank deficit drops from 6 to 4 and k from 12 to 8. Same shape, different k — because x⁹ = 1 and x¹² = 1 define two different rings, and the same pair of polynomials “occupies” a different share of each. You can see it yourself on Chapter 2's BB constructor: keep gross's two polynomials, drag the l slider from 12 to 9, and the readout still shows six legs per check while k drops from 12 to 8; or change a single exponent in “A terms”: as long as A's three terms stay distinct modulo 12 and 6, the term count and leg count stay the same, yet k jumps. The condition matters: changing y to y² gives A = x³ + y² + y², the two y² add to 0 (1 + 1 = 0) and cancel, so A = x³ and every check has only 4 legs. This guide's script tried every case on the fixed 12 × 6 torus (B unchanged): over the 46 single-exponent changes of A that keep three distinct terms, k is 0, 8 or 12; replacing one whole term of A by any other term (still three distinct terms), k is 0, 4, 8 or 12. These k values are for the 12 × 6 torus only.

文献与机器的分工Literature versus machine

第 ⑥ 站引用两篇文献:bravyi2024bicycle(已登记:S. Bravyi, A. W. Cross, J. M. Gambetta, D. Maslov, P. Rall, T. J. Yoder, “High-Threshold and Low-Overhead Fault-Tolerant Quantum Memory”, 2024)给出 gross 的参数与 Table 3;postema2025existence(据文献扫描报告:J. J. Postema, S. J. J. M. F. Kokkelmans, “Existence and Characterisation of Bivariate Bicycle Codes”, 2025,登记待补)把「秩亏损 = 商空间维数」发展成一套用公因子与公共根预测 k 的方法,并指出:更大的商空间可以增大 k,但同样的公共结构也可能制造短的非平凡圈、压低距离;局域性限制允许的单项式偏移。这一段是文献叙述,QEC-Bank 机器重算的只有 gross 与 toric_L3 的秩、亏损与 k。

Stop ⑥ cites two papers: bravyi2024bicycle (registered: S. Bravyi, A. W. Cross, J. M. Gambetta, D. Maslov, P. Rall, T. J. Yoder, “High-Threshold and Low-Overhead Fault-Tolerant Quantum Memory”, 2024) for gross's parameters and Table 3; postema2025existence (from the scout report: J. J. Postema, S. J. J. M. F. Kokkelmans, “Existence and Characterisation of Bivariate Bicycle Codes”, 2025, registration pending) develops “rank deficit = quotient dimension” into a method predicting k from common factors and common roots, and notes the tension: a larger quotient can raise k, but the same shared structure may create short nontrivial cycles and lower distance; locality constraints restrict the permitted monomial offsets. This paragraph is literature narrative; what the QEC-Bank machine recomputes is only the ranks, deficits and k of gross and toric_L3.

关键想法Key idea

导览让你在 72 条检查之间悬停,正是为了让你相信「看不出来」:k = 12 不写在任何一条检查上,而写在 66 这个秩里。三项不决定 k,指数与环面尺寸才决定;设计 BB 码就是在「让 (A, B) 少占一点环」和「别让距离塌掉」之间搜索。

The tour lets you hover across all 72 checks precisely so you believe “it cannot be seen”: k = 12 is written on no single check but in the rank 66. Three terms do not fix k; exponents and torus size do; designing a BB code is a search between “let (A, B) occupy less of the ring” and “do not let the distance collapse”.

第 6 章Chapter 6

最后两站:静态码不是电路,平移的逻辑作用要另算The last two stops: a static code is not a circuit, and what a translation does to the logical qubits is computed elsewhere

前六站都在说「有什么」,最后两站专门说「没有什么」。第 ⑦ 站:播放器只认证稳定子的关联,深度 7 的电路与 0.8% 的阈值属于另一个实验。第 ⑧ 站:环面平移把所有检查的支撑映到自身,是码的自同构;它一定对逻辑比特做了某个操作,但导览只验证了「是自同构」这一步,做的是哪个逻辑操作要另算。两站的出处标签不同:⑦ 是 curated,⑧ 是 verified。 The first six stops say “what there is”; the last two say “what there is not”. Stop ⑦: the player certifies stabilizer incidence only; the depth-7 circuit and the 0.8% threshold belong to a separate experiment. Stop ⑧: torus translations map every check support onto the set of supports, so they are code automorphisms; each one does act on the logical qubits somehow, but the tour verifies only the automorphism step, and which logical operation it performs is computed elsewhere. The two stops carry different labels: ⑦ is curated, ⑧ is verified.

6.1播放器只认证关联:条目没有导出的五样东西The player certifies incidence only: five things the entry does not export

第 ⑦ 站原话:「The explorer certifies stabilizer incidence only. It does not draw ancillas, CNOT order, detectors, or hook propagation. The reported depth-seven extraction and 0.8% family threshold belong to a separate standard-circuit-noise plus BP-OSD experiment.」说人话:你在屏幕上看到的每条腿,说的只是「这条检查碰这个比特」,没有说「什么时候碰、用哪个辅助比特碰、碰的顺序是什么、测出来的读数怎样组合成探测器」。这四件事合起来叫症状提取电路,QEC-Bank 的 BB 条目没有交付它。QEC-Bank 的推导页把缺的东西列成五条:

Stop ⑦ verbatim: “The explorer certifies stabilizer incidence only. It does not draw ancillas, CNOT order, detectors, or hook propagation. The reported depth-seven extraction and 0.8% family threshold belong to a separate standard-circuit-noise plus BP-OSD experiment.” In plain words: every leg on the screen says only “this check touches this qubit”, not “when it touches it, through which ancilla, in what order, or how the measured bits combine into detectors”. Those four things together are the syndrome-extraction circuit, and the QEC-Bank BB entry does not ship one. The QEC-Bank derivation page lists what is missing as five items:

条目未导出的Not exported by the entry它是什么What it is文献里有什么What the literature has
辅助比特坐标ancilla coordinates每条检查由哪个额外比特来测;gross 需要 144 个which extra qubit measures each check; gross needs 144Bravyi 等人为两层耦合给出一个 7 层 CNOT 的提取电路(bravyi2024bicycle);Shaw 与 Terhal 用「变形电路」把度从 6 降到 5、用 6 轮 CNOT(shaw2025morphing,据文献扫描报告,登记待补)——两者的硬件图和探测器模型都不同。「7」是那一个调度的性质,不是所有六腿矩阵的性质。Bravyi et al. give a 7-layer CNOT extraction for the two-layer connectivity (bravyi2024bicycle); Shaw and Terhal use “morphing circuits” to lower the degree from 6 to 5 with 6 CNOT rounds (shaw2025morphing, from the scout report, registration pending) — both the hardware graph and the detector model differ. The “7” is a property of that one schedule, not of every weight-six matrix.
七层门序seven-layer gate order六条腿的 CNOT 谁先谁后;顺序决定钩子错误(辅助比特上的一个故障经过后面的 CNOT 扩散成数据比特上的两个或更多错误)怎么传播which of the six legs' CNOTs go first; order decides how hook errors (one fault on an ancilla spread by the later CNOTs into two or more errors on data qubits) propagate
重置与测量操作reset and measurement operations辅助比特何时清零、何时读出when ancillas are reset and read out
探测器定义detector definitions哪些读数的乘积应当确定、比较相邻两轮得到「变化」which products of readouts are deterministic; comparing consecutive rounds yields “change” events
电路码距见证circuit-distance witness最小的、不被探测却导致逻辑错误的故障集合有多大the size of the smallest undetected fault set that causes a logical error

所以要分清三种「距离」:静态码距(数据比特上最轻的非平凡逻辑 Pauli——gross 的 12,bounded);电路码距(最小的不被探测却导致逻辑失败的故障集合——可以比 12 小,取决于调度);译码器找到的失败重量(某个具体搜索或译码器找到的最小失败——找不到不等于不存在)。0.8% 的阈值和这三种距离都不是一回事:它是一整套实验流程的数字。Bravyi 等人的论文摘要(arXiv:2308.07915)原话是「an error threshold of 0.8% for the standard circuit-based noise model」,对象是他们那一族 BB 码,条件是标准电路噪声(每个门、空闲、制备、读出都可能出错)、他们的深度 7 电路与探测器构造、BP-OSD 译码器(置信传播加有序统计后处理),数值由模拟得到——直觉教程6.4 节的五个限定项,与《译码器 · 高中数学版》阈值账本规则同一套读法。播放器上没有任何一个像素与这五件事有关,所以第 ⑦ 站的标签是 curated:它是文献叙述,不是机器重算。

So keep three kinds of “distance” apart: the static code distance (the lightest nontrivial logical Pauli on the data qubits — gross's 12, bounded); the circuit distance (the smallest undetected fault set that causes a logical failure — it can be smaller than 12, depending on the schedule); and the decoder-found failure weight (the smallest failure some specific search or decoder found — not finding one does not mean none exists). The 0.8% threshold is none of these three: it is a number about a whole experimental pipeline. The abstract of Bravyi et al. (arXiv:2308.07915) says “an error threshold of 0.8% for the standard circuit-based noise model”, for their family of BB codes, under standard circuit noise (every gate, idle step, preparation and readout may fail), with their depth-7 circuit and detector construction and the BP-OSD decoder (belief propagation plus ordered-statistics post-processing), obtained from simulations — the five qualifiers of the intuition guide's §6.4, read with the same threshold-ledger rules as “Decoders · High-School Edition”. Not one pixel of the player concerns any of these five things, which is why stop ⑦ is labelled curated: literature narrative, not machine recomputation.

6.2平移是自同构:Z 检查 0 挪一格就是 Z 检查 1Translations are automorphisms: Z check 0 moved one step is Z check 1

第 ⑧ 站高亮播放器编号 73,即 Z 检查 1(格子 (0, 1))。按第 3 章的读法算它的支撑:{4, 61, 67, 72, 77, 127}。把它和 Z 检查 0 的 {3, 60, 66, 76, 77, 126} 并排放:3 → 4,60 → 61,66 → 67,76 → 77,126 → 127——每个编号加 1,就是每条腿往上挪一格(j + 1);剩下那条 77 → 72:右层 (0, 5) 往上一格绕回 (0, 0),编号从 77 跳到 72。六条腿一起挪,形状不变。这就是原话「Torus translations preserve these supports as a set」的意思:对所有 144 个比特同时做平移 y(两层各自的 (i, j) → (i, j + 1)),Z 检查 0 的支撑恰好变成 Z 检查 1 的支撑,Z 检查 1 变成 Z 检查 2……72 条检查只是被重新编号,作为一个集合一条也没多、一条也没少。X 检查同理。

Stop ⑧ highlights player index 73, i.e. Z check 1 (site (0, 1)). Chapter 3's rule gives its support: {4, 61, 67, 72, 77, 127}. Set it beside Z check 0's {3, 60, 66, 76, 77, 126}: 3 → 4, 60 → 61, 66 → 67, 76 → 77, 126 → 127 — each index plus 1, i.e. each leg moved one step up (j + 1); the remaining 77 → 72: right (0, 5) moved one up wraps to (0, 0), and the index jumps from 77 to 72. All six legs move together; the shape is unchanged. That is what “Torus translations preserve these supports as a set” means: translate all 144 qubits at once by y ((i, j) → (i, j + 1) in each layer) and the support of Z check 0 becomes exactly the support of Z check 1, Z check 1 becomes Z check 2, and so on. The 72 checks are merely renumbered; as a set, not one is added or lost. Likewise for the X checks.

3 60 66 76 77 126 4 61 67 72 77 127 i=0 i=1 i=2 i=3 i=4 i=5 i=6 i=7 i=8 i=9 i=10 i=11 j=0 j=1 j=2 j=3 j=4 j=5
6.1 底图同图 1.1:实心圆 = 左层比特,空心圆 = 右层比特,橙 / 蓝小方块 = 各格子的 X / Z 检查。Z 检查 0(格子 (0, 0))与 Z 检查 1(格子 (0, 1)),两个放大的蓝色方块,各自的腿以虚线或实线连到标了编号的蓝色大圆:同一个六腿形状往上挪了一格。五条腿的编号各加 1,第六条腿从 77(右层 j = 5)绕回 72(右层 j = 0)。 Background as in figure 1.1: filled circle = left-layer qubit, hollow circle = right-layer qubit, small orange / blue squares = each site's X / Z check. Z check 0 (site (0, 0)) and Z check 1 (site (0, 1)), the two enlarged blue squares, each joined by solid or dashed legs to numbered large blue circles: one six-leg shape moved one step up. Five legs' indices increase by 1; the sixth wraps from 77 (right layer, j = 5) to 72 (right layer, j = 0).

写成矩阵,这就是 reproduce.py 里被断言的两条恒等式。令 P 是 72 × 72 的平移矩阵(x 或 y),对两层同时平移就是 144 × 144 的分块对角矩阵 diag(P, P):

In matrix form, this is the pair of identities asserted in reproduce.py. Let P be the 72 × 72 translation matrix (x or y); translating both layers at once is the 144 × 144 block-diagonal matrix diag(P, P):

HX · diag(P, P) = P · HX · HZ · diag(P, P) = P · HZ  (P = x 或or y)左边 = 先平移所有比特再看检查(列被置换);右边 = 检查被重新编号(行被置换);两边相等 ⇔ 平移把稳定子群映到自身。成立的理由:P 与 A、B、Aᵀ、Bᵀ 都对易(它们都是 x、y 的多项式)。Left = translate all qubits, then look at the checks (columns permuted); right = the checks renumbered (rows permuted); equality ⇔ the translation maps the stabilizer group to itself. Why it holds: P commutes with A, B, Aᵀ, Bᵀ (all are polynomials in x, y).

于是环面平移是码的自同构automorphism:把稳定子群映到自身的物理操作(这里是比特的一个置换)。它保证码空间不变,但对逻辑比特做了什么需要另算。。第 ⑧ 站的后半句才是重点:「That alone does not name a logical gate: the induced action on the twelve logical Pauli pairs and the routing cost must still be computed for the chosen block.」说人话:把 144 个比特整体挪一格,码空间确实回到自己。一个把稳定子群映回自身的比特置换,必然在 12 个逻辑比特上做某个 Clifford 操作(把每个逻辑 Pauli 变成另一个逻辑 Pauli 的操作,例如 H、S、CNOT;恒等也算一种)。问题是哪一个:上面的矩阵恒等式只证明码空间不变,算不出它对 24 个逻辑 Pauli(12 对 X̄、Z̄)的作用;导览和 QEC-Bank 的证书都没有算这一步,所以在 QEC-Bank 里,它的具体逻辑作用和实现代价都还是「未计算」。文献里算过:Bravyi 等人(arXiv:2308.07915 v2,9.2 节「Logical Gates based on Automorphisms」)选了一组以单项式编号的逻辑算符,平移 s 把编号为 n 的 X̄ 换成编号为 s·n 的 X̄(Z̄ 同理),于是每个平移都是一个逻辑 CNOT 电路(最多差一个逻辑 Pauli 修正);作者还写道除 s = 1 外没有哪个平移作用成逻辑恒等,但对 gross 这一句不成立:逐一检验 72 个平移对全部逻辑 X̄、Z̄ 的作用,x⁶(沿长为 12 的方向平移半圈)作用成逻辑恒等,其余 70 个非恒等平移都作用非平凡(检验方法见直觉教程 6.5 节)。作者也说,还不清楚怎样把这些 CNOT 用于有用的计算。而且「挪一格」在真机上是把每个比特搬到邻居的位置,或者等价地把 144 根连线全部重接——布线代价要另算。QEC-Bank 因此只把它记为物理自同构(verified),不记为逻辑操作;直觉教程6.5 节说的正是这件事,逻辑操作侧面(逻辑操作)记录的五条操作全部是 claimed。

So torus translations are automorphismsA physical operation (here a permutation of qubits) that maps the stabilizer group to itself. It guarantees the code space is preserved, but what it does to the logical qubits must be computed separately. of the code. The second half of stop ⑧ is the point: “That alone does not name a logical gate: the induced action on the twelve logical Pauli pairs and the routing cost must still be computed for the chosen block.” In plain words: shift all 144 qubits one step and the code space does return to itself. A qubit permutation that maps the stabilizer group to itself necessarily performs some Clifford operation on the 12 logical qubits (an operation that turns every logical Pauli into another logical Pauli, such as H, S, CNOT; the identity counts too). The question is which one: the matrix identity above proves only that the code space is preserved and cannot give the action on the 24 logical Paulis (12 pairs X̄, Z̄). Neither the tour nor the QEC-Bank certificates compute that step, so in the QEC-Bank its specific logical action and implementation cost remain uncomputed. The literature has computed it: Bravyi et al. (arXiv:2308.07915 v2, section 9.2 “Logical Gates based on Automorphisms”) choose logical operators labelled by monomials; a translation s turns the X̄ labelled n into the X̄ labelled s·n (likewise for Z̄), so every translation is a logical CNOT circuit (up to a logical Pauli correction); the authors also write that no translation other than s = 1 acts as the logical identity, but for gross that does not hold: checking all 72 translations on every logical X̄ and Z̄ shows that x⁶ (a half-turn along the direction of length 12) acts as the logical identity, while the other 70 nonidentity translations have a nontrivial logical action (the check is described in §6.5 of the intuition guide). The authors add that it is not yet clear how to use these CNOTs for useful computation. And “one step” on real hardware means moving every qubit to its neighbour's place, or equivalently rewiring all 144 connections — a routing cost to be accounted separately. The QEC-Bank therefore records it only as a physical automorphism (verified), not as a logical operation; the intuition guide's §6.5 says exactly this, and all five operations recorded in the operations facet (logical operations) are claimed.

第 ⑧ 站的两篇文献The two papers of stop ⑧

sayginel2025automorphisms(已登记:H. Sayginel, S. Koutsioumpas, M. Webster, A. Rajput, D. E. Browne, “Fault-Tolerant Logical Clifford Gates from Code Automorphisms”, 2025)讨论的正是「从自同构算出逻辑 Clifford 门」这一步——它把第 ⑧ 站说「还没算」的那件事当作方法论;eberhardt2024fold(据文献扫描报告:J. N. Eberhardt, V. Steffan, “Logical Operators and Fold-Transversal Gates of Bivariate Bicycle Codes”, 2024,登记待补)为一些额外对称的 BB 例子构造了显式逻辑基与折叠横向门。两者都是文献;导览本身只验证了「平移置换检查行」这一条矩阵恒等式。

sayginel2025automorphisms (registered: H. Sayginel, S. Koutsioumpas, M. Webster, A. Rajput, D. E. Browne, “Fault-Tolerant Logical Clifford Gates from Code Automorphisms”, 2025) is about exactly the step “compute the logical Clifford gate from an automorphism” — it turns the “not yet computed” of stop ⑧ into a method; eberhardt2024fold (from the scout report: J. N. Eberhardt, V. Steffan, “Logical Operators and Fold-Transversal Gates of Bivariate Bicycle Codes”, 2024, registration pending) constructs explicit logical bases and fold-transversal gates for some BB examples with extra symmetry. Both are literature; the tour itself verifies only the one matrix identity “translations permute check rows”.

关键想法Key idea

导览最后两站是两道防线。第一道:格点图只是矩阵的打印件,电路、探测器、阈值都在图外——「[[144,12,12]]」这串数字里没有 0.8%。第二道:「平移置换检查行」这条恒等式只证明码空间回到自己,算不出逻辑比特被做了什么;这一步 Bravyi 等人在文献里算过(非平凡的逻辑 CNOT 电路),QEC-Bank 没有重算,真机上的布线代价也要另记一笔账。两道防线守住了,才能诚实地说 gross 码「是什么」。

The tour's last two stops are two lines of defence. First: the lattice picture is a printout of a matrix; circuits, detectors and thresholds lie outside it — there is no 0.8% inside the string “[[144,12,12]]”. Second: the identity “translations permute check rows” proves only that the code space returns to itself and cannot tell what was done to the logical qubits; Bravyi et al. computed that step in the literature (a nontrivial logical CNOT circuit), the QEC-Bank does not recompute it, and the routing cost on hardware is a separate ledger. Only with both lines held can one honestly say what the gross code “is”.

尾声Epilogue

八站走完,与十个其他侧面Eight stops done, and ten other facets

回放整条论证:12 × 6 的环面、每格两个比特,编号 layer·72 + i·6 + j,坐标 (2i + 0.55·layer, 2j + 0.55·layer),共 144 个(①)→ X 检查 (i, j) 的腿 = A 的每一项加到格子上给左层、B 的每一项给右层:X 检查 0 = {1, 2, 18} ∪ {75, 78, 84},重量 3 + 3 = 6(②)→ Z 检查用 [Bᵀ | Aᵀ]:每个指数取负、两块换位置,Z 检查 0 = {3, 60, 66, 76, 77, 126};左层算 AB、右层算 BA,整数重叠只有 0 和 2(③)→ 同一个构造器换四个输入得 toric_L3:四腿、9 × 18、秩 8、k = 2、穷举 d = 3,锁死约定但不把 gross 拆成环面(④⑤)→ 72 行秩 66,亏损 6,k = 2 × 6 = 12,悬停换检查不换秩(⑥)→ 图上只有关联,电路、探测器、0.8% 在图外(⑦)→ 平移置换检查行,是自同构;它的逻辑作用(Bravyi 等人算出是逻辑 CNOT 电路)不在导览的验证之内(⑧)。七站 verified,每个数字都能用 reproduce.py 重算;一站 curated,说的正是机器没算的那部分。

Replay the whole argument: a 12 × 6 torus, two qubits per site, index layer·72 + i·6 + j, coordinate (2i + 0.55·layer, 2j + 0.55·layer), 144 in all (①) → the legs of X check (i, j) = each term of A added to the site for the left layer, each term of B for the right: X check 0 = {1, 2, 18} ∪ {75, 78, 84}, weight 3 + 3 = 6 (②) → Z checks use [Bᵀ | Aᵀ]: every exponent negated, the two blocks swapped, Z check 0 = {3, 60, 66, 76, 77, 126}; the left layer computes AB, the right BA, and the integer overlaps are only 0 and 2 (③) → the same constructor with four different inputs gives toric_L3: four legs, 9 × 18, rank 8, k = 2, exhaustive d = 3, pinning the conventions without splitting gross into tori (④⑤) → 72 rows of rank 66, deficit 6, k = 2 × 6 = 12, hovering changes the check but not the rank (⑥) → the picture holds incidence only; circuits, detectors and 0.8% lie outside it (⑦) → translations permute check rows: an automorphism, whose logical action (a logical CNOT circuit, computed by Bravyi et al.) lies outside what the tour verifies (⑧). Seven stops verified, every number recomputable with reproduce.py; one stop curated, speaking of precisely the part the machine did not compute.

符号与读法Symbols & how to read them

符号Symbol名称与读法Name & how to read it在本篇中的含义Meaning on this page
l, m读「l、m」Read “l, m”环面两个方向的格数;gross 是 12 与 6,toric_L3 是 3 与 3。lm = 格子数 = 每种检查的条数。Site counts along the two torus directions; 12 and 6 for gross, 3 and 3 for toric_L3. lm = number of sites = number of checks of each type.
(i, j)读「格子 i, j」Read “site i, j”环面上的一个格子,0 ≤ i < l,0 ≤ j < m;也是那个格子上 X 检查、Z 检查的编号 i·m + j。One torus site, 0 ≤ i < l, 0 ≤ j < m; also the index i·m + j of the X check and the Z check at that site.
layer·lm + i·m + j编号公式The index formula数据比特的列号:左层 (layer 0) 0–71,右层 (layer 1) 72–143。反向:c ≥ 72 是右层;余数 ÷ 6 得 i,mod 6 得 j。A data qubit's column index: left layer (0) 0–71, right layer (1) 72–143. Inverse: c ≥ 72 is the right layer; remainder ÷ 6 gives i, mod 6 gives j.
A, B读「A、B」Read “A, B”两个多项式,也是两个 lm × lm 的稀疏矩阵;gross:A = x³ + y + y²,B = y³ + x + x²。|A| = A 的项数 = 每行的 1 数。The two polynomials, also two lm × lm sparse matrices; gross: A = x³ + y + y², B = y³ + x + x². |A| = number of terms of A = ones per row.
xayb读「单项式」Read “monomial”把 (i, j) 平移到 (i + a, j + b) 的置换矩阵(直觉教程 2.2 节);本篇的「一项 = 一条腿」。The permutation matrix moving (i, j) to (i + a, j + b) (intuition guide §2.2); on this page “one term = one leg”.
HX = [A | B]
HZ = [Bᵀ | Aᵀ]
读「H X、H Z」,竖线 = 左右并排Read “H-X, H-Z”; the bar = side by side72 × 144 的两张检查矩阵,前 72 列左层、后 72 列右层。行 = 检查,1 的位置 = 支撑。The two 72 × 144 check matrices, first 72 columns left layer, last 72 right layer. Row = check, positions of 1s = support.
ᵀ上标 T,读「转置」Superscript T, read “transpose”行列互换;对单项式等于反向平移 x−ay−b,负指数按 mod l、mod m 绕回(−1 ≡ 11,−3 ≡ 3 当 m = 6)。Swap rows and columns; for a monomial it is the reversed translation x−ay−b, negative exponents wrapping mod l, mod m (−1 ≡ 11; −3 ≡ 3 when m = 6).
[B ; A]分号,读「上下堆叠」Semicolon, read “stacked”B 叠在 A 上的 144 × 72 矩阵 = HZᵀ;[A | B]·[B ; A] = AB + BA。B stacked on A, a 144 × 72 matrix = HZᵀ; [A | B]·[B ; A] = AB + BA.
rank读「秩」Read “rank”线性独立的行数;gross 两张矩阵各 66,toric_L3 各 8。亏损 = lm − rank = dim R/(A,B)。Number of independent rows; 66 for each gross matrix, 8 for each toric_L3 matrix. Deficit = lm − rank = dim R/(A,B).
R/(A,B)读「R 模 (A,B)」Read “R mod (A,B)”把所有 uA + vB 当作零后剩下的空间(直觉教程 4.2 节);gross 6 维,toric_L3 1 维;k = 2 × 维数。What remains after every uA + vB is set to zero (intuition guide §4.2); dimension 6 for gross, 1 for toric_L3; k = 2 × dimension.
[[n, k, d]]双层方括号Double bracketsn 数据比特、k 逻辑比特、码距 d(三者定义见直觉教程第 0 章的记号说明)。本篇:[[144,12,12]] 与 [[18,2,3]]。n data qubits, k logical qubits, distance d (definitions in the intuition guide's Chapter 0 notation note). Here: [[144,12,12]] and [[18,2,3]].
diag(P, P)读「分块对角」Read “block diagonal”对两层同时做同一个平移 P 的 144 × 144 矩阵;HX·diag(P, P) = P·HX 说平移只是重新编号检查。The 144 × 144 matrix applying the same translation P to both layers; HX·diag(P, P) = P·HX says a translation merely renumbers the checks.
∏大写派,读「连乘」Capital pi, read “product”∏A = I:环面码里所有星乘起来是恒等,即 toric_L3 那 1 维亏损。∏A = I: in the toric code all stars multiply to the identity — toric_L3's one-dimensional deficit.
⇒双线箭头,读「推出」A double arrow, read “implies”A ⇒ B:由 A 可得 B。A ⇒ B: from A one may conclude B.

本篇新增词汇New terms on this page

术语Term白话定义Plain definition
导览(tour)/ 播放器guided tour / playerQEC-Bank 每个条目的多站脚本 tour.yaml + 一个不含码专属代码的通用播放器;只读构造器导出的格点,每站带出处标签。BB 的路线有八站、两个格点。Each QEC-Bank entry's multi-stop script tour.yaml plus a generic player with no code-specific JavaScript; it reads only constructor exports, each stop with a provenance label. The BB route has eight stops and two lattices.
出处标签 verified / curated / boundedprovenance label verified / curated / boundedverified = 机器在仓库里现算并断言;curated = 从一篇文献整理的叙述,附 bibkey;bounded = 上下界相符但下界未被机器复算(gross 的 d)。verified = recomputed and asserted by the machine in the repository; curated = a narrative organised from one paper, with bibkey; bounded = upper and lower bounds meet but the lower bound is not machine-replayed (gross's d).
层(layer)layer每个格子上的两个数据比特分属左层(列 0–71)与右层(列 72–143);X 检查的左层腿由 A 定、右层腿由 B 定,Z 检查反之并取转置。The two data qubits at each site belong to the left layer (columns 0–71) and the right layer (72–143); an X check's left legs are set by A and right legs by B, a Z check the reverse with transposes.
支撑(support)support一条检查碰到的比特编号集合 = 矩阵行中 1 的位置;播放器画出的「腿」。The set of qubit indices a check touches = the positions of 1s in its row; the “legs” the player draws.
绕回(wrap-around)wrap-around环面上坐标超出范围就从另一端接回:i mod 12,j mod 6。播放器与本页图中用虚线表示。On a torus a coordinate running off one end re-enters from the other: i mod 12, j mod 6. Dashed lines in the player and in this page's figures.
锚点(anchor)anchor用同一个构造器在能穷举的尺寸上算出的小实例,用来锁死约定;BB 的锚点是 toric_L3 [[18,2,3]]。A small instance computed by the same constructor at an exhaustively checkable size, used to pin conventions; the BB anchor is toric_L3 [[18,2,3]].
秩亏损(rank deficit)rank deficitlm − rank:多余检查的条数;gross 6,toric_L3 1;k 是它的两倍。lm − rank: the number of redundant checks; 6 for gross, 1 for toric_L3; k is twice it.
静态码距 / 电路码距static / circuit distance前者是数据比特上最轻的非平凡逻辑算符(gross 12,bounded);后者是电路里最小的不被探测却致错的故障集合,取决于调度,条目未导出。The former is the lightest nontrivial logical on the data qubits (gross 12, bounded); the latter the smallest undetected fault set in a circuit that causes a logical error, schedule-dependent, not exported by the entry.
一罗(gross)gross英文旧量词,12 打 = 144;[[144,12,12]] 有 144 个数据比特,所以叫 gross 码。An old English unit, 12 dozen = 144; [[144,12,12]] has 144 data qubits, hence “the gross code”.
置换矩阵permutation matrix每行、每列恰有一个 1 的 0/1 矩阵;单项式 xayb 就是把每个格子平移 (a, b) 的置换矩阵。A 0/1 matrix with exactly one 1 in every row and column; the monomial xayb is the permutation matrix that moves every site by (a, b).
钩子错误(hook error)hook error辅助比特上的一个故障被后面的 CNOT 扩散成数据比特上的多个错误;它取决于 CNOT 的先后顺序,是电路码距可能小于静态码距的原因之一。One fault on an ancilla spread by the later CNOTs into several data-qubit errors; it depends on the CNOT order and is one reason the circuit distance can fall below the static distance.
Clifford 门Clifford gate把每个 Pauli 算符变成另一个 Pauli 算符的一类门(H、S、CNOT 及其组合)。A gate that maps every Pauli operator to another Pauli operator (H, S, CNOT and their combinations).
自同构(automorphism)automorphism把稳定子群映到自身的物理置换;环面平移是 gross 的自同构(verified),它对 12 个逻辑比特的作用 QEC-Bank 没有算;Bravyi 等人(arXiv:2308.07915 v2,9.2 节)算过:每个平移都是逻辑 CNOT 电路(最多差一个逻辑 Pauli 修正);他们还说没有哪个非恒等平移作用成逻辑恒等,但本系列直接检验的结果是:对 gross,x⁶(半圈平移)作用成逻辑恒等,其余 70 个非恒等平移有非平凡的逻辑作用。A physical permutation mapping the stabilizer group to itself; torus translations are automorphisms of gross (verified), the QEC-Bank does not compute their action on the 12 logical qubits; Bravyi et al. (arXiv:2308.07915 v2, section 9.2) did: every translation is a logical CNOT circuit, up to a logical Pauli correction; they also state that no nonidentity translation is the logical identity, but a direct check made for this series finds that on gross x⁶ (a half-turn) acts as the logical identity, while the other 70 nonidentity translations have a nontrivial logical action.

延伸阅读Further reading

  • S. Bravyi, A. W. Cross, J. M. Gambetta, D. Maslov, P. Rall, T. J. Yoder, “High-Threshold and Low-Overhead Fault-Tolerant Quantum Memory” (2024)
    gross 码、Table 3、两层耦合、深度 7 电路与 0.8% 的出处;八站里七站引用它。QEC-Bank 键:bravyi2024bicycle(已登记)。Source of the gross code, Table 3, two-layer coupling, the depth-7 circuit and the 0.8%; cited by seven of the eight stops. QEC-Bank key: bravyi2024bicycle (registered).
  • D. J. C. MacKay, G. Mitchison, P. L. McFadden, “Sparse Graph Codes for Quantum Error-Correction” (2004)
    一变量的 bicycle 祖先;第 ④⑤ 站的环面锚点引用它。QEC-Bank 键:mackay2004sparse(已登记)。The one-variable bicycle ancestor; cited at stops ④⑤ for the toric anchor. QEC-Bank key: mackay2004sparse (registered).
  • J. Roffe, D. R. White, S. Burton, E. Campbell, “Decoding Across the Quantum Low-Density Parity-Check Code Landscape” (2020)
    BP-OSD 译码器的系统比较;第 ⑦ 站引用。QEC-Bank 键:roffe2020decoding(已登记)。The systematic comparison of BP-OSD decoders; cited at stop ⑦. QEC-Bank key: roffe2020decoding (registered).
  • H. Sayginel, S. Koutsioumpas, M. Webster, A. Rajput, D. E. Browne, “Fault-Tolerant Logical Clifford Gates from Code Automorphisms” (2025)
    从自同构算出逻辑 Clifford 门的方法;第 ⑧ 站引用。QEC-Bank 键:sayginel2025automorphisms(已登记)。The method for deriving logical Clifford gates from automorphisms; cited at stop ⑧. QEC-Bank key: sayginel2025automorphisms (registered).
  • R. Wang, H.-K. Lin, L. P. Pryadko, “Abelian and Non-Abelian Quantum Two-Block Codes” (2023)
    群代数视角:为什么 A、B 对易、BB 是阿贝尔两块码的特例;第 ③ 站引用。QEC-Bank 键:wang2023abelian(据文献扫描报告,登记待补)。The group-algebra view: why A and B commute, BB as a special case of abelian two-block codes; cited at stop ③. QEC-Bank key: wang2023abelian (from the scout report, registration pending).
  • J. J. Postema, S. J. J. M. F. Kokkelmans, “Existence and Characterisation of Bivariate Bicycle Codes” (2025)
    商空间 R/(A,B) 与 k 的存在性 / 渐近分析;第 ⑥ 站引用。QEC-Bank 键:postema2025existence(据文献扫描报告,登记待补)。The quotient R/(A,B), existence and asymptotics of k; cited at stop ⑥. QEC-Bank key: postema2025existence (from the scout report, registration pending).
  • K. Chen et al., “Anyon Theory and Topological Frustration of High-Efficiency Quantum LDPC Codes” (2025)
    为什么有限 BB 码不是环面码的平凡堆叠;第 ④ 站引用。QEC-Bank 键:chen2025anyon(据文献扫描报告,登记待补)。Why finite BB codes are not trivial stacks of toric codes; cited at stop ④. QEC-Bank key: chen2025anyon (from the scout report, registration pending).
  • J. N. Eberhardt, V. Steffan, “Logical Operators and Fold-Transversal Gates of Bivariate Bicycle Codes” (2024)
    对称 BB 例子的显式逻辑基与折叠横向门;第 ⑧ 站引用。QEC-Bank 键:eberhardt2024fold(据文献扫描报告,登记待补)。Explicit logical bases and fold-transversal gates for symmetric BB examples; cited at stop ⑧. QEC-Bank key: eberhardt2024fold (from the scout report, registration pending).
诚实总账The honesty ledger

① 本篇只讨论条目交付的两个实例 gross 与 toric_L3;Table 3 的其他成员在各自的条目里。② 所有支撑、重叠计数、秩与 k 都是静态检查矩阵上的结论,假设测量完美;辅助比特、CNOT 顺序、探测器、钩子故障与电路码距只在第 6 章作为「未导出」列出。③ gross 的 d = 12 本页未证明:下界来自 bravyi2024bicycle,上界由 QEC-Bank 的 rand-lowweight-v1(种子 5,2000 次)复现,标签 bounded;toric_L3 的 d = 3 由 exact-css-enum 穷举,verified。④ 第 ⑦ 站与 5.2 的设计张力一段是文献叙述(curated);0.8% 带五个限定项,与任何码容量阈值都不可比。⑤ 八篇引用文献中只有四篇在 QEC-Bank 登记了完整元数据,另四篇的标题与作者取自文献扫描报告,登记待补。⑥ 图 1.1–6.1 由 constructor.py 的坐标公式重画,编号与支撑与 reproduce.py 的断言逐字一致;它们是本页生成的示意图,不是播放器的截图。⑦ 本篇用到的支撑、重叠计数(只有 0 和 2;X 检查 0 与 9 条 Z 检查各共享 2 个比特)、A² + B² ≠ 0、toric_L3 的两张矩阵、「不转置或不换位就不对易而秩仍是 8 + 8」、bb108 的 k = 8,以及「在 12 × 6 上只改 A 的一整项(三项仍互不相同)时 k ∈ {0, 4, 8, 12}、只改一个指数时 k ∈ {0, 8, 12}」,修订时都由脚本独立重算过;0.8% 的表述核对过 arXiv:2308.07915 的摘要。

① This page treats only the two shipped instances gross and toric_L3; the other Table 3 members live in their own entries. ② Every support, overlap count, rank and k is a statement about the static check matrices, assuming perfect measurement; ancillas, CNOT order, detectors, hook faults and circuit distance appear in Chapter 6 only as “not exported”. ③ Gross's d = 12 is not proved here: the lower bound comes from bravyi2024bicycle, the upper bound is reproduced by the QEC-Bank's rand-lowweight-v1 (seed 5, 2000 iterations), label bounded; toric_L3's d = 3 is exhaustively enumerated by exact-css-enum, verified. ④ Stop ⑦ and the design-tension paragraph of §5.2 are literature narrative (curated); the 0.8% carries five qualifiers and is not comparable to any code-capacity threshold. ⑤ Of the eight cited papers only four have full metadata registered in the QEC-Bank; the other four take titles and authors from the scout report, registration pending. ⑥ Figures 1.1–6.1 are redrawn from the coordinate formula of constructor.py, with indices and supports identical to the assertions in reproduce.py; they are illustrations generated for this page, not screenshots of the player. ⑦ The supports, the overlap counts (only 0 and 2; X check 0 shares 2 qubits with each of 9 Z checks), A² + B² ≠ 0, toric_L3's two matrices, “without the transpose or the swap the checks stop commuting while the ranks stay 8 + 8”, bb108's k = 8, and “on 12 × 6, replacing one whole term of A (three distinct terms kept) gives k ∈ {0, 4, 8, 12}, changing one exponent gives k ∈ {0, 8, 12}” were all recomputed independently by a script during this revision; the wording on 0.8% was checked against the abstract of arXiv:2308.07915.

本条目的其他侧面Other facets of this entry

条目总览 · 直觉 · 导览(本篇) · 表示阶梯 · 参数与实例 · 形式化 IR 与证书 · 译码器 · 逻辑操作 · 用例与实现 · 关系 · 推导与指南 · 参考文献 · 在 QEC-Bank 中查看此条目 →。同一侧面的表面码版本:《Surface Code · 导览》——那里的七站看的是超图积,这里的八站看的是环面平移。

Entry overview · Intuition · Guided tour (this page) · Representation ladder · Parameters & instances · Formal IR & certificates · Decoders · Logical operations · Use cases & realizations · Relations · Derivations & guides · References · Open in the QEC-Bank →. The surface-code version of this facet: “Surface Code · Guided Tour” — its seven stops look at the hypergraph product, these eight at torus translations.