Send external equalities from collapse selector as lemmas (#5346)
authorAndrew Reynolds <andrew.j.reynolds@gmail.com>
Mon, 26 Oct 2020 17:18:26 +0000 (12:18 -0500)
committerGitHub <noreply@github.com>
Mon, 26 Oct 2020 17:18:26 +0000 (12:18 -0500)
commitd7ef769395f75b7acae3dd36df587a4438db5673
treedefd160b2d8c73bb4bff5b0fc6bdf9ed0541befb
parent0a4ee1ac60e6b914ca8173c773eb9db54cdf0f61
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
src/theory/datatypes/theory_datatypes.cpp
src/theory/theory.cpp