summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2012-07-31Options merge. This commit:Morgan Deters
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.
2012-07-27Minor cleanup after today's commits:Morgan Deters
* change some uses of "std::cout" to "Message()" * change some files to use Unix newlines instead of DOS newlines * fix compiler warning
2012-07-27removing unecessary filesAndrew Reynolds
2012-07-27merging fmf-devel branch, includes refactored datatype theory, updates to ↵Andrew Reynolds
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
2012-07-27Merge quantifiers2-trunk:François Bobot
- 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.
2012-07-26Datatype enumerator work. This version is not a "fair" enumerator, but I ↵Morgan Deters
got it in quickly for Andy. A "fair" version forthcoming.
2012-07-18more compliance fixes for SMT-LIBv2Morgan Deters
2012-07-18a few fixes for java system testMorgan Deters
2012-07-18small change to model-generation function, after discussion w/ AndyMorgan Deters
2012-07-18removing an obsolete assertion in model-generation framework, per Andy's requestMorgan Deters
2012-07-18removing output operator for SExprTypes, which is never used (and SExprTypes ↵Morgan Deters
is not public-facing)---this fixes the language bindings, which fixes the broken debian build overnight
2012-07-17SMT-LIBv2 compliance updates:Morgan Deters
* 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)
2012-07-17minor fix to prevent getValue from returning nullAndrew Reynolds
2012-07-17fix for --produce-models with CVC4 presentation languageMorgan Deters
2012-07-17fix an obvious oversight: "distinct" wasn't part of the SMT2 core ↵Morgan Deters
theory---but this only gave trouble in strict parsing mode
2012-07-16now passes "make distcheck", which does important checks for the release ↵Morgan Deters
(e.g., "make dist" produces a distribution that passes "make dist" and "make check", "make uninstall" actually uninstalls, "make distclean" actually cleans, ...)
2012-07-16fix compiler warning in unit testMorgan Deters
2012-07-16stronger two_smt_engines testMorgan Deters
2012-07-16fix inadvertent change to system testMorgan Deters
2012-07-16Support for having two SmtEngines with the same ExprManager.Morgan Deters
Basically, this involves creating a separate StatisticsRegistry for the ExprManager and for the SmtEngine. Otherwise, theories register the same statistic twice. This is a larger problem, though, for creating multiple instances of theories, and that is unaddressed. Still, separating out the expr statistics into a separate registry is probably a good idea, since the expr package is somewhat separate anyway (and in the short term it allows two SmtEngines to co-exist).
2012-07-16found a bug in the initialization order of UF, EqualityEngine, and the UF ↵Morgan Deters
strong solver; fixed
2012-07-16reverse the order of link arguments to -lcln -lgmp, fixes linking errors for ↵Morgan Deters
static-binary CLN-enabled builds on greed
2012-07-14Type enumerator infrastructure and uninterpreted constant support. No ↵Morgan Deters
support yet for enumerating arrays, or for enumerating non-trivial datatypes.
2012-07-14Applying Dejan's patch for bug #369, which resolves it by adding a new ↵Morgan Deters
(let..) form for each introduced binding.
2012-07-14fixing make distMorgan Deters
2012-07-14fix a warning in unit test compilationMorgan Deters
2012-07-14svn ignoreMorgan Deters
2012-07-14an example that uses bitvectors to simulate sha1 computation and dumps an ↵Dejan Jovanović
smt problem corresponding to the hash-inversion problem
2012-07-12removing readme from fmf-develAndrew Reynolds
2012-07-12merged fmf-devel branch, includes support for SMT2 command get-value and ↵Andrew Reynolds
(extended) SMT command get-model. added collectModelInfo and removed getValue from theory interface. merge also includes major updates to finite model finding module (from CASC), added fmf options, some updates to strong solver and quantifiers engine interface. The test recursion_breaker_black currently fails for me on production builds, Morgan is planning to look into this.
2012-07-10svn ingoreMorgan Deters
2012-07-10* fixing the simple_vc_cxx.cpp compile issue (no more Integer constants)Dejan Jovanović
* adding as examples the programs i used to translate nonlinear smt2 problems to other formats
2012-07-10going back to 1. being a non decimalDejan Jovanović
2012-07-10small changes:Dejan Jovanović
* smtlib2 decimal constant can be "1.", i.e. doesn't need digits after the point * adding CVC4_PUBLIC to rational output operator, otherwise it's unusable for users
2012-07-09minor fix-upsMorgan Deters
2012-07-09fix portfolio buildMorgan Deters
2012-07-09fix eXecutable bit on a scriptMorgan Deters
2012-07-08minor SMT-LIBv2 compliance issuesMorgan Deters
2012-07-08remove a debugging line from configure script that was left in inadvertentlyMorgan Deters
2012-07-08another signed-ness warning fix for newer GCCMorgan Deters
2012-07-08Minor changes to avoid some warnings on GCC 4.7.1 (Debian wheezy/sid). ANDY ↵Morgan Deters
- please look at the diff and make sure I didn't do something stupid
2012-07-08Bugs resolved by this commit: #314, #322, #359, #364, #365.Morgan Deters
See below for details. * Fix the "assert" name-collision bug (resolves bug #364). Our identifiers should never be named "assert", as that's a preprocessor definition in <assert.h>, which is often #included indirectly (so simply having a policy of not including <assert.h> isn't good enough---one of our dependences might include it). It was once the case that we didn't have anything named "assert", but "assert()" has now crept back in. Instead, name things "assertFoo()" or similar. Thanks to Tim for the report. To fix this, I've changed some of Dejan's circuit-propagator code from "assert()" to "assertTrue()". Ditto for Andy's explanation manager. Guys, if you prefer a different name in your code, please change it. * Fix the incorrect parsing of lets in SMT-LIBv2 parser (resolves bug #365). Inner lets now shadow outer lets (previously, they incorrectly gave an error). Additionally, while looking at this, I found that a sequential let was implemented rather than a parallel let. This is now fixed. Thanks to Liana for the report. * Remove ANTLR parser generation warnings in CVC parser (resolves bug #314). * There were a lot of Debug lines in bitvectors that had embedded toString() calls. This wasted a LOT of time in debug builds for BV benchmarks (like in "make regress"). Added if(Debug.isOn(...)) guards; much faster now. * Support for building public-facing interface documentation only (as opposed to all internals documentation). Now "make doc" does the public-facing and "make doc-internals" does documentation of everything. (Along with changes to the nightly build script---which will now build and publish both types of Doxygen documentation---this resolves bug #359). * Fix the lambda typechecking bug (resolves bug #322). Thanks to Andy for the report (a long long time ago--sorry). * The default output language for all streams is now based on the current set of Options (if there is one). This has been a constant annoyance, especially when stringstreams are used to construct output. However, it doesn't work for calls from outside the library, so it's mainly an annoyance-fixer for CVC4 library code itself. * Add some CVC4_UNUSED markers to local variables in theory_arith.cpp that are used only in assertions-enabled builds (and thus give warnings in production builds). This was briefly discussed at the meeting this week.
2012-07-07Various fixes to documentation---typos, some incomplete documentation fixed, ↵Morgan Deters
\file tags corrected, copyright added to files that had it missing, etc. I ensured that I didn't change any code with this commit, and even tested on the cluster to be doubly sure: http://church.cims.nyu.edu/regress-results/compare_jobs.php?job_id=4655&reference_id=4646&p=0
2012-07-06Adding std namespace to a couple of make_pair instances.Tim King
2012-07-06Added include unistd to main/util.cppTim King
2012-07-06Added virtual destructor to PpRewrite.Tim King
2012-07-01Some changes to configure.ac:Morgan Deters
1. Includes BOOST_CPPFLAGS during compilation of all files, not just portfolio-relevant files. This is necessary since we now have a general dependence on Boost (not just its threading stuff). This resolves bug 357. 2. Support --disable-thread-support and --enable-thread-support, in an effort to get to the bottom of bug 361. These changes shouldn't affect performance, though #1 will build the cvc4 libs with a couple of pthread definitions that conceivably could change the behavior of #included standard headers. Let's keep an eye on tonight's regressions.
2012-06-28svn:ignoreMorgan Deters
2012-06-28Fixed bug in bv rewriter that caused wrong answer in SMT-COMPsmtcomp2012-resubmission-2Clark Barrett
2012-06-28fix a link error on church, due to Antlr #defining "true" and "false" :-( ↵smtcomp2012-resubmissionMorgan Deters
--for now, just #undef them after the #include
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback