mirror of
https://github.com/Z3Prover/z3
synced 2025-04-12 12:08:18 +00:00
fix build break
This commit is contained in:
parent
33525007ab
commit
6f346bf804
|
@ -1936,5 +1936,3 @@ void core::collect_statistics(::statistics & st) {
|
||||||
|
|
||||||
} // end of nla
|
} // end of nla
|
||||||
|
|
||||||
template void nla::intervals::set_var_interval<dd::w_dep::without_deps>(lpvar v, nla::intervals::interval& b);
|
|
||||||
template void nla::intervals::set_var_interval<dd::w_dep::with_deps>(lpvar v, nla::intervals::interval& b);
|
|
||||||
|
|
|
@ -23,13 +23,13 @@ namespace q {
|
||||||
std::ostream& lit::display(std::ostream& out) const {
|
std::ostream& lit::display(std::ostream& out) const {
|
||||||
ast_manager& m = lhs.m();
|
ast_manager& m = lhs.m();
|
||||||
if (m.is_true(rhs) && !sign)
|
if (m.is_true(rhs) && !sign)
|
||||||
return out << lhs;
|
return out << mk_bounded_pp(lhs, m, 2);
|
||||||
if (m.is_false(rhs) && !sign)
|
if (m.is_false(rhs) && !sign)
|
||||||
return out << "(not " << lhs << ")";
|
return out << "(not " << mk_bounded_pp(lhs, m, 2) << ")";
|
||||||
return
|
return
|
||||||
out << mk_bounded_pp(lhs, lhs.m(), 2)
|
out << mk_bounded_pp(lhs, m, 2)
|
||||||
<< (sign ? " != " : " == ")
|
<< (sign ? " != " : " == ")
|
||||||
<< mk_bounded_pp(rhs, rhs.m(), 2);
|
<< mk_bounded_pp(rhs, m, 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
std::ostream& clause::display(euf::solver& ctx, std::ostream& out) const {
|
std::ostream& clause::display(euf::solver& ctx, std::ostream& out) const {
|
||||||
|
|
|
@ -7,7 +7,7 @@ Module Name:
|
||||||
|
|
||||||
Abstract:
|
Abstract:
|
||||||
|
|
||||||
Clause and literals
|
Literals, clauses, justifications for quantifier instantiation
|
||||||
|
|
||||||
Author:
|
Author:
|
||||||
|
|
||||||
|
@ -49,7 +49,6 @@ namespace q {
|
||||||
euf::enode* const* nodes() { return m_nodes; }
|
euf::enode* const* nodes() { return m_nodes; }
|
||||||
|
|
||||||
euf::enode* operator[](unsigned i) const { return m_nodes[i]; }
|
euf::enode* operator[](unsigned i) const { return m_nodes[i]; }
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
struct clause {
|
struct clause {
|
||||||
|
|
|
@ -328,7 +328,26 @@ namespace q {
|
||||||
return l.sign ? ~ctx.mk_literal(fml) : ctx.mk_literal(fml);
|
return l.sign ? ~ctx.mk_literal(fml) : ctx.mk_literal(fml);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
struct ematch::reset_in_queue : public trail<euf::solver> {
|
||||||
|
ematch& e;
|
||||||
|
reset_in_queue(ematch& e) :e(e) {}
|
||||||
|
|
||||||
|
void undo(euf::solver& ctx) override {
|
||||||
|
e.m_node_in_queue.reset();
|
||||||
|
e.m_clause_in_queue.reset();
|
||||||
|
e.m_in_queue_set = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void insert(ematch& e) {
|
||||||
|
if (!e.m_in_queue_set) {
|
||||||
|
e.m_in_queue_set = true;
|
||||||
|
e.ctx.push(reset_in_queue(e));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
void ematch::insert_to_propagate(unsigned node_id) {
|
void ematch::insert_to_propagate(unsigned node_id) {
|
||||||
|
reset_in_queue::insert(*this);
|
||||||
m_node_in_queue.assure_domain(node_id);
|
m_node_in_queue.assure_domain(node_id);
|
||||||
if (m_node_in_queue.contains(node_id))
|
if (m_node_in_queue.contains(node_id))
|
||||||
return;
|
return;
|
||||||
|
@ -338,6 +357,7 @@ namespace q {
|
||||||
}
|
}
|
||||||
|
|
||||||
void ematch::insert_clause_in_queue(unsigned idx) {
|
void ematch::insert_clause_in_queue(unsigned idx) {
|
||||||
|
reset_in_queue::insert(*this);
|
||||||
m_clause_in_queue.assure_domain(idx);
|
m_clause_in_queue.assure_domain(idx);
|
||||||
if (!m_clause_in_queue.contains(idx)) {
|
if (!m_clause_in_queue.contains(idx)) {
|
||||||
m_clause_in_queue.insert(idx);
|
m_clause_in_queue.insert(idx);
|
||||||
|
@ -482,6 +502,7 @@ namespace q {
|
||||||
}
|
}
|
||||||
m_clause_in_queue.reset();
|
m_clause_in_queue.reset();
|
||||||
m_node_in_queue.reset();
|
m_node_in_queue.reset();
|
||||||
|
m_in_queue_set = true;
|
||||||
if (m_inst_queue.propagate())
|
if (m_inst_queue.propagate())
|
||||||
propagated = true;
|
propagated = true;
|
||||||
return propagated;
|
return propagated;
|
||||||
|
|
|
@ -53,6 +53,7 @@ namespace q {
|
||||||
struct insert_binding;
|
struct insert_binding;
|
||||||
struct pop_clause;
|
struct pop_clause;
|
||||||
struct scoped_mark_reset;
|
struct scoped_mark_reset;
|
||||||
|
struct reset_in_queue;
|
||||||
|
|
||||||
|
|
||||||
euf::solver& ctx;
|
euf::solver& ctx;
|
||||||
|
@ -73,6 +74,7 @@ namespace q {
|
||||||
expr_fast_mark1 m_mark;
|
expr_fast_mark1 m_mark;
|
||||||
unsigned m_generation_propagation_threshold{ 3 };
|
unsigned m_generation_propagation_threshold{ 3 };
|
||||||
ptr_vector<app> m_ground;
|
ptr_vector<app> m_ground;
|
||||||
|
bool m_in_queue_set{ false };
|
||||||
nat_set m_node_in_queue;
|
nat_set m_node_in_queue;
|
||||||
nat_set m_clause_in_queue;
|
nat_set m_clause_in_queue;
|
||||||
unsigned m_qhead { 0 };
|
unsigned m_qhead { 0 };
|
||||||
|
|
Loading…
Reference in a new issue