summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAndrew Reynolds <andrew.j.reynolds@gmail.com>2020-10-23 13:03:17 -0500
committerGitHub <noreply@github.com>2020-10-23 13:03:17 -0500
commitf66e1fc33ee7549c90eabc808be5a6ef6196aaa0 (patch)
treec099d4ae91b82b182adbedfc2201a25188e9ddfc /src
parenta7aba0c8580d5153fee99b4d59345e33c39c893b (diff)
Fix related to preregistering boolean term variables in strings (#5331)
We should only add trigger predicates for string predicates, and not arbitrary Boolean terms (which can now occur since we are handling parametric sequences). This avoids a debug assertion failure reported on as a followup to #4370. In that benchmark BOOLEAN_TERM_VARIABLE was being added as a trigger predicate.
Diffstat (limited to 'src')
-rw-r--r--src/theory/strings/term_registry.cpp8
-rw-r--r--src/theory/uf/equality_engine.cpp2
2 files changed, 7 insertions, 3 deletions
diff --git a/src/theory/strings/term_registry.cpp b/src/theory/strings/term_registry.cpp
index b5b2a5a13..2b5daa476 100644
--- a/src/theory/strings/term_registry.cpp
+++ b/src/theory/strings/term_registry.cpp
@@ -203,8 +203,12 @@ void TermRegistry::preRegisterTerm(TNode n)
}
else if (tn.isBoolean())
{
- // Get triggered for both equal and dis-equal
- ee->addTriggerPredicate(n);
+ // All kinds that we do congruence over that may return a Boolean go here
+ if (k==STRING_STRCTN || k == STRING_LEQ || k == SEQ_NTH)
+ {
+ // Get triggered for both equal and dis-equal
+ ee->addTriggerPredicate(n);
+ }
}
else
{
diff --git a/src/theory/uf/equality_engine.cpp b/src/theory/uf/equality_engine.cpp
index e48e91cd0..fdb80e878 100644
--- a/src/theory/uf/equality_engine.cpp
+++ b/src/theory/uf/equality_engine.cpp
@@ -1739,7 +1739,7 @@ void EqualityEngine::addTriggerPredicate(TNode predicate) {
return addTriggerEquality(predicate);
}
Assert(d_congruenceKinds.tst(predicate.getKind()))
- << "No point in adding non-congruence predicates";
+ << "No point in adding non-congruence predicates, kind is " << predicate.getKind();
if (d_done) {
return;
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback