mirror of
https://github.com/Z3Prover/z3
synced 2025-04-23 17:15:31 +00:00
port over moving m_nla_lemmas into nla_core from the linear monomial propagation branch
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
parent
8d2b65b20b
commit
ec2937e2de
9 changed files with 80 additions and 84 deletions
|
@ -179,7 +179,6 @@ void test_basic_lemma_for_mon_neutral_from_factors_to_monomial_0() {
|
|||
v.push_back(lp_a);v.push_back(lp_c);
|
||||
nla.add_monic(lp_ac, v.size(), v.begin());
|
||||
|
||||
vector<lemma> lv;
|
||||
|
||||
// set abcde = ac * bde
|
||||
// ac = 1 then abcde = bde, but we have abcde < bde
|
||||
|
@ -193,8 +192,9 @@ void test_basic_lemma_for_mon_neutral_from_factors_to_monomial_0() {
|
|||
s.set_column_value_test(lp_bde, lp::impq(rational(16)));
|
||||
|
||||
|
||||
VERIFY(nla.get_core().test_check(lv) == l_false);
|
||||
VERIFY(nla.get_core().test_check() == l_false);
|
||||
|
||||
auto const& lv = nla.get_core().lemmas();
|
||||
nla.get_core().print_lemma(lv.back(), std::cout);
|
||||
|
||||
ineq i0(lp_ac, llc::NE, 1);
|
||||
|
@ -250,8 +250,6 @@ void test_basic_lemma_for_mon_neutral_from_factors_to_monomial_1() {
|
|||
svector<lpvar> v; v.push_back(lp_b);v.push_back(lp_d);v.push_back(lp_e);
|
||||
nla.add_monic(lp_bde, v.size(), v.begin());
|
||||
|
||||
vector<lemma> lemma;
|
||||
|
||||
s_set_column_value_test(s, lp_a, rational(1));
|
||||
s_set_column_value_test(s, lp_b, rational(1));
|
||||
s_set_column_value_test(s, lp_c, rational(1));
|
||||
|
@ -259,7 +257,8 @@ void test_basic_lemma_for_mon_neutral_from_factors_to_monomial_1() {
|
|||
s_set_column_value_test(s, lp_e, rational(1));
|
||||
s_set_column_value_test(s, lp_bde, rational(3));
|
||||
|
||||
VERIFY(nla.get_core().test_check(lemma) == l_false);
|
||||
VERIFY(nla.get_core().test_check() == l_false);
|
||||
auto const& lemma = nla.get_core().lemmas();
|
||||
SASSERT(lemma[0].size() == 4);
|
||||
nla.get_core().print_lemma(lemma.back(), std::cout);
|
||||
|
||||
|
@ -330,7 +329,6 @@ void test_basic_lemma_for_mon_zero_from_factors_to_monomial() {
|
|||
lp_bde,
|
||||
lp_acd,
|
||||
lp_be);
|
||||
vector<lemma> lemma;
|
||||
|
||||
// set vars
|
||||
s_set_column_value_test(s, lp_a, rational(1));
|
||||
|
@ -344,7 +342,8 @@ void test_basic_lemma_for_mon_zero_from_factors_to_monomial() {
|
|||
s_set_column_value_test(s, lp_acd, rational(1));
|
||||
s_set_column_value_test(s, lp_be, rational(1));
|
||||
|
||||
VERIFY(nla.get_core().test_check(lemma) == l_false);
|
||||
VERIFY(nla.get_core().test_check() == l_false);
|
||||
auto const& lemma = nla.get_core().lemmas();
|
||||
nla.get_core().print_lemma(lemma.back(), std::cout);
|
||||
SASSERT(lemma.size() == 1 && lemma[0].size() == 2);
|
||||
lp::lar_term t0, t1;
|
||||
|
@ -389,14 +388,13 @@ void test_basic_lemma_for_mon_zero_from_monomial_to_factors() {
|
|||
vec.push_back(lp_d);
|
||||
nla.add_monic(lp_acd, vec.size(), vec.begin());
|
||||
|
||||
vector<lemma> lemma;
|
||||
s_set_column_value_test(s, lp_a, rational(1));
|
||||
s_set_column_value_test(s, lp_c, rational(1));
|
||||
s_set_column_value_test(s, lp_d, rational(1));
|
||||
s_set_column_value_test(s, lp_acd, rational(0));
|
||||
|
||||
VERIFY(nla.get_core().test_check(lemma) == l_false);
|
||||
|
||||
VERIFY(nla.get_core().test_check() == l_false);
|
||||
auto const& lemma = nla.get_core().lemmas();
|
||||
nla.get_core().print_lemma(lemma.back(), std::cout);
|
||||
|
||||
ineq i0(lp_a, llc::EQ, 0);
|
||||
|
@ -452,7 +450,6 @@ void test_basic_lemma_for_mon_neutral_from_monomial_to_factors() {
|
|||
lp_bde,
|
||||
lp_acd,
|
||||
lp_be);
|
||||
vector<lemma> lemma;
|
||||
|
||||
// set all vars to 1
|
||||
s_set_column_value_test(s, lp_a, rational(1));
|
||||
|
@ -471,8 +468,8 @@ void test_basic_lemma_for_mon_neutral_from_monomial_to_factors() {
|
|||
s_set_column_value_test(s, lp_b, - rational(2));
|
||||
// we have bde = -b, therefore d = +-1 and e = +-1
|
||||
s_set_column_value_test(s, lp_d, rational(3));
|
||||
VERIFY(nla.get_core().test_check(lemma) == l_false);
|
||||
|
||||
VERIFY(nla.get_core().test_check() == l_false);
|
||||
auto const& lemma = nla.get_core().lemmas();
|
||||
|
||||
nla.get_core().print_lemma(lemma.back(), std::cout);
|
||||
ineq i0(lp_d, llc::EQ, 1);
|
||||
|
@ -584,9 +581,8 @@ void test_basic_sign_lemma() {
|
|||
s_set_column_value_test(s, lp_bde, rational(5));
|
||||
s_set_column_value_test(s, lp_acd, rational(3));
|
||||
|
||||
vector<lemma> lemmas;
|
||||
VERIFY(nla.get_core().test_check(lemmas) == l_false);
|
||||
|
||||
VERIFY(nla.get_core().test_check() == l_false);
|
||||
auto const& lemmas = nla.get_core().lemmas();
|
||||
lp::lar_term t;
|
||||
t.add_var(lp_bde);
|
||||
t.add_var(lp_acd);
|
||||
|
@ -707,9 +703,9 @@ void test_order_lemma_params(bool var_equiv, int sign) {
|
|||
s_set_column_value_test(s, lp_abef, nla.get_core().mon_value_by_vars(mon_cdij)
|
||||
+ rational(1));
|
||||
}
|
||||
vector<lemma> lemma;
|
||||
|
||||
VERIFY(nla.get_core().test_check(lemma) == l_false);
|
||||
VERIFY(nla.get_core().test_check() == l_false);
|
||||
auto const& lemma = nla.get_core().lemmas();
|
||||
// lp::lar_term t;
|
||||
// t.add_monomial(lp_bde);
|
||||
// t.add_monomial(lp_acd);
|
||||
|
@ -792,8 +788,8 @@ void test_monotone_lemma() {
|
|||
// set ef = ij while it has to be ef > ij
|
||||
s_set_column_value_test(s, lp_ef, s.get_column_value(lp_ij));
|
||||
|
||||
vector<lemma> lemma;
|
||||
VERIFY(nla.get_core().test_check(lemma) == l_false);
|
||||
VERIFY(nla.get_core().test_check() == l_false);
|
||||
auto const& lemma = nla.get_core().lemmas();
|
||||
nla.get_core().print_lemma(lemma.back(), std::cout);
|
||||
*/
|
||||
}
|
||||
|
@ -821,8 +817,8 @@ void test_tangent_lemma_rat() {
|
|||
vec.push_back(lp_b);
|
||||
nla.add_monic(lp_ab, vec.size(), vec.begin());
|
||||
|
||||
vector<lemma> lemma;
|
||||
VERIFY(nla.get_core().test_check(lemma) == l_false);
|
||||
VERIFY(nla.get_core().test_check() == l_false);
|
||||
auto const& lemma = nla.get_core().lemmas();
|
||||
nla.get_core().print_lemma(lemma.back(), std::cout);
|
||||
}
|
||||
|
||||
|
@ -848,9 +844,8 @@ void test_tangent_lemma_reg() {
|
|||
vec.push_back(lp_b);
|
||||
nla.add_monic(lp_ab, vec.size(), vec.begin());
|
||||
|
||||
vector<lemma> lemma;
|
||||
VERIFY(nla.get_core().test_check(lemma) == l_false);
|
||||
nla.get_core().print_lemma(lemma.back(), std::cout);
|
||||
VERIFY(nla.get_core().test_check() == l_false);
|
||||
nla.get_core().print_lemma(nla.get_core().lemmas().back(), std::cout);
|
||||
}
|
||||
|
||||
void test_tangent_lemma_equiv() {
|
||||
|
@ -893,10 +888,9 @@ void test_tangent_lemma_equiv() {
|
|||
int mon_ab = nla.add_monic(lp_ab, vec.size(), vec.begin());
|
||||
|
||||
s_set_column_value_test(s, lp_ab, nla.get_core().mon_value_by_vars(mon_ab) + rational(10)); // greater by ten than the correct value
|
||||
vector<lemma> lemma;
|
||||
|
||||
VERIFY(nla.get_core().test_check(lemma) == l_false);
|
||||
nla.get_core().print_lemma(lemma.back(), std::cout);
|
||||
VERIFY(nla.get_core().test_check() == l_false);
|
||||
nla.get_core().print_lemma(nla.get_core().lemmas().back(), std::cout);
|
||||
*/
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue