summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2019-04-16Merge branch 'master' into fixStrictParsingBvOpfixStrictParsingBvOpAndres Noetzli
2019-04-16Stratify enumerative instantiation (#2954)Andrew Reynolds
2019-04-16Minor simplifications to theory quantifiers (#2953)Andrew Reynolds
2019-04-15Check for rt library in configuration -- support for glibc<2.17 (#2854)makaimann
This is a minor fix for systems with glibc version < 2.17. In that case, we need to link with `-lrt` according to the clock_gettime man page.
2019-04-15Merge branch 'master' into fixStrictParsingBvOpAndres Noetzli
2019-04-15Initial version of run scripts for SMT-COMP 2019 (#2951)Andres Noetzli
For now, they are just copies of the 2018 version of the scripts.
2019-04-15Make bv{add,mul,and,or,xor,xnor} left-associativeAndres Noetzli
The most recent version of SMT-LIB defines bv{add,mul,and,or,xor,xnor} [0, 1] as left-associative. CVC4 treats all but bvxnor as having variable arity anyway but the arity check was too strict when using `--strict-parsing`. This commit changes the strict parsing check. For bvxnor, it adds code to the parser that expands an application of bvxnor into multiple applications of a binary bvxnor if needed. References: [0] http://smtlib.cs.uiowa.edu/theories-FixedSizeBitVectors.shtml (bvand, bvor, bvadd, bvmul) [1] http://smtlib.cs.uiowa.edu/logics-all.shtml#QF_BV (bvxor, bvxnor)
2019-04-12Referring to prerelease 1.8 (#2943)Haniel Barbosa
2019-04-11 Eliminate Boolean ITE within terms, fixes 2947 (#2949)Andrew Reynolds
2019-04-09Removing references to cvc4-bugs@... (#2945)Haniel Barbosa
2019-04-08"prerelease -> release" in INSTALL (#2944)Haniel Barbosa
2019-04-08Fix email address of the bugs email list and delete obsolete RELEASE-NOTES.Aina Niemetz
2019-04-08fix copyright year in configuration file (#2942)Haniel Barbosa
2019-04-05prerelease -> release (#2941)Haniel Barbosa
2019-04-05Fix another corner case of datatypes+PBE (#2938)Andrew Reynolds
2019-04-05fix fp issue (#2940)Haniel Barbosa
2019-04-05SatClauseSetHashFunction (#2916)Alex Ozdemir
* SatClauseHashFunction Added to the same file as SatLiteralHashFunction. * clang-format Thanks Andres!
2019-04-04adding sygus news (#2934)Haniel Barbosa
2019-04-04Ignoring FP benchmarks with "unsafe" sizes unless option (#2931)Haniel Barbosa
2019-04-03Update release notes and lib version (#2933)Haniel Barbosa
2019-04-03Update copyright headers.Aina Niemetz
2019-04-03get-authors: Add GitHub user ayveejay -> Andrew V. Jones.Aina Niemetz
2019-04-03Fix combination of datatypes + strings in PBE (#2930)Andrew Reynolds
2019-04-01FP: Fix wrong model due to partial assignment (#2910)Andres Noetzli
For a simple query `(not (= (fp.isSubnormal x) false))`, we were getting a wrong model. The issue was that `(sign x)` was not assigned a value and did not appear in the shared terms. In `TheoryFp::collectModelInfo()`, however, we generate an expression that connects the components of `x` to `x`, which contains `(sign x)`. As a result, the normalization while building a model did not result in a constant. This commit fixes the issue by marking `(sign x)` (and `(significand x)`) as assignable. Assignable terms can take any value while building a model if there is no existing value.
2019-04-01Fix RewriteITEBv to ensure rewrite to fixpoint (#2878)Andres Noetzli
`TheoryBVRewriter::RewriteITEBv()` is currently always returning the status `REWRITE_DONE`. This can result in a situation where a rewritten node can be rewritten again (which breaks the contract of our rewriter). The unit test in this commit illustrates the issue. The commit fixes the issue by returning `REWRITE_AGAIN` or `REWRITE_AGAIN_FULL` if a node changed. `REWRITE_AGAIN_FULL` is needed if the resulting node may have a child that is not a subterm of the original expression.
2019-04-01Update includes to use cvc4 top-level directory in examples (#2877)makaimann
Because the headers are now installed in a `cvc4` directory, the examples need to include from there as well.
2019-04-01Move slow string regression to regress3 (#2913)Andres Noetzli
2019-04-01Modify strategy in sets+cardinality (#2909)Andrew Reynolds
2019-03-29Apply empty splits more aggressively in sets+cardinality (#2907)Andrew Reynolds
2019-03-29removing deprecated rewriting signature / example (#2906)Haniel Barbosa
2019-03-28Fix freeing nodes with maxed refcounts (#2903)Andres Noetzli
2019-03-28Fix issues in cvc parser (#2901)Andrew Reynolds
2019-03-28fix ex_bv.plf (#2905)Haniel Barbosa
2019-03-26Update copyright headers.Aina Niemetz
2019-03-26update-copyright: Update to 2019.Aina Niemetz
2019-03-26get-authors: Exclude empty lines.Mathias Preiner
2019-03-26Fix warnings about wrong line numbers (#2899)Andres Noetzli
2019-03-26Fix a few warnings (#2898)Andrew Reynolds
2019-03-25get-authors: Exclude common source code patterns. (#2900)Mathias Preiner
Exclude lines that #include header files and define namespaces. Since we use git blame -C -M to determine the current top contributors, git tries to match all #include and namespace definitions to an original author, which is not accurate since these lines are usually not copied over from other files.
2019-03-25update-copyright: Fix matching of excluded paths.Aina Niemetz
2019-03-25get-authors: Readd option -C to git blame command.Aina Niemetz
2019-03-24 Split regular expression solver (#2891)Andrew Reynolds
2019-03-24New C++ API: Fix include. (#2896)Aina Niemetz
2019-03-23BV: Fix typerules for rotate operators. (#2895)Aina Niemetz
2019-03-23Fix memory leak when using subsolvers (#2893)Andres Noetzli
ASAN was reporting memory leaks in regression tests that were using subsolvers. First, I am going to describe the origin of the leaks and then the solution implemented in this commit. Recall an `Expr` stores the `NodeManager` that the internal node is associated with. `Node::toExpr()` converts a `Node` to an `Expr` and assumes that the active `NodeManager` (returned by `NodeManager::currentNM()` is the one associated with the node. In `ExportPrivate::exportInternal()`, when we were exporting a skolem, we created a skolem in the target `NodeManager` by calling `NodeManager::mkSkolem()` (`ExprManager`s do not support the creation of skolems) but then we called `Node::toExpr()` on the resulting skolem while the origin `NodeManager` was the active `NodeManager`. One of the issues of having the wrong `NodeManager` in the `Expr` is that when the `Expr` is destroyed and the internal node's refcount reaches zero in destructor of `Expr`, then the node value associated with the node is added to the set of zombie nodes (nodes waiting to be garbage collected or resurrected) of the wrong `NodeManager`. The problem here is that the set of zombie nodes uses the node id to hash and compare nodes. Node ids, however, are only unique within a given `NodeManager`. Thus, if we have two nodes with the same id from different `NodeManager`s and both reach refcount zero in the context of the same `NodeManager`, only one of them will end up in the set of zombies and thus only that one will be freed. Using a subsolver realiably triggered this issue. `ExportPrivate::exportInternal()` stored the `Expr` with the wrong `NodeManager` in an `ExprManagerMapCollection` which associates variables in the original `ExprManager` with the variables in the target `ExprManager`. When we created a subsolver, we created the `ExprManagerMapCollection` before creating our subsolver, so it was deleted after the subsolver and so deleting the `ExprManagerMapCollection` deleted the last reference to `Expr`s holding skolem nodes associated with the wrong `NodeManager`. This commit fixes the issue by making sure that the correct `NodeManager` is in scope when converting the skolem/bound variable nodes to an `Expr`. It also swaps the creation order of `ExprManagerMapCollection` and `ExprManager` to make sure that `ExprManagerMapCollection` is deleted before the `ExprManager` that the `Expr`s belong to. Additionally, the commit makes it harder to make a similar mistake by asserting that the `Expr`s in the `ExprManagerMapCollection` are associated with the expected `ExprManager`s. Finally, it adds an assertion that tries to identify such issues by checking whether the list of zombies contains a node with the same id but located at a different address.
2019-03-23Strip non-matching beginning from indexof operator (#2885)Andres Noetzli
This commit adds a rewrite that strips endpoints from `str.indexof` operators if they don't overlap with the string that is being searched for using `stripConstantEndpoints()`. In addition to that, it makes `stripConstantEndpoints()` slightly more aggressive by allowing it to drop substring components that have zero overlap with the string that we are looking at. Finally, the commit fixes the default argument for `fullRewriter` of `checkEntailContains()` to be true instead of false, which should allow for more rewriting opportunities.
2019-03-22Revisit strings extended function decomposition (#2892)Andrew Reynolds
2019-03-22Fix instantiation stat for fmf (#2889)Andrew Reynolds
2019-03-22More fixes for PBE with datatypes (#2882)Andrew Reynolds
2019-03-22fix help information on TPTP parsing (#2884)Haniel Barbosa
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback