summaryrefslogtreecommitdiff
path: root/src/theory/theory_engine.cpp
diff options
context:
space:
mode:
authorAndrew Reynolds <andrew.j.reynolds@gmail.com>2018-04-12 12:23:57 -0500
committerGitHub <noreply@github.com>2018-04-12 12:23:57 -0500
commitaf135825a60f917711d133828c9fdd6831e2142d (patch)
tree20e9b46a027b8f8242901964fa360bb849f640df /src/theory/theory_engine.cpp
parent6b5b926f28b66c3812d77fd234e93b9eee03f71f (diff)
Fixes for free variables in assertions (#1762)
Diffstat (limited to 'src/theory/theory_engine.cpp')
-rw-r--r--src/theory/theory_engine.cpp12
1 files changed, 10 insertions, 2 deletions
diff --git a/src/theory/theory_engine.cpp b/src/theory/theory_engine.cpp
index de71a8b5e..38885db85 100644
--- a/src/theory/theory_engine.cpp
+++ b/src/theory/theory_engine.cpp
@@ -394,6 +394,8 @@ void TheoryEngine::preRegister(TNode preprocessed) {
}
// the atom should not have free variables
+ Debug("theory") << "TheoryEngine::preRegister: " << preprocessed
+ << std::endl;
Assert(!preprocessed.hasFreeVar());
// Pre-register the terms in the atom
Theory::Set theories = NodeVisitor<PreRegisterVisitor>::run(d_preRegistrationVisitor, preprocessed);
@@ -1056,9 +1058,15 @@ Node TheoryEngine::ppTheoryRewrite(TNode term) {
Trace("theory-pp") << "ppTheoryRewrite { " << term << endl;
Node newTerm;
- if (theoryOf(term)->ppDontRewriteSubterm(term)) {
+ // do not rewrite inside quantifiers
+ if (term.getKind() == kind::FORALL || term.getKind() == kind::EXISTS
+ || term.getKind() == kind::CHOICE
+ || term.getKind() == kind::LAMBDA)
+ {
newTerm = Rewriter::rewrite(term);
- } else {
+ }
+ else
+ {
NodeBuilder<> newNode(term.getKind());
if (term.getMetaKind() == kind::metakind::PARAMETERIZED) {
newNode << term.getOperator();
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback