summaryrefslogtreecommitdiff
path: root/src/smt/smt_engine.cpp
diff options
context:
space:
mode:
authorDejan Jovanović <dejan.jovanovic@gmail.com>2009-12-11 04:00:14 +0000
committerDejan Jovanović <dejan.jovanovic@gmail.com>2009-12-11 04:00:14 +0000
commitd26cd7a159bb56f492e21b7536f68abf821ca02a (patch)
tree3f601cae6490a8bfb4dc7dcdcc5c9b4dd1a75711 /src/smt/smt_engine.cpp
parent82faddb718aaae5f52001e09d0754a3d254e2285 (diff)
Extracted the public Expr and ExprManager interface to encapsulate the optimized expressions and the internal expression manager.
Diffstat (limited to 'src/smt/smt_engine.cpp')
-rw-r--r--src/smt/smt_engine.cpp45
1 files changed, 30 insertions, 15 deletions
diff --git a/src/smt/smt_engine.cpp b/src/smt/smt_engine.cpp
index 4ccdd07d0..723263177 100644
--- a/src/smt/smt_engine.cpp
+++ b/src/smt/smt_engine.cpp
@@ -15,24 +15,39 @@
namespace CVC4 {
+SmtEngine::SmtEngine(ExprManager* em, Options* opts) throw() :
+ d_public_em(em),
+ d_em(em->getNodeManager()),
+ d_opts(opts),
+ d_de(),
+ d_te(),
+ d_prop(d_de, d_te) {
+ }
+
+SmtEngine::~SmtEngine() {
+
+}
+
void SmtEngine::doCommand(Command* c) {
c->invoke(this);
}
-Node SmtEngine::preprocess(Node e) {
+Node SmtEngine::preprocess(const Node& e) {
return e;
}
-void SmtEngine::processAssertionList() {
+Node SmtEngine::processAssertionList() {
+ Node asserts;
for(std::vector<Node>::iterator i = d_assertions.begin();
i != d_assertions.end();
++i)
- d_expr = d_expr.isNull() ? *i : d_em->mkExpr(AND, d_expr, *i);
+ asserts = asserts.isNull() ? *i : d_em->mkExpr(AND, asserts, *i);
+ return asserts;
}
Result SmtEngine::check() {
- processAssertionList();
- d_prop.solve(d_expr);
+ Node asserts = processAssertionList();
+ d_prop.solve(asserts);
return Result(Result::VALIDITY_UNKNOWN);
}
@@ -41,25 +56,25 @@ Result SmtEngine::quickCheck() {
return Result(Result::VALIDITY_UNKNOWN);
}
-void SmtEngine::addFormula(Node e) {
+void SmtEngine::addFormula(const Node& e) {
d_assertions.push_back(e);
}
-Result SmtEngine::checkSat(Node e) {
- e = preprocess(e);
- addFormula(e);
+Result SmtEngine::checkSat(const BoolExpr& e) {
+ Node node_e = preprocess(e.getNode());
+ addFormula(node_e);
return check();
}
-Result SmtEngine::query(Node e) {
- e = preprocess(e);
- addFormula(e);
+Result SmtEngine::query(const BoolExpr& e) {
+ Node node_e = preprocess(e.getNode());
+ addFormula(node_e);
return check();
}
-Result SmtEngine::assertFormula(Node e) {
- e = preprocess(e);
- addFormula(e);
+Result SmtEngine::assertFormula(const BoolExpr& e) {
+ Node node_e = preprocess(e.getNode());
+ addFormula(node_e);
return quickCheck();
}
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback