diff options
author | Andrew Reynolds <andrew.j.reynolds@gmail.com> | 2020-01-04 13:24:14 -0600 |
---|---|---|
committer | Andres Noetzli <andres.noetzli@gmail.com> | 2020-01-04 11:24:14 -0800 |
commit | e3e6f0dc62f0bb9d3fb8d752c5eb4600872fd806 (patch) | |
tree | e61459b53e8bb8f8dd29c89655eb03f66e9dcfa4 /src/theory | |
parent | f10f495cbb3784cfed51779836f49f7a06b4f289 (diff) |
Fix finiteness check for bounded fmf (#3589)
Recently, finite model finding via uninterpreted sorts was decoupled from finite bound inference techniques (the BoundedIntegers module in theory/quantifiers/fmf/). This module assumed that finite model finding was enabled in one place. This fixes the issue by adding an additional check. This fixes a model unsoundness issue where bounds on an uninterpreted sort were not being enforced.
This fixes #3587.
Diffstat (limited to 'src/theory')
-rw-r--r-- | src/theory/quantifiers/fmf/bounded_integers.cpp | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/src/theory/quantifiers/fmf/bounded_integers.cpp b/src/theory/quantifiers/fmf/bounded_integers.cpp index cfff64f15..2bcb154a0 100644 --- a/src/theory/quantifiers/fmf/bounded_integers.cpp +++ b/src/theory/quantifiers/fmf/bounded_integers.cpp @@ -409,7 +409,7 @@ void BoundedIntegers::checkOwnership(Node f) for( unsigned i=0; i<f[0].getNumChildren(); i++) { if( d_bound_type[f].find( f[0][i] )==d_bound_type[f].end() ){ TypeNode tn = f[0][i].getType(); - if (tn.isSort() + if ((tn.isSort() && tn.isInterpretedFinite()) || d_quantEngine->getTermEnumeration()->mayComplete(tn)) { success = true; |