diff options
author | Leonardo Alt <leo@ethereum.org> | 2018-08-01 17:12:56 +0800 |
---|---|---|
committer | Leonardo Alt <leo@ethereum.org> | 2018-08-01 17:12:56 +0800 |
commit | 41ac3d6cfb7fedd054f8fbdedf5246ec15670941 (patch) | |
tree | 6c918486c05287caf77ee914bc7cf1c91ece1467 /libsolidity/formal | |
parent | f249f9c86f1a9673cdc5700b326b3cfeee908851 (diff) | |
download | dexon-solidity-41ac3d6cfb7fedd054f8fbdedf5246ec15670941.tar.gz dexon-solidity-41ac3d6cfb7fedd054f8fbdedf5246ec15670941.tar.zst dexon-solidity-41ac3d6cfb7fedd054f8fbdedf5246ec15670941.zip |
Remove repeated declarations in Z3 and CVC4 as well
Diffstat (limited to 'libsolidity/formal')
-rw-r--r-- | libsolidity/formal/CVC4Interface.cpp | 13 | ||||
-rw-r--r-- | libsolidity/formal/Z3Interface.cpp | 9 |
2 files changed, 15 insertions, 7 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) diff --git a/libsolidity/formal/Z3Interface.cpp b/libsolidity/formal/Z3Interface.cpp index 784fbd28..747c9172 100644 --- a/libsolidity/formal/Z3Interface.cpp +++ b/libsolidity/formal/Z3Interface.cpp @@ -53,17 +53,20 @@ void Z3Interface::pop() void Z3Interface::declareFunction(string _name, Sort _domain, Sort _codomain) { - m_functions.insert({_name, m_context.function(_name.c_str(), z3Sort(_domain), z3Sort(_codomain))}); + if (!m_functions.count(_name)) + m_functions.insert({_name, m_context.function(_name.c_str(), z3Sort(_domain), z3Sort(_codomain))}); } void Z3Interface::declareInteger(string _name) { - m_constants.insert({_name, m_context.int_const(_name.c_str())}); + if (!m_constants.count(_name)) + m_constants.insert({_name, m_context.int_const(_name.c_str())}); } void Z3Interface::declareBool(string _name) { - m_constants.insert({_name, m_context.bool_const(_name.c_str())}); + if (!m_constants.count(_name)) + m_constants.insert({_name, m_context.bool_const(_name.c_str())}); } void Z3Interface::addAssertion(Expression const& _expr) |