mirror of
https://github.com/Z3Prover/z3
synced 2025-04-12 12:08:18 +00:00
pretty print rules with quoted symbols
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
parent
646ace6842
commit
654c02701c
|
@ -1626,6 +1626,23 @@ namespace datalog {
|
||||||
|
|
||||||
void context::get_rules_as_formulas(expr_ref_vector& rules, svector<symbol>& names) {
|
void context::get_rules_as_formulas(expr_ref_vector& rules, svector<symbol>& names) {
|
||||||
expr_ref fml(m);
|
expr_ref fml(m);
|
||||||
|
datalog::rule_manager& rm = get_rule_manager();
|
||||||
|
datalog::rule_ref_vector rule_refs(rm);
|
||||||
|
|
||||||
|
// ensure that rules are all using bound variables.
|
||||||
|
for (unsigned i = 0; i < m_rule_fmls.size(); ++i) {
|
||||||
|
ptr_vector<sort> sorts;
|
||||||
|
get_free_vars(m_rule_fmls[i].get(), sorts);
|
||||||
|
if (!sorts.empty()) {
|
||||||
|
rm.mk_rule(m_rule_fmls[i].get(), rule_refs, m_rule_names[i]);
|
||||||
|
m_rule_fmls[i] = m_rule_fmls.back();
|
||||||
|
m_rule_names[i] = m_rule_names.back();
|
||||||
|
m_rule_fmls.pop_back();
|
||||||
|
m_rule_names.pop_back();
|
||||||
|
--i;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
add_rules(rule_refs);
|
||||||
rule_set::iterator it = m_rule_set.begin(), end = m_rule_set.end();
|
rule_set::iterator it = m_rule_set.begin(), end = m_rule_set.end();
|
||||||
for (; it != end; ++it) {
|
for (; it != end; ++it) {
|
||||||
(*it)->to_formula(fml);
|
(*it)->to_formula(fml);
|
||||||
|
@ -1732,13 +1749,20 @@ namespace datalog {
|
||||||
}
|
}
|
||||||
PP(r);
|
PP(r);
|
||||||
if (symbol::null != nm) {
|
if (symbol::null != nm) {
|
||||||
|
out << " :named ";
|
||||||
while (fresh_names.contains(nm)) {
|
while (fresh_names.contains(nm)) {
|
||||||
std::ostringstream s;
|
std::ostringstream s;
|
||||||
s << nm << "!";
|
s << nm << "!";
|
||||||
nm = symbol(s.str().c_str());
|
nm = symbol(s.str().c_str());
|
||||||
}
|
}
|
||||||
fresh_names.add(nm);
|
fresh_names.add(nm);
|
||||||
out << " :named " << nm << ")";
|
if (is_smt2_quoted_symbol(nm)) {
|
||||||
|
out << mk_smt2_quoted_symbol(nm);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
out << nm;
|
||||||
|
}
|
||||||
|
out << ")";
|
||||||
}
|
}
|
||||||
out << ")\n";
|
out << ")\n";
|
||||||
}
|
}
|
||||||
|
|
|
@ -461,6 +461,11 @@ namespace datalog {
|
||||||
{
|
{
|
||||||
rule_ref r(r0, m_context.get_rule_manager());
|
rule_ref r(r0, m_context.get_rule_manager());
|
||||||
|
|
||||||
|
if (r->has_quantifiers()) {
|
||||||
|
res = r;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
start:
|
start:
|
||||||
unsigned u_len = r->get_uninterpreted_tail_size();
|
unsigned u_len = r->get_uninterpreted_tail_size();
|
||||||
unsigned len = r->get_tail_size();
|
unsigned len = r->get_tail_size();
|
||||||
|
|
Loading…
Reference in a new issue