mirror of
https://github.com/Z3Prover/z3
synced 2025-06-27 08:28:44 +00:00
na
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
parent
a1ded7f1ec
commit
b5d1b0336a
3 changed files with 32 additions and 10 deletions
|
@ -133,6 +133,7 @@ namespace polysat {
|
||||||
void set_max_iterations(unsigned n) { m_max_iterations = n; }
|
void set_max_iterations(unsigned n) { m_max_iterations = n; }
|
||||||
unsigned get_num_vars() const { return m_vars.size(); }
|
unsigned get_num_vars() const { return m_vars.size(); }
|
||||||
void reset();
|
void reset();
|
||||||
|
void propagate_bounds();
|
||||||
lbool make_feasible();
|
lbool make_feasible();
|
||||||
row add_row(var_t base, unsigned num_vars, var_t const* vars, numeral const* coeffs);
|
row add_row(var_t base, unsigned num_vars, var_t const* vars, numeral const* coeffs);
|
||||||
std::ostream& display(std::ostream& out) const;
|
std::ostream& display(std::ostream& out) const;
|
||||||
|
|
|
@ -727,6 +727,11 @@ namespace polysat {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
template<typename Ext>
|
||||||
|
void fixplex<Ext>::propagate_bounds() {
|
||||||
|
for (unsigned i = 0; i < m_rows.size(); ++i)
|
||||||
|
propagate_bounds(row(i));
|
||||||
|
}
|
||||||
|
|
||||||
template<typename Ext>
|
template<typename Ext>
|
||||||
void fixplex<Ext>::propagate_bounds(row const& r) {
|
void fixplex<Ext>::propagate_bounds(row const& r) {
|
||||||
|
@ -753,17 +758,20 @@ namespace polysat {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::cout << "bounds " << free_v << "\n";
|
||||||
if (free_v != null_var) {
|
if (free_v != null_var) {
|
||||||
if (free_c == 1) {
|
|
||||||
//
|
//
|
||||||
// free_v in [lo_sum, hi_sum[
|
// c = 1:
|
||||||
// new_bound(r, free_v, lo_sum, hi_sum);
|
// free_v in [lo_sum, hi_sum[
|
||||||
}
|
// c = -1:
|
||||||
else {
|
// free_v in [1 - hi_sum, 1 - lo_sum[
|
||||||
// c = -1
|
//
|
||||||
// free_v in [1 - hi_sum, 1 - lo_sum[
|
|
||||||
// new_bound(r, free_v, 1 - hi_sum, 1 - lo_sum);
|
if (free_c == 1)
|
||||||
}
|
new_bound(r, free_v, lo_sum, hi_sum);
|
||||||
|
else
|
||||||
|
new_bound(r, free_v, 1 - hi_sum, 1 - lo_sum);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
for (auto const& e : M.row_entries(r)) {
|
for (auto const& e : M.row_entries(r)) {
|
||||||
|
|
|
@ -54,10 +54,23 @@ namespace polysat {
|
||||||
fp.run();
|
fp.run();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void test4() {
|
||||||
|
scoped_fp fp;
|
||||||
|
var_t x = 0, y = 1, z = 2;
|
||||||
|
var_t ys[3] = { x, y, z };
|
||||||
|
numeral coeffs[3] = { 1, 1, 1 };
|
||||||
|
fp.add_row(x, 3, ys, coeffs);
|
||||||
|
fp.set_bounds(x, 3, 4);
|
||||||
|
fp.set_bounds(y, 3, 6);
|
||||||
|
fp.run();
|
||||||
|
fp.propagate_bounds();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void tst_fixplex() {
|
void tst_fixplex() {
|
||||||
polysat::test1();
|
polysat::test1();
|
||||||
polysat::test2();
|
polysat::test2();
|
||||||
polysat::test3();
|
polysat::test3();
|
||||||
|
polysat::test4();
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue