Morgan Deters [Sat, 8 Sep 2012 22:31:44 +0000 (22:31 +0000)]
Some minor changes after reviewing the portfolio "unified driver" commit.
(this commit was certified error- and warning-free by the test-and-commit script.)
Kshitij Bansal [Sat, 8 Sep 2012 14:25:25 +0000 (14:25 +0000)]
Single driver for both sequential and portfolio
A "command executer" layer between parsing commands and invoking them.
New implementation of portfolio driver splits only when check-sat or query
command is encountered, and then switches back to sequential till the next
one. As side effect, restores functionality of interactive mode and
push/pops.
Morgan Deters [Thu, 6 Sep 2012 22:15:56 +0000 (22:15 +0000)]
allow SmtEngine::setOption() for trace and debug tags
Morgan Deters [Thu, 6 Sep 2012 20:05:20 +0000 (20:05 +0000)]
fixes to the compatibility layer; this fixes the broken system test
Morgan Deters [Thu, 6 Sep 2012 02:38:39 +0000 (02:38 +0000)]
Remove SmtEngine::getStackLevel(), which exposed implementation details and was only used by the compatibility layer.
Make SmtEngine::internalPop() delay popping. This fixes a bug in model generation.
Morgan Deters [Thu, 6 Sep 2012 00:53:18 +0000 (00:53 +0000)]
add --incremental to --smtlib2 compliance mode (thanks Peter Collingbourne)
Morgan Deters [Wed, 5 Sep 2012 20:51:34 +0000 (20:51 +0000)]
add a THANKS file for listing external source code contributors
Morgan Deters [Tue, 4 Sep 2012 22:22:41 +0000 (22:22 +0000)]
Accepted some patches from the Multicore Programming Group at Imperial College London (via Peter Collingbourne):
cvc4-0001-Look-for-cxxtestgen-as-well-as-cxxtestgen.pl-and-cxx.patch
* better checking for cxxtest
cvc4-0002-Do-not-read-an-additional-command-after-failure.patch
* more correct failure behavior for interactive tools
cvc4-0003-Only-exit-when-encountering-a-CommandFailure.patch
* don't consider "unsupported" as a failure (accepted with modifications)
cvc4-0004-Produce-SMT-LIB-v2-conformant-output-for-get-info.patch
* better get-info responses (accepted with modifications)
These patches will help the group build Boogie support for CVC4.
(this commit was certified error- and warning-free by the test-and-commit script.)
Andrew Reynolds [Mon, 3 Sep 2012 17:52:07 +0000 (17:52 +0000)]
minor cleanup leftover from fmf-devel
Andrew Reynolds [Fri, 31 Aug 2012 16:48:20 +0000 (16:48 +0000)]
merge from fmf-devel branch. more updates to models: now with collectModelInfo with fullModel argument, most theory-specific implementation out of the model class, model printer relegated to printer classes. Also updates to finite mode finding, modifications to datatypes making them compatible with theory combination, support for theory-specific handling of user attributes, refactoring of uf models
Morgan Deters [Thu, 30 Aug 2012 21:13:44 +0000 (21:13 +0000)]
set the default expression-printing depth to "unlimited"
Morgan Deters [Wed, 29 Aug 2012 20:36:35 +0000 (20:36 +0000)]
* Numerous documentation fixes (fix doxygen warnings, add missing documentation, etc.).
* Remove sat_module.cpp, which was no longer used (was previously refactored?)
Morgan Deters [Wed, 29 Aug 2012 11:50:15 +0000 (11:50 +0000)]
To the build system:
* Fix "make distclean." This should fix the "local regressions fail"
that caused documentation, debian, and "distcheck" nightly build targets
to fail.
* "make clean" now removes some options stuff that previously required a
"make distclean."
* Cosmetic and portability adjustments.
Morgan Deters [Tue, 28 Aug 2012 18:38:19 +0000 (18:38 +0000)]
test summaries for automake 1.12 test harness
Morgan Deters [Tue, 28 Aug 2012 17:14:59 +0000 (17:14 +0000)]
fix a bug in CLN rational printing where the base was ignored (was causing the new CVC3-compatibility-API system test to fail)
Morgan Deters [Tue, 28 Aug 2012 15:26:46 +0000 (15:26 +0000)]
fix regression tests for automake 1.11 and automake 1.12---both versions should work now
Morgan Deters [Tue, 28 Aug 2012 01:10:16 +0000 (01:10 +0000)]
Improved compatibility layer, now supports quantifiers. Also incorporates
numerous bugfixes, and the cvc3 system test is enabled.
Morgan Deters [Tue, 28 Aug 2012 00:44:55 +0000 (00:44 +0000)]
fixes for Mac and automake 1.12 detection
Morgan Deters [Mon, 27 Aug 2012 20:37:17 +0000 (20:37 +0000)]
fix a destruction-order issue that was (1) causing valgrind to complain loudly about invalid reads and writes, and (2) apparently causing problems deleting the decision engine (which is now being properly deleted)
(this commit was certified error- and warning-free by the test-and-commit script.)
Morgan Deters [Mon, 27 Aug 2012 19:27:28 +0000 (19:27 +0000)]
* Reversing commit r4258 (which disabled failing regressions). Fixed the problem so they're no longer failing (in the quantifiers rewriter). Resolves bug #381.
* Added LAMBDA kind and type rule, and Node::isClosure().
(this commit was certified error- and warning-free by the test-and-commit script.)
Kshitij Bansal [Sun, 26 Aug 2012 19:53:14 +0000 (19:53 +0000)]
minor, lying around in a wd (related to investigating bug 374)
Kshitij Bansal [Sun, 26 Aug 2012 19:39:03 +0000 (19:39 +0000)]
disabling failing regressions
Clark Barrett [Sun, 26 Aug 2012 17:56:55 +0000 (17:56 +0000)]
Array constants finished and working. Unit tests for array constants.
Morgan Deters [Sat, 25 Aug 2012 21:27:17 +0000 (21:27 +0000)]
fix unit tests
Morgan Deters [Fri, 24 Aug 2012 23:23:34 +0000 (23:23 +0000)]
* disallow internal uses of mkVar() (you have to mkSkolem())
* add support for mkBoundVar() (BOUND_VAR_LISTs in quantifiers must be bound vars)
Morgan Deters [Fri, 24 Aug 2012 23:20:22 +0000 (23:20 +0000)]
disallow assertions to inactive theories.
this fixes at least one known bug where quantifiers could be asserted in quantifier-free logics, with incorrect results.
Morgan Deters [Fri, 24 Aug 2012 21:40:46 +0000 (21:40 +0000)]
fix TheoryEngine::collectModelInfo() to only call collectModelInfo() on active theories; resolves bug 380
Morgan Deters [Fri, 24 Aug 2012 01:03:20 +0000 (01:03 +0000)]
fix warning in arrays rewriter
Morgan Deters [Fri, 24 Aug 2012 00:29:52 +0000 (00:29 +0000)]
fix get-value output in a couple ways; this fixes bug #378
Morgan Deters [Thu, 23 Aug 2012 23:33:52 +0000 (23:33 +0000)]
attribute stuff for Clark's array constants
Clark Barrett [Thu, 23 Aug 2012 18:53:26 +0000 (18:53 +0000)]
Array constant coding done except for the attributes needed
Morgan Deters [Wed, 22 Aug 2012 22:31:59 +0000 (22:31 +0000)]
Cap finite cardinalities at 2^64, as discussed in the meeting last week.
Replace all cardinality comparison functions <=, ==, !=, >=, <, >, with a single compare() function that can return UNKNOWN in the case of unknown (or large-finite and thus not *precisely* known) cardinalities.
Morgan Deters [Wed, 22 Aug 2012 20:19:27 +0000 (20:19 +0000)]
fix some build dependencies in options-building; should fix a strange bug Andy saw when adding options & re-making, which was caused by sources not being properly recompiled when they should be
Clark Barrett [Wed, 22 Aug 2012 18:04:10 +0000 (18:04 +0000)]
More progress on array constants.
Here's a fun way to give yourself a week-long headache: try to figure out how
to write efficient code to normalize array constants.
It's mostly there now - just need to figure out how to use type enumerators and
update once the new cardinality stuff is in place.
Morgan Deters [Tue, 21 Aug 2012 22:13:12 +0000 (22:13 +0000)]
add some incremental in-tree regressions
François Bobot [Tue, 21 Aug 2012 20:53:49 +0000 (20:53 +0000)]
rewriterules: fix a correction bug with --simplification=batch
Rewriterules used ppAssert to obtain early the rewriterules in order
to use them in ppRewrite. But all the simplifications (ex. f x = b :
[f x/b]) are not done at that point. Since --simplification=batch
remove the equality (unlike =incremental), for
reachability_bbttf_eT_arrays.smt2 the answer was sat instead of
unsat (thx Andy).
Partial fix: don't take the rewriterules during ppAssert. That changes
nothing since early rewrite was already disabled. But the complete
fix (when early rewrite will be enabled again) will need to take the
rewriterules more than once.
Morgan Deters [Mon, 20 Aug 2012 22:01:14 +0000 (22:01 +0000)]
remove duplicate function TheoryEngine::getTheory(TheoryId). It was a duplicate of TheoryEngine::theoryOf(TheoryId)
Morgan Deters [Mon, 20 Aug 2012 21:12:00 +0000 (21:12 +0000)]
removing v1l20009.cvc, a datatypes benchmark where the TCC fails (CVC3 and CVC4 differ in the answer), so it doesn't really test anything
Morgan Deters [Mon, 20 Aug 2012 19:55:33 +0000 (19:55 +0000)]
minor cleanup
Morgan Deters [Mon, 20 Aug 2012 19:37:30 +0000 (19:37 +0000)]
fixes for java bindings
Clark Barrett [Sun, 19 Aug 2012 02:08:15 +0000 (02:08 +0000)]
1. Fix for inst_match.cpp to allow compilation on fedora
2. Initial implementation of computeIsConst for arrays - still needs
additional checks based on cardinality
3. Finally fixed pre-competition bug in array rewriter
4. Still to come: array rewrites for constants and STORE_ALL
Morgan Deters [Thu, 16 Aug 2012 22:41:07 +0000 (22:41 +0000)]
The SmtEngine now ensures that setLogicInternal() is called even if there is no explicit setLogic(). This is important for the CVC language, where the parser doesn't ensure that setLogic() is called, and for API uses. setLogicInternal() should be called in order to properly set up heuristics, even if the logic is just ALL_SUPPORTED.
This means that the CVC language can now take advantage of statistics.
Also added the ability to set the logic from CVC presentation language via (e.g.)
OPTION "logic" "QF_UFLIA";
Disabled the justification decision heuristic for ALL_SUPPORTED, as it interferes with incrementality. Kshitij may have a fix (I warned him about this commit).
Kshitij Bansal [Thu, 16 Aug 2012 21:40:41 +0000 (21:40 +0000)]
bug 374 (was found through fuzzing 2012-07-18)
"Possible soundness problem somewhere in the solver
(assertion failure in DE)"
Morgan Deters [Thu, 16 Aug 2012 21:30:41 +0000 (21:30 +0000)]
Replace propagateAsDecision() with Theory::getNextDecisionRequest():
* arrays now uses the new approach by using a CDQueue<>
* uf strong solver has had the feature disabled, pending a merge from Andy
* theory kinds files now have a getNextDecisionRequest property (if you want to take part in such decision requests you have to list that property)
* the staticLearning property has been renamed ppStaticLearn to match the function name
* theory kinds files are now checked again for correctly-declared properties (this had been disabled)
* minor documentation and other fixups
Morgan Deters [Thu, 16 Aug 2012 19:58:32 +0000 (19:58 +0000)]
ArrayStoreAll should (for now) only allow constant expressions, as it is itself a CONSTANT.
Morgan Deters [Thu, 16 Aug 2012 01:58:41 +0000 (01:58 +0000)]
fix exceptions and mkConst() in java binding
Morgan Deters [Thu, 16 Aug 2012 01:29:19 +0000 (01:29 +0000)]
some fixes for language bindings
Morgan Deters [Tue, 14 Aug 2012 20:08:29 +0000 (20:08 +0000)]
Fixes to integer wrapper classes:
* more uniform interface between the CLN and GMP wrappers
* support base inference (base == 0) on parsing strings with the CLN wrapper; this was a difference from the GMP wrapper (resolves bug #372)
Tim King [Tue, 14 Aug 2012 18:01:02 +0000 (18:01 +0000)]
Implements TheoryArith::collectModelInfo(). The current implementation is quite basic. This may need to be revisited.
Tim King [Tue, 14 Aug 2012 17:55:33 +0000 (17:55 +0000)]
Adds substituteDelta() to DeltaRational which given a value for delta returns the corresponding rational value.
Tim King [Tue, 14 Aug 2012 17:52:54 +0000 (17:52 +0000)]
Switched TheoryModel assertEqualityEngine to use const Equality Engine pointers.
Tim King [Tue, 14 Aug 2012 17:50:57 +0000 (17:50 +0000)]
Switched a number of EqClassIterator operations to const as well as the internal EqualityEngine pointer.
Morgan Deters [Mon, 13 Aug 2012 20:56:15 +0000 (20:56 +0000)]
fix integer parsing error.. thanks dejan for the report. this indicates that we have a problem with our Integer class though; it appears to behave differently for GMP and CLN
Morgan Deters [Mon, 13 Aug 2012 20:47:59 +0000 (20:47 +0000)]
Make a few functions in TheoryEngine (like theoryOf()) const.
Morgan Deters [Mon, 13 Aug 2012 19:46:27 +0000 (19:46 +0000)]
Minor cleanup. No performance difference expected.
Morgan Deters [Thu, 9 Aug 2012 13:48:37 +0000 (13:48 +0000)]
minor isConst()-related fixes to printing; also add some debugging stuff to see how isConst() operates: use -d isConst
Morgan Deters [Wed, 8 Aug 2012 22:20:39 +0000 (22:20 +0000)]
Fix --no-checking option.
Morgan Deters [Wed, 8 Aug 2012 05:13:53 +0000 (05:13 +0000)]
Public interface review items:
* don't document internal-only stuff (like DefaultCleanup for CDLists)
* NoSuchFunctionException -> TypeCheckingException
Dejan Jovanović [Tue, 7 Aug 2012 22:47:22 +0000 (22:47 +0000)]
small fixes
Morgan Deters [Tue, 7 Aug 2012 21:11:16 +0000 (21:11 +0000)]
some fixes to command and declaration tab-completion in interactive shell
Morgan Deters [Tue, 7 Aug 2012 18:38:49 +0000 (18:38 +0000)]
Some items from the CVC4 public interface review:
* rename DeclarationScope to SymbolTable
* rename all HashStrategy -> HashFunction (which we often have anyways)
* remove CDCircList (no one is currently using it)
Morgan Deters [Tue, 7 Aug 2012 14:53:06 +0000 (14:53 +0000)]
Fix SmtEngine::setInfo() handling for certain keys. This fixes the "unsupported" message we see in QF_SAT nightly regressions.
Morgan Deters [Mon, 6 Aug 2012 22:05:12 +0000 (22:05 +0000)]
Support setting :regular-output-channel and :diagnostic-output-channel.
Also some cleanup of option-related exceptions infrastructure.
Dejan Jovanović [Mon, 6 Aug 2012 21:11:12 +0000 (21:11 +0000)]
removing the sat solver inmterface from being public
Morgan Deters [Mon, 6 Aug 2012 19:36:46 +0000 (19:36 +0000)]
Cleanup of some command stuff, fixes broken Java build.
Dejan Jovanović [Mon, 6 Aug 2012 19:35:39 +0000 (19:35 +0000)]
fix constant printing for datatypes
Morgan Deters [Sun, 5 Aug 2012 04:41:04 +0000 (04:41 +0000)]
Disable failing datatypes regression, pending solution to bug #370.
Morgan Deters [Sat, 4 Aug 2012 18:45:13 +0000 (18:45 +0000)]
isConst() rule for datatypes
Morgan Deters [Fri, 3 Aug 2012 22:38:11 +0000 (22:38 +0000)]
the array-store "construle" for isConst
Morgan Deters [Fri, 3 Aug 2012 22:15:33 +0000 (22:15 +0000)]
Comparisons for LogicInfos, and associated tests
Morgan Deters [Fri, 3 Aug 2012 21:49:20 +0000 (21:49 +0000)]
ArrayStoreAll infrastructure
Morgan Deters [Fri, 3 Aug 2012 20:39:25 +0000 (20:39 +0000)]
fix uses of getMetaKind() from outside the expr package. (they now use isConst() and isVar() as appropriate)
also some base infrastructure for the new ::isConst().
Morgan Deters [Fri, 3 Aug 2012 18:49:59 +0000 (18:49 +0000)]
fix for proofs-enabled builds
Morgan Deters [Fri, 3 Aug 2012 00:09:57 +0000 (00:09 +0000)]
better parser makefile fix
Morgan Deters [Thu, 2 Aug 2012 23:55:08 +0000 (23:55 +0000)]
fixes to paths in parser makefiles; if you've noticed strange SMT2 parser behavior the last couple days, this should fix it
Morgan Deters [Thu, 2 Aug 2012 21:40:02 +0000 (21:40 +0000)]
array-store-all class
Morgan Deters [Wed, 1 Aug 2012 22:33:13 +0000 (22:33 +0000)]
add isFinished() to type enumerators (so we don't rely on exception-throwing after exhaustively enumerating finite types), also fix a standards-related FIXME in SmtEngine by clarifying the text of an error message
Morgan Deters [Wed, 1 Aug 2012 22:17:18 +0000 (22:17 +0000)]
a couple fixes to SmtEngine::setOption(). thanks Andy for the report!
Morgan Deters [Wed, 1 Aug 2012 21:05:36 +0000 (21:05 +0000)]
fixes to some *clean targets
Morgan Deters [Wed, 1 Aug 2012 19:25:10 +0000 (19:25 +0000)]
fix for the SmtEngine::beforeSearch() option predicate
Morgan Deters [Wed, 1 Aug 2012 02:25:39 +0000 (02:25 +0000)]
some fixes for Mac OS
Morgan Deters [Tue, 31 Jul 2012 21:44:22 +0000 (21:44 +0000)]
fixes for portfolio
Morgan Deters [Tue, 31 Jul 2012 21:24:31 +0000 (21:24 +0000)]
Moving some instantiation-related stuff from src/theory to src/theory/quantifiers and src/theory/rewriterules. This unclutters the src/theory directory somewhat.
The namespaces weren't changed, only the file locations.
Morgan Deters [Tue, 31 Jul 2012 20:50:24 +0000 (20:50 +0000)]
fix some file documentation
Morgan Deters [Tue, 31 Jul 2012 20:40:14 +0000 (20:40 +0000)]
Options merge. This commit:
1. changes the way options are declared (see http://church.cims.nyu.edu/wiki/Options)
2. moves module-specific options enumerations (SimplificationMode, DecisionMode, ArithUnateLemmaMode, etc.) to their own header files, also they are no longer inside the Options:: class namespace.
3. includes many SMT-LIBv2 compliance fixes, especially to (set-option..) and (get-option..)
The biggest syntactical changes (outside of adding new options) you'll notice are in accessing and setting options:
* to access an option, write (e.g.) options::unconstrainedSimp() instead of Options::current()->unconstrainedSimp.
* to determine if an option value was set by the user, check (e.g.) options::unconstrainedSimp.wasSetByUser().
* ensure that you have the option available (you have to #include the right module's options.h file, e.g. #include "theory/uf/options.h" for UF options)
*** this point is important. If you access an option and it tells you the option doesn't exist, you aren't #including the appropriate options.h header file ***
Note that if you want an option to be directly set (i.e., other than via command-line parsing or SmtEngine::setOption()), you need to mark the option :read-write in its options file (otherwise it's read-only), and you then write (e.g.) options::unconstrainedSimp.set(true).
Adding new options is incredibly simple for primitive types (int, unsigned, bool, string, double). For option settings that you need to turn into a member of an enumerated type, you write a custom "handler" for the option---this is no additional work than it was before, and there are many examples to copy from (a good one is stringToSimplificationMode() in src/smt/options_handlers.h).
Benefits of the new options system include:
1. changes to options declarations don't require a full-source rebuild (you only have to rebuild those sources that depend on the set of options that changed).
2. lots of sanity checks (that the same option isn't declared twice, that option values are in range for their type, that all options are documented properly, etc.)
3. consistency: Boolean-valued option --foo gets a --no-foo automatically, documentation is generated consistently, the option-parsing matches the documented option name, etc.
4. setting options programmatically via SmtEngine::setOption() is enabled, and behaves the same as command-line equivalents (including checking the value is in range, etc.)
5. the notion of options being "set by the user" is now primitive; you can use (e.g.) options::unconstrainedSimp.wasSetByUser() instead of having to use (and maintain) a separate Boolean option for the purpose
I've taken lots of care not to break anything. Hopefully, I've succeeded in that.
Morgan Deters [Fri, 27 Jul 2012 22:01:03 +0000 (22:01 +0000)]
Minor cleanup after today's commits:
* change some uses of "std::cout" to "Message()"
* change some files to use Unix newlines instead of DOS newlines
* fix compiler warning
Andrew Reynolds [Fri, 27 Jul 2012 21:07:42 +0000 (21:07 +0000)]
removing unecessary files
Andrew Reynolds [Fri, 27 Jul 2012 19:27:45 +0000 (19:27 +0000)]
merging fmf-devel branch, includes refactored datatype theory, updates to model.h/cpp to prepare for release, and major refactoring of quantifiers/finite model finding. Note that new datatype theory does not insist upon any interpretation for selectors applied to incorrect constructors and consequently some answers may differ with previous version
François Bobot [Fri, 27 Jul 2012 13:36:32 +0000 (13:36 +0000)]
Merge quantifiers2-trunk:
- new syntax for rewrite rules
- better rewrite rules theory
- remove the rewriting with rewrite rules during ppRewrite temporarily
- theory can define their own candidate generator
- define a general candidate generator (inefficient ask to every theory)
- split inst_match between the pattern matching used for quantifiers (inst_match.*) and
the one used for rewrite rules (rr_inst_match.*):
- the pattern matching is less exhaustive for quantifiers,
- the one for rewrite rules can use efficient-e-matching.
Morgan Deters [Thu, 26 Jul 2012 21:09:10 +0000 (21:09 +0000)]
Datatype enumerator work. This version is not a "fair" enumerator, but I got it in quickly for Andy.
A "fair" version forthcoming.
Morgan Deters [Wed, 18 Jul 2012 21:32:05 +0000 (21:32 +0000)]
more compliance fixes for SMT-LIBv2
Morgan Deters [Wed, 18 Jul 2012 21:21:56 +0000 (21:21 +0000)]
a few fixes for java system test
Morgan Deters [Wed, 18 Jul 2012 21:21:28 +0000 (21:21 +0000)]
small change to model-generation function, after discussion w/ Andy
Morgan Deters [Wed, 18 Jul 2012 17:37:41 +0000 (17:37 +0000)]
removing an obsolete assertion in model-generation framework, per Andy's request
Morgan Deters [Wed, 18 Jul 2012 17:34:12 +0000 (17:34 +0000)]
removing output operator for SExprTypes, which is never used (and SExprTypes is not public-facing)---this fixes the language bindings, which fixes the broken debian build overnight
Morgan Deters [Tue, 17 Jul 2012 22:07:59 +0000 (22:07 +0000)]
SMT-LIBv2 compliance updates:
* more correct support for get-info responses
* printer infrastructure extended to SExprs
* parser updates to correctly handle symbols and strings
(there were some minor differences from the spec)
Andrew Reynolds [Tue, 17 Jul 2012 21:19:58 +0000 (21:19 +0000)]
minor fix to prevent getValue from returning null
Morgan Deters [Tue, 17 Jul 2012 21:01:06 +0000 (21:01 +0000)]
fix for --produce-models with CVC4 presentation language
Morgan Deters [Tue, 17 Jul 2012 20:34:34 +0000 (20:34 +0000)]
fix an obvious oversight: "distinct" wasn't part of the SMT2 core theory---but this only gave trouble in strict parsing mode
Morgan Deters [Mon, 16 Jul 2012 19:00:31 +0000 (19:00 +0000)]
now passes "make distcheck", which does important checks for the release (e.g., "make dist" produces a distribution that passes "make dist" and "make check", "make uninstall" actually uninstalls, "make distclean" actually cleans, ...)