mirror of
				https://github.com/Z3Prover/z3
				synced 2025-10-31 03:32:28 +00:00 
			
		
		
		
	try exponential delay in grobner
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
This commit is contained in:
		
							parent
							
								
									ba03d35957
								
							
						
					
					
						commit
						a15b21bc62
					
				
					 2 changed files with 16 additions and 3 deletions
				
			
		|  | @ -47,9 +47,22 @@ namespace nla { | ||||||
|         if (m_quota == 0) |         if (m_quota == 0) | ||||||
|             m_quota = c().params().arith_nl_gr_q();                     |             m_quota = c().params().arith_nl_gr_q();                     | ||||||
| 
 | 
 | ||||||
|  |         bool const use_exp_delay = c().params().arith_nl_grobner_exp_delay(); | ||||||
|  | 
 | ||||||
|         if (m_quota == 1) { |         if (m_quota == 1) { | ||||||
|             m_delay_base++; |             if (use_exp_delay) { | ||||||
|             m_delay = m_delay_base; |                 constexpr unsigned delay_cap = 1000000; | ||||||
|  |                 if (m_delay_base == 0) | ||||||
|  |                     m_delay_base = 1; | ||||||
|  |                 else if (m_delay_base < delay_cap) { | ||||||
|  |                     m_delay_base *= 2; | ||||||
|  |                     if (m_delay_base > delay_cap) | ||||||
|  |                         m_delay_base = delay_cap; | ||||||
|  |                 } | ||||||
|  |                 m_delay = m_delay_base; | ||||||
|  |             } | ||||||
|  |             else | ||||||
|  |                 m_delay = ++m_delay_base; | ||||||
|             m_quota = c().params().arith_nl_gr_q(); |             m_quota = c().params().arith_nl_gr_q(); | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -80,6 +80,7 @@ def_module_params(module_name='smt', | ||||||
|                           ('arith.nl.grobner_cnfl_to_report', UINT, 1, 'grobner\'s maximum number of conflicts to report'), |                           ('arith.nl.grobner_cnfl_to_report', UINT, 1, 'grobner\'s maximum number of conflicts to report'), | ||||||
|                           ('arith.nl.grobner_propagate_quotients', BOOL, True, 'detect conflicts x*y + z = 0 where x doesn\'t divide z'), |                           ('arith.nl.grobner_propagate_quotients', BOOL, True, 'detect conflicts x*y + z = 0 where x doesn\'t divide z'), | ||||||
|                           ('arith.nl.grobner_gcd_test', BOOL, True, 'detect gcd conflicts for polynomial powers x^k - y = 0'), |                           ('arith.nl.grobner_gcd_test', BOOL, True, 'detect gcd conflicts for polynomial powers x^k - y = 0'), | ||||||
|  |                           ('arith.nl.grobner_exp_delay', BOOL, False, 'use exponential delay between grobner basis attempts'), | ||||||
|                           ('arith.nl.gr_q', UINT, 10, 'grobner\'s quota'), |                           ('arith.nl.gr_q', UINT, 10, 'grobner\'s quota'), | ||||||
|                           ('arith.nl.grobner_subs_fixed', UINT, 1, '0 - no subs, 1 - substitute, 2 - substitute fixed zeros only'),    |                           ('arith.nl.grobner_subs_fixed', UINT, 1, '0 - no subs, 1 - substitute, 2 - substitute fixed zeros only'),    | ||||||
|                           ('arith.nl.grobner_expand_terms', BOOL, True, 'expand terms before computing grobner basis'), |                           ('arith.nl.grobner_expand_terms', BOOL, True, 'expand terms before computing grobner basis'), | ||||||
|  | @ -138,4 +139,3 @@ def_module_params(module_name='smt', | ||||||
|                           ('dt_lazy_splits', UINT, 1, 'How lazy datatype splits are performed: 0- eager, 1- lazy for infinite types, 2- lazy'), |                           ('dt_lazy_splits', UINT, 1, 'How lazy datatype splits are performed: 0- eager, 1- lazy for infinite types, 2- lazy'), | ||||||
|                           ('qsat_use_qel', BOOL, True, 'Use QEL for lite quantifier elimination and model-based projection in QSAT') |                           ('qsat_use_qel', BOOL, True, 'Use QEL for lite quantifier elimination and model-based projection in QSAT') | ||||||
|                           )) |                           )) | ||||||
| 
 |  | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue