Skip to content

Sum the crossing count scaled by the inside width in the T term - #44

Merged
guyvdbroeck merged 1 commit into
mainfrom
score-crossing
Aug 31, 2026
Merged

Sum the crossing count scaled by the inside width in the T term#44
guyvdbroeck merged 1 commit into
mainfrom
score-crossing

Conversation

@guyvdbroeck

Copy link
Copy Markdown
Member

The separator term of vtree_cost summed 2^w0 over the internal cuts, with w0 the smallest of the inside width, the outside width and the crossing-clause count. As the width the term sums, that minimum favours a cut whose outside width is small. The chain a shallow edge-binarized reading builds keeps the outside width small at every node while carrying most of the formula across each cut, so the conversion search chose those chains, and they do not compile.

The term now sums 2^(cross · in / m) per cut — the crossing count scaled by the inside width over the clause count, which is at most the inside width. The excess term is still measured against the sum of the smallest bound; every other term is unchanged, and the module doc states the formula.

Evidence, offline: 44 formulas with six trees each (the previous release's pick and every catalogue family), every tree compiled under one compiler with a 60 s budget. The minimum ordered a compiling tree below a failing one in 71 of 240 pairs and picked a compiling tree among the portfolio's own candidates on 4 of 23 formulas; the new width reads 193 of 240 and 14 of 23. End to end, on the 1,074 model-counting competition track-1 instances at 120 s, the count goes from 511 to 574, 65 gained and 2 lost, with the instances both solve running at the same speed.

Two tests move with the score and are updated: the hand-computed fixture cost (separator term 3 → 1.8, worked in the comment) and the peak-mode selection pin, whose multiplier-fixture winner was re-observed as flowcutter-primal in five of five runs.

The separator term summed 2^w0 over the internal cuts, w0 the smallest
of the inside width, the outside width and the crossing-clause count.
As the width the term sums, that minimum favours a cut whose outside
width is small, and the chain a shallow edge-binarized reading builds
keeps the outside width small at every node while carrying most of the
formula across each cut. The conversion search chose those chains, and
they do not compile.

The term now sums 2^(cross · in / m) per cut: the crossing count scaled
by the inside width over the clause count, which is at most the inside
width. The excess term is still measured against the sum of the
smallest bound, and every other term is unchanged.

On 44 formulas with six trees each, every tree compiled under the same
compiler with a 60 s budget, the minimum ordered a compiling tree below
a failing one in 71 of 240 pairs and picked a compiling tree among the
portfolio's own candidates on 4 of 23 formulas; the new width reads
193 of 240 and 14 of 23. End to end, on the 1,074 model-counting
competition track-1 instances at 120 s, the count goes from 511 to 574
with 65 gained and 2 lost, and the instances both solve run at the
same speed.

The peak-mode selection pin moves with the score: the multiplier
fixture's winner was re-observed as flowcutter-primal in five of five
runs.
@guyvdbroeck
guyvdbroeck merged commit 5387a60 into main Aug 31, 2026
2 checks passed
@guyvdbroeck
guyvdbroeck deleted the score-crossing branch August 31, 2026 03:49
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