You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This is a mechanism-focused follow-up to #56 and a concrete factoring case study for #53.
Issue #56 establishes the end-to-end CnC result, but it does not yet explain what the region brancher is exploiting inside the multiplier, nor separate three different notions that can easily be conflated:
the semantic mechanism in the multiplier circuit;
a local CNF rewrite of the same circuit (output-alias-v1 vs output-direct-v2);
a different multiplier decomposition (array-tseitin-v1 vs the current row-ripple/majority-carry circuit).
The paper claim should not be generic “encoding invariance.” The working claim is narrower and mechanistic:
Region branching discovers a low-order modular decomposition of multiplication. A shallow macro branch fixes a consistent residue class of the factor pair modulo 2^k; fanout through partial products and, especially, the carry network then amplifies those few semantic choices into a much larger closure.
Cover is sufficient for the SAT/CnC use here. Whether a branching formalism additionally requires a partition is orthogonal to this mechanism and is not a main objective of this issue.
Frozen setting
Use the same ten 30-bit UNSAT target integers and the same current CircuitSAT instances as the completed server run:
march SHA-256: a0236ad5634fb680fa84220ad6806e5def15bca4d9c8850f1abbc397cedec416
Primary audit directories:
structural-audit-w30-t2048-v1/
encoding-ablation-w30-t2048-v2/
Evidence already collected
1. The semantic frontier is shallow, but its propagation closure is large
Exact replay of the frozen trace gives:
3,331 leaf cubes;
mean leaf macro depth: 2.672;
mean rule size: 63.98 semantic variables;
mean feasible branches per rule: 7.47;
per branch edge: 58.78 explicit decisions and 394.93 newly propagated assignments on average;
per leaf: 139.89 explicit decisions, 1,235.84 assigned variables total, and 973.31 additional assignments after excluding root propagation and decisions;
assignment amplification: 8.089×.
Decision literals are concentrated in the multiplier rather than only at its inputs:
factor bits: 12.50 per leaf;
partial products: 43.83;
sum wires: 24.16;
carry components: about 59.4 combined;
decisions reach only through row 9, with most mass in the earliest rows.
The additional BCP closure is even more concentrated:
carry network: 728.94 assignments per leaf;
partial products: 223.99;
sums: 15.10;
factor bits: 5.21.
Factor-false decisions correlate with newly fixed partial products (Pearson r=0.719) and with total additional propagation (r=0.675), consistent with a causal path factor bit = 0 -> partial-product fanout collapses -> carry constraints propagate.
2. The branches behave like low-bit modular residue lifting
At the first macro branch, the median child fixes contiguous 6-bit prefixes of both factors, and every child satisfies a_<6 b_<6 = N (mod 2^6).
At the leaves, the median contiguous prefix is 10 bits for each factor, and every leaf satisfies a_<10 b_<10 = N (mod 2^10).
Almost no factor assignments lie outside those prefixes (mean 0.1009; p95 = 0).
Most importantly, replacing a full semantic leaf cube by only its contiguous factor-prefix assignment produces exactly the same BCP closure on all 5,280 original wires for 3,211/3,331 leaves (96.4%). Every prefix closure is a subset of the macro-cube closure; p95 missing assignments is 0, with a mean of 6.67 due to a small tail.
This is the strongest current evidence for the mechanism: the macro branch is usually a redundant, propagation-friendly certificate of a much simpler modular state.
3. output-alias-v1 vs output-direct-v2 is a pure representation ablation
For the exact same CircuitSAT instances and frozen semantic frontiers:
v1: 11,280 variables / 31,050 clauses;
v2: 6,120 variables / 20,730 clauses;
all 3,331 paired cubes have identical BCP assignments when projected to the 5,280 original circuit wires;
conquer geometric means, v2/v1: conflicts 0.9961 and CPU 0.9913; bootstrap intervals include 1;
hard-cube ordering is similar but not identical (median Spearman 0.963; median hardest-5 overlap 0.770);
march produces exactly the same cube count for all ten instances at the same active-variable cutoff;
1,827 paired march cubes have identical projected BCP closure on the original wires.
Therefore the observed equivalence is expected: v2 eliminates local output aliases without changing the projected propagation relation. It supports robustness to this rewrite, not robustness to arbitrary CNF encodings.
4. Old array-tseitin-v1 is a topology/decomposition change, not a clean encoding rewrite
The old and current benchmarks use the same ten target integers, but their internal circuits differ:
old Array-Tseitin: 5,460 variables / 17,820 clauses, maximum clause width 3, regular 30×30 full-adder grid;
current direct-v2: 6,120 variables / 20,730 clauses, including 840 width-4 clauses, constant-folded row-ripple circuit with majority carries;
old full adder uses propagate/generate intermediates, t = x xor y; s = t xor cin; cout = (x & y) | (t & cin);
current full adder directly encodes s = x xor y xor cin; cout = maj(x, y, cin).
Over all 167 consistent partial assignments to the external full-adder ports, projected unit propagation agrees on 161 and differs on 6; current is propagation-complete on 153, old on 151, and neither dominates.
Under the same portable low-factor-prefix assumptions:
old extra fixed variables: mean 906.93;
current extra fixed variables: mean 1,088.85;
old/current ratio: 0.833;
normalized extra fixed fraction: 0.1735 vs 0.2119.
This comparison mixes topology and gate encoding, so it must not be presented as a pure encoding ablation.
A CNF-native cuber is visibly sensitive to the difference. At the same post-preprocessing active-variable reduction (736 variables), old/current march cube counts have a geometric-mean ratio of 8.955. In an equal raw-offset diagnostic, march decisions on the old array are 92.4% partial-product variables, whereas on the current CNF they split roughly between factor bits (44.2%) and partial products (47.1%). One concrete mediator is maximum clause width: the old 3-CNF and current width-4 CNF select different march scoring regimes.
The paired monolithic Kissat run at 1,800 seconds per instance is still in progress under structural-audit-w30-t2048-v1/monolithic-kissat/. Its result is supplementary and should not gate the mechanism claim.
Predictions to test
If the low-bit residue-lifting account is correct:
Portable factor-prefix cubes should retain most of the propagation and conquer advantage across faithful multiplier encodings, even when internal auxiliary variables cannot be mapped.
A semantic region brancher should be substantially less sensitive than march to local Tseitin aliases and CNF variable numbering.
Changing the multiplier topology should move the propagation mass and possibly change the useful semantic regions:
ripple/array multipliers should emphasize low columns and carry chains;
carry-save/Wallace trees should reduce sequential carry propagation and expose a different layered mechanism.
Removing carry literals from the macro cubes should hurt propagation more than removing sum literals; removing the corresponding low factor-prefix information should destroy the modular interpretation.
The same abstraction should transfer to other bit-vector constraints with directional local propagation (adders, comparators, bounded arithmetic), but not automatically to CNF-native SAT families without a meaningful semantic interface.
Required experiments
A. Make the modular state portable
For every frozen leaf:
extract the maximal contiguous prefixes of a and b;
verify the residue equation modulo 2^k;
compare full macro-cube and prefix-only BCP closures;
deduplicate/subsume prefix cubes and independently verify that they still cover the original problem;
conquer the resulting portable frontier on both current direct-v2 and old Array-Tseitin using the same worker policy.
This is the cleanest cross-encoding test because it maps only primary factor bits.
B. Separate gate encoding from circuit topology
Build two backends from one semantic multiplier IR:
Context
This is a mechanism-focused follow-up to #56 and a concrete factoring case study for #53.
Issue #56 establishes the end-to-end CnC result, but it does not yet explain what the region brancher is exploiting inside the multiplier, nor separate three different notions that can easily be conflated:
output-alias-v1vsoutput-direct-v2);array-tseitin-v1vs the current row-ripple/majority-carry circuit).The paper claim should not be generic “encoding invariance.” The working claim is narrower and mechanistic:
Cover is sufficient for the SAT/CnC use here. Whether a branching formalism additionally requires a partition is orthogonal to this mechanism and is not a main objective of this issue.
Frozen setting
Use the same ten 30-bit UNSAT target integers and the same current CircuitSAT instances as the completed server run:
artifacts/factoring-unsat-main-w30-w32-v1/--cc-threshold 204872c58f21fba3b0325bab2fced8052ea060bbda0a2c4fe73f5df4ad552d4ee92807da6866c339de638458a7867f8d11a17162046878b552cadd22b265a8b5e7b1a0236ad5634fb680fa84220ad6806e5def15bca4d9c8850f1abbc397cedec416Primary audit directories:
structural-audit-w30-t2048-v1/encoding-ablation-w30-t2048-v2/Evidence already collected
1. The semantic frontier is shallow, but its propagation closure is large
Exact replay of the frozen trace gives:
Decision literals are concentrated in the multiplier rather than only at its inputs:
The additional BCP closure is even more concentrated:
Factor-false decisions correlate with newly fixed partial products (Pearson r=0.719) and with total additional propagation (r=0.675), consistent with a causal path
factor bit = 0 -> partial-product fanout collapses -> carry constraints propagate.2. The branches behave like low-bit modular residue lifting
At the first macro branch, the median child fixes contiguous 6-bit prefixes of both factors, and every child satisfies
a_<6 b_<6 = N (mod 2^6).At the leaves, the median contiguous prefix is 10 bits for each factor, and every leaf satisfies
a_<10 b_<10 = N (mod 2^10).Almost no factor assignments lie outside those prefixes (mean 0.1009; p95 = 0).
Most importantly, replacing a full semantic leaf cube by only its contiguous factor-prefix assignment produces exactly the same BCP closure on all 5,280 original wires for 3,211/3,331 leaves (96.4%). Every prefix closure is a subset of the macro-cube closure; p95 missing assignments is 0, with a mean of 6.67 due to a small tail.
This is the strongest current evidence for the mechanism: the macro branch is usually a redundant, propagation-friendly certificate of a much simpler modular state.
3.
output-alias-v1vsoutput-direct-v2is a pure representation ablationFor the exact same CircuitSAT instances and frozen semantic frontiers:
Therefore the observed equivalence is expected: v2 eliminates local output aliases without changing the projected propagation relation. It supports robustness to this rewrite, not robustness to arbitrary CNF encodings.
4. Old
array-tseitin-v1is a topology/decomposition change, not a clean encoding rewriteThe old and current benchmarks use the same ten target integers, but their internal circuits differ:
t = x xor y; s = t xor cin; cout = (x & y) | (t & cin);s = x xor y xor cin; cout = maj(x, y, cin).Over all 167 consistent partial assignments to the external full-adder ports, projected unit propagation agrees on 161 and differs on 6; current is propagation-complete on 153, old on 151, and neither dominates.
Under the same portable low-factor-prefix assumptions:
This comparison mixes topology and gate encoding, so it must not be presented as a pure encoding ablation.
A CNF-native cuber is visibly sensitive to the difference. At the same post-preprocessing active-variable reduction (736 variables), old/current march cube counts have a geometric-mean ratio of 8.955. In an equal raw-offset diagnostic, march decisions on the old array are 92.4% partial-product variables, whereas on the current CNF they split roughly between factor bits (44.2%) and partial products (47.1%). One concrete mediator is maximum clause width: the old 3-CNF and current width-4 CNF select different march scoring regimes.
The paired monolithic Kissat run at 1,800 seconds per instance is still in progress under
structural-audit-w30-t2048-v1/monolithic-kissat/. Its result is supplementary and should not gate the mechanism claim.Predictions to test
If the low-bit residue-lifting account is correct:
Required experiments
A. Make the modular state portable
For every frozen leaf:
aandb;2^k;This is the cleanest cross-encoding test because it maps only primary factor bits.
B. Separate gate encoding from circuit topology
Build two backends from one semantic multiplier IR:
Keep multiplier topology, constant folding, primary variables, outputs, and targets fixed. Compare:
t=2048;Do not replay unmappable internal-wire cubes across different IRs.
C. Test topology as a mechanism intervention
Add at least one structurally different multiplier (carry-save/Wallace is preferable). Measure by column/layer:
k;The goal is not merely another performance point: it is to test whether the mechanism moves in the predicted way when carry propagation is changed.
D. Causal cube ablations
On the frozen current frontier, compare:
Report both mean and tail behavior, since the rare 3.6% prefix-mismatch leaves may matter disproportionately to conquer cost.
E. Algorithm-sensitivity matrix
Evaluate each representation with:
This distinguishes an invariant problem decomposition from representation-specific behavior of a CNF-native heuristic.
Acceptance criteria
Existing audit files
Under
structural-audit-w30-t2048-v1/:semantic-trace-structure.jsonbcp-structure.jsonnative-vs-bcp.jsonfanout-propagation.jsonmodular-prefix.jsonmacro-vs-prefix-bcp.jsoncnf-structure.jsonarray-vs-current-prefix-bcp.jsonmarch-ablation/summary.jsonmarch-ablation/equal-active-reduction/summary.jsonUnder
encoding-ablation-w30-t2048-v2/:paired-analysis.jsonbcp-audit.jsonmarch-v1-v2/summary.json