Summary: It is possible for the canonical form of a term in (the carrier set of) a relation to be a term that is not in the relation. It is also possible for this term to be equal to a term in the relation. It is the job of the lookup subroutine of normalization to find these equations. The current implementation of entails_eq is incomplete in this case, in particular, when an uninterpreted term has an interpreted subterm, which itself has a subterm that is not a representative. This diff strengthens normalization (and hence it's callers such as entails_eq) to handle such cases. This makes lookup work slightly harder. An alternative would be to extend the carrier with new terms from normalization to the carrier and closing the relation, and then re-normalizing. That would lead to much inflated representation sizes, and is inefficient. Reviewed By: jvillard Differential Revision: D20612565 fbshipit-source-id: 3b7534a62master
parent
0f50d3c248
commit
c91e09031f
Loading…
Reference in new issue