summaryrefslogtreecommitdiff
path: root/src/theory
AgeCommit message (Collapse)Author
2012-09-24Fix the memout issue seen in recent nightly regressions (was due to aMorgan Deters
Statistics-printing problem, limited to certain benchmarks). Mark some unlabeled header files "cvc4_private.h". Other minor cleanup. (this commit was certified error- and warning-free by the test-and-commit script.)
2012-09-22Separate public-facing and internal-facing interfaces to Statistics.Morgan Deters
The external interface (e.g., what's answered by ExprManager::getStatistics() and SmtEngine::getStatistics()) is a snapshot of the current statistics (rather than a reference to the actual StatisticsRegistry). The StatisticsRegistry is now internal-only. However, it's built as a convenience library so that the parser and driver can use it too (by re-linking against it). This is part of the ongoing effort to clean up the public interface. (this commit was certified error- and warning-free by the test-and-commit script.)
2012-09-22another fix for the equality class iterator Dejan Jovanović
2012-09-21SMT-LIBv2 compliance updates:Morgan Deters
* chainability of =, <, <=, >, >= via the new CHAINABLE kind and TheoryBuiltin rewriter support (resolves bug #383) * with --smtlib2, force interactive mode off by default Also: * fix a few bugs causing crashes * better "alias" processing for options * configure-time fixes to readline detection (this commit was certified error- and warning-free by the test-and-commit script.)
2012-09-19General subscriber infrastructure for NodeManager, as discussed in theMorgan Deters
meeting last week. The SmtEngine now subscribes to NodeManager events, does appropriate dumping of variable declarations, and notifies the Model class. The way to create a skolem is now: nodeManager->mkSkolem("myvar_$$", TypeNode, "is a variable created by the theory of Foo") The first argument is the name of the skolem, and the (optional) "$$" is a placeholder for the node id (to get a unique name). Without a "$$", a "_$$" is automatically appended to the given name. The second argument is the type. The (optional, but recommended) third argument is a comment, used by the dump infrastructure to indicate what the variable is for / who owns it. An optional fourth argument (not shown) allows you to specify flags that control the behavior (e.g., don't do notification, and/or don't make a unique name). Look at the documentation for details on these. In particular, the above means you can't just do a mkSkolem(boolType) for example---you have to specify a name and (hopefully also, but it's optional) a comment. This leads to easier debugging than the anonymous skolems before, since we'll be able to track where the skolems came from. Much of the Model and Dump stuff, as well as some Command stuff, is cleaned up by this commit. Some remains to be cleaned up. (this commit was certified error- and warning-free by the test-and-commit script.)
2012-09-19fix for bug 370.Dejan Jovanović
some internal nodes in eq engine were treated as constants incorrectly
2012-09-19Changing the equality engines's euivalence class iterator. Andy please check ↵Dejan Jovanović
if this does what you want it to do.
2012-09-17minor fix for models, added simple cliques option for uf strong solverAndrew Reynolds
2012-09-16store values returned by get-value in TheoryModel::d_reps if necessary, ↵Andrew Reynolds
fixes bug 382.
2012-09-13ensure that get-value and get-model are consistent, rewrite function value ↵Andrew Reynolds
bodies, do not dag-ify model output
2012-09-12Adding model assertions after SAT responses.Morgan Deters
To enable, use --check-models. Turning on the option can be done in debug or optimized builds, regardless of whether normal assertions are on or not. This is to allow us to check the generated models in long-running queries, and might be useful to end users as a double-check too. By default, --check-models is quiet (no output unless it detects a problem). That allows regression runs to pass unless there are problems: make regress CVC4_REGRESSION_ARGS=--check-models To see it work, use -v in addition to --check-models. There may still be bugs in the feature itself, but already I've found some apparent model-generation bugs (and discussed with Andy) from this feature, so it seems useful in its current state. --check-models turns on what SMT-LIBv2 calls "interactive mode" (which keeps the list of user assertions around), and also implies --produce-models. This version does NOT require incremental-mode, which one design did (the one mentioned in yesterday's meeting). Also: * TheoryUF::collectModelInfo() now generates UninterpretedConstants (rather than non-constants) * The UF rewriter now reduces (APPLY_UF (LAMBDA...) args...), and treats uninterpreted constants correctly (e.g. uc_U_1 != uc_U_2) * The SubstitutionMap now supports substitutions of operators for paramaterized kinds (e.g., function symbols)
2012-09-11added getCardinality to modelAndrew Reynolds
2012-09-11Partially reverting the changes made in 4308. There is now both an Expr and ↵Tim King
Node version of getValue() in TheoryModel.
2012-09-10modified getValue to return Expr instead of NodeAndrew Reynolds
2012-09-10Fixed an error in the rewriter Pascal pointed out. This was in effectively ↵Tim King
dead code. (Nobody internally made minus nodes.)
2012-09-03minor cleanup leftover from fmf-develAndrew Reynolds
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
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback