summaryrefslogtreecommitdiff
path: root/src/theory/arith
AgeCommit message (Collapse)Author
2013-01-31Adding a heuristic to more eagerly split bounded integer variables.Tim King
2013-01-25Fix errors and reduce warnings on clang (merge from mdeters/clang)Morgan Deters
2013-01-23Adding miplibtrick option.Tim King
2013-01-23Adding substitution size cap.Tim King
2012-12-14Merging in patch from branch '1.0.x'.Tim King
2012-12-14Changing the rewriter to use Boute's Euclidean definition of division.Tim King
2012-12-05Improved garbage collection for TheoryArith. The merges all of the code ↵Tim King
over from branches/arithmetic/converge except for the new code for simplex.
2012-12-05Cleanup of arithmetic, and some new utility functions for the coming ↵Tim King
fcsimplex code.
2012-12-05This commit merges in CDTrailHashMap and CDInsertHashMap. CDHashSet now uses ↵Tim King
CDInsertHashMap. CDHashSet<TNode> have been changed to CDHashSet<Node>. Switching CnfStream to use CDInsertSet. Switches a few CDHashMaps in arithmetic to use CDTrailHashMap. Documentation changes to CDHashMap.
2012-12-01drastic simplification of quantifiers code regarding equality queries, ↵Andrew Reynolds
instantiation strategies moved from instantiators to central instantiation engine, removed instantiator objects, simplified rewrite rules candidate generator to use central equality engine, efficient e-matching now uses central equality engine
2012-11-30quantifiers now uses master equality engine, preparation work to cleanup codeAndrew Reynolds
2012-11-26Removing DioSolver::acceptableOriginalNodes(). This assertion was too ↵Tim King
strong, and was broken by r4620. This commit resolves bug463. Adding a previously triggering test case.
2012-11-26Adding support for a master equality engine. Each theory gets the master ↵Dejan Jovanović
equality engine through the setMasterEqualityEngine method. This is a read-only equality engine, so nothing should be added to it directly. Instead each equality engine that is of interest should have the master equality engine attached to it. To set when to use the master equality engine see TheoryEngine::finishInit().
2012-11-26Improving arithmetic debugging output.Tim King
2012-11-25This commit fixes two incompleteness bugs (461, 459) introduced in r4611 ↵Tim King
dues to a problem of not correctly handling disequalities. Performance implications are uncertain.
2012-11-24Adds ensureConstraint(...) to ConstraintDatabase. This is a slightly ↵Tim King
optimized way of doing getConstraint() if the user already has a ValueCollection&.
2012-11-21- Removes getDeltaValueWithNonlinear() entirelyTim King
- Changes the signature of getDeltaValue to throw DeltaRationalException and ModelException -- DeltaRationalExceptions can occur with non-linear arithmetic computations that cannot be done. (0 + delta) * (1 + delta) is not a DeltaRational. -- ModelExceptions occur if getDeltaValue() is going to return a value that disagrees with its value in the model (due to non-linear arithmetic) -- ModelExceptions also occur if getDeltaValue(n) is called on a variable arithmetic has never seen before. - getEqualityStatus() now wraps and catches both of these exceptions. If either occurs, the equality status is EQUALITY_UNKNOWN. This allows arithmetic to handle terms it has never seen before in getEqualityStatus. This resolves bug 453. - Removes the dead code rowImplication() entirely.
2012-11-21Adds a number of new capabilities to DeltaRational. This adds ↵Tim King
DeltaRationalException which can be called when an operation on a DeltaRational does not have well formed semantics. This allows for things like multiplying two DeltaRationals, which may or may not result in a DeltaRational.
2012-11-19Changed the splitting-on-demand lemmas of arithmetic to no longer contain ↵Tim King
the equality being split on. Instead of issuing 'x != y implies (x < y or x > y)', the lemma is now '(x <= y or x >= y)'. This resolves bug 450.
2012-11-19Fix for bug452.Tim King
2012-11-14replaced all static member data from rewrite rule triggers, added ↵Andrew Reynolds
infrastructure for recognizing quantifier macros
2012-11-14Fixed a typo in r4576Tim King
2012-11-14Fix to bug449. Adds shared constants to the set of DeltaRationals that must ↵Tim King
be in the final total order.
2012-11-13refactoring of quantifiers rewriter based on code review from yesterday, ↵Andrew Reynolds
refactoring code out of instantiators in preparation for quantifiers equality engine
2012-11-12Improved error reporting for improperly using non-linear division in linear ↵Tim King
arithmetic.
2012-11-12Delta is now generated in arithmetic to keep consistent the total order of ↵Tim King
DeltaRational values for lowerbounds, upperbounds, assignments and disequalities. Throws LogicException when a non-linear term is asserted and the the LogicInfo isLinear() disagrees.
2012-11-11Fixes for the arithmetic normal form and rewriter to handle arbitrary ↵Tim King
constants for total functions.
2012-11-10Fix for bug 439. Delta computation now includes disequality information.Tim King
2012-11-08Turns on TheoryUF when non-linear arithmetic is turned on. Adds test cases ↵Tim King
for division by 0.
2012-11-08Improved support for division by zero. This adds the *_TOTAL kinds and ↵Tim King
uninterpreted functions for division by 0.
2012-11-07Fix to a bug in integer mod lemmas.Tim King
2012-11-05Fix to the context dependent static learning code.Tim King
2012-10-26Fix to subrange type enumerator, and its unit test. Resolves bug 436.Morgan Deters
(this commit was certified error- and warning-free by the test-and-commit script.)
2012-10-26Fix for bug 430. d_delta in PartialModel was never being computed. (Delta ↵Tim King
remained at its initial non-sensical value of -1.) There was a problem with guarding d_delta with d_deltaIsSafe in PartialModel.
2012-10-24Updated the ArithStaticLearner to be user context dependent.Tim King
2012-10-19Fix for model building with shared terms for arithmetic.Tim King
(this commit was certified error- and warning-free by the test-and-commit script.)
2012-10-16more cleanup of quantifiers codeAndrew Reynolds
2012-10-11Standardizing copyright notice. Touches **ALL** sources, guys, sorry.. it'sMorgan Deters
just the header comments at the top, though. Don't update to this rev if you don't have time for a complete rebuild, and exclude this rev if you want to see what's new across a range of commits. (this commit was certified error- and warning-free by the test-and-commit script.)
2012-10-08* Models' SubstitutionMaps are now attached to the user contextMorgan Deters
(rather than SAT context) * Enable part of CVC3 system test (resolves bug 375) * Fix infinite recursion in beta reduction code (resolves bug 417) * Some model-building assertions have been added * Other minor changes (this commit was certified error- and warning-free by the test-and-commit script.)
2012-10-06* Clean up some options documentationMorgan Deters
* Remove defunct --no-theory-registration option * Point people to Wiki tutorial * Modernize the cut-release script * Misc cleanup, documentation (this commit was certified error- and warning-free by the test-and-commit script.)
2012-10-02* re-enable some Z3 extended commands:Morgan Deters
declare-const declare-funs declare-preds define simplify * don't output --help on bad options, just invite user to try --help * Datatypes from SMT2 parser now name the tester is-cons (e.g.) * unknown results produce models, --check-model doesn't fail hard for incorrect unknown models. removed the assert that kept arithmetic from producing models if it saw nonlinear (this commit was certified error- and warning-free by the test-and-commit script.)
2012-09-30minor changes to arithmetic assertions involving nonlinearity and models ↵Morgan Deters
(related to bug 405)
2012-09-29Calling the setIncompleteness() flag on all full checks once a non-linear ↵Tim King
term has been seen.
2012-09-29This commit add interpretation by lemma for INTS_DIVISION, INTS_MODULUS, and ↵Tim King
DIVISION. Improves support for non-linear monomials in getEqualityStatus(). Fixes bug 405.
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-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-10Fixed an error in the rewriter Pascal pointed out. This was in effectively ↵Tim King
dead code. (Nobody internally made minus nodes.)
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-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-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
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback