3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-04-23 17:15:31 +00:00

avoid going creating hnf_cuts if all involved vars have integral values

Signed-off-by: Lev Nachmanson <levnach@hotmail.com>

add explanations to hnf cuts

Signed-off-by: Lev Nachmanson <levnach@hotmail.com>

nits and virtual methods (#68)

* local

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>

* virtual method in bound propagator

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>

cleanup from std::cout

Signed-off-by: Lev Nachmanson <levnach@hotmail.com>

handle the case when the number of terms is greater than the number of variables in hnf

Signed-off-by: Lev Nachmanson <levnach@hotmail.com>

method name's fix

Signed-off-by: Lev Nachmanson <levnach@hotmail.com>

restore hnf_cutter to work with m_row_count <= m_column_count

Signed-off-by: Lev Nachmanson <levnach@hotmail.com>

tune addition of rational numbers (#70)

* log quantifiers only if present

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>

* merge and fix some warnings

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>

* set new arith as default for LIA

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>

* local

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>

* virtual method in bound propagator

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>

* prepare for mixed integer-real

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>

* fix default tactic usage

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>

give shorter explanations, call hnf only when have a not integral var

Signed-off-by: Lev Nachmanson <levnach@hotmail.com>

overhaul of mpq (#71)

* log quantifiers only if present

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>

* merge and fix some warnings

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>

* set new arith as default for LIA

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>

* local

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>

* virtual method in bound propagator

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>

* prepare for mixed integer-real

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>

* fix default tactic usage

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>

* overhaul of mpz/mpq

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>

* disabled temporary setting

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>

* remove prints

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>

fix for 32 bit build (#72)

* log quantifiers only if present

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>

* merge and fix some warnings

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>

* set new arith as default for LIA

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>

* local

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>

* virtual method in bound propagator

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>

* prepare for mixed integer-real

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>

* fix default tactic usage

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>

* overhaul of mpz/mpq

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>

* disabled temporary setting

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>

* remove prints

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>

* customize for 64 bit

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>

yes (#74)

* log quantifiers only if present

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>

* merge and fix some warnings

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>

* set new arith as default for LIA

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>

* local

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>

* virtual method in bound propagator

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>

* prepare for mixed integer-real

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>

* fix default tactic usage

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>

* overhaul of mpz/mpq

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>

* disabled temporary setting

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>

* remove prints

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>

* customize for 64 bit

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>

* customize for 64 bit

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>

* more refactor

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>

fix the merge

Signed-off-by: Lev Nachmanson <levnach@hotmail.com>

fixes in maximize_term untested

Signed-off-by: Lev Nachmanson <levnach@hotmail.com>

fix compilation (#75)

* log quantifiers only if present

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>

* merge and fix some warnings

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>

* set new arith as default for LIA

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>

* local

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>

* virtual method in bound propagator

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>

* prepare for mixed integer-real

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>

* fix default tactic usage

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>

* overhaul of mpz/mpq

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>

* disabled temporary setting

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>

* remove prints

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>

* customize for 64 bit

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>

* customize for 64 bit

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>

* more refactor

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>

* merge

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>

* relax check

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>

* change for gcc

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>

* merge

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
Lev Nachmanson 2018-05-31 10:37:22 -07:00
parent 9be49ff6ff
commit 9ba4026bc6
41 changed files with 942 additions and 1280 deletions

View file

@ -44,10 +44,8 @@
#include "util/lp/numeric_pair.h"
#include "util/lp/binary_heap_upair_queue.h"
#include "util/lp/stacked_value.h"
#include "util/lp/stacked_unordered_set.h"
#include "util/lp/int_set.h"
#include "util/stopwatch.h"
#include "util/lp/stacked_map.h"
#include <cstdlib>
#include "test/lp/gomory_test.h"
#include "util/lp/matrix.h"
@ -55,9 +53,16 @@
#include "util/lp/square_sparse_matrix_def.h"
#include "util/lp/lu_def.h"
#include "util/lp/general_matrix.h"
#include "util/lp/bound_propagator.h"
namespace lp {
unsigned seed = 1;
class my_bound_propagator : public bound_propagator {
public:
my_bound_propagator(lar_solver & ls): bound_propagator(ls) {}
void consume(mpq const& v, lp::constraint_index j) override {}
};
random_gen g_rand;
static unsigned my_random() {
return g_rand();
@ -1942,44 +1947,6 @@ void setup_args_parser(argument_parser & parser) {
struct fff { int a; int b;};
void test_stacked_map_itself() {
vector<int> v(3,0);
for(auto u : v)
std::cout << u << std::endl;
std::unordered_map<int, fff> foo;
fff l;
l.a = 0;
l.b =1;
foo[1] = l;
int r = 1;
int k = foo[r].a;
std::cout << k << std::endl;
stacked_map<int, double> m;
m[0] = 3;
m[1] = 4;
m.push();
m[1] = 5;
m[2] = 2;
m.pop();
m.erase(2);
m[2] = 3;
m.erase(1);
m.push();
m[3] = 100;
m[4] = 200;
m.erase(1);
m.push();
m[5] = 300;
m[6] = 400;
m[5] = 301;
m.erase(5);
m[3] = 122;
m.pop(2);
m.pop();
}
void test_stacked_unsigned() {
std::cout << "test stacked unsigned" << std::endl;
@ -2038,36 +2005,10 @@ void test_stacked_vector() {
}
void test_stacked_set() {
#ifdef Z3DEBUG
std::cout << "test_stacked_set" << std::endl;
stacked_unordered_set<int> s;
s.insert(1);
s.insert(2);
s.insert(3);
std::unordered_set<int> scopy = s();
s.push();
s.insert(4);
s.pop();
lp_assert(s() == scopy);
s.push();
s.push();
s.insert(4);
s.insert(5);
s.push();
s.insert(4);
s.pop(3);
lp_assert(s() == scopy);
#endif
}
void test_stacked() {
std::cout << "test_stacked_map()" << std::endl;
test_stacked_map_itself();
test_stacked_value();
test_stacked_vector();
test_stacked_set();
}
char * find_home_dir() {
@ -2815,7 +2756,7 @@ void test_bound_propagation_one_small_sample1() {
vector<implied_bound> ev;
ls.add_var_bound(a, LE, mpq(1));
ls.solve();
bound_propagator bp(ls);
my_bound_propagator bp(ls);
ls.propagate_bounds_for_touched_rows(bp);
std::cout << " bound ev from test_bound_propagation_one_small_sample1" << std::endl;
for (auto & be : bp.m_ibounds) {
@ -2868,7 +2809,7 @@ void test_bound_propagation_one_row() {
vector<implied_bound> ev;
ls.add_var_bound(x0, LE, mpq(1));
ls.solve();
bound_propagator bp(ls);
my_bound_propagator bp(ls);
ls.propagate_bounds_for_touched_rows(bp);
}
void test_bound_propagation_one_row_with_bounded_vars() {
@ -2884,7 +2825,7 @@ void test_bound_propagation_one_row_with_bounded_vars() {
ls.add_var_bound(x0, LE, mpq(3));
ls.add_var_bound(x0, LE, mpq(1));
ls.solve();
bound_propagator bp(ls);
my_bound_propagator bp(ls);
ls.propagate_bounds_for_touched_rows(bp);
}
void test_bound_propagation_one_row_mixed() {
@ -2898,7 +2839,7 @@ void test_bound_propagation_one_row_mixed() {
vector<implied_bound> ev;
ls.add_var_bound(x1, LE, mpq(1));
ls.solve();
bound_propagator bp(ls);
my_bound_propagator bp(ls);
ls.propagate_bounds_for_touched_rows(bp);
}
@ -2921,7 +2862,7 @@ void test_bound_propagation_two_rows() {
vector<implied_bound> ev;
ls.add_var_bound(y, LE, mpq(1));
ls.solve();
bound_propagator bp(ls);
my_bound_propagator bp(ls);
ls.propagate_bounds_for_touched_rows(bp);
}
@ -2941,7 +2882,7 @@ void test_total_case_u() {
vector<implied_bound> ev;
ls.add_var_bound(z, GE, zero_of_type<mpq>());
ls.solve();
bound_propagator bp(ls);
my_bound_propagator bp(ls);
ls.propagate_bounds_for_touched_rows(bp);
}
bool contains_j_kind(unsigned j, lconstraint_kind kind, const mpq & rs, const vector<implied_bound> & ev) {
@ -2968,7 +2909,7 @@ void test_total_case_l(){
vector<implied_bound> ev;
ls.add_var_bound(z, LE, zero_of_type<mpq>());
ls.solve();
bound_propagator bp(ls);
my_bound_propagator bp(ls);
ls.propagate_bounds_for_touched_rows(bp);
lp_assert(ev.size() == 4);
lp_assert(contains_j_kind(x, GE, - one_of_type<mpq>(), ev));

View file

@ -4,7 +4,6 @@ Copyright (c) 2015 Microsoft Corporation
--*/
#include "util/lp/sparse_matrix.h"
#include "math/simplex/sparse_matrix_def.h"
#include "math/simplex/simplex.h"
#include "math/simplex/simplex_def.h"