UF theory bug fixes, code cleanup, and extra debugging output.
authorMorgan Deters <mdeters@gmail.com>
Thu, 19 Aug 2010 23:49:58 +0000 (23:49 +0000)
committerMorgan Deters <mdeters@gmail.com>
Thu, 19 Aug 2010 23:49:58 +0000 (23:49 +0000)
commitad24cbdb3462b2b2dd312aab2f1f33d9bbcac00e
treeb783098b4d72422826890c46870436cbeae0788d
parent29c72e0fd6d0161de275060bbd05370394f1f708
UF theory bug fixes, code cleanup, and extra debugging output.
Enabled new UF theory by default.

Added some UF regressions.

Some work on the whole equality-over-bool-removed-in-favor-of-IFF
thing.  (Congruence closure module and other things have to handle
IFF as a special case of equality, etc..)

Added pre-rewriting to TheoryBool which rewrites:

  * (IFF true x)          =>  x
  * (IFF false x)         =>  (NOT x)
  * (IFF x true)          =>  x
  * (IFF x false)         =>  (NOT x)
  * (IFF x x)             =>  true
  * (IFF x (NOT x))       =>  false
  * (IFF (NOT x) x)       =>  false

  * (ITE true x y)        =>  x
  * (ITE false x y)       =>  y
  * (ITE cond x x)        =>  x

Added post-rewriting that does all of the above, plus normalize IFF and ITE:

  * (IFF x y)             =>  (IFF y x), if y < x
  * (ITE (NOT cond) x y)  =>  (ITE cond y x)

(Note: ITEs survive the removal-of-ITEs pass only if they are Boolean-valued.)

A little more debugging output from CNF stream, context pushes/pops,
ITE removal.

Some more documentation.

Fixed some typos.
20 files changed:
src/context/context.cpp
src/main/getopt.cpp
src/prop/cnf_stream.cpp
src/theory/arith/arith_rewriter.cpp
src/theory/arith/theory_arith.cpp
src/theory/booleans/Makefile.am
src/theory/booleans/theory_bool.cpp [new file with mode: 0644]
src/theory/booleans/theory_bool.h
src/theory/builtin/theory_builtin.cpp
src/theory/theory.h
src/theory/theory_engine.cpp
src/theory/uf/morgan/theory_uf_morgan.cpp
src/theory/uf/morgan/theory_uf_morgan.h
src/util/congruence_closure.h
src/util/options.h
test/regress/regress0/uf/Makefile.am
test/regress/regress0/uf/eq_diamond14.reduced.smt
test/regress/regress0/uf/eq_diamond14.reduced2.smt [new file with mode: 0644]
test/regress/regress0/uf/pred.smt [new file with mode: 0644]
test/regress/run_regression