Andrew Reynolds [Wed, 23 Oct 2019 00:42:55 +0000 (19:42 -0500)]
Refactoring skolems for sets (#3381)
This refactors skolems introduced in the theory of sets. This is analogous to how skolems are treated for the theory of strings.
A key change that this commit enables is to identify "variable" sets based on those that weren't introduced by the SkolemCache (instead of via a check that their kind is `VARIABLE`, which is done currently and is error prone).
Aina Niemetz [Tue, 22 Oct 2019 21:03:09 +0000 (14:03 -0700)]
NodeValue: Eliminate redundant NBITS macros. (#3400)
Previously, the metakind header defined macros for the number of bits
reserved for fields in the NodeValue "header" (for the reference count,
the node kind, the number of children and the node id). These macros
were redundant, since the only one using them was the NodeValue itself,
which redefined them (while using them) as constants in the class.
Additionally, MAX_CHILDREN was defined (using these macros) not only
in the metakind header, but redefined in other places.
This commit defines the above values as constexpr members of the
NodeValue class and cleans up redundancy.
Andrew V. Jones [Sun, 20 Oct 2019 15:35:24 +0000 (16:35 +0100)]
Cleaning-up the declaration of wrapped functions/methods, which have no definitions (#3399)
Signed-off-by: Andrew V. Jones <andrewvaughanj@gmail.com>
makaimann [Fri, 18 Oct 2019 18:42:15 +0000 (11:42 -0700)]
Update overflow check to handle negative numbers (#3396)
Andrew Reynolds [Thu, 17 Oct 2019 21:40:18 +0000 (16:40 -0500)]
Move datatype utility functions to own file (#3397)
Andrew Reynolds [Wed, 16 Oct 2019 23:44:17 +0000 (18:44 -0500)]
Solver state for theory of strings (#3181)
This refactors the theory of strings to use a solver state object, which manages state information regarding assertions.
It also deletes some unused/undefined functions in theory_strings.h.
There are no major changes to the behavior of the code or its documentation in this PR.
This is work towards #1881.
Andres Noetzli [Tue, 15 Oct 2019 21:43:33 +0000 (14:43 -0700)]
Fix line numbers in templates (#3391)
This commit updates the line numbers in templates to address warnings
due to wrong line numbers.
Andres Noetzli [Tue, 15 Oct 2019 20:59:41 +0000 (13:59 -0700)]
Remove remaining references to Boost and Autotools (#3390)
This commit removes references to Boost and Autotools in the copyright
information and CMakeLists.txt.
Andres Noetzli [Tue, 15 Oct 2019 19:49:20 +0000 (12:49 -0700)]
Fix OOB access (#3383)
In theory_engine.cpp, we were calling `theoryOf()` with
`THEORY_SAT_SOLVER` as the theory id. However, `THEORY_SAT_SOLVER` is
defined as `THEORY_LAST` and thus out-of-bounds of the `d_theoryTable`
defined in theory_engine.h (which is of size `THEORY_LAST`. This commit
adds an assertion that detects the out-of-bound access and introduces a
method to turn a theory id into a string which correctly handles
`THEORY_SAT_SOLVER`.
Andres Noetzli [Tue, 15 Oct 2019 13:08:48 +0000 (06:08 -0700)]
Fix regression (#3393)
PR #3388 didn't disable the regression correctly (due to using `REQUIRE`
instead of `REQUIRES`). This commit fixes the issue.
Andres Noetzli [Mon, 14 Oct 2019 21:21:32 +0000 (14:21 -0700)]
Disable regression test for competition build (#3388)
This commit disables a regression test that was failing for the
competition build due to not emitting the expected error message.
Andrew Reynolds [Mon, 14 Oct 2019 20:53:55 +0000 (15:53 -0500)]
Remove benchmark (#3389)
Andrew Reynolds [Mon, 14 Oct 2019 20:01:05 +0000 (15:01 -0500)]
Support UF in default sygus grammars (#3319)
Andrew Reynolds [Mon, 14 Oct 2019 19:23:38 +0000 (14:23 -0500)]
Apply sygus repair constant techniques restricted to refinement lemmas (#3386)
Andrew Reynolds [Mon, 14 Oct 2019 18:24:27 +0000 (13:24 -0500)]
Ensure lemmas from sygus repair const are guarded (#3385)
Andrew Reynolds [Mon, 14 Oct 2019 17:03:41 +0000 (12:03 -0500)]
Minor refactor in strings rewriter (#3387)
Andrew Reynolds [Sun, 13 Oct 2019 23:22:28 +0000 (18:22 -0500)]
Eliminate negative constant coefficients in div/mod (#2929)
Fixes #1399.
Andrew Reynolds [Fri, 11 Oct 2019 19:00:56 +0000 (14:00 -0500)]
Check that logic is set when synth-fun command is encountered (#3384)
Andres Noetzli [Fri, 11 Oct 2019 08:09:09 +0000 (01:09 -0700)]
Add support for UBSan instrumentation (#3382)
This commit adds support for compiling CVC4 with UBSan instrumentation.
The commit also adds a dummy version of `AigBitblaster`. Previously,
when CVC4 was built without ABC, `AigBitblaster` was not fully defined
(the class was declared but the implementation was not being compiled).
This lead to missing RTTI information when compiling with UBSan
instrumentation.
Aina Niemetz [Fri, 11 Oct 2019 01:52:46 +0000 (18:52 -0700)]
Make order of theories explicit in the source code. (#3379)
Fixes #2517.
This makes the order of theories explicit in the source code rather than relying on the order defined via the build system. Previously, the build system ensured the order of the theories via the KINDS_FILES variable, which is a list of kinds files that is fed to code generation scripts (mkkind, mkmetakind, mkrewriter, mktheorytraits). The generated code critical to the order of theories w.r.t. soundess is the TheoryId enum, and the CVC4_FOR_EACH_THEORY macro. Ideally, we would want to get rid of the latter (ugly and error prone), which is not possible in the current configuration, and to be discussed in the future.
This PR moves the TheoryID enum and related functions to theory/theory_id.h, and the CVC4_FOR_EACH_THEORY macro to theory/theory_engine.cpp, the only place where it is used.
I ran it on whole SMT-LIB (non-incremental and incremental) and did not encounter any soundness issues. The only issue that did occur is not related to these changes, non-critical and known: #2993
Andrew Reynolds [Thu, 10 Oct 2019 19:47:03 +0000 (14:47 -0500)]
Warning instead of assertion for failing propagating instance (#3380)
Mathias Preiner [Thu, 10 Oct 2019 06:21:18 +0000 (23:21 -0700)]
test: Add TS_UTILS_EXPECT_ABORT macro for unit tests. (#3378)
TS_UTILS_EXPECT_ABORT can be used if an expression in a unit test is
expected to abort() instead of throwing an exception. This can happen if
CVC4_CHECK or CVC4_DCHECK fail.
Aina Niemetz [Wed, 9 Oct 2019 01:47:53 +0000 (18:47 -0700)]
NodeValue: Use 'using' instead of 'typedef'. (#3374)
Aina Niemetz [Wed, 9 Oct 2019 01:33:08 +0000 (18:33 -0700)]
NodeValue: Use fixed width return type for getRefCount(). (#3374)
Aina Niemetz [Tue, 8 Oct 2019 20:51:05 +0000 (13:51 -0700)]
Reorder NodeValue class according to our code style guidelines. (#3374)
Andres Noetzli [Wed, 9 Oct 2019 06:24:42 +0000 (23:24 -0700)]
Avoid printing success for `--force-logic` (#3363)
CVC4 was printing success when `--force-logic` was used because
internally, `--force-logic` generates a `SetBenchmarkLogicCommand`. This
caused issues with the SMT-COMP trace executor. This commit fixes the
behavior by muting the command if it was not issued by the user.
The issue was likely introduced with #3062.
Mathias Preiner [Wed, 9 Oct 2019 00:55:05 +0000 (17:55 -0700)]
cmake: Fix include of CVC4JavaTargets.cmake. (#3373)
Only include Java targets if Java bindings are enabled.
Aina Niemetz [Wed, 9 Oct 2019 00:24:49 +0000 (17:24 -0700)]
New C++ API: Term: Add missing checks for null. (#3364)
Co-Authored-By: Andres Noetzli <andres.noetzli@gmail.com>
Andrew Reynolds [Tue, 8 Oct 2019 23:06:16 +0000 (18:06 -0500)]
Limit cases of sygus inference based on type (#3370)
This makes `--sygus-inference` a no-op for inputs where there is a free function whose sort cannot be handled in a sygus grammar.
It also fixes an issue where skolem variables were not being treated as functions-to-synthesize.
Fixes #3250 and fixes #3356.
Andrew Reynolds [Tue, 8 Oct 2019 20:32:38 +0000 (15:32 -0500)]
Fix method for getting arithmetic function definition body (#3371)
Piotr Trojanek [Thu, 22 Aug 2019 21:22:51 +0000 (23:22 +0200)]
prefer prefix ++ operator for iterators
Detected with cppcheck static analyser, which said: (performance) Prefer
prefix ++/-- operators for non-primitive types. Reformat with clang-format
as needed.
Signed-off-by: Piotr Trojanek <piotr.trojanek@gmail.com>
Piotr Trojanek [Thu, 22 Aug 2019 21:12:20 +0000 (23:12 +0200)]
pass parameters by reference where it affects performance
Detected with cppcheck static analyser, which said: (performance) Function
parameter should be passed by reference. Reformat with clang-format as
needed.
Signed-off-by: Piotr Trojanek <piotr.trojanek@gmail.com>
Andres Noetzli [Tue, 8 Oct 2019 17:00:48 +0000 (10:00 -0700)]
[CVC Parser] Add support for regular expressions (#3346)
Andres Noetzli [Tue, 8 Oct 2019 16:05:50 +0000 (09:05 -0700)]
Disallow --proof and --incremental (#3332)
Ying Sheng [Tue, 8 Oct 2019 15:18:21 +0000 (08:18 -0700)]
Make ackermannization generally applicable rather than just BV (#3315)
The ackermannization process is currently already support general theories rather than specifically for BV. In this pull request, an option has been added to turn on ackermannization independently.
Aina Niemetz [Tue, 8 Oct 2019 06:27:44 +0000 (23:27 -0700)]
Build system: Add build type for incremental competition builds. (#3365)
Previously, competition builds for incremental tracks required to
manually pass in -DCVC4_SMTCOMP_APPLICATION_TRACK as compiler flag. This
introduces an additional build type for incremental competition builds
to simplify configuration for such builds.
Aina Niemetz [Tue, 8 Oct 2019 01:37:48 +0000 (18:37 -0700)]
New C++ API: Add Term::getId(). (#3360)
+ use explicit types in NodeValue
+ add unit test for Term::isParameterized()
Co-Authored-By: makaimann <makaim@stanford.edu>
Andres Noetzli [Tue, 8 Oct 2019 01:16:40 +0000 (18:16 -0700)]
[SMT2 Parser] Move code of `rewriterulesCommand` (#3334)
This commit moves the code in `rewriterulesCommand` in the SMT2 parser
to the `Smt2` class. Additionally, it creates a `boundVarList` rule to
reduce code duplication.
Andrew Reynolds [Sun, 6 Oct 2019 15:34:24 +0000 (10:34 -0500)]
Fix typo in regression (#3359)
Andrew Reynolds [Sun, 6 Oct 2019 07:33:25 +0000 (02:33 -0500)]
Fix str to int reduction (#3358)
This fixes a corner case of the str-to-int reduction for the case where the argument is the empty string.
This fixes #3357.
Andrew Reynolds [Fri, 4 Oct 2019 07:12:02 +0000 (02:12 -0500)]
Avoid duplicate lemmas in datatypes (#3310)
We previously were sending e.g. dt.size >= 0 lemmas when size terms are pre-registered, which can happen multiple times in a user context. This ensures we cache whether a lemma is sent in a user-context dependent way in the datatypes solver. This ensures we don't send the same lemma twice for dt.size >= 0 lemmas.
yoni206 [Thu, 3 Oct 2019 22:23:58 +0000 (15:23 -0700)]
Disable proofs for unsupported logics (#3327)
This commit makes CVC4 complain if the user asked for proofs for an unsupported logic (in this contest, ALL is considered unsupported).
Changes in the regression script are introduced as well, in order to only request proofs for regressions in supported logics.
Aina Niemetz [Thu, 3 Oct 2019 19:41:40 +0000 (12:41 -0700)]
Travis: Reenable building and running of examples. (#3351)
Andres Noetzli [Thu, 3 Oct 2019 18:24:15 +0000 (11:24 -0700)]
Add missing type definitions to CDHashMap iterator (#3330)
Our `CDMapBlack` test failed to compile with newer versions of libstdc++
because they require the `value_type` to be defined for the iterator
(accessed via `std::iterator_traits`). Due to the implementation of
`std::iterator_traits`, we also need to define `iterator_category`,
`difference_type`, `pointer`, and `reference`.
Andres Noetzli [Thu, 3 Oct 2019 17:19:12 +0000 (10:19 -0700)]
[SMT2 Parser] Move code of `sygusCommand` (#3335)
This commit moves the code in `sygusCommand` in the SMT2 parser to the
`Smt2` class. The original code was pushing and popping the current
scope inline. This commit adds a class `SynthFunFactory` that takes care
of that upon creation and destruction.
Aina Niemetz [Thu, 3 Oct 2019 04:39:14 +0000 (21:39 -0700)]
Fix compiler warning. (#3348)
Andres Noetzli [Wed, 2 Oct 2019 22:59:26 +0000 (15:59 -0700)]
[SMT-COMP] Remove --unconstrained-simp for incremental QF_LIA (#3333)
Fixes #3058. Commit
a7c4cd3ecacb1e484a076edde0274c282bb43ffb changed
CVC4's behavior to emit an error when `--unconstrained-simp` is used
with `--incremental`. Before, we were silently disabling it. For some
reason, we had that option enabled for the incremental QF_LIA track of
SMT-COMP, so CVC4 failed on those benchmarks. This commit changes the
corresponding competition script to not use the option.
Andrew Reynolds [Tue, 1 Oct 2019 06:56:57 +0000 (01:56 -0500)]
Trivial solve method for single invocation sygus (#3328)
This short circuits CEGQI when the conjecture is solvable by simple equality reasoning. It adds two examples where we previously would have fallen back on enumeration due to not having an instantiation technique for strings, despite the conjectures being trivially solvable.
Andres Noetzli [Mon, 30 Sep 2019 03:31:18 +0000 (20:31 -0700)]
Add rewrite for splitting equalities (#2957)
Andrew Reynolds [Mon, 30 Sep 2019 02:32:30 +0000 (21:32 -0500)]
Add help for sygus 2.0 (#3318)
Andrew Reynolds [Mon, 30 Sep 2019 01:52:26 +0000 (20:52 -0500)]
Avoid cases of empty sygus grammars (#3301)
Andrew Reynolds [Sun, 29 Sep 2019 22:54:13 +0000 (17:54 -0500)]
Fail single invocation techniques when utility inference fails. (#3322)
Andres Noetzli [Sun, 29 Sep 2019 03:18:22 +0000 (20:18 -0700)]
Introduce template classes for simple type rules (#2835)
This commit introduces two template classes `SimpleTypeRule` and
`SimpleTypeRuleVar` to help define simple type rules without writing
lots of redundant code. The main advantages of this approach are:
- Less code
- More consistent error reporting
- Easier to extend type checking with other functionality (e.g. getting
the type of a symbol)
Andrew Reynolds [Sat, 28 Sep 2019 02:01:54 +0000 (21:01 -0500)]
Support smt2 language "match" term (#3258)
Andrew Reynolds [Fri, 27 Sep 2019 20:01:42 +0000 (15:01 -0500)]
Fix case of disjunctive conclusion in strings (#3254)
Andres Noetzli [Fri, 27 Sep 2019 17:57:58 +0000 (10:57 -0700)]
Make substitution index context-independent (#2474)
When we do solving in incremental mode, we store substitutions at a
special index in our list of assertions. Previously, we used a
context-dependent variable for that. However, this is not needed since
the list of assertions just consists of the assertions currently being
processed, which are independent of the assertions seen so far. This
commit changes the index to be an ordinary integer and moves it to the
AssertionPipeline. Additionally, it abstracts access to the index in
preparation for splitting AssertionPipeline into three vectors (see
issue #2473).
Andrew Reynolds [Fri, 27 Sep 2019 02:53:45 +0000 (21:53 -0500)]
CVC print support for recoverable failure (#3323)
Andrew Reynolds [Wed, 25 Sep 2019 23:26:41 +0000 (18:26 -0500)]
Fix off by one error in strings flat form explanation (#3273)
Fixes #3272.
This was caused by not explaining the last equal component in a flat form inference. For example, if `x=y`, we may infer `z=""` from `u++x++z=u++y` since the 1st and 2nd components of these strings are equal. However, we would not add the explanation of `x=y` due to an off-by-one error.
Notice that this code is very rarely used (the code for F_EndpointEmp is not covered by our regressions). This is since length elaboration should catch conflicting cases like above, where `len(u++x++z)!=len(u++y)` if `x=y` and `z!=""` and thus `u++x++z != u++y`. #3272 happened to catch a rare case where it is applied. This is likely due to theory combination not propagating an equality prior to running a full effort call to strings check, which is unexpected but not impossible.
Andrew Reynolds [Wed, 25 Sep 2019 17:09:42 +0000 (12:09 -0500)]
Add isParameterized function to Expr (#3303)
Mathias Preiner [Wed, 25 Sep 2019 16:47:12 +0000 (09:47 -0700)]
Use separate CMake project for CVC4 examples. (#3196)
Mathias Preiner [Wed, 25 Sep 2019 16:29:33 +0000 (09:29 -0700)]
Add Windows cross-compiling instructions to INSTALL.md. (#3226)
Andrew Reynolds [Wed, 25 Sep 2019 15:05:45 +0000 (10:05 -0500)]
Fix printing of instantiation patterns (#3305)
Andrew Reynolds [Wed, 25 Sep 2019 01:56:21 +0000 (20:56 -0500)]
Return choice functions for approximate values in get-value (#3304)
Andrew Reynolds [Thu, 19 Sep 2019 14:44:04 +0000 (09:44 -0500)]
Support context-(in)dependent decision strategies. (#3281)
makaimann [Thu, 19 Sep 2019 02:34:22 +0000 (19:34 -0700)]
Add support for creating constant arrays to the new C++ API (#3296)
* Add support for constant arrays to new C++ API
* Fix macro usage in unit test
* Add not null check
* Add test for null term
* Formatting
Andrew Reynolds [Wed, 18 Sep 2019 20:03:12 +0000 (15:03 -0500)]
Decouple fmf-bound and finite-model-find (#3297)
Andres Noetzli [Wed, 18 Sep 2019 19:04:10 +0000 (12:04 -0700)]
Add run script for next SMT-COMP (#3298)
Andrew Reynolds [Wed, 18 Sep 2019 16:17:52 +0000 (11:17 -0500)]
Minor cleaning (#3295)
Andrew Reynolds [Tue, 17 Sep 2019 17:26:03 +0000 (12:26 -0500)]
Encapsulate relevant domain (#3293)
Andrew Reynolds [Tue, 17 Sep 2019 03:15:38 +0000 (22:15 -0500)]
Avoid computing cardinality when constructing models (#3268)
Andrew Reynolds [Tue, 17 Sep 2019 00:06:39 +0000 (19:06 -0500)]
Remove parameterized check (#3290)
Andrew Reynolds [Mon, 16 Sep 2019 23:02:28 +0000 (18:02 -0500)]
Fix spurious meta-info in regression (#3294)
Andrew Reynolds [Mon, 16 Sep 2019 22:18:05 +0000 (17:18 -0500)]
Remove equality inference option for quantifiers (#3282)
Andrew Reynolds [Mon, 16 Sep 2019 21:44:52 +0000 (16:44 -0500)]
Move specific attributes out of term util (#3279)
Andrew Reynolds [Mon, 16 Sep 2019 20:58:50 +0000 (15:58 -0500)]
Sygus type info class (#3187)
Andrew Reynolds [Mon, 16 Sep 2019 20:36:12 +0000 (15:36 -0500)]
Fix HO model construction for functions having Boolean arguments (#3158)
Andrew Reynolds [Mon, 16 Sep 2019 20:02:06 +0000 (15:02 -0500)]
Move virtual term substitution utilities to own file and document (#3278)
Andrew Reynolds [Mon, 16 Sep 2019 19:14:12 +0000 (14:14 -0500)]
Return RecoverableModalException when model is not available. (#3283)
Aina Niemetz [Mon, 16 Sep 2019 18:34:11 +0000 (11:34 -0700)]
Fix compiler warning in options.cpp. (#3284)
Haniel Barbosa [Mon, 16 Sep 2019 18:06:37 +0000 (15:06 -0300)]
Adding new scripts for CASC/TPTP (#3291)
Andrew Reynolds [Mon, 16 Sep 2019 17:03:58 +0000 (12:03 -0500)]
Initialize fields in sets inference manager (#3289)
Aina Niemetz [Mon, 16 Sep 2019 15:53:34 +0000 (08:53 -0700)]
parser: Improve error message for unrecognized input file format. (#3285)
Andrew Reynolds [Fri, 13 Sep 2019 21:31:12 +0000 (16:31 -0500)]
Disallow let in sygus grammars, check for free variables in sygus constructors (#3259)
Andrew Reynolds [Fri, 13 Sep 2019 20:14:59 +0000 (15:14 -0500)]
Move higher-order matching predicate (#3280)
Andrew Reynolds [Fri, 13 Sep 2019 17:56:21 +0000 (12:56 -0500)]
Split, refactor and document the theory of sets (#3085)
Andrew Reynolds [Thu, 12 Sep 2019 23:35:57 +0000 (18:35 -0500)]
Rename UF with cardinality extension (#3241)
Andrew Reynolds [Thu, 12 Sep 2019 22:31:22 +0000 (17:31 -0500)]
Update to standard implementation of contains term (#3270)
Andrew Reynolds [Thu, 12 Sep 2019 21:18:06 +0000 (16:18 -0500)]
Fix default grammar construction for arrays when no free variables are present (#3225)
Andrew Reynolds [Thu, 12 Sep 2019 20:37:00 +0000 (15:37 -0500)]
Encapsulate synth engine (#3271)
Andrew Reynolds [Thu, 12 Sep 2019 00:58:10 +0000 (19:58 -0500)]
Refactoring finite bounds in Quantifiers Engine (#3261)
Ken Matsui [Wed, 11 Sep 2019 23:48:18 +0000 (08:48 +0900)]
Fix not to output all warnings (#2778)
Fix syntax error when --language-bindings is java
Replace __attribute__((__unused__)) with CVC4_UNUSED macro
Signed-off-by: matken11235 <26405363+matken11235@users.noreply.github.com>
Andrew Reynolds [Wed, 11 Sep 2019 22:59:05 +0000 (17:59 -0500)]
Fix type assertion in getSynthSolutions (#3252)
Andrew Reynolds [Wed, 11 Sep 2019 22:08:07 +0000 (17:08 -0500)]
Infrastructure for instantiation rewriter (#3262)
Andrew Reynolds [Wed, 11 Sep 2019 21:29:21 +0000 (16:29 -0500)]
Fix constructor type printing (#3246)
Andrew Reynolds [Tue, 10 Sep 2019 22:06:30 +0000 (17:06 -0500)]
Fix issue related to enum in cegqi (#3267)
Andrew Reynolds [Mon, 9 Sep 2019 17:47:23 +0000 (12:47 -0500)]
Fix issue in cegqi related to enum (#3265)
Andrew Reynolds [Sat, 7 Sep 2019 01:52:16 +0000 (20:52 -0500)]
Remove portfolio (#3236)
Mathias Preiner [Fri, 6 Sep 2019 23:42:44 +0000 (16:42 -0700)]
Remove parsing/printing of meta-info command. (#3260)
Mathias Preiner [Fri, 6 Sep 2019 22:28:07 +0000 (15:28 -0700)]
Remove SMT1 parser. (#3228)
This commit removes the SMT1 parser infrastructure and adds the SMT2 translations of the SMT1 regression tests. For now this commit removes regression test regress3/pp-regfile.smt since the SMT2 translation has a file size of 887M (vs. 172K for the SMT1 version).
Fixes #2948 and fixes #1313.
Andrew Reynolds [Fri, 6 Sep 2019 16:46:21 +0000 (11:46 -0500)]
Make CEGQI term type to enum (#3256)