cvc5.git
13 years agoThis is a merge from the "theoryfixes+cdattrhash" branch. The changes
Morgan Deters [Fri, 25 Mar 2011 05:32:31 +0000 (05:32 +0000)]
This is a merge from the "theoryfixes+cdattrhash" branch.  The changes
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).

13 years agoFix for a bug Andrew Reynolds found for iterators that affects empty CDList<> objects...
Morgan Deters [Fri, 25 Mar 2011 05:20:56 +0000 (05:20 +0000)]
Fix for a bug Andrew Reynolds found for iterators that affects empty CDList<> objects that allocate from ContextMemoryAllocator<>.  Iterators were broken in that begin() != end() for empty lists (again---only those that allocated space from ContextMemoryAllocator<>).  Added a unit test for this, too.  Thanks Andy!

13 years agoMerges the small changes on the queue-period branch into trunk. This branch importan...
Tim King [Tue, 22 Mar 2011 13:37:11 +0000 (13:37 +0000)]
Merges the small changes on the queue-period branch into trunk.  This branch 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.

13 years agoupdating debug output usage to eliviate impact of bug 252
Dejan Jovanović [Tue, 22 Mar 2011 02:11:09 +0000 (02:11 +0000)]
updating debug output usage to eliviate impact of bug 252

13 years agomore bugfixes, some basic propagation, and testcases to cover them
Dejan Jovanović [Mon, 21 Mar 2011 18:55:05 +0000 (18:55 +0000)]
more bugfixes, some basic propagation, and testcases to cover them

13 years agofixing a bug in the BV rewrite, off by one error when merging constants
Dejan Jovanović [Mon, 21 Mar 2011 17:43:22 +0000 (17:43 +0000)]
fixing a bug in the BV rewrite, off by one error when merging constants

13 years agoagain a typo
Dejan Jovanović [Sun, 20 Mar 2011 19:58:51 +0000 (19:58 +0000)]
again a typo

13 years agomore bugfixes for bitvectors
Dejan Jovanović [Sun, 20 Mar 2011 19:50:48 +0000 (19:50 +0000)]
more bugfixes for bitvectors

13 years agofixing the failure from last nigth, due to using a reference to an element in a growi...
Dejan Jovanović [Sun, 20 Mar 2011 16:31:19 +0000 (16:31 +0000)]
fixing the failure from last nigth, due to using a reference to an element in a growing vector

13 years agomissed one case
Dejan Jovanović [Sun, 20 Mar 2011 01:41:48 +0000 (01:41 +0000)]
missed one case

13 years agocommit for the version of bitvectors that passes all the unit tests
Dejan Jovanović [Sun, 20 Mar 2011 01:12:31 +0000 (01:12 +0000)]
commit for the version of bitvectors that passes all the unit tests

13 years agoMerges the pqueue-set branch into trunk. During VarOrder mode and Collection mode...
Tim King [Sat, 19 Mar 2011 22:59:39 +0000 (22:59 +0000)]
Merges the pqueue-set branch into trunk.  During VarOrder mode and Collection mode, the arithmetic priority queue is maintained as a set. Compare jobs 1781 and 1782 for the expected performance change.

13 years ago- The learned clauses from the miplib trick were being added twice. This was slowing...
Tim King [Fri, 18 Mar 2011 22:22:28 +0000 (22:22 +0000)]
- The learned clauses from the miplib trick were being added twice. This was 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.

13 years agoSwitched SimplexDecisionProcedure::d_delayedLemmas from a vector to a queue.
Tim King [Thu, 17 Mar 2011 21:28:50 +0000 (21:28 +0000)]
Switched SimplexDecisionProcedure::d_delayedLemmas from a vector to a queue.

13 years agoSimplexDecisionProcedure no longer takes an OutputChannel as a parameter.
Tim King [Thu, 17 Mar 2011 21:20:28 +0000 (21:20 +0000)]
SimplexDecisionProcedure no longer takes an OutputChannel as a parameter.

13 years ago- Removes arith_constants.h
Tim King [Thu, 17 Mar 2011 20:38:32 +0000 (20:38 +0000)]
- Removes arith_constants.h
- 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.

13 years agoAdds debugging output to EngineOutputChannel::lemma.
Tim King [Thu, 17 Mar 2011 20:24:05 +0000 (20:24 +0000)]
Adds debugging output to EngineOutputChannel::lemma.

13 years agoFix for the bug introduced in 1477. The stuff that was added to CVC4ostream::operato...
Tim King [Thu, 17 Mar 2011 15:23:53 +0000 (15:23 +0000)]
Fix for the bug introduced in 1477.  The stuff that was added to CVC4ostream::operator<< should only be executed when d_os != NULL. This was the cause of the NULL pointer dereference in debug builds.

13 years agopush and pop manipulators for output stream so that one can indent the output
Dejan Jovanović [Thu, 17 Mar 2011 03:48:53 +0000 (03:48 +0000)]
push and pop manipulators for output stream so that one can indent the output
ueful for me, maybe someone else finds it useful also

13 years ago- Turns on the excluded middle assertions during the miplibTrick. If it is known...
Tim King [Wed, 16 Mar 2011 22:08:15 +0000 (22:08 +0000)]
- Turns on the excluded middle assertions during the miplibTrick. If it is 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.)

13 years ago- Turns on the miplibTrick. This detects during the static learning phase a set...
Tim King [Wed, 16 Mar 2011 15:36:45 +0000 (15:36 +0000)]
- Turns on the miplibTrick.  This detects during the static learning phase a 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.)

13 years agoreal fix for bug 245, previous one was faulty
Dejan Jovanović [Tue, 15 Mar 2011 22:08:46 +0000 (22:08 +0000)]
real fix for bug 245, previous one was faulty

13 years agosmall fixes for run_regression script to workaround bug in old mktemp, was causing...
Morgan Deters [Tue, 15 Mar 2011 21:06:47 +0000 (21:06 +0000)]
small fixes for run_regression script to workaround bug in old mktemp, was causing a hang in bug220.smt2

13 years agofix for bug 254, lemmas were propagating at lower levels, and the conflict clauses...
Dejan Jovanović [Tue, 15 Mar 2011 20:48:57 +0000 (20:48 +0000)]
fix for bug 254, lemmas were propagating at lower levels, and the conflict clauses asserting literal  would overwrite the propagated literal
let's see if i break the build again

13 years agoMerge from cudd branch. This mostly just adds support for linking
Morgan Deters [Tue, 15 Mar 2011 20:32:13 +0000 (20:32 +0000)]
Merge from cudd branch.  This mostly just adds support for linking
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.

13 years agoadding support for google performance tools to the build sytem, it can be enabled...
Dejan Jovanović [Mon, 14 Mar 2011 22:14:47 +0000 (22:14 +0000)]
adding support for google performance tools to the build sytem, it can be 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/

13 years agochange to the run_regression script to better manage temporary files; hopefully this...
Morgan Deters [Mon, 14 Mar 2011 21:00:34 +0000 (21:00 +0000)]
change to the run_regression script to better manage temporary files; hopefully this will somewhat alleviate the problem with all the junk files in /tmp

13 years agoFix to bug 251 (non-spurious warnings in builds) by shifting metakind array by 1...
Morgan Deters [Mon, 14 Mar 2011 19:51:26 +0000 (19:51 +0000)]
Fix to bug 251 (non-spurious warnings in builds) by shifting metakind array by 1 to handle the UNDEFINED_KIND case.

13 years agoFix bug 246 (occasional buffer overflow related to varargs in assertion-failure strin...
Morgan Deters [Thu, 10 Mar 2011 21:05:13 +0000 (21:05 +0000)]
Fix bug 246 (occasional buffer overflow related to varargs in assertion-failure string construction) and addition of an assert_white unit test check for the issue

13 years agoITE removal in TheoryEngine was not properly handling PARAMETERIZED kinds. Fixed...
Morgan Deters [Thu, 10 Mar 2011 07:28:32 +0000 (07:28 +0000)]
ITE removal in TheoryEngine was not properly handling PARAMETERIZED kinds.  Fixed and added bug regression.  Thanks Andrew Reynolds for the bug report!

13 years agoClean up Theory base class as per code review bug #60; also fixes to CodeTimer statis...
Morgan Deters [Tue, 8 Mar 2011 21:43:45 +0000 (21:43 +0000)]
Clean up Theory base class as per code review bug #60; also fixes to CodeTimer statistic, and adding a CodeTimer to TheoryEngine::EngineOutputChannel::newFact() for investigation into (possible) slow or redundant theory registration.

13 years ago- Merges queue-interrogation branch into the trunk. This branch adds extra phases...
Tim King [Tue, 8 Mar 2011 01:46:31 +0000 (01:46 +0000)]
- Merges queue-interrogation branch into the trunk. This branch adds extra 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.)

13 years agoMerges branches/arithmetic/tableau-reset into the trunk. The tableau is now heuristi...
Tim King [Mon, 7 Mar 2011 19:10:16 +0000 (19:10 +0000)]
Merges branches/arithmetic/tableau-reset into the trunk.  The tableau is now heuristically reset to its initial state during restarts.

13 years ago- Adds PermissiveBackArithVarSet. This is very similar to ArithVarSet. The differenc...
Tim King [Sat, 5 Mar 2011 23:10:41 +0000 (23:10 +0000)]
- Adds PermissiveBackArithVarSet.  This is very similar to ArithVarSet. The 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.

13 years agoEnables the PreferenceFunction minBoundAndRowCount.
Tim King [Sat, 5 Mar 2011 19:30:06 +0000 (19:30 +0000)]
Enables the PreferenceFunction minBoundAndRowCount.

13 years ago- Adds "PreferenceFunction" to SimplexDecisionProcedure. A PreferenceFunction allows...
Tim King [Sat, 5 Mar 2011 17:33:01 +0000 (17:33 +0000)]
- Adds "PreferenceFunction" to SimplexDecisionProcedure.  A 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.)

13 years ago- Made Rational::sgn() function const.
Tim King [Sat, 5 Mar 2011 16:59:13 +0000 (16:59 +0000)]
- Made Rational::sgn() function const.

13 years agoadding three features to CVC parser that drastically improve its support for the...
Morgan Deters [Sat, 5 Mar 2011 00:03:08 +0000 (00:03 +0000)]
adding three features to CVC parser that drastically improve its support for 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.

13 years agofix for bug #244, "Segfault if file cannot be found and --stats is on"
Morgan Deters [Thu, 3 Mar 2011 18:35:17 +0000 (18:35 +0000)]
fix for bug #244, "Segfault if file cannot be found and --stats is on"

13 years ago- Creates a queue for lemmas discovered during the simplex procedure. Lemmas are...
Tim King [Thu, 3 Mar 2011 18:00:35 +0000 (18:00 +0000)]
- Creates a queue for lemmas discovered during the simplex procedure. Lemmas are sent to the sat solver during theory propagation. The lemmas currently come from additional conflicts that are discovered by findConflictOnTheQueue(...).

13 years agoresurrecting triple.h from r1023 (after which it was removed)
Morgan Deters [Thu, 3 Mar 2011 17:49:15 +0000 (17:49 +0000)]
resurrecting triple.h from r1023 (after which it was removed)

13 years agoMerged the tableau-copy branch into trunk. This adds a copy constructor and operator...
Tim King [Thu, 3 Mar 2011 16:34:48 +0000 (16:34 +0000)]
Merged the tableau-copy branch into trunk. This adds a copy constructor and operator=(...) to Tableau.

13 years agofixing a type that caused the segfaults in the regressions
Dejan Jovanović [Thu, 3 Mar 2011 14:04:38 +0000 (14:04 +0000)]
fixing a type that caused the segfaults in the regressions

13 years agofixing the big with lemma reallocation in minisat garbage collection
Dejan Jovanović [Wed, 2 Mar 2011 23:10:18 +0000 (23:10 +0000)]
fixing the big with lemma reallocation in minisat garbage collection

13 years agoCongruenceClosure module now should support nullary congruence operators (now that...
Morgan Deters [Mon, 28 Feb 2011 07:49:56 +0000 (07:49 +0000)]
CongruenceClosure module now should support nullary congruence operators (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.

13 years agoReview of mktheorytraits, mkrewriter, and recent changes to other mk* scripts. Minor...
Morgan Deters [Mon, 28 Feb 2011 07:03:33 +0000 (07:03 +0000)]
Review of mktheorytraits, mkrewriter, and recent changes to other mk* scripts.  Minor changes only, correcting some documentation and fixing some warnings that were being issued about functions not existing.

13 years agominor doxygen build target fixes
Morgan Deters [Mon, 28 Feb 2011 06:27:12 +0000 (06:27 +0000)]
minor doxygen build target fixes

13 years agoReview of statistics code. Added lots of documentation, and fixed an issue (I think...
Morgan Deters [Mon, 28 Feb 2011 06:06:25 +0000 (06:06 +0000)]
Review of statistics code.  Added lots of documentation, and fixed an issue (I think) that Tim found with TimerStat involving wild, sometimes negative, timer statistic values.  (It was due to improper initialization.)

13 years ago- Adds a path for Theory to be passed a reference to Options.
Tim King [Sun, 27 Feb 2011 19:59:52 +0000 (19:59 +0000)]
- Adds a path for Theory to be passed a reference to Options.
- Adds 3 choices of heuristic variable orders to use in ArithPriorityQueue.
- Adds the pivot-rule command line option.

13 years ago- Makes VarCoeffPair a class instead of a typedef of pair<ArithVar, Rational>. This...
Tim King [Sun, 27 Feb 2011 18:29:38 +0000 (18:29 +0000)]
- Makes VarCoeffPair a class instead of a typedef of pair<ArithVar, Rational>.  This addresses a point Dejan brought up in the code review.

13 years ago- Adds a buffer to the ReducedRowVector addRowTimesConstant operation to reduce the...
Tim King [Sun, 27 Feb 2011 17:34:37 +0000 (17:34 +0000)]
- Adds a buffer to the ReducedRowVector addRowTimesConstant operation to reduce the number of allocations made.  Compare cluster jobs 1585 and 1584 for the expected performance increase.

13 years ago- Merged RowVector and ReducedRowVector.
Tim King [Sat, 26 Feb 2011 23:32:34 +0000 (23:32 +0000)]
- Merged RowVector and ReducedRowVector.
- Renamed NonZeroIterator to const_iterator.
- Both of these changes are in response to the code review.

13 years agoCommit to fix bug 241 (improper "using namespace std" in a header). This caused...
Morgan Deters [Sat, 26 Feb 2011 22:19:47 +0000 (22:19 +0000)]
Commit to fix bug 241 (improper "using namespace std" in a header).  This 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.

13 years agoMerge from theory-break-dependences branch to break Theory and TheoryEngine dependenc...
Morgan Deters [Sat, 26 Feb 2011 21:24:18 +0000 (21:24 +0000)]
Merge from theory-break-dependences branch to break Theory and TheoryEngine 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).

13 years agofix serious regression breakage (segfaults) caused by an off-by-one error in initiali...
Morgan Deters [Sat, 26 Feb 2011 21:18:14 +0000 (21:18 +0000)]
fix serious regression breakage (segfaults) caused by an off-by-one error in initialization of the expression variable statistics in last commit

13 years agoadding the variables count to the statistics in the expr manager
Dejan Jovanović [Sat, 26 Feb 2011 07:13:01 +0000 (07:13 +0000)]
adding the variables count to the statistics in the expr manager

13 years agoadding statistics about how many different kinds of expressions we have created in...
Dejan Jovanović [Sat, 26 Feb 2011 05:40:55 +0000 (05:40 +0000)]
adding statistics about how many different kinds of expressions we have created in the expression manager.
this is useful, for example, with --parse-only, to figure out a bit of problem structure

13 years ago- This commit adds some debugging information to ArithPriorityQueue.
Tim King [Fri, 25 Feb 2011 19:28:48 +0000 (19:28 +0000)]
- This commit adds some debugging information to ArithPriorityQueue.
- 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).

13 years agoslicing manager is not breaking the old regressions, time to sync
Dejan Jovanović [Fri, 25 Feb 2011 02:11:14 +0000 (02:11 +0000)]
slicing manager is not breaking the old regressions, time to sync

13 years ago- Adds an additional round of checks for a conflict after the difference heuristic...
Tim King [Thu, 24 Feb 2011 23:00:08 +0000 (23:00 +0000)]
- Adds an additional round of checks for a conflict after the difference heuristic round has been completed.  This happens immediately before switching to the variable order round.

13 years ago- Adds an additional mode to ArithPriorityQueue, Collection. Collection is a mode...
Tim King [Thu, 24 Feb 2011 20:36:35 +0000 (20:36 +0000)]
- Adds an additional mode to ArithPriorityQueue, Collection. Collection is a 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.

13 years ago- Changes ArithPriorityQueue to use stl::vector<>'s plus stl's heap algorithms instea...
Tim King [Thu, 24 Feb 2011 16:52:15 +0000 (16:52 +0000)]
- Changes ArithPriorityQueue to use stl::vector<>'s plus stl's heap 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.

13 years ago- Adds column based iterators.
Tim King [Tue, 22 Feb 2011 01:13:56 +0000 (01:13 +0000)]
- Adds column based iterators.

13 years ago- Adds the ArithPriorityQueue class. The ArithPriorityQueue class provides an abstrac...
Tim King [Mon, 21 Feb 2011 19:15:33 +0000 (19:15 +0000)]
- Adds the ArithPriorityQueue class. The ArithPriorityQueue class provides an abstraction to the previous priority queues representing the 2 different pivoting rules.

13 years ago- Adds the statistic d_avgNumRowsNotContainingOnPivot.
Tim King [Mon, 21 Feb 2011 00:22:18 +0000 (00:22 +0000)]
- Adds the statistic d_avgNumRowsNotContainingOnPivot.
- Removed a bug in row counting in row counting.

13 years agoChanges:
Tim King [Sat, 19 Feb 2011 00:22:34 +0000 (00:22 +0000)]
Changes:
- The Tableau is now in charge of managing what variables are basic in a unified manner. Specifically, TheoryArith::d_basicManager was merged into Tableau::d_basicVariables.

13 years agoChanges:
Tim King [Fri, 18 Feb 2011 23:28:19 +0000 (23:28 +0000)]
Changes:
- ArithVar is no longer an attribute
- RowVector's destructor reduces the row count of its variables upon.
- Tableau's destructor now free its rows instead of leaking memory.
- Added ability to convert ReducedRowVectors into equivalent Nodes.
- getValue() should work again.

13 years agoThis commit merges the branch branches/arithmetic/quick-row-has into trunk. quick...
Tim King [Thu, 17 Feb 2011 21:30:57 +0000 (21:30 +0000)]
This commit merges the branch branches/arithmetic/quick-row-has into trunk. quick-row-has has an optimization to make checking if a variable is in a row faster.

13 years agoThis commit is the promised clean up after removing row ejection.
Tim King [Thu, 17 Feb 2011 18:22:16 +0000 (18:22 +0000)]
This commit is the promised clean up after removing row ejection.

13 years agoRemoved ActivityMonitor from arithmetic. This was only used for row ejection, and...
Tim King [Thu, 17 Feb 2011 18:00:30 +0000 (18:00 +0000)]
Removed ActivityMonitor from arithmetic. This was only used for row ejection, and is now superfluous.

13 years agoRow ejection is now completely disabled. Another commit cleaning this one up will...
Tim King [Thu, 17 Feb 2011 17:46:31 +0000 (17:46 +0000)]
Row ejection is now completely disabled. Another commit cleaning this one up will follow shortly.

13 years agoRemoved vestigial normal form notes file from src/theory/arith/Makefile.am. Should...
Tim King [Thu, 17 Feb 2011 17:41:15 +0000 (17:41 +0000)]
Removed vestigial normal form notes file from src/theory/arith/Makefile.am. Should have been removed earlier.

13 years agosome unit tests to work on slicing
Dejan Jovanović [Thu, 17 Feb 2011 05:27:48 +0000 (05:27 +0000)]
some unit tests to work on slicing

13 years agoI replaced the pattern "x = x + y;" with "x += y;" in a few places in DeltaRational...
Tim King [Thu, 17 Feb 2011 01:10:38 +0000 (01:10 +0000)]
I replaced the pattern "x = x + y;" with "x += y;" in a few places in DeltaRational. This addresses a point that came up in the code review.

13 years agoUpdates based on the group code review of arithmetic on 2011-02-15. The only substan...
Tim King [Thu, 17 Feb 2011 01:02:06 +0000 (01:02 +0000)]
Updates based on the group code review of arithmetic on 2011-02-15.  The only substantive change is that UnatePropagator no longer uses attributes. The rest is comments and other beatification.

13 years agoDeleting depricated files.
Tim King [Thu, 17 Feb 2011 00:55:11 +0000 (00:55 +0000)]
Deleting depricated files.

13 years agogetting ready for slicing bitvectors
Dejan Jovanović [Thu, 17 Feb 2011 00:29:26 +0000 (00:29 +0000)]
getting ready for slicing bitvectors

13 years agoOverview of the changes:
Tim King [Wed, 16 Feb 2011 23:23:04 +0000 (23:23 +0000)]
Overview of the changes:
- Preparing to remove row ejection from the code base!
- Checks for conflicts immediately after a pivot to avoid potentially wasteful search.
- Added arithvar_set.h. This replaces ArithVarSet that was previously in the Tableau, and ArithVarDenseSet.
- Removes variables that have no preregistered bounds during presolve().
- Theory::isLeafOf() currently returns true for atoms. (I was unaware.) I modified Variable::isMember() to account for this exclude atoms.
- Added statistics all over the place.

This commit effects both boolean search and simplex search so expect running times to go all over the place. The time differences should be roughly as follows:
http://goedel.cims.nyu.edu/regress-results/compare_jobs.php?job_id=1486&reference_id=1447&p=10&category=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,29

13 years agoupdates for the rewriter, added some statistics
Dejan Jovanović [Wed, 16 Feb 2011 01:26:26 +0000 (01:26 +0000)]
updates for the rewriter, added some statistics

13 years agoReverses the order of the d_possiblyInconsistent queue. (It is that old termination...
Tim King [Mon, 14 Feb 2011 02:47:01 +0000 (02:47 +0000)]
Reverses the order of the d_possiblyInconsistent queue. (It is that old termination bug again. *le sigh*)

13 years ago3 heuristics were added to arithmetic. A heuristic for detecting an encoding of min...
Tim King [Sun, 13 Feb 2011 21:19:20 +0000 (21:19 +0000)]
3 heuristics were added to arithmetic. A heuristic for detecting an encoding of min added to static learning in LRA. A heuristic added for when the true branch and false branch are both constants (also in static learning). A heuristic for checking whether any variables begin in conflict before pivoting.

13 years agofix for build errors
Dejan Jovanović [Wed, 5 Jan 2011 19:12:54 +0000 (19:12 +0000)]
fix for build errors

13 years agoCommit for the theory engine and rewriter changes. Changes are substantial and not...
Dejan Jovanović [Wed, 5 Jan 2011 03:21:35 +0000 (03:21 +0000)]
Commit for the theory engine and rewriter changes. Changes are substantial and not yet finalized but I need to put it in to work further with the theory writers. Please check the files that you 'own'. Any comments or discussion is welcome. Further details will be coming in a follow up email later.

13 years agotls.h, rational.h, and integer.h are only re-generated if changed. this obviates...
Morgan Deters [Fri, 17 Dec 2010 23:09:15 +0000 (23:09 +0000)]
tls.h, rational.h, and integer.h are only re-generated if changed.  this obviates the need for a full rebuild just because you re-./configured.

13 years agominor fixes for correct doxygen output
Morgan Deters [Thu, 16 Dec 2010 00:36:53 +0000 (00:36 +0000)]
minor fixes for correct doxygen output

13 years agomake some CC module methods private that should not have been public
Morgan Deters [Tue, 14 Dec 2010 21:27:38 +0000 (21:27 +0000)]
make some CC module methods private that should not have been public

13 years agocongruence closure module now supports things other than APPLY_UF; ported from "array...
Morgan Deters [Tue, 14 Dec 2010 21:07:46 +0000 (21:07 +0000)]
congruence closure module now supports things other than APPLY_UF; ported from "arrays" branch to trunk

13 years agopermit PARAMETERIZED operators to be zero-ary
Morgan Deters [Tue, 14 Dec 2010 19:37:35 +0000 (19:37 +0000)]
permit PARAMETERIZED operators to be zero-ary

13 years agofix to static learning application in UF, resolves bug# 239
Morgan Deters [Tue, 14 Dec 2010 01:04:00 +0000 (01:04 +0000)]
fix to static learning application in UF, resolves bug# 239

13 years agoChangin the get() semantics to a CDQeue-sque semantics.
Dejan Jovanović [Wed, 24 Nov 2010 18:50:54 +0000 (18:50 +0000)]
Changin the get() semantics to a CDQeue-sque semantics.

13 years agoMerge from ufprop branch, including:
Morgan Deters [Fri, 19 Nov 2010 01:37:55 +0000 (01:37 +0000)]
Merge from ufprop branch, including:

* Theory::staticLearning() for statically adding new T-stuff before
  normal preprocessing.  UF's staticLearning() does transitivity of
  equality/iff, solving the diamonds.

* more aggressive T-propagation for UF

* new KEEP_STATISTIC macro to hide Theories from having to
  register/deregister statistics (and also has the advantage of
  keeping the statistic type, field name, and the 'tag' used to output
  the statistic in the same place---instead of scattered in the theory
  definition and constructor initializer list.  See documentation for
  KEEP_STATISTIC in src/util/stats.h for more of an explanation).

* more statistics for UF

* restart notifications from SAT (through TheoryEngine) via
  Theory::notifyRestart()

* StackingMap and UnionFind unit tests

* build fixes/adjustments

* code cleanup; minor other improvements

13 years agoadd statistics support information to --show-config
Morgan Deters [Fri, 19 Nov 2010 00:12:17 +0000 (00:12 +0000)]
add statistics support information to --show-config

13 years agosmall changes to documentation; also, '\''make doc'\'' doesn't build dot graphs ...
Morgan Deters [Thu, 18 Nov 2010 03:57:52 +0000 (03:57 +0000)]
small changes to documentation; also, '\''make doc'\'' doesn't build dot graphs (but nightly build system will produce them)

13 years agofix improper CongruenceClosureWhite test by merging from a uf branch; fixes the night...
Morgan Deters [Wed, 17 Nov 2010 07:22:35 +0000 (07:22 +0000)]
fix improper CongruenceClosureWhite test by merging from a uf branch; fixes the nightly test failure

13 years agoadd some stats to UF/CC
Morgan Deters [Wed, 17 Nov 2010 02:45:13 +0000 (02:45 +0000)]
add some stats to UF/CC

13 years agoThe "UF engineering issues" release, after much profiling.
Morgan Deters [Wed, 17 Nov 2010 01:39:37 +0000 (01:39 +0000)]
The "UF engineering issues" release, after much profiling.

* swap in backtracking data structures (that use and maintain their own
  undo stack) in some places instead of the usual Context-aware
  paradigm (MUCH faster).

* cosmetic changes to UF, CC modules.

13 years agoAdded Theory::presolve().
Tim King [Tue, 16 Nov 2010 21:11:11 +0000 (21:11 +0000)]
Added Theory::presolve().

13 years agoSmtEngine now fails with a ModalException if --incremental is not enabled
Morgan Deters [Tue, 16 Nov 2010 19:18:19 +0000 (19:18 +0000)]
SmtEngine now fails with a ModalException if --incremental is not enabled
but a push/pop or multiple query is attempted (previously it could give
incorrect answers)

Also, fix some multi-query and push-pop tests that had wrong answers, and
support a new "% COMMAND-LINE: " gesture in regression tests so that a
test can pass additional, specific command line flags it wants to run
with (here, --incremental).

Also fix mkbuilddir script for when it's called from contrib/switch-config.

13 years agofix function signatures
Morgan Deters [Tue, 16 Nov 2010 00:20:30 +0000 (00:20 +0000)]
fix function signatures

13 years agocleanup from today's commits: delegate as-yet-unimplemented prettyprinters in a bette...
Morgan Deters [Mon, 15 Nov 2010 23:58:41 +0000 (23:58 +0000)]
cleanup from today's commits: delegate as-yet-unimplemented prettyprinters in a better way; fix arith Makefile