mirror of
https://github.com/Z3Prover/z3
synced 2026-02-20 07:24:40 +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
|
|
@ -111,7 +111,7 @@ func_decl_ref bvarray2uf_rewriter_cfg::mk_uf_for_array(expr * e) {
|
|||
sort * domain = get_index_sort(e);
|
||||
sort * range = get_value_sort(e);
|
||||
bv_f = m_manager.mk_fresh_func_decl("f_t", "", 1, &domain, range);
|
||||
TRACE("bvarray2uf_rw", tout << "for " << mk_ismt2_pp(e, m_manager) << " new func_decl is " << mk_ismt2_pp(bv_f, m_manager) << std::endl; );
|
||||
TRACE(bvarray2uf_rw, tout << "for " << mk_ismt2_pp(e, m_manager) << " new func_decl is " << mk_ismt2_pp(bv_f, m_manager) << std::endl; );
|
||||
if (m_fmc) {
|
||||
m_fmc->hide(bv_f);
|
||||
if (is_uninterp_const(e))
|
||||
|
|
@ -122,7 +122,7 @@ func_decl_ref bvarray2uf_rewriter_cfg::mk_uf_for_array(expr * e) {
|
|||
m_manager.inc_ref(bv_f);
|
||||
}
|
||||
else {
|
||||
TRACE("bvarray2uf_rw", tout << "for " << mk_ismt2_pp(e, m_manager) << " found " << mk_ismt2_pp(bv_f, m_manager) << std::endl; );
|
||||
TRACE(bvarray2uf_rw, tout << "for " << mk_ismt2_pp(e, m_manager) << " found " << mk_ismt2_pp(bv_f, m_manager) << std::endl; );
|
||||
}
|
||||
|
||||
return func_decl_ref(bv_f, m_manager);
|
||||
|
|
@ -164,7 +164,7 @@ br_status bvarray2uf_rewriter_cfg::reduce_app(func_decl * f, unsigned num, expr
|
|||
func_decl_ref f_t(mk_uf_for_array(args[1]), m_manager);
|
||||
func_decl_ref f_f(mk_uf_for_array(args[2]), m_manager);
|
||||
|
||||
TRACE("bvarray2uf_rw", tout << "(ite " << c << ", " << f_t->get_name()
|
||||
TRACE(bvarray2uf_rw, tout << "(ite " << c << ", " << f_t->get_name()
|
||||
<< ", " << f_f->get_name() << ")" << std::endl;);
|
||||
|
||||
sort * sorts[1] = { get_index_sort(args[1]->get_sort()) };
|
||||
|
|
@ -189,7 +189,7 @@ br_status bvarray2uf_rewriter_cfg::reduce_app(func_decl * f, unsigned num, expr
|
|||
|
||||
result = m_array_util.mk_as_array(bv_f);
|
||||
|
||||
TRACE("bvarray2uf_rw", tout << "result: " << mk_ismt2_pp(result, m_manager) << ")" << std::endl;);
|
||||
TRACE(bvarray2uf_rw, tout << "result: " << mk_ismt2_pp(result, m_manager) << ")" << std::endl;);
|
||||
res = BR_DONE;
|
||||
|
||||
}
|
||||
|
|
@ -197,7 +197,7 @@ br_status bvarray2uf_rewriter_cfg::reduce_app(func_decl * f, unsigned num, expr
|
|||
throw default_exception("not handled by bvarray2uf");
|
||||
}
|
||||
else if (f->get_family_id() == null_family_id) {
|
||||
TRACE("bvarray2uf_rw", tout << "UF APP: " << f->get_name() << std::endl; );
|
||||
TRACE(bvarray2uf_rw, tout << "UF APP: " << f->get_name() << std::endl; );
|
||||
|
||||
bool has_bv_arrays = false;
|
||||
func_decl_ref f_t(m_manager);
|
||||
|
|
@ -225,13 +225,13 @@ br_status bvarray2uf_rewriter_cfg::reduce_app(func_decl * f, unsigned num, expr
|
|||
res = BR_FAILED;
|
||||
}
|
||||
else if (m_array_util.get_family_id() == f->get_family_id()) {
|
||||
TRACE("bvarray2uf_rw", tout << "APP: " << f->get_name() << std::endl; );
|
||||
TRACE(bvarray2uf_rw, tout << "APP: " << f->get_name() << std::endl; );
|
||||
|
||||
if (m_array_util.is_select(f)) {
|
||||
SASSERT(num == 2);
|
||||
expr * t = args[0];
|
||||
expr * i = args[1];
|
||||
TRACE("bvarray2uf_rw", tout <<
|
||||
TRACE(bvarray2uf_rw, tout <<
|
||||
"select; array: " << mk_ismt2_pp(t, m()) <<
|
||||
" index: " << mk_ismt2_pp(i, m()) << std::endl;);
|
||||
|
||||
|
|
@ -309,7 +309,7 @@ br_status bvarray2uf_rewriter_cfg::reduce_app(func_decl * f, unsigned num, expr
|
|||
expr * s = args[0];
|
||||
expr * i = args[1];
|
||||
expr * v = args[2];
|
||||
TRACE("bvarray2uf_rw", tout <<
|
||||
TRACE(bvarray2uf_rw, tout <<
|
||||
"store; array: " << mk_ismt2_pp(s, m()) <<
|
||||
" index: " << mk_ismt2_pp(i, m()) <<
|
||||
" value: " << mk_ismt2_pp(v, m()) << std::endl;);
|
||||
|
|
@ -340,7 +340,7 @@ br_status bvarray2uf_rewriter_cfg::reduce_app(func_decl * f, unsigned num, expr
|
|||
expr_ref ground_atom(m_manager);
|
||||
ground_atom = m_manager.mk_eq(m_manager.mk_app(f_t, i), v);
|
||||
extra_assertions.push_back(ground_atom);
|
||||
TRACE("bvarray2uf_rw", tout << "ground atom: " << mk_ismt2_pp(ground_atom, m()) << std::endl; );
|
||||
TRACE(bvarray2uf_rw, tout << "ground atom: " << mk_ismt2_pp(ground_atom, m()) << std::endl; );
|
||||
}
|
||||
}
|
||||
else {
|
||||
|
|
@ -350,17 +350,17 @@ br_status bvarray2uf_rewriter_cfg::reduce_app(func_decl * f, unsigned num, expr
|
|||
}
|
||||
}
|
||||
|
||||
CTRACE("bvarray2uf_rw", res == BR_DONE, tout << "result: " << mk_ismt2_pp(result, m()) << std::endl; );
|
||||
CTRACE(bvarray2uf_rw, res == BR_DONE, tout << "result: " << mk_ismt2_pp(result, m()) << std::endl; );
|
||||
return res;
|
||||
}
|
||||
|
||||
bool bvarray2uf_rewriter_cfg::pre_visit(expr * t)
|
||||
{
|
||||
TRACE("bvarray2uf_rw_q", tout << "pre_visit: " << mk_ismt2_pp(t, m()) << std::endl;);
|
||||
TRACE(bvarray2uf_rw_q, tout << "pre_visit: " << mk_ismt2_pp(t, m()) << std::endl;);
|
||||
|
||||
if (is_quantifier(t)) {
|
||||
quantifier * q = to_quantifier(t);
|
||||
TRACE("bvarray2uf_rw_q", tout << "pre_visit quantifier [" << q->get_id() << "]: " << mk_ismt2_pp(q->get_expr(), m()) << std::endl;);
|
||||
TRACE(bvarray2uf_rw_q, tout << "pre_visit quantifier [" << q->get_id() << "]: " << mk_ismt2_pp(q->get_expr(), m()) << std::endl;);
|
||||
sort_ref_vector new_bindings(m_manager);
|
||||
for (unsigned i = 0; i < q->get_num_decls(); i++)
|
||||
new_bindings.push_back(q->get_decl_sort(i));
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue