Repository navigation
CC engine: erasure bound (GH-195, opt-in token erasure) - #219
Merged
Merged
Conversation
…, opt-in -cc-rules token erasure (default off; needs pack): at a node whose disjoint odd-row packing leaves extra = (w - |S|) - p <= 2 added qubits uncharged, the node is cut when no completion S + y + z (y in the packed rows' free candidates, z at most extra further free qubits) is syndrome-free and detected. Decided by peeling + dense elimination of the region with exact back-substitution (phi H_R = 0, F H_R = G_R); fingerprint collisions only make the rule give up. Idea from Qubitserf 04b9349 (S. Cercelescu, MIT), re-derived for our search state; clean-room code. Test Part R (own RNG stream), mutants 22/23, flag checks; runner scripts. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…erf 04b9349, S. Cercelescu, MIT) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ts by scan) Tier 1 panel: LP_442 paid ~10 ms for the eager pair table (wall 1.44x on a 25 ms run). Node counts unchanged. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…c-erasure-start=N, default 16384) A test costs microseconds; on the Tier 1 LP codes (6-30k nodes in total) it cost 1-3 ms on 25 ms runs. Deterministic (node counts), sound for any per-node choice. Driver tests use N = 0. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…y; gate exploration; Tier 1-4 panel) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…rse rules, stem renames) into GH-195 The erasure rule is ported onto the new search: packed redundant rows (GH-181 sparse) contribute their free candidates to the region, the test runs after the charge check, mutants renumbered 25/26 (22-24 are GH-181's), test Part U (argv[8]) adds charge, bfs and GH-181 tokens, driver configurations with -cc-roworder=auto. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… current erasure state The probe compared A with erasure against B before B's own start level (B had no erasure tests yet), which steered BB_360 to the index order. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…entity; Tier 1-4 panel) and the old-base Tier 5 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…port Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…-195 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
guluchen
pushed a commit
that referenced
this pull request
Nov 4, 2026
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> # Conflicts: # MODIFICATIONS.md # README.md # src/cc/cc_half.h # src/core/distqldpc.cc # tests/test_cc_flags.sh
This was referenced Nov 4, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Issue #195 (hub #15). Opt-in CC rule
erasure(-cc-rules=...,erasure, needspack) plus-cc-erasure-start=N(default 16384). Default output is byte-identical with the token off.Base: main 134d756 (merged; solver as of 02879a9). Measured binary 8667bc0 (solver sources identical to the head). Records:
optimization/experiments/GH-195/REPORT.md(main 02879a9 results undermain02879/, the earlier PR #180-based runs kept as the old-base records).Rule
At a node S whose packing scan found disjoint odd rows (rows of H, or GH-181 redundant rows) with free candidate sets R_1..R_p, let R be their union and extra = (w - |S|) - p. If extra <= 2 (and |R| <= 128), the node is cut unless some y in R and z (at most extra free qubits outside R) give H(S + y + z) = 0 and G(S + y + z) != 0. Decided by peeling + dense elimination of the region with exact back-substitution (phi H_R = 0 with 64 random lanes, F H_R = G_R with full-width labels), then single/pair lookups (pair table built lazily). Tests start at the level after the first level of the half with >= N nodes; with
-cc-roworder=autothe probe runs the other configuration with the current erasure state.Soundness (MODIFICATIONS.md, GH-195): every other rule keeps a fixed weight-w target e* with S in e* and e* disjoint from the forbidden set (excl, orbf, overlap, tiebreak Lemmas A-C, xorunit forbids). Each packed row is odd in syn(S) and even in syn(e*), so it holds a free qubit of e* \ S in its own R_i; at most extra qubits of e* \ S lie outside R, so e* solves the relaxation. Fingerprint collisions only stop a cut; labels are exact; gates are cost-only.
Credit: the erasure bound idea is from Qubitserf 04b9349 (S. Cercelescu, MIT); clean-room implementation (NOTICE, MODIFICATIONS.md).
Tier 0
make test-ccPASS: new Part U, 259 200 ladders over rule subsets with pack,erasure (charge, bfs order and [Mac agent] CC engine: redundant sparse checks and XOR unit propagation #181 tokens mixed in), 0 bad; mutants 25 (bound weakened by one) 1370/9600 and 26 (fixed support ignored) 2204/9600 ladders wrong. Parts B/H erasure driver configurations (incl.-cc-roworder=auto) 0 bad.make test-cc-flagsPASS (566 checks).tiebreak -cc-roworder=auto): identical (one MaxSAT ub-pre timing line, reproduced base-vs-base).Tiers 1-4 (5 seeds, medians; yfclab2 CPUs 120-127)
Arms: def = main 02879a9 CC default; defer = +erasure; tbra = +tiebreak, -cc-roworder=auto; tbraer = tbra + erasure.
(a) def -> defer: PASS in all tiers. (b) tbra -> tbraer: Tiers 2-4 PASS; Tier 1 geomean 1.000 because the rule never reaches its start level on LP_340 / LP_442 (0 tests, identical nodes).
(a) main default -> +erasure
(b) main default + tiebreak + roworder auto -> + erasure
220 runs, science problems: []
OVERALL FAIL
Tier 5 (6 h)
Solved codes 0.44-0.83x (no solved code slower: PASS). Unsolved: TN codes 0.61-0.67x to the baseline's final lb; BB_756 / BB_1080 1.03-1.04x. No new lower bound (TN_496 lb 25 and TN_360 lb 23 are at or below the stems).
def -> defer
geomean time to the baseline final value 0.538 (5 codes)
tbra -> tbraer
geomean time to the baseline final value 0.680 (8 codes)
Bound events (lb value@seconds, from 18)
science problems: []
TIER5 PASS (no solved code more than 1.2x slower)
🤖 Generated with Claude Code