3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-04-23 17:15:31 +00:00
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
Nikolaj Bjorner 2021-08-13 23:18:52 -07:00
parent 60dbfed69e
commit 6ac7c2b942
3 changed files with 105 additions and 122 deletions

View file

@ -71,21 +71,18 @@ namespace polysat {
fp.set_bounds(x, 3, 4, 1);
fp.set_bounds(y, 3, 6, 2);
fp.run();
fp.propagate_bounds();
fp.reset();
coeffs[2] = 0ull - 1;
fp.add_row(x, 3, ys, coeffs);
fp.set_bounds(x, 3, 4, 1);
fp.set_bounds(y, 3, 6, 2);
fp.run();
fp.propagate_bounds();
fp.reset();
fp.add_row(x, 3, ys, coeffs);
fp.set_bounds(x, 3, 4, 1);
fp.set_bounds(y, 3, 6, 2);
fp.set_bounds(z, 1, 8, 3);
fp.run();
fp.propagate_bounds();
fp.reset();
}
@ -372,31 +369,35 @@ namespace polysat {
}
static void save_scenario(
unsigned id,
vector<svector<std::pair<unsigned, uint64_t>>> const& rows,
svector<ineq> const& ineqs,
vector<mod_interval<uint64_t>> const& bounds) {
std::cout << "static void scenario() {";
std::cout << " vector<svector<std::pair<unsigned, uint64_t>>> rows\n;";
std::cout << " svector<ineq> ineqs\n;";
std::cout << " vector<mod_interval<uint64_t>> bounds\n";
for (auto row : rows) {
std::cout << "static void scenario" << id << "() {\n";
std::cout << " vector<svector<std::pair<unsigned, uint64_t>>> rows;\n";
std::cout << " svector<ineq> ineqs;\n";
std::cout << " vector<mod_interval<uint64_t>> bounds;\n";
for (auto const& row : rows) {
std::cout << " rows.push_back(svector<std::pair<unsigned, uint64_t>>());\n";
for (auto col : row)
std::cout << " rows.back().push_back(std::make_pair(" << col.first << ", " << col.second << ");\n";
}
for (auto ineq : ineqs)
std::cout << " ineqs.push_back(ineq(" << ineq.v << ", " << ineq.w << " " << ineq.strict << ");\n";
for (auto bound : bounds)
for (auto const& ineq : ineqs)
std::cout << " ineqs.push_back(ineq(" << ineq.v << ", " << ineq.w << ", 0, " << (ineq.strict?"true":"false") << ");\n";
for (auto const& bound : bounds)
std::cout << " bounds.push_back(mod_interval<uint64_t>(" << bound.lo << ", " << bound.hi << ");\n";
std::cout << " test_lp(rows, ineqs, bounds);\n}\n";
std::cout << " test_lp(rows, ineqs, bounds); \n }\n";
}
static unsigned num_test = 0;
static void test_lp(
vector<svector<std::pair<unsigned, uint64_t>>> const& rows,
svector<ineq> const& ineqs,
vector<mod_interval<uint64_t>> const& bounds) {
// save_scenario(++num_test, rows, ineqs, bounds);
unsigned num_vars = 0;
for (auto const& row : rows)
for (auto [v, c] : row)