summaryrefslogtreecommitdiff
path: root/test/regress/CMakeLists.txt
AgeCommit message (Collapse)Author
2021-09-23Implement alpha equivalence proofs (#7066)Andrew Reynolds
This is a modified version of #6137 which accounts for extended rewriting between quantified formulas that are considered alpha equivalent. It also generalizes the proof rule ALPHA_EQUIV. Notice that if we were to make this rule more pedantic, we would check for variable shadowing during substitution, although this is not currently done.
2021-09-22Remove CVC language support (#7219)Mathias Preiner
This commit removes the support for the CVC language and converts all *.cvc regression tests to SMT-LIBv2.
2021-09-22Minimal fixing version for tuple update parsing (#7228)Andrew Reynolds
This takes the essential changes from #7218 so that the current ANTLR issues are avoided.
2021-09-20Fix handling of conversions between FP and reals (#7149)Andres Noetzli
Fixes #7056. Currently, we introduce a UF for conversions between FP numbers and reals. This is done as part of `ppRewrite()`. The problem is that terms sent to `ppRewrite()` are not fully preprocessed yet and the FP theory solver was storing terms that were not fully preprocessed in a map for later lookup. For the issue at hand, the conversion term contained an `ite`, which was later removed. As a result, the theory solver did not consider the term to be relevant when refining abstractions. This commit changes the handling of conversion functions to instead adding purification lemmas for conversion terms when they are registered. The purification lemmas are needed, because otherwise, we can't retrieve the model values for the term without the rewriter interferring.
2021-09-14Support sygus version 2.1 command assume (#7081)Andrew Reynolds
Adds support for global assumptions in sygus files. Also guards against cases of declare-const, which should be prohibited in sygus.
2021-09-14proofs: Properly track pre- and post-rewrites in bbAtom(). (#7147)Mathias Preiner
This commit refactors the proof bit-blaster to properly track the pre- and post-rewrites in bbAtom(). The individual bit-blast steps are recorded in a term conversion proof generator. The overall bit-blast proof is stored in a BitblastProofGenerator, which tracks the pre- and post-rewrite and includes the bit-blast proof of the TCPG.
2021-09-10FP: Do not send trivial lemmas. (#7167)Aina Niemetz
Fixes #7002.
2021-09-09Disable shared selectors for quantified logics without SyGuS (#7156)Andrew Reynolds
The use of shared selectors may have fairly negative effects when combined with E-matching. The issue is that it allows too many things to match. When shared selectors are disabled, a selector trigger like s(x) will only match terms that access the field of the constructor associated with s. When we use shared selectors, s(x) is converted to e.g. shared_selector_D_Int_1(x), which in turn matches applications of selectors of the same type over any constructor. This PR disables shared selectors when quantifiers are present and SyGuS is not used. It also disables shared selectors in single invocation subcalls, thus fixes #3109. It further makes a minor fix to the datatypes rewriter to ensure that rewritten form does not depend on options.
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-02Enable sygus-inst for FP, NIA and NRA. (#7098)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-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-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-30Fix quantifiers dynamic split module for parametric datatypes (#7085)Andrew Reynolds
Fixes #6838.
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-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.
2021-08-22Prenex quantified formulas with user annotations by default (#7048)Andrew Reynolds
Our policy is now accurate to the help message on prenexUserQuant: we only prenex quantified formulas if they do not have user-provided patterns. Previously we also did not prenex any quantified formulas with any annotations. This should avoid some more "unknown" responses on facebook benchmarks. Also fixes a minor issue with when we print warnings about quantified formulas with no triggers. FYI @barrettcw .
2021-08-19Support sygus standard command syntax set-feature (#7040)Andrew Reynolds
This currently has no effect other than giving an unsupported warning. In the future, set-feature will be implemented via the appropriate call to Solver::setOption if necessary. Fixes #6182.
2021-08-17Fix policy for eliminating quantified formulas (#7017)Andrew Reynolds
This also consolidates the option strictTriggers into userPatMode. Fixes #6996.
2021-08-09Create grouping of tests that exercise '--use-approx' (#6958)Andrew V. Jones
Currently, it seems that `cvc5` has no tests that get anywhere near close to exercising the code in `approx_simplex`, which means that the GLPK integration is effectively untested in CI: * https://cvc4.cs.stanford.edu/downloads/builds/coverage/cvc5-2021-08-02/index.src_theory_arith_approx_simplex.cpp.html (which is at 2.8% at the time of writing!) Indeed, if you run the whole of `ctest`, none of the code near GLPK is exercised; and, worse, there are *no* regression tests that use `--use-approx`! This commit adds a selection of simple tests that have been derived (using `cvc5`'s existing regression suite and ddSMT) to reach code inside of `approx_simplex`; namely: - `solveRelaxation`, and - `solveMIP` This is (hopefully) an initial start that will allow us to grow more regression tests exercising GLPK (e.g., following the same process of reduction, but using the SMTLIB benchmarks vs. only `cvc5`'s regression suite). The folder structure has been named such that I can do `ctest -R "use_approx"` to run only the tests that (should) reach GLPK. Signed-off-by: Andrew V. Jones <andrewvaughanj@gmail.com>
2021-08-05Fix policy for rewriting string equalities (#6916)Andrew Reynolds
This PR simplifies our rewriter for string equalities. We do not try to rewrite equalities to true/false by default. This prevents cases where lemmas may contain vacuous premises that rewrite to false, hence making a lemma rewrite to true. This PR reorganizes the interplay between the rewrite and the post-processing of rewrites via extended equality rewriting. Fixes #6913. Also adds benchmarks from #6101 which appear related but were fixed in previous commits, thus fixes #6101 as well.
2021-08-04Fix policy for merging subproofs (#6981)Andrew Reynolds
This makes it so that we replace subproof A with subproof B if A and B prove the same thing, and B contains no assumptions. This is independent of the scope that A and B are in. The previous policy replaced subproof A with subproof B if A and B prove the same thing and were in the same scope. This is not safe if A occurs in multiple scopes, where free assumptions can escape. The new policy is more effective and safer than the previous one.
2021-07-30Allow changing certain options while solving (#6945)Gereon Kremer
This PR allows changing some select options ever after the smt engine has been fully initialized, following the SMT-LIB standard (section 4.1.7).
2021-07-29Integrate central equality engine approach into theory engine, add option ↵Andrew Reynolds
and regressions (#6943) This commit makes TheoryEngine take into account whether theories are using the central equality engine. With this commit, the central equality engine can now be optionally enabled via `--ee-mode=central`.
2021-07-27Add regression for fixed `str.indexof_re` issue (#6938)Andres Noetzli
Fixes #6639. The issue cannot be reproduced on current master and git bisect suggests that commit adf497a fixed the issue.
2021-07-23FP: Add option to word-blast more lazily. (#6904)Aina Niemetz
When enabled, this does not word-blast when registering term but at preNotifyFact (= more lazily) instead. This is enabled via option --fp-lazy-wb.
2021-07-22Add support for minimal unsat cores (#4605)Andres Noetzli
This commit adds support for computing minimal unsat cores. The algorithm implemented in this commit is just a trivial deletion-based algorithm that tries to remove each assertion in the unsat core individually.
2021-07-14[proof] Fix open proof issues in SAT proof (#6887)Haniel Barbosa
Commit d1eee40cc (PR #6346), in a foolish attempt to prevent speculated issues, introduced an overwriting policy to addition of resolution chains during SAT solving at the SAT proof manager. First, this is nonsensical because the lazy proof chain is context-dependent and at the same level other ways of proving that clause are simply redundant and therefore should be ignored. Second, and catastrophically, this policy, for reasons beyond me, can lead to open SAT proofs when the same clause is rederived at the same level. So this commit simply reverts the change and adds an optimization that when the clause would be rederived at the same level we do nothing and leave the method.
2021-07-14Fix for context on input proof generator (#6873)Andrew Reynolds
The preprocess proof generator uses a dummy CDProof to mark input assertions that do not need justification. This CDProof should be user-context dependent to avoid rare cases where an input assertion was the symmetric equality of another, it was previously context independent. This also refactors the debugging traces in this class.
2021-07-13[rewriter] Add rewrite to order IFF (equality for Booleans) (#6872)Haniel Barbosa
Not doing this rewrite for Booleans is probably an artifact of the old IFF kind being removed. This rewrite is important to simplify the generation of proofs for the SAT solver, as clarified in the new comment in the SAT proof manager.
2021-07-12Fix for learned rewrite pass, add regression (#6850)Andrew Reynolds
Fixes #4791.
2021-07-09Fix sets cardinality inference involving equivalent parents (#6855)Andrew Reynolds
This fixes an unsoundness issue in the sets + cardinality solver. One rule of this solver applies in sets when two parents of a child of a cardinality graph are equal, in which case we know that child or one of its siblings must be equal to the opposite parent. For example, this rule tells us that: if T = (union T S), then (intersect T S) = S. The explanation of this rule could consider the representative term of one the parents instead of the term itself say (union T S) is representative T, giving the unsound inference: if (union T S) = (union T S), then (intersect T S) = S. This ensures we use the original terms. This PR also does some minor cleanup.
2021-07-07[unsat cores] Adding regressions from #4971 (#6852)Haniel Barbosa
Adds remaining regressions from issue #4791, which we can handle with the different new unsat-core modes. Note that issue4971-1.smt2 requires the sat-proof mode for unsat cores.
2021-07-05[Strings] Fix incorrect rewrite (#6837)Andres Noetzli
Fixes #6834. There were two cases in our extended rewriter for string equalities that were modifying the node without returning and without updating information computed from the original node. This mismatch led to incorrect rewrites. This commit fixes the issue by adding a flag to returnRewrite() that determines whether node that was an equality before and after the rewrite should be rewritten again with the extended rewriter. We generally do not do that (we'd run in danger of rewriting equality nodes with the extended rewriter even though we shouldn't) but for the rewrites that were previously continuing to rewrite the node, we set this flag and return. This ensures that we do not have an issue with information being out of date. The commit additionally fixes an issue where we would apply the rewrite STR_EQ_UNIFY even though the node hadn't changed.
2021-07-02Fix bv assert input reset assertions (#6820)Mathias Preiner
If reset-assertions was called it will now reset the SAT solver and the CNF stream if clauses were permanently added to the SAT solver via option --bv-assert-input.
2021-07-02Fix rewriter for negative constant seq.nth (#6827)Andrew Reynolds
Fixes #6777.
2021-07-01Add recursive function definitions to subsolver in sygus (#6824)Andrew Reynolds
This passes recursive function definitions to the verification subsolver in sygus, with a default bounded limit of 3. This required improving the interface for setting up subsolvers by allowing custom options; the sygus solver statically computes an instance of the options that it uses in all calls. This allows us to solve non-PBE sygus problems with recursive function definitions. The PR adds an example.
2021-06-30Use SAT context level for --bv-assert-input instead of decision level. (#6758)Mathias Preiner
The decision level as previously implemented was not accurate since it did not consider the user context level. This resulted in facts being incorrectly recognized as input assertions, which happened for incremental benchmarks.
2021-06-30pow2: new test (#6819)yoni206
This PR adds a more "real life" unit test for the pow2 solver. Thanks @4tXJ7f for the help with the options.
2021-06-30Do not apply fmfBound to standard quantifiers when only stringsExp is ↵Andrew Reynolds
enabled (#6816) There are compelling use cases that combine strings/sequences and quantifiers. Prior to this PR, strings enabled "bounded integer" quantifier instantiation so that internally generated quantifiers for strings reductions are handled in a complete manner. However, this enabled bounded integer quantifier instantiation globally. This degrades performance for "unsat" on quantified formulas in general. After this PR, we do not enable bounded integer quantifier globally. Instead, we ensure that bounded integer quantification is applied to at least the internally generated quantified formulas; all other quantified formulas are handled as usual. Notice this required ensuring that all quantified formulas generated by strings are marked properly. It also required adding --fmf-bound to a few regressions that explicitly require it.
2021-06-30Fix pre vs. post-rewrite in proofs for theory preprocessor (#6801)Andrew Reynolds
This changes an annotation of a step of rewriting from "post" to "pre" in the theory preprocessor. Fixes #6754.
2021-06-30int-to-bv: correct model values (#6811)yoni206
the int-to-bv preprocessing pass produced wrong models. This PR fixes this in a similar fashion to other preprocessing passes, by adding a substitution to the preprocessing pass context. This requires moving the main translation function to be a class method, rather than a helper method in an empty namespace. Thanks to @alex-ozdemir for raising this issue and producing a triggering benchmark (added to regressions in this PR).
2021-06-28Rewrite POW to POW2 when the base is 2 (#6806)yoni206
This PR introduces a rewrite from (^ 2 t) to (pow2 t) in order to make use of the specialized pow2 solver. One regression that expects an error when t is not a constant is changed accordingly.
2021-06-25pow2 -- final changes (#6800)yoni206
This commit adds the remaining changes for a working and integrated `pow2` solver. In particular, it adds a rewrite and a lemma that identify `pow2(x)` with `0` whenever `x<0`. Regressions are added as well, including `pow2-native-0.smt2` that shows the semantics of `pow2` on negative values. The next steps are new rewrites and and more lemma schemas.
2021-06-24Fix linear arithmetic for duplicate lemmas in incremental (#6784)Andrew Reynolds
The linear arithmetic solver was not robust to cases where a duplicate lemma is emitted. This leads to non-linear arithmetic not being called to check at full effort, leading to potential model soundness issues. Fixes #6773.
2021-06-23[hol] Disable bound fmf when HOL (#6792)Haniel Barbosa
Fixes #6536
2021-06-23[regressions] Adding regression from #5371 (#6791)Haniel Barbosa
2021-06-23[parser] [hol] Fix parser check for allowing functions when HOL is enabled ↵Haniel Barbosa
(#6790) Fixes #6526
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback