3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-04-24 01:25:31 +00:00

add assert_and_track to optimize for #2116

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
Nikolaj Bjorner 2019-02-01 14:59:36 -08:00
parent d1877f58a5
commit 6c464f8aec
5 changed files with 69 additions and 35 deletions

View file

@ -76,13 +76,6 @@ namespace sat {
return;
}
#if 0
if (st == status::deleted) (*m_out) << "d ";
for (unsigned i = 0; i < n; ++i) (*m_out) << c[i] << " ";
(*m_out) << "0\n";
return;
#endif
char buffer[10000];
char digits[20]; // enough for storing unsigned
char* lastd = digits + sizeof(digits);
@ -93,7 +86,7 @@ namespace sat {
buffer[1] = ' ';
len = 2;
}
for (unsigned i = 0; i < n && len < sizeof(buffer); ++i) {
for (unsigned i = 0; i < n; ++i) {
literal lit = c[i];
unsigned v = lit.var();
if (lit.sign()) buffer[len++] = '-';
@ -104,34 +97,18 @@ namespace sat {
v /= 10;
SASSERT(d > digits);
}
if (len + lastd - d < sizeof(buffer)) {
memcpy(buffer + len, d, lastd - d);
len += static_cast<unsigned>(lastd - d);
SASSERT(len + lastd - d < sizeof(buffer));
memcpy(buffer + len, d, lastd - d);
len += static_cast<unsigned>(lastd - d);
buffer[len++] = ' ';
if (len + 50 > sizeof(buffer)) {
m_out->write(buffer, len);
len = 0;
}
else {
len = sizeof(buffer) + 1;
}
if (len < sizeof(buffer)) {
buffer[len++] = ' ';
}
}
if (len < sizeof(buffer) + 2) {
buffer[len++] = '0';
buffer[len++] = '\n';
}
else {
len = sizeof(buffer) + 1;
}
if (len <= sizeof(buffer)) {
m_out->write(buffer, len);
}
else {
if (st == status::deleted) (*m_out) << "d ";
for (unsigned i = 0; i < n; ++i) (*m_out) << c[i] << " ";
(*m_out) << "0\n";
}
}
buffer[len++] = '0';
buffer[len++] = '\n';
m_out->write(buffer, len);
}
void drat::bdump(unsigned n, literal const* c, status st) {