mirror of
https://github.com/Z3Prover/z3
synced 2025-04-23 17:15:31 +00:00
delay internalize (#4714)
* adding array solver Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com> * use default in model construction Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com> * debug delay internalization Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com> * bv Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com> * arrays Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com> * get rid of implied values and bounds Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com> * redo egraph * remove out Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com> * remove files Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
parent
25724401cf
commit
367e5fdd52
60 changed files with 1343 additions and 924 deletions
|
@ -45,24 +45,19 @@ void statistics::reset() {
|
|||
|
||||
template<typename V, typename M>
|
||||
static void mk_map(V const & v, M & m) {
|
||||
typename V::const_iterator it = v.begin();
|
||||
typename V::const_iterator end = v.end();
|
||||
for (; it != end; ++it) {
|
||||
for (auto const& p : v) {
|
||||
typename V::data::second_type val;
|
||||
if (m.find(it->first, val))
|
||||
m.insert(it->first, it->second + val);
|
||||
if (m.find(p.first, val))
|
||||
m.insert(p.first, p.second + val);
|
||||
else
|
||||
m.insert(it->first, it->second);
|
||||
m.insert(p.first, p.second);
|
||||
}
|
||||
}
|
||||
|
||||
template<typename M>
|
||||
static void get_keys(M const & m, ptr_buffer<char> & keys) {
|
||||
typename M::iterator it = m.begin();
|
||||
typename M::iterator end = m.end();
|
||||
for (; it != end; ++it) {
|
||||
keys.push_back(const_cast<char*>(it->m_key));
|
||||
}
|
||||
for (auto const& kv : m)
|
||||
keys.push_back(const_cast<char*>(kv.m_key));
|
||||
}
|
||||
|
||||
static void display_smt2_key(std::ostream & out, char const * key) {
|
||||
|
@ -175,10 +170,8 @@ std::ostream& statistics::display(std::ostream & out) const {
|
|||
|
||||
template<typename M>
|
||||
static void display_internal(std::ostream & out, M const & m) {
|
||||
typename M::iterator it = m.begin();
|
||||
typename M::iterator end = m.end();
|
||||
for (; it != end; it++) {
|
||||
char const * key = it->m_key;
|
||||
for (auto const& kv : m) {
|
||||
char const * key = kv.m_key;
|
||||
if (*key == ':') key++;
|
||||
while (*key) {
|
||||
if ('a' <= *key && *key <= 'z')
|
||||
|
@ -188,7 +181,7 @@ static void display_internal(std::ostream & out, M const & m) {
|
|||
else
|
||||
out << *key;
|
||||
}
|
||||
out << " " << it->m_value << "\n";
|
||||
out << " " << kv.m_value << "\n";
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue