summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2021-09-07Merge branch 'master' into theoryElimContexttheoryElimContextAndres Noetzli
2021-09-07sygus: Eliminate calls to Rewriter::rewrite. (#7142)Aina Niemetz
This derives sygus unification utility objects from EnvObj where necessary. There's one remaining occurrence of Rewriter::rewrite in sygus_unif_rl.cpp, which is a bit tricky to address and thus subject to a future PR.
2021-09-07Refactoring and fixes of set defaults for quantifiers (#7120)Andrew Reynolds
This PR further refactors set defaults for incompatibility issues related to quantifiers. It adds a new restriction that was discovered recently: --nl-rlv should not be used in quantified logics. Some regressions are modified that are impacted by this restriction. Also does minor rearrangements to the order in which default options are set.
2021-09-05Use `EnvObj` methods instead of `Theory` methodsAndres Noetzli
This removes the methods `getEnv()`, `options()`, `getSatContext()`, and `getUserContext()` from the `Theory` class because they are now part of `EnvObj`. Additionally, this commit converts the inference managers to `EnvObj` because of there were some calls to retrieve the contexts from `Theory` in those classes.
2021-09-03EnvObj: Add options(), context(), userContext(). (#7137)Aina Niemetz
This further renames EnvObj::getLogicInfo to EnvObj::logicInfo.
2021-09-03Avoiding duplicate search in maps (#7055)MikolasJanota
This commit identifies a couple of scenarios where an operation required 2 searches into a map/hashmap and replaces them with a single search. This also makes the code shorter. Signed-off-by: Mikolas Janota <mikolas.janota@gmail.com>
2021-09-03sygus: Make more classes derive from EnvObj. (#7140)Aina Niemetz
2021-09-03Refactor option sanitizations (#7129)Gereon Kremer
This PR refactors the code that performs sanity checks on the parsed option data.
2021-09-03Standardize Rewriter::rewriteViaMethod call (#7119)Andrew Reynolds
This moves the standard method for rewrites in proofs from TheoryBuiltinProofRuleChecker to Rewriter. The motivation for this change is to make various kinds of rewrite methods (standard rewrite, extended rewrite, extended equality rewrite, evaluate) accessible throughout the code in a standard way. After this PR, it is possible to know variants of the REWRITE proof rule application by having access to the rewriter, instead of having to get the builtin proof rule checker. Note that TheoryBuiltinProofRuleChecker::applyRewrite *cannot* be static since access to the rewriter is not longer permitted to be static. It also removes some unused infrastructure from Rewriter. Followup PRs will remove applyRewrite for TheoryBuiltinProofRuleChecker in favor of calling the rewriter directly.
2021-09-03Check that alternate is only set for bool (#7125)Gereon Kremer
This PR slightly changes how the alternate option property is handled and explicitly checks that alternate is only set for bool options.
2021-09-03Refactor options::get() and options::getNames() (#7135)Gereon Kremer
This PR refactors the code generation and the generated code for options::get() and options::getNames().
2021-09-03Make quantifier module classes derive from EnvObj (#7132)Andrew Reynolds
2021-09-03sygus: Make CeSingleInv derive from EnvObj. (#7136)Aina Niemetz
This further reorders the header according to the code style guidelines.
2021-09-03Eliminate backwards ref to SmtEngine from abduction and interpol solvers (#7133)Andrew Reynolds
2021-09-03theory: Have more classes in theory with reference to Env derive from ↵Aina Niemetz
EnvObj. (#7130)
2021-09-03theory: Have Theory and TheoryArith* derive from EnvObj. (#7128)Aina Niemetz
Note: the diff in theory.h is only huge because of small changes that caused huge reformat. The effective change is only that it now derives from EnvObj, does not have a member d_env (because it inherits it) and does not need getLogicInfo (because that's in EnvObj).
2021-09-03Remove "experimental" options (#7124)Gereon Kremer
This PR changes all options from experimental to expert and adds a check that only the well-defined option categories are used (common, regular, expert, undocumented).
2021-09-02pp: Have PreprocessingPassContext derive from EnvObj. (#7127)Aina Niemetz
2021-09-02Add LFSC node converter (#6944)Andrew Reynolds
This utility converts from terms used in the internal calculus to terms that capture how they should be printed in LFSC.
2021-09-02Refactor options handlers (#7080)Gereon Kremer
This PR does a major refactoring to the default option handlers (i.e. the piece of code that converts strings to the respective option types). It gets rid of the current multi-layer template specialization in favor of a simple overloaded template function.
2021-09-02[Unit Tests] Fix shell test for Editline (#7117)Andres Noetzli
When using --editline, our interactive_shell_black unit test was not working because the unit test was redirecting std::cin and std::cout to std::stringstreams, which does not work with Editline. This commit refactors our InteractiveShell class to explicitly take the input and output streams as arguments, which fixes the issue because we do not use Editline for input streams that are not std::cin. Additionally, the commit updates the unit test to use SMT-LIB syntax instead of the deprecated CVC language.
2021-09-02Disable sygus-inst for regression close to time limit. (#7122)Aina Niemetz
2021-09-02EnvObj: Restrict access. (#7121)Aina Niemetz
This makes all members of EnvObj protected in order to prevent creating EnvObj instances and call member functions. It further uses protected inheritance (instead of public) for derived classes in order to disallow `EnvObj* a = new DerivedObj();`.
2021-09-02Add API check whether option in getOptionInfo() exists (#7093)Gereon Kremer
This PR adds a missing check in the API for getOptionInfo().
2021-09-02Driver & Options cleanup (#7109)Gereon Kremer
This PR does some cleanup in the driver and the options. It removes the now obsolete public attribute that allowed using the options in the driver, and removes a bunch of includes from the driver that are no longer necessary.
2021-09-02Remove more instances of ufHo (#7087)Andrew Reynolds
Towards replacing that option with a logic check throughout.
2021-09-02Remove options::getAll() (#7111)Gereon Kremer
options::getAll() returns a list of all options and their current values as strings. The same functionality can be obtained by using options::getNames() and options::get(). This PR does exactly this replacement, getting rid of a large chunk of generated code. Calling getInfo("all-options") may suffer a minor performance hit, but not noticeable in practice.
2021-09-02[CI] Add step for running unit/API tests (#7116)Andres Noetzli
Currently, we configure one of our builds to include unit tests but then do not compile and run them. This commit adds a step to compile and run the unit/API tests.
2021-09-02Implement lazy proof checking modes (#7106)Andrew Reynolds
This implements several variants of lazy proof checking in the core proof checker. Note this extends the ProofNode class with an additional Boolean d_provenChecked indicating whether the d_proven field was checked by the underlying proof checker. This PR updates the default proof checking mode to lazy. The previous default can now be enabled by --proof-check=eager-simple.
2021-09-02Remove PreprocessingPassContext::getSmt(). (#7118)Aina Niemetz
2021-09-02Remove unused `Backtracker` (#7115)Andres Noetzli
backtrackable.h was defining a datastructure Backtracker, which was a member in ArrayInfo and Info but it was not doing anything.
2021-09-02[Unit Tests] Fix bags rewrite test (#7114)Andres Noetzli
PR #7103 did not quite fix the unit test: The types of the lambda and the expected bags were still off. This fixes the unit test.
2021-09-02pp: Derive PreprocessingPass from EnvObj. (#7112)Aina Niemetz
2021-09-02Enable sygus-inst for FP, NIA and NRA. (#7098)Aina Niemetz
2021-09-02rewriter: Make rewriteEqualityExt non-static. (#7110)Aina Niemetz
More work towards getting rid of SmtEngine::currentSmtEngine and closing #3468.
2021-09-02Add class EnvObj. (#7113)Aina Niemetz
This class will serve as base class for classes that need access to the environment. This does not yet have classes derive from this base class. Will update #7110 and #7112 to use this after this is in.
2021-09-02Update CI to macOS 11 (#7104)Andres Noetzli
`macos-latest` is currently using macOS 10.15, so this updates the CI to use `mac-11` (Big Sur).
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-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.
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback