mirror of
https://github.com/Z3Prover/z3
synced 2025-04-08 18:31:49 +00:00
DRAT debugging updates
This commit is contained in:
parent
6d0b89a989
commit
797f50e699
|
@ -541,8 +541,6 @@ namespace smt2 {
|
|||
unsigned epos = sexpr_stack().size();
|
||||
SASSERT(epos >= spos);
|
||||
unsigned num = epos - spos;
|
||||
if (num == 0)
|
||||
throw parser_exception("invalid empty s-expression");
|
||||
sexpr * r = sm().mk_composite(num, sexpr_stack().c_ptr() + spos, line, pos);
|
||||
sexpr_stack().shrink(spos);
|
||||
sexpr_stack().push_back(r);
|
||||
|
|
|
@ -112,6 +112,11 @@ namespace sat {
|
|||
}
|
||||
}
|
||||
|
||||
if (n == 3 && c[0] == literal(9357, true) && c[1] == literal(25, true) && c[2] == literal(8691, false)) {
|
||||
SASSERT(false);
|
||||
UNREACHABLE();
|
||||
}
|
||||
|
||||
if (!st.is_sat()) {
|
||||
for (char ch : m_theory[st.get_th()])
|
||||
buffer[len++] = ch;
|
||||
|
|
|
@ -745,8 +745,7 @@ namespace dt {
|
|||
else if (is_recognizer(term)) {
|
||||
enode* arg = n->get_arg(0);
|
||||
theory_var v = mk_var(arg);
|
||||
add_recognizer(v, n);
|
||||
mk_var(n);
|
||||
add_recognizer(v, n);
|
||||
}
|
||||
else {
|
||||
SASSERT(is_accessor(term));
|
||||
|
|
|
@ -188,6 +188,15 @@ public:
|
|||
result = bvu.mk_numeral(val, n);
|
||||
return;
|
||||
}
|
||||
if (name == "is" && sz == 3) {
|
||||
name = sexpr->get_child(2)->get_child(0)->get_symbol();
|
||||
f = ctx.find_func_decl(name, params.size(), params.c_ptr(), args.size(), sorts.c_ptr(), rng.get());
|
||||
if (!f)
|
||||
goto bail;
|
||||
datatype_util dtu(m);
|
||||
result = dtu.mk_is(f, args[0]);
|
||||
return;
|
||||
}
|
||||
for (unsigned i = 2; i < sz; ++i) {
|
||||
auto* child = sexpr->get_child(i);
|
||||
if (child->is_numeral() && child->get_numeral().is_unsigned())
|
||||
|
|
|
@ -64,9 +64,9 @@ bool is_debug_enabled(const char * tag);
|
|||
#define XASSERT(COND, EXTRA_CODE) DEBUG_CODE(if (assertions_enabled() && !(COND)) { notify_assertion_violation(__FILE__, __LINE__, #COND); { EXTRA_CODE } INVOKE_DEBUGGER(); })
|
||||
|
||||
#ifdef Z3DEBUG
|
||||
# define UNREACHABLE() DEBUG_CODE(notify_assertion_violation(__FILE__, __LINE__, "UNREACHABLE CODE WAS REACHED."); INVOKE_DEBUGGER();)
|
||||
# define UNREACHABLE() DEBUG_CODE(notify_assertion_violation(__FILE__, __LINE__, "UNEXPECTED CODE WAS REACHED."); INVOKE_DEBUGGER();)
|
||||
#else
|
||||
# define UNREACHABLE() { notify_assertion_violation(__FILE__, __LINE__, "UNREACHABLE CODE WAS REACHED."); exit(ERR_UNREACHABLE); } ((void) 0)
|
||||
# define UNREACHABLE() { notify_assertion_violation(__FILE__, __LINE__, "UNEXPECTED CODE WAS REACHED."); exit(ERR_UNREACHABLE); } ((void) 0)
|
||||
#endif
|
||||
|
||||
#ifdef Z3DEBUG
|
||||
|
|
|
@ -194,6 +194,8 @@ void sexpr::display(std::ostream & out) const {
|
|||
sexpr_composite const * n = todo.back().first;
|
||||
unsigned & idx = todo.back().second;
|
||||
unsigned num = n->get_num_children();
|
||||
if (num == 0)
|
||||
out << "(";
|
||||
while (idx < num) {
|
||||
sexpr const * child = n->get_child(idx);
|
||||
if (idx == 0)
|
||||
|
|
Loading…
Reference in a new issue