diff options
author | Dejan Jovanović <dejan.jovanovic@gmail.com> | 2009-12-11 04:00:14 +0000 |
---|---|---|
committer | Dejan Jovanović <dejan.jovanovic@gmail.com> | 2009-12-11 04:00:14 +0000 |
commit | d26cd7a159bb56f492e21b7536f68abf821ca02a (patch) | |
tree | 3f601cae6490a8bfb4dc7dcdcc5c9b4dd1a75711 /src/smt/smt_engine.cpp | |
parent | 82faddb718aaae5f52001e09d0754a3d254e2285 (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.cpp | 45 |
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(); } |