summaryrefslogtreecommitdiff
path: root/src/smt
diff options
context:
space:
mode:
authorAndrew Reynolds <andrew.j.reynolds@gmail.com>2021-01-15 15:19:43 -0600
committerGitHub <noreply@github.com>2021-01-15 15:19:43 -0600
commitde79f1ad325036ca90be9144a74606310b5dab9b (patch)
treeff025f0ccc846073327b1ad823eb9d255f4a8843 /src/smt
parenteb6155c5f078a26b7cdddddad6e209fad0f825f8 (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.cpp6
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);
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback