summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
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-17Fix for the bug introduced in 1477. The stuff that was added to ↵Tim King
CVC4ostream::operator<< should only be executed when d_os != NULL. This was the cause of the NULL pointer dereference in debug builds.
2011-03-17push and pop manipulators for output stream so that one can indent the outputDejan Jovanović
ueful for me, maybe someone else finds it useful also
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-15real fix for bug 245, previous one was faultyDejan Jovanović
2011-03-15small fixes for run_regression script to workaround bug in old mktemp, was ↵Morgan Deters
causing a hang in bug220.smt2
2011-03-15fix for bug 254, lemmas were propagating at lower levels, and the conflict ↵Dejan Jovanović
clauses asserting literal would overwrite the propagated literal let's see if i break the build again
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-14adding support for google performance tools to the build sytem, it can be ↵Dejan Jovanović
enabled at configure with --with-google-perftools to use it on ubuntu, you need to install packages google-perftools and libgoogle-perftools0 to run the profiling of the heap, you can run it for example with HEAPPROFILE=/tmp/profile ./builds/bin/cvc4 test/regress/regress0/lemmas/clocksynchro_5clocks.main_invar.base.smt this will create some files /tmp/profile* that you can then to get the pdf of the profile you can then run google-pprof --pdf ./builds/bin/cvc4 /tmp/profile.0001.heap > profile.pdf or for other options check http://goog-perftools.sourceforge.net/doc/
2011-03-14change to the run_regression script to better manage temporary files; ↵Morgan Deters
hopefully this will somewhat alleviate the problem with all the junk files in /tmp
2011-03-14Fix to bug 251 (non-spurious warnings in builds) by shifting metakind array ↵Morgan Deters
by 1 to handle the UNDEFINED_KIND case.
2011-03-10Fix bug 246 (occasional buffer overflow related to varargs in ↵Morgan Deters
assertion-failure string construction) and addition of an assert_white unit test check for the issue
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-05- Made Rational::sgn() function const.Tim King
2011-03-05adding three features to CVC parser that drastically improve its support for ↵Morgan Deters
the language: LET now supported (but not "type-lets" yet), OPTION now supported, and ^ operator (exponentiation) supported for nonnegative integer exponents. The latter simply expands to MULT, and of course fails assertions in arithmetic if a variable is raised to n >= 2. Also other CVC parser clean-up.
2011-03-03fix for bug #244, "Segfault if file cannot be found and --stats is on"Morgan Deters
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-03resurrecting triple.h from r1023 (after which it was removed)Morgan Deters
2011-03-03Merged the tableau-copy branch into trunk. This adds a copy constructor and ↵Tim King
operator=(...) to Tableau.
2011-03-03fixing a type that caused the segfaults in the regressionsDejan Jovanović
2011-03-02fixing the big with lemma reallocation in minisat garbage collectionDejan Jovanović
2011-02-28CongruenceClosure module now should support nullary congruence operators ↵Morgan Deters
(now that they are allowed for the datatypes theory, as in (APPLY_CONSTRUCTOR nil) or (APPLY_CONSTRUCTOR zero)). It does this by treating such terms with zero children as non-candidates for congruence, even though they have the congruence kind APPLY_CONSTRUCTOR.
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-28minor doxygen build target fixesMorgan Deters
2011-02-28Review of statistics code. Added lots of documentation, and fixed an issue ↵Morgan Deters
(I think) that Tim found with TimerStat involving wild, sometimes negative, timer statistic values. (It was due to improper initialization.)
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-26fix serious regression breakage (segfaults) caused by an off-by-one error in ↵Morgan Deters
initialization of the expression variable statistics in last commit
2011-02-26adding the variables count to the statistics in the expr managerDejan Jovanović
2011-02-26adding statistics about how many different kinds of expressions we have ↵Dejan Jovanović
created in the expression manager. this is useful, for example, with --parse-only, to figure out a bit of problem structure
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback