cvc5.git
6 years agoDisable dumping test for non-dumping builds (#2662)
Andres Noetzli [Sat, 20 Oct 2018 14:02:16 +0000 (07:02 -0700)]
Disable dumping test for non-dumping builds (#2662)

6 years agoTravis: run examples and avoid building them twice (#2663)
Andres Noetzli [Sat, 20 Oct 2018 13:47:30 +0000 (06:47 -0700)]
Travis: run examples and avoid building them twice (#2663)

`make check` builds the examples but does not run them. This commit
changes our Travis script to run the examples after building them and
removes `makeExamples()` to avoid building them twice.

6 years agoBV rewrites (mined): Rule 35: ConcatPullUp with special const simplified. (#2647)
Aina Niemetz [Wed, 17 Oct 2018 21:26:32 +0000 (14:26 -0700)]
BV rewrites (mined): Rule 35: ConcatPullUp with special const simplified. (#2647)

Simplifications based on the special const is now delegated down, only
the concat is pulled up.

6 years agoBV rewrites (mined): Rule 35: ConcatPullUp (BITVECTOR_XOR) with special const. (...
Aina Niemetz [Wed, 17 Oct 2018 16:22:44 +0000 (09:22 -0700)]
BV rewrites (mined): Rule 35: ConcatPullUp (BITVECTOR_XOR) with special const. (#2647)

6 years agoSygus streaming non-implied predicates (#2660)
Andrew Reynolds [Sat, 20 Oct 2018 01:59:51 +0000 (20:59 -0500)]
Sygus streaming non-implied predicates (#2660)

6 years agoRemove autotools build system. (#2639)
Mathias Preiner [Fri, 19 Oct 2018 21:45:42 +0000 (14:45 -0700)]
Remove autotools build system. (#2639)

6 years agoFix util::Random for macOS builds (#2655)
Andres Noetzli [Fri, 19 Oct 2018 17:15:33 +0000 (10:15 -0700)]
Fix util::Random for macOS builds (#2655)

6 years agoAdd helper to detect length one string terms (#2654)
Andres Noetzli [Fri, 19 Oct 2018 15:14:22 +0000 (08:14 -0700)]
Add helper to detect length one string terms (#2654)

This commit introduces a helper function to detect string terms that
have exactly/at most length one. This is useful for a lot of rewrites
because strings of at most length one are guaranteed to not overlap
multiple components in a concatenation, which allows for more aggressive
rewriting.

This commit has been tested with --sygus-rr-synth-check for >1h on the
string term grammar.

6 years agoAdd OptionException handling during initialization (#2466)
Andres Noetzli [Fri, 19 Oct 2018 04:05:48 +0000 (21:05 -0700)]
Add OptionException handling during initialization (#2466)

The initial motivation for this commit was that dump with an invalid tag
was leading to a segfault. The reason for the segfault was as follows:

1. `api::Solver` creates an `ExprManager`, which is stored in a
`unique_ptr` as a class member
2. The `api::Solver` tries to create an SmtEngine instance
3. The `SmtEnginePrivate` constructor subscribes to events in the
NodeManager and starts registering option listeners
4. When the `SmtEnginePrivate` gets to registerSetDumpModeListener, it
registers and notifies the DumpModeListener which calls
Dump::setDumpFromString, which fails with an `OptionException` due to
the invalid tag
5. While propagating the exception through `api::Solver`, the
`ExprManager` is deleted but the non-existent `SmtEnginePrivate` is
still subscribed to its events and there are still option listeners
registered. This leads to a segfault because the NodeManager tries to
notify the `SmtEnginePrivate` about deleted nodes

This commit fixes the issue by catching the `OptionException` in
`SmtEnginePrivate`, unsubscribing the `SmtEnginePrivate` from the
NodeManager events and deleting its option listener registrations before
rethrowing the exception. In addition, it changes the
`Options::registerAndNotify()` method to immediately delete a
registration if notifying the registration resulted in an
``OptionException`` (otherwise only the `ListenerCollection` knows about
the registration and complains about it in its destructor).  Finally,
the commit adds a simple regression test for invalid dump tags.

6 years agocmake: Run regression level 2 for make check. (#2645)
Mathias Preiner [Fri, 19 Oct 2018 02:22:22 +0000 (19:22 -0700)]
cmake: Run regression level 2 for make check. (#2645)

6 years agoNon-implied mode for model cores (#2653)
Andrew Reynolds [Fri, 19 Oct 2018 00:37:11 +0000 (19:37 -0500)]
Non-implied mode for model cores (#2653)

6 years agoNon-contributing find replace rewrite (#2652)
Andrew Reynolds [Thu, 18 Oct 2018 17:51:42 +0000 (12:51 -0500)]
Non-contributing find replace rewrite (#2652)

6 years agoImprove reduction for str.to.int (#2636)
Andrew Reynolds [Thu, 18 Oct 2018 16:58:51 +0000 (11:58 -0500)]
Improve reduction for str.to.int (#2636)

6 years agoIntroducing internal commands for SyGuS commands (#2627)
Haniel Barbosa [Thu, 18 Oct 2018 15:07:18 +0000 (10:07 -0500)]
Introducing internal commands for SyGuS commands (#2627)

6 years agoConstant length regular expression elimination (#2646)
Andrew Reynolds [Thu, 18 Oct 2018 12:37:43 +0000 (07:37 -0500)]
Constant length regular expression elimination (#2646)

6 years ago Skip sygus-rr-synth-check regressions when ASAN on (#2651)
Andres Noetzli [Thu, 18 Oct 2018 05:24:02 +0000 (22:24 -0700)]
 Skip sygus-rr-synth-check regressions when ASAN on (#2651)

This commit disables three regressions when using an ASAN build. The
regressions are all leaking memory when invoking the subsolver (see
issue #2649). Debugging the issue will take a while but is not very
critical since this feature is currently only used by CVC4 developers
but it prevents our nightly builds from going through.

6 years agoShow if ASAN build in --show-config (#2650)
Andres Noetzli [Thu, 18 Oct 2018 04:21:00 +0000 (21:21 -0700)]
Show if ASAN build in --show-config (#2650)

This commit extends `--show-config` to show whether the current build is
an ASAN build or not. This is done by moving a detection that was
previously done for the unit tests into base/configuration_private.h.

In addition to being convenient, this allows us to easily exclude
regression tests from ASAN builds.

6 years agoSygus query generator (#2465)
Andrew Reynolds [Thu, 18 Oct 2018 03:09:45 +0000 (22:09 -0500)]
Sygus query generator (#2465)

6 years ago Fix context-dependent for positive contains reduction (#2644)
Andrew Reynolds [Wed, 17 Oct 2018 16:14:49 +0000 (11:14 -0500)]
 Fix context-dependent for positive contains reduction (#2644)

6 years agoBV rewrites (mined): Rule 35: ConcatPullUp (BITVECTOR_OR) with special const. (#2643)
Aina Niemetz [Wed, 17 Oct 2018 00:48:58 +0000 (17:48 -0700)]
BV rewrites (mined): Rule 35: ConcatPullUp (BITVECTOR_OR) with special const. (#2643)

Match:       `x_m | concat(y_my, 0_n, z_mz)`
Rewrites to: `concat(x[m-1:m-my] | y, x[m-my-1:m-my-n], x[m-my-n-1:0] | z)`

Match:       `x_m | concat(y_my, 1_n, z_mz)`
Rewrites to: `concat(x[m-1:m-my] | y, x[m-my-1:m-my-n+1], 1_1, x[m-my-n-1:0] | z)`

Match:       `x_m | concat(y_my, ~0_n, z_mz)`
Rewrites to: `concat(x[m-1:m-my] | y, ~0_n, x[m-my-n-1:0] | z)`

On QF_BV with eager and CaDiCaL (time limit 600s, penalty 600s):
```
          | CVC4-base                              | CVC4-concatpullup-or                     |
BENCHMARK | SLVD   SAT   UNSAT   TO   MO   CPU[s]  | SLVD   SAT   UNSAT   TO  MO   CPU[s]  |
   totals | 38992 13844  25148  1082  28  984887.4 | 39028 13845  25183  1046 28  974819.1 |
```

6 years agocmake: Add CxxTest include directory to unit test includes. (#2642)
Mathias Preiner [Tue, 16 Oct 2018 19:24:12 +0000 (12:24 -0700)]
cmake: Add CxxTest include directory to unit test includes. (#2642)

6 years agoBV rewrites (mined): Rule 35: Generalized ConcatPullUp (BITVECTOR_AND) with ones...
Aina Niemetz [Tue, 16 Oct 2018 01:12:00 +0000 (18:12 -0700)]
BV rewrites (mined): Rule 35: Generalized ConcatPullUp (BITVECTOR_AND) with ones (#2596).

6 years agoBV rewrites (mined): Rule 35: Generalized ConcatPullUp (BITVECTOR_AND) with 1 (#2596).
Aina Niemetz [Tue, 16 Oct 2018 00:10:47 +0000 (17:10 -0700)]
BV rewrites (mined): Rule 35: Generalized ConcatPullUp (BITVECTOR_AND) with 1 (#2596).

6 years agoBV rewrites (mined): Rule 35: Generalized ConcatPullUp (BITVECTOR_AND) with 0 (#2596).
Aina Niemetz [Fri, 12 Oct 2018 21:21:35 +0000 (14:21 -0700)]
BV rewrites (mined): Rule 35: Generalized ConcatPullUp (BITVECTOR_AND) with 0 (#2596).

6 years agoBV rewrites (mined): Rule 35: ConcatPullUp (BITVECTOR_AND) with 0 (#2596).
Aina Niemetz [Mon, 8 Oct 2018 17:35:21 +0000 (10:35 -0700)]
BV rewrites (mined): Rule 35: ConcatPullUp (BITVECTOR_AND) with 0 (#2596).

6 years agoImprove strings reductions including skolem caching for contains (#2641)
Andrew Reynolds [Tue, 16 Oct 2018 17:25:20 +0000 (12:25 -0500)]
Improve strings reductions including skolem caching for contains (#2641)

6 years agoImprove reduction for int.to.str (#2629)
Andrew Reynolds [Tue, 16 Oct 2018 17:03:34 +0000 (12:03 -0500)]
Improve reduction for int.to.str (#2629)

6 years agoOption for shuffling condition pool in CegisUnif (#2587)
Haniel Barbosa [Tue, 16 Oct 2018 07:39:03 +0000 (02:39 -0500)]
Option for shuffling condition pool in CegisUnif (#2587)

6 years agocmake: Generate git_versioninfo.cpp on build time. (#2640)
Mathias Preiner [Mon, 15 Oct 2018 23:46:17 +0000 (16:46 -0700)]
cmake: Generate git_versioninfo.cpp on build time. (#2640)

6 years agoDelay initialization of theory engine (#2621)
Andrew Reynolds [Mon, 15 Oct 2018 16:42:28 +0000 (11:42 -0500)]
Delay initialization of theory engine (#2621)

This implements solution number 2 for issue #2613.

6 years agoAdd more (str.replace x y z) rewrites (#2628)
Andres Noetzli [Mon, 15 Oct 2018 15:39:02 +0000 (08:39 -0700)]
Add more (str.replace x y z) rewrites (#2628)

6 years agoFix fp-bool.sy grammar and require symfpu (#2631)
Andres Noetzli [Sun, 14 Oct 2018 01:48:36 +0000 (18:48 -0700)]
Fix fp-bool.sy grammar and require symfpu (#2631)

6 years agoReset input language for ExprMiner subsolver (#2624)
Andres Noetzli [Sat, 13 Oct 2018 02:35:01 +0000 (19:35 -0700)]
Reset input language for ExprMiner subsolver (#2624)

6 years agoImprovements to rewrite rules from inputs (#2625)
Andrew Reynolds [Fri, 12 Oct 2018 20:44:22 +0000 (15:44 -0500)]
Improvements to rewrite rules from inputs (#2625)

6 years ago Add rewrites for str.replace in str.contains (#2623)
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`.

6 years ago Fix heuristic for string length approximation (#2622)
Andrew Reynolds [Fri, 12 Oct 2018 02:20:35 +0000 (21:20 -0500)]
 Fix heuristic for string length approximation (#2622)

6 years ago Refactor printing of parameterized operators in smt2 (#2609)
Andrew Reynolds [Fri, 12 Oct 2018 01:34:16 +0000 (20:34 -0500)]
 Refactor printing of parameterized operators in smt2 (#2609)

6 years agoImprove reasoning about empty strings in rewriter (#2615)
Andres Noetzli [Thu, 11 Oct 2018 22:00:26 +0000 (15:00 -0700)]
Improve reasoning about empty strings in rewriter (#2615)

6 years ago Fix partial operator elimination in sygus grammar normalization (#2620)
Andrew Reynolds [Thu, 11 Oct 2018 16:19:52 +0000 (11:19 -0500)]
 Fix partial operator elimination in sygus grammar normalization (#2620)

6 years ago Fix string ext inference for rewrites that introduce negation (#2618)
Andrew Reynolds [Thu, 11 Oct 2018 05:31:57 +0000 (00:31 -0500)]
 Fix string ext inference for rewrites that introduce negation (#2618)

6 years agoFix default setting of CegisUnif options (#2605)
Haniel Barbosa [Thu, 11 Oct 2018 04:30:58 +0000 (23:30 -0500)]
Fix default setting of CegisUnif options (#2605)

6 years agocmake: Use gcovr instead lcov for coverage report generation. (#2617)
Mathias Preiner [Thu, 11 Oct 2018 03:48:44 +0000 (20:48 -0700)]
cmake: Use gcovr instead lcov for coverage report generation. (#2617)

6 years agoFix compiler warnings (#2602)
Andres Noetzli [Thu, 11 Oct 2018 03:07:34 +0000 (20:07 -0700)]
Fix compiler warnings (#2602)

6 years agoSynthesize rewrite rules from inputs (#2608)
Andrew Reynolds [Thu, 11 Oct 2018 01:44:02 +0000 (20:44 -0500)]
Synthesize rewrite rules from inputs (#2608)

6 years agoFix cegis so that evaluation unfolding is not interleaved. (#2614)
Andrew Reynolds [Wed, 10 Oct 2018 21:56:27 +0000 (16:56 -0500)]
Fix cegis so that evaluation unfolding is not interleaved. (#2614)

6 years agoOptimize regular expression elimination (#2612)
Andrew Reynolds [Wed, 10 Oct 2018 20:29:36 +0000 (15:29 -0500)]
Optimize regular expression elimination (#2612)

6 years agoAdd length-based rewrites for (str.substr _ _ _) (#2610)
Andres Noetzli [Wed, 10 Oct 2018 19:30:06 +0000 (12:30 -0700)]
Add length-based rewrites for (str.substr _ _ _) (#2610)

6 years ago Support for basic actively-generated enumerators (#2606)
Andrew Reynolds [Tue, 9 Oct 2018 21:54:58 +0000 (16:54 -0500)]
 Support for basic actively-generated enumerators (#2606)

6 years agoRandom: support URNG interface (#2595)
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.

6 years agoAllow multiple synthesis conjectures. (#2593)
Andrew Reynolds [Tue, 9 Oct 2018 16:51:06 +0000 (11:51 -0500)]
Allow multiple synthesis conjectures. (#2593)

6 years agoFix compiler warnings. (#2601)
Aina Niemetz [Tue, 9 Oct 2018 03:16:57 +0000 (20:16 -0700)]
Fix compiler warnings. (#2601)

6 years agoBV instantiator: Factor out util functions. (#2604)
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.

6 years ago BV inverter: Factor out util functions. (#2603)
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).

6 years ago Fix string register extended terms (#2597)
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.

6 years agoCmake: Fix ctest call for example/translator. (#2600)
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).

6 years agoAddress slow sygus regressions (#2598)
Andrew Reynolds [Mon, 8 Oct 2018 23:28:30 +0000 (18:28 -0500)]
Address slow sygus regressions (#2598)

6 years ago Disable extended rewriter when applicable with var agnostic enumeration (#2594)
Andrew Reynolds [Mon, 8 Oct 2018 20:00:23 +0000 (15:00 -0500)]
 Disable extended rewriter when applicable with var agnostic enumeration (#2594)

6 years agoFix unif trace (#2550)
Haniel Barbosa [Fri, 5 Oct 2018 21:42:27 +0000 (16:42 -0500)]
Fix unif trace (#2550)

6 years ago Fix cache for sygus post-condition inference (#2592)
Andrew Reynolds [Fri, 5 Oct 2018 17:15:40 +0000 (12:15 -0500)]
 Fix cache for sygus post-condition inference (#2592)

6 years agoUpdate default options for sygus (#2586)
Andrew Reynolds [Fri, 5 Oct 2018 16:13:39 +0000 (11:13 -0500)]
Update default options for sygus (#2586)

6 years agoFix rewrite rule filtering. (#2591)
Andrew Reynolds [Fri, 5 Oct 2018 05:34:16 +0000 (00:34 -0500)]
Fix rewrite rule filtering. (#2591)

6 years agoNew C++ API: Add checks for Sorts. (#2519)
Aina Niemetz [Thu, 4 Oct 2018 23:47:43 +0000 (16:47 -0700)]
New C++ API: Add checks for Sorts. (#2519)

6 years agoInfrastructure for string length entailments via approximations (#2514)
Andrew Reynolds [Thu, 4 Oct 2018 22:26:10 +0000 (17:26 -0500)]
Infrastructure for string length entailments via approximations (#2514)

6 years agoOnly use SKIP_RETURN_CODE with CMake 3.9.0+ (#2590)
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.

6 years agoFix end constraint for regexp elimination (#2571)
Andrew Reynolds [Thu, 4 Oct 2018 20:11:31 +0000 (15:11 -0500)]
Fix end constraint for regexp elimination (#2571)

6 years agoClean remaining references to getNextDecisionRequest and simplify (#2500)
Andrew Reynolds [Thu, 4 Oct 2018 17:21:16 +0000 (12:21 -0500)]
Clean remaining references to getNextDecisionRequest and simplify (#2500)

6 years agoFix mem leak in sha1_collision example. (#2588)
Aina Niemetz [Thu, 4 Oct 2018 05:58:06 +0000 (22:58 -0700)]
Fix mem leak in sha1_collision example. (#2588)

6 years agoFix mem leak in sets_translate example. (#2589)
Aina Niemetz [Thu, 4 Oct 2018 05:35:59 +0000 (22:35 -0700)]
Fix mem leak in sets_translate example. (#2589)

6 years agoSimplify datatypes printing (#2573)
Andrew Reynolds [Thu, 4 Oct 2018 04:41:56 +0000 (23:41 -0500)]
Simplify datatypes printing (#2573)

6 years agoFix compiler warnings. (#2585)
Aina Niemetz [Thu, 4 Oct 2018 02:22:34 +0000 (19:22 -0700)]
Fix compiler warnings. (#2585)

6 years agoFix regress (#2575)
Andrew Reynolds [Wed, 3 Oct 2018 21:12:15 +0000 (16:12 -0500)]
Fix regress (#2575)

6 years agoAdd actively generated sygus enumerators (#2552)
Andrew Reynolds [Wed, 3 Oct 2018 20:28:34 +0000 (15:28 -0500)]
Add actively generated sygus enumerators (#2552)

6 years agoMake CegisUnif with condition independent robust to var agnostic (#2565)
Haniel Barbosa [Wed, 3 Oct 2018 19:48:44 +0000 (14:48 -0500)]
Make CegisUnif with condition independent robust to var agnostic (#2565)

6 years agoFix stale op list in sets (#2572)
Andrew Reynolds [Wed, 3 Oct 2018 18:51:21 +0000 (13:51 -0500)]
Fix stale op list in sets (#2572)

6 years agoEliminate partial operators within lambdas during grammar normalization (#2570)
Andrew Reynolds [Wed, 3 Oct 2018 16:40:44 +0000 (11:40 -0500)]
Eliminate partial operators within lambdas during grammar normalization (#2570)

6 years agocmake: Display skipped tests as not run (#2567)
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

6 years agoAllow (_ to_fp ...) in strict parsing mode (#2566)
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.

6 years agounit: Fix ASAN detection for GCC. (#2561)
Mathias Preiner [Wed, 3 Oct 2018 00:30:54 +0000 (17:30 -0700)]
unit: Fix ASAN detection for GCC. (#2561)

6 years agoMake registration of preprocessing passes explicit (#2564)
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

6 years agoFix documentation for `make regress`. (#2557)
Alex Ozdemir [Tue, 2 Oct 2018 19:22:57 +0000 (12:22 -0700)]
Fix documentation for `make regress`. (#2557)

6 years agocmake: Add examples to build-tests, add warning for disabling static build. (#2562)
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)

6 years agoFix "catching polymorphic type by value" warnings (#2556)
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.

6 years agocmake: Generate compile_commands.json on configure. (#2559)
Mathias Preiner [Mon, 1 Oct 2018 23:37:15 +0000 (16:37 -0700)]
cmake: Generate compile_commands.json on configure. (#2559)

6 years agocmake: Add build target build-tests to build all test dependencies. (#2558)
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)

6 years agoinit scalar class members (coverity issues 1473720 and 1473721) (#2554)
Haniel Barbosa [Mon, 1 Oct 2018 21:37:31 +0000 (16:37 -0500)]
init scalar class members (coverity issues 1473720 and 1473721) (#2554)

6 years agoFix compiler warnings. (#2555)
Aina Niemetz [Mon, 1 Oct 2018 18:36:45 +0000 (11:36 -0700)]
Fix compiler warnings. (#2555)

6 years ago Fix dumping pre/post preprocessing passes (#2469)
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.

6 years agoRefactor preprocessing pass registration (#2468)
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

6 years agoAdd rewrite for solving stoi (#2532)
Andrew Reynolds [Sun, 30 Sep 2018 20:41:57 +0000 (15:41 -0500)]
Add rewrite for solving stoi (#2532)

6 years agocmake: Ignore ctest exit code for coverage reports.
Mathias Preiner [Sun, 30 Sep 2018 05:55:33 +0000 (22:55 -0700)]
cmake: Ignore ctest exit code for coverage reports.

6 years agoStream concrete values for variable agnostic enumerators (#2526)
Haniel Barbosa [Sat, 29 Sep 2018 13:41:21 +0000 (08:41 -0500)]
Stream concrete values for variable agnostic enumerators (#2526)

6 years agoRewrites for (= "" _) and (= (str.replace _) _) (#2546)
Andres Noetzli [Fri, 28 Sep 2018 17:18:04 +0000 (10:18 -0700)]
Rewrites for (= "" _) and (= (str.replace _) _) (#2546)

6 years agocmake: Only do Java tests when unit testing on (#2551)
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.

6 years agocmake: Add CxxTest finder module to allow custom paths. (#2542)
Mathias Preiner [Fri, 28 Sep 2018 02:47:25 +0000 (19:47 -0700)]
cmake: Add CxxTest finder module to allow custom paths. (#2542)

6 years agoRemove assertion. (#2549)
Andrew Reynolds [Thu, 27 Sep 2018 19:40:06 +0000 (14:40 -0500)]
Remove assertion. (#2549)

6 years agoInfrastructure for using active enumerators in sygus modules (#2547)
Andrew Reynolds [Thu, 27 Sep 2018 18:57:17 +0000 (13:57 -0500)]
Infrastructure for using active enumerators in sygus modules (#2547)

6 years agoIncorporate all unification enumerators into getTermList. (#2541)
Andrew Reynolds [Thu, 27 Sep 2018 12:09:18 +0000 (07:09 -0500)]
Incorporate all unification enumerators into getTermList. (#2541)

6 years agoFix Taylor overapproximation for large exponentials (#2538)
Andrew Reynolds [Thu, 27 Sep 2018 05:36:24 +0000 (00:36 -0500)]
Fix Taylor overapproximation for large exponentials (#2538)

6 years ago Fix homogeneous string constant rewrite (#2545)
Andrew Reynolds [Thu, 27 Sep 2018 04:25:14 +0000 (23:25 -0500)]
 Fix homogeneous string constant rewrite (#2545)

6 years agoFix bug in getSymbols. (#2544)
Andrew Reynolds [Thu, 27 Sep 2018 03:25:35 +0000 (22:25 -0500)]
Fix bug in getSymbols. (#2544)