3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-04-12 12:08:18 +00:00

fix build break

This commit is contained in:
Nikolaj Bjorner 2021-01-31 22:56:42 -08:00
parent 33525007ab
commit 6f346bf804
5 changed files with 28 additions and 8 deletions

View file

@ -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);

View file

@ -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 {

View file

@ -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 {

View file

@ -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;

View file

@ -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 };