summaryrefslogtreecommitdiff
path: root/src/theory
AgeCommit message (Collapse)Author
2011-04-01This commit is a merge from the "betterstats" branch, which:Morgan Deters
* Makes Options an "omnipresent thread-local global" (like the notion of the "current NodeManager" was already). Options::current() accesses this structure. * Removes Options from constructors and data structures everywhere (this cleans up a lot of things). * No longer uses StatisticsRegistry statically. An instance of the registry is created and linked to a NodeManager. * StatisticsRegistry::current() is similar to Options::current(), but the pointer is stowed in the NodeManager (rather than stored) * The static functions of StatisticsRegistry have been left, for backward compatibility; they now use the "current" statistics registry. * SmtEngine::getStatisticsRegistry() is a public accessor for the registry; this is needed by main() to reach in and get the registry, for flushing statistics at the end.
2011-03-31Fixes to Valuation.Tim King
2011-03-30Added the command line flag --rewrite-arithmetic-equalities. This sets a ↵Tim King
static flag in Options that the ArithRewriter uses to determine the equality rewriting policy.
2011-03-30Add Valuation::getSatValue() so that theories can access the currentMorgan Deters
(propositional) assignment for theory atoms. Fixed Debug/Trace as discussed in bug ticket #252 and on the mailing list. This implementation leads to some compiler warnings in production builds, but these will be corrected in coming days. There appears to be a small speedup in the parser as a result of this fix: http://goedel.cims.nyu.edu/regress-results/compare_jobs.php?job_id=1902&reference_id=1886&p=5 Cleaned up a few CD Boolean attribute things. Various small fixes to coding guidelines / test coverage. This commit: * Resolves bug 252 (tracing not disabled in production builds) * Resolves bug 254 (implement CDAttrHash<>::BitIterator::find())
2011-03-30Merged the branch sparse-tableau into trunk.Tim King
2011-03-26fix for bug 253, was propagating an asserted literalDejan Jovanović
also fixing some compile warnings in attributes
2011-03-25This is a merge from the "theoryfixes+cdattrhash" branch. The changesMorgan Deters
are somewhat disparate but belonged on the same branch because they were held back from trunk all for the same reason (to keep the trunk stable for furious bitvector development). Dejan has now given me the go-ahead for a merge. ========================================= THIS COMMIT CHANGES THE THEORY INTERFACE! ========================================= Theory constructors are expected to take an additional "Valuation*" parameter that each Theory should send along to the base class constructor. The base class Theory keeps the Valuation* in a d_valuation field for use by it and by its derived classes. Theory::getValue() no longer takes a Valuation* (it is expected to use d_valuation instead). This allows other theory functions to take advantage of getValue() for debugging or heuristic purposes. TODO BEFORE MERGE TO TRUNK: ****implement BitIterator find() in CDAttrHash<bool>. Specifically: * Added QF_BV support for SMT-LIB v2. * Two adjustments to the theory interface as requested by Tim King: 1. As described above. 2. Theories now have const access to the fact queue through base class functions facts_begin() and facts_end(); useful for debugging. * Added an "Asserted" attribute so that theories can check if something has been asserted or not (and therefore not propagate it). However, this has been disabled for now, pending more data on the overhead of it, and pending discussion at the 3/25/2011 meeting. * Do not define NDEBUG in MiniSat in assertion-enabled builds (so that MiniSat asserts are evaluated). * As a result of the new MiniSat assertions, some --incremental regressions had to be disabled; also, some bitvectors ?!! * Bug 71 is resolved by adding a specialization for CDAttrHash<> in the attribute package. * Fixes for some warnings flagged by clang. * System tests have arrived! So far mainly infrastructure for having system tests, but there is a system test aimed at improving code coverage of the printer package. * Minor other adjustments to documentation and coding to be more conformant to CVC4 policy. Tests have been performed to demonstrate that these changes have no or negligible effect on performance. In particular, changing the CDAttrHash<> doesn't have any real effect on performance or memory right now, since there is only one context-dependent boolean flag (as soon as another is added, the effect is noticeable but probably still slight).
2011-03-22Merges the small changes on the queue-period branch into trunk. This branch ↵Tim King
importantly removes an unintentional line of code that had it pivoting more times than intended before rechecking the queue. Importantly, it does this without losing any examples with rewrite-equality enabled. This adds a parameter NUM_CHECKS which determines how many times the queue chould be checked during difference mode. A value of 10 for NUM_CHECKS has been empirically determined to be good in practice. See jobs 1815, 1824, 1825, 1821, 1814.
2011-03-22updating debug output usage to eliviate impact of bug 252Dejan Jovanović
2011-03-21more bugfixes, some basic propagation, and testcases to cover themDejan Jovanović
2011-03-21fixing a bug in the BV rewrite, off by one error when merging constantsDejan Jovanović
2011-03-20again a typoDejan Jovanović
2011-03-20more bugfixes for bitvectorsDejan Jovanović
2011-03-20fixing the failure from last nigth, due to using a reference to an element ↵Dejan Jovanović
in a growing vector
2011-03-20missed one caseDejan Jovanović
2011-03-20commit for the version of bitvectors that passes all the unit testsDejan Jovanović
2011-03-19Merges the pqueue-set branch into trunk. During VarOrder mode and ↵Tim King
Collection mode, the arithmetic priority queue is maintained as a set. Compare jobs 1781 and 1782 for the expected performance change.
2011-03-18- The learned clauses from the miplib trick were being added twice. This was ↵Tim King
slowing down the search. (The effect can be seen in the difference between jobs 1765 and 1755). This happened during commit -r1480 when adding the ArithStaticLearner. This has been fixed.
2011-03-17Switched SimplexDecisionProcedure::d_delayedLemmas from a vector to a queue.Tim King
2011-03-17SimplexDecisionProcedure no longer takes an OutputChannel as a parameter.Tim King
2011-03-17- Removes arith_constants.hTim King
- Adds ArithStaticLearner. Consolidates and cleans up the code for static learning in arithmetic. Static learning is now associated with a small amount of state between calls. This is used to track the data for the miplib trick. The goal is to make this inference work without relying on the fact that all of the miplib problem is asserted under the same AND node. - This commit contains miscellaneous other arithmetic cleanup.
2011-03-17Adds debugging output to EngineOutputChannel::lemma.Tim King
2011-03-16- Turns on the excluded middle assertions during the miplibTrick. If it is ↵Tim King
known that x \in {c_i}, then x is not in the interval (c_{i}, c_{i+1}) (assuming the c_i's are sorted). (Compare jobs 1742 and 1739 for the expected performance change on trunk. Compare jobs 1740 and 1738 for the expected performance change with the rewrite-equality patch.)
2011-03-16- Turns on the miplibTrick. This detects during the static learning phase a ↵Tim King
set of nodes that are asserted to the theory of the form (=> p_i (= x c_i)). If (or p_1 p_2 ...) is a tautology, then x \in {c_1, c_2, ...}. (This tautology check currently requires CUDD to be installed.) Right now all this does is assert x \leq max{c_i} and x \geq min{c_i}. (Compare jobs 1728 to 1626 for how this affects the miplib examples.)
2011-03-15Merge from cudd branch. This mostly just adds support for linkingMorgan Deters
against cudd libraries, the propositional_query class (in util/), which uses cudd if it's available (and otherwise answers UNKNOWN for all queries), and the arith theory support for it (currently disabled per Tim's request, so he can clean it up). Other changes include: * contrib/debug-keys - script to print all used keys under Debug(), Trace() * test/regress/run_regression - minor fix (don't export a variable) * configure.ac - replace a comment removed by dejan's google perf commit * some minor copyright/documentation updates, and minor changes to source text to make 'clang --analyze' happy.
2011-03-10ITE removal in TheoryEngine was not properly handling PARAMETERIZED kinds. ↵Morgan Deters
Fixed and added bug regression. Thanks Andrew Reynolds for the bug report!
2011-03-08Clean up Theory base class as per code review bug #60; also fixes to ↵Morgan Deters
CodeTimer statistic, and adding a CodeTimer to TheoryEngine::EngineOutputChannel::newFact() for investigation into (possible) slow or redundant theory registration.
2011-03-08- Merges queue-interrogation branch into the trunk. This branch adds extra ↵Tim King
phases of looking for additional conflicts during and after the heuristic pivoting stage. (For the expected performance gain, comparing jobs 1676 and 1643 gives a rough idea.)
2011-03-07Merges branches/arithmetic/tableau-reset into the trunk. The tableau is now ↵Tim King
heuristically reset to its initial state during restarts.
2011-03-05- Adds PermissiveBackArithVarSet. This is very similar to ArithVarSet. The ↵Tim King
difference is that set.isMember(x) for an ArithVar x s.t. x > set.allocated() returns false for PermissiveBackArithVarSet and is an assertion failure for ArithVarSet. This cuts down on the memory usage of the ColumnMatrix slightly.
2011-03-05Enables the PreferenceFunction minBoundAndRowCount.Tim King
2011-03-05- Adds "PreferenceFunction" to SimplexDecisionProcedure. A ↵Tim King
PreferenceFunction allows for specifying how to choose between two nonbasic variables for which should become basic during the selectSlack(...) function. This partially addresses a point brought up by Dejan during the Code Review. (Unfortunately, function pointers are involved in the implementation. Because of this, I have had Morgan review this code before check-in.)
2011-03-03- Creates a queue for lemmas discovered during the simplex procedure. Lemmas ↵Tim King
are sent to the sat solver during theory propagation. The lemmas currently come from additional conflicts that are discovered by findConflictOnTheQueue(...).
2011-03-03Merged the tableau-copy branch into trunk. This adds a copy constructor and ↵Tim King
operator=(...) to Tableau.
2011-02-28Review of mktheorytraits, mkrewriter, and recent changes to other mk* ↵Morgan Deters
scripts. Minor changes only, correcting some documentation and fixing some warnings that were being issued about functions not existing.
2011-02-27- Adds a path for Theory to be passed a reference to Options.Tim King
- Adds 3 choices of heuristic variable orders to use in ArithPriorityQueue. - Adds the pivot-rule command line option.
2011-02-27- Makes VarCoeffPair a class instead of a typedef of pair<ArithVar, ↵Tim King
Rational>. This addresses a point Dejan brought up in the code review.
2011-02-27- Adds a buffer to the ReducedRowVector addRowTimesConstant operation to ↵Tim King
reduce the number of allocations made. Compare cluster jobs 1585 and 1584 for the expected performance increase.
2011-02-26- Merged RowVector and ReducedRowVector.Tim King
- Renamed NonZeroIterator to const_iterator. - Both of these changes are in response to the code review.
2011-02-26Commit to fix bug 241 (improper "using namespace std" in a header). This ↵Morgan Deters
caused a number of latent errors in sources and headers to come up. Those are now fixed (by adding "using" or "std::" depending on the context). Took the opportunity to bring many rewriter sources in line with coding conventions.
2011-02-26Merge from theory-break-dependences branch to break Theory and TheoryEngine ↵Morgan Deters
dependences; now, if you touch theory_engine.h, only a few things in theory need be recompiled (TheoryEngine, SharedTermManager, .... but no theory implementations), along with the PropEngine and SmtEngine. If you touch a specific theory's .h file, only that theory must be recompiled (along with the TheoryEngine, since it uses traits, and SmtEngine, since it tells the TheoryEngine which theory implementations to use).
2011-02-26adding the variables count to the statistics in the expr managerDejan Jovanović
2011-02-25- This commit adds some debugging information to ArithPriorityQueue.Tim King
- There was a missing break statement in ArithPriorityQueue. This addresses the bug discovered in the debug regression (http://goedel.cims.nyu.edu/regress-results/compare_jobs.php?job_id=1566&reference_id=1548&category=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,29&p=10).
2011-02-25slicing manager is not breaking the old regressions, time to syncDejan Jovanović
2011-02-24- Adds an additional round of checks for a conflict after the difference ↵Tim King
heuristic round has been completed. This happens immediately before switching to the variable order round.
2011-02-24- Adds an additional mode to ArithPriorityQueue, Collection. Collection is a ↵Tim King
mode where the heap structure is not maintained. There is just a list of variables that may be inconsistent. This is used up until the simplex procedure is invoked. - Misc. cleanup and renaming in ArithPriorityQueue.
2011-02-24- Changes ArithPriorityQueue to use stl::vector<>'s plus stl's heap ↵Tim King
algorithms instead of stl's priority queue (which is really an stl vector plus the stl heap algorithms). This offers more control of the underlying data structure.
2011-02-22- Adds column based iterators.Tim King
2011-02-21- Adds the ArithPriorityQueue class. The ArithPriorityQueue class provides ↵Tim King
an abstraction to the previous priority queues representing the 2 different pivoting rules.
2011-02-21- Adds the statistic d_avgNumRowsNotContainingOnPivot.Tim King
- Removed a bug in row counting in row counting.
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback