mirror of
https://github.com/Z3Prover/z3
synced 2025-06-23 14:23:40 +00:00
merge
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
commit
d7f16d0622
5 changed files with 21 additions and 8 deletions
|
@ -33,7 +33,7 @@ namespace polysat {
|
||||||
for (auto c1 : core) {
|
for (auto c1 : core) {
|
||||||
if (!c1->is_ule())
|
if (!c1->is_ule())
|
||||||
continue;
|
continue;
|
||||||
if (!c1.is_currently_false(s))
|
if (c1.is_currently_true(s))
|
||||||
continue;
|
continue;
|
||||||
auto c = c1.as_inequality();
|
auto c = c1.as_inequality();
|
||||||
if (try_ugt_x(v, core, c))
|
if (try_ugt_x(v, core, c))
|
||||||
|
@ -70,7 +70,7 @@ namespace polysat {
|
||||||
SASSERT(!crit1.is_currently_true(s));
|
SASSERT(!crit1.is_currently_true(s));
|
||||||
|
|
||||||
LOG("critical " << m_rule << " " << crit1);
|
LOG("critical " << m_rule << " " << crit1);
|
||||||
LOG("consequent " << c << " value: " << c.bvalue(s) << " " << c.is_currently_false(s) << " " << core.contains(~c));
|
LOG("consequent " << c << " value: " << c.bvalue(s) << " is-false: " << c.is_currently_false(s) << " " << core.contains(~c));
|
||||||
|
|
||||||
|
|
||||||
// ensure new core is a conflict
|
// ensure new core is a conflict
|
||||||
|
|
|
@ -61,7 +61,7 @@ namespace polysat {
|
||||||
|
|
||||||
void search_state::pop() {
|
void search_state::pop() {
|
||||||
auto const& item = m_items.back();
|
auto const& item = m_items.back();
|
||||||
if (item.is_assignment() && item.var() == m_assignment.back().first)
|
if (item.is_assignment() && !m_assignment.empty() && item.var() == m_assignment.back().first)
|
||||||
m_assignment.pop_back();
|
m_assignment.pop_back();
|
||||||
m_items.pop_back();
|
m_items.pop_back();
|
||||||
}
|
}
|
||||||
|
|
|
@ -458,8 +458,14 @@ namespace polysat {
|
||||||
SASSERT(is_conflict());
|
SASSERT(is_conflict());
|
||||||
|
|
||||||
if (m_conflict.conflict_var() != null_var) {
|
if (m_conflict.conflict_var() != null_var) {
|
||||||
|
pvar v = m_conflict.conflict_var();
|
||||||
// This case corresponds to a propagation of conflict_var, except it's not explicitly on the stack.
|
// This case corresponds to a propagation of conflict_var, except it's not explicitly on the stack.
|
||||||
VERIFY(m_viable.resolve(m_conflict.conflict_var(), m_conflict));
|
VERIFY(m_viable.resolve(v, m_conflict));
|
||||||
|
// TBD: saturate resulting conflict to get better lemmas.
|
||||||
|
LOG("try-saturate");
|
||||||
|
m_conflict.try_saturate(v);
|
||||||
|
LOG("end-try-saturate");
|
||||||
|
>>>>>>> ed9c0b84f668548ee1c11f14185b08333baa6f72
|
||||||
}
|
}
|
||||||
|
|
||||||
search_iterator search_it(m_search);
|
search_iterator search_it(m_search);
|
||||||
|
|
|
@ -198,7 +198,7 @@ namespace polysat {
|
||||||
lo = val - lambda_l;
|
lo = val - lambda_l;
|
||||||
}
|
}
|
||||||
SASSERT(hi <= s.var2pdd(v).max_value());
|
SASSERT(hi <= s.var2pdd(v).max_value());
|
||||||
LOG("forbidden interval " << e->interval << " [" << lo << ", " << hi << "[");
|
LOG("forbidden interval " << e->interval << " - " << val << " " << coeff_val << " [" << lo << ", " << hi << "[");
|
||||||
entry* ne = alloc_entry();
|
entry* ne = alloc_entry();
|
||||||
ne->src = e->src;
|
ne->src = e->src;
|
||||||
ne->side_cond = e->side_cond;
|
ne->side_cond = e->side_cond;
|
||||||
|
|
|
@ -1065,10 +1065,17 @@ namespace polysat {
|
||||||
|
|
||||||
void tst_polysat() {
|
void tst_polysat() {
|
||||||
|
|
||||||
|
polysat::test_ineq_axiom1();
|
||||||
polysat::test_l5();
|
polysat::test_ineq_axiom2();
|
||||||
|
polysat::test_ineq_axiom3();
|
||||||
|
polysat::test_ineq_axiom4();
|
||||||
|
polysat::test_ineq_axiom5();
|
||||||
|
polysat::test_ineq_axiom6();
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
polysat::test_ineq_basic4();
|
||||||
|
//return;
|
||||||
|
|
||||||
polysat::test_ineq_basic6();
|
polysat::test_ineq_basic6();
|
||||||
|
|
||||||
// polysat::test_monot_bounds(8);
|
// polysat::test_monot_bounds(8);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue