summaryrefslogtreecommitdiff
path: root/src/theory
AgeCommit message (Collapse)Author
2012-08-31merge from fmf-devel branch. more updates to models: now with ↵Andrew Reynolds
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
2012-08-29* Numerous documentation fixes (fix doxygen warnings, add missing ↵Morgan Deters
documentation, etc.). * Remove sat_module.cpp, which was no longer used (was previously refactored?)
2012-08-28Improved compatibility layer, now supports quantifiers. Also incorporatesMorgan Deters
numerous bugfixes, and the cvc3 system test is enabled.
2012-08-27* Reversing commit r4258 (which disabled failing regressions). Fixed the ↵Morgan Deters
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.)
2012-08-26Array constants finished and working. Unit tests for array constants.Clark Barrett
2012-08-24* disallow internal uses of mkVar() (you have to mkSkolem())Morgan Deters
* add support for mkBoundVar() (BOUND_VAR_LISTs in quantifiers must be bound vars)
2012-08-24disallow assertions to inactive theories.Morgan Deters
this fixes at least one known bug where quantifiers could be asserted in quantifier-free logics, with incorrect results.
2012-08-24fix TheoryEngine::collectModelInfo() to only call collectModelInfo() on ↵Morgan Deters
active theories; resolves bug 380
2012-08-24fix warning in arrays rewriterMorgan Deters
2012-08-24fix get-value output in a couple ways; this fixes bug #378Morgan Deters
2012-08-23attribute stuff for Clark's array constantsMorgan Deters
2012-08-23Array constant coding done except for the attributes neededClark Barrett
2012-08-22More progress on array constants.Clark Barrett
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.
2012-08-21add some incremental in-tree regressionsMorgan Deters
2012-08-21rewriterules: fix a correction bug with --simplification=batchFrançois Bobot
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.
2012-08-20remove duplicate function TheoryEngine::getTheory(TheoryId). It was a ↵Morgan Deters
duplicate of TheoryEngine::theoryOf(TheoryId)
2012-08-20minor cleanupMorgan Deters
2012-08-191. Fix for inst_match.cpp to allow compilation on fedoraClark Barrett
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
2012-08-16The SmtEngine now ensures that setLogicInternal() is called even if there is ↵Morgan Deters
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).
2012-08-16Replace propagateAsDecision() with Theory::getNextDecisionRequest():Morgan Deters
* 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
2012-08-14Implements TheoryArith::collectModelInfo(). The current implementation is ↵Tim King
quite basic. This may need to be revisited.
2012-08-14Adds substituteDelta() to DeltaRational which given a value for delta ↵Tim King
returns the corresponding rational value.
2012-08-14Switched TheoryModel assertEqualityEngine to use const Equality Engine pointers.Tim King
2012-08-14Switched a number of EqClassIterator operations to const as well as the ↵Tim King
internal EqualityEngine pointer.
2012-08-13Make a few functions in TheoryEngine (like theoryOf()) const.Morgan Deters
2012-08-13Minor cleanup. No performance difference expected.Morgan Deters
2012-08-07Some items from the CVC4 public interface review:Morgan Deters
* rename DeclarationScope to SymbolTable * rename all HashStrategy -> HashFunction (which we often have anyways) * remove CDCircList (no one is currently using it)
2012-08-04isConst() rule for datatypesMorgan Deters
2012-08-03the array-store "construle" for isConstMorgan Deters
2012-08-03Comparisons for LogicInfos, and associated testsMorgan Deters
2012-08-03ArrayStoreAll infrastructureMorgan Deters
2012-08-03fix uses of getMetaKind() from outside the expr package. (they now use ↵Morgan Deters
isConst() and isVar() as appropriate) also some base infrastructure for the new ::isConst().
2012-08-01add isFinished() to type enumerators (so we don't rely on exception-throwing ↵Morgan Deters
after exhaustively enumerating finite types), also fix a standards-related FIXME in SmtEngine by clarifying the text of an error message
2012-08-01some fixes for Mac OSMorgan Deters
2012-07-31fixes for portfolioMorgan Deters
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-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-17minor fix to prevent getValue from returning nullAndrew Reynolds
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-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-08another signed-ness warning fix for newer GCCMorgan Deters
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback