summaryrefslogtreecommitdiff
path: root/src/smt
diff options
context:
space:
mode:
authorMorgan Deters <mdeters@gmail.com>2012-12-01 00:31:38 +0000
committerMorgan Deters <mdeters@gmail.com>2012-12-01 00:31:38 +0000
commit7d9c9678999e24e1c8bfa1080ed4f0fb3fa089a9 (patch)
tree1eabb6169205ef20c33a020dc1b58ab81f0807e3 /src/smt
parent2541cebe0107a34625876506bbe301296bb771fb (diff)
definition-expansion fixed for get-model, resolves bug 411
Diffstat (limited to 'src/smt')
-rw-r--r--src/smt/smt_engine.cpp9
1 files changed, 9 insertions, 0 deletions
diff --git a/src/smt/smt_engine.cpp b/src/smt/smt_engine.cpp
index 0f755aa01..fb8b78759 100644
--- a/src/smt/smt_engine.cpp
+++ b/src/smt/smt_engine.cpp
@@ -1219,6 +1219,15 @@ Node SmtEnginePrivate::expandDefinitions(TNode n, hash_map<Node, Node, NodeHashF
Kind k = n.getKind();
if(k != kind::APPLY && n.getNumChildren() == 0) {
+ SmtEngine::DefinedFunctionMap::const_iterator i = d_smt.d_definedFunctions->find(n);
+ if(i != d_smt.d_definedFunctions->end()) {
+ // replacement must be closed
+ if((*i).second.getFormals().size() > 0) {
+ throw TypeCheckingException(n.toExpr(), std::string("Defined function requires arguments: `") + n.toString() + "'");
+ }
+ // don't bother putting in the cache
+ return (*i).second.getFormula();
+ }
// don't bother putting in the cache
return n;
}
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback