summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2018-09-18Merge branch 'master' into fixEvalIdOffixEvalIdOfAndrew Reynolds
2018-09-18Decision strategy: incorporate strings fmf. (#2485)Andrew Reynolds
2018-09-18Fix issue with str.idof in evaluatorAndres Noetzli
The evaluator was evaluating `(str.idof "A" "" 1)` to `-1` instead of `1` due to a wrong bound check. This commit fixes the issue.
2018-09-18More aggressive caching of string skolems. (#2491)Andrew Reynolds
2018-09-18Move and rename sygus solver classes (#2488)Andrew Reynolds
2018-09-18fix assertion error (#2487)Haniel Barbosa
2018-09-17Clean remaining references to getNextDecisionRequest in quantifiers. (#2484)Andrew Reynolds
2018-09-17Improvements and fixes for symmetry detection and breaking (#2459)Andrew Reynolds
This fixes a few open issues with symmetry detection algorithm. It also extends the algorithm to do: - Alpha equivalence to recognize symmetries between quantified formulas, - A technique to recognize a subset of variables in two terms are symmetric, e.g. from x in A ^ x in B, we find A and B are interchangeable by treating x as a fixed symbol, - Symmetry breaking for maximal subterms instead of variables.
2018-09-17Move inst_strategy_cbqi to inst_strategy_cegqi (#2477)Andrew Reynolds
2018-09-17Decision strategy: incorporate cegis unif (#2482)Andrew Reynolds
2018-09-17 Decision strategy: incorporate bounded integers (#2481)Andrew Reynolds
2018-09-17Decision strategy: incorporate datatypes sygus solver. (#2479)Andrew Reynolds
2018-09-17More aggressive skolem caching for strings, document and clean preprocessor ↵Andrew Reynolds
(#2478)
2018-09-17Make strings model construction robust to lengths that are not propagated ↵Andrew Reynolds
equal (#2444) This fixes #2429. This was caused by arithmetic not notifying an equality between shared terms that it assigned to the same value. See explanation in comment. We should investigate a bit more why this is happening. I didnt think arithmetic was allowed to assign the same value to unpropagated shared length terms. I've opened issue https://github.com/CVC4/CVC4/issues/2443 to track this. Regardless, the strings model construction should be robust to handle this case, which this PR does.
2018-09-17Follow redirects with cURL in contrib/get* scripts (#2471)Andres Noetzli
On systems without `wget`, we use `curl` to download dependencies. However, we were not using the `-L` (follow redirects) option, which is necessary to download certain dependencies, e.g. CryptoMiniSat.
2018-09-17Remove broken dumping support from portfolio build (#2470)Andres Noetzli
Dumping support for portfolio builds was introduced in 84f26af22566f7c10dea45b399b944cb50b5e317 but as far as I can tell, the implementation has already been problematic in the original implementation. The current implementation has the following issues: - Dumping with a portfolio build (even when using the single threaded executable) results in a segfault. The reason is that the DumpChannel variable is declared as an `extern` and exists for the duration of the program. The problem is that it stores a `CommandSequence`, which indirectly may store nodes. When shutting down CVC4, the destructor of `DumpC` is called, which destroys the `CommandSequence`, which results in a segfault because the `NodeManager` does not exist anymore. The node manager is (indirectly) owned and destroyed by the `api::Solver` object. - Additionally, adding commands to the `CommandSequence` is not thread safe (it just calls `CommandSequence::addCommand()`, which in turn pushes back to a vector [0] (which is not thread safe [1]). A single instance of `DumpChannel` is shared among all threads (it is not declared `thread_local` [2]). - The `CommandSequence` in `DumpC` was not used in the original implementation and is still unused on master. The original commit mentions that the portfolio build stores the commands in the `CommandSequence` but not why. This commit removes the `CommandSequence` and related methods from `DumpC` to avoid the issue when destroying `DumpChannel`. It disables dumping for portfolio builds and adds a check at configure-time that not both options have been enabled simultaneously. Given that the option was not functional previously, the problematic implementation, and the fact that the dump of multiple threads wouldn't be very useful, disabling dumping for portfolio builds is unlikely to be problem. An improvement that could be made is to disable dumping support only for the pcvc4 binary and while enabling it for the single-threaded version, even when using `--with-portfolio`. However, we currently do not have the infrastructure for that (we use the same libcvc4 library for both binaries). [0] https://github.com/CVC4/CVC4/blob/c2111c86973b8a80e20a3fdf3cbd0b2ff0dc7010/src/smt/command.cpp#L756 [1] https://en.cppreference.com/w/cpp/container [2] https://github.com/CVC4/CVC4/blob/c2111c86973b8a80e20a3fdf3cbd0b2ff0dc7010/src/smt/dump.h#L117
2018-09-17Remove unnecessary tracing from preprocessing (#2472)Andres Noetzli
With the introduction of the PreprocessingPass class, tracing/dumping/time keeping is done automatically in the base class, eliminating the need for doing it manually. This commit cleans up SmtEngine, removing tracing/dumping/time keeping in preprocessing that is not needed anymore.
2018-09-17Decision strategy: incorporate UF with cardinality constraints (#2476)Andrew Reynolds
2018-09-17Decision strategy: incorporate sygus feasible and sygus stream feasible (#2462)Andrew Reynolds
2018-09-14Refactor how assertions are added to decision engine (#2396)Andres Noetzli
Before refactoring the preprocessing passes, we were using three arguments to add assertions to the decision engine. Now all that information lives in the AssertionPipeline. This commit moves the AssertionPipeline to its own file and changes the `addAssertions()` methods related to the decision engine to take an AssertionPipeline as an arguement instead of three separate ones. Additionally, the TheoryEngine now uses an AssertionPipeline for lemmas.
2018-09-14Add Skolem cache for strings, refactor length registration (#2457)Andrew Reynolds
This PR is in preparation for doing more aggressive caching of skolems (for example, in the strings preprocessor). It refactors sendLengthLemma -> registerLength, which unifies how length lemmas for skolems and other string terms are handled.
2018-09-13Generalize CandidateRewriteDatabase to ExprMiner (#2340)Andrew Reynolds
2018-09-13Fix #include for minisat headers in bvminisat. (#2463)Mathias Preiner
2018-09-13Uses information gain heuristic for building better solutions from DTs (#2451)Haniel Barbosa
2018-09-13Simplify storing of transcendental function applications that occur in ↵Andrew Reynolds
assertions (#2458)
2018-09-13 Decision strategy: incorporate CEGQI (#2460)Andrew Reynolds
2018-09-12New C++ API: Try to fix (false positive) Coverity warnings. (#2454)Aina Niemetz
2018-09-12Examples: Remove obsolete flag CVC4_MAKE_EXAMPLES. (#2461)Aina Niemetz
2018-09-12 Initial infrastructure for theory decision manager (#2447)Andrew Reynolds
2018-09-11Fix for when strings process loop is disabled. (#2456)Andrew Reynolds
2018-09-11Fixe compiler warning in line_buffer.cpp. (#2453)Aina Niemetz
2018-09-11Support model cores via option --produce-model-cores. (#2407)Andrew Reynolds
This adds support for model cores, fixes #1233. It includes some minor cleanup and additions to utility functions.
2018-09-11Avoid calling size() every iteration (#2450)yoni206
2018-09-10Fix global negate (#2449)Andrew Reynolds
2018-09-10fix (#2446)Haniel Barbosa
2018-09-10Set NodeManager to nullptr when exporting vars (#2445)Andres Noetzli
PR #2409 assumed that temporarily setting the NodeManager to nullptr when creating variables is not needed anymore. However, this made our portfolio build fail. This commit reintroduces the temporary NodeManager change while creating variables.
2018-09-10Using a single condition enumerator in sygus-unif (#2440)Haniel Barbosa
This commit allows the use of unification techniques in which the search space for conditions in explored independently of the search space for return values (i.e. there is a single condition enumerator for which we always ask new values, similar to the PBE case). In comparison with asking the ground solver to come up with a minimal number of condition values to resolve all my separation conflicts: - _main advantage_: can quickly enumerate relevant condition values for solving the problem - _main disadvantage_: there are many "spurious" values (as in not useful for actual solutions) that get in the way of "good" values when we build solutions from the lazy trie. A follow-up PR will introduce an information-gain heuristic for building solutions, which ultimately greatly outperforms the other flavor of sygus-unif. There is also small improvements for trace messages.
2018-09-10Refactor non-clausal simplify preprocessing pass. (#2425)Aina Niemetz
2018-09-10Squash implementation of counterexample-guided instantiation (#2423)Andrew Reynolds
2018-09-10Add (str.replace (str.replace y w y) y z) rewrite (#2441)Andres Noetzli
2018-09-07Replace boost::integer_traits with std::numeric_limits. (#2439)Mathias Preiner
Further, remove redundant gmp.h include in options_handler.cpp.
2018-09-07Remove clock_gettime() replacement for macOS. (#2436)Mathias Preiner
Not needed anymore since macOS 10.12 introduced clock_gettime().
2018-09-07 Make isClosedEnumerable a member of TypeNode (#2434)Andrew Reynolds
2018-09-06 Further simplify and fix initialization of ce guided instantiation (#2437)Andrew Reynolds
2018-09-06Refactor and document quantifiers variable elimination and conditional ↵Andrew Reynolds
splitting (#2424)
2018-09-06Minor improvements to interface for rep set. (#2435)Andrew Reynolds
2018-09-05 More extended rewrites for strings equality (#2431)Andrew Reynolds
2018-09-05 Eliminate select over store in quantifier bodies (#2433)Andrew Reynolds
2018-09-05Use std::uniqe_ptr for d_eq_infer to make Coverity happy. (#2432)Mathias Preiner
2018-09-05Remove printing support for sygus enumeration types (#2430)Andrew Reynolds
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback