mirror of
https://github.com/Z3Prover/z3
synced 2025-08-25 20:46:01 +00:00
na
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
parent
d073583d88
commit
4261345503
7 changed files with 180 additions and 62 deletions
|
@ -129,6 +129,7 @@ add_executable(test-z3
|
|||
value_generator.cpp
|
||||
value_sweep.cpp
|
||||
var_subst.cpp
|
||||
viable.cpp
|
||||
vector.cpp
|
||||
lp/lp.cpp
|
||||
lp/nla_solver_test.cpp
|
||||
|
|
|
@ -266,4 +266,5 @@ int main(int argc, char ** argv) {
|
|||
TST_ARGV(polysat_argv);
|
||||
TST(fixplex);
|
||||
TST(mod_interval);
|
||||
TST(viable);
|
||||
}
|
||||
|
|
50
src/test/viable.cpp
Normal file
50
src/test/viable.cpp
Normal file
|
@ -0,0 +1,50 @@
|
|||
#include "math/polysat/log.h"
|
||||
#include "math/polysat/solver.h"
|
||||
#include "math/polysat/viable2.h"
|
||||
|
||||
namespace polysat {
|
||||
|
||||
struct solver_scopev {
|
||||
reslimit lim;
|
||||
};
|
||||
|
||||
struct scoped_solverv : public solver_scopev, public solver {
|
||||
viable2 v;
|
||||
scoped_solverv(): solver(lim), v(*this) {}
|
||||
};
|
||||
|
||||
static void test1() {
|
||||
scoped_solverv s;
|
||||
auto xv = s.add_var(3);
|
||||
auto x = s.var(xv);
|
||||
s.v.push(3);
|
||||
rational val;
|
||||
auto c = s.ule(x + 3, x + 5);
|
||||
s.v.intersect(xv, c);
|
||||
std::cout << s.v << "\n";
|
||||
std::cout << "min-max " << s.v.min_viable(xv) << " " << s.v.max_viable(xv) << "\n";
|
||||
s.v.intersect(xv, s.ule(x, 2));
|
||||
std::cout << s.v << "\n";
|
||||
s.v.intersect(xv, s.ule(1, x));
|
||||
std::cout << s.v << "\n";
|
||||
std::cout << "min-max " << s.v.min_viable(xv) << " " << s.v.max_viable(xv) << "\n";
|
||||
s.v.intersect(xv, s.ule(x, 3));
|
||||
std::cout << s.v << "\n";
|
||||
std::cout << s.v.find_viable(xv, val) << " " << val << "\n";
|
||||
std::cout << "min-max " << s.v.min_viable(xv) << " " << s.v.max_viable(xv) << "\n";
|
||||
s.v.intersect(xv, s.ule(3, x));
|
||||
std::cout << s.v << "\n";
|
||||
std::cout << s.v.find_viable(xv, val) << " " << val << "\n";
|
||||
}
|
||||
|
||||
static void test2() {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
void tst_viable() {
|
||||
polysat::test1();
|
||||
polysat::test2();
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue