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:
parent
0f9160a738
commit
716663b04a
40 changed files with 1221 additions and 126 deletions
|
@ -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 {
|
||||
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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 {
|
||||
|
||||
|
|
|
@ -54,6 +54,7 @@ Revision History:
|
|||
|
||||
#include"dl_mk_magic_symbolic.h"
|
||||
#include"dl_context.h"
|
||||
#include"fixedpoint_params.hpp"
|
||||
|
||||
namespace datalog {
|
||||
|
||||
|
|
|
@ -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 {
|
||||
|
||||
|
|
|
@ -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 {
|
||||
|
||||
|
|
|
@ -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 {
|
||||
|
||||
|
|
|
@ -18,6 +18,7 @@ Revision History:
|
|||
|
||||
#include"dl_mk_scale.h"
|
||||
#include"dl_context.h"
|
||||
#include"fixedpoint_params.hpp"
|
||||
|
||||
namespace datalog {
|
||||
|
||||
|
|
|
@ -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 {
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue