Skip to content

Heaviest-term lower bound on C_g over generator states - #60

Merged
Autoplectic merged 1 commit into
mainfrom
generator-heaviest-term
Nov 15, 2026
Merged

Autoplectic merged 1 commit into
mainfrom
generator-heaviest-term

Conversation

@Autoplectic

Copy link
Copy Markdown
Member

Summary

Ports the cpfci prototype gen_heaviest_bb.py, the first bound to certify C_g > G on a survey process with a full-support joint.

  • heaviest_term_bound takes an optional weight_cap(box): an extra upper bound on the heavy term's weight over a box, or None to prune it. Without it the static bound is unchanged.
  • generator_heaviest_term_bound(problem, ...): a generator's states are an exact decomposition whose heaviest term is its heaviest state, and that state satisfies the generator equations, so the weight cap is the one-explicit-state generator-cap LP (_HeaviestStatesRelaxation(problem, 1)) over the box of beliefs. The docstring records why the root's weight floor 1/(2^m - 1) (a cardinality bound on optimal decompositions) stays valid for generators with more states: a lighter heaviest state forces H[pi] >= log2(2^m - 1) >= min(C_mu+, C_mu-) >= C_g.
  • Pipeline: generator_heaviest_term=False by default; when set, it runs after the static stage on joints with |S+| + |S-| <= 7 while the bracket is open, with a 0.3 share of the remaining budget.

Why opt-in

On ((0,1),(0,2),(0,1)) the LP excludes the G-optimal heavy term only in boxes of radius about 1e-4, so the bound passes G = 0.92433 after ~220k boxes (about 30 min) and plateaus at 0.928157 after 8 h. On RLL it stays at G for 40 s. Inside a default time budget it would rarely help.

Test plan

  • A weight cap that admits nothing prunes every box
  • On ((0,1),(0,2),(0,1)) (matrices embedded): the LP admits the G-optimal heavy term (t* = 0.6944) in a radius-1e-2 box and caps it below t* - 1e-3 at radius 1e-4
  • The generator bound stays below a word-verified generator's entropy (0.96971)
  • Pipeline smoke run with the flag on: the stage runs and logs
  • Generator suites: 79 passed; ruff; ty has no new diagnostics

Made with Cursor

…nerator states

heaviest_term_bound takes a weight_cap per box; generator_heaviest_term_bound supplies the
one-explicit-state generator-cap LP. Opt-in pipeline stage (generator_heaviest_term=True).

Co-authored-by: Cursor <cursoragent@cursor.com>
@Autoplectic
Autoplectic merged commit d7058c3 into main Nov 15, 2026
10 checks passed
@Autoplectic Autoplectic mentioned this pull request Nov 15, 2026
3 tasks done
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant