3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-04-27 19:05:51 +00:00

bool_vector, some spacer tidy

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
Nikolaj Bjorner 2020-04-05 12:59:04 -07:00
parent 2ed26e8e73
commit b889b110ee
106 changed files with 239 additions and 266 deletions

View file

@ -582,7 +582,7 @@ namespace datalog {
const unsigned_vector m_cols2;
bool m_all_neg_bound; //all columns are bound at least once
bool m_overlap; //one column in negated table is bound multiple times
svector<bool> m_bound;
bool_vector m_bound;
convenient_negation_filter_fn(const base_object & tgt, const base_object & neg_t,
unsigned joined_col_cnt, const unsigned * t_cols, const unsigned * negated_cols)

View file

@ -92,12 +92,12 @@ namespace datalog {
family_id finite_product_relation_plugin::get_relation_kind(finite_product_relation & r,
const bool * table_columns) {
const relation_signature & sig = r.get_signature();
svector<bool> table_cols_vect(sig.size(), table_columns);
bool_vector table_cols_vect(sig.size(), table_columns);
return m_spec_store.get_relation_kind(sig, rel_spec(table_cols_vect));
}
void finite_product_relation_plugin::get_all_possible_table_columns(relation_manager & rmgr,
const relation_signature & s, svector<bool> & table_columns) {
const relation_signature & s, bool_vector & table_columns) {
SASSERT(table_columns.empty());
unsigned s_sz = s.size();
for(unsigned i=0; i<s_sz; i++) {
@ -148,7 +148,7 @@ namespace datalog {
}
relation_base * finite_product_relation_plugin::mk_empty(const relation_signature & s) {
svector<bool> table_columns;
bool_vector table_columns;
get_all_possible_table_columns(s, table_columns);
#ifndef _EXTERNAL_RELEASE
unsigned s_sz = s.size();
@ -275,7 +275,7 @@ namespace datalog {
SASSERT(join_fun);
scoped_rel<table_base> res_table = (*join_fun)(t, *idx_singleton);
svector<bool> table_cols(sig.size(), true);
bool_vector table_cols(sig.size(), true);
finite_product_relation * res = mk_empty(sig, table_cols.c_ptr());
//this one does not need to be deleted -- it will be taken over by \c res in the \c init function
@ -301,7 +301,7 @@ namespace datalog {
idx_singleton_fact.push_back(0);
idx_singleton->add_fact(idx_singleton_fact);
svector<bool> table_cols(sig.size(), false);
bool_vector table_cols(sig.size(), false);
finite_product_relation * res = mk_empty(sig, table_cols.c_ptr());
relation_vector rels;
@ -378,7 +378,7 @@ namespace datalog {
scoped_ptr<table_transformer_fn> m_tjoined_second_rel_remover;
//determines which columns of the result are table columns and which are in the inner relation
svector<bool> m_res_table_columns;
bool_vector m_res_table_columns;
public:
class join_maker : public table_row_mutator_fn {
@ -529,7 +529,7 @@ namespace datalog {
scoped_ptr<relation_union_fn> m_inner_rel_union;
//determines which columns of the result are table columns and which are in the inner relation
svector<bool> m_res_table_columns;
bool_vector m_res_table_columns;
public:
project_fn(const finite_product_relation & r, unsigned col_cnt, const unsigned * removed_cols)
: convenient_relation_project_fn(r.get_signature(), col_cnt, removed_cols) {
@ -665,7 +665,7 @@ namespace datalog {
unsigned_vector m_rel_permutation;
//determines which columns of the result are table columns and which are in the inner relation
svector<bool> m_res_table_columns;
bool_vector m_res_table_columns;
public:
rename_fn(const finite_product_relation & r, unsigned cycle_len, const unsigned * permutation_cycle)
: convenient_relation_rename_fn(r.get_signature(), cycle_len, permutation_cycle) {
@ -2156,7 +2156,7 @@ namespace datalog {
return true;
}
unsigned sig_sz = rels.back()->get_signature().size();
svector<bool> table_cols(sig_sz, true);
bool_vector table_cols(sig_sz, true);
ptr_vector<finite_product_relation>::iterator it = rels.begin();
ptr_vector<finite_product_relation>::iterator end = rels.end();
@ -2221,7 +2221,7 @@ namespace datalog {
scoped_rel<relation_base> moved_cols_trel =
rmgr.get_table_relation_plugin(moved_cols_table->get_plugin()).mk_from_table(moved_cols_sig, moved_cols_table);
svector<bool> moved_cols_table_flags(moved_cols_sig.size(), false);
bool_vector moved_cols_table_flags(moved_cols_sig.size(), false);
scoped_rel<finite_product_relation> moved_cols_rel = get_plugin().mk_empty(moved_cols_sig,
moved_cols_table_flags.c_ptr());

View file

@ -36,10 +36,10 @@ namespace datalog {
public:
struct rel_spec {
family_id m_inner_kind; //null_family_id means we don't care about the kind
svector<bool> m_table_cols;
bool_vector m_table_cols;
rel_spec() : m_inner_kind(null_family_id) {}
rel_spec(const svector<bool>& table_cols)
rel_spec(const bool_vector& table_cols)
: m_inner_kind(null_family_id), m_table_cols(table_cols) {}
bool operator==(const rel_spec & o) const {
@ -74,8 +74,8 @@ namespace datalog {
family_id get_relation_kind(finite_product_relation & r, const bool * table_columns);
static void get_all_possible_table_columns(relation_manager & rmgr, const relation_signature & s,
svector<bool> & table_columns);
void get_all_possible_table_columns(const relation_signature & s, svector<bool> & table_columns) {
bool_vector & table_columns);
void get_all_possible_table_columns(const relation_signature & s, bool_vector & table_columns) {
get_all_possible_table_columns(get_manager(), s, table_columns);
}

View file

@ -644,10 +644,10 @@ namespace datalog {
relation_signature sig;
rmgr.from_predicate(e_decl, sig);
svector<bool> inner_sieve(sz-1, true);
bool_vector inner_sieve(sz-1, true);
inner_sieve.push_back(false);
svector<bool> expl_sieve(sz-1, false);
bool_vector expl_sieve(sz-1, false);
expl_sieve.push_back(true);
sieve_relation_plugin & sieve_plugin = sieve_relation_plugin::get_plugin(rmgr);
@ -715,7 +715,7 @@ namespace datalog {
app_ref e_head(get_e_lit(r->get_head(), head_var), m_manager);
app_ref_vector e_tail(m_manager);
svector<bool> neg_flags;
bool_vector neg_flags;
unsigned pos_tail_sz = r->get_positive_tail_size();
for (unsigned i=0; i<pos_tail_sz; i++) {
unsigned e_var = next_var++;

View file

@ -373,7 +373,7 @@ namespace datalog {
app * new_head = r->get_head();
ptr_vector<app> new_tail;
svector<bool> new_negs;
bool_vector new_negs;
unsigned tail_sz = r->get_tail_size();
for (unsigned i=0; i<tail_sz; i++) {
new_tail.push_back(r->get_tail(i));

View file

@ -711,7 +711,7 @@ namespace datalog {
}
ptr_vector<app> tail(content);
svector<bool> negs(tail.size(), false);
bool_vector negs(tail.size(), false);
unsigned or_len = orig_r->get_tail_size();
for (unsigned i=orig_r->get_positive_tail_size(); i < or_len; i++) {
tail.push_back(orig_r->get_tail(i));

View file

@ -149,7 +149,7 @@ namespace datalog {
}
void sieve_relation_plugin::extract_inner_columns(const relation_signature & s, relation_plugin & inner,
svector<bool> & inner_columns) {
bool_vector & inner_columns) {
SASSERT(inner_columns.size()==s.size());
unsigned n = s.size();
relation_signature inner_sig_singleton;
@ -168,7 +168,7 @@ namespace datalog {
}
void sieve_relation_plugin::collect_inner_signature(const relation_signature & s,
const svector<bool> & inner_columns, relation_signature & inner_sig) {
const bool_vector & inner_columns, relation_signature & inner_sig) {
SASSERT(inner_columns.size()==s.size());
inner_sig.reset();
unsigned n = s.size();
@ -183,7 +183,7 @@ namespace datalog {
relation_signature & inner_sig) {
UNREACHABLE();
#if 0
svector<bool> inner_cols(s.size());
bool_vector inner_cols(s.size());
extract_inner_columns(s, inner_cols.c_ptr());
collect_inner_signature(s, inner_cols, inner_sig);
#endif
@ -228,7 +228,7 @@ namespace datalog {
UNREACHABLE();
return nullptr;
#if 0
svector<bool> inner_cols(s.size());
bool_vector inner_cols(s.size());
extract_inner_columns(s, inner_cols.c_ptr());
return mk_empty(s, inner_cols.c_ptr());
#endif
@ -236,7 +236,7 @@ namespace datalog {
sieve_relation * sieve_relation_plugin::mk_empty(const relation_signature & s, relation_plugin & inner_plugin) {
SASSERT(!inner_plugin.is_sieve_relation()); //it does not make sense to make a sieve of a sieve
svector<bool> inner_cols(s.size());
bool_vector inner_cols(s.size());
extract_inner_columns(s, inner_plugin, inner_cols);
relation_signature inner_sig;
collect_inner_signature(s, inner_cols, inner_sig);
@ -248,14 +248,14 @@ namespace datalog {
relation_signature empty_sig;
relation_plugin& plugin = get_manager().get_appropriate_plugin(s);
relation_base * inner = plugin.mk_full(p, empty_sig, null_family_id);
svector<bool> inner_cols;
bool_vector inner_cols;
inner_cols.resize(s.size(), false);
return mk_from_inner(s, inner_cols, inner);
}
sieve_relation * sieve_relation_plugin::full(func_decl* p, const relation_signature & s, relation_plugin & inner_plugin) {
SASSERT(!inner_plugin.is_sieve_relation()); //it does not make sense to make a sieve of a sieve
svector<bool> inner_cols(s.size());
bool_vector inner_cols(s.size());
extract_inner_columns(s, inner_plugin, inner_cols);
relation_signature inner_sig;
collect_inner_signature(s, inner_cols, inner_sig);
@ -267,7 +267,7 @@ namespace datalog {
sieve_relation_plugin & m_plugin;
unsigned_vector m_inner_cols_1;
unsigned_vector m_inner_cols_2;
svector<bool> m_result_inner_cols;
bool_vector m_result_inner_cols;
scoped_ptr<relation_join_fn> m_inner_join_fun;
public:
@ -347,7 +347,7 @@ namespace datalog {
class sieve_relation_plugin::transformer_fn : public convenient_relation_transformer_fn {
svector<bool> m_result_inner_cols;
bool_vector m_result_inner_cols;
scoped_ptr<relation_transformer_fn> m_inner_fun;
public:
@ -383,7 +383,7 @@ namespace datalog {
}
}
svector<bool> result_inner_cols = r.m_inner_cols;
bool_vector result_inner_cols = r.m_inner_cols;
project_out_vector_columns(result_inner_cols, col_cnt, removed_cols);
relation_signature result_sig;
@ -419,7 +419,7 @@ namespace datalog {
unsigned_vector inner_permutation;
collect_sub_permutation(permutation, r.m_sig2inner, inner_permutation, inner_identity);
svector<bool> result_inner_cols = r.m_inner_cols;
bool_vector result_inner_cols = r.m_inner_cols;
permutate_by_cycle(result_inner_cols, cycle_len, permutation_cycle);
relation_signature result_sig;

View file

@ -31,7 +31,7 @@ namespace datalog {
friend class sieve_relation;
public:
struct rel_spec {
svector<bool> m_inner_cols;
bool_vector m_inner_cols;
family_id m_inner_kind;
/**
@ -70,9 +70,9 @@ namespace datalog {
family_id get_relation_kind(sieve_relation & r, const bool * inner_columns);
void extract_inner_columns(const relation_signature & s, relation_plugin & inner,
svector<bool> & inner_columns);
bool_vector & inner_columns);
void extract_inner_signature(const relation_signature & s, relation_signature & inner_sig);
void collect_inner_signature(const relation_signature & s, const svector<bool> & inner_columns,
void collect_inner_signature(const relation_signature & s, const bool_vector & inner_columns,
relation_signature & inner_sig);
public:
static symbol get_name() { return symbol("sieve_relation"); }
@ -89,7 +89,7 @@ namespace datalog {
family_id get_relation_kind(const relation_signature & sig, const bool * inner_columns,
family_id inner_kind);
family_id get_relation_kind(const relation_signature & sig, const svector<bool> & inner_columns,
family_id get_relation_kind(const relation_signature & sig, const bool_vector & inner_columns,
family_id inner_kind) {
SASSERT(sig.size()==inner_columns.size());
return get_relation_kind(sig, inner_columns.c_ptr(), inner_kind);
@ -108,7 +108,7 @@ namespace datalog {
sieve_relation * mk_from_inner(const relation_signature & s, const bool * inner_columns,
relation_base * inner_rel);
sieve_relation * mk_from_inner(const relation_signature & s, const svector<bool> & inner_columns,
sieve_relation * mk_from_inner(const relation_signature & s, const bool_vector & inner_columns,
relation_base * inner_rel) {
SASSERT(inner_columns.size()==s.size());
return mk_from_inner(s, inner_columns.c_ptr(), inner_rel);
@ -148,7 +148,7 @@ namespace datalog {
friend class sieve_relation_plugin::union_fn;
friend class sieve_relation_plugin::filter_fn;
svector<bool> m_inner_cols;
bool_vector m_inner_cols;
unsigned_vector m_sig2inner;
unsigned_vector m_inner2sig;

View file

@ -1112,7 +1112,7 @@ namespace datalog {
SASSERT(joined_col_cnt > 0 || neg.get_signature().size() == 0);
m_is_subtract = (joined_col_cnt == t.get_signature().size());
m_is_subtract &= (joined_col_cnt == neg.get_signature().size());
svector<bool> found(joined_col_cnt, false);
bool_vector found(joined_col_cnt, false);
for (unsigned i = 0; m_is_subtract && i < joined_col_cnt; ++i) {
m_is_subtract = !found[t_cols[i]] && (t_cols[i] == neg_cols[i]);
found[t_cols[i]] = true;