mirror of
https://github.com/Z3Prover/z3
synced 2026-04-27 22:33:35 +00:00
Centralize and document TRACE tags using X-macros (#7657)
* Introduce X-macro-based trace tag definition - Created trace_tags.def to centralize TRACE tag definitions - Each tag includes a symbolic name and description - Set up enum class TraceTag for type-safe usage in TRACE macros * Add script to generate Markdown documentation from trace_tags.def - Python script parses trace_tags.def and outputs trace_tags.md * Refactor TRACE_NEW to prepend TraceTag and pass enum to is_trace_enabled * trace: improve trace tag handling system with hierarchical tagging - Introduce hierarchical tag-class structure: enabling a tag class activates all child tags - Unify TRACE, STRACE, SCTRACE, and CTRACE under enum TraceTag - Implement initial version of trace_tag.def using X(tag, tag_class, description) (class names and descriptions to be refined in a future update) * trace: replace all string-based TRACE tags with enum TraceTag - Migrated all TRACE, STRACE, SCTRACE, and CTRACE macros to use enum TraceTag values instead of raw string literals * trace : add cstring header * trace : Add Markdown documentation generation from trace_tags.def via mk_api_doc.py * trace : rename macro parameter 'class' to 'tag_class' and remove Unicode comment in trace_tags.h. * trace : Add TODO comment for future implementation of tag_class activation * trace : Disable code related to tag_class until implementation is ready (#7663).
This commit is contained in:
parent
d766292dab
commit
0a93ff515d
583 changed files with 8698 additions and 7299 deletions
|
|
@ -197,7 +197,7 @@ namespace q {
|
|||
expr_ref_vector eqs(m);
|
||||
add_domain_bounds(mdl, qb);
|
||||
auto proj = solver_project(mdl, qb, eqs, false);
|
||||
CTRACE("q", !proj, tout << "could not project " << qb.mbody << " " << eqs << "\n" << mdl);
|
||||
CTRACE(q, !proj, tout << "could not project " << qb.mbody << " " << eqs << "\n" << mdl);
|
||||
if (!proj)
|
||||
return false;
|
||||
add_instantiation(q, proj);
|
||||
|
|
@ -234,7 +234,7 @@ namespace q {
|
|||
if (is_exists(q))
|
||||
qlit.neg();
|
||||
ctx.rewrite(proj);
|
||||
TRACE("q", tout << "project: " << proj << "\n";);
|
||||
TRACE(q, tout << "project: " << proj << "\n";);
|
||||
IF_VERBOSE(11, verbose_stream() << "mbi:\n" << mk_pp(q, m) << "\n" << proj << "\n");
|
||||
++m_stats.m_num_instantiations;
|
||||
unsigned generation = ctx.get_max_generation(proj);
|
||||
|
|
@ -280,7 +280,7 @@ namespace q {
|
|||
mbody = subst(mbody, result->vars);
|
||||
if (is_forall(q))
|
||||
mbody = mk_not(m, mbody);
|
||||
TRACE("q", tout << "specialize " << mbody << "\n";);
|
||||
TRACE(q, tout << "specialize " << mbody << "\n";);
|
||||
return result;
|
||||
}
|
||||
|
||||
|
|
@ -319,7 +319,7 @@ namespace q {
|
|||
app_ref_vector vars(qb.vars);
|
||||
bool fmls_extracted = false;
|
||||
m_defs.reset();
|
||||
TRACE("q",
|
||||
TRACE(q,
|
||||
tout << "Project\n";
|
||||
tout << fmls << "\n";
|
||||
tout << "model\n";
|
||||
|
|
@ -337,13 +337,13 @@ namespace q {
|
|||
app* v = vars.get(i);
|
||||
auto* p = get_plugin(v);
|
||||
if (p && !fmls_extracted) {
|
||||
TRACE("q", tout << "domain eqs\n" << qb.domain_eqs << "\n";);
|
||||
TRACE(q, tout << "domain eqs\n" << qb.domain_eqs << "\n";);
|
||||
|
||||
fmls.append(qb.domain_eqs);
|
||||
eliminate_nested_vars(fmls, qb);
|
||||
for (expr* e : fmls)
|
||||
if (!m_model->is_true(e)) {
|
||||
TRACE("q", tout << "not true: " << mk_pp(e, m) << " := " << (*m_model)(e) << "\n");
|
||||
TRACE(q, tout << "not true: " << mk_pp(e, m) << " := " << (*m_model)(e) << "\n");
|
||||
return expr_ref(nullptr, m);
|
||||
}
|
||||
mbp::project_plugin proj(m);
|
||||
|
|
@ -357,21 +357,21 @@ namespace q {
|
|||
return expr_ref(m);
|
||||
}
|
||||
else if (!(*p)(*m_model, vars, fmls)) {
|
||||
TRACE("q", tout << "theory projection failed - use value\n");
|
||||
TRACE(q, tout << "theory projection failed - use value\n");
|
||||
}
|
||||
}
|
||||
for (app* v : vars) {
|
||||
expr_ref term(m);
|
||||
expr_ref val = (*m_model)(v);
|
||||
term = replace_model_value(val);
|
||||
TRACE("euf", tout << "replaced model value " << term << "\nfrom\n" << val << "\n");
|
||||
TRACE(euf, tout << "replaced model value " << term << "\nfrom\n" << val << "\n");
|
||||
rep.insert(v, term);
|
||||
if (ctx.use_drat())
|
||||
m_defs.push_back({expr_ref(v, m), term});
|
||||
eqs.push_back(m.mk_eq(v, val));
|
||||
}
|
||||
rep(fmls);
|
||||
TRACE("q", tout << "generated formulas\n" << fmls << "\ngenerated eqs:\n" << eqs << "\n";
|
||||
TRACE(q, tout << "generated formulas\n" << fmls << "\ngenerated eqs:\n" << eqs << "\n";
|
||||
for (auto const& [v,t] : m_defs) tout << v << " := " << t << "\n");
|
||||
return mk_and(fmls);
|
||||
}
|
||||
|
|
@ -436,7 +436,7 @@ namespace q {
|
|||
|
||||
void mbqi::assert_expr(expr* e) {
|
||||
expr_ref _e(e, m);
|
||||
TRACE("q", tout << _e << "\n");
|
||||
TRACE(q, tout << _e << "\n");
|
||||
m_solver->assert_expr(e);
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue