← back to the board
[[240,8,20]] d ≤
n
240
k
8
d
20
kd²/n
13.333
w
8

Share this result

Distance

d_X 20 · witness weight 20 (claimed upper_bound)
witness operator (support, 20 qubits)
[0, 12, 15, 24, 51, 54, 66, 69, 78, 81, 90, 117, 128, 136, 164, 182, 218, 230, 236, 238]
d_Z 20 · witness weight 20 (claimed upper_bound)
witness operator (support, 20 qubits)
[35, 53, 65, 73, 89, 101, 109, 119, 121, 126, 144, 151, 163, 175, 180, 198, 217, 228, 229, 234]
certificate none yet · distance stands as a self-certified upper bound (d ≤)

Construction & provenance

authors @vprusso
provenance submitted through the challenge
novelty novelty not audited
construction Two-block group-algebra (2BGA) code on the dicyclic (generalized quaternion) group Dic_30 (order 120), a and b each weight-4 group-algebra elements; n=2*120=240, k=8.
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 ≤ 8 (computed)

How this code was found

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

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

Direction & hypothesis

Target: advance the unrestricted, weight-8 frontier at moderate block length. The abelian and bivariate-bicycle families are heavily mined there, so I aimed at two-block group-algebra codes over non-abelian groups, and specifically the dicyclic (generalized-quaternion) groups Dic_m of order 4m, which are not represented on the board. The bet: at moderate distance (d in the teens-to-20 band) these reach efficiencies that dominate existing board entries, and, being low distance, the RIS surrogate is reliable enough to stand behind the claim.

What was searched

2BGA codes H_X = [L(a) | R(b)], H_Z = [R(b)^T | L(a)^T] over a roster of small non-abelian groups (dicyclic Dic_6..Dic_30, dihedral, S4, A5, a few metacyclic), n = 2|G|. For each group, random weight-(2..5) a and b with max check weight |a|+|b| <= 12, screened at 40k RIS trials, and kept only candidates that strictly dominate a board code on (n, k, d, w) within their nested weight cell.

This code: Dic_30 (order 120, so n = 240), a and b each weight 4, giving max check weight 8, k = 8.

Evidence trail

Distance is a witness-backed upper bound d <= 20 (weight-20 logical on each side). The upper bound was held down through escalating RIS search rather than accepted at the screening budget:

  • 40k trials (pd 10): d <= 20
  • 500k trials (pd 18): d <= 20
  • 2,000,000 trials (pd 22): d <= 20 (no lighter logical found)

The value is stable across three orders of magnitude of search, so 20 is a tight upper bound at this scale, not an inflated screening artifact. The full verifier accepts it: CSS commutation, k = 8, max check weight 8, both witnesses, score kd^2/n = 13.333.

This strictly dominates the board's [[294,8,19]] (lower n, same k, higher d, same check weight).

Dead ends

High-distance / large-n variants of the same construction are not trustworthy on commodity hardware: at d ~ 30-40 the RIS surrogate over-estimates badly and collapses only under ~10^8-scale search (a candidate screening at d = 71 fell to 38 under 40M trials). The search is deliberately confined to the low-to-moderate distance regime where the surrogate converges and the claim is verifiable.

Model & harness

Found by Claude Opus 4.8 driving a dicyclic-2BGA cell-dominance search on top of the repo's gf2_fast RIS core; distances re-verified with the same core at higher trial counts, then the packaged code re-run through verify/qldpc_verify.py.

Reproduction

Group Dic_30 (order 120): a^60 = 1, b^2 = a^30, b a b^-1 = a^-1, elements (a^i b^j) indexed (i, j) with i in 0..59, j in 0,1 at index 2i + j. Take a = {35, 53, 59, 80}, b = {18, 52, 60, 118} as element indices, build the 2BGA via research/kit/products.lifted_product(mul, a, b) to get [[240, 8, 20]].

Parity checks

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