summaryrefslogtreecommitdiff
path: root/test
AgeCommit message (Collapse)Author
2018-08-07 Fix simple reg exp consume rewrite (#2281)Andrew Reynolds
2018-08-07Fix inference of pre and post conditions for non variable arguments. (#2237)Andrew Reynolds
2018-08-06Add RegLan to smt2/sygus parsers. (#2276)Andrew Reynolds
2018-08-06Remove support for Enum sygus syntax. (#2264)Andrew Reynolds
2018-08-06 Fixes and improvements for single invocation inference (#2261)Andrew Reynolds
2018-08-06Fix degenerate case of sygus grammar construction for 0-argument Bools (#2260)Andrew Reynolds
2018-08-02Parse standard separation logic inputs (#2257)Andrew Reynolds
2018-08-02Improve CEGQI heuristics involving equality and multiple instantiations (#2254)Andrew Reynolds
2018-08-01Improvements and fixes in cegqi arithmetic (#2247)Andrew Reynolds
This includes several improvements for cegqi with arithmetic: - Randomly choose either lower or upper bounds instead of always using lower bounds (this is similar to cegqi+BV), - Equalities are handled by processAssertions, - Resort to *only* model values at full effort instead of trying to mix model values/bounds (this is also similar to cegqi+BV), - cegqi+arithmetic does not try multiple instantiations unless the flag cbqiMultiInst is set. This makes it so that ceg_instantiator does not have exponential behavior when the strategy is non-monotonic. It also includes a core fix to computing what bound is optimal based on an ordering that incorporates virtual terms. Previously, we would consider, e.g.: `a+b*delta > c+d*delta if a>=c and b>=d` Whereas the correct check is lexicographic: `a+b*delta > c+d*delta if a>c or a=c and b>d` This means e.g. 2+(-1)*delta > 3 was previously wrongly inferred. This is part of merging https://github.com/ajreynol/CVC4/tree/cegqiSingleInst, which is +3-0 on SMTLIB BV and +12-9 on SMTLIB LIA+LRA+NRA+NIA.
2018-08-01 InteractiveShell: Remove redundant options argument. (#2244)Aina Niemetz
2018-08-01Fix issues with bv2nat (#2219)Andrew Reynolds
This includes: - A missing case in the smt2 printer, - A bug in an inference of int2bv applied to bv2nat where the types are different.
2018-07-31Improvements and tests for the API around separation logic (#2229)ayveejay
- Introduces a system that validating that, when not using THEORY_SEP, that it is not possible to obtain the separation logic heap/nil (validate_exception()) - Introduces a system test demonstrating how to use the separation logic theory, and then how to use the "getters" to obtain and interrogate the heap/nil expressions (validate_getters()) - Refactors the original getters to avoid duplicate code - Add a check as part of the getters to ensure that THEORY_SEP is in use
2018-07-30Add support for incremental eager bit-blasting. (#1838)Mathias Preiner
Eager incremental solving is achieved via solving under assumptions. As soon as incremental and eager bit-blasting is enabled, assertions are passed to the SAT solver as assumptions rather than assertions. This requires the eager SAT solver to support incremental solving, which is currently only supported by CryptoMiniSat.
2018-07-26Disabling bvLazyRewriteExtf in the right place (#2214)yoni206
2018-07-26Fix rewriter for lambda (#2211)Andrew Reynolds
The rewriter for lambda is currently too aggressive, there are cases like: lambda xy. x = y that are converted into an array representation that when indexing based on x gives (store y true false), which is subsequently converted to: lambda fv_1 fv_2. fv_1 = y where fv_1 and fv_2 are canonical free variables. Here, y is used as index but was not substituted hence is incorrectly made free. To make things simpler, this PR disables any rewriting for lambda unless the array representation of the lambda is a constant, which hardcodes/simplifies a previous argument (reqConst=true). This fixes a sygus issue I ran into yesterday (regression added in this PR). Some parts of the code were formatted as a result.
2018-07-24Improvements to sets + cardinality + quantifiers (#2200)Andrew Reynolds
2018-07-23 sygusComp2018: add regressions (#2191)Andrew Reynolds
2018-07-21Optimizations and fixes for computing whether a type is finite (#2179)Andrew Reynolds
2018-07-21Remove --no-check-proofs and --no-check-unsat-cores from a satisfiable test ↵yoni206
(#2184)
2018-07-17Refactor sep-pre-skolem-emp preprocessing passyoni206
2018-07-13Properly clean up assertion stack in CnfProof (#2147)Andres Noetzli
Fixes issue #2137. CnfProof has a stack of assertions that are being converted to clauses. Previously, it could happen that while an assertion was being added, TheoryProxy::explainPropagation() would be called from Solver::reason() and push an assertion to the stack that was then not removed. This lead to a clause id of the assertion being associated with the explanation instead, which in turn could lead to a wrong unsat core. This commit identifies two cases where TheoryProxy::explainPropagation() is called without cleaning up the assertion stack afterwards. It also adds an assertion that the assertion stack must be empty when we are getting the unsat core.
2018-07-13 sygusComp2018: optimization for collect model info (#2105)Andrew Reynolds
2018-07-05sygusComp2018: Improve string rewriter (#2141)Andres Noetzli
2018-07-04Remove unused CDVector (#2139)Andres Noetzli
2018-07-02Add regression test for issue #1986 (#2114)Andres Noetzli
The issue is not triggered anymore after PR #2059 but the test case is good to have for changes in MiniSat code.
2018-07-02Refactor ApplySubsts preprocessing pass. (#2120)Aina Niemetz
2018-07-02Modify cegqi heuristic for finite datatypes (#2126)Andrew Reynolds
2018-06-28Fix stale reference in MiniSat when generating UC (#2113)Andres Noetzli
In MiniSat's analyze(), we were taking a reference of a clause that could be invalidated by a call to resolveOutUnit(). resolveOutUnit() can lead to allocation of clauses which in turn can lead to clauses being reallocated, making the reference stale. The commit encloses the reference in a code block that makes the lifetime of the reference more obvious and removes uses of the potentially stale reference.
2018-06-28Split and document ceg theory instantiators (#2094)Andrew Reynolds
2018-06-26sygusComp2018: Add evaluator (#2090)Andres Noetzli
This commit adds the Evaluator class that can be used to quickly evaluate terms under a given substitution without going through the rewriter. This has been shown to lead to significant performance improvements on SyGuS PBE problems with a large number of inputs because candidate solutions are evaluated on those inputs. With this commit, the evaluator only gets called from the SyGuS solver but there are potentially other places in the code that could profit from it.
2018-06-25Updated copyright headers.Aina Niemetz
2018-06-20Check unsat cores in regressions also without LFSC (#1955)Andres Noetzli
When moving the LFSC checker out of the CVC4 repository in commit dfa69ff98a14fcc0f2387e59a0c9994ef440e7d0, we disabled checking unsat cores when CVC4 was compiled without LFSC due to the complexity of the regression script. This commit changes the new(-ish) Python regression script to check unsat cores even when CVC4 was compiled without LFSC. This is done by having two separate flags, --with-lfsc and --enable-proof, for the regression script that mirror the configuration flags. The regression script performs unsat cores and proofs checks based on those flags. Additionally, this commit changes the regression script to check proofs and unsat cores in two independent runs. Testing them in a single run masked issues #1953 and #1954.
2018-06-15Disable solving non-linear BV literals by default (#2070)Andrew Reynolds
2018-06-13Fix simple regexp consume (#2066)Andrew Reynolds
2018-06-12Fix strip constant endpoint for ITOS in strings rewriter (#2067)Andrew Reynolds
2018-06-10Fix equality conflicts reported by FP (#2064)Andrew Reynolds
2018-06-09Disable test that fails in competition mode (#2063)Andres Noetzli
Commit 106e764a04e4099cc36d13de9cec47cbf717b6cc missed one test case. This commit disables that test case for the competition build.
2018-06-08Add flag to skip regression if feature enabled (#2062)Andres Noetzli
This commit adds the option of skipping regressions when a specified feature is enabled. It also changes some of the regression tests to be skipped when it is a competition build because regressions fail otherwise. In the tests changed in this commit, we do not care about reproducing error messages in a competition build, so we can skip them.
2018-06-08Reset decisions at SAT level after solving (#2059)Andres Noetzli
Some quick background: CVC4 has two primary contexts: the assertion context (which corresponds to the push/pops issued by the user) and the decision/SAT context (which corresponds to the push/pops done by the user and each decision made by MiniSat. Before 2cc0e2c6a691fb6d30ed8879832b49bc1f277d77, we had an additonal push/pop when doing the actual solving. With these removed, it could happen that we get a wrong result when doing incremental solving: ``` ... ; check-sat call returns sat, the decision level in the SAT solver is ; non-zero at this point (check-sat) ; Solver::addClause_() determines that we cannot add the clause to the ; SAT solver directly because the decision level is non-zero (i.e. the ; clause is treated like a theory lemma), thus it is added to the lemmas ; list. (assert false) ; The solver stores some information about the current state, including ; the value of the "ok" flag in Solver, which indicates whether the ; current constraints are unsatisfiable. Note that "ok" is true at this ; point. (push) ; Now, in Solver::updateLemmas(), we add clauses from the lemmas list. ; The problem is that empty clauses (which "false" is after removing "false" ; literals) and unit clauses are not added like normal clauses. Instead, ; the empty clause, essentially just results in the "ok" flag being set to ; false (unit clauses are added to the decision trail). (check-sat) ; Here, the solver restores the information stored during ; (push), including the "ok" flag, which is now true again. (pop) ; At this point, the solver has "forgotten" about (assert false) since ; the "ok" flag is back to true and it answers sat. (check-sat) ``` There are multiple ways to look at the problem and to fix it: - One could argue that an input assertion should always be added directly to the clauses in the SAT solver, i.e. the solver should always be at decision level 0 when we are adding input clauses. The advantage of this is that it is relatively easy to implement, corresponds to what the original MiniSat code does (it calls Solver::cancelUntil(0) after solving), and is no worse than what we had before commit 2cc0e2c6a691fb6d30ed8879832b49bc1f277d77 (push/pop do a strict superset of what resetting the decision at the current assertion level does). The disadvantage is that we might throw away some useful work. - One could argue that is fine that (assert false) is treated like a theory lemma. The advantage being that it might result in more efficient solving and the disadvantage being that it is much trickier to implement. Unfortunately, it is not quite clear from the code what the original intention was but we decided to implement the first solution. This commit exposes a method in MiniSat to reset the decisions at the current assertion level. We call this method from SmtEngine after solving. Resetting the decisions directly after solving while we are still in MiniSat does not work because it causes issues with datastructures in the SMT solver that use the decision context (e.g. TheoryEngine::d_incomplete seems to be reset too early, resulting in us answering sat instead of unknown).
2018-06-04Only enable transcendentals if logic is N[I]RAT (#2052)Andres Noetzli
2018-06-04Enable cegqi (with model values) for floating point by default (#2023)Andrew Reynolds
2018-06-04Regressions: Support for requiring CVC4 features (#2044)Andres Noetzli
This commit adds supprt for the `REQUIRES` directive in our regression benchmarks. This directive can be used to enable certain benchmarks only if CVC4 has been configured with certain features enabled.
2018-06-02Fix BV-abstraction check to consider SKOLEM. (#2042)Mathias Preiner
Further, fix a bug in the AIG bitblaster that was also uncovered with the minimized file.
2018-06-02Fix preinitialization pass for finite model finding (#2047)Andrew Reynolds
2018-06-01Fix quantified bv variable elimination (#2039)Andrew Reynolds
2018-06-01Apply preprocessing to counterexample lemmas in CEGQI (#2027)Andrew Reynolds
2018-06-01 Use monomial sum utility to solve for quantifiers macros (#2038)Andrew Reynolds
2018-05-30Fix bv-abstraction check for AND with non bit-vector atoms. (#2024)Mathias Preiner
2018-05-29 Make user's SMT2 version override file version (#2004)Andres Noetzli
2018-05-25Reenable repair const (#1983)Andrew Reynolds
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback