summaryrefslogtreecommitdiff
path: root/src/theory/quantifiers/fmf
diff options
context:
space:
mode:
Diffstat (limited to 'src/theory/quantifiers/fmf')
-rw-r--r--src/theory/quantifiers/fmf/full_model_check.cpp14
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 );
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback