summaryrefslogtreecommitdiff
path: root/src/theory/strings/skolem_cache.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/theory/strings/skolem_cache.cpp')
-rw-r--r--src/theory/strings/skolem_cache.cpp20
1 files changed, 20 insertions, 0 deletions
diff --git a/src/theory/strings/skolem_cache.cpp b/src/theory/strings/skolem_cache.cpp
index cce4074ee..24109c980 100644
--- a/src/theory/strings/skolem_cache.cpp
+++ b/src/theory/strings/skolem_cache.cpp
@@ -126,6 +126,17 @@ SkolemCache::normalizeStringSkolem(SkolemId id, Node a, Node b)
PLUS, nm->mkNode(STRING_LENGTH, pre), nm->mkNode(STRING_LENGTH, b)));
}
+ if (id == SK_ID_V_SPT_X) {
+ id = SK_SUFFIX_REM;
+ b = Rewriter::rewrite(nm->mkNode(STRING_LENGTH, b));
+ } else if (id == SK_ID_V_SPT_Y) {
+ id = SK_SUFFIX_REM;
+ b = Rewriter::rewrite(nm->mkNode(STRING_LENGTH, b));
+ } else if (id == SK_ID_V_SPT_REV) {
+ id = SK_PREFIX;
+ b = Rewriter::rewrite(nm->mkNode(MINUS, nm->mkNode(STRING_LENGTH, a), nm->mkNode(STRING_LENGTH, b)));
+ }
+
if (id == SK_ID_C_SPT) {
id = SK_SUFFIX_REM;
b = Rewriter::rewrite(nm->mkNode(STRING_LENGTH, b));
@@ -136,6 +147,15 @@ SkolemCache::normalizeStringSkolem(SkolemId id, Node a, Node b)
b = nm->mkConst(Rational(1));
}
+ if (id == SK_ID_DC_SPT) {
+ id = SK_PREFIX;
+ b = nm->mkConst(Rational(1));
+ }
+ if (id == SK_ID_DC_SPT_REM) {
+ id = SK_SUFFIX_REM;
+ b = nm->mkConst(Rational(1));
+ }
+
if (id == SK_ID_DEQ_Y) {
id = SK_PREFIX;
b = Rewriter::rewrite(nm->mkNode(STRING_LENGTH, b));
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback