summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Reynolds <andrew.j.reynolds@gmail.com>2020-06-12 18:30:19 -0500
committerGitHub <noreply@github.com>2020-06-12 18:30:19 -0500
commit08f6f8cc6118b1e6c057a294d1ddb60e2e45b5ed (patch)
treede37ebe313376112c41646f206a03e4b8029308f
parenta3efc3697434902c5b147ee16c34d7291734206f (diff)
Update to consistent policy for removed terms in quantifier bodies. (#4602)
-rw-r--r--src/smt/term_formula_removal.cpp8
1 files changed, 4 insertions, 4 deletions
diff --git a/src/smt/term_formula_removal.cpp b/src/smt/term_formula_removal.cpp
index 1ae125e03..c3f0fabc4 100644
--- a/src/smt/term_formula_removal.cpp
+++ b/src/smt/term_formula_removal.cpp
@@ -89,8 +89,8 @@ Node RemoveTermFormulas::run(TNode node, std::vector<Node>& output,
if (node.getKind() == kind::ITE && !nodeType.isBoolean())
{
// Here, we eliminate the ITE if we are not Boolean and if we do not contain
- // a bound variable.
- if (!inQuant || !expr::hasBoundVar(node))
+ // a free variable.
+ if (!inQuant || !expr::hasFreeVar(node))
{
skolem = getSkolemForNode(node);
if (skolem.isNull())
@@ -111,7 +111,7 @@ Node RemoveTermFormulas::run(TNode node, std::vector<Node>& output,
else if (node.getKind() == kind::LAMBDA)
{
// if a lambda, do lambda-lifting
- if (!inQuant)
+ if (!inQuant || !expr::hasFreeVar(node))
{
skolem = getSkolemForNode(node);
if (skolem.isNull())
@@ -143,7 +143,7 @@ Node RemoveTermFormulas::run(TNode node, std::vector<Node>& output,
// If a witness choice
// For details on this operator, see
// http://planetmath.org/hilbertsvarepsilonoperator.
- if (!inQuant)
+ if (!inQuant || !expr::hasFreeVar(node))
{
skolem = getSkolemForNode(node);
if (skolem.isNull())
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback