summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Reynolds <andrew.j.reynolds@gmail.com>2021-04-26 02:34:14 -0500
committerGitHub <noreply@github.com>2021-04-26 07:34:14 +0000
commitb6d3dc39fcd1cd71d263a4ff6949d77d671c73b9 (patch)
tree8707c0bbd4913952bb79f1d15edba18bf9208ae0
parentf809439274390d754c158bc105f769df3a55ee42 (diff)
Do not process looping word equations over sequences (#6434)
-rw-r--r--src/theory/strings/core_solver.cpp20
1 files changed, 12 insertions, 8 deletions
diff --git a/src/theory/strings/core_solver.cpp b/src/theory/strings/core_solver.cpp
index 2abe2de82..ed220c1eb 100644
--- a/src/theory/strings/core_solver.cpp
+++ b/src/theory/strings/core_solver.cpp
@@ -1771,23 +1771,27 @@ CoreSolver::ProcessLoopResult CoreSolver::processLoop(NormalForm& nfi,
int index,
CoreInferInfo& info)
{
+ NodeManager* nm = NodeManager::currentNM();
+ Node conc;
+ const std::vector<Node>& veci = nfi.d_nf;
+ const std::vector<Node>& vecoi = nfj.d_nf;
+
+ TypeNode stype = veci[loop_index].getType();
+
if (options::stringProcessLoopMode() == options::ProcessLoopMode::ABORT)
{
throw LogicException("Looping word equation encountered.");
}
- else if (options::stringProcessLoopMode() == options::ProcessLoopMode::NONE)
+ else if (options::stringProcessLoopMode() == options::ProcessLoopMode::NONE
+ || stype.isSequence())
{
+ // note we cannot convert looping word equations into regular expressions if
+ // we are handling sequences, since there is no analog for regular
+ // expressions over sequences currently
d_im.setIncomplete(IncompleteId::STRINGS_LOOP_SKIP);
return ProcessLoopResult::SKIPPED;
}
- NodeManager* nm = NodeManager::currentNM();
- Node conc;
- const std::vector<Node>& veci = nfi.d_nf;
- const std::vector<Node>& vecoi = nfj.d_nf;
-
- TypeNode stype = veci[loop_index].getType();
-
Trace("strings-loop") << "Detected possible loop for " << veci[loop_index]
<< std::endl;
Trace("strings-loop") << " ... (X)= " << vecoi[index] << std::endl;
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback