Make flat form inferences optional in strings (#2277)
authorAndrew Reynolds <andrew.j.reynolds@gmail.com>
Tue, 7 Aug 2018 04:04:21 +0000 (23:04 -0500)
committerGitHub <noreply@github.com>
Tue, 7 Aug 2018 04:04:21 +0000 (23:04 -0500)
src/options/strings_options.toml
src/theory/strings/theory_strings.cpp

index 66b312737a738a94710771900d83c1700bb4d1cd..3498b61837a715d2a40525defc0c9214b5b37ff9 100644 (file)
@@ -208,3 +208,12 @@ header = "options/strings_options.h"
   default    = "false"
   read_only  = true
   help       = "do length propagation based on constant splits"
+
+[[option]]
+  name       = "stringFlatForms"
+  category   = "regular"
+  long       = "strings-ff"
+  type       = "bool"
+  default    = "true"
+  read_only  = true
+  help       = "do flat form inferences"
index 2ce3258622075cf8ce9108dcb3dd74a76897f40a..1d853a7544dec44ef4f868cae6483a6423ce3019 100644 (file)
@@ -4915,7 +4915,10 @@ void TheoryStrings::initializeStrategy()
     addStrategyStep(CHECK_CONST_EQC);
     addStrategyStep(CHECK_EXTF_EVAL, 0);
     addStrategyStep(CHECK_CYCLES);
-    addStrategyStep(CHECK_FLAT_FORMS);
+    if (options::stringFlatForms())
+    {
+      addStrategyStep(CHECK_FLAT_FORMS);
+    }
     addStrategyStep(CHECK_EXTF_REDUCTION, 1);
     if (options::stringEager())
     {