Andres Noetzli [Tue, 20 Jun 2017 19:50:40 +0000 (12:50 -0700)]
Fix SIGILL handler
As pointed out by @cpitclaudel in pull request #172, we are using the same
handler for SIGSEGV and SIGILL and ill_handler() is unused. This commit changes
the SIGILL handler to ill_handler().
ajreynol [Sun, 18 Jun 2017 14:09:16 +0000 (09:09 -0500)]
Fix assertion
ajreynol [Sun, 18 Jun 2017 13:54:36 +0000 (08:54 -0500)]
Minor change to ensureTheoryAtoms for bug 828.
Andres Nötzli [Sat, 17 Jun 2017 03:07:17 +0000 (20:07 -0700)]
Change language in competition script to smt2.6 (#171)
* Change language in competition script to smt2.6
The benchmark scrambler for the application track cuts out
the :smt-lib-version command, so this commit sets it
manually to 2.6 (all benchmarks in SMT-COMP use the 2.6
standard) instead of 2.0. I have not seen any failures due
to that but might as well be prudent.
* Change language in competition script to smt2.6
The benchmark scrambler (at least for the application
track) cuts out the :smt-lib-version command, so this
commit sets it manually to 2.6 (all benchmarks in SMT-COMP
use the 2.6 standard) instead of 2.0. I have not seen any
failures due to that but might as well be prudent.
Andres Nötzli [Sat, 17 Jun 2017 00:42:22 +0000 (17:42 -0700)]
Fix stream parsing
This commit fixes bug 811. Bug 811 was caused because tokens were referring to
a buffer that was reallocated and thus the pointers were not valid anymore.
Background:
The buffered input stream avoids copying the whole input stream before handing
it to ANTLR (in contrast to the non-buffered input stream that first copies
everything into a buffer). This enables interactivity (e.g. with kind2) and may
save memory.
CVC4 uses it when reading from stdin in competition mode for the application
track (the incremental benchmarks) and in non-competition mode. To set the
CVC4_SMTCOMP_APPLICATION_TRACK flag, the {C,CXX}FLAGS have to be modified at
configure time.
Solution:
This commit fixes the issue by changing how a stream gets buffered. Instead of
storing the stream into a single buffer, CVC4 now stores each line in a
separate buffer, making sure that they do not have to move, keeping tokens
valid. The commit adds the LineBuffer class for managing those buffers. It
further modifies CVC4's LA and consume functions to use line number and
position within a line to index into the line buffer. This allows us to use the
standard mark()/etc. functions because they automatically store and
restore that state. The solution also (arguably) simplifies the code.
Disadvantages:
Tokens split across lines would cause problems (seems reasonable to me). One
allocation per line.
Alternatives considered:
Pull request 162 by Tim was a first attempt to solve the problem. The issues
with this solution are: memory usage (old versions of the buffer do not get
deleted), tokens split across buffers would be problematic, and
mark()/rewind()/etc. would have to be overwritten for the approach to work.
I had a partially working fix that used indexes into the stream instead of
pointers to memory. The solution stored the content of the stream into a
segmented buffer (lines were not guaranteed to be consecutive in memory. This
approach was working for basic use cases but had the following issues: ugly
casting (the solution requires casting the index to a pointer and storing it in
the input stream's nextChar because that's where ANTLR is taking the location
information from when creating a token), more modifications (not only would
this solution require overwriting more functions of the input stream such as
substr, it also requires changes to the use of GETCHARINDEX() in the Smt2
parser and AntlrInput::tokenText() for example), more complex code.
Clark Barrett [Fri, 16 Jun 2017 19:46:47 +0000 (12:46 -0700)]
Merge pull request #170 from CVC4/fix_2_6_parser3
Parse 'is', 'match' differently for non-DT input
Andres Nötzli [Fri, 16 Jun 2017 18:16:04 +0000 (11:16 -0700)]
Fix segfault by making unit conflict CDMaybe
This commit fixes bug 819 by making d_unitConflictId context dependent and adds a test case.
Andres Noetzli [Fri, 16 Jun 2017 15:47:35 +0000 (08:47 -0700)]
Parse 'is', 'match' differently for non-DT input
In SMT 2.6, Datatypes are being introduced and they come
with testers (indexed identifier of the form (_ is c)) and
match expressions. This lead to failures in UFIDL
benchmarks in SMT-LIB because they declare the function
'is'. This commit changes the parser s.t. it does not
consider 'is' and 'match' special tokens unless the theory
of datatypes is enabled.
Clark Barrett [Fri, 16 Jun 2017 00:11:22 +0000 (17:11 -0700)]
Fix for bug 639.
Andres Noetzli [Thu, 15 Jun 2017 21:11:29 +0000 (14:11 -0700)]
Make comp script more robust
In certain cases, the trace executor inserts empty lines, which threw off
our competition script. This commit adds code to ignores empty lines.
ajreynol [Thu, 15 Jun 2017 17:47:43 +0000 (12:47 -0500)]
Fix for issue related to cbqi + E-matching.
ajreynol [Thu, 15 Jun 2017 16:34:15 +0000 (11:34 -0500)]
Add regression.
ajreynol [Thu, 15 Jun 2017 15:49:51 +0000 (10:49 -0500)]
Fix relevant domain for datatypes, fixes bug 824.
ajreynol [Thu, 15 Jun 2017 15:31:58 +0000 (10:31 -0500)]
Ensure uninterpreted constants do not escape datatypes, fixes bug 823. Fix cbqi for datatypes with uninterpreted sort subfields. Simplify fmc model construction.
Clark Barrett [Thu, 15 Jun 2017 02:56:56 +0000 (19:56 -0700)]
Merge pull request #167 from CVC4/fix_div
Remove UdivSelf rewrite, add UdivZero rewrite
Andres Noetzli [Wed, 14 Jun 2017 22:53:51 +0000 (15:53 -0700)]
Remove UdivSelf rewrite, add UdivZero rewrite
This fixes bug 820. The issue was that (a udiv a) got rewriten to 1, which is
not correct when a is 0 (the result is all ones in that case). Even with the
--bv-div-zero-const flag disabled, the UdivSelf rewrite was incorrect because
it was applied to BITVECTOR_UDIV_TOTAL, which is "defined to be the all-ones
bit pattern, if divisor is 0" according to src/theory/bv/kinds . The commit
adds instead an optimization that returns all ones if the divisor of a
BITVECTOR_UDIV_TOTAL is zero.
Clark Barrett [Sun, 4 Jun 2017 05:19:01 +0000 (22:19 -0700)]
Fix compile error
ajreynol [Sat, 3 Jun 2017 18:27:52 +0000 (13:27 -0500)]
Minor to smt comp script.
ajreynol [Fri, 2 Jun 2017 20:58:02 +0000 (15:58 -0500)]
Fix regression.
ajreynol [Fri, 2 Jun 2017 20:54:14 +0000 (15:54 -0500)]
Incorporate datatypes into smt comp script, add regression.
ajreynol [Thu, 1 Jun 2017 17:38:33 +0000 (12:38 -0500)]
Minor optimizations related to cbqi.
ajreynol [Wed, 31 May 2017 20:51:35 +0000 (15:51 -0500)]
Fix model construction for BV with cbqi. Minor change to defaults.
guykatzz [Wed, 31 May 2017 18:36:05 +0000 (11:36 -0700)]
A more informative error message when a theory is not yet supported by the proof infrastructure (e.g., quantifiers)
ajreynol [Wed, 31 May 2017 18:08:20 +0000 (13:08 -0500)]
Minor fix to last commit.
ajreynol [Wed, 31 May 2017 18:06:35 +0000 (13:06 -0500)]
Change to-int, div, int-div skolems from CDAttribute to stored in CDHashMap. Minor changes to smt comp script.
ajreynol [Wed, 31 May 2017 16:11:02 +0000 (11:11 -0500)]
Minor change to defaults, update smt comp script, minor changes to options in regressions.
guykatzz [Tue, 30 May 2017 16:25:54 +0000 (09:25 -0700)]
print only labeled assertions as part of the unsat core
added the option dump-unsat-cores-full for printing the entire core, as before
Clark Barrett [Sun, 28 May 2017 02:47:34 +0000 (19:47 -0700)]
Merge pull request #164 from CVC4/fix_comp
[Competition] Fix ABC, fix CryptoMiniSat req
Andres Noetzli [Sat, 27 May 2017 21:33:58 +0000 (14:33 -0700)]
[Competition] Fix ABC, fix CryptoMiniSat req
This commit fixes two issues that caused the competition configuration to fail on the cluster machines:
We used an ancient version of ABC that declared a function (factorial()
luckySimple.c) in a source file as inline but not static. This issue was fixed
in the following commit:
https://bitbucket.org/alanmi/abc/commits/
e0aa7af0d73538fb786c4dcc72745578f0068a38
The issue with non-static inline functions in source files is described in the
following Stackoverflow post:
https://stackoverflow.com/questions/
16740515/simple-c-inline-linker-error
This commit updates ABC to a much newer version (commit tagged as
abc20160717),
which fixes the issue. One of the modifications previously performed by
contrib/get-abc does not need to be necessary anymore.
CryptoMiniSat was always linked against m4ri, even though it was not getting
compiled with it (-DNOM4RI="ON" in contrib/get-cryptominisat4). This commit
removes the part of config/cryptominisat.m4 that explicitly sets the libraries
linked to and instead uses the result of CVC4_TRY_CRYPTOMINISAT_WITH (which
seems to work even though there is comment indicating otherwise). Further, it
adds -pthread to the libraries required by CryptoMiniSat because it is required
by the version of CryptoMiniSat that we use (a newer version supports disabling
that behavior, so it might be a good idea to update). Previously, this would
lead to linker errors.
Tested with the following configuration:
./configure competition --with-antlr-dir=`pwd`/antlr-3.4 ANTLR=`pwd`/antlr-3.4/bin/antlr3 --enable-static-binary --enable-gpl --with-cln --with-glpk --with-glpk-dir=`pwd`/glpk-cut-log --with-abc --with-abc-dir=`pwd`/abc/alanmi-abc-
53f39c11b58d --disable-thread-support --without-readline --disable-shared --with-cryptominisat --with-cryptominisat-dir=`pwd`/cryptominisat4
Tim King [Fri, 26 May 2017 21:51:27 +0000 (14:51 -0700)]
Checking that equalities belong to the arithmetic theory in the solve() routine.
Andres Noetzli [Wed, 24 May 2017 20:28:58 +0000 (13:28 -0700)]
Fix use-after-free with ResChains
This commit fixes an issue where the ResChain in `d_resolutionChains` gets
deleted here:
https://github.com/CVC4/CVC4/blob/master/src/proof/sat_proof_implementation.h#L729
The condition immediately after is false because the condition on line 727 is
true. Thus, `d_resolutionChains` now has a deleted entry for `id`.
When CVC4 afterwards gets the ResChain associated with `id` in
`checkResolution()`, it accesses the deleted entry:
https://github.com/CVC4/CVC4/blob/master/src/proof/sat_proof_implementation.h#L303
ajreynol [Thu, 25 May 2017 17:44:35 +0000 (12:44 -0500)]
Quote unsat core names if applicable, fixes bug 816.
ajreynol [Mon, 22 May 2017 16:00:10 +0000 (11:00 -0500)]
Initial draft of 2017 competition scripts.
ajreynol [Sat, 20 May 2017 12:52:00 +0000 (07:52 -0500)]
Fix bug 812.
Clark Barrett [Wed, 17 May 2017 23:16:04 +0000 (16:16 -0700)]
Merge pull request #155 from makaimann/conditional_coverage
Conditional coverage
Clark Barrett [Tue, 16 May 2017 22:23:41 +0000 (15:23 -0700)]
Merge pull request #161 from 4tXJ7f/fix_parser
Avoid tokenizing FP tokens in non-FP input
Clark Barrett [Tue, 16 May 2017 22:10:42 +0000 (15:10 -0700)]
Merge pull request #160 from 4tXJ7f/fix_win_build
Fix error in Windows build
Andres Noetzli [Tue, 16 May 2017 18:33:38 +0000 (11:33 -0700)]
Avoid tokenizing FP tokens in non-FP input
This commit addresses bug 807. CVC4 was parsing floating-point related tokens
such as NaN as floating-point tokens even for inputs that do not use the FP
theory, which lead to failing SMT-LIB benchmarks that declare functions named
NaN.
Andres Noetzli [Tue, 16 May 2017 18:08:30 +0000 (11:08 -0700)]
Fix error in Windows build
The Windows build was missing the `print_statistics()` function, this commit
moves the function out of the `#ifndef __WIN32__` guard.
Andrew Reynolds [Tue, 16 May 2017 00:12:08 +0000 (19:12 -0500)]
Merge pull request #156 from 4tXJ7f/fix_safe_print
Minor fix in safe_print function
Andres Noetzli [Mon, 15 May 2017 15:39:16 +0000 (08:39 -0700)]
Minor fix in safe_print function
This commit fixes two issues reported by Coverity:
- Fixes the check whether the buffer is full in safe_print_hex
- Removes dead code in safe_print for floating-point values
Additionally, it fixes an issue reported by Andy where the names of the
statistics were printed as "<unsupported>" due to calling the const char*
version instead of the std::string version of safe_print.
Finally, this fixes an issue where --segv-spin would not print the program name
because it was a const char*. The program name is now stored as a string.
NOTE: As a side effect, the last part also fixes Coverity issue
1362944, which
has been in CVC4 for a long time.
ajreynol [Mon, 15 May 2017 21:43:50 +0000 (16:43 -0500)]
Cleanup handling of division (possible fix for bugs 803, 804, 805).
Andrew Reynolds [Mon, 15 May 2017 18:10:56 +0000 (13:10 -0500)]
Merge pull request #159 from 4tXJ7f/fix_set_types
Fix type checks for relation operators
Andres Noetzli [Mon, 15 May 2017 17:09:45 +0000 (10:09 -0700)]
Fix type checks for relation operators
This commit fixes an assertion error when applying transpose or transitive
closure to a set instead of a relation. Instead it now prints a parse error.
Andrew Reynolds [Mon, 15 May 2017 16:56:43 +0000 (11:56 -0500)]
Merge pull request #158 from 4tXJ7f/fix_sets_rewriter
Fix minor bug in sets rewriter
Andres Noetzli [Mon, 15 May 2017 16:50:45 +0000 (09:50 -0700)]
Fix minor bug in sets rewriter
As reported by Coverity, one of the switches in the sets rewriter had a missing
break. This could lead to an assertion failure when rewriting the cardinality
of a transpose as in the test case included in this commit.
ajreynol [Mon, 15 May 2017 16:44:15 +0000 (11:44 -0500)]
Fix bug 806. Minor fixes to remove term formula pass.
Andrew Reynolds [Mon, 15 May 2017 15:56:22 +0000 (10:56 -0500)]
Merge pull request #157 from 4tXJ7f/fix_iterator
Fix condition in upwards closure check for sets
Andres Noetzli [Mon, 15 May 2017 15:50:21 +0000 (08:50 -0700)]
Fix condition in upwards closure check for sets
Coverity reported this mismatched iterator.
ajreynol [Mon, 15 May 2017 14:48:07 +0000 (09:48 -0500)]
Fix issue in ceg_instantiator related to types and theoryOf, fixes bug 802.
ajreynol [Mon, 15 May 2017 14:07:21 +0000 (09:07 -0500)]
Make conflict-based instantiation abort if a ground conflict is found in the master equality engine during term indexing, fixes bug 801.
Clark Barrett [Sun, 14 May 2017 03:02:24 +0000 (20:02 -0700)]
Merge pull request #154 from 4tXJ7f/fix_test
Fix out-of-bounds access in test
Andres Notzli [Sat, 13 May 2017 23:09:58 +0000 (16:09 -0700)]
Fix out-of-bounds access in test
makaimann [Fri, 12 May 2017 20:09:13 +0000 (13:09 -0700)]
Adding VPATH back in
makaimann [Fri, 12 May 2017 19:47:16 +0000 (12:47 -0700)]
Conditional coverage build
Andres Notzli [Fri, 31 Mar 2017 21:27:05 +0000 (14:27 -0700)]
Make signal handlers safer
As reported in bug 769, the signal handlers currently use unsafe
functions such as dynamic memory allocations and fprintf. This commit
fixes the issue by introducing functions for printing statistics in
signal handlers (functions with the `safe` prefix). It also avoids
copying statistics, which further avoids dynamic memory allocation. The
safe printing of statistics has some limitations (it does not support
SExprStats or printing CVC4::Result), which should not matter much in
practice. Printing statistics in a non-signal handler is not affected by
these changes as that uses a separate code path (the functions without
the `safe` prefix).
Additional changes:
- Remove ListStat as it is not used anywhere
- Add unit test for safe printing statistics
ajreynol [Wed, 10 May 2017 15:35:38 +0000 (10:35 -0500)]
Do not split on cardinality for string equivalence classes with non-constant lengths if disequalities already imply sufficient lower bound. Fixes bug 799.
ajreynol [Tue, 9 May 2017 22:16:06 +0000 (17:16 -0500)]
Change str.replace for empty string.
ajreynol [Fri, 5 May 2017 22:41:18 +0000 (17:41 -0500)]
Do not eliminate extended arithmetic symbols when finite model finding is on, add regression.
ajreynol [Fri, 5 May 2017 14:35:12 +0000 (09:35 -0500)]
Fix error message.
guykatzz [Thu, 4 May 2017 20:51:36 +0000 (13:51 -0700)]
skolemization manager may be called also when just unsatCores are on (related to bug 717)
guykatzz [Thu, 4 May 2017 18:24:41 +0000 (11:24 -0700)]
fixing bug 790: track dependencies when the unsatCores() option is on
Clark Barrett [Fri, 28 Apr 2017 22:00:01 +0000 (15:00 -0700)]
Partial fix for bug 717.
ajreynol [Fri, 28 Apr 2017 20:52:17 +0000 (15:52 -0500)]
Minor fixes
ajreynol [Fri, 28 Apr 2017 20:48:13 +0000 (15:48 -0500)]
Fix bug for real division.
ajreynol [Fri, 28 Apr 2017 16:46:53 +0000 (11:46 -0500)]
Do not eliminate non-standard arithmetic operators in recursive function definitions, add regression.
ajreynol [Mon, 24 Apr 2017 21:56:23 +0000 (16:56 -0500)]
Fixes and simplifications for fmf mbqi.
ajreynol [Mon, 24 Apr 2017 15:14:19 +0000 (10:14 -0500)]
Fix parsing selectors for nullary constructors in smtlib 2.6 format.
Andrew Reynolds [Mon, 24 Apr 2017 01:07:54 +0000 (20:07 -0500)]
Merge pull request #152 from timothy-king/delta-rational-value-cases-second-submission
Updating TheoryArithPrivate::getDeltaValue() to eagerly use the parti…
Tim King [Sun, 23 Apr 2017 20:05:10 +0000 (13:05 -0700)]
Changing spaces to tabs in Makefile.
Tim King [Thu, 13 Apr 2017 07:21:30 +0000 (00:21 -0700)]
Updating TheoryArithPrivate::getDeltaValue() to eagerly use the partial model value if exists.
Clark Barrett [Sat, 22 Apr 2017 04:45:23 +0000 (21:45 -0700)]
Merge pull request #151 from 4tXJ7f/fix_debug
Move assertion out of loop for better performance
Clark Barrett [Sat, 22 Apr 2017 04:39:53 +0000 (21:39 -0700)]
Disabled bug639.smt2 which still fails.
Clark Barrett [Fri, 21 Apr 2017 23:01:34 +0000 (16:01 -0700)]
Add test cases for bugs 639 and 681.
Clark Barrett [Fri, 21 Apr 2017 22:09:33 +0000 (15:09 -0700)]
Fix for bug 681 (now gives reasonable error message about using constant
arrays).
Andres Noetzli [Fri, 21 Apr 2017 21:39:56 +0000 (14:39 -0700)]
Move assertion out of loop for better performance
This is related to bug 508. The debug build was taking much longer than the
production build to compute the result. The issue was an assertion in a loop in
nonClausalSimplify(). By moving the assertion outside of the loop, the debug
build is now roughly an order of magnitude slower than the production build
(instead of two orders of magnitude), which seems to be roughly in line with
the difference for other benchmarks:
Debug version before change:
- Bug (minified version): 1065.6s
- regress3/friedman_n6_i4.smt: 6.9s
- regress2/uflia-error0.smt2: 6.3s
- regress2/fuzz_2.smt: 2.3s
Debug version after change:
- Bug (minified version): 131.4s
- regress3/friedman_n6_i4.smt: 6.7s
- regress2/uflia-error0.smt2: 6.2s
- regress2/fuzz_2.smt: 1.9s
Production version:
- Bug (minified version): 18.8s
- regress3/friedman_n6_i4.smt: 0.8s
- regress2/uflia-error0.smt2: 0.8s
- regress2/fuzz_2.smt: 0.2s
Clark Barrett [Fri, 21 Apr 2017 16:43:50 +0000 (09:43 -0700)]
Merge pull request #150 from 4tXJ7f/check_exceptions2
Add check for C++ exceptions to config script
ajreynol [Fri, 21 Apr 2017 14:33:26 +0000 (09:33 -0500)]
Fix new relations regressions to use sets-ext.
ajreynol [Fri, 21 Apr 2017 14:26:04 +0000 (09:26 -0500)]
Handle subtypes in sets. Bug fixes for tuples with subtypes.
Andres Notzli [Wed, 19 Apr 2017 15:46:59 +0000 (08:46 -0700)]
Add check for C++ exceptions to config script
Bug 687 was caused by the configuration not properly supporting C++
exceptions. To avoid such an incidence in the future, this commit adds a
simple check to `configure.ac` (when not cross compiling).
Andrew Reynolds [Thu, 20 Apr 2017 22:08:08 +0000 (17:08 -0500)]
Merge pull request #149 from PaulMeng/master
Support for relational operators identity and join image
ajreynol [Thu, 20 Apr 2017 19:19:51 +0000 (14:19 -0500)]
Minor fixes.
Paul Meng [Thu, 20 Apr 2017 19:04:24 +0000 (14:04 -0500)]
Support for relational operators identity and join image
ajreynol [Wed, 19 Apr 2017 21:29:01 +0000 (16:29 -0500)]
Fix mktheoryrewriter and mktheorytraits for nullaryoperator.
ajreynol [Wed, 19 Apr 2017 21:16:35 +0000 (16:16 -0500)]
Fixes for handling set universe: restrict upwards rule for universe to memberships into variable sets, do not variable eliminate sets during ppAssert.
Clark Barrett [Wed, 19 Apr 2017 03:30:42 +0000 (20:30 -0700)]
Merge pull request #147 from makaimann/coverage_fix
Coverage fix
Clark Barrett [Tue, 18 Apr 2017 23:57:40 +0000 (16:57 -0700)]
Fix for bug 639.
makaimann [Tue, 18 Apr 2017 15:49:17 +0000 (08:49 -0700)]
Coverage fix
Forcing some make variables to be absolute paths
lcov does not (officially) support relative paths
src/expr and src/options in particular were breaking it
ajreynol [Fri, 14 Apr 2017 22:25:18 +0000 (17:25 -0500)]
Actively split for upwards closusure intersection. Minor clean up, add regressions.
ajreynol [Fri, 14 Apr 2017 22:03:44 +0000 (17:03 -0500)]
Fix bug related to portfolio with nullary operators.
ajreynol [Fri, 14 Apr 2017 21:34:59 +0000 (16:34 -0500)]
Fix nullary operator printers, minor.
ajreynol [Fri, 14 Apr 2017 16:06:45 +0000 (11:06 -0500)]
Fix for fmf-fun when the option is set by user command.
Clark Barrett [Thu, 13 Apr 2017 18:57:19 +0000 (11:57 -0700)]
Fix for some compilers
ajreynol [Wed, 12 Apr 2017 21:47:12 +0000 (16:47 -0500)]
Add nullary operator metakind.
ajreynol [Tue, 11 Apr 2017 16:14:42 +0000 (11:14 -0500)]
Bug fix in conjecture generation for --quant-ind.
ajreynol [Fri, 7 Apr 2017 16:22:44 +0000 (11:22 -0500)]
Change option names for nl.
Clark Barrett [Thu, 6 Apr 2017 06:32:12 +0000 (23:32 -0700)]
Merge pull request #143 from FabianWolff/master
Fix several spelling errors
ajreynol [Wed, 5 Apr 2017 18:32:35 +0000 (13:32 -0500)]
Fix bug 698.
ajreynol [Wed, 5 Apr 2017 18:19:21 +0000 (13:19 -0500)]
Fixes for nlAlgSolveSubs.
Andrew Reynolds [Wed, 5 Apr 2017 18:15:31 +0000 (13:15 -0500)]
Merge pull request #145 from 4tXJ7f/fix_lfsc_args
[LFSC] Fix segfault