mirror of
https://github.com/Z3Prover/z3
synced 2025-04-15 13:28:47 +00:00
Merge branch 'opt' of https://git01.codeplex.com/z3 into opt
This commit is contained in:
commit
8e2fedbc2e
|
@ -324,7 +324,7 @@ namespace datalog {
|
||||||
m_bind_variables.add_var(m.mk_const(var));
|
m_bind_variables.add_var(m.mk_const(var));
|
||||||
}
|
}
|
||||||
|
|
||||||
expr_ref context::bind_variables(expr* fml, bool is_forall) {
|
expr_ref context::bind_vars(expr* fml, bool is_forall) {
|
||||||
return m_bind_variables(fml, is_forall);
|
return m_bind_variables(fml, is_forall);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1128,7 +1128,7 @@ namespace datalog {
|
||||||
|
|
||||||
void context::get_raw_rule_formulas(expr_ref_vector& rules, svector<symbol>& names){
|
void context::get_raw_rule_formulas(expr_ref_vector& rules, svector<symbol>& names){
|
||||||
for (unsigned i = 0; i < m_rule_fmls.size(); ++i) {
|
for (unsigned i = 0; i < m_rule_fmls.size(); ++i) {
|
||||||
expr_ref r = bind_variables(m_rule_fmls[i].get(), true);
|
expr_ref r = bind_vars(m_rule_fmls[i].get(), true);
|
||||||
rules.push_back(r.get());
|
rules.push_back(r.get());
|
||||||
// rules.push_back(m_rule_fmls[i].get());
|
// rules.push_back(m_rule_fmls[i].get());
|
||||||
names.push_back(m_rule_names[i]);
|
names.push_back(m_rule_names[i]);
|
||||||
|
|
|
@ -287,7 +287,7 @@ namespace datalog {
|
||||||
universal (if is_forall is true) or existential
|
universal (if is_forall is true) or existential
|
||||||
quantifier.
|
quantifier.
|
||||||
*/
|
*/
|
||||||
expr_ref bind_variables(expr* fml, bool is_forall);
|
expr_ref bind_vars(expr* fml, bool is_forall);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Register datalog relation.
|
Register datalog relation.
|
||||||
|
|
|
@ -369,7 +369,7 @@ namespace datalog {
|
||||||
}
|
}
|
||||||
|
|
||||||
void rule_manager::bind_variables(expr* fml, bool is_forall, expr_ref& result) {
|
void rule_manager::bind_variables(expr* fml, bool is_forall, expr_ref& result) {
|
||||||
result = m_ctx.bind_variables(fml, is_forall);
|
result = m_ctx.bind_vars(fml, is_forall);
|
||||||
}
|
}
|
||||||
|
|
||||||
void rule_manager::flatten_body(app_ref_vector& body) {
|
void rule_manager::flatten_body(app_ref_vector& body) {
|
||||||
|
|
|
@ -103,7 +103,7 @@ struct dl_context {
|
||||||
void add_rule(expr * rule, symbol const& name) {
|
void add_rule(expr * rule, symbol const& name) {
|
||||||
init();
|
init();
|
||||||
if (m_collected_cmds) {
|
if (m_collected_cmds) {
|
||||||
expr_ref rl = m_context->bind_variables(rule, true);
|
expr_ref rl = m_context->bind_vars(rule, true);
|
||||||
m_collected_cmds->m_rules.push_back(rl);
|
m_collected_cmds->m_rules.push_back(rl);
|
||||||
m_collected_cmds->m_names.push_back(name);
|
m_collected_cmds->m_names.push_back(name);
|
||||||
m_trail.push(push_back_vector<dl_context, expr_ref_vector>(m_collected_cmds->m_rules));
|
m_trail.push(push_back_vector<dl_context, expr_ref_vector>(m_collected_cmds->m_rules));
|
||||||
|
@ -116,7 +116,7 @@ struct dl_context {
|
||||||
|
|
||||||
bool collect_query(expr* q) {
|
bool collect_query(expr* q) {
|
||||||
if (m_collected_cmds) {
|
if (m_collected_cmds) {
|
||||||
expr_ref qr = m_context->bind_variables(q, false);
|
expr_ref qr = m_context->bind_vars(q, false);
|
||||||
m_collected_cmds->m_queries.push_back(qr);
|
m_collected_cmds->m_queries.push_back(qr);
|
||||||
m_trail.push(push_back_vector<dl_context, expr_ref_vector>(m_collected_cmds->m_queries));
|
m_trail.push(push_back_vector<dl_context, expr_ref_vector>(m_collected_cmds->m_queries));
|
||||||
return true;
|
return true;
|
||||||
|
|
|
@ -248,7 +248,6 @@ namespace datalog {
|
||||||
|
|
||||||
|
|
||||||
class product_set_factory {
|
class product_set_factory {
|
||||||
friend class product_set_factory;
|
|
||||||
unsigned char m_data[0];
|
unsigned char m_data[0];
|
||||||
public:
|
public:
|
||||||
enum initial_t {
|
enum initial_t {
|
||||||
|
|
|
@ -63,7 +63,7 @@ namespace datalog {
|
||||||
m_elems.push_back(fact2doc(f));
|
m_elems.push_back(fact2doc(f));
|
||||||
}
|
}
|
||||||
bool udoc_relation::empty() const {
|
bool udoc_relation::empty() const {
|
||||||
if (get_signature().empty()) return false;
|
if (m_elems.is_empty()) return true;
|
||||||
// TBD: make this a complete check
|
// TBD: make this a complete check
|
||||||
for (unsigned i = 0; i < m_elems.size(); ++i) {
|
for (unsigned i = 0; i < m_elems.size(); ++i) {
|
||||||
if (!dm.is_empty(m_elems[i])) return false;
|
if (!dm.is_empty(m_elems[i])) return false;
|
||||||
|
|
|
@ -959,7 +959,7 @@ namespace smt {
|
||||||
typename atoms::iterator hi_inf1 = begin2, hi_sup1 = begin2;
|
typename atoms::iterator hi_inf1 = begin2, hi_sup1 = begin2;
|
||||||
bool flo_inf, fhi_inf, flo_sup, fhi_sup;
|
bool flo_inf, fhi_inf, flo_sup, fhi_sup;
|
||||||
// std::cout << atoms.size() << "\n";
|
// std::cout << atoms.size() << "\n";
|
||||||
ptr_addr_hashtable<typename atom> visited;
|
ptr_addr_hashtable<atom> visited;
|
||||||
for (unsigned i = 0; i < atoms.size(); ++i) {
|
for (unsigned i = 0; i < atoms.size(); ++i) {
|
||||||
atom* a1 = atoms[i];
|
atom* a1 = atoms[i];
|
||||||
lo_inf1 = next_inf(a1, A_LOWER, lo_inf, end, flo_inf);
|
lo_inf1 = next_inf(a1, A_LOWER, lo_inf, end, flo_inf);
|
||||||
|
|
Loading…
Reference in a new issue