summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAina Niemetz <aina.niemetz@gmail.com>2020-01-15 08:25:21 -0800
committerGitHub <noreply@github.com>2020-01-15 08:25:21 -0800
commitb0dcd82a9e235ffcce6a8f261cecb83a3dcf90e1 (patch)
tree43c0e10c46897fc3be89fd928f9f82f049bc20a8 /src
parent9e94e0bfcf55cf4f11afaacfc2d9e03f2a259236 (diff)
New C++ API: Add nullary constructor for Result. (#3603)
Diffstat (limited to 'src')
-rw-r--r--src/api/cvc4cpp.cpp7
-rw-r--r--src/api/cvc4cpp.h9
-rw-r--r--src/smt/smt_engine.cpp14
3 files changed, 24 insertions, 6 deletions
diff --git a/src/api/cvc4cpp.cpp b/src/api/cvc4cpp.cpp
index f7ffe850a..ddc1a61a0 100644
--- a/src/api/cvc4cpp.cpp
+++ b/src/api/cvc4cpp.cpp
@@ -706,6 +706,13 @@ class CVC4ApiExceptionStream
Result::Result(const CVC4::Result& r) : d_result(new CVC4::Result(r)) {}
+Result::Result() : d_result(new CVC4::Result()) {}
+
+bool Result::isNull() const
+{
+ return d_result->getType() == CVC4::Result::TYPE_NONE;
+}
+
bool Result::isSat(void) const
{
return d_result->getType() == CVC4::Result::TYPE_SAT
diff --git a/src/api/cvc4cpp.h b/src/api/cvc4cpp.h
index e05c228bc..396c4eedb 100644
--- a/src/api/cvc4cpp.h
+++ b/src/api/cvc4cpp.h
@@ -82,6 +82,15 @@ class CVC4_PUBLIC Result
*/
Result(const CVC4::Result& r);
+ /** Constructor. */
+ Result();
+
+ /**
+ * Return true if Result is empty, i.e., a nullary Result, and not an actual
+ * result returned from a checkSat() (and friends) query.
+ */
+ bool isNull() const;
+
/**
* Return true if query was a satisfiable checkSat() or checkSatAssuming()
* query.
diff --git a/src/smt/smt_engine.cpp b/src/smt/smt_engine.cpp
index 3343abc29..910855505 100644
--- a/src/smt/smt_engine.cpp
+++ b/src/smt/smt_engine.cpp
@@ -3678,15 +3678,17 @@ Result SmtEngine::checkSat(const vector<Expr>& assumptions, bool inUnsatCore)
Result SmtEngine::query(const Expr& assumption, bool inUnsatCore)
{
- return checkSatisfiability(
- assumption.isNull() ? std::vector<Expr>() : std::vector<Expr>{assumption},
- inUnsatCore,
- true);
+ return checkSatisfiability(assumption.isNull()
+ ? std::vector<Expr>()
+ : std::vector<Expr>{assumption},
+ inUnsatCore,
+ true)
+ .asValidityResult();
}
Result SmtEngine::query(const vector<Expr>& assumptions, bool inUnsatCore)
{
- return checkSatisfiability(assumptions, inUnsatCore, true);
+ return checkSatisfiability(assumptions, inUnsatCore, true).asValidityResult();
}
Result SmtEngine::checkSatisfiability(const Expr& expr,
@@ -3771,7 +3773,7 @@ Result SmtEngine::checkSatisfiability(const vector<Expr>& assumptions,
d_private->addFormula(e.getNode(), inUnsatCore, true, true);
}
- r = isQuery ? check().asValidityResult() : check().asSatisfiabilityResult();
+ r = check();
if ((options::solveRealAsInt() || options::solveIntAsBV() > 0)
&& r.asSatisfiabilityResult().isSat() == Result::UNSAT)
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback