* Node::isAtomic() now looks at an "atomic" attribute of arguments
authorMorgan Deters <mdeters@gmail.com>
Sun, 4 Apr 2010 19:55:47 +0000 (19:55 +0000)
committerMorgan Deters <mdeters@gmail.com>
Sun, 4 Apr 2010 19:55:47 +0000 (19:55 +0000)
commit42c58baf0a2a96c1f3bd797d64834d02adfb9a59
treea65529c9cd8399c8e78a4501eace01c150336942
parent73be7b6b5a9c98cc5a32dcfb3050b9656bf10243
* Node::isAtomic() now looks at an "atomic" attribute of arguments
  instead of assuming it's atomic based on kind.  Atomicity is
  determined at node building time.  Fixes bug #81.  If this is
  determined to make node building too slow, we can allocate another
  attribute "AtomicHasBeenComputed" to lazily compute atomicity.

* TheoryImpl<> has gone away.  Theory implementations now derive from
  Theory directly and share a single RegisteredAttr attribute for term
  registration (which shouldn't overlap: every term is "owned" by
  exactly one Theory).  Fixes bug #79.

* Additional atomicity tests in ExprBlack unit test.

* More appropriate whitebox testing for attribute ID assignment
  (AttributeWhite unit test).

* Better (and more correct) assertion checking in NodeBuilderBlack.

* run-regression script now checks exit status against what's provided
  in "% EXIT: " gesture in .cvc input files, and stderr against
  "% EXPECT-ERROR: ".  These can be used to support intended failures.
  Fixes bug #84.  Also add "% EXIT: " gestures to all .cvc regressions
  in repository.

* Solved some "control reaches end of non-void function" warnings in
  src/parser/bounded_token_buffer.cpp by replacing
  "AlwaysAssert(false)" with "Unreachable()" (which is known
  statically to never return normally).

* Regression tests now use the cvc4 binary under
  builds/$(CURRENT_BUILD)/src/main instead of the one in bin/ which
  may not be properly installed yet at that point of the build.
  (Partially fixes bug #46.)

* -fvisibility=hidden is now included by configure.ac instead of each
   Makefile.am, which will make it easier to support platforms
   (e.g. cygwin) that do things a different way.

* TheoryUF code formatting.  (re: my code review bug #64)

* CDMap<> is leaking memory again, pending a fix for bug #85 in the
  context subsystem.  (To avoid serious errors, can't free context
  objects.)

* add ContextWhite unit test for bug #85 (though it's currently
  "defanged," awaiting the bugfix)

* Minor documentation, other cleanup.
113 files changed:
config/antlr.m4
configure.ac
src/Makefile.am
src/context/Makefile.am
src/context/cdmap.h
src/context/context.h
src/expr/Makefile.am
src/expr/metakind_template.h
src/expr/mkexpr
src/expr/mkmetakind
src/expr/node.h
src/expr/node_manager.h
src/main/main.cpp
src/parser/Makefile.am
src/parser/bounded_token_buffer.cpp
src/parser/cvc/Makefile.am
src/parser/smt/Makefile.am
src/prop/Makefile.am
src/prop/minisat/Makefile.am
src/smt/Makefile.am
src/theory/Makefile.am
src/theory/arith/Makefile.am
src/theory/arith/theory_arith.h
src/theory/arrays/Makefile.am
src/theory/arrays/theory_arrays.h
src/theory/booleans/Makefile.am
src/theory/booleans/theory_bool.h
src/theory/bv/Makefile.am
src/theory/bv/theory_bv.h
src/theory/theory.cpp
src/theory/theory.h
src/theory/uf/Makefile.am
src/theory/uf/theory_uf.cpp
src/theory/uf/theory_uf.h
src/util/Assert.cpp
src/util/Makefile.am
src/util/configuration.cpp
test/regress/regress0/Makefile.am
test/regress/regress0/boolean-prec.cvc
test/regress/regress0/boolean.cvc
test/regress/regress0/bug1.cvc
test/regress/regress0/bug32.cvc
test/regress/regress0/error.cvc [new file with mode: 0644]
test/regress/regress0/hole6.cvc
test/regress/regress0/logops.01.cvc
test/regress/regress0/logops.02.cvc
test/regress/regress0/logops.03.cvc
test/regress/regress0/logops.04.cvc
test/regress/regress0/logops.05.cvc
test/regress/regress0/precedence/Makefile.am
test/regress/regress0/precedence/and-not.cvc
test/regress/regress0/precedence/and-xor.cvc
test/regress/regress0/precedence/eq-fun.cvc
test/regress/regress0/precedence/iff-assoc.cvc
test/regress/regress0/precedence/iff-implies.cvc
test/regress/regress0/precedence/implies-assoc.cvc
test/regress/regress0/precedence/implies-iff.cvc
test/regress/regress0/precedence/implies-or.cvc
test/regress/regress0/precedence/not-and.cvc
test/regress/regress0/precedence/not-eq.cvc
test/regress/regress0/precedence/or-implies.cvc
test/regress/regress0/precedence/or-xor.cvc
test/regress/regress0/precedence/xor-and.cvc
test/regress/regress0/precedence/xor-assoc.cvc
test/regress/regress0/precedence/xor-or.cvc
test/regress/regress0/queries0.cvc
test/regress/regress0/simple.cvc
test/regress/regress0/smallcnf.cvc
test/regress/regress0/test11.cvc
test/regress/regress0/test12.cvc
test/regress/regress0/test9.cvc
test/regress/regress0/uf/Makefile.am
test/regress/regress0/uf/simple.01.cvc
test/regress/regress0/uf/simple.02.cvc
test/regress/regress0/uf/simple.03.cvc
test/regress/regress0/uf/simple.04.cvc
test/regress/regress0/uf20-03.cvc
test/regress/regress0/wiki.01.cvc
test/regress/regress0/wiki.02.cvc
test/regress/regress0/wiki.03.cvc
test/regress/regress0/wiki.04.cvc
test/regress/regress0/wiki.05.cvc
test/regress/regress0/wiki.06.cvc
test/regress/regress0/wiki.07.cvc
test/regress/regress0/wiki.08.cvc
test/regress/regress0/wiki.09.cvc
test/regress/regress0/wiki.10.cvc
test/regress/regress0/wiki.11.cvc
test/regress/regress0/wiki.12.cvc
test/regress/regress0/wiki.13.cvc
test/regress/regress0/wiki.14.cvc
test/regress/regress0/wiki.15.cvc
test/regress/regress0/wiki.16.cvc
test/regress/regress0/wiki.17.cvc
test/regress/regress0/wiki.18.cvc
test/regress/regress0/wiki.19.cvc
test/regress/regress0/wiki.20.cvc
test/regress/regress0/wiki.21.cvc
test/regress/regress1/Makefile.am
test/regress/regress1/hole7.cvc
test/regress/regress1/hole8.cvc
test/regress/regress2/Makefile.am
test/regress/regress2/hole9.cvc
test/regress/regress3/Makefile.am
test/regress/regress3/hole10.cvc
test/regress/run_regression
test/unit/Makefile.am
test/unit/context/cdmap_black.h
test/unit/context/context_white.h [new file with mode: 0644]
test/unit/expr/attribute_white.h
test/unit/expr/expr_black.h
test/unit/expr/node_builder_black.h
test/unit/theory/theory_black.h