← back to the stabilizer board
[[48,4,4]] d ≤stabilizer
n
48
k
4
d
4
kd²/n
1.333
w
5

Share this result

Distance

a general stabilizer code has no X and Z sides: d is the minimum Pauli weight of a nontrivial logical operator (a Y factor counts one qubit), and the witness is one Pauli operator that commutes with every generator and is not a product of them
d 4 · witness Pauli weight 4 (claimed upper_bound)
witness operator (Pauli string, 4 qubits)
IIIIIIIIIIIIIIIIIIIIIIIIIZIIIIIIIZIIZIIIIIIIZIII X: [] Z: [25, 33, 36, 44]
certificate none yet · distance stands as a self-certified upper bound (d ≤); the Pauli-weight certifier is not built yet, so stabilizer entries cannot earn d= for now

Diagnostics

computed by the verifier from the parity checks, the layout, and the stored witnesses; shown as evidence, not used for ranking
girth S 4 (shortest cycle of the generator Tanner graph; longer is friendlier to belief propagation)
check weights S 5
qubit degrees S 5
trapping sets S (1,5)×48 (2,6)×192 (3,7)×672 (smallest syndrome weight at each size, connected sets of up to 3 qubits)
full (size, syndrome weight): count census for S
(1,5): 48 (2,6): 192 (2,8): 96 (3,7): 672 (3,9): 1264 (3,11): 240

Construction & provenance

authors @cbjuan
provenance submitted through the challenge
novelty novelty not audited
construction Perturbed bivariate bicycle (PBB) code, extracted as one connected component (of 6 isomorphic components) of a disconnected PBB presentation at ell=12, m=12: A=1+x3y6, B=1+x2y6+x4, C-perturbation=0, D-perturbation=1+x4 (0-indexed exponent pairs: A=[[0,0],[3,6]], B=[[0,0],[2,6],[4,0]], C=[], D=[[0,0],[4,0]]). The parent presentation (presentation_id PL-78c3e7bf, qcode-discovery @ d6abdbd) is disconnected into 6 isomorphic [[48,4,4]] components; this submission's symplectic matrix is the induced restriction of that presentation to one component's qubit support (evaluation/connectivity.py:_induced_presentation_subcode in the source repo), performed in this submission session.
model Claude Claude Opus 5, GPT-5.6 Sol (claimed, not verified)
date 2026-10-07
notes Checked for duplication against the current board: no existing entry (CSS or stabilizer) at this [[n,k,d]]. First published in arXiv:2610.06623.
family bivariate 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

[[48,4,4]] — exact non-CSS perturbed bivariate bicycle (PBB) code

Paper: arXiv:2610.06623, "Large Language Model-Guided Discovery of Weight-Five Bivariate Bicycle Codes" (component of presentation PL-78c3e7bf).

Direction & hypothesis

Target: the general-stabilizer board's unrestricted x weight-6 (and looser) cells. Same PBB construction family as the companion [[144,12,12]], [[216,4,10]], [[12,2,3]], [[144,4,8]], [[180,2,11]], [[360,4,12]], [[360,12,20]], and [[360,4,24]] submissions in this batch (block-1 z-part [C | D] added to a CSS bivariate-bicycle stabilizer matrix: H = (A B | C D; 0 0 | B^T A^T)).

What was searched

Source: a weight-5-targeted LLM-guided evolutionary search (OpenEvolve, "pbb-large" campaign) over 4-tuples (A, B, C, D) at (ell=12, m=12), screened by k, isotropy, the combined non-CSS gate (evaluation/noncss_gate.py), and a BP-OSD distance estimate. The surviving presentation PL-78c3e7bf (n=288, k=24) is a direct sum of 6 isomorphic components (evaluation/connectivity.py:stabilizer_components + components_isomorphic, confirmed homogeneous and BLISS-isomorphic); each component is [[48,4,4]], with the parent's exact MILP distance (results/weight5_publication_catalogue.jsonl, `distance_class.status_code: "E"`) transferring to each component.

Unlike the companion [[144,4,8]] and [[180,2,11]] submissions, no standalone explicit presentation of this component already existed in the source repository as its own clean (ell', m') pair. This submission builds one directly: the parent presentation's symplectic matrix was constructed via evaluation/pbb_code.py:build_pbb_code(12, 12, ...), then restricted to one component's qubit support via evaluation/connectivity.py:_induced_presentation_subcode (the generator-presentation-preserving induced restriction, not the row-echelon one) — performed in this submission session, using only the source repository's own, already-published tools.

Evidence trail

Parent: (ell, m) = (12, 12), A = 1 + x^3y^6, B = 1 + x^2y^6 + x^4, perturbation C = 0, D = 1 + x^4 (0-indexed exponent pairs: A=[[0,0],[3,6]], B=[[0,0],[2,6],[4,0]], C=[], D=[[0,0],[4,0]]), n=288, k=24.

  • Source repo's distance ladder: exact MILP certificate on the parent
  • (distance_class.status: "exact", status_code: "E"), transferred to each of the 6 isomorphic [[48,4,4]] components by the standard component-isomorphism argument.

  • Independent re-verification in *this* repository: the induced component
  • matrix (built this session, see above) was run through this repo's own cli/qldpc.py submit --dry-run (RIS search, 20,000 trials, gf2_fast accelerator at 1,000,000 trials). Independently found d<=4, matching the source's exact claim.

Final claim here: witness-backed upper_bound; the source repository's own evidence tier is exact.

Dead ends

Not applicable — this submission mined an existing, already-vetted and now-published campaign result (plus a direct component extraction performed this session) rather than running a new search.

Tools

Model: jointly attributed to Claude Opus 5 and GPT-5.6 Sol (both aliases recovered against the parent's lineage log in the source repository's historical_attribution.jsonl), matches provenance.model. The component extraction and packaging in *this* repository was done separately, using only this repository's own and the source repository's published tooling.

Reproduction

from evaluation.pbb_code import build_pbb_code
from evaluation.connectivity import stabilizer_components, _induced_presentation_subcode
parent = build_pbb_code(ell=12, m=12,
                         A_terms=[(0,0),(3,6)],
                         B_terms=[(0,0),(2,6),(4,0)],
                         C_terms=[],
                         D_terms=[(0,0),(4,0)])
comp = stabilizer_components(parent)[0]
sub = _induced_presentation_subcode(parent, comp)
# sub.matrix is the (48, 96) symplectic stabilizer matrix [X-part | Z-part]

Source: github.com/qiskit-community/qcode-discovery @ d6abdbd, evaluation/pbb_code.py, evaluation/connectivity.py, results/weight5_publication_catalogue.jsonl.

Stabilizer generators

generators 48 (max weight 5; 24 mixed X/Z) (one binary symplectic matrix S = (A | B); generator i is X on A_i and Z on B_i, Y where both)
generators (48, Pauli strings on 48 qubits)
XIIIIIIXIIIIIIIIIIIIIIIIYIIIIXIIYIIIIIIIIIIIIIII IXIIIIXIIIIIIIIIIIIIIIIIIYIIXIIIIYIIIIIIIIIIIIII IIXIIIIIIXIIIIIIIIIIIIIIIIYIIIIXIIYIIIIIIIIIIIII IIIXIIIIXIIIIIIIIIIIIIIIIIIYIIXIIIIYIIIIIIIIIIII IIIIXIIIIIIXIIIIIIIIIIIIIIIIYIIIIXIIYIIIIIIIIIII IIIIIXIIIIXIIIIIIIIIIIIIIIIIIYIIXIIIIYIIIIIIIIII IIIIIIXIIIIIIXIIIIIIIIIIIIIIIIYIIIIXIIYIIIIIIIII IIIIIIIXIIIIXIIIIIIIIIIIIIIIIIIYIIXIIIIYIIIIIIII IIIIIIIIXIIIIIIXIIIIIIIIIIIIIIIIYIIIIXIIYIIIIIII IIIIIIIIIXIIIIXIIIIIIIIIIIIIIIIIIYIIXIIIIYIIIIII IIIIIIIIIIXIIIIIIXIIIIIIIIIIIIIIIIYIIIIXIIYIIIII IIIIIIIIIIIXIIIIXIIIIIIIIIIIIIIIIIIYIIXIIIIYIIII IIIIIIIIIIIIXIIIIIIXIIIIIIIIIIIIIIIIYIIIIXIIYIII IIIIIIIIIIIIIXIIIIXIIIIIIIIIIIIIIIIIIYIIXIIIIYII IIIIIIIIIIIIIIXIIIIIIXIIIIIIIIIIIIIIIIYIIIIXIIYI IIIIIIIIIIIIIIIXIIIIXIIIIIIIIIIIIIIIIIIYIIXIIIIY IIIIIIIIIIIIIIIIXIIIIIIXYIIIIIIIIIIIIIIIYIIIIXII IIIIIIIIIIIIIIIIIXIIIIXIIYIIIIIIIIIIIIIIIYIIXIII IXIIIIIIIIIIIIIIIIXIIIIIIIYIIIIIIIIIIIIIIIYIIIIX XIIIIIIIIIIIIIIIIIIXIIIIIIIYIIIIIIIIIIIIIIIYIIXI IIIXIIIIIIIIIIIIIIIIXIIIIXIIYIIIIIIIIIIIIIIIYIII IIXIIIIIIIIIIIIIIIIIIXIIXIIIIYIIIIIIIIIIIIIIIYII IIIIIXIIIIIIIIIIIIIIIIXIIIIXIIYIIIIIIIIIIIIIIIYI IIIIXIIIIIIIIIIIIIIIIIIXIIXIIIIYIIIIIIIIIIIIIIIY ZIIIIIIIIIIIIIIIZIIIIZIIZIIIIIIIIIIIIIIIIIIZIIII IZIIIIIIIIIIIIIIIZIIZIIIIZIIIIIIIIIIIIIIIIZIIIII IIZIIIIIIIIIIIIIIIZIIIIZIIZIIIIIIIIIIIIIIIIIIZII IIIZIIIIIIIIIIIIIIIZIIZIIIIZIIIIIIIIIIIIIIIIZIII IZIIZIIIIIIIIIIIIIIIZIIIIIIIZIIIIIIIIIIIIIIIIIIZ ZIIIIZIIIIIIIIIIIIIIIZIIIIIIIZIIIIIIIIIIIIIIIIZI IIIZIIZIIIIIIIIIIIIIIIZIIZIIIIZIIIIIIIIIIIIIIIII IIZIIIIZIIIIIIIIIIIIIIIZZIIIIIIZIIIIIIIIIIIIIIII ZIIIIZIIZIIIIIIIIIIIIIIIIIIZIIIIZIIIIIIIIIIIIIII IZIIZIIIIZIIIIIIIIIIIIIIIIZIIIIIIZIIIIIIIIIIIIII IIZIIIIZIIZIIIIIIIIIIIIIIIIIIZIIIIZIIIIIIIIIIIII IIIZIIZIIIIZIIIIIIIIIIIIIIIIZIIIIIIZIIIIIIIIIIII IIIIZIIIIZIIZIIIIIIIIIIIIIIIIIIZIIIIZIIIIIIIIIII IIIIIZIIZIIIIZIIIIIIIIIIIIIIIIZIIIIIIZIIIIIIIIII IIIIIIZIIIIZIIZIIIIIIIIIIIIIIIIIIZIIIIZIIIIIIIII IIIIIIIZIIZIIIIZIIIIIIIIIIIIIIIIZIIIIIIZIIIIIIII IIIIIIIIZIIIIZIIZIIIIIIIIIIIIIIIIIIZIIIIZIIIIIII IIIIIIIIIZIIZIIIIZIIIIIIIIIIIIIIIIZIIIIIIZIIIIII IIIIIIIIIIZIIIIZIIZIIIIIIIIIIIIIIIIIIZIIIIZIIIII IIIIIIIIIIIZIIZIIIIZIIIIIIIIIIIIIIIIZIIIIIIZIIII IIIIIIIIIIIIZIIIIZIIZIIIIIIIIIIIIIIIIIIZIIIIZIII IIIIIIIIIIIIIZIIZIIIIZIIIIIIIIIIIIIIIIZIIIIIIZII IIIIIIIIIIIIIIZIIIIZIIZIIIIIIIIIIIIIIIIIIZIIIIZI IIIIIIIIIIIIIIIZIIZIIIIZIIIIIIIIIIIIIIIIZIIIIIIZ
symplectic rows (A | B) (48, sparse supports)
X: [0, 7, 24, 29, 32] Z: [24, 32] X: [1, 6, 25, 28, 33] Z: [25, 33] X: [2, 9, 26, 31, 34] Z: [26, 34] X: [3, 8, 27, 30, 35] Z: [27, 35] X: [4, 11, 28, 33, 36] Z: [28, 36] X: [5, 10, 29, 32, 37] Z: [29, 37] X: [6, 13, 30, 35, 38] Z: [30, 38] X: [7, 12, 31, 34, 39] Z: [31, 39] X: [8, 15, 32, 37, 40] Z: [32, 40] X: [9, 14, 33, 36, 41] Z: [33, 41] X: [10, 17, 34, 39, 42] Z: [34, 42] X: [11, 16, 35, 38, 43] Z: [35, 43] X: [12, 19, 36, 41, 44] Z: [36, 44] X: [13, 18, 37, 40, 45] Z: [37, 45] X: [14, 21, 38, 43, 46] Z: [38, 46] X: [15, 20, 39, 42, 47] Z: [39, 47] X: [16, 23, 24, 40, 45] Z: [24, 40] X: [17, 22, 25, 41, 44] Z: [25, 41] X: [1, 18, 26, 42, 47] Z: [26, 42] X: [0, 19, 27, 43, 46] Z: [27, 43] X: [3, 20, 25, 28, 44] Z: [28, 44] X: [2, 21, 24, 29, 45] Z: [29, 45] X: [5, 22, 27, 30, 46] Z: [30, 46] X: [4, 23, 26, 31, 47] Z: [31, 47] X: [] Z: [0, 16, 21, 24, 43] X: [] Z: [1, 17, 20, 25, 42] X: [] Z: [2, 18, 23, 26, 45] X: [] Z: [3, 19, 22, 27, 44] X: [] Z: [1, 4, 20, 28, 47] X: [] Z: [0, 5, 21, 29, 46] X: [] Z: [3, 6, 22, 25, 30] X: [] Z: [2, 7, 23, 24, 31] X: [] Z: [0, 5, 8, 27, 32] X: [] Z: [1, 4, 9, 26, 33] X: [] Z: [2, 7, 10, 29, 34] X: [] Z: [3, 6, 11, 28, 35] X: [] Z: [4, 9, 12, 31, 36] X: [] Z: [5, 8, 13, 30, 37] X: [] Z: [6, 11, 14, 33, 38] X: [] Z: [7, 10, 15, 32, 39] X: [] Z: [8, 13, 16, 35, 40] X: [] Z: [9, 12, 17, 34, 41] X: [] Z: [10, 15, 18, 37, 42] X: [] Z: [11, 14, 19, 36, 43] X: [] Z: [12, 17, 20, 39, 44] X: [] Z: [13, 16, 21, 38, 45] X: [] Z: [14, 19, 22, 41, 46] X: [] Z: [15, 18, 23, 40, 47]
Code ID 48-4-4 · download JSON · raw on GitHub