summaryrefslogtreecommitdiff
path: root/src
AgeCommit message (Collapse)Author
2012-07-31Moving some instantiation-related stuff from src/theory to ↵Morgan Deters
src/theory/quantifiers and src/theory/rewriterules. This unclutters the src/theory directory somewhat. The namespaces weren't changed, only the file locations.
2012-07-31fix some file documentationMorgan Deters
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-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-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-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-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-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-09fix portfolio buildMorgan Deters
2012-07-08minor SMT-LIBv2 compliance issuesMorgan 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-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
2012-06-27Fixing a bug in proof production for the DioSolver.Tim King
2012-06-27This adds TheoryArith::safeToReset(). This fixes bug 363.Tim King
2012-06-27Adding access to simplex's ArithPriorityQueue to TheoryArith for ↵Tim King
ArithPriorityQueue::reduce(), ::begin() and ::end().
2012-06-27Improved debugging output.Tim King
2012-06-27Improved debugging output.Tim King
2012-06-27Adding reduce() to the ArithPriorityQueue. This reduces the queue from a ↵Tim King
superset of the basic variables that violate a bound to the exact set.
2012-06-25Added a warning to arithmetic for a known dio solver bug. Somehow the fix ↵Tim King
never made it to trunk. Do not know how. The fix to the bug is pending the hunt for bug 363.
2012-06-22TPTP: add parser for cnf and fofFrançois Bobot
- include directive works - no keyword : 'fof', 'cnf', ... can be used for symbols name - real -> unsorted -> real (for the one that appear, so no bijection bitween real and unsorted) - same thing for string But: - string not distinct by projection to real, not sure if the current state of string theory make them distinct - filtering in include is not done - the result is not printed in the TPTP way (currently SMT2 way)
2012-06-22parser: add some acces function and recover the original nextToken from antlr3François Bobot
in order to be able to use the stack of streams.
2012-06-22fix : function AntlrInput::tokenTextSubstrFrançois Bobot
2012-06-22Parser: add the possibility to bind at level 0.François Bobot
2012-06-18Reverting buggy rewriter codeClark Barrett
2012-06-18Fixed bug in rewriterClark Barrett
2012-06-18Fix for slow array rewrite and minor bug fix in arrays that popped up as a ↵Clark Barrett
result
2012-06-18small bug fix and performance fix in ite simplifierClark Barrett
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback