summaryrefslogtreecommitdiff
path: root/src/api/cvc4cpp.cpp
diff options
context:
space:
mode:
authorAndres Noetzli <andres.noetzli@gmail.com>2019-04-17 08:39:38 -0700
committerAndres Noetzli <andres.noetzli@gmail.com>2019-04-17 08:39:38 -0700
commitc2b5995b59b47ae16d66c5ae77199f801bf11a17 (patch)
tree5856b2b8f796c37d0c75247f8e9d20b1ee74fa87 /src/api/cvc4cpp.cpp
parentd1e312cfe865bd7c167dff473f508f739d5ddc3b (diff)
parent29a06b999c4637197282405df7040d6773bd3858 (diff)
merge
Diffstat (limited to 'src/api/cvc4cpp.cpp')
-rw-r--r--src/api/cvc4cpp.cpp91
1 files changed, 29 insertions, 62 deletions
diff --git a/src/api/cvc4cpp.cpp b/src/api/cvc4cpp.cpp
index ddb17c3a7..86072d601 100644
--- a/src/api/cvc4cpp.cpp
+++ b/src/api/cvc4cpp.cpp
@@ -2,9 +2,9 @@
/*! \file cvc4cpp.cpp
** \verbatim
** Top contributors (to current version):
- ** Aina Niemetz
+ ** Aina Niemetz, Andres Noetzli
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
@@ -1373,6 +1373,13 @@ std::ostream& operator<<(std::ostream& out,
return out;
}
+std::ostream& operator<<(std::ostream& out,
+ const std::vector<DatatypeConstructorDecl>& vector)
+{
+ container_to_stream(out, vector);
+ return out;
+}
+
/* DatatypeDecl ------------------------------------------------------------- */
DatatypeDecl::DatatypeDecl(const std::string& name, bool isCoDatatype)
@@ -2385,42 +2392,13 @@ Term Solver::mkFloatingPoint(uint32_t exp, uint32_t sig, Term val) const
/* Create variables */
/* -------------------------------------------------------------------------- */
-Term Solver::mkVar(const std::string& symbol, Sort sort) const
-{
- try
- {
- CVC4_API_ARG_CHECK_EXPECTED(!sort.isNull(), sort) << "non-null sort";
- Term res = d_exprMgr->mkVar(symbol, *sort.d_type);
- (void)res.d_expr->getType(true); /* kick off type checking */
- return res;
- }
- catch (const CVC4::TypeCheckingException& e)
- {
- throw CVC4ApiException(e.getMessage());
- }
-}
-
-Term Solver::mkVar(Sort sort) const
-{
- try
- {
- CVC4_API_ARG_CHECK_EXPECTED(!sort.isNull(), sort) << "non-null sort";
- Term res = d_exprMgr->mkVar(*sort.d_type);
- (void)res.d_expr->getType(true); /* kick off type checking */
- return res;
- }
- catch (const CVC4::TypeCheckingException& e)
- {
- throw CVC4ApiException(e.getMessage());
- }
-}
-
-Term Solver::mkBoundVar(const std::string& symbol, Sort sort) const
+Term Solver::mkVar(Sort sort, const std::string& symbol) const
{
try
{
CVC4_API_ARG_CHECK_EXPECTED(!sort.isNull(), sort) << "non-null sort";
- Term res = d_exprMgr->mkBoundVar(symbol, *sort.d_type);
+ Term res = symbol.empty() ? d_exprMgr->mkVar(*sort.d_type)
+ : d_exprMgr->mkVar(symbol, *sort.d_type);
(void)res.d_expr->getType(true); /* kick off type checking */
return res;
}
@@ -2430,12 +2408,13 @@ Term Solver::mkBoundVar(const std::string& symbol, Sort sort) const
}
}
-Term Solver::mkBoundVar(Sort sort) const
+Term Solver::mkBoundVar(Sort sort, const std::string& symbol) const
{
try
{
CVC4_API_ARG_CHECK_EXPECTED(!sort.isNull(), sort) << "non-null sort";
- Term res = d_exprMgr->mkBoundVar(*sort.d_type);
+ Term res = symbol.empty() ? d_exprMgr->mkBoundVar(*sort.d_type)
+ : d_exprMgr->mkBoundVar(symbol, *sort.d_type);
(void)res.d_expr->getType(true); /* kick off type checking */
return res;
}
@@ -2524,21 +2503,6 @@ Term Solver::mkTerm(Kind kind) const
}
}
-Term Solver::mkTerm(Kind kind, Sort sort) const
-{
- try
- {
- CVC4_API_KIND_CHECK_EXPECTED(kind == SEP_NIL, kind) << "SEP_NIL";
- Term res = d_exprMgr->mkNullaryOperator(*sort.d_type, extToIntKind(kind));
- (void)res.d_expr->getType(true); /* kick off type checking */
- return res;
- }
- catch (const CVC4::TypeCheckingException& e)
- {
- throw CVC4ApiException(e.getMessage());
- }
-}
-
Term Solver::mkTerm(Kind kind, Term child) const
{
try
@@ -2980,7 +2944,17 @@ Result Solver::checkSatAssuming(const std::vector<Term>& assumptions) const
*/
Term Solver::declareConst(const std::string& symbol, Sort sort) const
{
- return d_exprMgr->mkVar(symbol, *sort.d_type);
+ try
+ {
+ CVC4_API_ARG_CHECK_EXPECTED(!sort.isNull(), sort) << "non-null sort";
+ Term res = d_exprMgr->mkVar(symbol, *sort.d_type);
+ (void)res.d_expr->getType(true); /* kick off type checking */
+ return res;
+ }
+ catch (const CVC4::TypeCheckingException& e)
+ {
+ throw CVC4ApiException(e.getMessage());
+ }
}
/**
@@ -2990,21 +2964,14 @@ Sort Solver::declareDatatype(
const std::string& symbol,
const std::vector<DatatypeConstructorDecl>& ctors) const
{
+ CVC4_API_ARG_CHECK_EXPECTED(ctors.size() > 0, ctors)
+ << "a datatype declaration with at least one constructor";
DatatypeDecl dtdecl(symbol);
for (const DatatypeConstructorDecl& ctor : ctors)
{
dtdecl.addConstructor(ctor);
}
- return mkDatatypeSort(dtdecl);
-}
-
-/**
- * ( declare-fun <symbol> () <sort> )
- */
-Term Solver::declareFun(const std::string& symbol, Sort sort) const
-{
- Type type = *sort.d_type;
- return d_exprMgr->mkVar(symbol, type);
+ return d_exprMgr->mkDatatypeType(*dtdecl.d_dtype);
}
/**
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback