mirror of
https://github.com/Z3Prover/z3
synced 2025-04-29 20:05:51 +00:00
remove uneeded calls to datalog_context::get_rules(), since it can be expensive.
thanks to Henning Guenther for finding this. Signed-off-by: Nuno Lopes <nlopes@microsoft.com>
This commit is contained in:
parent
eeef4d29d6
commit
8edd551f20
4 changed files with 23 additions and 16 deletions
|
@ -1438,8 +1438,9 @@ namespace datalog {
|
|||
m_ctx.ensure_opened();
|
||||
m_rules.reset();
|
||||
datalog::rule_manager& rule_manager = m_ctx.get_rule_manager();
|
||||
datalog::rule_set old_rules(m_ctx.get_rules());
|
||||
rule_manager.mk_query(query, m_ctx.get_rules());
|
||||
rule_set& rules0 = m_ctx.get_rules();
|
||||
datalog::rule_set old_rules(rules0);
|
||||
rule_manager.mk_query(query, rules0);
|
||||
expr_ref bg_assertion = m_ctx.get_background_assertion();
|
||||
apply_default_transformation(m_ctx);
|
||||
|
||||
|
@ -1449,12 +1450,14 @@ namespace datalog {
|
|||
transformer.register_plugin(slice);
|
||||
m_ctx.transform_rules(transformer);
|
||||
}
|
||||
if (m_ctx.get_rules().get_output_predicates().empty()) {
|
||||
|
||||
const rule_set& rules = m_ctx.get_rules();
|
||||
if (rules.get_output_predicates().empty()) {
|
||||
return l_false;
|
||||
}
|
||||
|
||||
m_query_pred = m_ctx.get_rules().get_output_predicate();
|
||||
m_rules.replace_rules(m_ctx.get_rules());
|
||||
m_query_pred = rules.get_output_predicate();
|
||||
m_rules.replace_rules(rules);
|
||||
m_rules.close();
|
||||
m_ctx.reopen();
|
||||
m_ctx.replace_rules(old_rules);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue