Report a refuted instance without building a vtree over it - #45
Merged
Conversation
`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.
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.
FrontendSession::build_runshort-circuits only when preprocessing leaves novariables. A refutation is not that case:
reduced.cnfis by design an explicitcontradiction 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::unsatsays "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.
RunVtreegains a third variant,Refuted, andbuild_runreturns it as soonas the record says the instance was refuted — before selection, before
construction.
built()isNonefor it, sowrite_to_dirwrites the bundlealone and names no vtree files, and the command-line summary reports the verdict
where the vtree lines would be.
API note:
RunVtreeis public and this is a new variant, so an exhaustive matchon it needs the new arm.