This is a merge from the "theoryfixes+cdattrhash" branch. The changes
authorMorgan Deters <mdeters@gmail.com>
Fri, 25 Mar 2011 05:32:31 +0000 (05:32 +0000)
committerMorgan Deters <mdeters@gmail.com>
Fri, 25 Mar 2011 05:32:31 +0000 (05:32 +0000)
commita2472774f053ed0ab98f1508ebb313466b0fe29a
tree2241c713acff99b23b1b51cb33c8a7a63c5afac4
parentee36b95b8f722fe6501cc6ac635efd49ca673791
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).
66 files changed:
Makefile.am
configure.ac
src/context/cdlist_forward.h
src/context/cdmap_forward.h
src/context/cdset_forward.h
src/context/context.h
src/expr/attribute.cpp
src/expr/attribute_internals.h
src/expr/command.cpp
src/expr/declaration_scope.h
src/expr/expr_manager_template.cpp
src/expr/expr_manager_template.h
src/expr/expr_template.cpp
src/expr/node.cpp
src/expr/node_manager.h
src/expr/type.h
src/lib/clock_gettime.c
src/parser/input.h
src/parser/smt/Smt.g
src/parser/smt2/Smt2.g
src/parser/smt2/smt2.cpp
src/printer/smt2/smt2_printer.cpp
src/prop/minisat/Makefile.am
src/prop/sat.h
src/theory/arith/theory_arith.cpp
src/theory/arith/theory_arith.h
src/theory/arrays/theory_arrays.cpp
src/theory/arrays/theory_arrays.h
src/theory/booleans/theory_bool.cpp
src/theory/booleans/theory_bool.h
src/theory/builtin/theory_builtin.cpp
src/theory/builtin/theory_builtin.h
src/theory/bv/theory_bv.cpp
src/theory/bv/theory_bv.h
src/theory/bv/theory_bv_rewriter.h
src/theory/theory.h
src/theory/theory_engine.cpp
src/theory/theory_engine.h
src/theory/uf/morgan/theory_uf_morgan.cpp
src/theory/uf/morgan/theory_uf_morgan.h
src/theory/uf/theory_uf.h
src/theory/uf/tim/theory_uf_tim.cpp
src/theory/uf/tim/theory_uf_tim.h
test/Makefile.am
test/regress/Makefile.am
test/regress/regress0/Makefile.am
test/regress/regress0/arith/Makefile.am
test/regress/regress0/bv/core/Makefile.am
test/regress/regress0/lemmas/Makefile.am
test/regress/regress0/precedence/Makefile.am
test/regress/regress0/push-pop/Makefile.am
test/regress/regress0/uf/Makefile.am
test/regress/regress0/uflra/Makefile.am
test/regress/regress1/Makefile.am
test/regress/regress1/arith/Makefile.am
test/regress/regress2/Makefile.am
test/regress/regress3/Makefile.am
test/system/Makefile.am
test/system/boilerplate.cpp [new file with mode: 0644]
test/system/ouroborous.cpp [new file with mode: 0644]
test/unit/Makefile.am
test/unit/expr/attribute_white.h
test/unit/theory/theory_arith_white.h
test/unit/theory/theory_black.h
test/unit/theory/theory_engine_white.h
test/unit/theory/theory_uf_tim_white.h