summaryrefslogtreecommitdiff
path: root/src/theory/strings/theory_strings.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/theory/strings/theory_strings.cpp')
-rw-r--r--src/theory/strings/theory_strings.cpp19
1 files changed, 19 insertions, 0 deletions
diff --git a/src/theory/strings/theory_strings.cpp b/src/theory/strings/theory_strings.cpp
index 9e14d6a3f..5b7c38361 100644
--- a/src/theory/strings/theory_strings.cpp
+++ b/src/theory/strings/theory_strings.cpp
@@ -264,6 +264,9 @@ bool TheoryStrings::collectModelInfo(TheoryModel* m)
// assert the (relevant) portion of the equality engine to the model
if (!m->assertEqualityEngine(&d_equalityEngine, &termSet))
{
+ Unreachable()
+ << "TheoryStrings::collectModelInfo: failed to assert equality engine"
+ << std::endl;
return false;
}
@@ -423,6 +426,8 @@ bool TheoryStrings::collectModelInfoType(
uint32_t currLen =
lts_values[i].getConst<Rational>().getNumerator().toUnsignedInt();
std::unique_ptr<SEnumLen> sel;
+ Trace("strings-model") << "Cardinality of alphabet is "
+ << utils::getAlphabetCardinality() << std::endl;
if (tn.isString())
{
sel.reset(new StringEnumLen(
@@ -474,7 +479,10 @@ bool TheoryStrings::collectModelInfoType(
Node spl = nm->mkNode(OR, sl, sl.negate());
++(d_statistics.d_lemmasCmiSplit);
d_out->lemma(spl);
+ Trace("strings-lemma")
+ << "Strings::CollectModelInfoSplit: " << spl << std::endl;
}
+ // we added a lemma, so can return here
return false;
}
c = sel->getCurrent();
@@ -491,6 +499,11 @@ bool TheoryStrings::collectModelInfoType(
processed[eqc] = c;
if (!m->assertEquality(eqc, c, true))
{
+ // this should never happen due to the model soundness argument
+ // for strings
+ Unreachable()
+ << "TheoryStrings::collectModelInfoType: Inconsistent equality"
+ << std::endl;
return false;
}
}
@@ -534,6 +547,12 @@ bool TheoryStrings::collectModelInfoType(
processed[nodes[i]] = cc;
if (!m->assertEquality(nodes[i], cc, true))
{
+ // this should never happen due to the model soundness argument
+ // for strings
+
+ Unreachable() << "TheoryStrings::collectModelInfoType: "
+ "Inconsistent equality (unprocessed eqc)"
+ << std::endl;
return false;
}
}
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback