Refactoring of initial lemmas in datatypes (#8666)
authorAndrew Reynolds <andrew.j.reynolds@gmail.com>
Wed, 27 Apr 2022 13:25:36 +0000 (08:25 -0500)
committerGitHub <noreply@github.com>
Wed, 27 Apr 2022 13:25:36 +0000 (13:25 +0000)
commitdf67b11d1307987aaa17a48579f1080105c8731e
tree7a5b88d5c6e9eeaae29371d74a209b2e8e276f35
parent7d7cfa23ae02e736d96f98c55313ca5ea598fc73
Refactoring of initial lemmas in datatypes (#8666)

This is work towards revising how/when the datatypes instantiate rule is applied.

This simplifies the management of when new terms are registered in the theory of datatypes.

We now use the equality engine's eqNotifyNewClass callback to know when a term should be considered. Previously, this was split over two methods (additionally, collectTerms).

Most importantly, this eliminates the need for a manual addition of the "instantiated constructor term" in getInstantiateCons, which complicates the logic for the impact of applying the datatypes instantiate rule.
src/theory/datatypes/theory_datatypes.cpp
src/theory/datatypes/theory_datatypes.h