diff options
Diffstat (limited to 'src/theory/quantifiers')
-rw-r--r-- | src/theory/quantifiers/fmf/full_model_check.cpp | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/src/theory/quantifiers/fmf/full_model_check.cpp b/src/theory/quantifiers/fmf/full_model_check.cpp index f397b9a0a..d6c939e5d 100644 --- a/src/theory/quantifiers/fmf/full_model_check.cpp +++ b/src/theory/quantifiers/fmf/full_model_check.cpp @@ -793,13 +793,13 @@ bool FullModelChecker::exhaustiveInstantiate(FirstOrderModelFmc * fm, Node f, No std::vector< Node > inst; for (unsigned i = 0; i < riter.getNumTerms(); i++) { - Node rr = riter.getCurrentTerm( i ); - Node r = rr; - //if( r.getType().isSort() ){ - r = fm->getRepresentative( r ); - //}else{ - // r = fm->getCurrentModelValue( r ); - //} + TypeNode tn = riter.getTypeOf(i); + // if the type is not closed enumerable (see + // TypeNode::isClosedEnumerable), then we must ensure that we are + // using a term and not a value. This ensures that e.g. uninterpreted + // constants do not appear in instantiations. + Node rr = riter.getCurrentTerm(i, !tn.isClosedEnumerable()); + Node r = fm->getRepresentative(rr); debugPrint("fmc-exh-debug", r); Trace("fmc-exh-debug") << " (term : " << rr << ")"; ev_inst.push_back( r ); |