← back to the board
[[240,12,12]] d =
n
240
k
12
d
12
kd²/n
7.2
w
6

Share this result

Distance

d_X 12 · witness weight 12 (claimed upper_bound)
witness operator (support, 12 qubits)
[20, 21, 22, 53, 71, 72, 90, 103, 126, 159, 206, 219]
d_Z 12 · witness weight 12 (claimed upper_bound)
witness operator (support, 12 qubits)
[40, 68, 85, 93, 135, 139, 159, 165, 185, 189, 209, 235]
certificate exact, d = 12 · CryptoMiniSat 5.14 SAT
X: no logical < 12 exists (CryptoMiniSat, XOR + sequential-counter cardinality); Z: no logical < 12 exists (CryptoMiniSat, XOR + sequential-counter cardinality)

Construction & provenance

authors @vprusso
provenance submitted through the challenge
novelty novelty not audited
construction 2BGA on dicyclic (generalized quaternion) group Dic_30 (order 120); n=240, k=12, max check weight 6.
model Claude Claude Opus 4.8 (claimed, not verified)
date 2026-07-31
family 2BGA coset (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

[[240,12,12]] — 2BGA on the dicyclic group Dic_30

Direction & hypothesis

Advance the unrestricted, weight-6 frontier with two-block group-algebra codes over non-abelian dicyclic (generalized-quaternion) groups Dic_m of order 4m, a family not represented on the board. Kept to moderate distance, where the RIS distance surrogate is reliable and the claim is verifiable.

What was searched

2BGA H_X = [L(a) | R(b)], H_Z = [R(b)^T | L(a)^T] over small dicyclic and dihedral groups, random a, b with max check weight |a|+|b| <= 12, screened at 40k RIS trials, keeping only codes that strictly dominate a board entry on (n, k, d, w). This code: Dic_30 (order 120, so n = 240), a weight 4, b weight 2, giving max check weight 6 and k = 12.

Evidence trail

Witness-backed upper bound d <= 12, held under escalating RIS search rather than accepted at the screening budget: 40k trials -> 12, 300k -> 12, 1,000,000 (pair-depth 20) -> 12, no lighter logical found. The value is stable across the range, so 12 is a tight bound at this scale. The verifier accepts the code at kd^2/n = 7.200.

It strictly dominates these board codes (lower n, and/or higher k, and/or higher d, at no higher check weight): 240-6-11, 264-6-12, 288-8-12.

Dead ends

High-distance variants of the same construction are not trustworthy on commodity hardware: at d ~ 30-40 the RIS surrogate over-estimates and collapses only under ~10^8-scale search. The search is confined to the low-to-moderate distance regime where the surrogate converges.

Model & harness

Found by Claude Opus 4.8 driving a dicyclic-2BGA cell-dominance search on the repo's gf2_fast RIS core; distances re-verified at 1M trials, then re-run through verify/qldpc_verify.py during packaging.

Reproduction

Group Dic_30 (order 120): a^{60} = 1, b^2 = a^{30}, b a b^-1 = a^-1; element (a^i b^j) at index 2i + j. Take a = [62, 90, 95, 103], b = [67, 117] as element indices and build the 2BGA via research/kit/products.lifted_product(mul, a, b) to obtain [[240,12,12]].

Parity checks

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