Repository navigation
Description
Hub: #15. Baseline: main 123011df (CC code identical to e52d15b; CC rules excl,pack,orbf,parity,leaf,overlap, -ub-search Stern). Timing basis: main 12b3e05 tables (optimization/baselines/) and the GH-152 Tier 5 old arm (same CC code as main). PR #155 (-cc-aut=on default) is not merged, so every comparison is against main's CC defaults, and the panels are repeated with -cc-aut=on on both sides. PI approval for this round: 2026-10-29 (Candidate 1 of the CC literature note).
Goal of the round: a stronger node lower bound in the CC engine, so that fewer nodes survive at the hard (refutation) levels of the open TN codes, where the greedy disjoint packing pack is weakest because 4-cycles make odd checks share their candidates.
Background
At a CC node with cluster S, odd-check set U and available qubits A (not in S, not forbidden), every completion e of weight w needs |e \ S| >= tau(U, A), the minimum hitting set of {N(u) & A : u in U}. The chain is degree bound <= nu (integer packing, our pack) <= tau* (LP relaxation) <= tau. Any y >= 0 on U with sum_{u ni j} y_u <= 1 for every j in A is dual feasible, so ceil(sum y) <= tau (weak duality); no LP has to be solved.
Proposals
- Fractional charge (
charge). Local-degree charge y_u = 1/max_{j in N(u) & A} |N(j) & U| (feasible qubit by qubit), then a greedy raise of each y_u by the smallest residual capacity of its qubits (still feasible, never weaker). Bound = max(pack, ceil(sum y)). Exact integer arithmetic (all capacities scaled by lcm(1..max column weight)).- Note: "packing plus fractional fill" on top of a maximal greedy packing is always zero (every unpacked odd row meets a packed row, whose qubits have no residual capacity), so the fill is applied to the local-degree start instead.
- Edge-cover bound (
ecover, Gallai). Choose U' within U greedily such that every available qubit touches at most 2 rows of U' (a "2-packing"; it contains the greedy packing). On U' the hitting set is exactly a minimum edge cover of the multigraph whose edges are the qubits touching 2 rows of U' (qubits touching 1 row are loops), so by Gallai's theorem tau(U') = |U'| - nu_match (maximum matching, Edmonds blossom on <= ~40 vertices), provided every row has an available qubit (asserted; otherwise the node is dead). tau(U) >= tau(U'). When every available qubit touches <= 2 odd rows (common at depth >= 2 for column weight 3), U' = U and the bound is the exact tau.- This also covers the Okada-Kasai bipartite matching bound a + b - s: for two check classes in which every qubit has at most one neighbour per class, U' = U_a + U_b is such a 2-packing and the matching is bipartite. The per-node Delta <= 2 condition is checked directly, so no structural assertion per code family is needed.
- Exact tau by LP / Lagrangian* (not selected): equals the dual optimum but costs an LP per node; Lagrangian converges more slowly than proposals 1-2 (literature note, item 8).
Selection
Proposals 1 and 2 as two independent rules in -cc-rules (charge, ecover), both off by default; output with both off is byte-identical to main. They are only evaluated when the packing does not prune and |U| (resp. |U'|) exceeds the remaining budget (otherwise no hitting-set bound can prune), so the per-node cost is paid only where a prune is possible.
Correctness risk: low-medium. Soundness: weak LP duality (charge) and Gallai's theorem (ecover), both applied to the hitting-set relaxation that pack already relies on (every odd row of S needs an odd number >= 1 of qubits of e \ S, all available). The bounds replace the pack test by max(pack, new bound) > remaining budget, so all other rules (excl, orbf, parity, leaf, overlap+forbid, sibling exclusion) keep their arguments unchanged. Integer arithmetic only.
Plan
- Tier 0: byte identity (tier0+1, both engines,
-v),make test-ccwith new randomized parts (bound vs brute-force tau on random hitting-set instances; ladders vs brute force under all rule subsets), mutants (charge inflated by 1/maxdeg; ecover without the Delta <= 2 check) that must change answers; GF(2) check of every witness. -cc-stats: per-level charge/ecover evaluations and prunes, nodes by remaining budget.- Tiers 1-4: 5-seed medians vs main CC (and vs
-cc-aut=onon both sides), node counts per level. - Tier 5 (6 h, default seed): TN_216/252/288/324 and the other open TN codes, BB_360, BB_756, LP codes. Any new lower bound is reported as PLAUSIBLE; no stems are renamed.
- Server: yfclab2 cores 24-63 only, one process per pinned core, 4 GB cap.
Credits (to go into NOTICE / MODIFICATIONS.md): Banfi, Ferrari, Favano, Tarable, Barletta, arXiv:2610.28008 (charge bound); Okada and Kasai, github.com/kasaikenta/cpm-ldpc-distance (scaled set-cover dual, bipartite matching bound); Gallai's theorem (edge cover = |V| - maximum matching). Clean-room implementation from the published mathematics.
Activity
GH-157: Part I tests (bounds vs brute force, ladders with charge/ecov…
GH-157: fix ecover early exit (the cheap filters were inverted) and k…
GH-157: drop a development switch
GH-157: incremental c_j in toggle; local-degree charge fused into the…
GH-157: soundness proof (MODIFICATIONS.md), credits (NOTICE), README …
GH-157: ecover U' selected inside the pack scan (single greedy pass, …
GH-157: gap gate -cc-lb-gap=G (evaluate only where remaining budget -…
GH-157: in-search bounds call lb_charge / lb_ecover on one copy of th…
GH-157: count c_j while copying the candidate sets (lb_charge_counted…
GH-157 on top of GH-152 (-cc-aut): charge / ecover node lower bounds …
GH-157: Tier 0 records (tests, identity), Tier 1-4 panel and floor re…
GH-157: -cc-lb-auto=P (default 45): switch the bounds off for a half …
GH-157 on GH-152: -cc-lb-auto (src of experiment/gh-157-cc-charge 014…
GH-157 on GH-152: -cc-lb-auto (src of experiment/gh-157-cc-charge 014…
GH-157: auto switch-off defaults 40 % / 100 000 evaluations (early le…
6 remaining items
GH-157: charge in the default -cc-rules (PI decision 2026-10-29, on t…
GH-157 tests: Part I(a) restores the RNG state, so the other parts se…
GH-157: adoption records (Tier 0 of the charge default on top of -cc-…
Merge remote-tracking branch 'origin/main' into experiment/gh-157-cc-…
GH-157 report: note the merge of main 6083e66
GH-157: REPRODUCTION.md - the four new CC lower bounds reproduced wit…
guluchen commentedon Oct 29, 2026
Adoption update (PI decisions of 2026-10-29), PR #161 (not merged):
ecoverremoved.chargeis now in the default-cc-rules(excl,pack,orbf,parity,leaf,overlap,charge), on top of the-cc-aut=ondefault; merged with main6083e662.make test-ccPASS, flags 442/442, tier 0-3 answers 61/61 = stem, MaxSAT path and old CC path (-cc-rules=excl,pack,orbf,parity,leaf,overlap) identical to main in all deterministic configurations (REPORT.mdsection 9).REPRODUCTION.md,mrvorder, original labels, 12 h, cores 24-27): TN_360 >= 23 (41 464 s), TN_396 >= 23 (35 297 s), TN_504 >= 24 (41 050 s), TN_648_10 >= 22 (31 744 s) all REPRODUCED; every level EMPTY. No stems renamed.Merge pull request #161 from guluchen/experiment/gh-157-cc-charge
Rename eight tier5 stems with GH-157/GH-162/GH-183/GH-181 CC lower bo…
Rename eight tier5 stems with GH-157/GH-162/GH-183/GH-181 CC lower bo…
Merge main (c94d390, GH-157 charge default) into GH-162 tiebreak
Merge pull request #216 from guluchen/data/cc-lb-stems-20261031
Merge GH-162 branch (with main c94d390, GH-157 charge default) into G…
Merge GH-183 branch (with GH-162 and main c94d390, GH-157 charge defa…
Merge GH-206 stack (GH-162, GH-183, GH-206 and main c94d390 with GH-157…