summaryrefslogtreecommitdiff
path: root/src/theory/inference_id.cpp
diff options
context:
space:
mode:
authorAndrew Reynolds <andrew.j.reynolds@gmail.com>2021-10-24 13:31:56 -0500
committerGitHub <noreply@github.com>2021-10-24 13:31:56 -0500
commitc99aa755bd62205b3f7381e6d67c7a1f2d37a3a2 (patch)
treee6c16ea6babc4463dc2f4edae1b07855f3a219c2 /src/theory/inference_id.cpp
parentf493ea93e925e3ad9bfe0036e1d876d5600d5b30 (diff)
Add new eager conflict detection in strings for integer equivalence classes (#7453)
Required to address Zelkova bottlenecks. This generalizes the methods for eager prefix/suffix conflicts for strings to do eager lower/upper bound conflicts for integer equivalence classes based on string-specific reasoning about length terms. This avoids cases where Simplex fails to show a concise conflict due to not having access to string reasoning (e.g. strings::ArithEntail) for arithmetic bounds. The approach can still be improved by inferring fixed length for regular expression memberships, analogous to what is done for prefix/suffix conflicts. It also changes EqcInfo to store (str.len x) instead of x for length terms.
Diffstat (limited to 'src/theory/inference_id.cpp')
-rw-r--r--src/theory/inference_id.cpp2
1 files changed, 2 insertions, 0 deletions
diff --git a/src/theory/inference_id.cpp b/src/theory/inference_id.cpp
index 28557e472..af753dd26 100644
--- a/src/theory/inference_id.cpp
+++ b/src/theory/inference_id.cpp
@@ -429,6 +429,8 @@ const char* toString(InferenceId i)
case InferenceId::STRINGS_CTN_POS: return "STRINGS_CTN_POS";
case InferenceId::STRINGS_REDUCTION: return "STRINGS_REDUCTION";
case InferenceId::STRINGS_PREFIX_CONFLICT: return "STRINGS_PREFIX_CONFLICT";
+ case InferenceId::STRINGS_ARITH_BOUND_CONFLICT:
+ return "STRINGS_ARITH_BOUND_CONFLICT";
case InferenceId::STRINGS_REGISTER_TERM_ATOMIC:
return "STRINGS_REGISTER_TERM_ATOMIC";
case InferenceId::STRINGS_REGISTER_TERM: return "STRINGS_REGISTER_TERM";
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback