mirror of
https://github.com/Z3Prover/z3
synced 2025-04-24 09:35:32 +00:00
Re-enable saturation
This commit is contained in:
parent
4aa04fa475
commit
630276dbad
3 changed files with 9 additions and 8 deletions
|
@ -57,13 +57,13 @@ TODO:
|
|||
namespace polysat {
|
||||
|
||||
class conflict_resolver {
|
||||
saturation m_saturate;
|
||||
saturation m_saturation;
|
||||
ex_polynomial_superposition m_poly_sup;
|
||||
free_variable_elimination m_free_variable_elimination;
|
||||
|
||||
public:
|
||||
conflict_resolver(solver& s)
|
||||
: m_saturate(s)
|
||||
: m_saturation(s)
|
||||
, m_poly_sup(s)
|
||||
, m_free_variable_elimination(s)
|
||||
{}
|
||||
|
@ -71,8 +71,8 @@ namespace polysat {
|
|||
bool try_resolve_value(pvar v, conflict& core) {
|
||||
if (m_poly_sup.perform(v, core))
|
||||
return true;
|
||||
// if (m_saturate.perform(v, core))
|
||||
// return true;
|
||||
if (m_saturation.perform(v, core))
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
|
@ -80,7 +80,7 @@ namespace polysat {
|
|||
// return false;
|
||||
SASSERT(c.bvalue(s) != l_true);
|
||||
|
||||
m_lemma.insert(c);
|
||||
m_lemma.insert_eval(c);
|
||||
core.add_lemma(m_rule, m_lemma.build());
|
||||
return true;
|
||||
}
|
||||
|
@ -91,7 +91,7 @@ namespace polysat {
|
|||
}
|
||||
|
||||
void saturation::insert_omega(pdd const& x, pdd const& y) {
|
||||
m_lemma.insert(s.umul_ovfl(x, y));
|
||||
m_lemma.insert_eval(s.umul_ovfl(x, y));
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
|
@ -1059,7 +1059,7 @@ namespace polysat {
|
|||
// xy < xz and !Omega(x*y) => y < z
|
||||
static void test_ineq_axiom1(unsigned bw = 32, std::optional<unsigned> perm = std::nullopt) {
|
||||
if (perm) {
|
||||
scoped_solver s(std::string(__func__) + " perm=" + std::to_string(*perm));
|
||||
scoped_solver s(concat(__func__, " bw=", bw, " perm=", *perm));
|
||||
auto const bound = rational::power_of_two(bw/2);
|
||||
auto x = s.var(s.add_var(bw));
|
||||
auto y = s.var(s.add_var(bw));
|
||||
|
@ -1544,7 +1544,8 @@ void tst_polysat() {
|
|||
|
||||
#if 0 // Enable this block to run a single unit test with detailed output.
|
||||
collect_test_records = false;
|
||||
test_polysat::test_pop_conflict();
|
||||
// test_polysat::test_ineq_axiom1(32, 1);
|
||||
// test_polysat::test_pop_conflict();
|
||||
// test_polysat::test_l2();
|
||||
// test_polysat::test_ineq1();
|
||||
// test_polysat::test_quot_rem();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue