3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-09-06 01:48:02 +00:00

avoid creating full tables when negated variables are unitary, add lazy table infrastructure, fix coi_filter for relations, reduce dependencies on fixedpoing_parameters.hpp header file

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
Nikolaj Bjorner 2013-09-08 05:52:18 -07:00
parent 0f9160a738
commit 716663b04a
40 changed files with 1221 additions and 126 deletions

View file

@ -24,6 +24,7 @@ Revision History:
#include "expr_safe_replace.h"
#include "filter_model_converter.h"
#include "dl_mk_interp_tail_simplifier.h"
#include "fixedpoint_params.hpp"
namespace datalog {

View file

@ -52,14 +52,10 @@ namespace datalog {
ptr_vector<func_decl> todo;
rule_set::decl2rules body2rules;
// initialization for reachability
rel_context_base* rc = m_context.get_rel_context();
for (rule_set::iterator it = source.begin(); it != source.end(); ++it) {
rule * r = *it;
all.insert(r->get_decl());
bool non_empty =
(rc && !rc->is_empty_relation(r->get_decl())) ||
r->get_uninterpreted_tail_size() == 0;
if (non_empty) {
if (r->get_uninterpreted_tail_size() == 0) {
if (!reached.contains(r->get_decl())) {
reached.insert(r->get_decl());
todo.insert(r->get_decl());
@ -77,6 +73,17 @@ namespace datalog {
}
}
}
rel_context_base* rc = m_context.get_rel_context();
if (rc) {
func_decl_set::iterator fit = all.begin(), fend = all.end();
for (; fit != fend; ++fit) {
if (!rc->is_empty_relation(*fit) &&
!reached.contains(*fit)) {
reached.insert(*fit);
todo.insert(*fit);
}
}
}
// reachability computation
while (!todo.empty()) {
func_decl * d = todo.back();

View file

@ -39,6 +39,7 @@ Revision History:
#include"dl_mk_karr_invariants.h"
#include"dl_mk_backwards.h"
#include"dl_mk_loop_counter.h"
#include"fixedpoint_params.hpp"
namespace datalog {

View file

@ -54,6 +54,7 @@ Revision History:
#include"dl_mk_magic_symbolic.h"
#include"dl_context.h"
#include"fixedpoint_params.hpp"
namespace datalog {

View file

@ -23,6 +23,8 @@ Revision History:
#include "dl_context.h"
#include "expr_safe_replace.h"
#include "expr_abstract.h"
#include"fixedpoint_params.hpp"
namespace datalog {

View file

@ -26,6 +26,8 @@ Revision History:
#include "dl_mk_quantifier_instantiation.h"
#include "dl_context.h"
#include "pattern_inference.h"
#include "fixedpoint_params.hpp"
namespace datalog {

View file

@ -52,6 +52,7 @@ Subsumption transformation (remove rule):
#include "rewriter.h"
#include "rewriter_def.h"
#include "dl_mk_rule_inliner.h"
#include "fixedpoint_params.hpp"
namespace datalog {

View file

@ -18,6 +18,7 @@ Revision History:
#include"dl_mk_scale.h"
#include"dl_context.h"
#include"fixedpoint_params.hpp"
namespace datalog {

View file

@ -33,6 +33,7 @@ Revision History:
#include"dl_mk_quantifier_instantiation.h"
#include"dl_mk_subsumption_checker.h"
#include"dl_mk_scale.h"
#include"fixedpoint_params.hpp"
namespace datalog {