Implement --no-strings-lazy-pp as a preprocessing pass (#5777)
authorAndrew Reynolds <andrew.j.reynolds@gmail.com>
Fri, 15 Jan 2021 21:19:43 +0000 (15:19 -0600)
committerGitHub <noreply@github.com>
Fri, 15 Jan 2021 21:19:43 +0000 (15:19 -0600)
commitde79f1ad325036ca90be9144a74606310b5dab9b
treeff025f0ccc846073327b1ad823eb9d255f4a8843
parenteb6155c5f078a26b7cdddddad6e209fad0f825f8
Implement --no-strings-lazy-pp as a preprocessing pass (#5777)

This option eliminates extended functions in strings eagerly. This was incorrectly done at ppRewrite previously, which should not add lemmas. Instead, this makes this technique into a preprocessing pass. To do this, the interface for the strings preprocessor was cleaned to have fewer dependencies, and made to track a cache internally.

Fixes #5608, fixes #5745, fixes #5767, fixes #5771, fixes #5406.
16 files changed:
src/CMakeLists.txt
src/preprocessing/passes/rewrite.cpp
src/preprocessing/passes/strings_eager_pp.cpp [new file with mode: 0644]
src/preprocessing/passes/strings_eager_pp.h [new file with mode: 0644]
src/preprocessing/preprocessing_pass_registry.cpp
src/smt/process_assertions.cpp
src/theory/strings/extf_solver.cpp
src/theory/strings/theory_strings.cpp
src/theory/strings/theory_strings_preprocess.cpp
src/theory/strings/theory_strings_preprocess.h
test/regress/CMakeLists.txt
test/regress/regress0/strings/issue5608-eager-pp.smt2 [new file with mode: 0644]
test/regress/regress0/strings/issue5745-eager-pp.smt2 [new file with mode: 0644]
test/regress/regress0/strings/issue5767-eager-pp.smt2 [new file with mode: 0644]
test/regress/regress0/strings/issue5771-eager-pp.smt2 [new file with mode: 0644]
test/regress/regress1/strings/issue5406-eager-pp.smt2 [new file with mode: 0644]