From a5a61a0b7762bf5acdd01a4e6943d927b08f92ab Mon Sep 17 00:00:00 2001 From: Alex Beregszaszi Date: Thu, 17 May 2018 14:57:21 +0200 Subject: More consistent catch statements Also take const& in all cases. --- libsolidity/formal/CVC4Interface.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'libsolidity/formal/CVC4Interface.cpp') diff --git a/libsolidity/formal/CVC4Interface.cpp b/libsolidity/formal/CVC4Interface.cpp index dba5823a..c6f2771d 100644 --- a/libsolidity/formal/CVC4Interface.cpp +++ b/libsolidity/formal/CVC4Interface.cpp @@ -115,7 +115,7 @@ pair> CVC4Interface::check(vector const& values.push_back(toString(m_solver.getValue(toCVC4Expr(e)))); } } - catch (CVC4::Exception & e) + catch (CVC4::Exception const&) { result = CheckResult::ERROR; values.clear(); -- cgit v1.2.3 From 06dbcb3afea63a935afc492b926f6b434bb78fa4 Mon Sep 17 00:00:00 2001 From: Leonardo Alt Date: Fri, 27 Jul 2018 14:13:22 +0200 Subject: Only ask for a model if it's SAT --- libsolidity/formal/CVC4Interface.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'libsolidity/formal/CVC4Interface.cpp') diff --git a/libsolidity/formal/CVC4Interface.cpp b/libsolidity/formal/CVC4Interface.cpp index c6f2771d..0cb70d2f 100644 --- a/libsolidity/formal/CVC4Interface.cpp +++ b/libsolidity/formal/CVC4Interface.cpp @@ -109,7 +109,7 @@ pair> CVC4Interface::check(vector const& solAssert(false, ""); } - if (result != CheckResult::UNSATISFIABLE && !_expressionsToEvaluate.empty()) + if (result == CheckResult::SATISFIABLE && !_expressionsToEvaluate.empty()) { for (Expression const& e: _expressionsToEvaluate) values.push_back(toString(m_solver.getValue(toCVC4Expr(e)))); -- cgit v1.2.3 From b356f6a7f9e4fcdfa0f7df2e938ad735d231e599 Mon Sep 17 00:00:00 2001 From: Leonardo Alt Date: Fri, 27 Jul 2018 09:14:50 +0200 Subject: Setting timeout to Z3 and CVC4 --- libsolidity/formal/CVC4Interface.cpp | 1 + 1 file changed, 1 insertion(+) (limited to 'libsolidity/formal/CVC4Interface.cpp') diff --git a/libsolidity/formal/CVC4Interface.cpp b/libsolidity/formal/CVC4Interface.cpp index 0cb70d2f..0530e940 100644 --- a/libsolidity/formal/CVC4Interface.cpp +++ b/libsolidity/formal/CVC4Interface.cpp @@ -37,6 +37,7 @@ void CVC4Interface::reset() m_functions.clear(); m_solver.reset(); m_solver.setOption("produce-models", true); + m_solver.setTimeLimit(queryTimeout); } void CVC4Interface::push() -- cgit v1.2.3 From 87a38e1abe61547e66aedfa595a73fb78184d609 Mon Sep 17 00:00:00 2001 From: Leonardo Alt Date: Fri, 20 Apr 2018 16:56:10 +0200 Subject: [SMTChecker] SMTPortfolio: use all SMT solvers available --- libsolidity/formal/CVC4Interface.cpp | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) (limited to 'libsolidity/formal/CVC4Interface.cpp') diff --git a/libsolidity/formal/CVC4Interface.cpp b/libsolidity/formal/CVC4Interface.cpp index 0530e940..84d36de0 100644 --- a/libsolidity/formal/CVC4Interface.cpp +++ b/libsolidity/formal/CVC4Interface.cpp @@ -50,23 +50,20 @@ void CVC4Interface::pop() m_solver.pop(); } -Expression CVC4Interface::newFunction(string _name, Sort _domain, Sort _codomain) +void CVC4Interface::declareFunction(string _name, Sort _domain, Sort _codomain) { CVC4::Type fType = m_context.mkFunctionType(cvc4Sort(_domain), cvc4Sort(_codomain)); m_functions.insert({_name, m_context.mkVar(_name.c_str(), fType)}); - return SolverInterface::newFunction(move(_name), _domain, _codomain); } -Expression CVC4Interface::newInteger(string _name) +void CVC4Interface::declareInteger(string _name) { m_constants.insert({_name, m_context.mkVar(_name.c_str(), m_context.integerType())}); - return SolverInterface::newInteger(move(_name)); } -Expression CVC4Interface::newBool(string _name) +void CVC4Interface::declareBool(string _name) { m_constants.insert({_name, m_context.mkVar(_name.c_str(), m_context.booleanType())}); - return SolverInterface::newBool(std::move(_name)); } void CVC4Interface::addAssertion(Expression const& _expr) -- cgit v1.2.3 From 41ac3d6cfb7fedd054f8fbdedf5246ec15670941 Mon Sep 17 00:00:00 2001 From: Leonardo Alt Date: Wed, 1 Aug 2018 11:12:56 +0200 Subject: Remove repeated declarations in Z3 and CVC4 as well --- libsolidity/formal/CVC4Interface.cpp | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) (limited to 'libsolidity/formal/CVC4Interface.cpp') diff --git a/libsolidity/formal/CVC4Interface.cpp b/libsolidity/formal/CVC4Interface.cpp index 84d36de0..6cb91483 100644 --- a/libsolidity/formal/CVC4Interface.cpp +++ b/libsolidity/formal/CVC4Interface.cpp @@ -52,18 +52,23 @@ void CVC4Interface::pop() void CVC4Interface::declareFunction(string _name, Sort _domain, Sort _codomain) { - CVC4::Type fType = m_context.mkFunctionType(cvc4Sort(_domain), cvc4Sort(_codomain)); - m_functions.insert({_name, m_context.mkVar(_name.c_str(), fType)}); + if (!m_functions.count(_name)) + { + CVC4::Type fType = m_context.mkFunctionType(cvc4Sort(_domain), cvc4Sort(_codomain)); + m_functions.insert({_name, m_context.mkVar(_name.c_str(), fType)}); + } } void CVC4Interface::declareInteger(string _name) { - m_constants.insert({_name, m_context.mkVar(_name.c_str(), m_context.integerType())}); + if (!m_constants.count(_name)) + m_constants.insert({_name, m_context.mkVar(_name.c_str(), m_context.integerType())}); } void CVC4Interface::declareBool(string _name) { - m_constants.insert({_name, m_context.mkVar(_name.c_str(), m_context.booleanType())}); + if (!m_constants.count(_name)) + m_constants.insert({_name, m_context.mkVar(_name.c_str(), m_context.booleanType())}); } void CVC4Interface::addAssertion(Expression const& _expr) -- cgit v1.2.3