summaryrefslogtreecommitdiff
path: root/src/theory/strings/theory_strings.cpp
diff options
context:
space:
mode:
authorAndrew Reynolds <andrew.j.reynolds@gmail.com>2018-11-21 14:44:44 -0600
committerGitHub <noreply@github.com>2018-11-21 14:44:44 -0600
commit2c05402119dba7e90e24621c5768514ab2f5042c (patch)
treecec74ac8b51d20c622205bfa39e6ef6e44d510dc /src/theory/strings/theory_strings.cpp
parentb3b1fffb390d19312227d7095fb404e9e0447d95 (diff)
Support string replace all (#2704)
Diffstat (limited to 'src/theory/strings/theory_strings.cpp')
-rw-r--r--src/theory/strings/theory_strings.cpp9
1 files changed, 5 insertions, 4 deletions
diff --git a/src/theory/strings/theory_strings.cpp b/src/theory/strings/theory_strings.cpp
index 883683f52..e8b753768 100644
--- a/src/theory/strings/theory_strings.cpp
+++ b/src/theory/strings/theory_strings.cpp
@@ -144,6 +144,7 @@ TheoryStrings::TheoryStrings(context::Context* c,
getExtTheory()->addFunctionKind(kind::STRING_ITOS);
getExtTheory()->addFunctionKind(kind::STRING_STOI);
getExtTheory()->addFunctionKind(kind::STRING_STRREPL);
+ getExtTheory()->addFunctionKind(kind::STRING_STRREPLALL);
getExtTheory()->addFunctionKind(kind::STRING_STRCTN);
getExtTheory()->addFunctionKind(kind::STRING_IN_REGEXP);
getExtTheory()->addFunctionKind(kind::STRING_LEQ);
@@ -162,6 +163,7 @@ TheoryStrings::TheoryStrings(context::Context* c,
d_equalityEngine.addFunctionKind(kind::STRING_STOI);
d_equalityEngine.addFunctionKind(kind::STRING_STRIDOF);
d_equalityEngine.addFunctionKind(kind::STRING_STRREPL);
+ d_equalityEngine.addFunctionKind(kind::STRING_STRREPLALL);
}
d_zero = NodeManager::currentNM()->mkConst( Rational( 0 ) );
@@ -503,7 +505,7 @@ bool TheoryStrings::doReduction(int effort, Node n, bool& isCd)
NodeManager* nm = NodeManager::currentNM();
Assert(k == STRING_SUBSTR || k == STRING_STRCTN || k == STRING_STRIDOF
|| k == STRING_ITOS || k == STRING_STOI || k == STRING_STRREPL
- || k == STRING_LEQ);
+ || k == STRING_STRREPLALL || k == STRING_LEQ);
std::vector<Node> new_nodes;
Node res = d_preproc.simplify(n, new_nodes);
Assert(res != n);
@@ -817,9 +819,8 @@ void TheoryStrings::preRegisterTerm(TNode n) {
Kind k = n.getKind();
if( !options::stringExp() ){
if (k == kind::STRING_STRIDOF || k == kind::STRING_ITOS
- || k == kind::STRING_STOI
- || k == kind::STRING_STRREPL
- || k == kind::STRING_STRCTN
+ || k == kind::STRING_STOI || k == kind::STRING_STRREPL
+ || k == kind::STRING_STRREPLALL || k == kind::STRING_STRCTN
|| k == STRING_LEQ)
{
std::stringstream ss;
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback