aboutsummaryrefslogtreecommitdiffstats
path: root/libsolidity/formal/CVC4Interface.cpp
diff options
context:
space:
mode:
authorLeonardo Alt <leo@ethereum.org>2018-08-01 17:12:56 +0800
committerLeonardo Alt <leo@ethereum.org>2018-08-01 17:12:56 +0800
commit41ac3d6cfb7fedd054f8fbdedf5246ec15670941 (patch)
tree6c918486c05287caf77ee914bc7cf1c91ece1467 /libsolidity/formal/CVC4Interface.cpp
parentf249f9c86f1a9673cdc5700b326b3cfeee908851 (diff)
downloaddexon-solidity-41ac3d6cfb7fedd054f8fbdedf5246ec15670941.tar
dexon-solidity-41ac3d6cfb7fedd054f8fbdedf5246ec15670941.tar.gz
dexon-solidity-41ac3d6cfb7fedd054f8fbdedf5246ec15670941.tar.bz2
dexon-solidity-41ac3d6cfb7fedd054f8fbdedf5246ec15670941.tar.lz
dexon-solidity-41ac3d6cfb7fedd054f8fbdedf5246ec15670941.tar.xz
dexon-solidity-41ac3d6cfb7fedd054f8fbdedf5246ec15670941.tar.zst
dexon-solidity-41ac3d6cfb7fedd054f8fbdedf5246ec15670941.zip
Remove repeated declarations in Z3 and CVC4 as well
Diffstat (limited to 'libsolidity/formal/CVC4Interface.cpp')
-rw-r--r--libsolidity/formal/CVC4Interface.cpp13
1 files changed, 9 insertions, 4 deletions
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)