mirror of
				https://github.com/Z3Prover/z3
				synced 2025-10-31 03:32:28 +00:00 
			
		
		
		
	add more test stubs
This commit is contained in:
		
							parent
							
								
									0c2524fef2
								
							
						
					
					
						commit
						c64abb2351
					
				
					 3 changed files with 155 additions and 38 deletions
				
			
		|  | @ -1900,6 +1900,8 @@ void setup_args_parser(argument_parser & parser) { | ||||||
|     parser.add_option_with_help_string("-nla_blfmz_fm", "test_basic_lemma_for_mon_zero_from_monomials_to_factor"); |     parser.add_option_with_help_string("-nla_blfmz_fm", "test_basic_lemma_for_mon_zero_from_monomials_to_factor"); | ||||||
|     parser.add_option_with_help_string("-nla_fact", "test nla_solver"); |     parser.add_option_with_help_string("-nla_fact", "test nla_solver"); | ||||||
|     parser.add_option_with_help_string("-nla_bslwct", "test_basic_sign_lemma_with_constraints"); |     parser.add_option_with_help_string("-nla_bslwct", "test_basic_sign_lemma_with_constraints"); | ||||||
|  |     parser.add_option_with_help_string("-nla_blnt_mf", "test_basic_lemma_for_mon_neutral_from_monomial_to_factors"); | ||||||
|  |     parser.add_option_with_help_string("-nla_blnt_fm", "test_basic_lemma_for_mon_neutral_from_factors_to_monomial"); | ||||||
|     parser.add_option_with_help_string("-hnf", "test hermite normal form"); |     parser.add_option_with_help_string("-hnf", "test hermite normal form"); | ||||||
|     parser.add_option_with_help_string("-gomory", "gomory"); |     parser.add_option_with_help_string("-gomory", "gomory"); | ||||||
|     parser.add_option_with_help_string("-intd", "test integer_domain"); |     parser.add_option_with_help_string("-intd", "test integer_domain"); | ||||||
|  | @ -3587,7 +3589,7 @@ void test_lp_local(int argn, char**argv) { | ||||||
| 
 | 
 | ||||||
|     if (args_parser.option_is_used("-nla_blfmz_mf")) {  |     if (args_parser.option_is_used("-nla_blfmz_mf")) {  | ||||||
| #ifdef Z3DEBUG | #ifdef Z3DEBUG | ||||||
|         nla::solver::test_basic_lemma_for_mon_zero_from_monomial_to_factor(); |         nla::solver::test_basic_lemma_for_mon_zero_from_monomial_to_factors(); | ||||||
| #endif | #endif | ||||||
|         return finalize(0); |         return finalize(0); | ||||||
|     } |     } | ||||||
|  | @ -3599,6 +3601,19 @@ void test_lp_local(int argn, char**argv) { | ||||||
|         return finalize(0); |         return finalize(0); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  |     if (args_parser.option_is_used("-nla_blnt_mf")) {  | ||||||
|  | #ifdef Z3DEBUG | ||||||
|  |         nla::solver::test_basic_lemma_for_mon_zero_from_monomial_to_factors(); | ||||||
|  | #endif | ||||||
|  |         return finalize(0); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     if (args_parser.option_is_used("-nla_bnt_fm")) {  | ||||||
|  | #ifdef Z3DEBUG | ||||||
|  |         nla::solver::test_basic_lemma_for_mon_zero_from_factors_to_monomial(); | ||||||
|  | #endif | ||||||
|  |         return finalize(0); | ||||||
|  |     } | ||||||
|     |     | ||||||
|     if (args_parser.option_is_used("-hnf")) { |     if (args_parser.option_is_used("-hnf")) { | ||||||
| #ifdef Z3DEBUG | #ifdef Z3DEBUG | ||||||
|  |  | ||||||
|  | @ -1104,18 +1104,28 @@ struct solver::imp { | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|      |      | ||||||
|     bool basic_lemma_for_mon_zero(lpvar i_mon, const factorization& factorization) { |     bool basic_lemma_for_mon_zero(unsigned i_mon, const factorization& factorization) { | ||||||
|         return  |         return  | ||||||
|             basic_lemma_for_mon_zero_from_monomial_to_factor(i_mon, factorization) ||  |             basic_lemma_for_mon_zero_from_monomial_to_factor(i_mon, factorization) ||  | ||||||
|             basic_lemma_for_mon_zero_from_factors_to_monomial(i_mon, factorization); |             basic_lemma_for_mon_zero_from_factors_to_monomial(i_mon, factorization); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     bool basic_lemma_for_mon_neutral(const factorization& factorization) { |     bool basic_lemma_for_mon_neutral_monomial_to_factor(unsigned i_mon, const factorization& factorization) { | ||||||
|         // NOT_IMPLEMENTED_YET();
 |  | ||||||
|         return false; |         return false; | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     bool basic_lemma_for_mon_proportionality(const factorization& factorization) { |     bool basic_lemma_for_mon_neutral_from_factors_to_monomial(unsigned i_mon, const factorization& factorization) { | ||||||
|  |         return false; | ||||||
|  |     } | ||||||
|  |      | ||||||
|  |     bool basic_lemma_for_mon_neutral(unsigned i_mon, const factorization& factorization) { | ||||||
|  |         return | ||||||
|  |             basic_lemma_for_mon_neutral_monomial_to_factor(i_mon, factorization) ||  | ||||||
|  |             basic_lemma_for_mon_neutral_from_factors_to_monomial(i_mon, factorization); | ||||||
|  |         return false; | ||||||
|  |     } | ||||||
|  |              | ||||||
|  |     bool basic_lemma_for_mon_proportionality(unsigned i_mon, const factorization& factorization) { | ||||||
|         // NOT_IMPLEMENTED_YET();
 |         // NOT_IMPLEMENTED_YET();
 | ||||||
|         return false; |         return false; | ||||||
|     } |     } | ||||||
|  | @ -1125,8 +1135,8 @@ struct solver::imp { | ||||||
|     bool basic_lemma_for_mon(unsigned i_mon) { |     bool basic_lemma_for_mon(unsigned i_mon) { | ||||||
|         for (auto factorization : factorization_factory_imp(i_mon, *this)) { |         for (auto factorization : factorization_factory_imp(i_mon, *this)) { | ||||||
|             if (basic_lemma_for_mon_zero(i_mon, factorization) || |             if (basic_lemma_for_mon_zero(i_mon, factorization) || | ||||||
|                 basic_lemma_for_mon_neutral(factorization) || |                 basic_lemma_for_mon_neutral(i_mon, factorization) || | ||||||
|                 basic_lemma_for_mon_proportionality(factorization)) |                 basic_lemma_for_mon_proportionality(i_mon, factorization)) | ||||||
|                 return true; |                 return true; | ||||||
|              |              | ||||||
|         } |         } | ||||||
|  | @ -1295,29 +1305,7 @@ struct solver::imp { | ||||||
|         SASSERT(found_factorizations == number_of_factorizations); |         SASSERT(found_factorizations == number_of_factorizations); | ||||||
|     } |     } | ||||||
|      |      | ||||||
|     lbool test_basic_sign_lemma_with_constraints( |     lbool test_check( | ||||||
|         vector<ineq>& lemma, |  | ||||||
|         lp::explanation& exp ) |  | ||||||
|     { |  | ||||||
|         m_lar_solver.set_status(lp::lp_status::OPTIMAL); |  | ||||||
|         m_lemma = & lemma; |  | ||||||
|         m_expl = & exp; |  | ||||||
| 
 |  | ||||||
|         return check(exp, lemma); |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     lbool test_basic_lemma_for_mon_zero_from_monomial_to_factor( |  | ||||||
|         vector<ineq>& lemma, |  | ||||||
|         lp::explanation& exp ) |  | ||||||
|     { |  | ||||||
|         m_lar_solver.set_status(lp::lp_status::OPTIMAL); |  | ||||||
|         m_lemma = & lemma; |  | ||||||
|         m_expl = & exp; |  | ||||||
| 
 |  | ||||||
|         return check(exp, lemma); |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     lbool test_basic_lemma_for_mon_zero_from_factors_to_monomial( |  | ||||||
|         vector<ineq>& lemma, |         vector<ineq>& lemma, | ||||||
|         lp::explanation& exp ) |         lp::explanation& exp ) | ||||||
|     { |     { | ||||||
|  | @ -1442,7 +1430,7 @@ void solver::test_factorization() { | ||||||
|      |      | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void solver::test_basic_lemma_for_mon_zero_from_monomial_to_factor() { | void solver::test_basic_lemma_for_mon_neutral_from_factors_to_monomial() { | ||||||
|     lp::lar_solver s; |     lp::lar_solver s; | ||||||
|     unsigned a = 0, b = 1, c = 2, d = 3, e = 4, |     unsigned a = 0, b = 1, c = 2, d = 3, e = 4, | ||||||
|         abcde = 5, ac = 6, bde = 7, acd = 8, be = 9; |         abcde = 5, ac = 6, bde = 7, acd = 8, be = 9; | ||||||
|  | @ -1491,7 +1479,7 @@ void solver::test_basic_lemma_for_mon_zero_from_monomial_to_factor() { | ||||||
|     // set bde to zero
 |     // set bde to zero
 | ||||||
|     s.set_column_value(lp_bde, rational(0)); |     s.set_column_value(lp_bde, rational(0)); | ||||||
| 
 | 
 | ||||||
|     SASSERT(nla.m_imp->test_basic_lemma_for_mon_zero_from_monomial_to_factor(lemma, exp) == l_false); |     SASSERT(nla.m_imp->test_check(lemma, exp) == l_false); | ||||||
|      |      | ||||||
|     nla.m_imp->print_explanation_and_lemma(std::cout << "expl & lemma: "); |     nla.m_imp->print_explanation_and_lemma(std::cout << "expl & lemma: "); | ||||||
|      |      | ||||||
|  | @ -1530,6 +1518,116 @@ void solver::test_basic_lemma_for_mon_zero_from_factors_to_monomial() { | ||||||
|     vector<ineq> lemma; |     vector<ineq> lemma; | ||||||
|     lp::explanation exp; |     lp::explanation exp; | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
|  |     // set all vars to 1
 | ||||||
|  |     s.set_column_value(lp_a, rational(1)); | ||||||
|  |     s.set_column_value(lp_b, rational(1)); | ||||||
|  |     s.set_column_value(lp_c, rational(1)); | ||||||
|  |     s.set_column_value(lp_d, rational(1)); | ||||||
|  |     s.set_column_value(lp_e, rational(1)); | ||||||
|  |     s.set_column_value(lp_abcde, rational(1)); | ||||||
|  |     s.set_column_value(lp_ac, rational(1)); | ||||||
|  |     s.set_column_value(lp_bde, rational(1)); | ||||||
|  |     s.set_column_value(lp_acd, rational(1)); | ||||||
|  |     s.set_column_value(lp_be, rational(1)); | ||||||
|  | 
 | ||||||
|  |     // set bde to zero
 | ||||||
|  |     s.set_column_value(lp_bde, rational(0)); | ||||||
|  | 
 | ||||||
|  |     SASSERT(nla.m_imp->test_check(lemma, exp) == l_false); | ||||||
|  |      | ||||||
|  |     nla.m_imp->print_explanation_and_lemma(std::cout << "expl & lemma: "); | ||||||
|  |      | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | void solver::test_basic_lemma_for_mon_zero_from_monomial_to_factors() { | ||||||
|  |     lp::lar_solver s; | ||||||
|  |     unsigned a = 0, b = 1, c = 2, d = 3, e = 4, | ||||||
|  |         abcde = 5, ac = 6, bde = 7, acd = 8, be = 9; | ||||||
|  |     lpvar lp_a = s.add_var(a, true); | ||||||
|  |     lpvar lp_b = s.add_var(b, true); | ||||||
|  |     lpvar lp_c = s.add_var(c, true); | ||||||
|  |     lpvar lp_d = s.add_var(d, true); | ||||||
|  |     lpvar lp_e = s.add_var(e, true); | ||||||
|  |     lpvar lp_abcde = s.add_var(abcde, true); | ||||||
|  |     lpvar lp_ac = s.add_var(ac, true); | ||||||
|  |     lpvar lp_bde = s.add_var(bde, true); | ||||||
|  |     lpvar lp_acd = s.add_var(acd, true); | ||||||
|  |     lpvar lp_be = s.add_var(be, true); | ||||||
|  |      | ||||||
|  |     reslimit l; | ||||||
|  |     params_ref p; | ||||||
|  |     solver nla(s, l, p); | ||||||
|  |      | ||||||
|  |     create_abcde(nla, | ||||||
|  |                  lp_a, | ||||||
|  |                  lp_b, | ||||||
|  |                  lp_c, | ||||||
|  |                  lp_d, | ||||||
|  |                  lp_e, | ||||||
|  |                  lp_abcde, | ||||||
|  |                  lp_ac, | ||||||
|  |                  lp_bde, | ||||||
|  |                  lp_acd, | ||||||
|  |                  lp_be); | ||||||
|  |     vector<ineq> lemma; | ||||||
|  |     lp::explanation exp; | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |     // set all vars to 1
 | ||||||
|  |     s.set_column_value(lp_a, rational(1)); | ||||||
|  |     s.set_column_value(lp_b, rational(1)); | ||||||
|  |     s.set_column_value(lp_c, rational(1)); | ||||||
|  |     s.set_column_value(lp_d, rational(1)); | ||||||
|  |     s.set_column_value(lp_e, rational(1)); | ||||||
|  |     s.set_column_value(lp_abcde, rational(1)); | ||||||
|  |     s.set_column_value(lp_ac, rational(1)); | ||||||
|  |     s.set_column_value(lp_bde, rational(1)); | ||||||
|  |     s.set_column_value(lp_acd, rational(1)); | ||||||
|  |     s.set_column_value(lp_be, rational(1)); | ||||||
|  | 
 | ||||||
|  |     // set bde to zero
 | ||||||
|  |     s.set_column_value(lp_bde, rational(0)); | ||||||
|  | 
 | ||||||
|  |     SASSERT(nla.m_imp->test_check(lemma, exp) == l_false); | ||||||
|  |      | ||||||
|  |     nla.m_imp->print_explanation_and_lemma(std::cout << "expl & lemma: "); | ||||||
|  |      | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | void solver::test_basic_lemma_for_mon_neutral_from_monomial_to_factors() { | ||||||
|  |     lp::lar_solver s; | ||||||
|  |     unsigned a = 0, b = 1, c = 2, d = 3, e = 4, | ||||||
|  |         abcde = 5, ac = 6, bde = 7, acd = 8, be = 9; | ||||||
|  |     lpvar lp_a = s.add_var(a, true); | ||||||
|  |     lpvar lp_b = s.add_var(b, true); | ||||||
|  |     lpvar lp_c = s.add_var(c, true); | ||||||
|  |     lpvar lp_d = s.add_var(d, true); | ||||||
|  |     lpvar lp_e = s.add_var(e, true); | ||||||
|  |     lpvar lp_abcde = s.add_var(abcde, true); | ||||||
|  |     lpvar lp_ac = s.add_var(ac, true); | ||||||
|  |     lpvar lp_bde = s.add_var(bde, true); | ||||||
|  |     lpvar lp_acd = s.add_var(acd, true); | ||||||
|  |     lpvar lp_be = s.add_var(be, true); | ||||||
|  |      | ||||||
|  |     reslimit l; | ||||||
|  |     params_ref p; | ||||||
|  |     solver nla(s, l, p); | ||||||
|  |      | ||||||
|  |     create_abcde(nla, | ||||||
|  |                  lp_a, | ||||||
|  |                  lp_b, | ||||||
|  |                  lp_c, | ||||||
|  |                  lp_d, | ||||||
|  |                  lp_e, | ||||||
|  |                  lp_abcde, | ||||||
|  |                  lp_ac, | ||||||
|  |                  lp_bde, | ||||||
|  |                  lp_acd, | ||||||
|  |                  lp_be); | ||||||
|  |     vector<ineq> lemma; | ||||||
|  |     lp::explanation exp; | ||||||
|  | 
 | ||||||
|     // set all vars to 0
 |     // set all vars to 0
 | ||||||
|     s.set_column_value(lp_a, rational(0)); |     s.set_column_value(lp_a, rational(0)); | ||||||
|     s.set_column_value(lp_b, rational(0)); |     s.set_column_value(lp_b, rational(0)); | ||||||
|  | @ -1542,10 +1640,12 @@ void solver::test_basic_lemma_for_mon_zero_from_factors_to_monomial() { | ||||||
|     s.set_column_value(lp_acd, rational(0)); |     s.set_column_value(lp_acd, rational(0)); | ||||||
|     s.set_column_value(lp_be, rational(0)); |     s.set_column_value(lp_be, rational(0)); | ||||||
| 
 | 
 | ||||||
|     // set bde to one
 |     // set bde, b, and e to one
 | ||||||
|     s.set_column_value(lp_bde, rational(1)); |     s.set_column_value(lp_bde, rational(1)); | ||||||
|  |     s.set_column_value(lp_b, rational(1)); | ||||||
|  |     s.set_column_value(lp_e, rational(1)); | ||||||
|      |      | ||||||
|     SASSERT(nla.m_imp->test_basic_lemma_for_mon_zero_from_factors_to_monomial(lemma, exp) == l_false); |     SASSERT(nla.m_imp->test_check(lemma, exp) == l_false); | ||||||
|      |      | ||||||
|     nla.m_imp->print_explanation_and_lemma(std::cout << "expl & lemma: "); |     nla.m_imp->print_explanation_and_lemma(std::cout << "expl & lemma: "); | ||||||
|      |      | ||||||
|  | @ -1606,7 +1706,7 @@ void solver::test_basic_sign_lemma_with_constraints() { | ||||||
|     vector<ineq> lemma; |     vector<ineq> lemma; | ||||||
|     lp::explanation exp; |     lp::explanation exp; | ||||||
|      |      | ||||||
|     SASSERT(nla.m_imp->test_basic_sign_lemma_with_constraints(lemma, exp) == l_false); |     SASSERT(nla.m_imp->test_check(lemma, exp) == l_false); | ||||||
|      |      | ||||||
|     nla.m_imp->print_explanation_and_lemma(std::cout << "expl & lemma: "); |     nla.m_imp->print_explanation_and_lemma(std::cout << "expl & lemma: "); | ||||||
|      |      | ||||||
|  |  | ||||||
|  | @ -48,7 +48,9 @@ public: | ||||||
|     lbool check(lp::explanation&, lemma&); |     lbool check(lp::explanation&, lemma&); | ||||||
|     static void test_factorization(); |     static void test_factorization(); | ||||||
|     static void test_basic_sign_lemma_with_constraints(); |     static void test_basic_sign_lemma_with_constraints(); | ||||||
|     static void test_basic_lemma_for_mon_zero_from_monomial_to_factor(); |     static void test_basic_lemma_for_mon_zero_from_monomial_to_factors(); | ||||||
|     static void test_basic_lemma_for_mon_zero_from_factors_to_monomial(); |     static void test_basic_lemma_for_mon_zero_from_factors_to_monomial(); | ||||||
|  |     static void test_basic_lemma_for_mon_neutral_from_monomial_to_factors(); | ||||||
|  |     static void test_basic_lemma_for_mon_neutral_from_factors_to_monomial(); | ||||||
| }; | }; | ||||||
| } | } | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue