summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2020-03-11Add automatic Cython binding installation (#3933)makaimann
* Remove getIndices for Kinds * Test importing pycvc4 * Distutils install for pycvc4 * Use full path for cvc4kinds prefix * Remove zip_safe option (not needed for distutils) * Automatically clean up setup.py intermediate files * Rely on make install to install pycvc4 * Run make install when testing python bindings * Fix: Check importing pycvc4 when python bindings are built * Remove one -Wshadow warning for cython-generated files * Put the fake kinds submodule in generated __init__.py * Remove unnecessary file permission options in python CMakeLists * Respect install prefix unless in a virtualenv * Handle python2 print function * Use VIRTUAL_ENV environment variable to check if in python virtualenv * Add header and documentation to setup.py.in * Capitalize CVC4 in PyCVC4Install * Update src/api/python/CMakeLists.txt Co-Authored-By: Mathias Preiner <mathias.preiner@gmail.com> * Simplify CMakeLists for setup.py configuration * Shorten virtualenv check with Mathias's suggestion * Set TRAVIS_CVC4_PYTHON_BINDINGS to no in other builds * minor: bash syntax fix * Move pycvc4 import check to makeInstallCheck * Include installed pycvc4 location on PYTHONPATH * Better way to set PYTHONPATH Co-authored-by: Mathias Preiner <mathias.preiner@gmail.com> Co-authored-by: Andrew Reynolds <andrew.j.reynolds@gmail.com>
2020-03-11Do not enable some SMT-COMP specific options by default (#4038)Andrew Reynolds
Moves SMT-COMP-specific options to the SMT-COMP script. Both of these options have led to issues (segfaults or infinite loops). Issue #789 can be downgraded to "minor" after this PR. Btw, I did not add these specialized options to the "incremental" script of SMT-COMP, since I'm assuming they should not be used there.
2020-03-11Guard against null relevancy condition in SyGuS (#4033)Andrew Reynolds
Fixes #4025. Also makes our sygus default grammar for strings (slightly) better by including a dummy character, which is required for solving the regression added by this PR. A more robust (but unintuitive to the user) solution would be to include str.from_code( Start_Int ).
2020-03-11Add missing datatype functions to new API (#3930)Andrew Reynolds
This is in preparation for migrating the parser to use the Term-level API for datatypes. Notably, this adds the function mkDatatypeSorts for making mutually recursive datatypes. I've added a unit test that demonstrates this method (which mirrors the Expr-level datatype API).
2020-03-11Switch to Nodes for conjecture generator (#4026)Andrew Reynolds
Fixes #4022.
2020-03-11reset-assertions: Update TheoryEngine's PropEngine* (#4032)Andres Noetzli
Fixes #4028. TheoryEngine's pointer was not updated to the new PropEngine when resetting assertions. This commit fixes that. As far as I can tell, this was the only class storing a PropEngine* that isn't owned by PropEngine, so we should hopefully not have other similar issues.
2020-03-11Remove experimental symmetry breaker (#4005)Andrew Reynolds
This never impacted performance positively. Fixes #3997 and fixes #4015. There was a folder that the symmetry breaker was used on regress1/sym. These are simple examples that show when it is possible to find symmetries in SMT; the symmetry breaker is not critical for solving these. For now I'm leaving them as regressions documenting possible benchmarks to target if we revisit this technique.
2020-03-11Fix non-parametrized operators in subgoal generation (#4023)Andrew Reynolds
Fixes #4021. We were previously constructing a malformed HO_APPLY as part of a subgoal for induction.
2020-03-11Remove partial instantiation for local theory extensions (#4020)Andrew Reynolds
Fixes #4019. This feature was never fully implemented.
2020-03-11Fix (#4017)Andrew Reynolds
Fixes #4001. This assertion was more of a conjecture (stating that easy cases of miniscoping are already handled). However some option combinations can break this invariant, regardless the code should do the correct thing.
2020-03-11Fix duplicate variable issue in sygus-qe-preproc (#4013)Andrew Reynolds
2020-03-11Introduce tables in the rewriter (#3742)Andres Noetzli
This commit adds tables in the rewriter that store which function should be used to rewrite which kind. We have separate tables for `EQUAL` because every theory has its own equality rewriter.
2020-03-10Set assertion in `CnfStream::ensureLiteral()` (#3927)Andres Noetzli
Fixes #3814. `CnfProof` has a stack of assertions that are being converted to clauses. `CnfStream::ensureLiteral()` can result in clauses being added to the SAT solver. When adding a clause, we require an assertion that can be associated with the clause (https://github.com/CVC4/CVC4/blob/ba6ade0fc3f4cd339885652bb9bf5c87113c498d/src/prop/minisat/core/Solver.cc#L471-L476). However, in the issue that was reported, the stack was empty, resulting in an assertion failure. This commit fixes the issue by setting the current assertion to be the null node when a literal is being ensured (and changing the proof code to update the assertion associated with a literal if it is currently null). This should be ok since the clauses are not inputs or lemmas (if they are, the assertion associated with the clause will be updated).
2020-03-10bv-gauss-elim: Fix handling of inconsistent case. (#4027)Aina Niemetz
This fixes the case when all rows are inconsistent. Fixes #3999.
2020-03-10Fix real to int for parameterized kinds (#4016)Andrew Reynolds
2020-03-10Fix options for regression: --sort-inference is incompatible with unsat ↵Andrew Reynolds
cores. (#4011)
2020-03-10Fix sort inference for top-level Boolean variables (#4012)Andrew Reynolds
Fixes #4010.
2020-03-10Fix issue with reset-assertions. (#3988)Aina Niemetz
Calling (reset-assertions) in start mode was not handled correctly. Additionally, when calling (check-sat) after (reset-assertions) after a (check-sat) call that answered unsat, we answered unsat instead of sat. This cleans up and fixes reset-assertions) handling.
2020-03-10Logic exception instead of assertion failure for instantiate (#4006)Andrew Reynolds
Fixes #4003. Protects against a (class of) nonsensical option combinations.
2020-03-10Update bug report templateMathias Preiner
2020-03-10Remove assertion in resolution bound inferences (#3980)Andrew Reynolds
* Fix assertion in resolution bound inferences * Format * Minor Co-authored-by: Ahmed Irfan <43099566+ahmed-irfan@users.noreply.github.com>
2020-03-10Use fixed-width types in test/unit/context/contest_mm_black. (#3985)Aina Niemetz
2020-03-10Fix -Wshadow warning in test/unit/context/context_mm_black. (#3985)Aina Niemetz
2020-03-10Consolidate options that disable produceModels (#3973)Andrew Reynolds
Also adds --sort-inference to this list, fixes #3936.
2020-03-10Fix assertion failure in sort inference for Boolean equalities (#3993)Andrew Reynolds
Fixes #3990.
2020-03-10Fix -Wshadow warnings in sygus_grammar_cons.cpp. (#3986)Aina Niemetz
2020-03-10Do not set values for non-linear mult terms in collectModelInfo (#3983)Andrew Reynolds
Fixes #3803. When non-linear arithmetic determines there is a model, then it should not send model values for multiplication terms that the linear solver assigned when abstracting (non-linear) multiplication. This avoids conflicts if the non-linear solver changed a value for a variable occurring in a non-linear monomial. This avoids check-model failures.
2020-03-10 Fix real as int for incremental (#3979)Andrew Reynolds
Fixes #3956 and fixes #3969.
2020-03-10Do not traverse quantifiers in nl ext purify (#3982)Andrew Reynolds
2020-03-09Only register sygus terms to unfold if option is set (#3978)Andrew Reynolds
Fixes #3953.
2020-03-09Document bv-to-bool recursion (#3848)Alex Ozdemir
The BV-to-bool pass is implemented recursively. This commit documents that. We may want to change it at some point.
2020-03-09Enhancement: make the bool-to-bv pass more robust and targeted (#3021)makaimann
This pull request is an improvement to the bool-to-bv preprocessing pass. The existing pass is both too weak and too strong, depending on the circumstance. Throughout this description, "lower" refers to lowering a boolean to a bit-vector.
2020-03-09Rename sygus option name (#3977)Andrew Reynolds
This option enables the sygus solver (previous name was ceGuidedInst, deprecated from CAV 15 specific approach). It also improves when this option is set. In particular we ensure it is enabled when sygus is enabled for any reason.
2020-03-09Remove instantiation propagator infrastructure (#3975)Andrew Reynolds
2020-03-09Ensure standard miniscoping is applied before aggressive miniscoping (#3974)Andrew Reynolds
Fixes #3947.
2020-03-09Eliminate spurious assertion (#3976)Andrew Reynolds
2020-03-09DecisionEngine: Use unique_ptr for enabled strategies. (#3984)Aina Niemetz
2020-03-09Fix type issue in arith rewrite equality (#3972)Andrew Reynolds
Fixes #3952 and fixes #3940 and fixes #3941 and fixes #3968.
2020-03-09Make registration of unit clauses more robust (#3965)Andres Noetzli
Fixes #3959. It can happen that we generate a lemma that results in a unit clause that matches a unit clause that was added as an input. However, we are asserting that a unit clause can only be registered as either one of them. This commit fixes the issue by only registering a unit clause from a lemma if it is not already satisfied. I chose this fix because the existing code doesn't seem to do anything (in terms of solving) for the case where we have a unit clause that is already satisfied because of an input unit clause.
2020-03-09Increase stack size for Windows builds to 100 MB (#3943)Andres Noetzli
Fixes #3528. The default stack size for Windows builds is very limited (it seems to be 1 MB). This leads to problems for some of our users' benchmarks (see the previously mentioned issue and another email that we've received recently). Bumping the stack size to 100 MB seems to solve the issues for the benchmarks that we have received. This of course does not mean that we shouldn't continue working towards making less of our code recursive.
2020-03-09Clean up more uses of ExprManager in parsers (#3932)Andrew Reynolds
Towards parser migration. Beyond Datatypes, there are still a handful of calls to the ExprManager in the parsers. This eliminates a few missing cases from TPTP and also inlines the access of ExprManager in the places its used.
2020-03-09Convert more uses of strings to words (#3921)Andrew Reynolds
Towards theory of sequences. Also adds documentation to strncmp/rstrncmp and adds them to the Word interface.
2020-03-09Fix quoting of options on Travis (#3981)Andres Noetzli
For some reason, Travis has started to treat our `TRAVIS_CVC4_CONFIG` environment variable wrong, leading to failing builds. Travis started to wrap the argument into double quotes, so when we had single quotes around our argument list, the arguments were treated as a single argument and when we had double quotes, the second pair of double quotes terminated the first one permaturely. Declaring the environment variables individually seems to work as expected, so this commit is moving to that format.
2020-03-09Fixes for bounds on transcendental functions (#3832)Andrew Reynolds
This PR refactors and fixes how bounds are set for transcendental functions. The new code ensures that all transcendental function applications are given bounds. (Our previous failures to do so were hindering our ability to say "sat", due to NlModel::checkModel failures). There were previously two issues on why transcendental function applications were not being assigned bounds: "Slave" transcendental functions (e.g. those that we reduce via sin(t) = sin(y) ^ -pi <= y <= pi ^ y + 2*pi*N = t) were not being given bounds explicitly, Transcendental functions that are congruent to others (e.g. f(x) where f(y) exists and x=y in the current context) were being ignored and hence not bound. This PR clarifies the master/slave relationship that tracks which transcendental function applications have been purified, and furthermore tracks congruence classes. The setting of bounds and the check-model is further simplified by setting bounds on the original terms, whereas the current code sets bounds on the model values of terms. In other words, previously if we had term sin(y) and y^M = c, then we'd set bounds for sin(c), whereas the new code sets the bound on sin(y) directly. Fixes #3783. We answer unknown without an assertion failure on that benchmark now. Further work based on ignoring literals from internally generated lemmas is necessary for solving it sat.
2020-03-08Rewrite again full for DIV rewrite (#3945)Andrew Reynolds
Fixes #3944.
2020-03-07Explicit end marker for models printed in the CVC language (#3934)Ying Sheng
Fixes https://github.com/CVC4/cvc4-wishues/issues/9. When communicating with CVC4 using pipes and the CVC language, it was not possible to determine when all the lines of a model have been printed. This change adds begin and end markers as the example below: ``` MODEL BEGIN x : INT = -3; y : INT = 0; z : INT = 0; MODEL END; ```
2020-03-06Minor refactor for theory of sets (#3924)Andrew Reynolds
Flattens a block of code and refactors the main check loop, will make it easier to incorporate new extensions. It also avoids a needless call to check() for Relations when there are no relations constraints.
2020-03-06Simplify DatatypeDeclarationCommand command (#3928)Andrew Reynolds
The new API does not use inheritence for Sorts. The current DatatypeDeclarationCommand uses DatatypeType, which inherits from Type. This commit simplifies the class DatatypeType -> Type and updates the necessary code (e.g. in the printers). Notice we are not yet converting commands Type -> Sort here. It also makes the main call for constructing datatypes in the parser from DatatypeType -> api::Sort. This is in preparation for converting Expr-level Datatype to Term-level DatatypeDecl in the parsers.
2020-03-06Remove tester name from APIs (#3929)Andrew Reynolds
This removes the field "tester name" from the Expr-level and Term-level APIs. This field is an artifact of parsing and thus should be handled in the parsers. This refactor uncovered an issue in our regressions, namely our smt version >= 2.6 was not strictly complaint, since the symbol is-cons was being automatically defined for testers of constructors cons. This disables this behavior when strict mode is enabled. It updates the regressions with this issue. This is work towards parser migration.
2020-03-06Ignore model check warning in regression test (#3926)Andres Noetzli
PR #3918 added a new test case that results in a warning when checking models, which makes the regression fail. This commit adds a flag to the test to ignore that warning.
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback