summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2021-03-16[proof-new] Renaming proof option to be in sync with SMT-LIB (#6154)Haniel Barbosa
2021-03-16[proof-new] Disabling proofs on regressions with known bug (#6151)Haniel Barbosa
This is so that we can use CI in master for proofs.
2021-03-16New C++ Api: Comprehensive guards for member functions of class Sort. (#6136)Aina Niemetz
2021-03-15Fix rewrite for double replace (#6152)Andrew Reynolds
Fixes #6142.
2021-03-15New C++ Api: Comprehensive guards for member functions of class Grammar. (#6148)Aina Niemetz
2021-03-15Replace HistogramStat by IntegralHistogramStat (#6126)Gereon Kremer
This PR uses IntegralHistogramStat instead of HistogramStat when appropriate, that is everywhere.
2021-03-15Disable sqlite (#6145)Gereon Kremer
Cryptominisat supports writing statistics to a sqlite3 database, and automatically enabled it when it can find sqlite bindings. This disables sqlite3, as we don't need it anyway. Fixes #6131.
2021-03-15Make nonlinear extension account for relevant term set (#6147)Andrew Reynolds
This fixes a subtle issue with non-linear and theory combination. It currently could use irrelevant terms preregistered to the ExtTheory for its model-based refinement. This means that the non-linear extension could accidentally modify values for terms that are not included in its term set, violating theory combination. In particular, in the minimized example from #5662, (* a k) was a stale term in ExtTheory, and non-linear extension falsely believed that a was a term whose model value could be modified, since moreover a was not a shared term. In reality, a was not a shared term since it only was registered to UF. Fixes #5662.
2021-03-15Split inst match generator class to own file (#6125)Andrew Reynolds
2021-03-15Letify quantifier bodies independently (#6112)Andrew Reynolds
This fixes a subtle bug with how quantifier bodies are letified. It makes our letification more conservative so that let symbols are never pushed inside quantifier bodies, instead quantifier bodies are letified independently of the context.
2021-03-15Reorganizing initialization of term registry in quantifiers (#6127)Andrew Reynolds
This is in preparation for moving several utilities into the quantifiers inference manager. This PR moves ownership of TermRegistry and QuantifiersRegistry to TheoryQuantifiers from QuantifiersEngine.
2021-03-15New C++ Api: Comprehensive guards for member functions of class Op. (#6140)Aina Niemetz
2021-03-15New C++ Api: Comprehensive guards for member functions of Datatype classes. ↵Aina Niemetz
(#6141)
2021-03-14[proof-new] Adding a dot printer for proof nodes (#6144)Diego Della Rocca de Camargos
Adds a dot printer for proof nodes. Also adds an option to choose the proof format (as a mode). Signed-off-by: Diego Della Rocca de Camargos <diegodellarocc@gmail.com>
2021-03-12New C++ Api: Move checks to separate file. (#6138)Aina Niemetz
2021-03-12New C++ API: Rename TRY CATCH macros. (#6135)Aina Niemetz
2021-03-12Schedule preregistration lemmas to be satisfied after user assertions (#6134)Andres Noetzli
Commit d47a8708171f1cf488fe9ce05f56f2566db53093 refactored the interface of prop engine. In doing so, it changed the order in which preregistration lemmas were asserted. Before the commit, they were asserted after all the user assertions. After the commit, they were asserted after each user assertion that generated them. This, however, seems to have a negative performance impact, especially for string benchmarks because the justification heuristic tries to justify the assertions in the order in which they appear. Intuitively, it makes sense to first try to satisfy the user assertions before trying to satisfy the preregistration lemmas. Signed-off-by: Andres Noetzli <noetzli@amazon.com>
2021-03-12cmake: Remove install rules for old API headers. (#6120)Mathias Preiner
2021-03-12(proof-new) Miscellaneous sync to master (#6129)Andrew Reynolds
Towards having proofs working on master.
2021-03-12[proof-new] Fix arity check when building equality engine proofs (#6133)Haniel Barbosa
Broken in dc679ed.
2021-03-12Add missing includes for statistics (#6124)Gereon Kremer
2021-03-11Simplify instantiation match generator interface (#6121)Andrew Reynolds
2021-03-12Add more unit tests for api::Sort. (#6122)Aina Niemetz
2021-03-11ci: Replace debug builds with assertion enabled production builds. (#6098)Mathias Preiner
This will help reduce the CI times and ccache sizes.
2021-03-11Make linear arithmetic use its inference manager (#5934)Gereon Kremer
This PR refactors the linear arithmetic solver to properly use its inference manager, instead of directly sending lemmas to the output channel. To do this, it introduces new InferenceIds for the various linear lemmas.
2021-03-11arith proof rules shuffle & add ARITH_SUM_UB (#6118)Alex Ozdemir
Preparation for making ARITH_SCALE_SUM_UB a macro. Adds a proof rule for summing upper bounds: ARITH_SUM_UB. Moves ARITH_MULT_* rules from the non-linear extension to the main arithmetic checker, since they will be needed for all of arith now. Aligns the ARITH_SCALE_SUM_UB documentation with its checker.
2021-03-11Introduce inference ids for quantifier instantiation (#6119)Andrew Reynolds
This makes quantifiers use standard inference ids. This eliminates the need to track ad-hoc statistics, per instantiation type. This makes minor modifications to a few interfaces in quantifiers to enable this.
2021-03-11First refactoring of statistics classes (#6105)Gereon Kremer
This PR does a first round of refactoring on the statistics, in particular the Stat class and derived classes. It significantly shrinks the class hierarchy, modernizes some code (e.g. use std::chrono instead of clock_gettime), removes unused features (e.g. nesting of statistics) and does some general cleanup and consolidation. Subsequent PRs are planned to change the ownership model (right now every module owns the Stat object) which makes the whole register / unregister mechanism obsolete.
2021-03-11Delete Expr layer. (#6117)Aina Niemetz
2021-03-11Improvements and refactoring for enumeratative strategy (#6030)MikolasJanota
Refactoring out the code from `inst_strategy_enumerative` into a separate class. Some additional tricks to avoid duplicate instantiations, most notably, before instantiation, a tuple is checked if it's not a super-tuple of some tuple that had earlier resulted in a useless instantiation. Signed-off-by: mikolas <mikolas.janota@gmail.com>
2021-03-11(proof-new) Clean up uses of witness with skolem lemmas (#6109)Andrew Reynolds
This ensures we do not return WITNESS terms in response to ppRewrite. This makes standard utility methods in SkolemLemma to help make this easy. It also removes TheorySetsPrivate::expandDefinitions, which was returning WITNESS in response to expandDefinitions, which is no longer permitted.
2021-03-11Direct lemmas and inference ids for sygus extension (#5960)Andrew Reynolds
This adds inference ID for the datatypes sygus solver, and changes its style to send lemmas instead of passing them to the caller.
2021-03-11Fix compile warnings when compiling with GLPK. (#6115)Mathias Preiner
Fixes -Wshadow and -Wsuggest-override wranings.
2021-03-11Remove obsolete test/api/statistics.cpp. (#6116)Aina Niemetz
This test shouldn't be an API test and is not portable to the new API right now statistics are not retrievable via the API. When we add methods for retrieving statistics to the new API, we'll need thorough unit tests this, which makes this test obsolete.
2021-03-11Clean up ownership of Datatypes in NodeManager. (#6113)Aina Niemetz
This is in preparation for deleting the Expr layer. This further fixes incorrect handling of ownership for the datatypes owned by the NodeManager.
2021-03-11Refactor Node::getOperator() to fix compiler warning. (#6110)Aina Niemetz
2021-03-11Use CVC4_ASSERTIONS instead of NDEBUG. (#6099)Mathias Preiner
Ensures that all checks are performed in production builds with enabled assertions.
2021-03-10Add GitHub action to automatically update approved PRs. (#6114)Mathias Preiner
2021-03-10Use Assert instead of assert. (#6095)Mathias Preiner
This commit replaces all uses of assert with Assert from base/check.h to ensure that all assertions get checked in production builds with enabled assertions.
2021-03-10New C++ Api: Add missing argument checks in Solver functions. (#6094)Aina Niemetz
This adds missing checks to guard that Term and Sort arguments are associated with the solver object that is called.
2021-03-10Add Env class (#6093)Andrew Reynolds
This class contains all globally available utilities for internal code.
2021-03-10Improved handing of 'lib64' vs. 'lib' for glpk-cut-log and antlr-3.4 (#6091)Andrew V. Jones
Signed-off-by: Andrew V. Jones <andrewvaughanj@gmail.com>
2021-03-10[proof-new] Clarifying doc (#6108)Haniel Barbosa
2021-03-10Move ExprManager::isNAryKind to NodeManager. (#6107)Aina Niemetz
This also renames metakind::getLowerBoundForKind and metakind::getUpperBoundForKind for consistency. Note that the NodeManager class needs to be reordered to comply to our style guidelines. This PR does not reorder but introduces a public block at the top (where the rest of the public interface of the class should go eventually).
2021-03-10Improve arithmetic proofs (#6106)Gereon Kremer
The proof rules for ARITH_MULT_POS and ARITH_MULT_NEG were complex than necessary in that they incorporated a rewriting step. This PR removes rewriting from these rules, making them cleaner and easier to understand. The proof now applies these simpler rule and uses MACRO_SR_PRED_TRANSFORM to prove the lemma that is actually added.
2021-03-10cmake: Fix optimization level for debug builds. (#6097)Mathias Preiner
Further cleans up some unused variables and moves the configuration of best to configure.sh.
2021-03-10(proof-new) Update ppRewrite to use skolem lemmas (#6102)Andrew Reynolds
This is required for proofs. The internal calculus no longer uses witness forms for reasoning, and hence we cannot return witness terms in ppRewrite. This is required to fix a debug failure, as well as making life easier on external proof conversions. As a result of this PR, for example, given (P a) as input to ppRewrite, previous we returned: (P (witness ((x T)) (A x))) now we return: (P k), with skolem lemma ( (A k), k ) Followup PRs will remove the use of WITNESS in ppRewrite (e.g. in sets and strings); this PR modifies arithmetic to not return WITNESS in response to ppRewrite.
2021-03-10Fix extended equality rewrite involving replace. (#6104)Andrew Reynolds
Fixes #6075.
2021-03-10Fix term registration and non-theory-preprocessed terms in substitutions (#6080)Andrew Reynolds
This fixes two issues for preprocessing: (1) The term preregistration visitor was calling preRegister on terms multiple times in a SAT context, which the linear arithmetic solver is sensitive to. (2) It was possible for non-preprocessed terms to appear in assertions if they were on the RHS of substitutions learned by non-clausal simplification, and substituted into assertions post-theory-preprocessing. To fix (1), the SharedTermsVisitor is update to track which theories has preregistered each term, as is done in the PreRegisterVisitor. To fix (2), we no longer apply-subst after theory preprocessing. These two fixes are required to fix #6071. Note: we should performance test this on SMT-LIB.
2021-03-10Add quant elim regression (#6103)Andrew Reynolds
Fixes #5658. This was fixed by recent refactoring to quantifier elimination, adding the regression to close the issue.
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback