Add CEGQI BV linearization of additions and equalities over additions. (#1417)
authorMathias Preiner <mathias.preiner@gmail.com>
Sat, 9 Dec 2017 01:36:15 +0000 (17:36 -0800)
committerAina Niemetz <aina.niemetz@gmail.com>
Sat, 9 Dec 2017 01:36:15 +0000 (17:36 -0800)
commit99fb7d9e0b963222574c01e0362d3720c62b825f
treed0792c0d93e44db226c5c619f1b611cbfb2b67bb
parent707571c8b4a572b9554f9068df796f1257cb587d
Add CEGQI BV linearization of additions and equalities over additions. (#1417)

Adds support for linearizing additions w.r.t. to a variable.

For example,

a * x + b + c * d * -x = e + x

is rewritten to

x * (a - c * d - 1) = e - b.

This also adds an additional rewriting rule x * x = x --> x < 2.
src/options/quantifiers_options
src/theory/bv/theory_bv_utils.cpp
src/theory/bv/theory_bv_utils.h
src/theory/quantifiers/ceg_t_instantiator.cpp
test/unit/Makefile.am
test/unit/theory/theory_quantifiers_bv_instantiator_white.h [new file with mode: 0644]