← back to the board
[[240,10,22]] d ≤
n
240
k
10
d
22
kd²/n
20.167
w
8
X/Z
1

Share this result

Distance

X/Z asymmetry 1 · d_X ≤ 22, d_Z ≤ 22 · w_X = 8, w_Z = 8 (max(d_X,d_Z)/min(d_X,d_Z); each side carries its own earned tier: = certified exact, ≤ witness upper bound)
d_X 22 · witness weight 22 (claimed upper_bound)
witness found by @vprusso · verify/ris_gpu.py (build/ris_gpu, NVIDIA A40) · found at 3×108 trials · survived 3×108 trials · 2026-09-27
witness operator (support, 22 qubits)
[1, 13, 15, 29, 38, 41, 53, 55, 82, 89, 101, 102, 109, 133, 136, 145, 151, 178, 185, 192, 225, 231]
d_Z 22 · witness weight 22 (claimed upper_bound)
witness found by @vprusso · verify/ris_gpu.py (build/ris_gpu, NVIDIA A40) · found at 3×108 trials · survived 3×108 trials · 2026-09-27
witness operator (support, 22 qubits)
[1, 13, 16, 24, 36, 37, 51, 52, 62, 66, 90, 93, 117, 124, 129, 151, 166, 184, 187, 191, 216, 220]
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 6 · H_Z 6 (shortest cycle of each side’s Tanner graph; longer is friendlier to belief propagation)
check weights H_X 8 · H_Z 8
qubit degrees H_X 4 · H_Z 4
trapping sets H_X (1,4)×240 (2,6)×3360 (3,6)×2800 (smallest syndrome weight at each size, connected sets of up to 3 qubits)
full (size, syndrome weight): count census for H_X
(1,4): 240 (2,6): 3360 (3,6): 2800 (3,8): 62160 (3,10): 6720
trapping sets H_Z (1,4)×240 (2,6)×3360 (3,6)×2800 (smallest syndrome weight at each size, connected sets of up to 3 qubits)
full (size, syndrome weight): count census for H_Z
(1,4): 240 (2,6): 3360 (3,6): 2800 (3,8): 62160 (3,10): 6720

Construction & provenance

authors @vprusso
provenance submitted through the challenge
novelty novelty not audited
construction Periodic bivariate-bicycle code on Z_15 x Z_8 (n = 2*l*m = 240): x = S_15 tensor I_8, y = I_15 tensor S_8 (cyclic shifts), qubit index i*m + j in each block; A = x0y0 + x4y7 + x9y5 + x11y5, B = x0y0 + x1y3 + x8y7 + x11y3; H_X = [A|B], H_Z = [B^T|A^T] (research/kit/bb.py build_bb(15, 8, [[0, 0], [4, 7], [9, 5], [11, 5]], [[0, 0], [1, 3], [8, 7], [11, 3]])). gcd(15, 8) = 1, so Z_15 x Z_8 is cyclic of order 120 and the code is the cyclic generalized-bicycle code over Z_120 with a(z) = z0 + z69 + z79 + z101, b(z) = z0 + z11 + z23 + z91 (CRT relabeling x^a y^b -> z^t, t = a mod 15, t = b mod 8).
model Claude Claude Fable 5.1 (Claude Code) (claimed, not verified)
date 2026-09-27
family other (a tag, not a ranking)
locality unrestricted (computed from the layout)
weight class weight ≤ 8 (computed)

How this code was found

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

[[240,10,22]] weight-8 coprime bivariate-bicycle code

Construction

Periodic bivariate-bicycle code on Z_15 x Z_8 (n = 2*l*m = 240): x = S_15 tensor I_8, y = I_15 tensor S_8 (cyclic shifts), qubit index i*m + j in each block; A = x^0y^0 + x^4y^7 + x^9y^5 + x^11y^5, B = x^0y^0 + x^1y^3 + x^8y^7 + x^11y^3; H_X = [A|B], H_Z = [B^T|A^T] (research/kit/bb.py build_bb(15, 8, [[0, 0], [4, 7], [9, 5], [11, 5]], [[0, 0], [1, 3], [8, 7], [11, 3]])). gcd(15, 8) = 1, so Z_15 x Z_8 is cyclic of order 120 and the code is the cyclic generalized-bicycle code over Z_120 with a(z) = z^0 + z^69 + z^79 + z^101, b(z) = z^0 + z^11 + z^23 + z^91 (CRT relabeling x^a y^b -> z^t, t = a mod 15, t = b mod 8).

Every check has weight exactly 8.

Distance evidence

The distance is a witness-backed upper bound. Every witness in the submission was validated against the published check matrices before filing.

| trials per side | lightest logical found | |---|---| | 300 | 22 | | 2,000 | 22 | | 20,000 | 22 | | 300,000,000 | X 22, Z 22 |

The deeper passes did not lower the claim.

What is not claimed

This code carries no circuit-level or logical-error-rate measurement. It came from a search whose objective was a memory-experiment comparison against the rotated surface code, but it did not reach that stage, so nothing here speaks to its performance under a decoder. The submission is a claim about n, k, d, and check weight only.

The distance is an upper bound, not a certificate. A lighter logical operator would refute it, and the witnesses are published so that anyone can try.

Reproduction

import sys; sys.path.insert(0, "research/kit")
from bb import build_bb
HX, HZ = build_bb(l=15, m=8, A_terms=[[0, 0], [4, 7], [9, 5], [11, 5]], B_terms=[[0, 0], [1, 3], [8, 7], [11, 3]])

Parity checks

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