Functions and predicates over Boolean now work with --check-models and output correct
authorMorgan Deters <mdeters@gmail.com>
Tue, 27 Nov 2012 22:40:05 +0000 (22:40 +0000)
committerMorgan Deters <mdeters@gmail.com>
Tue, 27 Nov 2012 22:40:05 +0000 (22:40 +0000)
commit16d8379a9a87fe692c6f95a11300b43e4d2cba30
tree7a97c484de035ff6268d2fc572a418cd8d48faca
parent551d1d37fe9c8ec25ddeac1e37b68d39158378ea
Functions and predicates over Boolean now work with --check-models and output correct
models for such functions (though they are somewhat ugly at present).

There's still a problem with model extraction, but it's not Boolean terms' fault.
Sometimes checkModel() can report that the model is just fine, but if a user extracts
values with getValue(), they find problems with the model (i.e., it doesn't satisfy some
assertions).  This appears to be due to an asymmetry between how checkModel() works and
how Model::getValue() works.  I'll open a bugzilla report to discuss this after thinking
some more on it.

(this commit was certified error- and warning-free by the test-and-commit script.)
src/expr/expr_template.cpp
src/smt/boolean_terms.cpp
src/smt/boolean_terms.h
src/smt/model_postprocessor.cpp
src/smt/smt_engine.cpp
src/smt/smt_engine.h
src/theory/model.cpp
test/regress/regress0/Makefile.am
test/regress/regress0/boolean-terms.cvc [new file with mode: 0644]