Andres Noetzli [Fri, 12 Oct 2018 07:21:51 +0000 (00:21 -0700)]
Add rewrites for str.replace in str.contains (#2623)
This commit adds two rewrites for `(str.contains (str.replace x y x) z) ---> (str.contains x z)`, either when `z = y` or `(str.len z) <= 1`. Additionally, the commit adds `(str.contains (str.replace x y z) w) ---> true` if `(str.contains x w) --> true` and `(str.contains z w) ---> true`.
Andrew Reynolds [Fri, 12 Oct 2018 02:20:35 +0000 (21:20 -0500)]
Fix heuristic for string length approximation (#2622)
Andrew Reynolds [Fri, 12 Oct 2018 01:34:16 +0000 (20:34 -0500)]
Refactor printing of parameterized operators in smt2 (#2609)
Andres Noetzli [Thu, 11 Oct 2018 22:00:26 +0000 (15:00 -0700)]
Improve reasoning about empty strings in rewriter (#2615)
Andrew Reynolds [Thu, 11 Oct 2018 16:19:52 +0000 (11:19 -0500)]
Fix partial operator elimination in sygus grammar normalization (#2620)
Andrew Reynolds [Thu, 11 Oct 2018 05:31:57 +0000 (00:31 -0500)]
Fix string ext inference for rewrites that introduce negation (#2618)
Haniel Barbosa [Thu, 11 Oct 2018 04:30:58 +0000 (23:30 -0500)]
Fix default setting of CegisUnif options (#2605)
Mathias Preiner [Thu, 11 Oct 2018 03:48:44 +0000 (20:48 -0700)]
cmake: Use gcovr instead lcov for coverage report generation. (#2617)
Andres Noetzli [Thu, 11 Oct 2018 03:07:34 +0000 (20:07 -0700)]
Fix compiler warnings (#2602)
Andrew Reynolds [Thu, 11 Oct 2018 01:44:02 +0000 (20:44 -0500)]
Synthesize rewrite rules from inputs (#2608)
Andrew Reynolds [Wed, 10 Oct 2018 21:56:27 +0000 (16:56 -0500)]
Fix cegis so that evaluation unfolding is not interleaved. (#2614)
Andrew Reynolds [Wed, 10 Oct 2018 20:29:36 +0000 (15:29 -0500)]
Optimize regular expression elimination (#2612)
Andres Noetzli [Wed, 10 Oct 2018 19:30:06 +0000 (12:30 -0700)]
Add length-based rewrites for (str.substr _ _ _) (#2610)
Andrew Reynolds [Tue, 9 Oct 2018 21:54:58 +0000 (16:54 -0500)]
Support for basic actively-generated enumerators (#2606)
Aina Niemetz [Tue, 9 Oct 2018 17:36:40 +0000 (10:36 -0700)]
Random: support URNG interface (#2595)
Use std::shuffle (with Random as the unified random generator) instead
of std::random_shuffle for deterministic, reproducable random shuffling.
Andrew Reynolds [Tue, 9 Oct 2018 16:51:06 +0000 (11:51 -0500)]
Allow multiple synthesis conjectures. (#2593)
Aina Niemetz [Tue, 9 Oct 2018 03:16:57 +0000 (20:16 -0700)]
Fix compiler warnings. (#2601)
Aina Niemetz [Tue, 9 Oct 2018 02:44:22 +0000 (19:44 -0700)]
BV instantiator: Factor out util functions. (#2604)
Previously, all util functions for the BV instantiator were static functions
in theory/quantifiers/cegqi/ceg_bv_instantiator.cpp. For the corresponding
unit test, it was therefore required to include this cpp file in order to
test these functions. This factors out these functions into a
theory/quantifiers/cegqi/ceg_bv_instantiator_utils.(cpp|h).
Asan reported errors for the corresponing unit test because of this.
Aina Niemetz [Tue, 9 Oct 2018 01:51:33 +0000 (18:51 -0700)]
BV inverter: Factor out util functions. (#2603)
Previously, all invertibility condition functions were static functions
in theory/quantifiers/bv_inverter.cpp. For the corresponding unit test,
it was therefore required to include this cpp file in order to test
these functions. This factors out these functions into a
theory/quantifiers/bv_inverter_utils.(cpp|h).
Andrew Reynolds [Tue, 9 Oct 2018 01:03:39 +0000 (20:03 -0500)]
Fix string register extended terms (#2597)
A regress2 benchmark was failing, due to a recent change in our strings rewriter.
The issue is that our string rewriter is now powerful enough to deduce that certain extended terms like `(str.substr (str.++ x "zb") 1 1)` must be non-empty. As a consequence, our emptiness-split `(str.substr (str.++ x "zb") 1 1) = "" OR len( (str.substr (str.++ x "zb") 1 1) ) > 0` is instead a propagation `len( (str.substr (str.++ x "zb") 1 1) ) > 0`. This means that `(str.substr (str.++ x "zb") 1 1)` may not appear in an assertion sent to strings.
The fix is to ensure that extended function terms in any assertions *or shared terms* are registered.
This also simplifies the code so that another (now spurious) call to ExtTheory::registerTermRec is removed.
Aina Niemetz [Tue, 9 Oct 2018 00:34:35 +0000 (17:34 -0700)]
Cmake: Fix ctest call for example/translator. (#2600)
example/translator expects an input file to translate but none was provided in the ctest call.
This caused the ctest call to hang and wait for input on stdin in some configurations (in
particular in the nightlies).
Andrew Reynolds [Mon, 8 Oct 2018 23:28:30 +0000 (18:28 -0500)]
Address slow sygus regressions (#2598)
Andrew Reynolds [Mon, 8 Oct 2018 20:00:23 +0000 (15:00 -0500)]
Disable extended rewriter when applicable with var agnostic enumeration (#2594)
Haniel Barbosa [Fri, 5 Oct 2018 21:42:27 +0000 (16:42 -0500)]
Fix unif trace (#2550)
Andrew Reynolds [Fri, 5 Oct 2018 17:15:40 +0000 (12:15 -0500)]
Fix cache for sygus post-condition inference (#2592)
Andrew Reynolds [Fri, 5 Oct 2018 16:13:39 +0000 (11:13 -0500)]
Update default options for sygus (#2586)
Andrew Reynolds [Fri, 5 Oct 2018 05:34:16 +0000 (00:34 -0500)]
Fix rewrite rule filtering. (#2591)
Aina Niemetz [Thu, 4 Oct 2018 23:47:43 +0000 (16:47 -0700)]
New C++ API: Add checks for Sorts. (#2519)
Andrew Reynolds [Thu, 4 Oct 2018 22:26:10 +0000 (17:26 -0500)]
Infrastructure for string length entailments via approximations (#2514)
Andres Noetzli [Thu, 4 Oct 2018 21:22:02 +0000 (14:22 -0700)]
Only use SKIP_RETURN_CODE with CMake 3.9.0+ (#2590)
With older versions of CMake, skipped tests are reported as failures,
which is undesirable. This commit changes the CMakeLists file to only
use the `SKIP_RETURN_CODE` property if a newer version of CMake is used.
Andrew Reynolds [Thu, 4 Oct 2018 20:11:31 +0000 (15:11 -0500)]
Fix end constraint for regexp elimination (#2571)
Andrew Reynolds [Thu, 4 Oct 2018 17:21:16 +0000 (12:21 -0500)]
Clean remaining references to getNextDecisionRequest and simplify (#2500)
Aina Niemetz [Thu, 4 Oct 2018 05:58:06 +0000 (22:58 -0700)]
Fix mem leak in sha1_collision example. (#2588)
Aina Niemetz [Thu, 4 Oct 2018 05:35:59 +0000 (22:35 -0700)]
Fix mem leak in sets_translate example. (#2589)
Andrew Reynolds [Thu, 4 Oct 2018 04:41:56 +0000 (23:41 -0500)]
Simplify datatypes printing (#2573)
Aina Niemetz [Thu, 4 Oct 2018 02:22:34 +0000 (19:22 -0700)]
Fix compiler warnings. (#2585)
Andrew Reynolds [Wed, 3 Oct 2018 21:12:15 +0000 (16:12 -0500)]
Fix regress (#2575)
Andrew Reynolds [Wed, 3 Oct 2018 20:28:34 +0000 (15:28 -0500)]
Add actively generated sygus enumerators (#2552)
Haniel Barbosa [Wed, 3 Oct 2018 19:48:44 +0000 (14:48 -0500)]
Make CegisUnif with condition independent robust to var agnostic (#2565)
Andrew Reynolds [Wed, 3 Oct 2018 18:51:21 +0000 (13:51 -0500)]
Fix stale op list in sets (#2572)
Andrew Reynolds [Wed, 3 Oct 2018 16:40:44 +0000 (11:40 -0500)]
Eliminate partial operators within lambdas during grammar normalization (#2570)
Andres Noetzli [Wed, 3 Oct 2018 03:56:36 +0000 (20:56 -0700)]
cmake: Display skipped tests as not run (#2567)
Currently, the run_regression.py script just returns 0 when we skip a
test due to a feature not supported by the current configuration.
Returning 0 marks those tests as passed. To make it more clear which
tests were skipped, this commit adds the `SKIP_RETURN_CODE` [0] property
to the regression tests and changes the regression script to return 77
for skipped tests. The feature is supported since at least CMake 3.0 [0].
For backwards compatibility with autotools, returning 77 for skipped
tests is only active when `--cmake` is passed to the run_regression.py
script.
[0] https://cmake.org/cmake/help/v3.0/prop_test/SKIP_RETURN_CODE.html
Andres Noetzli [Wed, 3 Oct 2018 01:10:54 +0000 (18:10 -0700)]
Allow (_ to_fp ...) in strict parsing mode (#2566)
When parsing with `--strict-parsing`, we are checking whether the
operators that we encounter have been explicitly added to the
`d_logicOperators` set in the `Parser` class. We did not do that for the
indexed operator `(_ to_fp ...)` (which is represented by the kind
`FLOATINGPOINT_TO_FP_GENERIC`). This commit adds the operator.
Mathias Preiner [Wed, 3 Oct 2018 00:30:54 +0000 (17:30 -0700)]
unit: Fix ASAN detection for GCC. (#2561)
Andres Noetzli [Tue, 2 Oct 2018 21:55:21 +0000 (14:55 -0700)]
Make registration of preprocessing passes explicit (#2564)
As it turns out, self-registering types are problematic with static
linkage [0]. Instead of fixing the issue with linker flags, which seems
possible but also brittle (e.g. the flags may be different for different
linkers), this commit adds an explicit registration of each
preprocessing pass.
[0] https://www.bfilipek.com/2018/02/static-vars-static-lib.html
Alex Ozdemir [Tue, 2 Oct 2018 19:22:57 +0000 (12:22 -0700)]
Fix documentation for `make regress`. (#2557)
Mathias Preiner [Tue, 2 Oct 2018 18:52:06 +0000 (11:52 -0700)]
cmake: Add examples to build-tests, add warning for disabling static build. (#2562)
Andres Noetzli [Tue, 2 Oct 2018 17:28:38 +0000 (10:28 -0700)]
Fix "catching polymorphic type by value" warnings (#2556)
When using the `TS_ASSERT_THROWS` marco from CxxTest, we have to make
sure that we use a reference type for the exception, otherwise the unit
test tries to catch the exception by value, resulting in "catching
polymorphic type by value" warnings.
Mathias Preiner [Mon, 1 Oct 2018 23:37:15 +0000 (16:37 -0700)]
cmake: Generate compile_commands.json on configure. (#2559)
Mathias Preiner [Mon, 1 Oct 2018 22:53:30 +0000 (15:53 -0700)]
cmake: Add build target build-tests to build all test dependencies. (#2558)
Haniel Barbosa [Mon, 1 Oct 2018 21:37:31 +0000 (16:37 -0500)]
init scalar class members (coverity issues
1473720 and
1473721) (#2554)
Aina Niemetz [Mon, 1 Oct 2018 18:36:45 +0000 (11:36 -0700)]
Fix compiler warnings. (#2555)
Andres Noetzli [Mon, 1 Oct 2018 18:07:13 +0000 (11:07 -0700)]
Fix dumping pre/post preprocessing passes (#2469)
This commit changes the hard-coded list of checks for
preprocessing-related dump tags to take advantage of the new
preprocessing pass registration mechanism from PR #2468. It also fixes a
typo in the `Dump.isOn()` check in `PreprocessingPass::dumpAssertions()`
and adds a list of available passes to the `--dump help` output.
Andres Noetzli [Mon, 1 Oct 2018 17:06:38 +0000 (10:06 -0700)]
Refactor preprocessing pass registration (#2468)
This commit refactors how preprocessing pass registration works,
inspired by LLVM's approach [0]. The basic idea is that every
preprocessing pass declares a static variable of type `RegisterPass` in
its source file that registers the pass with the
`PreprocessingPassRegistry` when starting the program. The registry is a
singleton that keeps track of all the available passes and allows other
code to create instances of the passes (note: previously the registry
itself was owning the passes but this is no longer the case). One of the
advantages of this solution is that we have a list of available passes
directly at the beginning of the program, which is useful for example
when parsing options.
As a side effect, this commit also fixes the SortInference pass, which
was expecting arguments other than the preprocessing pass context in its
constructor.
This commit is required for fixing dumping pre/post preprocessing
passes. It is also the ground work for allowing the user to specify a
preprocessing pipeline using command-line arguments.
[0] https://llvm.org/docs/WritingAnLLVMPass.html
Andrew Reynolds [Sun, 30 Sep 2018 20:41:57 +0000 (15:41 -0500)]
Add rewrite for solving stoi (#2532)
Mathias Preiner [Sun, 30 Sep 2018 05:55:33 +0000 (22:55 -0700)]
cmake: Ignore ctest exit code for coverage reports.
Haniel Barbosa [Sat, 29 Sep 2018 13:41:21 +0000 (08:41 -0500)]
Stream concrete values for variable agnostic enumerators (#2526)
Andres Noetzli [Fri, 28 Sep 2018 17:18:04 +0000 (10:18 -0700)]
Rewrites for (= "" _) and (= (str.replace _) _) (#2546)
Andres Noetzli [Fri, 28 Sep 2018 15:21:32 +0000 (08:21 -0700)]
cmake: Only do Java tests when unit testing on (#2551)
Right now, we are adding the Java tests even when we are not building
unit tests. This commit changes the build system to only add the Java
tests when unit tests are enabled. There are two reasons for this
change:
- building a production version of CVC4 should not require JUnit
- it seems more intuitive (to me at least) to disable JUnit tests when
unit tests are disabled
This change also simplifies building the Java bindings in our homebrew
formula.
Mathias Preiner [Fri, 28 Sep 2018 02:47:25 +0000 (19:47 -0700)]
cmake: Add CxxTest finder module to allow custom paths. (#2542)
Andrew Reynolds [Thu, 27 Sep 2018 19:40:06 +0000 (14:40 -0500)]
Remove assertion. (#2549)
Andrew Reynolds [Thu, 27 Sep 2018 18:57:17 +0000 (13:57 -0500)]
Infrastructure for using active enumerators in sygus modules (#2547)
Andrew Reynolds [Thu, 27 Sep 2018 12:09:18 +0000 (07:09 -0500)]
Incorporate all unification enumerators into getTermList. (#2541)
Andrew Reynolds [Thu, 27 Sep 2018 05:36:24 +0000 (00:36 -0500)]
Fix Taylor overapproximation for large exponentials (#2538)
Andrew Reynolds [Thu, 27 Sep 2018 04:25:14 +0000 (23:25 -0500)]
Fix homogeneous string constant rewrite (#2545)
Andrew Reynolds [Thu, 27 Sep 2018 03:25:35 +0000 (22:25 -0500)]
Fix bug in getSymbols. (#2544)
Mathias Preiner [Thu, 27 Sep 2018 01:28:15 +0000 (18:28 -0700)]
cmake: Only print dumping warning if not disabled by user. (#2543)
Haniel Barbosa [Wed, 26 Sep 2018 23:13:29 +0000 (18:13 -0500)]
Makes SyGuS parsing more robust in invariant problems (#2509)
Mathias Preiner [Wed, 26 Sep 2018 22:34:58 +0000 (15:34 -0700)]
cmake: Fix test target dependency issues. (#2540)
Andrew Reynolds [Wed, 26 Sep 2018 21:50:51 +0000 (16:50 -0500)]
Enable quantified array regression. (#2539)
Andrew Reynolds [Wed, 26 Sep 2018 19:54:05 +0000 (14:54 -0500)]
Symmetry breaking for variable agnostic enumerators (#2527)
Aina Niemetz [Wed, 26 Sep 2018 04:59:28 +0000 (21:59 -0700)]
cmake: New INSTALL.md for build and testing instructions. (#2536)
Mathias Preiner [Wed, 26 Sep 2018 04:26:06 +0000 (21:26 -0700)]
cmake: Exclude examples for coverage target. (#2535)
Andrew Reynolds [Wed, 26 Sep 2018 03:50:20 +0000 (22:50 -0500)]
Eagerly ensure literal on active guards for sygus enumerators (#2531)
Mathias Preiner [Wed, 26 Sep 2018 00:33:48 +0000 (17:33 -0700)]
cmake: Add check for GCC 4.5.1 and warn user. (#2533)
Aina Niemetz [Wed, 26 Sep 2018 00:07:00 +0000 (17:07 -0700)]
examples/hashsmt/sha1_inversion: Fix includes for newer Boost version. (#2534)
Aina Niemetz [Tue, 25 Sep 2018 20:27:59 +0000 (13:27 -0700)]
cmake: configure.sh wrapper: Removed unused option --gmp.
yoni206 [Tue, 25 Sep 2018 19:52:04 +0000 (14:52 -0500)]
carefully printing trusted assertions in proofs (#2505)
Mathias Preiner [Tue, 25 Sep 2018 16:31:40 +0000 (09:31 -0700)]
cmake: Fix tag code generation dependencies. (#2529)
Andrew Reynolds [Tue, 25 Sep 2018 12:34:54 +0000 (07:34 -0500)]
Fix warnings uncovered by cmake build (#2521)
Andrew Reynolds [Tue, 25 Sep 2018 05:24:20 +0000 (00:24 -0500)]
Fix quantifiers selector over store rewrite (#2510)
Due an ordering on if's the rewrite sel( store( a, i, j ), k ) ---> ite( k=i, j, sel( a, k ) ) was very rarely kicking in.
After the change, we are +61-7 on SMT LIB:
https://www.starexec.org/starexec/secure/details/job.jsp?id=30581
Andrew Reynolds [Tue, 25 Sep 2018 04:50:50 +0000 (23:50 -0500)]
Allow partial models for multiple sygus enumerators (#2499)
Andrew Reynolds [Tue, 25 Sep 2018 04:00:32 +0000 (23:00 -0500)]
Infrastructure for variable agnostic sygus enumerators (#2511)
Andrew Reynolds [Tue, 25 Sep 2018 02:56:31 +0000 (21:56 -0500)]
Improve non-linear check model error handling (#2497)
Andrew Reynolds [Tue, 25 Sep 2018 02:28:31 +0000 (21:28 -0500)]
Refactor strings equality rewriting (#2513)
This moves the extended rewrites for string equality to the main strings rewriter as a function rewriteEqualityExt, and makes this function called on every equality that is generated (from non-equalities) by our rewriter.
Mathias Preiner [Tue, 25 Sep 2018 01:42:32 +0000 (18:42 -0700)]
cmake: Fix dependencies for code generation. (#2524)
Mathias Preiner [Tue, 25 Sep 2018 01:15:56 +0000 (18:15 -0700)]
Fix wiki urls. (#2504)
Aina Niemetz [Tue, 25 Sep 2018 00:32:43 +0000 (17:32 -0700)]
cmake: Fix git version info (again). (#2523)
Mathias Preiner [Mon, 24 Sep 2018 23:23:37 +0000 (16:23 -0700)]
cmake: Fix theory order #2. (#2522)
Andres Noetzli [Mon, 24 Sep 2018 21:52:08 +0000 (14:52 -0700)]
Unify rewrites related to (str.contains x y) --> (= x y) (#2512)
Mathias Preiner [Mon, 24 Sep 2018 20:14:13 +0000 (13:14 -0700)]
cmake: Fix theory order. (#2518)
Andres Noetzli [Mon, 24 Sep 2018 19:48:56 +0000 (12:48 -0700)]
Make string rewriter unit tests more robust (#2520)
This commit changes the unit test for the string rewriter to use the
extended rewriter instead of the regular rewriter to make it more
robust, e.g. to different orderings in conjunctions.
Aina Niemetz [Mon, 24 Sep 2018 19:21:14 +0000 (12:21 -0700)]
cmake: Fix and simplify git version info. (#2516)
Mathias Preiner [Mon, 24 Sep 2018 18:44:41 +0000 (11:44 -0700)]
cmake: Add program prefix option. (#2515)
Mathias Preiner [Mon, 24 Sep 2018 15:57:29 +0000 (08:57 -0700)]
Fix generating debug/trace tags.
Aina Niemetz [Sun, 23 Sep 2018 17:55:10 +0000 (10:55 -0700)]
New C++ API: Add checks for Terms/OpTerms. (#2455)
Andrew Reynolds [Sun, 23 Sep 2018 17:16:49 +0000 (12:16 -0500)]
Fix regress2. (#2502)
Mathias Preiner [Sat, 22 Sep 2018 09:02:01 +0000 (02:02 -0700)]
cmake: Add python3 option.
Mathias Preiner [Sat, 22 Sep 2018 06:26:56 +0000 (23:26 -0700)]
cmake: Enable -Wall.
Mathias Preiner [Sat, 22 Sep 2018 01:40:18 +0000 (18:40 -0700)]
cmake: Fix systemtests dependency.