summaryrefslogtreecommitdiff
path: root/src/smt/model_blocker.cpp
diff options
context:
space:
mode:
authorAndrew Reynolds <andrew.j.reynolds@gmail.com>2020-10-12 11:14:08 -0500
committerGitHub <noreply@github.com>2020-10-12 11:14:08 -0500
commit3ce6e00068c02286704143d82d5f044fdb356516 (patch)
tree53d8403a8cc2c92db4cb815861f5c7cd56dee446 /src/smt/model_blocker.cpp
parente93c443a0bfb1a66909e8467b24da399be3d01ac (diff)
Eliminate uses of Expr in SmtEngine interface (#5240)
This eliminates all use of Expr in the SmtEngine except in a few interfaces (setUserAttribute, getAssignment) whose signature is currently in question. The next steps will be to (1) eliminate Expr from the smt/model.h interface, (2) replace Type by TypeNode in Sort.
Diffstat (limited to 'src/smt/model_blocker.cpp')
-rw-r--r--src/smt/model_blocker.cpp23
1 files changed, 7 insertions, 16 deletions
diff --git a/src/smt/model_blocker.cpp b/src/smt/model_blocker.cpp
index 8d232ed9e..9d15b5690 100644
--- a/src/smt/model_blocker.cpp
+++ b/src/smt/model_blocker.cpp
@@ -23,24 +23,15 @@ using namespace CVC4::kind;
namespace CVC4 {
-Expr ModelBlocker::getModelBlocker(const std::vector<Expr>& assertions,
+Node ModelBlocker::getModelBlocker(const std::vector<Node>& assertions,
theory::TheoryModel* m,
options::BlockModelsMode mode,
- const std::vector<Expr>& exprToBlock)
+ const std::vector<Node>& exprToBlock)
{
NodeManager* nm = NodeManager::currentNM();
// convert to nodes
- std::vector<Node> tlAsserts;
- for (const Expr& a : assertions)
- {
- Node an = Node::fromExpr(a);
- tlAsserts.push_back(an);
- }
- std::vector<Node> nodesToBlock;
- for (const Expr& eb : exprToBlock)
- {
- nodesToBlock.push_back(Node::fromExpr(eb));
- }
+ std::vector<Node> tlAsserts = assertions;
+ std::vector<Node> nodesToBlock = exprToBlock;
Trace("model-blocker") << "Compute model blocker, assertions:" << std::endl;
Node blocker;
if (mode == options::BlockModelsMode::LITERALS)
@@ -117,7 +108,7 @@ Expr ModelBlocker::getModelBlocker(const std::vector<Expr>& assertions,
// rewrite, this ensures that e.g. the propositional value of
// quantified formulas can be queried
n = theory::Rewriter::rewrite(n);
- Node vn = Node::fromExpr(m->getValue(n.toExpr()));
+ Node vn = m->getValue(n);
Assert(vn.isConst());
if (vn.getConst<bool>() == cpol)
{
@@ -139,7 +130,7 @@ Expr ModelBlocker::getModelBlocker(const std::vector<Expr>& assertions,
}
else if (catom.getKind() == ITE)
{
- Node vcond = Node::fromExpr(m->getValue(cur[0].toExpr()));
+ Node vcond = m->getValue(cur[0]);
Assert(vcond.isConst());
Node cond = cur[0];
Node branch;
@@ -282,7 +273,7 @@ Expr ModelBlocker::getModelBlocker(const std::vector<Expr>& assertions,
}
}
Trace("model-blocker") << "...model blocker is " << blocker << std::endl;
- return blocker.toExpr();
+ return blocker;
}
} /* namespace CVC4 */
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback