summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2021-09-01Merge branch 'master' into macos11macos11Andres Noetzli
2021-09-01Clean up and document PP context. (#7102)Aina Niemetz
This marks methods const where possible and adds missing documentation.
2021-09-01Clean up TheoryEngine header according to code style guidelines. (#7107)Aina Niemetz
2021-09-01[proof] [sat] Fix lost reference to reason when processing redundant ↵Haniel Barbosa
literals (#7108) Similarly to the issue when explaining literals, it's necassary to save the reference to the reason for propagating a redundant literal, as adding explanations that may be added to the SAT solver during the recursive elimination of redundant literals may change the original reference.
2021-09-01Print response to get-model using the API (#7084)Andrew Reynolds
This changes our implementation of GetModelCommand so that we use the API to print the model. It simplifies smt::Model so that this is a pretty printing utility, and not a layer on top of TheoryModel. It adds getModel as an API method for returning the string representation of the model, analogous to our current support for getProof. This eliminates the last call to getSmtEngine() from the command layer.
2021-09-01rewriter: Make registerTheoryRewriter non-static. (#7101)Aina Niemetz
More work towards getting rid of SmtEngine::currentSmtEngine and closing #3468.
2021-09-01Fixed TestTheoryWhiteBagsRewriter.map failure (#7103)mudathirmahgoub
Fixed TestTheoryWhiteBagsRewriter.map failure
2021-09-01Fix issues with cyclic proofs due to double SYMM applications (#7083)Andrew Reynolds
Our way of constructing proofs from the equality engine in very rare cases may cause cyclic proofs due to constructing double applications of SYMM, which are not recognized as assumptions in CDProof. This is due to an interplay between LazyProofChain using an underlying CDProof as its default proof generator, where the proof chain would use the proofs from the CDProof to form a cyclic proof. This was encountered in 9 SMT-LIB benchmarks in QF_SLIA. This makes us safer in several places related to double SYMM steps.
2021-08-31Update CI to macOS 11Andres Noetzli
2021-09-01Make driver::totalTime a TimerStat (#7089)Gereon Kremer
This makes the `driver::totalTime` statistic a `TimerStat`. This eliminates the need to obtain the overall runtime in the driver and write it to the statistics towards the end of the runtime. This not only eliminates some code in the driver, but also gets rid of the call to `getSmtEngine()` that goes around the API. One disclaimer: The statistics output changes from seconds as a double (i.e. `1.234`) to milliseconds (i.e. `1234ms`).
2021-09-01No longer use direct access to options in driver (#7094)Gereon Kremer
This PR refactors the driver to no longer directly access the Options object, but instead use Solver::getOption() or Solver::getOptionInfo().
2021-09-01rewriter: Make clearCaches non-static. (#7100)Aina Niemetz
This works towards getting rid of SmtEngine::currentSmtEngine and closing #3468.
2021-09-01Lazy proof reconstruction for strings theory solver (#7096)Andrew Reynolds
This makes it so that we call the strings::InferProofCons::convert lazily, instead deferring to a temporary, trusted STRING_INFERENCE rule. This decreases our average proof overhead on commonly solved instances from 64% to 58% on QF_S + QF_SLIA. It also reduces timeouts significantly, from 2010 to 1460. (Note these numbers were with a slightly extended version of this branch that includes other pending PRs for proofs). Also fixes one subtle issue where proof reconstruction was misusing sequential substitutions (leading to warnings during proof post-processing).
2021-08-31bv: Remove dump=bv-rewrites. (#7099)Aina Niemetz
This is work towards eliminating calls to currentSmtEngine. This dump mode will become obsolete with the DSL, and is thus now removed.
2021-08-31Make sure modes are sorted in ModeInfo (#7097)Gereon Kremer
This PR ensures that the possible modes returned in getOptionInfo() are always sorted. Their order would depend on the python dictionary ordering, which changed with a somewhat recent python version and thereby breaks our tests.
2021-08-31bv-to-int-module: implementations and stubs for translating operators (#7086)yoni206
This PR introduces most of the code for the translation of terms with operators. Some methods are left as stubs for future PRs. A unit test is added with sanity checks for all implemented operators.
2021-08-31Fix normal forms context-dependent simplification for strings (#7090)Andrew Reynolds
This corrects an issue in our context-dependent simplification which limited the cases it was applied. Previously, we were using a best content heuristic when it was applicable to compute the substitution, even if we were in an effort where normal forms had been computed. The latter should always be used if possible, since normal forms always have at least as much or more concrete components.
2021-08-31Make regular expression sort not closed enumerable (#7092)Andrew Reynolds
This ensures we don't try to apply e.g. enumerative instantiation to quantified formulas over regular expressions, since no type enumerator exists for RE. Fixes #6750.
2021-08-30Add API function to obtain information about a single option (#6980)Gereon Kremer
This PR adds api::Solver::getOptionInfo() that returns information about a single option, including its name, aliases, current and default value and its domain.
2021-08-30Add kind BAG_MAP and its type rule to bags (#6503)mudathirmahgoub
This PR adds kind BAG_MAP to bags.
2021-08-30Further refactoring of set defaults for incompatibility methods (#7072)Andrew Reynolds
This introduces standard methods for checking incompatible with models, unsat-cores, incremental, proofs. There is one minor change in behavior in this PR.When bitblast=eager and models were enabled in combined logics, then the set defaults would change the bitblast mode to lazy. However, it would then in the same block complain that eager cannot be used in combination with incremental. After this PR, we won't complain in this case since we've already decided to change the bitblast mode to lazy.
2021-08-30Refactor filename handling (#7088)Gereon Kremer
This PR simplifies how we store the current input file name and handle setting and getting it. It is now an option, that can also be set and get via setInfo() and getInfo().
2021-08-30Fix proof equality engine for "no-explain" premises (#7079)Andrew Reynolds
There was an inconsistency between when the equality engine would explain a literal and when we would provide a proof for it. This led to rare cases where we over zealously provided a proof for a fact that should have been an assumption in the theory lemma proof. This corrects the issue by ensuring that no-explain premises are explicitly marked via a new helper proof generator "AssumptionProofGenerator" which always supplies (ASSUME f) as the proof for f. This corrects some proof checking errors on string benchmarks.
2021-08-30python docs for Datatype-related classes (#7058)yoni206
2021-08-30Fix quantifiers dynamic split module for parametric datatypes (#7085)Andrew Reynolds
Fixes #6838.
2021-08-27Add Driver options (#7078)Gereon Kremer
This PR adds a new API function Solver::getDriverOptions() which is used to communicate special options that (a) can not be properly communicated via getOption() and (b) need to be available in the driver (in a type-safe manner). As of now, this concerns the input stream and output streams. Furthermore, this PR refactors the driver to obtain them via the driver options instead of using the (deprecated) Solver::getOptions() method.
2021-08-27Handle languages as strings in driver (#7074)Gereon Kremer
This PR moves the first chunk of code in the driver to use the proper options API for the language options. It is now handled as a string.
2021-08-27Expand definitions in sygus operators at the SMT level (#7077)Andrew Reynolds
Eliminates another call to currentSmtEngine. This PR ensures we remember the mapping between operators that are embedded in sygus datatypes during preprocessing, instead of computing this within the sygus datatypes utilities when solving.
2021-08-27Add n-ary match trie utility (#6909)Andrew Reynolds
Towards rewrite rule reconstruction
2021-08-27Add missing methods to Solver API for models (#7052)Andrew Reynolds
This adds the last two remaining API methods required for implementing the text output of get-model on the API side. A followup PR will implement GetModelCommand on the API side and eliminate the (last remaining) call to getSmtEngine() from the command layer. This PR does some minor reorganization of the model cores code to account for the new interface. It also removes a deprecated interface from TheoryModel.
2021-08-27Add `isNull` to cpp api tests, python api, and python api tests (#7059)yoni206
While working on API documentation for python, I noticed that isNull is not wrapped by the python API. It is also not tested in the cpp API tests. This PR fixes both issues, and also updates the python api tests accordingly.
2021-08-26Fix a subtle issues with squashing the docs-ci history (#7075)Gereon Kremer
The docs-cleanup job squashes all commits from the docs-ci repository that are older than one month. The current solution to retrieve the newest commit older than this one month erroneously relied on the commit date. As the script cherry-picks all newer commits, it should rather use the author date, though. Unfortunately, rev-list does not support filtering by author date, hence we use awk now...
2021-08-26Eliminate currentSmtEngine for subsolver calls (#7068)Andrew Reynolds
This eliminates another occurrence of smt::currentSmtEngine by making it required to pass options + logic for all subsolver calls.
2021-08-26Dump models for isNotEntailed results (#7071)Andrew Reynolds
This fixes a minor issue where models should be dumped for "not entailed" results. This fix was required when preparing the submission to CASC this year.
2021-08-26Make datatype selector expansion to its own accessible method (#7069)Andrew Reynolds
This eliminates another call to currentSmtEngine. After this, there are only two remaining calls (one for normalizing sygus grammars wrt user define-funs, and the other for Rewriter::rewrite).
2021-08-26Improve integration of nonlinear arithmetic into the arithmetic theory. (#6956)Gereon Kremer
The nonlinear extension used to be called only during model construction, a rather atypical place which lead to a series of subtle issues. This PR moves it into the postCheck method. To do that, a few other changes are necessary, most notably collectAssertedTerms and collectTerms are moved back from the model manager into the theory class.
2021-08-26int2bv: Fix conversion of signed bit-vector values. (#7061)Mathias Preiner
This commit fixes the conversion of signed bit-vector values to integers in the int-to-bv preprocessing pass.
2021-08-26Consolidate language types (#7065)Gereon Kremer
This PR combines the two enums InputLanguage and OutputLanguage into a single Language type. It makes sure that AST is not used as input language using a predicate whenever the option is set.
2021-08-25Add missing include (#7067)Gereon Kremer
This adds a missing include. Compilation fails right now, if libpoly is disabled.
2021-08-25Eliminate calls to currentSmtEngine (#7060)Andrew Reynolds
Work towards supporting multiple solvers running in parallel. There are now only 5 remaining internal calls to smt::currentSmtEngine. More will be eliminated on future PRs.
2021-08-24Split higher-order term database (#7045)Andrew Reynolds
This splits higher-order term database as a derived class of term database, thus separating higher-order specific things out of our core term database. This eliminates many of the references to the deprecated option uf-ho. This is work towards eliminating that option.
2021-08-24Refactor enumerator management in synth conjecture (#6942)Andrew Reynolds
This moves the method SynthConjecture::getEnumeratedValue to its own class, EnumManager. It also integrates the sygus enumerator callback into the fast enumerator.
2021-08-24bv-to-int: more implementations (#7051)yoni206
This PR introduces more implementations for the bv-to-int module. Once all implementations are in, this module will be called from the bv-to-int preprocessing pass, and the code there will be deleted. Here we focus on the translation of nodes without children. Unit tests are included.
2021-08-24Top-level structure for set defaults (#7047)Andrew Reynolds
This breaks setDefaults into three functions that summarize the high-level behavior of setDefaults.
2021-08-24Uniform treatment of trusted theory inferences in proofs (#7044)Andrew Reynolds
Makes it so that all theory-specific proof rules for this purpose are replaced by the generic THEORY_INFERENCE.
2021-08-24Miscellaneous changes from proof-new (#7042)Andrew Reynolds
2021-08-23Fix non-deterministism in quantified datatypes expansion rewrite (#7036)Andrew Reynolds
Required for properly checking proofs for quantifiers rewrites.
2021-08-23Purify substitutions in strings proof reconstruction (#7035)Andrew Reynolds
This fixes an issue in strings proof reconstruction where sequential substitutions are used over possibly non-atomic terms like (str.replace x a b) and x simultaneously. This leads to cases where we failed to reconstruct proofs, since a substitution x -> c, (str.replace x a b) -> d may unintentionally generate the term (str.replace c a b), after which the second substitution fails to apply.
2021-08-23Generalize inequality elimination in quantifiers rewriter (#7030)Andrew Reynolds
This generalizes our inequality elimination technique to handle disequalities as well as inequalities. #6999 is an example where a variable can be eliminated: if a variable x occurs only in an equality with negative required polarity, then the variable and that literal can be eliminated. Fixes #6999.
2021-08-23Fix single invocation partition for higher-order (#7046)Andrew Reynolds
It was not robust to cases where a function-to-synthesize occurred in a higher-order context. Also does general clean up of the single invocation utility.
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback