summaryrefslogtreecommitdiff
path: root/src/theory/theory.cpp
diff options
context:
space:
mode:
authorAndrew Reynolds <andrew.j.reynolds@gmail.com>2020-10-26 12:18:26 -0500
committerGitHub <noreply@github.com>2020-10-26 12:18:26 -0500
commitd7ef769395f75b7acae3dd36df587a4438db5673 (patch)
treedefd160b2d8c73bb4bff5b0fc6bdf9ed0541befb /src/theory/theory.cpp
parent0a4ee1ac60e6b914ca8173c773eb9db54cdf0f61 (diff)
Send external equalities from collapse selector as lemmas (#5346)
In 20e58d4, a policy change was made for datatypes to keep more inferences as internal facts. This leads to a crash (issue #5344) where the equality status of two BV terms is asked by TheoryDatatypes, where the TheoryBV was not informed of the term, as datatypes kept it internal. This refines the policy further such that the collapse selector rule is processed as a lemma for terms of external type. The reason is that this rule may generate new terms of external type. Other rules like unification retain the internal fact policy, as they do not generate new terms. Fixes #5344. FYI @barrettcw
Diffstat (limited to 'src/theory/theory.cpp')
-rw-r--r--src/theory/theory.cpp1
1 files changed, 1 insertions, 0 deletions
diff --git a/src/theory/theory.cpp b/src/theory/theory.cpp
index 681f3bca1..78fe6927f 100644
--- a/src/theory/theory.cpp
+++ b/src/theory/theory.cpp
@@ -437,6 +437,7 @@ EqualityStatus Theory::getEqualityStatus(TNode a, TNode b)
{
return EQUALITY_UNKNOWN;
}
+ Trace("sharing") << "Theory<" << getId() << ">::getEqualityStatus(" << a << ", " << b << ")" << std::endl;
Assert(d_equalityEngine->hasTerm(a) && d_equalityEngine->hasTerm(b));
// Check for equality (simplest)
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback