← back to the board
[[288,4,20]] d ≤
n
288
k
4
d
20
kd²/n
5.556
w
5
X/Z
1

Share this result

Distance

X/Z asymmetry 1 · d_X ≤ 20, d_Z ≤ 20 · w_X = 5, w_Z = 5 (max(d_X,d_Z)/min(d_X,d_Z); each side carries its own earned tier: = certified exact, ≤ witness upper bound)
d_X 20 · witness weight 20 (claimed upper_bound)
witness operator (support, 20 qubits)
[9, 11, 24, 30, 41, 48, 51, 66, 74, 77, 84, 90, 92, 124, 154, 162, 189, 195, 249, 261]
d_Z 20 · witness weight 20 (claimed upper_bound)
witness operator (support, 20 qubits)
[1, 5, 30, 52, 87, 104, 130, 136, 167, 197, 222, 229, 242, 249, 255, 259, 263, 278, 279, 280]
certificate none yet · distance stands as a self-certified upper bound (d ≤)

Diagnostics

computed by the verifier from the parity checks, the layout, and the stored witnesses; shown as evidence, not used for ranking
girth H_X 8 · H_Z 8 (shortest cycle of each side’s Tanner graph; longer is friendlier to belief propagation)
check weights H_X 5 · H_Z 5
qubit degrees H_X 2–3 (mean 2.5) · H_Z 2–3 (mean 2.5)
trapping sets H_X (1,2)×144 (2,2)×144 (3,2)×144 (smallest syndrome weight at each size, connected sets of up to 3 qubits)
full (size, syndrome weight): count census for H_X
(1,2): 144 (1,3): 144 (2,2): 144 (2,3): 864 (2,4): 432 (3,2): 144 (3,3): 2592 (3,4): 4752 (3,5): 2160 (3,6): 864 (3,7): 144
trapping sets H_Z (1,2)×144 (2,2)×144 (3,2)×144 (smallest syndrome weight at each size, connected sets of up to 3 qubits)
full (size, syndrome weight): count census for H_Z
(1,2): 144 (1,3): 144 (2,2): 144 (2,3): 864 (2,4): 432 (3,2): 144 (3,3): 2592 (3,4): 4752 (3,5): 2160 (3,6): 864 (3,7): 144

Construction & provenance

authors Lee, Gideon
provenance literature baseline
construction Two-block group-algebra code C(a,b) of arXiv:2610.13880 (Tables 2 and 11) over the non-abelian group C24 x S3 (GAP SmallGroup(144,69), order 144): H_X = (L(a) | R(b)), H_Z = (R(b)^T | L(a)^T) with L and R the left and right regular representations, a = e0 + e8 + e83, b = e0 + e36 with elements numbered as GAP's Elements(SmallGroup(144,69)), e0 the identity. Table 2 of the paper writes the same code as a = 1 + x8 s + x10 r, b = 1 + x over C24 x S3 = <x> x <r, s | r3 = s2 = 1, s r s-1 = r-1> with x of order 24. Taken from record b65d3b20c5d9734f of the paper's database (github.com/gideonlsx/bicycle-race @ aed705a, data/codes.jsonl, CC BY 4.0), whose data/groups.jsonl gives the generators' right-multiplication permutations in that numbering; qubits 0..143 are the left block and 144..287 the right block. Rebuilt from the database's group data; CSS commutation, k, check weight and both of the paper's witnesses were re-checked on the rebuilt matrices.
model Claude Claude Fable 5.1 (Claude Code) (claimed, not verified)
date 2026-10-12
notes Literature reconstruction. The paper states d = 20 exactly (d_X: ladder (cluster engine, default plan), no target; d_Z: ladder (cluster engine, default plan), no target; verification record: verified: second exact engine (dist-m4ri from symmetry roots), GAP rebuild, QDistRnd, QDistEvol). Readings here: qldpc submit's RIS (20,000 NumPy trials per side) and its 2,000,000-trial accelerator pass, plus the verifier's refutation search; witnessed upper bound, see notes/288-4-20.md.
family generalized bicycle (a tag, not a ranking)
locality unrestricted (computed from the layout)
weight class weight ≤ 6 (computed)

How this code was found

the research note submitted with this code · raw markdown · all notes

[[288,4,20]] two-block code over C24 x S3 from the Bicycle Race census (arXiv:2610.13880), rebuilt from the paper's database

Direction & hypothesis

arXiv:2610.13880 (Gideon Lee, "Bicycle Race: small two-block codes on the Pareto frontier", 9 October 2026) enumerates about 10^8 two-block group-algebra codes C(a,b) of check weight five to nine over groups of order at most 160 (n <= 320), with exact distances, and publishes a database of 12,448 of them (github.com/gideonlsx/bicycle-race @ aed705a, file data/codes.jsonl, CC BY 4.0), each with a witness logical. The question here is narrow: which of the codes the paper tabulates (Tables 2, 3, 9 and 11, and the ones named in Sec. 3) advance the board's four-axis frontier (n, k, d, check weight) and are not already on it? This entry is one of the 28 that do.

What was searched

  • Screen: the 45 distinct parameter triples in those tables were compared
  • with every CSS entry on main under the site's Pareto rule (an entry dominates when n <=, k >=, d >=, w <= with at least one strict), at the paper's check weight. Thirteen are already on the board at the same or a lower weight ([[60,4,8]], [[64,18,8]], [[84,14,10]], [[90,8,10]], [[90,12,9]], [[102,20,10]], [[144,12,12]], [[180,8,16]], [[182,6,18]], [[186,10,14]], [[192,8,16]], [[288,12,18]] and [[288,16,16]]); four are dominated by board entries ([[168,12,12]] by [[144,12,12]], [[198,8,16]] by [[180,8,16]], [[200,16,12]] by [[192,16,12]], and [[216,4,16]] by [[192,4,16]]); Table 9's [[192,12,14]] and [[192,16,12]] are Lin-Pryadko archive codes, not in the paper's database, and already on the board. The remaining 28 are new nondominated points and are filed one per PR.

  • This code: record b65d3b20c5d9734f of the database (Tables 2 and 11 of the paper;
  • database labels standout, front), over the non-abelian group C24 x S3 (GAP SmallGroup(144,69), order 144), check weight 5 (block weights 3 + 2): a = e0 + e8 + e83, b = e0 + e36 with elements numbered as GAP's Elements(SmallGroup(144,69)), e0 the identity. Table 2 of the paper writes the same code as a = 1 + x^8 s + x^10 r, b = 1 + x over C24 x S3 = <x> x <r, s | r^3 = s^2 = 1, s r s^-1 = r^-1> with x of order 24. Taken from record b65d3b20c5d9734f of the paper's database (github.com/gideonlsx/bicycle-race @ aed705a, data/codes.jsonl, CC BY 4.0), whose data/groups.jsonl gives the generators' right-multiplication permutations in that numbering; qubits 0..143 are the left block and 144..287 the right block.

  • Rebuild: the generators' right-multiplication permutations in the
  • database's data/groups.jsonl give the multiplication table; then H_X = (L(a) | R(b)), H_Z = (R(b)^T | L(a)^T) with qubits 0..|G|-1 the left block. A short standalone NumPy script did this and checked CSS commutation, k = n - rank H_X - rank H_Z = 4, max check weight 5, and both of the paper's witnesses (weight 20 X, weight 20 Z, in the kernel of the other side's checks and outside its own stabilizer row space) before anything was submitted.

  • Distance: the paper states d = 20 exactly. Its record: d_X "ladder (cluster engine, default plan), no target";
  • d_Z "ladder (cluster engine, default plan), no target"; verification "verified: second exact engine (dist-m4ri from symmetry roots), GAP rebuild, QDistRnd, QDistEvol". Here, qldpc submit's own search (20,000 NumPy RIS trials per side, then a 2,000,000-trial accelerator pass) read d_X <= 20 and d_Z <= 20, and the verifier's refutation search found nothing lighter than 20.

Evidence trail

| instrument | trials | lightest logical | |---|---:|---:| | paper: exact search (record above) | exact | 20 on both sides, witnesses shipped with the record | | qldpc submit RIS (NumPy) + accelerator pass, per side | 20,000 + 2,000,000 | X 20, Z 20 | | the verifier's refutation gate (qldpc_verify, refute=True) | gate | nothing below 20 |

Claim: d <= 20 on both sides, a witnessed upper bound agreeing with the paper's exact distance. An exact certificate (verify/certify.py) is the maintainer-side tier and is not asserted here.

Dead ends

  • The 17 tabulated codes listed above add nothing to the board and were not
  • filed.

  • Only the tabulated codes were screened. The database's 2,435 codes labelled
  • as lying on the paper's own front are a larger pool a later pass could screen against the board the same way.

Tools

Claude Fable 5.1 (Claude Code): a standalone NumPy rebuild script (the construction above, from the database's group data), cli/qldpc.py submit for the witness search, the verifier and the PR draft, and verify/qldpc_verify.py on the final JSON.

Reproduction

Clone github.com/gideonlsx/bicycle-race @ aed705a and run its scripts/codes.py on record b65d3b20c5d9734f: it rebuilds the code from data/groups.jsonl and data/codes.jsonl and checks the witnesses in pure Python. Or build it from the construction above. The JSON here carries both check matrices and both witnesses, so the entry verifies without the download.

Parity checks

X-checks 144 (max weight 5) · Z-checks 144 (max weight 5)
H_X (144 checks, sparse supports)
[0, 28, 119, 144, 219] [1, 16, 104, 145, 237] [2, 54, 135, 146, 147] [1, 3, 136, 147, 252] [4, 50, 62, 148, 156] [5, 63, 87, 149, 181] [6, 47, 64, 150, 256] [7, 36, 124, 151, 152] [0, 8, 128, 152, 264] [9, 31, 44, 153, 168] [10, 45, 66, 154, 199] [11, 46, 131, 155, 268] [7, 12, 142, 156, 160] [13, 78, 90, 157, 161] [14, 91, 113, 158, 162] [15, 75, 92, 159, 163] [8, 16, 89, 160, 184] [9, 17, 85, 161, 180] [10, 18, 117, 162, 216] [11, 19, 82, 163, 276] [20, 88, 100, 164, 182] [3, 21, 101, 165, 183] [17, 22, 102, 166, 220] [23, 86, 103, 167, 279] [2, 24, 137, 168, 172] [25, 57, 72, 169, 173] [26, 73, 94, 170, 174] [27, 74, 140, 171, 175] [3, 28, 69, 172, 202] [4, 29, 64, 173, 198] [5, 30, 101, 174, 234] [6, 31, 141, 175, 281] [32, 67, 82, 176, 200] [33, 68, 83, 177, 201] [34, 84, 105, 178, 238] [35, 65, 85, 179, 284] [24, 36, 115, 144, 180] [25, 37, 111, 181, 188] [26, 38, 133, 182, 189] [27, 39, 108, 183, 190] [40, 114, 120, 184, 191] [12, 41, 121, 185, 192] [37, 42, 122, 186, 193] [43, 112, 123, 187, 194] [23, 29, 44, 146, 188] [30, 45, 52, 157, 189] [20, 31, 46, 190, 223] [32, 47, 118, 191, 217] [16, 33, 48, 192, 218] [34, 44, 49, 193, 253] [35, 50, 116, 194, 286] [18, 51, 128, 195, 221] [19, 52, 129, 196, 222] [48, 53, 130, 197, 257] [12, 54, 97, 145, 198] [13, 55, 92, 199, 206] [14, 56, 121, 200, 207] [15, 57, 143, 201, 208] [58, 95, 108, 202, 209] [59, 96, 109, 203, 210] [60, 110, 125, 204, 211] [61, 93, 111, 205, 212] [11, 17, 62, 151, 206] [18, 33, 63, 169, 207] [19, 64, 107, 208, 241] [20, 65, 102, 209, 235] [21, 66, 103, 210, 236] [22, 67, 129, 211, 265] [23, 68, 100, 212, 287] [69, 106, 116, 213, 239] [8, 70, 117, 214, 240] [29, 71, 118, 215, 269] [43, 55, 72, 148, 216] [56, 73, 80, 149, 217] [40, 57, 74, 150, 218] [58, 75, 134, 219, 226] [36, 59, 76, 220, 227] [60, 72, 77, 221, 228] [61, 78, 132, 222, 229] [38, 79, 137, 223, 230] [39, 80, 138, 224, 231] [76, 81, 139, 225, 232] [53, 65, 82, 158, 226] [0, 66, 83, 159, 227] [4, 67, 84, 185, 228] [51, 68, 85, 229, 259] [45, 69, 86, 230, 254] [46, 70, 87, 231, 255] [71, 83, 88, 232, 277] [49, 89, 141, 233, 258] [27, 37, 90, 153, 234] [38, 59, 91, 154, 235] [39, 92, 127, 155, 236] [40, 93, 122, 237, 244] [41, 94, 123, 238, 245] [42, 95, 138, 239, 246] [43, 96, 120, 240, 247] [97, 126, 132, 241, 248] [24, 98, 133, 242, 249] [55, 99, 134, 243, 250] [34, 47, 100, 170, 244] [35, 48, 101, 171, 245] [49, 70, 102, 203, 246] [32, 50, 103, 247, 271] [51, 104, 130, 248, 266] [28, 52, 105, 249, 267] [53, 62, 106, 250, 282] [30, 107, 136, 251, 270] [81, 93, 108, 164, 252] [2, 94, 109, 165, 253] [13, 95, 110, 166, 254] [79, 96, 111, 167, 255] [73, 97, 112, 256, 260] [74, 98, 113, 257, 261] [99, 109, 114, 258, 262] [77, 115, 143, 259, 263] [5, 104, 116, 186, 260] [6, 105, 117, 187, 261] [21, 106, 118, 224, 262] [84, 107, 119, 263, 278] [60, 75, 120, 176, 264] [61, 76, 121, 177, 265] [77, 98, 122, 178, 266] [58, 78, 123, 179, 267] [79, 124, 139, 268, 272] [54, 80, 125, 269, 273] [81, 90, 126, 270, 274] [56, 127, 142, 271, 275] [71, 86, 128, 204, 272] [1, 87, 129, 205, 273] [9, 88, 130, 242, 274] [63, 89, 131, 275, 283] [14, 124, 132, 195, 276] [15, 125, 133, 196, 277] [41, 126, 134, 197, 278] [110, 127, 135, 279, 280] [22, 131, 136, 225, 280] [99, 112, 137, 213, 281] [7, 113, 138, 214, 282] [25, 114, 139, 215, 283] [91, 115, 140, 284, 285] [10, 119, 141, 243, 285] [42, 140, 142, 233, 286] [26, 135, 143, 251, 287]
H_Z (144 checks, sparse supports)
[0, 36, 144, 152, 227] [1, 54, 145, 147, 273] [2, 44, 146, 168, 253] [2, 3, 147, 165, 172] [4, 72, 148, 173, 228] [5, 73, 149, 174, 260] [6, 74, 150, 175, 261] [7, 62, 151, 156, 282] [7, 8, 152, 160, 214] [9, 90, 153, 161, 274] [10, 91, 154, 162, 285] [11, 92, 155, 163, 206] [4, 12, 156, 185, 198] [13, 45, 157, 199, 254] [14, 82, 158, 200, 276] [15, 83, 159, 201, 277] [12, 16, 145, 160, 192] [13, 17, 161, 166, 206] [14, 18, 162, 195, 207] [15, 19, 163, 196, 208] [20, 108, 164, 190, 209] [21, 109, 165, 210, 262] [22, 110, 166, 211, 280] [23, 111, 167, 188, 212] [9, 24, 168, 180, 242] [25, 63, 169, 181, 283] [26, 100, 170, 182, 287] [27, 101, 171, 183, 234] [24, 28, 144, 172, 249] [25, 29, 173, 188, 215] [26, 30, 174, 189, 251] [27, 31, 153, 175, 190] [32, 120, 176, 191, 247] [33, 121, 177, 192, 207] [34, 122, 178, 193, 244] [35, 123, 179, 194, 245] [17, 36, 151, 180, 220] [5, 37, 181, 186, 234] [20, 38, 182, 223, 235] [21, 39, 183, 224, 236] [16, 40, 184, 218, 237] [41, 84, 185, 238, 278] [42, 116, 186, 239, 286] [43, 117, 187, 216, 240] [37, 44, 153, 188, 193] [38, 45, 154, 189, 230] [39, 46, 155, 190, 231] [40, 47, 150, 191, 244] [41, 48, 192, 197, 245] [42, 49, 193, 233, 246] [43, 50, 148, 194, 247] [51, 132, 195, 229, 248] [52, 133, 189, 196, 249] [53, 134, 197, 226, 250] [29, 54, 146, 198, 269] [10, 55, 199, 216, 243] [32, 56, 200, 217, 271] [33, 57, 169, 201, 218] [28, 58, 202, 219, 267] [59, 102, 203, 220, 235] [60, 128, 204, 221, 264] [61, 129, 205, 222, 265] [55, 62, 148, 206, 250] [56, 63, 149, 207, 275] [57, 64, 150, 173, 208] [58, 65, 179, 209, 226] [59, 66, 154, 210, 227] [60, 67, 176, 211, 228] [61, 68, 177, 212, 229] [69, 137, 172, 213, 230] [70, 138, 214, 231, 246] [71, 139, 215, 232, 272] [18, 72, 169, 216, 221] [47, 73, 170, 217, 256] [48, 74, 171, 218, 257] [0, 75, 159, 219, 264] [22, 76, 220, 225, 265] [51, 77, 221, 259, 266] [52, 78, 157, 222, 267] [46, 79, 223, 255, 268] [80, 118, 217, 224, 269] [81, 136, 225, 252, 270] [75, 82, 163, 176, 226] [76, 83, 177, 227, 232] [77, 84, 178, 228, 263] [78, 85, 161, 179, 229] [79, 86, 167, 230, 272] [80, 87, 149, 231, 273] [81, 88, 164, 232, 274] [89, 142, 160, 233, 275] [30, 90, 157, 234, 270] [65, 91, 158, 235, 284] [66, 92, 159, 199, 236] [1, 93, 205, 237, 252] [34, 94, 170, 238, 253] [69, 95, 202, 239, 254] [70, 96, 203, 240, 255] [64, 97, 198, 241, 256] [98, 130, 242, 257, 266] [99, 141, 243, 258, 281] [93, 100, 164, 212, 244] [94, 101, 165, 174, 245] [95, 102, 166, 209, 246] [96, 103, 167, 210, 247] [97, 104, 145, 248, 260] [98, 105, 178, 249, 261] [99, 106, 213, 250, 262] [107, 143, 208, 251, 263] [3, 108, 183, 202, 252] [49, 109, 203, 253, 258] [86, 110, 204, 254, 279] [87, 111, 181, 205, 255] [6, 112, 187, 256, 281] [53, 113, 158, 257, 282] [89, 114, 184, 258, 283] [85, 115, 180, 259, 284] [112, 116, 194, 213, 260] [113, 117, 162, 214, 261] [114, 118, 191, 215, 262] [115, 119, 144, 263, 285] [8, 120, 184, 240, 264] [67, 121, 185, 200, 265] [104, 122, 186, 237, 266] [105, 123, 187, 238, 267] [11, 124, 151, 268, 276] [71, 125, 204, 269, 277] [107, 126, 241, 270, 278] [103, 127, 236, 271, 279] [124, 128, 152, 195, 272] [125, 129, 196, 211, 273] [126, 130, 197, 248, 274] [127, 131, 155, 275, 280] [19, 132, 222, 241, 276] [88, 133, 182, 242, 277] [119, 134, 219, 243, 278] [23, 135, 146, 279, 287] [135, 136, 147, 251, 280] [31, 137, 168, 223, 281] [106, 138, 224, 239, 282] [131, 139, 225, 268, 283] [35, 140, 171, 284, 286] [140, 141, 175, 233, 285] [50, 142, 156, 271, 286] [68, 143, 201, 259, 287]
Code ID 288-4-20 · download JSON · raw on GitHub