Skip to content

Report a refuted instance without building a vtree over it - #45

Merged
guyvdbroeck merged 1 commit into
mainfrom
refuted-no-build
Sep 1, 2026
Merged

Report a refuted instance without building a vtree over it#45
guyvdbroeck merged 1 commit into
mainfrom
refuted-no-build

Conversation

@guyvdbroeck

Copy link
Copy Markdown
Member

FrontendSession::build_run short-circuits only when preprocessing leaves no
variables. A refutation is not that case: reduced.cnf is by design an explicit
contradiction over the ORIGINAL variable count, because DIMACS cannot portably
spell the empty clause. So a refuted run went on to select a spec and build a
full vtree over a formula whose answer the record already gives —
PreprocessRecord::unsat says "The count is 0 and no compilation is needed".
Construction gets a share of the wall that is left (by default a third of it, at
least 90 s and never past the run deadline), so the longer the caller's budget,
the more of it a refutation spends building a vtree nothing will compile.

RunVtree gains a third variant, Refuted, and build_run returns it as soon
as the record says the instance was refuted — before selection, before
construction. built() is None for it, so write_to_dir writes the bundle
alone and names no vtree files, and the command-line summary reports the verdict
where the vtree lines would be.

API note: RunVtree is public and this is a new variant, so an exhaustive match
on it needs the new arm.

`FrontendSession::build_run` short-circuits only when preprocessing leaves no
variables. A refutation is not that case: `reduced.cnf` is by design an explicit
contradiction over the ORIGINAL variable count, because DIMACS cannot portably
spell the empty clause. So a refuted run went on to select a spec and build a
full vtree over a formula whose answer the record already gives —
`PreprocessRecord::unsat` says "The count is 0 and no compilation is needed".
Construction gets a share of the wall that is left (by default a third of it, at
least 90 s and never past the run deadline), so the longer the caller's budget,
the more of it a refutation spends building a vtree nothing will compile.

`RunVtree` gains a third variant, `Refuted`, and `build_run` returns it as soon
as the record says the instance was refuted — before selection, before
construction. `built()` is `None` for it, so `write_to_dir` writes the bundle
alone and names no vtree files, and the command-line summary reports the verdict
where the vtree lines would be.

API note: `RunVtree` is public and this is a new variant, so an exhaustive match
on it needs the new arm.
@guyvdbroeck
guyvdbroeck merged commit 380dd02 into main Sep 1, 2026
2 checks passed
@guyvdbroeck
guyvdbroeck deleted the refuted-no-build branch September 1, 2026 15:55
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