Always theory-preprocess lemmas (#5817)
authorAndrew Reynolds <andrew.j.reynolds@gmail.com>
Thu, 28 Jan 2021 14:25:38 +0000 (08:25 -0600)
committerGitHub <noreply@github.com>
Thu, 28 Jan 2021 14:25:38 +0000 (08:25 -0600)
commit4cd2d73366aba081a38900ddc2f4f172ce9ed2f8
tree6a7d612d6f3c66d24099fddccd6d2d761f96688a
parente986a322232ac3edcd139ec7b424291ea3d5033a
Always theory-preprocess lemmas (#5817)

This PR makes it so that theory-preprocessing is always called on lemmas. It simplifies the proof production in the theory preprocessor accordingly.

Additionally, it ensures that our theory-preprocessor is run on lemmas that are generated from term formula removal. Previously, this was not the case and in fact certain lemmas (e.g. literals within witness terms that are not in preprocessed form) would escape and be asserted to TheoryEngine. This was uncovered by a unit test failure, the corresponding regression is added in this PR.

It adds a new interface removeItes to PropEngine which is required for the (deprecated) preprocessing pass removeItes.

This PR now makes the lemma propery PREPROCESS obsolete. Further simplification is possible after this PR in non-linear arithmetic and quantifiers, where it is not necessary to distinguish 2 caches for preprocessed vs. non-preprocessed lemmas.
src/preprocessing/passes/ite_removal.cpp
src/preprocessing/passes/theory_preprocess.cpp
src/prop/prop_engine.cpp
src/prop/prop_engine.h
src/prop/theory_proxy.cpp
src/prop/theory_proxy.h
src/theory/theory_preprocessor.cpp
src/theory/theory_preprocessor.h
test/regress/CMakeLists.txt
test/regress/regress1/quantifiers/tpp-unit-fail-qbv.smt2 [new file with mode: 0644]