Liana Hadarean [Sat, 25 Feb 2012 18:23:10 +0000 (18:23 +0000)]
Refactored CnfStream to work with the bv theory Bitblaster:
* separated SatSolverInput interface class into two classes:
- TheoryProxy for the sat solver to communicate with the theories
- SatSolverInterface abstract class to communicate with the sat solver
* instead of using #ifdef typedef for SatClauses and SatLiterals, now there are CVC4 SatLiteral/SatClause types and mappings between them and the internal sat solver clause/literal representation
* added abstract classes for DPLLSatSolver and BVSatSolver different interfaces
Replaced TheoryBV with bitblasting implementation:
* all operators bitblasted
* only operator elimination rewrite rules so far
Dejan Jovanović [Fri, 24 Feb 2012 20:29:12 +0000 (20:29 +0000)]
Theory interface changes:
solve -> ppAsert
staticLearning -> ppStaticLearn
preprocess -> ppRewrite
SolveStatus -> PPAssertStatus (SOLVE_* -> PP_ASSERT_*)
via Eclipse refactoring magic.
Morgan Deters [Thu, 23 Feb 2012 23:08:03 +0000 (23:08 +0000)]
Added ability to set a "cvc4-specific logic" in standards-compliant
SMT-LIBv1 and SMT-LIBv2 input:
In SMT-LIBv1, you specify the "cvc4_logic" benchmark attribute; for instance:
(benchmark actually_a_sat_benchmark_but_looks_like_uf
:logic QF_UF
:cvc4_logic { QF_SAT }
[...]
In SMT-LIBv2, you use a set-info; for instance:
(set-logic QF_UF)
(set-info :cvc4-logic "QF_SAT")
[...]
Right now, the only thing this does is disable the symmetry breaker for
benchmarks like the above ones.
As part of this work, TheoryEngine::setLogic() was removed (the logic field there
wasn't actually used anywhere, its need disappeared when
Theory::setUninterpretedSortOwner() was provided).
Also, Theory::d_uninterpretedSortOwner got a name change to
Theory::s_uninterpretedSortOwner, to highlight that it is static to the Theory
class. This represents a breakage of our separation goals for CVC4, since it
means that two SmtEngines cannot be created separately to solve a QF_AX and
QF_UF problem. A bug report is pending.
Morgan Deters [Thu, 23 Feb 2012 22:02:45 +0000 (22:02 +0000)]
pcvc4 only built if --with-portfolio given to the configure script (Clark-requested change)
Tim King [Wed, 22 Feb 2012 22:32:45 +0000 (22:32 +0000)]
Fix for bug 305.
Morgan Deters [Wed, 22 Feb 2012 22:24:19 +0000 (22:24 +0000)]
fixes to configure and boost.m4 to make certain boost installations nonfatal errors; threading support should only be required to build pcvc4, not cvc4
Morgan Deters [Wed, 22 Feb 2012 20:36:15 +0000 (20:36 +0000)]
another static library unavailability issue
Morgan Deters [Wed, 22 Feb 2012 20:12:44 +0000 (20:12 +0000)]
make sure to clear out READLINE_LIBS if readline causes problems at configure time; fixes a bug reported by Clark for static-binary builds on machines where no static libreadline is available (like CIMS machines)
Morgan Deters [Wed, 22 Feb 2012 20:08:57 +0000 (20:08 +0000)]
Added OutputChannel::propagateAsDecision() functionality, allowing a theory
to request a decision on a literal. All these theory requests are kept in a
context-dependent queue and serviced in order when the SAT solver goes to make a
decision. Requests that don't have a SAT literal give an assert-fail. Requests
for literals that already have an assignment are silently ignored.
Since the queue is CD, requests can actually be serviced more than once (e.g., if
a request is made at DL 5, but not serviced until DL 10, and later, a conflict
backtracks to level 7, the request may be serviced again).
Performance impact: none to negligible for theories that don't use it
See http://church.cims.nyu.edu/regress-results/compare_jobs.php?job_id=3620&reference_id=3614&mode=&category=&p=0
Morgan Deters [Wed, 22 Feb 2012 15:30:51 +0000 (15:30 +0000)]
Fixes to documentation / fixes for MacOS
Kshitij Bansal [Wed, 22 Feb 2012 03:00:24 +0000 (03:00 +0000)]
minor change to order fn in sat solver's ElimLt
(better, (marginally) faster -- regressions 3605, 3606)
Morgan Deters [Tue, 21 Feb 2012 23:02:23 +0000 (23:02 +0000)]
add a "--with-portfolio" configure option that makes a missing boost-thread library an error; useful for builds requiring a "pcvc4" binary at the end
Morgan Deters [Tue, 21 Feb 2012 22:13:05 +0000 (22:13 +0000)]
fix src/util/hash.h to specialize GNU's hash template for <uint64_t> on platforms that need it; fixes Mac builds.
Morgan Deters [Tue, 21 Feb 2012 21:52:17 +0000 (21:52 +0000)]
language bindings fixes for yesterday's portfolio merge
Dejan Jovanović [Tue, 21 Feb 2012 19:43:46 +0000 (19:43 +0000)]
Fix for bug303. The problem was with function applications that get normalized when added to the term database. For example, if x=y exists, and the term f(x) is added, f(y) was stored. So, when getExplanation(f(x), f(y)) was called, trouble ensued. I now keep the original version so that explanations can be properly produced.
Also added theory::assertions debug flag that will printout assertions of each theory for ease and uniformity of debugging in the future.
Morgan Deters [Tue, 21 Feb 2012 19:24:51 +0000 (19:24 +0000)]
don't require libboost_thread (its presence is detected at configure-time), and other build/documentation fixes from yesterday's portfolio merge; resolves bug 302
Morgan Deters [Mon, 20 Feb 2012 20:04:31 +0000 (20:04 +0000)]
fix sharing issue for portfolio (full lit-to-node map wasn't being kept in my previous checkin)
Morgan Deters [Mon, 20 Feb 2012 18:23:15 +0000 (18:23 +0000)]
fix "make dist"
Morgan Deters [Mon, 20 Feb 2012 18:22:27 +0000 (18:22 +0000)]
zlib not required; remove configure's dependency on it
Morgan Deters [Mon, 20 Feb 2012 17:59:33 +0000 (17:59 +0000)]
portfolio merge
Morgan Deters [Mon, 20 Feb 2012 16:28:44 +0000 (16:28 +0000)]
readline links in -ltermcap -ltinfo too (fixes breakage in static-binary builds)
Morgan Deters [Mon, 20 Feb 2012 14:48:22 +0000 (14:48 +0000)]
Added Theory::postsolve() infrastructure as Clark requested.
(Though currently unused.)
For theories that request presolve and postsolve (in their kinds file),
they will get a presolve() notification before the first check(). After
the final check during the current search, they get a postsolve().
presolve() and postsolve() notifications always come in pairs, bracketing
all check()/propagate()/getValue() calls related to a single query. In
the case of incremental benchmarks, theories may get additional
presolve()/postsolve() pairs, but again, they always come in pairs.
Expected performance impact: none (for theories that don't use it)
http://church.cims.nyu.edu/regress-results/compare_jobs.php?job_id=3598&reference_id=3581&p=5
Morgan Deters [Mon, 20 Feb 2012 13:44:50 +0000 (13:44 +0000)]
By default, ONLY enable symmetry breaker ONLY for QF_UF (both SMT-LIBv1
and SMT-LIBv2).
There are --enable-symmetry-breaker and --disable-symmetry-breaker
options that are always respected regardless of this default.
Expected performance impact: positive
New default (UF only) compared to old default (always on):
http://church.cims.nyu.edu/regress-results/compare_jobs.php?job_id=3594&reference_id=3595&p=5
Symmetry breaker remains a big win on UF:
http://church.cims.nyu.edu/regress-results/compare_jobs.php?job_id=3594&reference_id=3596&p=5
The last link to results looks at first that the symmetry breaker should
always be turned off, since its use loses more regressions than it gains.
*However*, the lost ones are only our "QF_SAT" benchmarks. For these, we
should indeed turn off the symmetry breaker, but that's impossible for
now because we tag them internally with the logic "QF_UF."
Morgan Deters [Thu, 16 Feb 2012 13:30:28 +0000 (13:30 +0000)]
clarify wording in README, thanks for finding this Francois!
Tim King [Thu, 16 Feb 2012 00:54:12 +0000 (00:54 +0000)]
Last commit accidentally lacked r2778 and r2779 from integer2. I have manually brought these changes over. Changed the tests used by test/regress/regress0/arith/integers/Makefile.am to be 15 of the more interesting tests. Did a bit of cleanup on TheoryArith to eliminate a warning and remove dead code.
Tim King [Wed, 15 Feb 2012 21:52:16 +0000 (21:52 +0000)]
This commit merges into trunk the branch branches/arithmetic/integers2 from r2650 to r2779.
- This excludes revision 2777. This revision had some strange performance implications and was delaying the merge.
- This includes the new DioSolver. The DioSolver can discover conflicts, produce substitutions, and produce cuts.
- The DioSolver can be disabled at command line using --disable-dio-solver.
- This includes a number of changes to the arithmetic normal form.
- The Integer class features a number of new number theoretic function.
- This commit includes a few rather loud warning. I will do my best to take care of them today.
François Bobot [Mon, 13 Feb 2012 23:12:15 +0000 (23:12 +0000)]
precision in theoryskel
Morgan Deters [Mon, 13 Feb 2012 01:06:01 +0000 (01:06 +0000)]
proper handling of improper get-value
Morgan Deters [Sun, 12 Feb 2012 22:01:47 +0000 (22:01 +0000)]
copyright year updated to 2012
Morgan Deters [Sun, 12 Feb 2012 20:59:13 +0000 (20:59 +0000)]
separate new-theory components into a "theoryskel" directory so that new files can be added to it without modifying the script.
Morgan Deters [Sat, 11 Feb 2012 21:57:14 +0000 (21:57 +0000)]
ensure using bash for new-theory script
Morgan Deters [Fri, 10 Feb 2012 23:43:06 +0000 (23:43 +0000)]
attempt at a fix for the local regression failure (CLN linking issues on oneiric
Morgan Deters [Fri, 10 Feb 2012 23:36:07 +0000 (23:36 +0000)]
script to ease creating a new theory from scratch (will go along with new reference documentation)
Morgan Deters [Fri, 10 Feb 2012 20:27:10 +0000 (20:27 +0000)]
correct comment typo found during today's architectural meeting
Dejan Jovanović [Thu, 9 Feb 2012 21:25:00 +0000 (21:25 +0000)]
fixing antoher small bug in backtracking
Dejan Jovanović [Wed, 8 Feb 2012 16:04:24 +0000 (16:04 +0000)]
fixing a bug in uf_engine application lookup backtracking
this should also fix bug299
Tim King [Wed, 8 Feb 2012 00:31:00 +0000 (00:31 +0000)]
Number of changes to cvc_printer.cpp. Specialized the printing for BVPLUS, BVSUB, and BVMULT. Fixed a bug in printing on PREFIX operators. Added parenthsis for POSTFIX operators. Passing the ouroborous test now.
Morgan Deters [Tue, 7 Feb 2012 22:13:12 +0000 (22:13 +0000)]
re-adding comment about available languages
Dejan Jovanović [Tue, 7 Feb 2012 16:20:52 +0000 (16:20 +0000)]
removing the 100 integer benchmarks from regress0, too many
Dejan Jovanović [Tue, 7 Feb 2012 16:14:17 +0000 (16:14 +0000)]
fixing some missing stuff
Tim King [Mon, 6 Feb 2012 18:32:52 +0000 (18:32 +0000)]
Fixing a bug in the integer unit tests when configured for GMP with assertions off.
Dejan Jovanović [Sun, 5 Feb 2012 21:44:02 +0000 (21:44 +0000)]
changes to the cvc4 language printer, so that it actually prints the cvc4 language
all theory writers should take a look a what's being printed, to ensure all cases are covered
Andrew Reynolds [Sat, 4 Feb 2012 22:19:12 +0000 (22:19 +0000)]
support for isWellFounded/mkGroundTerm on uninterpretted sorts. cvc4 now assumes uninterpretted sorts are well-founded, allowing datatypes to work with uninterpretted sort subdata
Dejan Jovanović [Fri, 3 Feb 2012 23:17:30 +0000 (23:17 +0000)]
updating configure to use python-config for building python bindings
Morgan Deters [Fri, 27 Jan 2012 20:00:54 +0000 (20:00 +0000)]
effecting the same change in the compat Java binding as was done to CVC3 yesterday (ValidityChecker::value() and ValidityChecker::getValue())
Tim King [Wed, 25 Jan 2012 16:36:19 +0000 (16:36 +0000)]
Adding regress1 test ooo.rf6.smt2.
Tim King [Mon, 23 Jan 2012 21:13:08 +0000 (21:13 +0000)]
Partial fix to TheoryEngine::getExplanation so that SharedAssertions request explanations from the theory that can explain them. This partially fixes bug 295.
Dejan Jovanović [Mon, 23 Jan 2012 04:19:38 +0000 (04:19 +0000)]
fix for bug295
Andrew Reynolds [Tue, 17 Jan 2012 18:15:03 +0000 (18:15 +0000)]
updates to smt2 parser to support datatypes, minor updates to datatypes theory/rewriter to support datatypes with non-datatype subdata
Tim King [Thu, 15 Dec 2011 22:23:25 +0000 (22:23 +0000)]
Partial fix to bug 295.
Tim King [Thu, 15 Dec 2011 21:02:33 +0000 (21:02 +0000)]
Fix to the previous commit.
Tim King [Thu, 15 Dec 2011 20:39:20 +0000 (20:39 +0000)]
Partial fix in arithmetic for propagating shared terms. This partially resolves bug 289. Adds failing tests to regress1.
Andrew Reynolds [Wed, 14 Dec 2011 23:40:44 +0000 (23:40 +0000)]
added minor documentation for parametric datatypes, for bug 283
Morgan Deters [Wed, 14 Dec 2011 22:44:58 +0000 (22:44 +0000)]
minor fixes to printing and parsing of CVC-language defined functions and lambdas; resolves bug 294
Dejan Jovanović [Wed, 14 Dec 2011 09:31:21 +0000 (09:31 +0000)]
some more bug fixes (TNode -> Node, normalize literals in explanations)
Dejan Jovanović [Mon, 12 Dec 2011 09:47:37 +0000 (09:47 +0000)]
* merging some uf stuff from incremental_work branch that somehow nobody merged-in
* since two theories can propagate the same literal minisat now explicitly checks that a propagated literal has not been asserted yet
Dejan Jovanović [Sat, 10 Dec 2011 08:34:41 +0000 (08:34 +0000)]
adding additional checks for theories propagating literals that already have a value
Dejan Jovanović [Sat, 10 Dec 2011 07:02:21 +0000 (07:02 +0000)]
a bit more changes, when propagting equalities/dis-equalities don't assert them to theories that rewrite them to true. for example, 1 != 0 rewrites to true, so it shouldn't get propagated to arithmetic.
Dejan Jovanović [Sat, 10 Dec 2011 06:05:13 +0000 (06:05 +0000)]
attempt to fix bug 293: if a split on a trivial shared pair is requested from a theory, such as 1 = 0, it is reasserted to the theory.
Morgan Deters [Thu, 8 Dec 2011 19:23:45 +0000 (19:23 +0000)]
Disable a BV rewriter statistic (after checking with Liana) that was static,
and thus caused big problems with programs that create two SmtEngines in
one process.
If we need state like this in the rewriters, we'll need to make them
nonstatic.
Morgan Deters [Tue, 6 Dec 2011 02:01:06 +0000 (02:01 +0000)]
LemmaStatus changes, as agreed to during 12/2 meeting.
Morgan Deters [Tue, 6 Dec 2011 00:38:33 +0000 (00:38 +0000)]
oops, removing some integer operations that leaked in (they aren't part of trunk yet)
Morgan Deters [Tue, 6 Dec 2011 00:34:32 +0000 (00:34 +0000)]
fix errors in smt-lib2 output; needed for debugging
Morgan Deters [Mon, 5 Dec 2011 21:11:19 +0000 (21:11 +0000)]
change short-circuiting behavior of Command execution in the main driver; allows a (limited) form of error recovery, matching what we had previously
Morgan Deters [Fri, 2 Dec 2011 00:35:32 +0000 (00:35 +0000)]
Error detection is different now---with new Command infrastructure, exceptions are not thrown outside the library. Reflect this in the exit code of the driver. Fixes a bug found by Tim among the nightly regressions.
Also improved error reporting if antlr is unavailable and the parsers need to be generated.
Morgan Deters [Wed, 30 Nov 2011 22:43:12 +0000 (22:43 +0000)]
disable bug288.smt so that "make check" goes through---pending integers merge, see bug #288
Morgan Deters [Wed, 30 Nov 2011 22:41:02 +0000 (22:41 +0000)]
fix linking errors on oneiric
Tim King [Wed, 30 Nov 2011 20:03:00 +0000 (20:03 +0000)]
Simplified bug288.smt to reflect the problem in integers better.
Tim King [Wed, 30 Nov 2011 18:42:05 +0000 (18:42 +0000)]
Added a failing regression test corresponding to bug 289.
Tim King [Wed, 30 Nov 2011 18:35:07 +0000 (18:35 +0000)]
Adding a failing UFLIA benchmark corresponding to bug #288.
Tim King [Tue, 29 Nov 2011 21:11:45 +0000 (21:11 +0000)]
Merging the branch branches/arithmetic/shared-terms into trunk. Arithmetic now supports propagating equalities when a slack variable corresponding to a difference of shared terms must be 0. Similarly disequalities are propagated when these variables cannot be zero.
Morgan Deters [Sat, 26 Nov 2011 23:54:48 +0000 (23:54 +0000)]
Fix Java JNI installation path
Morgan Deters [Tue, 22 Nov 2011 16:26:16 +0000 (16:26 +0000)]
fix module name for CVC4 jar file; part of the fix for the Debian package build failure last night
Morgan Deters [Tue, 22 Nov 2011 05:17:55 +0000 (05:17 +0000)]
More language bindings work:
* with a patched SWIG, the ocaml bindings build correctly.
** I will provide my patch to the SWIG dev team.
* fixed some class interfaces to play more nicely with SWIG.
* php, perl, tcl now work; examples added.
* improved binding module building and installation.
Also:
Stop #defining NULL ((void*) 0). This has been in cvc4_public.h for
a long, long time, I forget why I added it in the first place, and
it's a very, very bad idea. In C++, certain things are permitted
for NULL that aren't permitted for ((void*) 0), like for instance
implicit conversion to any pointer type. We didn't see an issue
here (until now, when interfacing with SWIG), because GCC is usually
pretty smart at working around such a broken #definition of NULL.
But that's fragile.
New exception-free Command architecture. Previously, some command
invocations were wrapped in a try {} catch() {} and printed out an
error. This is much more consistent now. Each Command invocation
results in a CommandStatus. The status can be "unsupported",
"error", or "success" (these are each derived classes, though, not
strings, so that they can be easily printed in a language-specific
way... e.g., in SMT-LIBv2, they are printed in a manner consistent
with the spec, and "success" is not printed if the print-success
option is off.) All Command functionality are now no-throw
functions, which @cconway reports is a Good Thing for Google
(where all C++ exceptions are suspect), and also I think is much
cleaner than the old way in this instance.
Added an --smtlib2 option that enables an "SMT-LIBv2 compliance
mode"---really it just sets a few other options like strictParsing,
inputLanguage, and printSuccess. In the future we might put other
options into a compliance mode, or we might choose to make it the
default.
Morgan Deters [Wed, 16 Nov 2011 14:19:16 +0000 (14:19 +0000)]
Fix "make dist". Fixes to python and ruby bindings; ruby example written. They should both work out of the box, now, with swig 2.0.4 at least. "make install" likely still needs to be adjusted to install them sensibly.
Morgan Deters [Wed, 16 Nov 2011 03:47:25 +0000 (03:47 +0000)]
Addressed many of the concerns raised in the public interface review of CVC4 Datatypes (bug #283) by Chris Conway. Thanks, Chris!
Morgan Deters [Wed, 16 Nov 2011 01:06:57 +0000 (01:06 +0000)]
fix to build system for java bindings
Morgan Deters [Wed, 16 Nov 2011 00:48:42 +0000 (00:48 +0000)]
* Applying Andy's fix for datatypes bug #286; thanks for the quick work, Andy!
* Also some better configure script wording
Morgan Deters [Tue, 15 Nov 2011 22:34:18 +0000 (22:34 +0000)]
Bindings work (ocaml bindings are now sort of working); also minor cleanup
Morgan Deters [Tue, 15 Nov 2011 01:32:27 +0000 (01:32 +0000)]
additional minor changes to get python binding on better footing
Morgan Deters [Tue, 15 Nov 2011 01:03:34 +0000 (01:03 +0000)]
fixes for python language binding, added python example
Morgan Deters [Mon, 14 Nov 2011 20:12:32 +0000 (20:12 +0000)]
public tests need to be linked against gmp/cln explicitly---looks like a subtle linker change in Ubuntu 11.10 oneiric :-(
Morgan Deters [Sun, 6 Nov 2011 02:09:06 +0000 (02:09 +0000)]
datatype stuff in compatibility interface implemented
Morgan Deters [Sat, 5 Nov 2011 20:16:06 +0000 (20:16 +0000)]
Context::ScopedPush implemented (in support of theory speculation, like upcoming internal branch-&-bound for integers)
Morgan Deters [Fri, 4 Nov 2011 16:52:06 +0000 (16:52 +0000)]
STRING_TYPE and CONST_STRING and associate type infrastructure implemented.
Morgan Deters [Wed, 2 Nov 2011 13:55:48 +0000 (13:55 +0000)]
Only print a shortlist of most-commonly-used options on option processing errors; reduces clutter, increases usability
Morgan Deters [Wed, 2 Nov 2011 13:05:11 +0000 (13:05 +0000)]
give an option error if the user specifies --proof in a non-proof-enabled build
Morgan Deters [Wed, 2 Nov 2011 01:48:41 +0000 (01:48 +0000)]
fully implement the always-check-again-after-the-output-channel-is-used fix for bug #275. will finally close #275.
Morgan Deters [Wed, 2 Nov 2011 00:40:40 +0000 (00:40 +0000)]
Sometimes antlr decides to generate lexers and parsers in a different directory than specified by "-o dir" ?! Fix that by specifying "-fo dir".
Morgan Deters [Wed, 2 Nov 2011 00:01:48 +0000 (00:01 +0000)]
better Integer asserts when there's overflow on conversion to unsigned long / long
Morgan Deters [Tue, 1 Nov 2011 17:08:55 +0000 (17:08 +0000)]
Improvements to header installation on user machines. Internally, we can
still write, for example:
#include "expr/node.h"
but public CVC4 headers, upon installation to /usr/include/cvc4 (or wherever),
have such #includes rewritten automatically to:
#include <cvc4/expr/node.h>
Morgan Deters [Mon, 31 Oct 2011 23:56:07 +0000 (23:56 +0000)]
fixes to assertions in GMP to match CLN behavior
Tim King [Mon, 31 Oct 2011 21:43:11 +0000 (21:43 +0000)]
Added assertions to the CLN implementation of Integer for getLong() and getUnsignedLong().
Morgan Deters [Mon, 31 Oct 2011 21:25:07 +0000 (21:25 +0000)]
another make distclean fix
Morgan Deters [Mon, 31 Oct 2011 21:01:13 +0000 (21:01 +0000)]
fixes to "make distclean" and "make maintainerclean"
Morgan Deters [Mon, 31 Oct 2011 19:32:55 +0000 (19:32 +0000)]
fix to "make install"
Morgan Deters [Sat, 29 Oct 2011 19:09:06 +0000 (19:09 +0000)]
fix some doxygen warnings
Morgan Deters [Sat, 29 Oct 2011 18:22:38 +0000 (18:22 +0000)]
support for proof regressions in other parts of the test tree
Morgan Deters [Sat, 29 Oct 2011 08:11:12 +0000 (08:11 +0000)]
fix unit tests
Morgan Deters [Sat, 29 Oct 2011 05:21:49 +0000 (05:21 +0000)]
Support for SMT-LIBv2 (get-proof), CVC-style DUMP_PROOF command, SmtEngine::getProof(), a few other things..