3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-07-19 10:52:02 +00:00
This commit is contained in:
Nikolaj Bjorner 2023-04-17 09:11:16 -07:00
parent 97b66d13c0
commit 1319b64bb0

View file

@ -2858,19 +2858,20 @@ namespace pb {
void solver::subsumes(pbc& p1, literal lit) { void solver::subsumes(pbc& p1, literal lit) {
for (constraint* c : m_cnstr_use_list[lit.index()]) { for (constraint* c : m_cnstr_use_list[lit.index()]) {
if (c == &p1 || c->was_removed()) continue; if (c == &p1 || c->was_removed() || c->lit() != sat::null_literal)
bool s = false; continue;
bool sub = false;
switch (c->tag()) { switch (c->tag()) {
case pb::tag_t::card_t: case pb::tag_t::card_t:
s = subsumes(p1, c->to_card()); sub = subsumes(p1, c->to_card());
break; break;
case pb::tag_t::pb_t: case pb::tag_t::pb_t:
s = subsumes(p1, c->to_pb()); sub = subsumes(p1, c->to_pb());
break; break;
default: default:
break; break;
} }
if (s) { if (sub) {
++m_stats.m_num_pb_subsumes; ++m_stats.m_num_pb_subsumes;
set_non_learned(p1); set_non_learned(p1);
remove_constraint(*c, "subsumed"); remove_constraint(*c, "subsumed");