3
0
Fork 0
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:
Nikolaj Bjorner 2020-09-28 19:24:16 -07:00 committed by GitHub
parent 25724401cf
commit 367e5fdd52
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
60 changed files with 1343 additions and 924 deletions

View file

@ -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";
}
}