Learn equalities involving Boolean variables (#6323)
authorAndres Noetzli <andres.noetzli@gmail.com>
Fri, 9 Apr 2021 18:01:23 +0000 (11:01 -0700)
committerGitHub <noreply@github.com>
Fri, 9 Apr 2021 18:01:23 +0000 (13:01 -0500)
commit9ece5fa56493692aff1a17c73e0039fd1b232a06
treeff0783ad27e6eed8989cee105e9fdc76f8f58efd
parent40abcb2a5cdd63b331446da6feae0148ad8bb2c5
Learn equalities involving Boolean variables (#6323)

Previously, the circuit propagator was not learning literals of the form (= x t) where x is Boolean, since this term was not treated as a theory literal.
This commit changes that, which improves performance significantly, since it
allows the elimination of Boolean variables, which, in turn, can make the
justification heuristic much more effective.

Signed-off-by: Andres Noetzli noetzli@amazon.com
src/theory/booleans/circuit_propagator.cpp
src/theory/theory.cpp
test/regress/CMakeLists.txt