mirror of
https://github.com/Z3Prover/z3
synced 2025-04-24 17:45:32 +00:00
fix iterator
This commit is contained in:
parent
e5289f84a0
commit
b6c478c2ca
2 changed files with 5 additions and 7 deletions
|
@ -136,11 +136,11 @@ namespace polysat {
|
|||
conflict_core_iterator(constraint_manager& cm, it1_t it1, it1_t end1, it2_t it2):
|
||||
m_cm(&cm), m_it1(it1), m_end1(end1), m_it2(it2) {}
|
||||
|
||||
static conflict_core_iterator begin(constraint_manager& cm, signed_constraints cs, indexed_uint_set lits) {
|
||||
static conflict_core_iterator begin(constraint_manager& cm, signed_constraints const& cs, indexed_uint_set const& lits) {
|
||||
return {cm, cs.begin(), cs.end(), lits.begin()};
|
||||
}
|
||||
|
||||
static conflict_core_iterator end(constraint_manager& cm, signed_constraints cs, indexed_uint_set lits) {
|
||||
static conflict_core_iterator end(constraint_manager& cm, signed_constraints const& cs, indexed_uint_set const& lits) {
|
||||
return {cm, cs.end(), cs.end(), lits.end()};
|
||||
}
|
||||
|
||||
|
|
|
@ -47,8 +47,7 @@ namespace polysat {
|
|||
// c2 ... constraint that is currently false
|
||||
// Try to replace it with a new false constraint (derived from superposition with a true constraint)
|
||||
signed_constraint ex_polynomial_superposition::find_replacement(signed_constraint c2, pvar v, conflict_core& core) {
|
||||
for (auto it1 = core.begin(); it1 != core.end(); ++it1) {
|
||||
signed_constraint c1 = *it1;
|
||||
for (auto c1 : core) {
|
||||
if (!is_positive_equality_over(v, c1))
|
||||
continue;
|
||||
if (!c1.is_currently_true(s()))
|
||||
|
@ -69,14 +68,13 @@ namespace polysat {
|
|||
// TODO(later): check superposition into disequality again (see notes)
|
||||
// true = done, false = abort, undef = continue
|
||||
lbool ex_polynomial_superposition::try_explain1(pvar v, conflict_core& core) {
|
||||
for (auto it2 = core.begin(); it2 != core.end(); ++it2) {
|
||||
signed_constraint c2 = *it2;
|
||||
for (auto c2 : core) {
|
||||
if (!is_positive_equality_over(v, c2))
|
||||
continue;
|
||||
if (!c2.is_currently_false(s()))
|
||||
continue;
|
||||
|
||||
// TODO: can try multiple replacements at once; then the it2 loop needs to be done only once... (requires some reorganization for storing the premises)
|
||||
// TODO: can try multiple replacements at once; then the c2 loop needs to be done only once... (requires some reorganization for storing the premises)
|
||||
signed_constraint c = find_replacement(c2, v, core);
|
||||
if (!c)
|
||||
continue;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue