summaryrefslogtreecommitdiff
path: root/src/theory/strings/core_solver.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/theory/strings/core_solver.cpp')
-rw-r--r--src/theory/strings/core_solver.cpp11
1 files changed, 5 insertions, 6 deletions
diff --git a/src/theory/strings/core_solver.cpp b/src/theory/strings/core_solver.cpp
index d4d3761d8..b5e15a129 100644
--- a/src/theory/strings/core_solver.cpp
+++ b/src/theory/strings/core_solver.cpp
@@ -2550,6 +2550,7 @@ void CoreSolver::checkNormalFormsDeq()
const context::CDList<Node>& deqs = d_state.getDisequalityList();
+ NodeManager* nm = NodeManager::currentNM();
//for each pair of disequal strings, must determine whether their lengths are equal or disequal
for (const Node& eq : deqs)
{
@@ -2564,9 +2565,8 @@ void CoreSolver::checkNormalFormsDeq()
EqcInfo* ei = d_state.getOrMakeEqcInfo(n[i], false);
lt[i] = ei ? ei->d_lengthTerm : Node::null();
if( lt[i].isNull() ){
- lt[i] = eq[i];
+ lt[i] = nm->mkNode(STRING_LENGTH, eq[i]);
}
- lt[i] = NodeManager::currentNM()->mkNode( kind::STRING_LENGTH, lt[i] );
}
if (!d_state.areEqual(lt[0], lt[1]) && !d_state.areDisequal(lt[0], lt[1]))
{
@@ -2642,14 +2642,13 @@ void CoreSolver::checkLengthsEqc() {
<< "Process length constraints for " << d_strings_eqc[i] << std::endl;
// check if there is a length term for this equivalence class
EqcInfo* ei = d_state.getOrMakeEqcInfo(d_strings_eqc[i], false);
- Node lt = ei ? ei->d_lengthTerm : Node::null();
- if (lt.isNull())
+ Node llt = ei ? ei->d_lengthTerm : Node::null();
+ if (llt.isNull())
{
Trace("strings-process-debug")
<< "No length term for eqc " << d_strings_eqc[i] << std::endl;
continue;
}
- Node llt = NodeManager::currentNM()->mkNode(kind::STRING_LENGTH, lt);
// now, check if length normalization has occurred
if (ei->d_normalizedLength.get().isNull())
{
@@ -2669,7 +2668,7 @@ void CoreSolver::checkLengthsEqc() {
// if not, add the lemma
std::vector<Node> ant;
ant.insert(ant.end(), nfi.d_exp.begin(), nfi.d_exp.end());
- ant.push_back(lt.eqNode(nfi.d_base));
+ ant.push_back(llt[0].eqNode(nfi.d_base));
Node lc = NodeManager::currentNM()->mkNode(kind::STRING_LENGTH, nf);
Node lcr = rewrite(lc);
Trace("strings-process-debug")
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback