3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-07-18 18:36:41 +00:00

Add coalesce transformer

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
Nikolaj Bjorner 2012-10-16 08:21:32 -07:00
parent d16db63e56
commit 6b414ba5cf
5 changed files with 280 additions and 5 deletions

View file

@ -31,6 +31,7 @@ Revision History:
#include "dl_rule_set.h"
#include "dl_mk_slice.h"
#include "dl_mk_unfold.h"
#include "dl_mk_coalesce.h"
using namespace pdr;
@ -120,11 +121,12 @@ lbool dl_interface::query(expr * query) {
if (m_ctx.get_params().get_uint(":unfold-rules",0) > 0) {
unsigned num_unfolds = m_ctx.get_params().get_uint(":unfold-rules",0);
datalog::rule_transformer transformer(m_ctx);
datalog::mk_unfold* unfold = alloc(datalog::mk_unfold, m_ctx);
transformer.register_plugin(unfold);
datalog::rule_transformer transformer1(m_ctx), transformer2(m_ctx);
transformer1.register_plugin(alloc(datalog::mk_coalesce, m_ctx));
m_ctx.transform_rules(transformer1, mc, pc);
transformer2.register_plugin(alloc(datalog::mk_unfold, m_ctx));
while (num_unfolds > 0) {
m_ctx.transform_rules(transformer, mc, pc);
m_ctx.transform_rules(transformer2, mc, pc);
--num_unfolds;
}
}