CnC comparison environment: region-branching cuber + kissat conquer + baseline Makefile#17
Merged
Conversation
src/cube.rs: generate_cubes uses the region-branching rule as a CnC cuber — descend the branch tree, emit the decision-literal path as a cube once |sigma_dec|*|sigma_all| > theta (the paper's cutoff). No component split (a cube is a whole-formula partial assignment) and every branch explored to a leaf; reuses the node primitives (findbest, propagation, reductions). benchmarks/conquer_cubes.py solves each cube with kissat and reports the per-cube difficulty distribution (CV/P95/P99 = the uniformity metric) and the cutoff-proxy vs realized-difficulty Spearman. examples/gen_cubes.rs (gitignored, per project convention) emits march_cu's iCNF 'a <lits> 0' format so one harness drives either cuber on the same CNF. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01DER3ZNDekiqXfmLH7XDVXh
make (in cnc-tools/) builds cadical, kissat, and march_cu from upstream source and clones Proofix into bin/ + proofix/, so the fair-comparison baselines reconstruct on any machine. Idempotent (existing binaries skipped); self-cleaning (source trees removed, only ~2MB of self-contained binaries kept). Only the Makefile + README (the recipe) are tracked; .gitignore excludes the generated bin/, proofix/, .build/. Answers the CnC fair-comparison goal: march_cu (lookahead), Proofix (proof-prefix, SAT 2025 — the reviewer-requested baseline), plus cadical/kissat conquerers, all buildable with one command. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01DER3ZNDekiqXfmLH7XDVXh
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.
What
Builds the Cube-and-Conquer (CnC) comparison environment so our region-branching
cuber can be measured head-to-head against the standard cuber baselines on the
same CNF, with the same conquer solver — the fair-comparison setup the paper
reviewers asked for.
Purely additive:
src/solver.rsis byte-identical tomain(the corebbsatsearch is untouched). New module + tooling only.Changes
src/cube.rs—generate_cubes: uses the region-branching rule as a CnCcuber. Descends the branch tree and emits the decision-literal path as a cube
once
|σ_dec|·|σ_all| > θ(the paper's cutoff). No component decomposition (acube is a whole-formula partial assignment), every branch explored to a leaf;
reuses the existing node primitives (findbest / propagation / reductions). Two
unit tests.
benchmarks/conquer_cubes.py— one harness that conquers a cube file(march_cu's
a <lits> 0iCNF, which our cuber also emits over the samevariable numbering) with kissat and reports the per-cube difficulty
distribution (CV / P95 / P99 = the uniformity metric) plus the cutoff-proxy vs
realized-difficulty Spearman.
cnc-tools/{Makefile,README.md,.gitignore}— one-command setup(
cd cnc-tools && make) that builds cadical, kissat, and march_cu fromupstream source and clones Proofix (the SAT 2025 proof-prefix cuber the
reviewers named). Idempotent, self-cleaning; only the recipe is tracked, the
built binaries are git-ignored.
Not included (by design)
examples/gen_cubes.rs— the CLI that drivesgenerate_cubes, kept local perthe repo's
examples/gitignore convention.(
gamma-share-only), out of this PR to keep the core solver untouched here.Test
cargo testgreen (93 existing + 2 new cube tests); pipeline validatedend-to-end (bi / march_cu / Proofix cubes → kissat conquer) locally.