summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndres Noetzli <andres.noetzli@gmail.com>2019-12-04 18:25:26 -0800
committerAndres Noetzli <andres.noetzli@gmail.com>2019-12-04 18:25:26 -0800
commitd846052e7fc66800e0fc59fa7b3c96a7ffc96f4c (patch)
treead7b141926572528d22097621b10c0b99abebc88
parent350c7043982b97494d606eca9e8f5a4c10588125 (diff)
bidir unroll
-rw-r--r--src/theory/strings/regexp_operation.cpp9
1 files changed, 6 insertions, 3 deletions
diff --git a/src/theory/strings/regexp_operation.cpp b/src/theory/strings/regexp_operation.cpp
index aaf1c864f..c6c2b3b0f 100644
--- a/src/theory/strings/regexp_operation.cpp
+++ b/src/theory/strings/regexp_operation.cpp
@@ -1172,13 +1172,16 @@ void RegExpOpr::simplifyPRegExp( Node s, Node r, std::vector< Node > &new_nodes
Node sinr = NodeManager::currentNM()->mkNode(kind::STRING_IN_REGEXP, s, r[0]);
Node sk1 = NodeManager::currentNM()->mkSkolem( "rs", s.getType(), "created for regular expression star" );
Node sk2 = NodeManager::currentNM()->mkSkolem( "rs", s.getType(), "created for regular expression star" );
+ Node sk3 = NodeManager::currentNM()->mkSkolem( "rs", s.getType(), "created for regular expression star" );
Node s1nz = sk1.eqNode(d_emptyString).negate();
- Node s2nz = sk2.eqNode(d_emptyString).negate();
+ Node s3nz = sk3.eqNode(d_emptyString).negate();
Node s1inr = NodeManager::currentNM()->mkNode(kind::STRING_IN_REGEXP, sk1, r[0]);
Node s2inrs = NodeManager::currentNM()->mkNode(kind::STRING_IN_REGEXP, sk2, r);
- Node s12 = s.eqNode(NodeManager::currentNM()->mkNode(kind::STRING_CONCAT, sk1, sk2));
+ Node s3inr = NodeManager::currentNM()->mkNode(kind::STRING_IN_REGEXP, sk3, r[0]);
+ Node s123 = s.eqNode(NodeManager::currentNM()->mkNode(kind::STRING_CONCAT, sk1, sk2, sk3));
- conc = NodeManager::currentNM()->mkNode(kind::AND, s12, s1nz, s2nz, s1inr, s2inrs);
+ std::vector<Node> concv = { s123, s1nz, s3nz, s1inr, s2inrs, s3inr };
+ conc = NodeManager::currentNM()->mkNode(kind::AND, concv);
conc = NodeManager::currentNM()->mkNode(kind::OR, se, sinr, conc);
}
break;
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback