summaryrefslogtreecommitdiff
path: root/src/theory/strings/theory_strings.cpp
diff options
context:
space:
mode:
authorAndres Noetzli <andres.noetzli@gmail.com>2020-02-07 19:37:57 -0800
committerAndres Noetzli <andres.noetzli@gmail.com>2020-02-07 19:37:57 -0800
commit4a3300f1b44d9827b109568fe2b2d0732dedfdf8 (patch)
treed4e9808e8c56d6e50d7ece32a8307fe39ef60df3 /src/theory/strings/theory_strings.cpp
parent264f1bee97fd299e19ef6d99271c75031b6cbd6a (diff)
Detect conflict quicklyquickLenConflict
Diffstat (limited to 'src/theory/strings/theory_strings.cpp')
-rw-r--r--src/theory/strings/theory_strings.cpp13
1 files changed, 11 insertions, 2 deletions
diff --git a/src/theory/strings/theory_strings.cpp b/src/theory/strings/theory_strings.cpp
index 7ebc5f35f..33377e7f5 100644
--- a/src/theory/strings/theory_strings.cpp
+++ b/src/theory/strings/theory_strings.cpp
@@ -2736,14 +2736,23 @@ void TheoryStrings::processSimpleNEq(NormalForm& nfi,
if (d_state.areEqual(length_term_i, length_term_j))
{
Trace("strings-solve-debug") << "Simple Case 2 : string lengths are equal" << std::endl;
- Node eq = nfiv[index].eqNode(nfjv[index]);
//eq = Rewriter::rewrite( eq );
Node length_eq = length_term_i.eqNode( length_term_j );
//temp_exp.insert(temp_exp.end(), curr_exp.begin(), curr_exp.end() );
NormalForm::getExplanationForPrefixEq(
nfi, nfj, index, index, temp_exp);
temp_exp.push_back(length_eq);
- d_im.sendInference(temp_exp, eq, "N_Unify");
+
+ if (d_state.areDisequal(nfiv[index], nfjv[index]))
+ {
+ temp_exp.push_back(nfiv[index].eqNode(nfjv[index]).negate());
+ d_im.sendInference(temp_exp, d_false, "N_Unify");
+ }
+ else
+ {
+ Node eq = nfiv[index].eqNode(nfjv[index]);
+ d_im.sendInference(temp_exp, eq, "N_Unify");
+ }
return;
}
else if ((nfiv[index].getKind() != CONST_STRING
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback