diff options
author | Andrew Reynolds <andrew.j.reynolds@gmail.com> | 2018-04-12 12:23:57 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-04-12 12:23:57 -0500 |
commit | af135825a60f917711d133828c9fdd6831e2142d (patch) | |
tree | 20e9b46a027b8f8242901964fa360bb849f640df /src/theory/theory_engine.cpp | |
parent | 6b5b926f28b66c3812d77fd234e93b9eee03f71f (diff) |
Fixes for free variables in assertions (#1762)
Diffstat (limited to 'src/theory/theory_engine.cpp')
-rw-r--r-- | src/theory/theory_engine.cpp | 12 |
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(); |