summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2018-06-15Address commentlengthPreserveAndres Noetzli
2018-06-15String rewriter: Add length preserving rewriteAndres Noetzli
This commit adds methods to the string rewriter to transform a string into a normalized string with the same length (but not the same content necessarily). One of the use cases is normalizing the string before the start index in an indexof operation. For example: ``` str.indexof(str.++("ABCD", x), y, 3) ---> str.indexof(str.++("AAAD", x), y, 3) ``` In addition to the helper methods, this commit adds the indexof rewrite above.
2018-06-13Workaround for incremental unsat cores (#1962)Andres Noetzli
This commit implements a workaround for computing unsat cores while doing incremental solving to address #1349. Currently, our resolution proofs do not handle clauses with a lower-than-assertion-level correctly because the resolution proofs for them get removed when popping the context but the SAT solver keeps using them. The workaround changes the behavior of the SAT solver to add clauses always at the current level if incremental solving and unsat cores are enabled. This makes sure that all learned clauses are removed when we pop below the level that they were learned at. This may degrade performance because the SAT solver has to relearn clauses.
2018-06-13Fix simple regexp consume (#2066)Andrew Reynolds
2018-06-13Disable unconstrainedSimp pass when proofs enabled (#1976)Andres Noetzli
Currently, we may end up enabling the unconstrainedSimp pass when proofs are enabled because the check that this pass is disabled happens before a check for automatically enabling it. This lead to issues when running for example on regress0/aufbv/bug00.smt with --check-proofs. This commit moves the code for automatically enabling the pass to only be run if proofs and unsat cores are disabled. Note: This commit is mostly a simple code move but formatting in setDefaults was a bit off, so there are a lot of formatting changes.
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-08Disable BV-abstraction in the competition script. (#2061)Mathias Preiner
2018-06-07Look for cryptominisat5_simple, not cryptominisat5 (#2058)Andres Noetzli
If the boost program_options library is missing, CryptoMiniSat5 only builds a cryptominisat5_simple binary and omits the cryptominisat5, which has more command-line options. We do not use the binary anyway, so this commit changes the cryptominisat.m4 script to look for the cryptominisat5_simple binary, which is always generated.
2018-06-07Remove invalid assertion (#1993). (#2057)Aina Niemetz
2018-06-06Clear pending inferences during datatypes splitting (#2056)Andrew Reynolds
2018-06-04Only enable transcendentals if logic is N[I]RAT (#2052)Andres Noetzli
2018-06-04Move assertion. (#2051)Andrew Reynolds
2018-06-04[SMT-COMP] Add new logics to run-scripts (#2022)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-02 Fix assertion involving unassigned Boolean eqc in model (#2050)Andrew Reynolds
2018-06-02Fix corner case of mixed int/real cegqi. (#2046)Andrew Reynolds
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-01Fix quantifiers conflict lemma handling (#2043)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-31Reduce before preregister. (#2025)Andrew Reynolds
2018-05-30Fix bv-abstraction check for AND with non bit-vector atoms. (#2024)Mathias Preiner
2018-05-30Ignore license key in set-info command. (#2021)Aina Niemetz
2018-05-30Fix for issue #2002 (#2012)Andres Noetzli
2018-05-30Fixes for quantifiers + incremental (#2009)Andrew Reynolds
2018-05-30[SMT-COMP] Print non-(un)sat output to stderr (#2019)Andres Noetzli
In the SMT-COMP runscript, we are currently discarding output on stdout that is not "sat" or "unsat" when using `trywith` (this is not the case with `finishwith`). Due to this, our tests might miss cases where CVC4 fails and prints an error on stdout when using `trywith`. This commit changes the script to print output other than "sat" or "unsat" to stderr.
2018-05-30Normalize negated bit-vector terms over equalities. (#2017)Mathias Preiner
2018-05-30Use CaDiCaL for eager bit-blasting in QF_NIA and QF_UFBV. (#2018)Mathias Preiner
2018-05-30Draft run script for strings smt comp 2018. (#2016)Andrew Reynolds
2018-05-29 Make user's SMT2 version override file version (#2004)Andres Noetzli
2018-05-29Disable minisat elimination when nonlinear is enabled (#2006)Andrew Reynolds
2018-05-29Track input language in a single place (#2003)Andres Noetzli
2018-05-28Builtin evaluation functions for sygus (#1991)Andrew Reynolds
2018-05-27Fix cegqi assertions for quantified non-linear cases. (#1999)Andrew Reynolds
2018-05-27Fix no-cbqi-innermost option name in run script (#1994)Andres Noetzli
2018-05-26Update SymFPU. (#1992)Mathias Preiner
2018-05-25Reenable repair const (#1983)Andrew Reynolds
2018-05-25MiniSat: Be more careful about running proof code (#1982)Andres Noetzli
In `addClause_()`, we were checking the condition `ca[confl].size() == 1` regardless if proofs were enabled or not, even though both branches of the if statement only do something when proofs are enabled. This lead to issue #1978 occurring even when not generating proofs. Note: This commit is *not* a fix for #1978 but it makes sure that the issue does not occur when not generating proofs/unsat cores.
2018-05-25Add QF_BV configuration for SMTCOMP'18. (#1981)Mathias Preiner
2018-05-25Fix various nl assertions. (#1980)Andrew Reynolds
2018-05-24Fix (#1979)Andrew Reynolds
2018-05-24Improve simple constant symmetry breaking for sygus (#1977)Andrew Reynolds
2018-05-24Fix compiler warnings (#1959)Andres Noetzli
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback