diff options
author | Andrew Reynolds <andrew.j.reynolds@gmail.com> | 2021-01-15 15:19:43 -0600 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-01-15 15:19:43 -0600 |
commit | de79f1ad325036ca90be9144a74606310b5dab9b (patch) | |
tree | ff025f0ccc846073327b1ad823eb9d255f4a8843 /src/smt | |
parent | eb6155c5f078a26b7cdddddad6e209fad0f825f8 (diff) |
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.
Diffstat (limited to 'src/smt')
-rw-r--r-- | src/smt/process_assertions.cpp | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/src/smt/process_assertions.cpp b/src/smt/process_assertions.cpp index 6d6c81e3c..0c01abbbb 100644 --- a/src/smt/process_assertions.cpp +++ b/src/smt/process_assertions.cpp @@ -24,6 +24,7 @@ #include "options/quantifiers_options.h" #include "options/sep_options.h" #include "options/smt_options.h" +#include "options/strings_options.h" #include "options/uf_options.h" #include "preprocessing/assertion_pipeline.h" #include "preprocessing/preprocessing_pass_registry.h" @@ -243,7 +244,10 @@ bool ProcessAssertions::apply(Assertions& as) d_passes["fun-def-fmf"]->apply(&assertions); } } - + if (!options::stringLazyPreproc()) + { + d_passes["strings-eager-pp"]->apply(&assertions); + } if (options::sortInference() || options::ufssFairnessMonotone()) { d_passes["sort-inference"]->apply(&assertions); |