Fix exclusion criteria for codatatype model values (#7546)
authorAndrew Reynolds <andrew.j.reynolds@gmail.com>
Fri, 5 Nov 2021 23:37:36 +0000 (18:37 -0500)
committerGitHub <noreply@github.com>
Fri, 5 Nov 2021 23:37:36 +0000 (23:37 +0000)
commit7762098d624be5c46fee33a98dc8b85a9335dd43
tree76bce1d14a5fe9bec99120cf1393b3c47215c397
parent0181355bdf6b76fc550a2dca16fc0ac5e48c25ca
Fix exclusion criteria for codatatype model values (#7546)

This fixes codatatype model value construction.

Model construction for codatatypes is non-standard since it requires analyzing whether (possibly recursively defined) terms are alpha equivalent to others during model construction. This is currently handled as a special case within the theory model builder. (This should eventually be moved somewhere more appropriate via a new callback to theory).

This fixes the criteria which was too permissive about which values can be used in models. We now exclude values that match the skeleton of representative codatatype terms. Previously we additionally required that the terms were bisimilar.

Fixes #4851.
src/theory/theory_model_builder.cpp
src/theory/theory_model_builder.h
test/regress/CMakeLists.txt
test/regress/regress1/datatypes/issue4851-cdt-model.smt2 [new file with mode: 0644]